Index: doc/bibliography/pl.bib
===================================================================
--- doc/bibliography/pl.bib	(revision 114bde658eed1edf31cde78bd21584a1ced7df2e)
+++ doc/bibliography/pl.bib	(revision 92d41a4af1542b1fcfd3bacde48933e4c8519366)
@@ -1146,10 +1146,18 @@
     author	= {Tarditi, David and Elliott, Archibald Samuel and Ruef, Andrew and Hicks, Michael},
     title	= {Checked C: Making C Safe by Extension},
-    booktitle	= {2018 IEEE Cybersecurity Development (SecDev)}, 
-    publisher	= {IEEE},
-    year	= {2018},
-    month	= seep,
-    pages	= {53-60},
-    url		= {https://www.microsoft.com/en-us/research/publication/checkedc-making-c-safe-by-extension/},
+    booktitle	= {2018 IEEE Cybersecurity Development (SecDev)}
+    year = {2018},
+    month = {September},
+    pages = {53-60},
+    publisher = {IEEE},
+    url = {https://www.microsoft.com/en-us/research/publication/checkedc-making-c-safe-by-extension/},
+}
+
+@misc{Clang,
+    keywords = {clang},
+    contributer = {a3moss@uwaterloo.ca},
+    title = {Clang: a {C} language family frontend for {LLVM}},
+    howpublished = {\href{https://clang.llvm.org/}{https://\-clang.llvm.org/}},
+    note = {Accessed 2019-02-22}
 }
 
@@ -2292,4 +2300,20 @@
 }
 
+@article{Ritchie93,
+    keywords	= {C, history},
+    contributer	= {pabuhr@plg},
+    author	= {Ritchie, Dennis M.},
+    title	= {The Development of the {C} Language},
+    journal	= sigplan,
+    volume	= 28,
+    number	= 3,
+    month	= mar,
+    year	= 1993,
+    pages	= {201--208},
+    url		= {http://doi.acm.org/10.1145/155360.155580},
+    publisher	= {ACM},
+    address	= {New York, NY, USA},
+} 
+
 @article{design,
     keywords	= {Smalltalk, designing classes},
@@ -2299,5 +2323,7 @@
     journal	= joop,
     year	= 1988,
-    volume	= 1, number = 2, pages = {22-35},
+    volume	= 1,
+    number	= 2,
+    pages	= {22-35},
     comment	= {
 	Abstract classes represent standard protocols.  ``It is better to
@@ -2384,4 +2410,13 @@
     year	= 1990,
     pages	= {315-323}
+}
+
+@misc{Dotty-github,
+    keywords = {dotty,scala},
+    contributer = {a3moss@uwaterloo.ca},
+    author = {Martin Odersky},
+    title = {Dotty},
+    howpublished = {\href{https://github.com/lampepfl/dotty}{https://\-github.com/\-lampepfl/\-dotty}},
+    note = {Acessed: 2019-02-22}
 }
 
@@ -2491,4 +2526,25 @@
     pages	= {325-361},
 }
+
+@article{Tarjan75,
+ keywords = {union-find},
+ contributer = {a3moss@uwaterloo.ca},
+ author = {Tarjan, Robert Endre},
+ title = {Efficiency of a Good But Not Linear Set Union Algorithm},
+ journal = {J. ACM},
+ issue_date = {April 1975},
+ volume = {22},
+ number = {2},
+ month = apr,
+ year = {1975},
+ issn = {0004-5411},
+ pages = {215--225},
+ numpages = {11},
+ url = {http://doi.acm.org/10.1145/321879.321884},
+ doi = {10.1145/321879.321884},
+ acmid = {321884},
+ publisher = {ACM},
+ address = {New York, NY, USA},
+} 
 
 @book{Eiffel,
@@ -4244,4 +4300,16 @@
 }
 
+@misc{Matsakis17,
+    keywords	= {Rust, Chalk, PROLOG},
+    contributer	= {a3moss@uwaterloo.ca},
+    author	= {Nicholas Matsakis},
+    title	= {Lowering {Rust} traits to logic},
+    month	= jan,
+    year	= 2017,
+    howpublished= {\href{http://smallcultfollowing.com/babysteps/blog/2017/01/26/lowering-rust-traits-to-logic/}
+		  {http://smallcultfollowing.com/\-babysteps/\-blog/\-2017/\-01/\-26/\-lowering-rust-traits-to-logic/}},
+    optnote	= {Accessed: 2019-01},
+}
+
 @article{Cormack89,
     keywords	= {parsing, LR, error recovery},
@@ -4276,4 +4344,17 @@
     publisher	= {Motorola},
     year	= 1992,
+}
+
+@misc{Haberman16,
+    keywords	= {C++ template expansion},
+    contributer	= {a3moss@uwaterloo.ca},
+    author	= {Josh Haberman},
+    title	= {Making arbitrarily-large binaries from fixed-size {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} code},
+    year	= 2016,
+    howpublished= {\href{http://blog.reverberate.org/2016/01/making-arbitrarily-large-binaries-from.html}
+		  {
+          {http://blog.reverberate.org/\-2016/\-01/\-making-arbitrarily-large-binaries-from.html}
+          }},
+    optnote	= {Accessed: 2016-09},
 }
 
Index: doc/papers/concurrency/Paper.tex
===================================================================
--- doc/papers/concurrency/Paper.tex	(revision 114bde658eed1edf31cde78bd21584a1ced7df2e)
+++ doc/papers/concurrency/Paper.tex	(revision 92d41a4af1542b1fcfd3bacde48933e4c8519366)
@@ -215,5 +215,8 @@
 {}
 \lstnewenvironment{Go}[1][]
-{\lstset{#1}}
+{\lstset{language=go,moredelim=**[is][\protect\color{red}]{`}{`},#1}\lstset{#1}}
+{}
+\lstnewenvironment{python}[1][]
+{\lstset{language=python,moredelim=**[is][\protect\color{red}]{`}{`},#1}\lstset{#1}}
 {}
 
@@ -228,5 +231,5 @@
 }
 
-\title{\texorpdfstring{Advanced Control-flow in \protect\CFA}{Advanced Control-flow in Cforall}}
+\title{\texorpdfstring{Advanced Control-flow and Concurrency in \protect\CFA}{Advanced Control-flow in Cforall}}
 
 \author[1]{Thierry Delisle}
@@ -242,9 +245,9 @@
 \abstract[Summary]{
 \CFA is a modern, polymorphic, non-object-oriented, backwards-compatible extension of the C programming language.
-This paper discusses the advanced control-flow features in \CFA, which include concurrency and parallelism, and its supporting runtime system.
-These features are created from scratch as ISO C's concurrency is low-level and unimplemented, so C programmers continue to rely on the C pthreads library.
-\CFA provides high-level control-flow mechanisms, like coroutines and user-level threads, and monitors for mutual exclusion and synchronization.
-A unique contribution of this work is allowing multiple monitors to be safely acquired \emph{simultaneously} (deadlock free), while integrating this capability with all monitor synchronization mechanisms.
-All features respect the expectations of C programmers, while being fully integrate with the \CFA polymorphic type-system and other language features.
+This paper discusses some advanced control-flow and concurrency/parallelism features in \CFA, along with the supporting runtime.
+These features are created from scratch because they do not exist in ISO C, or are low-level and/or unimplemented, so C programmers continue to rely on library features, like C pthreads.
+\CFA introduces language-level control-flow mechanisms, like coroutines, user-level threading, and monitors for mutual exclusion and synchronization.
+A unique contribution of this work is allowing multiple monitors to be safely acquired \emph{simultaneously} (deadlock free), while integrating this capability with monitor synchronization mechanisms.
+These features also integrate with the \CFA polymorphic type-system and exception handling, while respecting the expectations and style of C programmers.
 Experimental results show comparable performance of the new features with similar mechanisms in other concurrent programming-languages.
 }%
@@ -261,15 +264,16 @@
 \section{Introduction}
 
-This paper discusses the design of advanced, high-level control-flow extensions (especially concurrency and parallelism) in \CFA and its runtime.
+This paper discusses the design of language-level control-flow and concurrency/parallelism extensions in \CFA and its runtime.
 \CFA is a modern, polymorphic, non-object-oriented\footnote{
 \CFA has features often associated with object-oriented programming languages, such as constructors, destructors, virtuals and simple inheritance.
 However, functions \emph{cannot} be nested in structures, so there is no lexical binding between a structure and set of functions (member/method) implemented by an implicit \lstinline@this@ (receiver) parameter.},
 backwards-compatible extension of the C programming language~\cite{Moss18}.
-Within the \CFA framework, new control-flow features were created from scratch.
-ISO \Celeven defines only a subset of the \CFA extensions, and with respect to concurrency~\cite[\S~7.26]{C11}, the features are largely wrappers for a subset of the pthreads library~\cite{Butenhof97,Pthreads}.
-Furthermore, \Celeven and pthreads concurrency is basic, based on thread fork/join in a function and a few locks, which is low-level and error prone;
-no high-level language concurrency features exist.
-Interestingly, almost a decade after publication of the \Celeven standard, neither gcc-8, clang-8 nor msvc-19 (most recent versions) support the \Celeven include @threads.h@, indicating little interest in the C concurrency approach.
-Finally, while the \Celeven standard does not state a concurrent threading-model, the historical association with pthreads suggests the threading model is kernel-level threading (1:1)~\cite{ThreadModel}.
+Within the \CFA framework, new control-flow features are created from scratch.
+ISO \Celeven defines only a subset of the \CFA extensions, where the overlapping features are concurrency~\cite[\S~7.26]{C11}.
+However, \Celeven concurrency is largely wrappers for a subset of the pthreads library~\cite{Butenhof97,Pthreads}.
+Furthermore, \Celeven and pthreads concurrency is simple, based on thread fork/join in a function and a few locks, which is low-level and error prone;
+no high-level language concurrency features are defined.
+Interestingly, almost a decade after publication of the \Celeven standard, neither gcc-8, clang-8 nor msvc-19 (most recent versions) support the \Celeven include @threads.h@, indicating little interest in the C11 concurrency approach.
+Finally, while the \Celeven standard does not state a concurrent threading-model, the historical association with pthreads suggests implementations would adopt kernel-level threading (1:1)~\cite{ThreadModel}.
 
 In contrast, there has been a renewed interest during the past decade in user-level (M:N, green) threading in old and new programming languages.
@@ -284,13 +288,13 @@
 
 A further effort over the past decade is the development of language memory-models to deal with the conflict between certain language features and compiler/hardware optimizations.
-This issue can be rephrased as some features are pervasive (language and runtime) and cannot be safely added via a library to prevent invalidation by sequential optimizations~\cite{Buhr95a,Boehm05}.
+This issue can be rephrased as: some language features are pervasive (language and runtime) and cannot be safely added via a library to prevent invalidation by sequential optimizations~\cite{Buhr95a,Boehm05}.
 The consequence is that a language must be cognizant of these features and provide sufficient tools to program around any safety issues.
 For example, C created the @volatile@ qualifier to provide correct execution for @setjmp@/@logjmp@ (concurrency came later).
-The simplest solution is to provide a handful of complex qualifiers and functions (e.g., @volatile@ and atomics) allowing programmers to write consistent/race-free programs, often in the sequentially-consistent memory-model~\cite{Boehm12}.
+The common solution is to provide a handful of complex qualifiers and functions (e.g., @volatile@ and atomics) allowing programmers to write consistent/race-free programs, often in the sequentially-consistent memory-model~\cite{Boehm12}.
 
 While having a sufficient memory-model allows sound libraries to be constructed, writing these libraries can quickly become awkward and error prone, and using these low-level libraries has the same issues.
 Essentially, using low-level explicit locks is the concurrent equivalent of assembler programming.
-Just as most assembler programming is replaced with programming in a high-level language, explicit locks can be replaced with high-level concurrency constructs in a programming language.
-The goal is to get the compiler to check for correct usage and follow any complex coding conventions implicitly.
+Just as most assembler programming is replaced with high-level programming, explicit locks can be replaced with high-level concurrency in a programming language.
+Then the goal is for the compiler to check for correct usage and follow any complex coding conventions implicitly.
 The drawback is that language constructs may preclude certain specialized techniques, therefore introducing inefficiency or inhibiting concurrency.
 For most concurrent programs, these drawbacks are insignificant in comparison to the speed of composition, and subsequent reliability and maintainability of the high-level concurrent program.
@@ -299,5 +303,5 @@
 As stated, this observation applies to non-concurrent forms of complex control-flow, like exception handling and coroutines.
 
-Adapting the programming language allows matching the control-flow model with the programming-language style, versus adapting to one general (sound) library/paradigm.
+Adapting the programming language to these features also allows matching the control-flow model with the programming-language style, versus adopting one general (sound) library/paradigm.
 For example, it is possible to provide exceptions, coroutines, monitors, and tasks as specialized types in an object-oriented language, integrating these constructs to allow leveraging the type-system (static type-checking) and all other object-oriented capabilities~\cite{uC++}.
 It is also possible to leverage call/return for blocking communication via new control structures, versus switching to alternative communication paradigms, like channels or message passing.
@@ -307,8 +311,17 @@
 however, the reverse is seldom true, i.e., given implicit concurrency, e.g., actors, it is virtually impossible to create explicit concurrency, e.g., blocking thread objects.}
 Finally, with extended language features and user-level threading it is possible to discretely fold locking and non-blocking I/O multiplexing into the language's I/O libraries, so threading implicitly dovetails with the I/O subsystem.
-
-\CFA embraces language extensions and user-level threading to provide advanced control-flow and concurrency.
-We attempt to show the \CFA extensions and runtime are demonstrably better than those proposed for \CC and other concurrent, imperative programming languages.
-The contributions of this work are:
+\CFA embraces language extensions and user-level threading to provide advanced control-flow (exception handling\footnote{
+\CFA exception handling will be presented in a separate paper.
+The key feature that dovetails with this paper is non-local exceptions allowing exceptions to be raised across stacks, with synchronous exceptions raised among coroutines and asynchronous exceptions raised among threads, similar to that in \uC~\cite[\S~5]{uC++}
+} and coroutines) and concurrency.
+
+Most augmented traditional (Fortran 18~\cite{Fortran18}, Cobol 14~\cite{Cobol14}, Ada 12~\cite{Ada12}, Java 11~\cite{Java11}) and new languages (Go~\cite{Go}, Rust~\cite{Rust}, and D~\cite{D}), except \CC, diverge from C with different syntax and semantics, only interoperate indirectly with C, and are not systems languages, for those with managed memory.
+As a result, there is a significant learning curve to move to these languages, and C legacy-code must be rewritten.
+While \CC, like \CFA, takes an evolutionary approach to extend C, \CC's constantly growing complex and interdependent features-set (e.g., objects, inheritance, templates, etc.) mean idiomatic \CC code is difficult to use from C, and C programmers must expend significant effort learning \CC.
+Hence, rewriting and retraining costs for these languages, even \CC, are prohibitive for companies with a large C software-base.
+\CFA with its orthogonal feature-set, its high-performance runtime, and direct access to all existing C libraries circumvents these problems.
+
+We present comparative examples so the reader can judge if the \CFA control-flow extensions are equivalent or better than those in or proposed for \Celeven, \CC and other concurrent, imperative programming languages, and perform experiments to show the \CFA runtime is competitive with other similar mechanisms.
+The detailed contributions of this work are:
 \begin{itemize}
 \item
@@ -615,7 +628,7 @@
 
 
-\section{Coroutines: A Stepping Stone}\label{coroutine}
-
-Advanced controlWhile the focus of this discussion is concurrency and parallelism, it is important to address coroutines, which are a significant building block of a concurrency system (but not concurrent among themselves).
+\section{Coroutines: Stepping Stone}
+\label{coroutine}
+
 Coroutines are generalized routines allowing execution to be temporarily suspended and later resumed.
 Hence, unlike a normal routine, a coroutine may not terminate when it returns to its caller, allowing it to be restarted with the values and execution location present at the point of suspension.
@@ -643,11 +656,11 @@
 \begin{lrbox}{\myboxA}
 \begin{cfa}[aboveskip=0pt,belowskip=0pt]
-`int f1, f2, state = 1;`   // single global variables
+`int fn1, fn2, state = 1;`   // single global variables
 int fib() {
 	int fn;
 	`switch ( state )` {  // explicit execution state
-	  case 1: fn = 0;  f1 = fn;  state = 2;  break;
-	  case 2: fn = 1;  f2 = f1;  f1 = fn;  state = 3;  break;
-	  case 3: fn = f1 + f2;  f2 = f1;  f1 = fn;  break;
+	  case 1: fn = 0;  fn1 = fn;  state = 2;  break;
+	  case 2: fn = 1;  fn2 = fn1;  fn1 = fn;  state = 3;  break;
+	  case 3: fn = fn1 + fn2;  fn2 = fn1;  fn1 = fn;  break;
 	}
 	return fn;
@@ -666,10 +679,10 @@
 \begin{cfa}[aboveskip=0pt,belowskip=0pt]
 #define FIB_INIT `{ 0, 1 }`
-typedef struct { int f2, f1; } Fib;
+typedef struct { int fn2, fn1; } Fib;
 int fib( Fib * f ) {
 
-	int ret = f->f2;
-	int fn = f->f1 + f->f2;
-	f->f2 = f->f1; f->f1 = fn;
+	int ret = f->fn2;
+	int fn = f->fn1 + f->fn2;
+	f->fn2 = f->fn1; f->fn1 = fn;
 
 	return ret;
@@ -678,5 +691,5 @@
 	Fib f1 = FIB_INIT, f2 = FIB_INIT;
 	for ( int i = 0; i < 10; i += 1 ) {
-		printf( "%d %d\n", fib( &f1 ), fib( &f2 ) );
+		printf( "%d %d\n", fib( &fn1 ), fib( &f2 ) );
 	}
 }
@@ -684,8 +697,8 @@
 \end{lrbox}
 
-\subfloat[3 States: global variables]{\label{f:GlobalVariables}\usebox\myboxA}
+\subfloat[3 states: global variables]{\label{f:GlobalVariables}\usebox\myboxA}
 \qquad
-\subfloat[1 State: external variables]{\label{f:ExternalState}\usebox\myboxB}
-\caption{C Fibonacci Implementations}
+\subfloat[1 state: encapsulated variables]{\label{f:ExternalState}\usebox\myboxB}
+\caption{C fibonacci fsm}
 \label{f:C-fibonacci}
 
@@ -697,20 +710,14 @@
 `coroutine` Fib { int fn; };
 void main( Fib & fib ) with( fib ) {
-	int f1, f2;
-	fn = 0;  f1 = fn;  `suspend()`;
-	fn = 1;  f2 = f1;  f1 = fn;  `suspend()`;
-	for ( ;; ) {
-		fn = f1 + f2;  f2 = f1;  f1 = fn;  `suspend()`;
-	}
-}
-int next( Fib & fib ) with( fib ) {
-	`resume( fib );`
-	return fn;
-}
+	fn = 0;  int fn1 = fn; `suspend()`;
+	fn = 1;  int fn2 = fn1;  fn1 = fn; `suspend()`;
+	for () {
+		fn = fn1 + fn2; fn2 = fn1; fn1 = fn; `suspend()`; }
+}
+int next( Fib & fib ) with( fib ) { `resume( fib );` return fn; }
 int main() {
 	Fib f1, f2;
-	for ( int i = 1; i <= 10; i += 1 ) {
+	for ( 10 )
 		sout | next( f1 ) | next( f2 );
-	}
 }
 \end{cfa}
@@ -718,30 +725,24 @@
 \newbox\myboxB
 \begin{lrbox}{\myboxB}
-\begin{cfa}[aboveskip=0pt,belowskip=0pt]
-`coroutine` Fib { int ret; };
-void main( Fib & f ) with( fib ) {
-	int fn, f1 = 1, f2 = 0;
-	for ( ;; ) {
-		ret = f2;
-
-		fn = f1 + f2;  f2 = f1;  f1 = fn; `suspend();`
-	}
-}
-int next( Fib & fib ) with( fib ) {
-	`resume( fib );`
-	return ret;
-}
-
-
-
-
-
-
-\end{cfa}
+\begin{python}[aboveskip=0pt,belowskip=0pt]
+
+def Fibonacci():
+	fn = 0;	fn1 = fn; `yield fn`  # suspend
+	fn = 1; fn2 = fn1; fn1 = fn; `yield fn`
+	while True:
+		fn = fn1 + fn2; fn2 = fn1; fn1 = fn; `yield fn`
+
+
+f1 = Fibonacci()
+f2 = Fibonacci()
+for i in range( 10 ):
+	print( `next( f1 )`, `next( f2 )` ) # resume
+
+\end{python}
 \end{lrbox}
-\subfloat[3 States, internal variables]{\label{f:Coroutine3States}\usebox\myboxA}
-\qquad\qquad
-\subfloat[1 State, internal variables]{\label{f:Coroutine1State}\usebox\myboxB}
-\caption{\CFA Coroutine Fibonacci Implementations}
+\subfloat[\CFA]{\label{f:Coroutine3States}\usebox\myboxA}
+\qquad
+\subfloat[Python]{\label{f:Coroutine1State}\usebox\myboxB}
+\caption{Fibonacci input coroutine, 3 states, internal variables}
 \label{f:cfa-fibonacci}
 \end{figure}
@@ -784,34 +785,27 @@
 \begin{lrbox}{\myboxA}
 \begin{cfa}[aboveskip=0pt,belowskip=0pt]
-`coroutine` Format {
-	char ch;   // used for communication
-	int g, b;  // global because used in destructor
+`coroutine` Fmt {
+	char ch;   // communication variables
+	int g, b;   // needed in destructor
 };
-void main( Format & fmt ) with( fmt ) {
-	for ( ;; ) {
-		for ( g = 0; g < 5; g += 1 ) {      // group
-			for ( b = 0; b < 4; b += 1 ) { // block
+void main( Fmt & fmt ) with( fmt ) {
+	for () {
+		for ( g = 0; g < 5; g += 1 ) { // groups
+			for ( b = 0; b < 4; b += 1 ) { // blocks
 				`suspend();`
-				sout | ch;              // separator
-			}
-			sout | "  ";               // separator
-		}
-		sout | nl;
-	}
-}
-void ?{}( Format & fmt ) { `resume( fmt );` }
-void ^?{}( Format & fmt ) with( fmt ) {
-	if ( g != 0 || b != 0 ) sout | nl;
-}
-void format( Format & fmt ) {
-	`resume( fmt );`
-}
+				sout | ch; } // print character
+			sout | "  "; } // block separator
+		sout | nl; }  // group separator
+}
+void ?{}( Fmt & fmt ) { `resume( fmt );` } // prime
+void ^?{}( Fmt & fmt ) with( fmt ) { // destructor
+	if ( g != 0 || b != 0 )	// special case
+		sout | nl; }
+void send( Fmt & fmt, char c ) { fmt.ch = c; `resume( fmt )`; }
 int main() {
-	Format fmt;
-	eof: for ( ;; ) {
-		sin | fmt.ch;
-	  if ( eof( sin ) ) break eof;
-		format( fmt );
-	}
+	Fmt fmt;
+ 	sout | nlOff;	// turn off auto newline
+	for ( 41 )
+		send( fmt, 'a' );
 }
 \end{cfa}
@@ -820,42 +814,35 @@
 \newbox\myboxB
 \begin{lrbox}{\myboxB}
-\begin{cfa}[aboveskip=0pt,belowskip=0pt]
-struct Format {
-	char ch;
-	int g, b;
-};
-void format( struct Format * fmt ) {
-	if ( fmt->ch != -1 ) {      // not EOF ?
-		printf( "%c", fmt->ch );
-		fmt->b += 1;
-		if ( fmt->b == 4 ) {  // block
-			printf( "  " );      // separator
-			fmt->b = 0;
-			fmt->g += 1;
-		}
-		if ( fmt->g == 5 ) {  // group
-			printf( "\n" );     // separator
-			fmt->g = 0;
-		}
-	} else {
-		if ( fmt->g != 0 || fmt->b != 0 ) printf( "\n" );
-	}
-}
-int main() {
-	struct Format fmt = { 0, 0, 0 };
-	for ( ;; ) {
-		scanf( "%c", &fmt.ch );
-	  if ( feof( stdin ) ) break;
-		format( &fmt );
-	}
-	fmt.ch = -1;
-	format( &fmt );
-}
-\end{cfa}
+\begin{python}[aboveskip=0pt,belowskip=0pt]
+
+
+
+def Fmt():
+	try:
+		while True:
+			for g in range( 5 ):
+				for b in range( 4 ):
+
+					print( `(yield)`, end='' )
+				print( '  ', end='' )
+			print()
+
+
+	except GeneratorExit:
+		if g != 0 | b != 0:
+			print()
+
+
+fmt = Fmt()
+`next( fmt )`			 # prime
+for i in range( 41 ):
+	`fmt.send( 'a' );`	# send to yield
+
+\end{python}
 \end{lrbox}
-\subfloat[\CFA Coroutine]{\label{f:CFAFmt}\usebox\myboxA}
+\subfloat[\CFA]{\label{f:CFAFmt}\usebox\myboxA}
 \qquad
-\subfloat[C Linearized]{\label{f:CFmt}\usebox\myboxB}
-\caption{Formatting text into lines of 5 blocks of 4 characters.}
+\subfloat[Python]{\label{f:CFmt}\usebox\myboxB}
+\caption{Output formatting text}
 \label{f:fmt-line}
 \end{figure}
@@ -878,5 +865,5 @@
 void main( Prod & prod ) with( prod ) {
 	// 1st resume starts here
-	for ( int i = 0; i < N; i += 1 ) {
+	for ( i; N ) {
 		int p1 = random( 100 ), p2 = random( 100 );
 		sout | p1 | " " | p2;
@@ -894,5 +881,5 @@
 }
 void start( Prod & prod, int N, Cons &c ) {
-	&prod.c = &c;
+	&prod.c = &c; // reassignable reference
 	prod.[N, receipt] = [N, 0];
 	`resume( prod );`
@@ -909,8 +896,8 @@
 	Prod & p;
 	int p1, p2, status;
-	_Bool done;
+	bool done;
 };
 void ?{}( Cons & cons, Prod & p ) {
-	&cons.p = &p;
+	&cons.p = &p; // reassignable reference
 	cons.[status, done ] = [0, false];
 }
@@ -969,4 +956,59 @@
 The program main restarts after the resume in @start@.
 @start@ returns and the program main terminates.
+
+One \emph{killer} application for a coroutine is device drivers, which at one time caused 70\%-85\% of failures in Windows/Linux~\cite{Swift05}.
+Many device drivers are a finite state-machine parsing a protocol, e.g.:
+\begin{tabbing}
+\ldots STX \= \ldots message \ldots \= ESC \= ETX \= \ldots message \ldots  \= ETX \= 2-byte crc \= \ldots	\kill
+\ldots STX \> \ldots message \ldots \> ESC \> ETX \> \ldots message \ldots  \> ETX \> 2-byte crc \> \ldots
+\end{tabbing}
+where a network message begins with the control character STX and ends with an ETX, followed by a 2-byte cyclic-redundancy check.
+Control characters may appear in a message if preceded by an ESC.
+Because FSMs can be complex and occur frequently in important domains, direct support of the coroutine is crucial in a systems programminglanguage.
+
+\begin{figure}
+\begin{cfa}
+enum Status { CONT, MSG, ESTX, ELNTH, ECRC };
+`coroutine` Driver {
+	Status status;
+	char * msg, byte;
+};
+void ?{}( Driver & d, char * m ) { d.msg = m; }		$\C[3.0in]{// constructor}$
+Status next( Driver & d, char b ) with( d ) {		$\C{// 'with' opens scope}$
+	byte = b; `resume( d );` return status;
+}
+void main( Driver & d ) with( d ) {
+	enum { STX = '\002', ESC = '\033', ETX = '\003', MaxMsg = 64 };
+	unsigned short int crc;							$\C{// error checking}$
+  msg: for () {										$\C{// parse message}$
+		status = CONT;
+		unsigned int lnth = 0, sum = 0;
+		while ( byte != STX ) `suspend();`
+	  emsg: for () {
+			`suspend();`							$\C{// process byte}$
+			choose ( byte ) {						$\C{// switch with default break}$
+			  case STX:
+				status = ESTX; `suspend();` continue msg;
+			  case ETX:
+				break emsg;
+			  case ESC:
+				suspend();
+			} // choose
+			if ( lnth >= MaxMsg ) {					$\C{// buffer full ?}$
+				status = ELNTH; `suspend();` continue msg; }
+			msg[lnth++] = byte;
+			sum += byte;
+		} // for
+		msg[lnth] = '\0';							$\C{// terminate string}\CRT$
+		`suspend();`
+		crc = (unsigned char)byte << 8;	// prevent sign extension for signed char
+		`suspend();`
+		status = (crc | (unsigned char)byte) == sum ? MSG : ECRC;
+		`suspend();`
+	} // for
+}
+\end{cfa}
+\caption{Device driver for simple communication protocol}
+\end{figure}
 
 
Index: doc/papers/concurrency/examples/C++Cor-ts.cpp
===================================================================
--- doc/papers/concurrency/examples/C++Cor-ts.cpp	(revision 92d41a4af1542b1fcfd3bacde48933e4c8519366)
+++ doc/papers/concurrency/examples/C++Cor-ts.cpp	(revision 92d41a4af1542b1fcfd3bacde48933e4c8519366)
@@ -0,0 +1,42 @@
+
+
+auto result = co_await expression;
+
+//   |  |
+//   |  |
+//  \    /
+//   \  /
+//    \/
+
+auto&& __a = expression;
+if (!__a.await_ready()) {
+	__a.await_suspend(coroutine-handle)
+	// ...suspend/resume point...
+}
+auto result = __a.await_resume();
+
+//==================================================
+
+co_yield i;
+
+//   |  |
+//   |  |
+//  \    /
+//   \  /
+//    \/
+
+co_await __promise.yield_value(i);
+
+//==================================================
+
+... coroutine() {
+	__coroutine_context* __context = new __coroutine_context{};
+	__return = __context->_promise.get_return_object();
+	co_await   __context->_promise.initial_suspend();
+
+	...
+
+__final_suspend_label:
+	co_await __context->promise.final_suspend();
+	delete __context;
+}
Index: doc/papers/concurrency/examples/Fib.cfa
===================================================================
--- doc/papers/concurrency/examples/Fib.cfa	(revision 92d41a4af1542b1fcfd3bacde48933e4c8519366)
+++ doc/papers/concurrency/examples/Fib.cfa	(revision 92d41a4af1542b1fcfd3bacde48933e4c8519366)
@@ -0,0 +1,72 @@
+#include <thread.hfa>
+#include <fstream.hfa>
+
+int fn1, fn2, state = 1;
+int fib_gvar() {
+	int fn;
+	choose ( state ) {
+	  case 1: fn = 0;  fn1 = fn;  state = 2;
+	  case 2: fn = 1;  fn2 = fn1;  fn1 = fn;  state = 3;
+	  case 3: fn = fn1 + fn2;  fn2 = fn1;  fn1 = fn;
+	}
+	return fn;
+}
+
+#define FIB_INIT { 0, 1 }
+typedef struct { int fn1, fn2; } Fib;
+int fib_state( Fib & f ) with( f ) {
+	int ret = fn2;
+	int fn = fn1 + fn2;
+	fn2 = fn1; fn1 = fn;
+	return ret;
+}
+
+coroutine Fib1 { int fn; };						// used for communication
+void main( Fib1 & fib ) with( fib ) {			// called on first resume
+	fn = 0;  int fn1 = fn; suspend();
+	fn = 1;  int fn2 = fn1;  fn1 = fn; suspend();
+	for () {
+		fn = fn1 + fn2;  fn2 = fn1;  fn1 = fn; suspend();
+	}
+}
+int next( Fib1 & fib ) with( fib ) { resume( fib ); return fn; }
+
+coroutine Fib2 { int ret; };					// used for communication
+void main( Fib2 & fib ) with( fib ) {			// called on first resume
+	int fn, fn1 = 1, fn2 = 0;					// precompute first two states
+	for () {
+		ret = fn2;
+		fn = fn1 + fn2;  fn2 = fn1;  fn1 = fn;	// general case
+		suspend();								// restart last resume
+	}
+}
+int next( Fib2 & fib ) with( fib ) {
+	resume( fib );								// restart last suspend
+	return ret;
+}
+
+int main() {
+	for ( 10 )
+		sout | fib_gvar();
+	sout | nl;
+
+	Fib f1 = FIB_INIT, f2 = FIB_INIT;
+	for ( 10 )
+		sout | fib_state( f1 ) | fib_state( f2 );
+	sout | nl;
+
+	Fib1 f1, f2;
+	for ( 10 )
+		sout | next( f1 ) | next( f2 );
+	sout | nl;
+
+	Fib2 f1, f2;
+	for ( 10 )
+		sout | next( (Fib2 &)f1 ) | next( (Fib2 &)f2 );
+}
+
+// Local Variables: //
+// tab-width: 4 //
+// fill-column: 120 //
+// compile-command: "cfa Fib.cfa" //
+// End: //
Index: doc/papers/concurrency/examples/Fib.cpp
===================================================================
--- doc/papers/concurrency/examples/Fib.cpp	(revision 92d41a4af1542b1fcfd3bacde48933e4c8519366)
+++ doc/papers/concurrency/examples/Fib.cpp	(revision 92d41a4af1542b1fcfd3bacde48933e4c8519366)
@@ -0,0 +1,120 @@
+#include <algorithm>
+#include <iostream>
+#include <iterator>
+#include <vector>
+
+#include <experimental/coroutine>
+
+template<typename T>
+struct cor_range {
+	struct promise_type {
+		T _value;
+
+		cor_range get_return_object() {
+			return cor_range(std::experimental::coroutine_handle<promise_type>::from_promise(*this));
+		}
+
+		auto initial_suspend() { return std::experimental::suspend_always(); }
+		auto final_suspend()   { return std::experimental::suspend_always(); }
+
+		void return_value(T value) {
+			_value = value;
+		}
+
+		auto yield_value(T value) {
+			_value = value;
+			return std::experimental::suspend_always();
+		}
+
+		void unhandled_exception() {}
+	};
+
+	std::experimental::coroutine_handle<promise_type> _coroutine = nullptr;
+
+	explicit cor_range(std::experimental::coroutine_handle<promise_type> coroutine)
+		: _coroutine(coroutine)
+	{}
+
+	~cor_range() {
+		if(_coroutine) { _coroutine.destroy(); }
+	}
+
+	cor_range() = default;
+	cor_range(cor_range const &) = delete;
+	cor_range& operator=(cor_range const &) = delete;
+
+	cor_range(cor_range&& other) {
+		std::swap(_coroutine, other._coroutine);
+	}
+
+	cor_range& operator=(cor_range&& other) {
+		if(&other != this) {
+			_coroutine = other._coroutine;
+			other._coroutine = nullptr;
+		}
+		return *this;
+	}
+
+	T next() {
+		_coroutine.resume();
+		return _coroutine.promise()._value;
+	}
+
+	struct iterator : std::iterator<std::input_iterator_tag, T> {
+		std::experimental::coroutine_handle<promise_type> _coroutine = nullptr;
+
+		iterator() = default;
+		explicit iterator(std::experimental::coroutine_handle<promise_type> coroutine)
+			: _coroutine(coroutine)
+		{}
+
+		iterator& operator++() {
+			_coroutine.resume();
+			return *this;
+		}
+
+		T const & operator*() const {
+			return _coroutine.promise()._value;
+		}
+	};
+
+	iterator begin() {
+		if(_coroutine) {
+			_coroutine.resume();
+			if(_coroutine.done()) { return end(); }
+		}
+
+		return iterator{ _coroutine };
+	}
+
+	iterator end() { return iterator{}; }
+};
+
+cor_range<int> fib() {
+	int fn;
+	fn = 0; int fn1 = fn; co_yield fn;
+	fn = 1; int fn2 = fn1; fn1 = fn; co_yield fn;
+	for(;;) {
+		fn = fn1 + fn2; fn2 = fn1; fn1 = fn; co_yield fn;
+	}
+}
+
+int main() {
+	{
+		auto f1 = fib();
+		auto f2 = fib();
+		for(int i = 0; i < 10; i++) {
+			std::cout << f1.next() << " " << f2.next() << std::endl;
+		}
+	}
+
+	{
+		auto f1 = fib();
+		std::vector<int> fibs;
+		std::copy_n(f1.begin(), 10, std::back_inserter(fibs));
+
+		for(auto i : fibs) {
+			std::cout << i << std::endl;
+		}
+	}
+}
Index: doc/papers/concurrency/examples/Fib.py
===================================================================
--- doc/papers/concurrency/examples/Fib.py	(revision 92d41a4af1542b1fcfd3bacde48933e4c8519366)
+++ doc/papers/concurrency/examples/Fib.py	(revision 92d41a4af1542b1fcfd3bacde48933e4c8519366)
@@ -0,0 +1,17 @@
+def Fibonacci():
+	fn = 0;	fn1 = fn; yield fn  # suspend
+	fn = 1; fn2 = fn1; fn1 = fn; yield fn
+	while True:
+		fn = fn1 + fn2; fn2 = fn1; fn1 = fn; yield fn
+
+
+
+f1 = Fibonacci()
+f2 = Fibonacci()
+for i in range( 10 ):
+	print( next( f1 ), next( f2 ) )  # resume
+
+# Local Variables: #
+# tab-width: 4 #
+# compile-command: "python3.5 Fib.py" #
+# End: #
Index: doc/papers/concurrency/examples/Format.cfa
===================================================================
--- doc/papers/concurrency/examples/Format.cfa	(revision 92d41a4af1542b1fcfd3bacde48933e4c8519366)
+++ doc/papers/concurrency/examples/Format.cfa	(revision 92d41a4af1542b1fcfd3bacde48933e4c8519366)
@@ -0,0 +1,84 @@
+#if 1
+#include <fstream.hfa>
+#include <coroutine.hfa>
+
+coroutine Fmt {
+	char ch;								// communication variables
+	int g, b;								// needed in destructor
+};
+void main( Fmt & fmt ) with( fmt ) {
+	for () {								// for as many characters
+		for ( g = 0; g < 5; g += 1 ) {		// groups of 5 blocks
+			for ( b = 0; b < 4; b += 1 ) {	// blocks of 4 characters
+//				do {
+					suspend();
+//				} while ( ch == '\n' || ch == '\t' );
+				sout | ch;					// print character
+			}
+			sout | "  ";					// block separator
+		}
+		sout | nl;							// group separator
+	}
+}
+void ?{}( Fmt & fmt ) { resume( fmt ); } // prime (start) coroutine
+void ^?{}( Fmt & fmt ) with( fmt ) { // destructor
+	if ( g != 0 || b != 0 )	// special case
+		sout | nl; }
+void send( Fmt & fmt, char c ) { fmt.ch = c; resume( fmt ); }
+int main() {
+	Fmt fmt;
+ 	sout | nlOff;							// turn off auto newline
+	for ( 41 )
+		send( fmt, 'a' );
+  // 	sout | nlOff;							// turn off auto newline
+  // eof: for () {								// read until end of file
+  // 		sin | fmt.ch;						// read one character
+  // 	  if ( eof( sin ) ) break eof;			// eof ?
+  // 		format( fmt );						// push character for formatting
+  // 	}
+}
+#else
+
+#include <stdio.h>
+
+struct Format {
+	char ch;								// used for communication
+	int g, b;								// global because used in destructor
+};
+
+void format( struct Format * fmt ) {
+	if ( fmt->ch != -1 ) { // not EOF ?
+//		if ( fmt->ch == '\n' || fmt->ch == '\t' ) return;
+//		printf( "%c %d %d", fmt->ch, fmt->g, fmt->b );		// character
+		printf( "%c", fmt->ch );		// character
+		fmt->b += 1;
+		if ( fmt->b == 4 ) {	// block ?
+			printf( "  " ); // separator
+			fmt->b = 0;
+			fmt->g += 1;
+		}
+		if ( fmt->g == 5 ) {	// group ?
+			printf( "\n" ); // separator
+			fmt->g = 0;
+		}
+	} else {
+		if ( fmt->g != 0 || fmt->b != 0 ) printf( "\n" );
+	}
+}
+int main() {
+	struct Format fmt = { 0, 0, 0 };
+	for ( ;; ) {
+		scanf( "%c", &fmt.ch );
+	  if ( feof( stdin ) ) break;
+		format( &fmt );
+	}
+	fmt.ch = -1;
+	format( &fmt );
+}
+#endif
+
+// Local Variables: //
+// tab-width: 4 //
+// fill-column: 120 //
+// compile-command: "cfa Format.cfa" //
+// End: //
Index: doc/papers/concurrency/examples/Format.cpp
===================================================================
--- doc/papers/concurrency/examples/Format.cpp	(revision 92d41a4af1542b1fcfd3bacde48933e4c8519366)
+++ doc/papers/concurrency/examples/Format.cpp	(revision 92d41a4af1542b1fcfd3bacde48933e4c8519366)
@@ -0,0 +1,96 @@
+#include <iostream>
+#include <experimental/coroutine>
+
+struct fmt_cor {
+	struct promise_type {
+		char _value;
+
+		fmt_cor get_return_object() {
+			return fmt_cor(std::experimental::coroutine_handle<promise_type>::from_promise(*this));
+		}
+
+		auto initial_suspend() { return std::experimental::suspend_never(); }
+		auto final_suspend()   { return std::experimental::suspend_always(); }
+
+		void return_void() {}
+		void unhandled_exception() {}
+	};
+
+	struct get {
+		promise_type * _promise = nullptr;
+
+		bool await_ready() noexcept {
+			return false;
+		}
+
+		void await_suspend(std::experimental::coroutine_handle<promise_type> _coroutine) noexcept {
+			_promise = &_coroutine.promise();
+		}
+		char await_resume() noexcept {
+			assert(_promise);
+			return _promise->_value;
+		}
+	};
+
+	std::experimental::coroutine_handle<promise_type> _coroutine = nullptr;
+
+	explicit fmt_cor(std::experimental::coroutine_handle<promise_type> coroutine)
+		: _coroutine(coroutine)
+	{}
+
+	~fmt_cor() {
+		if(_coroutine) {
+			_coroutine.destroy();
+
+		}
+	}
+
+	fmt_cor() = default;
+	fmt_cor(fmt_cor const &) = delete;
+	fmt_cor& operator=(fmt_cor const &) = delete;
+
+	fmt_cor(fmt_cor&& other) {
+		std::swap(_coroutine, other._coroutine);
+	}
+
+	fmt_cor& operator=(fmt_cor&& other) {
+		if(&other != this) {
+			_coroutine = other._coroutine;
+			other._coroutine = nullptr;
+		}
+		return *this;
+	}
+
+	void send(char a) {
+		_coroutine.promise()._value = a;
+		_coroutine.resume();
+	}
+};
+
+fmt_cor Fmt() {
+	struct locals {
+		int g, b;
+
+		~locals() {
+			if (g != 0 | b != 0) {
+				std::cout << "\n";
+			}
+		}
+	} l;
+	for(;;) {
+		for(l.g = 0; l.g < 5; l.g++) {
+			for(l.b = 0; l.b < 4; l.b++) {
+				std::cout << co_await fmt_cor::get();
+			}
+			std::cout << "  ";
+		}
+		std::cout << std::endl;
+	}
+}
+
+int main() {
+	auto fmt = Fmt();
+	for(int i = 0; i < 41; i++) {
+		fmt.send('a');
+	}
+}
Index: doc/papers/concurrency/examples/Format.py
===================================================================
--- doc/papers/concurrency/examples/Format.py	(revision 92d41a4af1542b1fcfd3bacde48933e4c8519366)
+++ doc/papers/concurrency/examples/Format.py	(revision 92d41a4af1542b1fcfd3bacde48933e4c8519366)
@@ -0,0 +1,21 @@
+def Format():
+	try:
+		while True:
+			for g in range( 5 ): 	# groups of 5 blocks
+				for b in range( 4 ): # blocks of 4 characters
+					print( (yield), end='' ) # receive from send
+				print( '  ', end='' ) # block separator
+			print()					# group separator
+	except GeneratorExit:			# destructor
+		if g != 0 | b != 0:			# special case
+			print()
+
+fmt = Format()
+next( fmt )							# prime generator
+for i in range( 41 ):
+	fmt.send( 'a' );				# send to yield
+
+# Local Variables: #
+# tab-width: 4 #
+# compile-command: "python3.5 Format.py" #
+# End: #
Index: doc/papers/concurrency/examples/ProdCons.cfa
===================================================================
--- doc/papers/concurrency/examples/ProdCons.cfa	(revision 92d41a4af1542b1fcfd3bacde48933e4c8519366)
+++ doc/papers/concurrency/examples/ProdCons.cfa	(revision 92d41a4af1542b1fcfd3bacde48933e4c8519366)
@@ -0,0 +1,77 @@
+#include <fstream.hfa>
+#include <coroutine.hfa>
+#include <stdlib.hfa>									// random
+#include <unistd.h>										// getpid
+coroutine Cons;											// forward
+int delivery( Cons & cons, int p1, int p2 );
+void stop( Cons & cons );
+
+coroutine Prod {
+	Cons & c;
+	int N, money, receipt;
+};
+void main( Prod & prod ) with( prod ) {					// starter ::main
+	// 1st resume starts here
+	for ( i; N ) {										// N pairs of values
+		int p1 = random( 100 ), p2 = random( 100 );
+		sout | p1 | " " | p2;
+		int status = delivery( c, p1, p2 );
+		sout | " $" | money | nl | status;
+		receipt += 1;
+	}
+	stop( c );
+	sout | "prod stops";
+}
+int payment( Prod & prod, int money ) {
+	prod.money = money;
+	resume( prod );										// main 1st time, then
+	return prod.receipt;								// prod in delivery
+}
+void start( Prod & prod, int N, Cons &c ) {
+	&prod.c = &c;
+	prod.[N, receipt] = [N, 0];
+	resume( prod );										// activate main
+}
+coroutine Cons {
+	Prod & p;
+	int p1, p2, status;
+	bool done;
+};
+void ?{}( Cons & cons, Prod & p ) {
+	&cons.p = &p;
+	cons.[status, done ] = [0, false];
+}
+void ^?{}( Cons & cons ) {}
+void main( Cons & cons ) with( cons ) {					// starter prod
+	// 1st resume starts here
+	int money = 1, receipt;
+	for ( ; ! done; ) {
+		sout | p1 | " " | p2 | nl | " $" | money;
+		status += 1;
+		receipt = payment( p, money );
+		sout | " #" | receipt;
+		money += 1;
+	}
+	sout | "cons stops";
+}
+int delivery( Cons & cons, int p1, int p2 ) {
+	cons.[p1, p2] = [p1, p2];
+	resume( cons );										// main 1st time, then
+	return cons.status;									// cons in payment
+}
+void stop( Cons & cons ) {
+	cons.done = true;
+	resume( cons );										// activate payment
+}
+int main() {
+	Prod prod;
+	Cons cons = { prod };
+	srandom( getpid() );
+	start( prod, 5, cons );
+}
+
+// Local Variables: //
+// tab-width: 4 //
+// fill-column: 120 //
+// compile-command: "cfa ProdCons.c" //
+// End: //
Index: doc/papers/concurrency/examples/ProdCons.cpp
===================================================================
--- doc/papers/concurrency/examples/ProdCons.cpp	(revision 92d41a4af1542b1fcfd3bacde48933e4c8519366)
+++ doc/papers/concurrency/examples/ProdCons.cpp	(revision 92d41a4af1542b1fcfd3bacde48933e4c8519366)
@@ -0,0 +1,205 @@
+#include <cassert>
+#include <cstdlib>
+#include <iostream>
+#include <experimental/coroutine>
+#include <unistd.h>
+
+int random(int max) {
+	return std::rand() % max;
+}
+
+struct Prod;
+struct Cons;
+
+struct Prod {
+	struct local {
+		Cons * c;
+		int N, money, receipt;
+	};
+
+	struct promise_type {
+		local _l;
+
+		Prod get_return_object() {
+			return Prod(std::experimental::coroutine_handle<promise_type>::from_promise(*this));
+		}
+
+		auto initial_suspend() { return std::experimental::suspend_never(); }
+		auto final_suspend()   { return std::experimental::suspend_always(); }
+
+		void return_void() {}
+		void unhandled_exception() {}
+	};
+
+	struct data {
+		promise_type * _promise = nullptr;
+		bool await_ready() noexcept { return false; }
+		void await_suspend(std::experimental::coroutine_handle<promise_type> _coroutine) noexcept {
+			_promise = &_coroutine.promise();
+		}
+		local & await_resume() noexcept { assert(_promise); return _promise->_l; }
+	};
+
+	std::experimental::coroutine_handle<promise_type> _coroutine = nullptr;
+
+	explicit Prod(std::experimental::coroutine_handle<promise_type> coroutine)
+		: _coroutine(coroutine)
+	{}
+
+	~Prod() {
+		if(_coroutine) { _coroutine.destroy(); }
+	}
+
+	Prod() = default;
+	Prod(Prod const &) = delete;
+	Prod& operator=(Prod const &) = delete;
+
+	Prod(Prod&& other) {
+		std::swap(_coroutine, other._coroutine);
+	}
+
+	Prod& operator=(Prod&& other) {
+		if(&other != this) {
+			_coroutine = other._coroutine;
+			other._coroutine = nullptr;
+		}
+		return *this;
+	}
+
+	static Prod main();
+
+	auto payment(int money) {
+		_coroutine.promise()._l.money = money;
+		struct ret {
+			int _receipt;
+			bool await_ready() { return false; }
+			void await_suspend(std::experimental::coroutine_handle<>) {}
+			int await_resume() { return _receipt; }
+		};
+		return ret{ _coroutine.promise()._l.receipt };
+	}
+
+	auto start(int N, Cons & c) {
+		_coroutine.promise()._l.c = &c;
+		_coroutine.promise()._l.N = N;
+		_coroutine.promise()._l.receipt = 0;
+		_coroutine.resume();
+	}
+};
+
+struct Cons {
+	struct local {
+		Prod * p;
+		int p1, p2, status;
+		bool done;
+	};
+
+	struct promise_type {
+		local _l;
+
+		Cons get_return_object() {
+			return Cons(std::experimental::coroutine_handle<promise_type>::from_promise(*this));
+		}
+
+		auto initial_suspend() { return std::experimental::suspend_never(); }
+		auto final_suspend()   { return std::experimental::suspend_always(); }
+
+		void return_void() {}
+		void unhandled_exception() {}
+	};
+
+	struct data {
+		Prod * _p;
+		data(Prod & prod) : _p(&prod) {}
+		promise_type * _promise = nullptr;
+		bool await_ready() noexcept { return false; }
+		void await_suspend(std::experimental::coroutine_handle<promise_type> _coroutine) noexcept {
+			_promise = &_coroutine.promise();
+		}
+		local & await_resume() noexcept { assert(_promise); _promise->_l.p = _p; return _promise->_l; }
+	};
+
+	std::experimental::coroutine_handle<promise_type> _coroutine = nullptr;
+
+	explicit Cons(std::experimental::coroutine_handle<promise_type> coroutine)
+		: _coroutine(coroutine)
+	{}
+
+	~Cons() {
+		if(_coroutine) { _coroutine.destroy(); }
+	}
+
+	Cons() = default;
+	Cons(Cons const &) = delete;
+	Cons& operator=(Cons const &) = delete;
+
+	Cons(Cons&& other) {
+		std::swap(_coroutine, other._coroutine);
+	}
+
+	Cons& operator=(Cons&& other) {
+		if(&other != this) {
+			_coroutine = other._coroutine;
+			other._coroutine = nullptr;
+		}
+		return *this;
+	}
+
+	static Cons main( Prod & prod );
+
+	auto deliver(int p1, int p2) {
+		_coroutine.promise()._l.p1 = p1;
+		_coroutine.promise()._l.p2 = p2;
+
+		struct ret {
+			int _status;
+			bool await_ready() { return false; }
+			void await_suspend(std::experimental::coroutine_handle<>) {}
+			int await_resume() { return _status; }
+		};
+		return ret{ _coroutine.promise()._l.status };
+	}
+
+	auto stop() {
+		_coroutine.promise()._l.done = true;
+		struct ret {
+			bool await_ready() { return false; }
+			void await_suspend(std::experimental::coroutine_handle<>) {}
+			void await_resume() {}
+		};
+		return ret{};
+	}
+};
+
+Prod Prod::main() {
+	auto & p = co_await Prod::data();
+	for(int i = 0; i < p.N; i++) {
+		int p1 = random(100), p2 = random(100);
+		std::cout << p1 << " " << p2;
+		int status = co_await p.c->deliver(p1, p2);
+		std::cout << " $" << p.money << std::endl << status;
+		p.receipt += 1;
+	}
+	co_await p.c->stop();
+	std::cout << "prod stops";
+}
+
+Cons Cons::main( Prod & prod ) {
+	auto & c = co_await Cons::data( prod );
+	int money = 1, receipt;
+	for(;!c.done ;) {
+		std::cout << c.p1 << " " << c.p2 << std::endl << " $" << money;
+		c.status += 1;
+		receipt = co_await c.p->payment( money );
+		std::cout << " #" << receipt;
+		money += 1;
+	}
+	std::cout << "const stops";
+}
+
+int main() {
+	auto prod = Prod::main();
+	auto cons = Cons::main( prod );
+	srandom( getpid() );
+	prod.start(5, cons);
+}
Index: doc/papers/concurrency/examples/counter.cpp
===================================================================
--- doc/papers/concurrency/examples/counter.cpp	(revision 92d41a4af1542b1fcfd3bacde48933e4c8519366)
+++ doc/papers/concurrency/examples/counter.cpp	(revision 92d41a4af1542b1fcfd3bacde48933e4c8519366)
@@ -0,0 +1,62 @@
+#include <iostream>
+#include <experimental/coroutine>
+
+struct counter_cor {
+	struct promise_type {
+		counter_cor get_return_object() {
+			return counter_cor(std::experimental::coroutine_handle<promise_type>::from_promise(*this));
+		}
+
+		auto initial_suspend() { return std::experimental::suspend_never(); }
+		auto final_suspend()   { return std::experimental::suspend_never(); }
+
+		void return_void() {}
+
+		void unhandled_exception() {}
+	};
+
+	std::experimental::coroutine_handle<promise_type> _coroutine = nullptr;
+
+	explicit counter_cor(std::experimental::coroutine_handle<promise_type> coroutine)
+		: _coroutine(coroutine)
+	{}
+
+	~counter_cor() {
+		if(_coroutine) { _coroutine.destroy(); }
+	}
+
+	counter_cor() = default;
+	counter_cor(counter_cor const &) = delete;
+	counter_cor& operator=(counter_cor const &) = delete;
+
+	counter_cor(counter_cor&& other) {
+		std::swap(_coroutine, other._coroutine);
+	}
+
+	counter_cor& operator=(counter_cor&& other) {
+		if(&other != this) {
+			_coroutine = other._coroutine;
+			other._coroutine = nullptr;
+		}
+		return *this;
+	}
+
+	void resume() { _coroutine.resume(); }
+};
+
+counter_cor counter() {
+	std::cout << "Counter: called\n";
+	for(unsigned i = 1;; i++) {
+		co_await std::experimental::suspend_always{};
+		std::cout << "Counter: Resumed " << i << " time(s)\n";
+	}
+}
+
+int main() {
+	std::cout << "Main: calling counter\n";
+	auto c = counter();
+	std::cout << "Main: resumes\n";
+	c.resume();
+	c.resume();
+	std::cout << "Main: done\n";
+}
Index: doc/papers/concurrency/examples/pingpong.py
===================================================================
--- doc/papers/concurrency/examples/pingpong.py	(revision 92d41a4af1542b1fcfd3bacde48933e4c8519366)
+++ doc/papers/concurrency/examples/pingpong.py	(revision 92d41a4af1542b1fcfd3bacde48933e4c8519366)
@@ -0,0 +1,26 @@
+i = 0
+def pong():
+	global i
+	print( "pong" )
+	if i < 4:
+		yield from ping()
+	print( "stop pong" )
+
+def ping():
+	global i
+	print( "ping" )
+	i += 1
+	if i < 5:
+		yield from pong()
+	print( "stop ping" )
+
+p = ping()
+try:
+	next( p )
+except StopIteration:
+	print( "stop" )
+
+# Local Variables: #
+# tab-width: 4 #
+# compile-command: "python3.5 pingpong.py" #
+# End: #
Index: doc/proposals/specialized_casts.md
===================================================================
--- doc/proposals/specialized_casts.md	(revision 92d41a4af1542b1fcfd3bacde48933e4c8519366)
+++ doc/proposals/specialized_casts.md	(revision 92d41a4af1542b1fcfd3bacde48933e4c8519366)
@@ -0,0 +1,32 @@
+## Specialized Casts ##
+
+There is some use in Cforall for cast operators with semantics other than the standard C cast. To make these alternate casts look like the familiar C cast, this proposal follows the example of the virtual proposal's virtual cast `(virtual Foo)x` and uses an added (pseudo-)keyword inside the cast parens.
+
+### C (Conversion) Cast ###
+The standard C cast performs _conversions_, transformations between types which may make a new object with a different in-memory representation. Cforall maintains these semantics in a backward-compatible way while accounting for name overloading by choosing the lowest-cost interpretation of the argument expression which is convertable to the target type, breaking ties by conversion cost.
+
+The C cast must be maintained for backward-compatibility, and developing a second cast operator with identical semantics seems an undesirable multiplication of language features, but `(convert Foo)` or `(to Foo)` would be reasonable options for a keyword. An alternate semantics for a Cforall-specific conversion cast would be to choose the cast interpretation with the lowest sum of conversion cost and interpretation cost, which aligns better with Cforall function call resolution algorithm.
+
+### Ascription Cast ###
+Using casts in Cforall for type _ascription_ ("select the interpretation of this type") works by the conversion-cost tiebreaker behaviour of the cast operator. However, the ascription interpretation of casts is prioritized less than the conversion interpretation of casts, sometimes resulting in some surprising results, as in the following example:
+
+	int f(int);      // f1
+	int f(double);   // f2
+	int g(int);      // g1
+	double g(long);  // g2
+
+	f((double)42);   // selects f2 by cast on argument
+	(double)g(42);   // does NOT select g2, argument conversion cost results in g1
+
+An ascription cast which reversed the priorities of the C cast would be useful for selecting expressions based on their return type; a reversal of the priorities of the standard C cast would work for this (that is, select the lowest-cost conversion, breaking ties based on argument cost). A plausible stricter semantics would be to select the cheapest interpretation with a zero-cost conversion to the target type, reporting a compiler error otherwise (this semantics would make ascription a solely compile-time phenomenon, rather than relying on possible runtime conversions). A resonable keyword would be `(as Foo)`, which is short, evocative, and echos "ascription"; `(return Foo)` would not introduce new keywords, and speaks to its use in return-type selection, as in the following corrected version of the example above:
+
+	(as double)g(42);  // selects g2, as expected (under either presented ascription semantics)
+
+### Coercion Cast ###
+Some of the explict conversions in C are defined to be a _coercions_ (reinterpret the bits of this value as another type). Use of coercions often relies on non-standard implementation details of the provided environment, and as such is discouraged, but is sometimes necessary. Since all explicit pointer casts in C are coercions, any lvalue `x` in C/Cforall can be coerced with the pattern `*(Foo*)&x`, but this is complex and doesn't extend to rvalues. A dedicated coercion cast would solve these issues; `(reinterpret Foo)` (from C++), `(transmute Foo)` (from Rust), or `(coerce Foo)` would be reasonable keywords.
+
+### Qualifier Cast ###
+A more restricted (and thus safer) form of coercion is modifiying the qualifiers of a type; C++ has `const_cast` for this purpose, and a similar feature would be useful for Cforall. With regard to syntax, `(requalify const Foo)`/`(requalify Foo)` to add/strip `const` would echo C++, but given that the vast majority of uses are stripping const-qualfiers, `(non const)` would be shorter, clearer, easily searchable, and not require the programmer to exactly match the argument type. In this syntax, coercion casts could be used to add qualifiers, or another cast type (say `(with const)`) could be introduced to add qualfiers.
+
+### Virtual Cast ###
+_see virtual.txt; semantics equivalent to C++ dynamic cast_
Index: doc/theses/aaron_moss_PhD/phd/Makefile
===================================================================
--- doc/theses/aaron_moss_PhD/phd/Makefile	(revision 114bde658eed1edf31cde78bd21584a1ced7df2e)
+++ doc/theses/aaron_moss_PhD/phd/Makefile	(revision 92d41a4af1542b1fcfd3bacde48933e4c8519366)
@@ -2,4 +2,5 @@
 BIBDIR = ../../../bibliography
 EVALDIR = evaluation
+FIGDIR = figures
 TEXLIB = .:${BUILD}:${BIBDIR}:
 
@@ -8,5 +9,5 @@
 BIBTEX = BIBINPUTS=${TEXLIB} && export BIBINPUTS && bibtex
 
-VPATH = ${EVALDIR}
+VPATH = ${EVALDIR} ${FIGDIR}
 
 BASE = thesis
@@ -22,11 +23,24 @@
 background \
 generic-types \
+resolution-heuristics \
 type-environment \
-resolution-heuristics \
+experiments \
 conclusion \
+generic-bench \
+}
+
+FIGURES = ${addsuffix .eps, \
+safe-conv-graph \
+resolution-dag \
+union-find-with-classes \
+persistent-union-find \
 }
 
 GRAPHS = ${addsuffix .tex, \
 generic-timing \
+tests-completed \
+per-prob-histo \
+per-prob-depth \
+cfa-time \
 }
 
@@ -47,5 +61,5 @@
 	dvips ${BUILD}/$< -o ${BUILD}/$@
 
-${BASE}.dvi : Makefile ${SOURCES} ${GRAPHS} ${BIBFILE} ${BUILD}
+${BASE}.dvi : Makefile ${SOURCES} ${GRAPHS} ${FIGURES} ${BIBFILE} ${BUILD}
 	${LATEX} ${BASE}
 	${BIBTEX} ${BUILD}/${BASE}
@@ -53,6 +67,18 @@
 	${LATEX} ${BASE}
 
-${GRAPHS} : generic-timing.gp generic-timing.dat ${BUILD}
+generic-timing.tex : generic-timing.gp generic-timing.dat ${BUILD}
 	gnuplot -e BUILD="'${BUILD}/'" ${EVALDIR}/generic-timing.gp
+	
+tests-completed.tex : algo-summary.gp algo-summary.dat bu-summary.dat ${BUILD}
+	gnuplot -e BUILD="'${BUILD}/'" ${EVALDIR}/algo-summary.gp
+
+per-prob-histo.tex : per-prob.gp per-prob.tsv ${BUILD}
+	gnuplot -e BUILD="'${BUILD}/'" ${EVALDIR}/per-prob.gp
+
+per-prob-depth.tex : per-prob-scatter.gp ${BUILD}
+	gnuplot -e BUILD="'${BUILD}/'" ${EVALDIR}/per-prob-scatter.gp
+
+cfa-time.tex : cfa-plots.gp cfa-time.tsv cfa-mem.tsv ${BUILD}
+	gnuplot -e BUILD="'${BUILD}/'" ${EVALDIR}/cfa-plots.gp
 
 ${BUILD}: 
Index: doc/theses/aaron_moss_PhD/phd/background.tex
===================================================================
--- doc/theses/aaron_moss_PhD/phd/background.tex	(revision 114bde658eed1edf31cde78bd21584a1ced7df2e)
+++ doc/theses/aaron_moss_PhD/phd/background.tex	(revision 92d41a4af1542b1fcfd3bacde48933e4c8519366)
@@ -1,37 +1,36 @@
 \chapter{\CFA{}}
+\label{cfa-chap}
 
 \CFA{} adds a number of features to C, some of them providing significant increases to the expressive power of the language, but all designed to maintain the existing procedural programming paradigm of C and to be as orthogonal as possible to each other. 
 To provide background for the contributions in subsequent chapters, this chapter provides a summary of the features of \CFA{} at the time this work was conducted.
 
-The core design of \CFA{} is laid out in Glen Ditchfield's 1992 PhD thesis, \emph{Contextual Polymorphism}\cite{Ditchfield92}; in that thesis, Ditchfield presents the theoretical underpinnings of the \CFA{} polymorphism model. 
-Building on Ditchfield's design for contextual polymorphism as well as KW-C\cite{Buhr94a}, an earlier set of (largely syntactic) extensions to C, Richard Bilson\cite{Bilson03} built the first version of the \CFA{} compiler, \CFACC{}, in the early 2000's. 
-This early \CFACC{} provided basic functionality, but incorporated a number of poor algorithmic choices due to a rushed implementation time frame, and as such lacked the runtime performance required for practical use; this thesis is substantially concerned with rectifying those deficits. 
-
-The \CFA{} project was revived in 2015 with the intention of building a production-ready language and compiler; at the time of this writing, both \CFA{} and \CFACC{} have been under active development continuously since. 
-As this development has been proceeding concurrently with the work described in this thesis, the state of \CFA{} has been somewhat of a moving target; however, Moss~\etal\cite{Moss18} provides a reasonable summary of the current design. 
-Notable features added during this period include generic types (Chapter~\ref{generic-chap}), constructors and destructors\cite{Schluntz17}, improved support for tuples\cite{Schluntz17}, reference types\cite{Moss18}, first-class concurrent and parallel programming support\cite{Delisle18}, as well as numerous pieces of syntactic sugar and the start of an idiomatic standard library\cite{Moss18}.
-
-\section{\CFA{} Features}
+The core design of \CFA{} is laid out in Glen Ditchfield's 1992 PhD thesis, \emph{Contextual Polymorphism} \cite{Ditchfield92}; in that thesis, Ditchfield presents the theoretical underpinnings of the \CFA{} polymorphism model. 
+Building on Ditchfield's design for contextual polymorphism as well as KW-C \cite{Buhr94a}, an earlier set of (largely syntactic) extensions to C, Richard Bilson \cite{Bilson03} built the first version of the \CFA{} compiler, \CFACC{}, in the early 2000's. 
+This early \CFACC{} provided basic functionality, but incorporated a number of algorithmic choices that have failed to scale as \CFA{} has developed, lacking the runtime performance for practical use; this thesis is substantially concerned with rectifying those deficits. 
+
+The \CFA{} project was revived in 2015 with the intention of building a production-ready language and compiler; at the time of this writing, both \CFA{} and \CFACC{} remain under active development. 
+As this development has been proceeding concurrently with the work described in this thesis, the state of \CFA{} has been somewhat of a moving target; however, Moss~\etal~\cite{Moss18} provides a reasonable summary of the current design. 
+Notable features added during this period include generic types (Chapter~\ref{generic-chap}), constructors and destructors \cite{Schluntz17}, improved support for tuples \cite{Schluntz17}, reference types \cite{Moss18}, first-class concurrent and parallel programming support \cite{Delisle18}, as well as numerous pieces of syntactic sugar and the start of an idiomatic standard library \cite{Moss18}.
 
 The selection of features presented in this chapter are chosen to elucidate the design constraints of the work presented in this thesis. 
-In some cases the interactions of multiple features make this design a significantly more complex problem than any individual feature would; in other cases a feature that does not by itself add any complexity to expression resolution triggers previously rare edge cases more frequently.
-
-\subsection{Procedural Paradigm}
+In some cases the interactions of multiple features make this design a significantly more complex problem than any individual feature; in other cases a feature that does not by itself add any complexity to expression resolution triggers previously rare edge cases more frequently.
+
+\section{Procedural Paradigm}
 
 It is important to note that \CFA{} is not an object-oriented language. 
-This is a deliberate choice intended to maintain the applicability of the mental model and language idioms already possessed by C programmers. 
-This choice is in marked contrast to \CC{}, which, though it has backward-compatibility with C on the source code level, is a much larger and more complex language, and requires extensive developer re-training to write idiomatic, efficient code in \CC{}'s object-oriented paradigm.
-
-\CFA{} does have a system of implicit type conversions derived from C's ``usual arithmetic conversions''; while these conversions may be thought of as something like an inheritance hierarchy, the underlying semantics are significantly different and such an analogy is loose at best. 
+This is a deliberate choice intended to maintain the applicability of the programming model and language idioms already possessed by C programmers. 
+This choice is in marked contrast to \CC{}, which is a much larger and more complex language, and requires extensive developer re-training to write idiomatic, efficient code in \CC{}'s object-oriented paradigm.
+
 Particularly, \CFA{} has no concept of \emph{subclass}, and thus no need to integrate an inheritance-based form of polymorphism with its parametric and overloading-based polymorphism. 
-The graph structure of the \CFA{} type conversions is also markedly different than an inheritance hierarchy; it has neither a top nor a bottom type, and does not satisfy the lattice properties typical of inheritance hierarchies. 
+While \CFA{} does have a system of implicit type conversions derived from C's ``usual arithmetic conversions'' \cite[\S{}6.3.1.8]{C11} and these conversions may be thought of as something like an inheritance hierarchy, the underlying semantics are significantly different and such an analogy is loose at best. 
+The graph structure of the \CFA{} type conversions (discussed in Section~\ref{conv-cost-sec}) is also markedly different than an inheritance hierarchy; it has neither a top nor a bottom type, and does not satisfy the lattice properties typical of inheritance hierarchies. 
 
 Another aspect of \CFA{}'s procedural paradigm is that it retains C's translation-unit-based encapsulation model, rather than class-based encapsulation such as in \CC{}. 
-This choice implies that that separate compilation must be maintained to allow headers to act as an encapsulation boundary, rather than the header-only libraries used by \CC{} templates.
-
-\subsection{Name Overloading} \label{overloading-sec}
-
-In C, no more than one variable or function in the same scope may share the same name\footnote{Technically, C has multiple separated namespaces, one holding \lstinline{struct}, \lstinline{union}, and \lstinline{enum} tags, one holding labels, one holding \lstinline{typedef} names, variable, function, and enumerator identifiers, and one for each \lstinline{struct} and \lstinline{union} type holding the field names\cit{}.}, and variable or function declarations in inner scopes with the same name as a declaration in an outer scope hide the outer declaration. 
-This restriction makes finding the proper declaration to match to a variable expression or function application a simple matter of symbol-table lookup, which can be easily and efficiently implemented. 
+This design choice implies that separate compilation must be maintained to allow headers to act as an encapsulation boundary, rather than the header-only libraries used by \CC{} templates.
+
+\section{Name Overloading} \label{overloading-sec}
+
+In C, no more than one variable or function in the same scope may share the same name\footnote{Technically, C has multiple separated namespaces, one holding \lstinline{struct}, \lstinline{union}, and \lstinline{enum} tags, one holding labels, one holding \lstinline{typedef} names, variable, function, and enumerator identifiers, and one for each \lstinline{struct} and \lstinline{union} type holding the field names \cite[\S{}6.2.3]{C11}.}, and variable or function declarations in inner scopes with the same name as a declaration in an outer scope hide the outer declaration. 
+This restriction makes finding the proper declaration to match to a variable expression or function application a simple matter of lexically-scoped name lookup, which can be easily and efficiently implemented. 
 \CFA{}, on the other hand, allows overloading of variable and function names so long as the overloaded declarations do not have the same type, avoiding the multiplication of variable and function names for different types common in the C standard library, as in the following example: 
 
@@ -50,12 +49,15 @@
 \end{cfa}
 
-While the wisdom of giving both the maximum value of a type and the function to take the maximum of two values the same name is debatable, \eg{} some developers may prefer !MAX! for the former, the guiding philosophy of \CFA{} is ``describe, don't prescribe'' --- we prefer to trust programmers with powerful tools, and there is no technical reason to restrict overloading between variables and functions. 
-However, the expressivity of \CFA{}'s name overloading has the consequence that simple table lookup is insufficient to match identifiers to declarations, and a type-matching algorithm must be part of expression resolution.
-
-\subsubsection{Operator Overloading}
+The final expression in the preceding example includes a feature of \CFA{} name overloading not shared by \CC{}, the ability to disambiguate expressions based on their return type. This provides greater flexibility and power than the parameter-based overload selection of \CC{}, though at the cost of greater complexity in the resolution algorithm.
+
+While the wisdom of giving both the maximum value of a type and the function to take the maximum of two values the same name in the example above is debatable, \eg{} some developers may prefer !MAX! for the former, the guiding philosophy of \CFA{} is ``describe, don't prescribe'' --- we prefer to trust programmers with powerful tools, and there is no technical reason to restrict overloading between variables and functions. 
+However, the expressivity of \CFA{}'s name overloading does have the consequence that simple table lookup is insufficient to match identifiers to declarations, and a type-matching algorithm must be part of expression resolution.
+
+\subsection{Operator Overloading}
 
 C does allow name overloading in one context: operator overloading. 
 From the perspective of the type system, there is nothing special about operators as opposed to other functions, nor is it desirable to restrict the clear and readable syntax of operators to only the built-in types. 
-For these reasons, \CFA{} also allows overloading of operators by writing specially-named functions where !?! stands in for the operands\footnote{This example uses \CFA{}'s reference types, described in Section~\ref{type-features-sec}}:
+For these reasons, \CFA{}, like \CC{} and many other programming languages, allows overloading of operators by writing specially-named functions where !?! stands in for the operands. 
+This syntax is more natural than the operator overloading syntax of \CC{}, which requires ``dummy'' parameters to disambiguate overloads of similarly-named pre- and postfix operators\footnote{This example uses \CFA{}'s reference types, described in Section~\ref{type-features-sec}}:
 
 \begin{cfa}
@@ -71,14 +73,15 @@
 \end{cfa}
 
-Together, \CFA{}'s backward-compatibility with C and the inclusion of this operator overloading feature imply that \CFA{} must select among function overloads using a method compatible with C's ``usual arithmetic conversions''\cit{}, so as to present user programmers with only a single set of overloading rules.
-
-\subsubsection{Special Literal Types}
+Together, \CFA{}'s backward-compatibility with C and the inclusion of this operator overloading feature imply that \CFA{} must select among function overloads using a method compatible with C's ``usual arithmetic conversions'' \cite[\S{}6.3.1.8]{C11}, so as to present user programmers with only a single set of overloading rules.
+
+\subsection{Special Literal Types}
 
 Literal !0! is also used polymorphically in C; it may be either integer zero or the null value of any pointer type. 
-\CFA{} provides a special type for the !0! literal, !zero_t!, so that users can define a zero value for their own types without being forced to create a conversion from an integer or pointer type (though \CFA{} also includes implicit conversions from !zero_t! to the integer and pointer types for backward compatibility). 
-
-According to the C standard\cit{}, !0! is the only false value; any value that compares equal to zero is false, while any value that does not is true. 
-By this rule, boolean contexts such as !if ( x )! can always be equivalently rewritten as \lstinline{if ( (x) != 0 )}. 
-\CFACC{} applies this rewriting in all boolean contexts, so any type !T! can be made ``truthy'' (that is, given a boolean interpretation) in \CFA{} by defining an operator overload \lstinline{int ?!=?(T, zero_t)}; unlike \CC{} prior to the addition of explicit casts in \CCeleven{}, this design does not add comparability or convertablity to arbitrary integer types. 
+\CFA{} provides a special type for the !0! literal, !zero_t!, so that users can define a zero value for their own types without being forced to create a conversion from an integer or pointer type; \CFA{} also includes implicit conversions from !zero_t! to the !int! and pointer type constructors\footnote{See Section~\ref{type-features-sec}} from !zero_t! for backward compatibility. 
+
+According to the C standard \cite[\S{}6.8.4.1]{C11}, !0! is the only false value; any value that compares equal to zero is false, while any value that does not is true. 
+By this rule, Boolean contexts such as !if ( x )! can always be equivalently rewritten as \lstinline{if ( (x) != 0 )}. 
+\CFACC{} applies this rewriting in all Boolean contexts, so any type !T! can be made ``truthy'' (that is, given a Boolean interpretation) in \CFA{} by defining an operator overload \lstinline{int ?!=?(T, zero_t)}.
+\CC{} takes a different approach to user-defined truthy types, allowing definition of an implicit conversion operator to !bool!; prior to the introduction of the !explicit! keyword for conversion operators in \CCeleven{} this approach also allowed undesired implicit conversions to all other arithmetic types, a shortcoming not shared by the \CFA{} design.
 
 \CFA{} also includes a special type for !1!, !one_t!; like !zero_t!, !one_t! has built-in implicit conversions to the various integral types so that !1! maintains its expected semantics in legacy code. 
@@ -86,10 +89,10 @@
 
 \CFA{} previously allowed !0! and !1! to be the names of polymorphic variables, with separate overloads for !int 0!, !int 1!, and !forall(dtype T) T* 0!. 
-As revealed in my own work on generic types (Chapter~\ref{generic-chap}), the parameteric polymorphic zero variable was not generalizable to other types; though all null pointers have the same in-memory representation, the same cannot be said of the zero values of arbitrary types. 
+While designing \CFA{} generic types (see Chapter~\ref{generic-chap}), it was discovered that the parametric polymorphic zero variable is not generalizable to other types; though all null pointers have the same in-memory representation, the same cannot be said of the zero values of arbitrary types. 
 As such, variables that could represent !0! and !1! were phased out in favour of functions that could generate those values for a given type as appropriate.
 
-\subsection{Polymorphic Functions} \label{poly-func-sec}
-
-The most significant feature \CFA{} adds is parametric-polymorphic functions. 
+\section{Polymorphic Functions} \label{poly-func-sec}
+
+The most significant type-system feature \CFA{} adds is parametric-polymorphic functions. 
 Such functions are written using a !forall! clause (which gives the language its name):
 
@@ -102,6 +105,7 @@
 The type variable !T! is transformed into a set of additional implicit parameters to !identity!, which encode sufficient information about !T! to create and return a variable of that type. 
 \CFA{} passes the size and alignment of the type represented by an !otype! parameter, as well as a default constructor, copy constructor, assignment operator, and destructor. 
-Types which do not have one or more of these operators visible cannot be bound to !otype! parameters. 
-In this design, the runtime cost of polymorphism is spread over each polymorphic call, due to passing more arguments to polymorphic functions; experiments have shown this overhead to be similar to \CC{} virtual function calls. \TODO{rerun experiments, possibly look at vtable variant}
+Types which do not have one or more of these operators visible cannot be bound to !otype! parameters, but may be bound to un-constrained !dtype! (``data type'') type variables. 
+In this design, the runtime cost of polymorphism is spread over each polymorphic call, due to passing more arguments to polymorphic functions; the experiments in Chapter~\ref{generic-chap} indicate that this overhead is comparable to that of \CC{} virtual function calls. 
+% \TODO{rerun experiments, possibly look at vtable variant}
 
 One benefit of this design is that it allows polymorphic functions to be separately compiled. 
@@ -109,12 +113,12 @@
 The fact that there is only one implementation of each polymorphic function also reduces compile times relative to the template-expansion approach taken by \CC{}, as well as reducing binary sizes and runtime pressure on instruction cache by re-using a single version of each function.
 
-\subsubsection{Type Assertions}
-
-Since bare polymorphic types do not provide a great range of available operations, \CFA{} provides a \emph{type assertion} mechanism to provide further information about a type:
+\subsection{Type Assertions}
+
+Since bare polymorphic types do not provide a great range of available operations, \CFA{} provides a \emph{type assertion} mechanism to provide further information about a type\footnote{Subscript not included in source code.\label{sub-foot}}:
 
 \begin{cfa}
 forall(otype T `| { T twice(T); }`)
 T four_times(T x) { return twice( twice(x) ); }
-double twice(double d) { return d * 2.0; }  $\C[2.75in]{// (1)}$
+double twice$\(_1\)$(double d) { return d * 2.0; }
 
 double ans = four_times( 10.5 );  $\C[2.75in]{// T bound to double, ans == 42.0}$
@@ -125,34 +129,34 @@
 
 Monomorphic specializations of polymorphic functions can themselves be used to satisfy type assertions. 
-For instance, !twice! could have been defined like this:
+For instance, !twice! could have been defined like this\footref{sub-foot}:
 
 \begin{cfa}
 forall(otype S | { S ?+?(S, S); })
-S twice(S x) { return x + x; }  $\C[2.75in]{// (2)}
-\end{cfa}
-
-This version of !twice! works for any type !S! that has an addition operator defined for it, and it could be used to satisfy the type assertion on !four_times!. 
-\CFACC{} accomplishes this by creating a wrapper function calling !twice//(2)! with !S! bound to !double!, then providing this wrapper function to !four_times!\footnote{\lstinline{twice // (2)} could also have had a type parameter named \lstinline{T}; \CFA{} specifies renaming of the type parameters, which would avoid the name conflict with the type variable \lstinline{T} of \lstinline{four_times}}.
+S twice$\(_2\)$(S x) { return x + x; }
+\end{cfa}
+
+Specializing this polymorphic function with !S = double! produces a monomorphic function which can  be used to satisfy the type assertion on !four_times!. 
+\CFACC{} accomplishes this by creating a wrapper function calling !twice!$_2$ with !S! bound to !double!, then providing this wrapper function to !four_times!\footnote{\lstinline{twice}$_2$ could also have had a type parameter named \lstinline{T}; \CFA{} specifies renaming of the type parameters, which would avoid the name conflict with the type variable \lstinline{T} of \lstinline{four_times}}.
+However, !twice!$_2$ also works for any type !S! that has an addition operator defined for it. 
 
 Finding appropriate functions to satisfy type assertions is essentially a recursive case of expression resolution, as it takes a name (that of the type assertion) and attempts to match it to a suitable declaration in the current scope. 
 If a polymorphic function can be used to satisfy one of its own type assertions, this recursion may not terminate, as it is possible that that function is examined as a candidate for its own assertion unboundedly repeatedly. 
-To avoid such infinite loops, \CFACC{} imposes a fixed limit on the possible depth of recursion, similar to that employed by most \CC{} compilers for template expansion; this restriction means that there are some semantically well-typed expressions that cannot be resolved by \CFACC{}.
-\TODO{Update this with final state} One contribution made in the course of this thesis was modifying \CFACC{} to use the more flexible expression resolution algorithm for assertion matching, rather than the simpler but limited previous approach of unification on the types of the functions.
-
-\subsubsection{Deleted Declarations}
-
-Particular type combinations can be exempted from matching a given polymorphic function through use of a \emph{deleted function declaration}:
-
-\begin{cfa}
-int somefn(char) = void;
-\end{cfa}
-
-This feature is based on a \CCeleven{} feature typically used to make a type non-copyable by deleting its copy constructor and assignment operator\footnote{In previous versions of \CC{}, a type could be made non-copyable by declaring a private copy constructor and assignment operator, but not defining either. This idiom is well-known, but depends on some rather subtle and \CC{}-specific rules about private members and implicitly-generated functions; the deleted function form is both clearer and less verbose.} or forbidding some interpretations of a polymorphic function by specifically deleting the forbidden overloads\footnote{Specific polymorphic function overloads can also be forbidden in previous \CC{} versions through use of template metaprogramming techniques, though this advanced usage is beyond the skills of many programmers. A similar effect can be produced on an ad-hoc basis at the appropriate call sites through use of casts to determine the function type. In both cases, the deleted-function form is clearer and more concise.}. 
-Deleted function declarations are implemented in \CFACC{} by adding them to the symbol table as usual, but with a flag set that indicates that the function is deleted. 
-If this deleted declaration is selected as the unique minimal-cost interpretation of an expression than an error is produced. \TODO{Check this is implemented at print.}
-
-\subsubsection{Traits}
-
-\CFA{} provides \emph{traits} as a means to name a group of type assertions, as in the example below\footnote{This example uses \CFA{}'s reference types, constructors, and zero type, described in Section~\ref{type-features-sec}.}:
+To avoid such infinite loops, \CFACC{} imposes a fixed limit on the possible depth of recursion, similar to that employed by most \CC{} compilers for template expansion; this restriction means that there are some otherwise semantically well-typed expressions that cannot be resolved by \CFACC{}.
+
+% \subsection{Deleted Declarations}
+
+% Particular type combinations can be exempted from matching a given polymorphic function through use of a \emph{deleted function declaration}:
+
+% \begin{cfa}
+% int somefn(char) = void;
+% \end{cfa}
+
+% This feature is based on a \CCeleven{} feature typically used to make a type non-copyable by deleting its copy constructor and assignment operator\footnote{In previous versions of \CC{}, a type could be made non-copyable by declaring a private copy constructor and assignment operator, but not defining either. This idiom is well-known, but depends on some rather subtle and \CC{}-specific rules about private members and implicitly-generated functions; the deleted function form is both clearer and less verbose.} or forbidding some interpretations of a polymorphic function by specifically deleting the forbidden overloads\footnote{Specific polymorphic function overloads can also be forbidden in previous \CC{} versions through use of template metaprogramming techniques, though this advanced usage is beyond the skills of many programmers. A similar effect can be produced on an ad-hoc basis at the appropriate call sites through use of casts to determine the function type. In both cases, the deleted-function form is clearer and more concise.}. 
+% Deleted function declarations are implemented in \CFACC{} by adding them to the symbol table as usual, but with a flag set that indicates that the function is deleted. 
+% If this deleted declaration is selected as the unique minimal-cost interpretation of an expression than an error is produced. 
+
+\subsection{Traits}
+
+\CFA{} provides \emph{traits} as a means to name a group of type assertions, as in the example below\footnote{This example uses \CFA{}'s reference types and constructors, described in Section~\ref{type-features-sec}.}:
 
 \begin{cfa}
@@ -171,5 +175,5 @@
 
 Semantically, traits are simply a named list of type assertions, but they may be used for many of the same purposes that interfaces in Java or abstract base classes in \CC{} are used for. 
-Unlike Java interfaces or \CC{} base classes, \CFA{} types do not explicitly state any inheritance relationship to traits they satisfy; this can be considered a form a structural inheritance, similar to interface implementation in Go, as opposed to the nominal inheritance model of Java and \CC{}. 
+Unlike Java interfaces or \CC{} base classes, \CFA{} types do not explicitly state any inheritance relationship to traits they satisfy; this can be considered a form of structural inheritance, similar to interface implementation in Go, as opposed to the nominal inheritance model of Java and \CC{}. 
 Nominal inheritance can be simulated in \CFA{} using marker variables in traits:
 
@@ -186,5 +190,5 @@
 
 Traits, however, are significantly more powerful than nominal-inheritance interfaces; firstly, due to the scoping rules of the declarations that satisfy a trait's type assertions, a type may not satisfy a trait everywhere that that type is declared, as with !char! and the !nominal! trait above. 
-Secondly, because \CFA{} is not object-oriented and types do not have a closed set of methods, existing C library types can be extended to implement a trait simply by writing the requisite functions. 
+Secondly, because \CFA{} is not object-oriented and types do not have a closed set of methods, existing C library types can be extended to implement a trait simply by writing the requisite functions\footnote{\CC{} only allows partial extension of C types, because constructors, destructors, conversions, and the assignment, indexing, and function-call operators may only be defined in a class; \CFA{} does not have any of these restrictions.}. 
 Finally, traits may be used to declare a relationship among multiple types, a property that may be difficult or impossible to represent in nominal-inheritance type systems\footnote{This example uses \CFA{}'s reference types, described in Section~\ref{type-features-sec}.}: 
 
@@ -206,42 +210,42 @@
 \end{cfa}
 
-In the example above, !(list_iterator, int)! satisfies !pointer_like! by the user-defined dereference function, and !(list_iterator, list)! also satisfies !pointer_like! by the built-in dereference operator for pointers. 
+In this example above, !(list_iterator, int)! satisfies !pointer_like! by the user-defined dereference function, and !(list_iterator, list)! also satisfies !pointer_like! by the built-in dereference operator for pointers. 
 Given a declaration !list_iterator it!, !*it! can be either an !int! or a !list!, with the meaning disambiguated by context (\eg{} !int x = *it;! interprets !*it! as !int!, while !(*it).value = 42;! interprets !*it! as !list!). 
 While a nominal-inheritance system with associated types could model one of those two relationships by making !El! an associated type of !Ptr! in the !pointer_like! implementation, few such systems could model both relationships simultaneously. 
 
 The flexibility of \CFA{}'s implicit trait-satisfaction mechanism provides programmers with a great deal of power, but also blocks some optimization approaches for expression resolution. 
-The ability of types to begin or cease to satisfy traits when declarations go into or out of scope makes caching of trait satisfaction judgements difficult, and the ability of traits to take multiple type parameters can lead to a combinatorial explosion of work in any attempt to pre-compute trait satisfaction relationships. 
-
-\subsection{Implicit Conversions} \label{implicit-conv-sec}
-
-In addition to the multiple interpretations of an expression produced by name overloading and polymorphic functions, for backward compatibility \CFA{} must support all of the implicit conversions present in C, producing further candidate interpretations for expressions. 
-As mentioned above, C does not have an inheritance hierarchy of types, but the C standard's rules for the ``usual arithmetic conversions'\cit{} define which of the built-in types are implicitly convertible to which other types, and the relative cost of any pair of such conversions from a single source type. 
+The ability of types to begin or cease to satisfy traits when declarations go into or out of scope makes caching of trait satisfaction judgments difficult, and the ability of traits to take multiple type parameters can lead to a combinatorial explosion of work in any attempt to pre-compute trait satisfaction relationships. 
+
+\section{Implicit Conversions} \label{implicit-conv-sec}
+
+In addition to the multiple interpretations of an expression produced by name overloading and polymorphic functions, \CFA{} must support all of the implicit conversions present in C for backward compatibility, producing further candidate interpretations for expressions. 
+As mentioned above, C does not have an inheritance hierarchy of types, but the C standard's rules for the ``usual arithmetic conversions'' \cite[\S{}6.3.1.8]{C11} define which of the built-in types are implicitly convertible to which other types, as well as which implicit conversions to apply for mixed arguments to binary operators. 
 \CFA{} adds rules to the usual arithmetic conversions defining the cost of binding a polymorphic type variable in a function call; such bindings are cheaper than any \emph{unsafe} (narrowing) conversion, \eg{} !int! to !char!, but more expensive than any \emph{safe} (widening) conversion, \eg{} !int! to !double!. 
-One contribution of this thesis, discussed in Section \TODO{add to resolution chapter}, is a number of refinements to this cost model to more efficiently resolve polymorphic function calls. 
-
-The expression resolution problem which is the focus of Chapter~\ref{resolution-chap} is to find the unique minimal-cost interpretation of each expression in the program, where all identifiers must be matched to a declaration, and implicit conversions or polymorphic bindings of the result of an expression may increase the cost of the expression. 
-While semantically valid \CFA{} code always has such a unique minimal-cost interpretation, \CFACC{} must also be able to detect and report as errors expressions which have either no interpretation or multiple ambiguous minimal-cost interpretations. 
+One contribution of this thesis, discussed in Section~\ref{conv-cost-sec}, is a number of refinements to this cost model to more efficiently resolve polymorphic function calls. 
+
+The expression resolution problem, which is the focus of Chapter~\ref{resolution-chap}, is to find the unique minimal-cost interpretation of each expression in the program, where all identifiers must be matched to a declaration, and implicit conversions or polymorphic bindings of the result of an expression may increase the cost of the expression. 
+While semantically valid \CFA{} code always has such a unique minimal-cost interpretation, \CFACC{} must also be able to detect and report as errors expressions that have either no interpretation or multiple ambiguous minimal-cost interpretations. 
 Note that which subexpression interpretation is minimal-cost may require contextual information to disambiguate. 
 For instance, in the example in Section~\ref{overloading-sec}, !max(max, -max)! cannot be unambiguously resolved, but !int m = max(max, -max)! has a single minimal-cost resolution. 
-While the interpretation !int m = (int)max((double)max, -(double)max)! is also a valid interpretation, it is not minimal-cost due to the unsafe cast from the !double! result of !max! to !int!\footnote{The two \lstinline{double} casts function as type ascriptions selecting \lstinline{double max} rather than casts from \lstinline{int max} to \lstinline{double}, and as such are zero-cost.}. 
+While the interpretation !int m = (int)max((double)max, -(double)max)! is also a valid interpretation, it is not minimal-cost due to the unsafe cast from the !double! result of !max! to !int!\footnote{The two \lstinline{double} casts function as type ascriptions selecting \lstinline{double max} rather than casts from \lstinline{int max} to \lstinline{double}, and as such are zero-cost. The \lstinline{int} to \lstinline{double} conversion could be forced if desired with two casts: \lstinline{(double)(int)max}}. 
 These contextual effects make the expression resolution problem for \CFA{} both theoretically and practically difficult, but the observation driving the work in Chapter~\ref{resolution-chap} is that of the many top-level expressions in a given program, most are straightforward and idiomatic so that programmers writing and maintaining the code can easily understand them; it follows that effective heuristics for common cases can bring down compiler runtime enough that a small proportion of harder-to-resolve expressions does not inordinately increase overall compiler runtime or memory usage.
 
-\subsection{Type Features} \label{type-features-sec}
-
-The name overloading and polymorphism features of \CFA{} have the greatest effect on language design and compiler runtime, but there are a number of other features in the type system which have a smaller effect but are useful for code examples. 
+\section{Type Features} \label{type-features-sec}
+
+The name overloading and polymorphism features of \CFA{} have the greatest effect on language design and compiler runtime, but there are a number of other features in the type system that have a smaller effect but are useful for code examples. 
 These features are described here. 
 
-\subsubsection{Reference Types}
-
-One of the key ergonomic improvements in \CFA{} is reference types, designed and implemented by Robert Schluntz\cite{Schluntz17}. 
+\subsection{Reference Types}
+
+One of the key ergonomic improvements in \CFA{} is reference types, designed and implemented by Robert Schluntz \cite{Schluntz17}. 
 Given some type !T!, a !T&! (``reference to !T!'') is essentially an automatically dereferenced pointer. 
-These types allow seamless pass-by-reference for function parameters, without the extraneous dereferencing syntax present in C; they also allow easy easy aliasing of nested values with a similarly convenient syntax. 
-A particular improvement is removing syntactic special cases for operators which take or return mutable values; for example, the use !a += b! of a compound assignment operator now matches its signature, !int& ?+=?(int&, int)!, as opposed to the previous syntactic special cases to automatically take the address of the first argument to !+=! and to mark its return value as mutable.
-
-The C standard makes heavy use of the concept of \emph{lvalue}, an expression with a memory address; its complement, \emph{rvalue} (a non-addressable expression) is not explicitly named. 
-In \CFA{}, the distinction between lvalue and rvalue can be reframed in terms of reference and non-reference types, with the benefit of being able to express the difference in user code. 
+These types allow seamless pass-by-reference for function parameters, without the extraneous dereferencing syntax present in C; they also allow easy aliasing of nested values with a similarly convenient syntax. 
+A particular improvement is removing syntactic special cases for operators that take or return mutable values; for example, the use !a += b! of a compound assignment operator now matches its signature, !int& ?+=?(int&, int)!, as opposed to the syntactic special cases in earlier versions of \CFA{} to automatically take the address of the first argument to !+=! and to mark its return value as mutable.
+
+The C standard makes heavy use of the concept of \emph{lvalue}, an expression with a memory address; its complement, \emph{rvalue} (a non-addressable expression) is not explicitly named in the standard. 
+In \CFA{}, the distinction between lvalue and rvalue can be re-framed in terms of reference and non-reference types, with the benefit of being able to express the difference in user code. 
 \CFA{} references preserve the existing qualifier-dropping implicit lvalue-to-rvalue conversion from C (\eg{} a !const volatile int&! can be implicitly copied to a bare !int!)
-To make reference types more easily usable in legacy pass-by-value code, \CFA{} also adds an implicit rvalue-to-lvalue conversion, implemented by storing the value in a fresh compiler-generated temporary variable and passing a reference to that temporary. 
-To mitigate the ``!const! hell'' problem present in \CC{}, there is also a qualifier-dropping lvalue-to-lvalue conversion, also implemented by copying into a temporary:
+To make reference types more easily usable in legacy pass-by-value code, \CFA{} also adds an implicit rvalue-to-lvalue conversion, implemented by storing the value in a compiler-generated temporary variable and passing a reference to that temporary. 
+To mitigate the ``!const! hell'' problem present in \CC{}, there is also a qualifier-dropping lvalue-to-lvalue conversion implemented by copying into a temporary:
 
 \begin{cfa}
@@ -259,5 +263,5 @@
 The primary issue with \CC{} references is that it is impossible to extract the address of the reference variable rather than the address of the referred-to variable. 
 This breaks a number of the usual compositional properties of the \CC{} type system, \eg{} a reference cannot be re-bound to another variable, nor is it possible to take a pointer to, array of, or reference to a reference. 
-\CFA{} supports all of these use cases \TODO{test array} without further added syntax. 
+\CFA{} supports all of these use cases without further added syntax. 
 The key to this syntax-free feature support is an observation made by the author that the address of a reference is a lvalue. 
 In C, the address-of operator !&x! can only be applied to lvalue expressions, and always produces an immutable rvalue; \CFA{} supports reference re-binding by assignment to the address of a reference, and pointers to references by repeating the address-of operator:
@@ -272,7 +276,7 @@
 For better compatibility with C, the \CFA{} team has chosen not to differentiate function overloads based on top-level reference types, and as such their contribution to the difficulty of \CFA{} expression resolution is largely restricted to the implementation details of normalization conversions and adapters. 
 
-\subsubsection{Resource Management}
-
-\CFA{} also supports the RAII (``Resource Acquisition is Initialization'') idiom originated by \CC{}, thanks to the object lifetime work of Robert Schluntz\cite{Schluntz17}. 
+\subsection{Resource Management}
+
+\CFA{} also supports the RAII (``Resource Acquisition is Initialization'') idiom originated by \CC{}, thanks to the object lifetime work of Robert Schluntz \cite{Schluntz17}. 
 This idiom allows a safer and more principled approach to resource management by tying acquisition of a resource to object initialization, with the corresponding resource release executed automatically at object finalization. 
 A wide variety of conceptual resources may be conveniently managed by this scheme, including heap memory, file handles, and software locks. 
@@ -325,31 +329,36 @@
 \end{cfa}
 
-\subsubsection{Tuple Types}
+\subsection{Tuple Types}
 
 \CFA{} adds \emph{tuple types} to C, a syntactic facility for referring to lists of values anonymously or with a single identifier. 
 An identifier may name a tuple, a function may return one, and a tuple may be implicitly \emph{destructured} into its component values. 
 The implementation of tuples in \CFACC{}'s code generation is based on the generic types introduced in Chapter~\ref{generic-chap}, with one compiler-generated generic type for each tuple arity. 
-This allows tuples to take advantage of the same runtime optimizations available to generic types, while reducing code bloat. 
-An extended presentation of the tuple features of \CFA{} can be found in \cite{Moss18}, but the following example shows the basics:
-
-\begin{cfa}
-[char, char] x = ['!', '?']; $\C{// (1); tuple type and expression syntax}$
-int x = 2; $\C{// (2)}$
+This reuse allows tuples to take advantage of the same runtime optimizations available to generic types, while reducing code bloat. 
+An extended presentation of the tuple features of \CFA{} can be found in \cite{Moss18}, but the following example demonstrates the basic features:
+
+\begin{cfa}
+[char, char] x$\(_1\)$ = ['!', '?']; $\C{// tuple type and expression syntax}$
+int x$\(_2\)$ = 2;
 
 forall(otype T)
-[T, T] swap( T a, T b ) { $\C{// (3)}$
+[T, T] swap$\(_1\)$( T a, T b ) {
 	return [b, a]; $\C{// one-line swap syntax}$
 }
 
-x = swap( x ); $\C{// destructure [char, char] x into two elements}$
-$\C{// cannot use int x, not enough arguments}$
-
-void swap( int, char, char ); $\C{// (4)}$
-
-swap( x, x ); $\C{// (4) on (2), (1)}$
-$\C{// not (3) on (2), (2) due to polymorphism cost}$
+x = swap( x ); $\C{// destructure x\(_1\) into two elements}$
+$\C{// cannot use x\(_2\), not enough arguments}$
+
+void swap$\(_2\)$( int, char, char );
+
+swap( x, x ); $\C{// swap\(_2\)( x\(_2\), x\(_1\) )}$
+$\C{// not swap\(_1\)( x\(_2\), x\(_2\) ) due to polymorphism cost}$
 \end{cfa}
 
 Tuple destructuring breaks the one-to-one relationship between identifiers and values. 
-This precludes some argument-parameter matching strategies for expression resolution, as well as cheap interpretation filters based on comparing number of parameters and arguments. 
-As an example, in the call to !swap( x, x )! above, the second !x! can be resolved starting at the second or third parameter of !swap!, depending which interpretation of !x! was chosen for the first argument.
+Hence, some argument-parameter matching strategies for expression resolution are precluded, as well as cheap interpretation filters based on comparing number of parameters and arguments. 
+As an example, in the call to !swap( x, x )! above, the second !x! can be resolved starting at the second or third parameter of !swap!$_2$, depending which interpretation of !x! is chosen for the first argument.
+
+\section{Conclusion}
+
+\CFA{} adds a significant number of features to standard C, increasing the expressivity and re-usability of \CFA{} code while maintaining backwards compatibility for both code and larger language paradigms. 
+This flexibility does incur significant added compilation costs, however, the mitigation of which are the primary concern of this thesis.
Index: doc/theses/aaron_moss_PhD/phd/conclusion.tex
===================================================================
--- doc/theses/aaron_moss_PhD/phd/conclusion.tex	(revision 114bde658eed1edf31cde78bd21584a1ced7df2e)
+++ doc/theses/aaron_moss_PhD/phd/conclusion.tex	(revision 92d41a4af1542b1fcfd3bacde48933e4c8519366)
@@ -1,3 +1,13 @@
 \chapter{Conclusion}
 
-Wrap it up --- Done, done done.
+Decades after its first standardization, the C language remains a widely-used tool and a vital part of the software development landscape. 
+The \CFA{} language under development at the University of Waterloo represents an evolutionary modernization of C with expressive modern language features paired with strong C backwards-compatibility. 
+This thesis has contributed to these project goals in a variety of ways, including the addition of a generic-types language feature (Chapter~\ref{generic-chap}) and refinement of the \CFA{} overload selection rules to produce a more expressive and intuitive model (Section~\ref{conv-cost-sec}). 
+Based on the technical contribution of the resolver prototype system (Section~\ref{rp-features-sec}), I have also made significant improvements to \CFA{} compilation performance, including un-combined bottom-up expression traversal (Section~\ref{arg-parm-matching-sec}), deferred-cached assertion satisfaction (Section~\ref{assn-sat-sec}), and a novel persistent union-find type environment data structure (Section~\ref{env-persistent-union-find}). 
+The combination of these practical improvements and added features significantly improve the viability of \CFA{} as a practical programming language.
+
+Further improvements to the \CFA{} type-system are still possible, however. 
+One area suggested by this work is development of a scheme for user-defined conversions; to integrate properly with the \CFA{} conversion model, there would need to be a distinction between safe and unsafe conversions, and possibly a way to denote conversions as explicit-only or non-chainable. 
+Another place for ongoing effort is improvement of compilation performance; I believe the most promising direction for that is rebuilding the \CFA{} compiler on a different framework than Bilson's \CFACC{}. 
+The resolver prototype presented in this work has good performance and already has the basics of \CFA{} semantics implemented, as well as many of the necessary core data structures, and would be a viable candidate for a new compiler architecture. 
+An alternate approach would be to fork an existing C compiler such as Clang~\cite{Clang}, which would need to be modified to use one of the resolution algorithms discussed here, as well as various other features introduced by Bilson~\cite{Bilson03}.
Index: doc/theses/aaron_moss_PhD/phd/evaluation/algo-summary.dat
===================================================================
--- doc/theses/aaron_moss_PhD/phd/evaluation/algo-summary.dat	(revision 92d41a4af1542b1fcfd3bacde48933e4c8519366)
+++ doc/theses/aaron_moss_PhD/phd/evaluation/algo-summary.dat	(revision 92d41a4af1542b1fcfd3bacde48933e4c8519366)
@@ -0,0 +1,25 @@
+"algorithm"	"tests completed"	"avg. peak memory (MB)"	"avg. runtime (ms)"	"style"
+"\\textsc{bu-imm-bas}"	126	6	228	1
+"\\textsc{bu-imm-inc}"	124	15	281	1
+"\\textsc{bu-imm-per}"	128	6	109	1
+"\\textsc{bu-def-bas}"	129	6	143	1
+"\\textsc{bu-def-inc}"	126	7	213	1
+"\\textsc{bu-def-per}"	129	5	78	1
+"\\textsc{bu-dca-bas}"	131	6	151	1
+"\\textsc{bu-dca-inc}"	130	7	208	1
+"\\textsc{bu-dca-per}"	131	5	80	1
+"\\textsc{co-imm-bas}"	104	13	1883	2
+"\\textsc{co-imm-inc}"	102	61	3039	2
+"\\textsc{co-imm-per}"	105	13	1420	2
+"\\textsc{co-def-bas}"	102	14	1672	2
+"\\textsc{co-def-inc}"	100	50	2845	2
+"\\textsc{co-def-per}"	102	12	1317	2
+"\\textsc{co-dca-bas}"	103	14	1737	2
+"\\textsc{co-dca-inc}"	101	50	2824	2
+"\\textsc{co-dca-per}"	103	12	1339	2
+"\\textsc{td-def-bas}"	67	18	189	3
+"\\textsc{td-def-inc}"	66	40	263	3
+"\\textsc{td-imm-bas}"	64	125	2620	3
+"\\textsc{td-imm-inc}"	62	322	2717	3
+"\\textsc{td-dca-bas}"	67	18	191	3
+"\\textsc{td-dca-inc}"	66	40	258	3
Index: doc/theses/aaron_moss_PhD/phd/evaluation/algo-summary.gp
===================================================================
--- doc/theses/aaron_moss_PhD/phd/evaluation/algo-summary.gp	(revision 92d41a4af1542b1fcfd3bacde48933e4c8519366)
+++ doc/theses/aaron_moss_PhD/phd/evaluation/algo-summary.gp	(revision 92d41a4af1542b1fcfd3bacde48933e4c8519366)
@@ -0,0 +1,54 @@
+# set terminal pdfcairo size 6.25,2.125
+# set output "tests-completed.pdf"
+set terminal pslatex size 6.25,3.25 color solid
+set output BUILD."tests-completed.tex"
+
+set linetype 1 lc rgb 'black'
+set linetype 2 lc rgb 'red'
+set linetype 3 lc rgb 'blue'
+set linetype 4 lc rgb 'green'
+
+set style data histogram
+set style fill pattern 4 border lt -1
+unset key
+set xtics rotate #by 45 offset -7.5,-4.5
+
+# TESTS COMPLETED #
+set yrange [0:131]
+
+plot 'evaluation/algo-summary.dat' using ($5 == 1 ? $2 : 1/0):xtic(1) with boxes, \
+	'' using ($5 == 2 ? $2 : 1/0):xtic(1) with boxes, \
+	'' using ($5 == 3 ? $2 : 1/0):xtic(1) with boxes 
+
+# BU AVG. RUNTIME #
+set output BUILD."bu-runtime.tex"
+
+unset yrange
+set ylabel "ms"
+
+plot 'evaluation/bu-summary.dat' using 3:xtic(1) with boxes
+
+# AVG. RUNTIME #
+set output BUILD."avg-runtime.tex"
+
+plot 'evaluation/algo-summary.dat' using ($5 == 1 ? $4 : 1/0):xtic(1) with boxes, \
+	'' using ($5 == 2 ? $4 : 1/0):xtic(1) with boxes, \
+	'' using ($5 == 3 ? $4 : 1/0):xtic(1) with boxes
+
+# BU AVG. PEAK MEMORY #
+set output BUILD."bu-peak-mem.tex"
+
+set ylabel "MB"
+
+plot 'evaluation/bu-summary.dat' using 2:xtic(1) with boxes
+
+# AVG. PEAK MEMORY #
+set output BUILD."avg-peak-mem.tex"
+
+set yrange [0:80]
+
+set label "125" at 20.25,82
+set label "322" at 21.75,82
+plot 'evaluation/algo-summary.dat' using ($5 == 1 ? $3 : 1/0):xtic(1) with boxes, \
+	'' using ($5 == 2 ? $3 : 1/0):xtic(1) with boxes, \
+	'' using ($5 == 3 ? $3 : 1/0):xtic(1) with boxes
Index: doc/theses/aaron_moss_PhD/phd/evaluation/bu-summary.dat
===================================================================
--- doc/theses/aaron_moss_PhD/phd/evaluation/bu-summary.dat	(revision 92d41a4af1542b1fcfd3bacde48933e4c8519366)
+++ doc/theses/aaron_moss_PhD/phd/evaluation/bu-summary.dat	(revision 92d41a4af1542b1fcfd3bacde48933e4c8519366)
@@ -0,0 +1,10 @@
+"algorithm"	"avg. peak memory (MB)"	"avg. runtime (ms)"
+"\\textsc{bu-imm-bas}"	229	15906
+"\\textsc{bu-imm-inc}"	162	3759
+"\\textsc{bu-imm-per}"	61	2464
+"\\textsc{bu-def-bas}"	8	681
+"\\textsc{bu-def-inc}"	16	881
+"\\textsc{bu-def-per}"	8	381
+"\\textsc{bu-dca-bas}"	7	621
+"\\textsc{bu-dca-inc}"	16	852
+"\\textsc{bu-dca-per}"	7	378
Index: doc/theses/aaron_moss_PhD/phd/evaluation/cfa-cc/cfa-bu.csv
===================================================================
--- doc/theses/aaron_moss_PhD/phd/evaluation/cfa-cc/cfa-bu.csv	(revision 92d41a4af1542b1fcfd3bacde48933e4c8519366)
+++ doc/theses/aaron_moss_PhD/phd/evaluation/cfa-cc/cfa-bu.csv	(revision 92d41a4af1542b1fcfd3bacde48933e4c8519366)
@@ -0,0 +1,56 @@
+"test","user(s)","sys(s)","wall(s)","max-mem(KB)","user(s)","sys(s)","wall(s)","max-mem(KB)","user(s)","sys(s)","wall(s)","max-mem(KB)"
+"abs",114.24,1.23,115.63,303272,110.56,1.43,112.18,303272,110.70,1.33,112.22,303272
+"alloc",39.04,1.28,40.40,210832,39.08,1.29,40.45,210880,38.60,1.40,40.08,210968
+"array",2.39,0.02,2.43,23656,2.42,0.02,2.47,23656,2.42,0.04,2.48,23656
+"ato",14.68,0.18,14.90,143076,14.74,0.14,14.93,143076,14.93,0.16,15.13,143076
+"cast",2.38,0.02,2.43,23584,2.37,0.03,2.42,23584,2.40,0.03,2.46,23584
+"complex",32.30,1.12,33.50,163508,32.36,1.17,33.61,163508,32.41,1.16,33.70,163508
+"ctor-autogen",5.64,0.09,5.77,48612,5.67,0.06,5.77,48612,5.66,0.06,5.74,48612
+"declarationSpecifier",3.36,0.04,3.42,30728,3.36,0.04,3.43,30728,3.34,0.06,3.43,30728
+"designations",3.27,0.05,3.34,31008,3.25,0.03,3.32,31008,3.23,0.05,3.30,31008
+"div",16.50,0.22,16.77,169004,16.72,0.22,16.98,169004,16.59,0.23,16.92,169004
+"dtor-early-exit",33.96,0.35,34.39,338952,33.85,0.39,34.32,338952,34.02,0.38,34.46,338952
+"enum",2.40,0.02,2.45,23788,2.41,0.00,2.44,23788,2.37,0.05,2.50,23788
+"extension",2.81,0.03,2.87,26940,2.80,0.04,2.87,26920,2.81,0.02,2.86,26940
+"fstream_test",14.75,0.18,14.97,142828,14.86,0.30,15.20,142828,14.67,0.19,14.90,142828
+"genericUnion",2.75,0.06,2.85,26052,2.79,0.02,2.84,26052,2.76,0.05,2.85,26052
+"globals",12.85,0.14,13.02,117664,12.86,0.14,13.04,117664,12.82,0.13,12.99,117664
+"gmp",59.71,0.75,60.62,499088,59.94,0.77,60.89,499088,59.90,0.73,60.72,499088
+"hello",9.11,0.09,9.24,119304,9.07,0.11,9.22,119304,9.05,0.14,9.22,119304
+"identFuncDeclarator",2.41,0.04,2.47,24092,2.36,0.04,2.44,24092,2.36,0.05,2.44,24092
+"identity",18.10,0.22,18.37,141104,18.26,0.18,18.48,141104,18.12,0.18,18.35,141104
+"identParamDeclarator",2.42,0.04,2.49,24012,2.41,0.02,2.46,24012,2.43,0.03,2.49,24012
+"init_once",3.12,0.05,3.19,29200,3.13,0.05,3.22,29200,3.15,0.04,3.23,29200
+"io",586.06,3.42,590.02,1244220,580.73,2.39,583.93,1244220,580.98,2.39,584.17,1244220
+"KRfunctions",2.44,0.02,2.50,24464,2.42,0.04,2.49,24464,2.42,0.03,2.48,24464
+"labelledExit",2.55,0.02,2.58,24304,2.57,0.03,2.64,24304,2.52,0.03,2.58,24304
+"limits",2.86,0.04,2.92,26276,2.84,0.04,2.90,26276,2.88,0.01,2.94,26276
+"math1",417.46,2.85,421.02,695084,418.34,2.85,421.72,695084,417.43,2.86,420.91,695084
+"math2",540.86,4.60,545.99,599992,540.88,4.69,546.34,599960,543.80,5.16,549.67,599972
+"math3",134.92,0.71,135.83,358276,135.36,0.82,136.33,358276,134.54,0.72,135.41,358276
+"maybe",3.52,0.03,3.59,31572,3.62,0.03,3.67,31572,3.58,0.02,3.63,31572
+"memberCtors",2.87,0.03,2.93,27776,2.91,0.02,2.96,27776,2.87,0.06,2.96,27776
+"minmax",83.66,0.42,84.22,258132,84.16,0.46,84.73,258132,84.24,0.42,84.79,258132
+"numericConstants",2.38,0.03,2.45,23624,2.36,0.04,2.43,23624,2.46,0.02,2.52,23624
+"polymorphism",2.45,0.02,2.49,24340,2.46,0.03,2.52,24340,2.50,0.02,2.57,24340
+"quoted_keyword",7.32,0.10,7.47,109948,7.29,0.13,7.45,109948,7.31,0.09,7.44,109948
+"random",11.99,0.18,12.22,120752,12.06,0.14,12.26,120752,11.86,0.15,12.04,120752
+"rational",96.76,0.74,97.66,540132,96.02,0.66,96.88,540184,96.15,1.30,97.60,540184
+"references",2.69,0.04,2.77,27100,2.72,0.04,2.78,27100,2.68,0.05,2.75,27100
+"result",5.57,0.10,5.71,65324,5.55,0.04,5.62,65440,5.57,0.11,5.74,65324
+"searchsort",42.44,0.50,43.01,395300,42.16,0.59,42.82,395300,42.23,0.54,42.85,395300
+"shortCircuit",5.54,0.09,5.66,65200,5.55,0.08,5.66,65200,5.59,0.07,5.70,65200
+"simpleGenericTriple",3.04,0.04,3.13,29908,3.10,0.04,3.17,29908,3.10,0.04,3.17,29908
+"sum",67.21,0.67,68.01,367132,67.27,0.69,68.10,367132,67.46,0.67,68.24,367132
+"swap",59.55,0.51,60.18,212760,59.42,0.53,60.07,212776,60.51,0.38,61.01,212760
+"tupleAssign",53.58,0.44,54.14,296536,54.20,0.40,54.69,296536,54.14,0.41,54.64,296536
+"tupleCast",2.39,0.04,2.47,24100,2.38,0.03,2.43,24100,2.43,0.02,2.48,24100
+"tupleFunction",3.01,0.04,3.09,28708,3.00,0.02,3.06,28708,3.01,0.03,3.07,28708
+"tupleMember",2.92,0.04,2.99,28412,2.95,0.02,3.00,28412,2.94,0.03,2.99,28412
+"tuplePolymorphism",3.44,0.05,3.52,32912,3.41,0.05,3.49,32912,3.38,0.07,3.48,32912
+"tupleVariadic",3.15,0.04,3.23,29980,3.10,0.05,3.19,29980,3.11,0.04,3.18,29980
+"typedefRedef",2.35,0.02,2.42,23576,2.37,0.01,2.42,23576,2.34,0.04,2.41,23576
+"typeof",2.43,0.02,2.49,23592,2.40,0.02,2.46,23592,2.44,0.04,2.50,23592
+"user_literals",16.25,0.22,16.51,172736,16.13,0.21,16.38,172736,16.16,0.20,16.41,172736
+"variableDeclarator",2.56,0.02,2.61,24088,2.56,0.02,2.62,24088,2.60,0.02,2.69,24088
+"voidPtr",2.35,0.03,2.41,23632,2.36,0.02,2.41,23632,2.36,0.02,2.46,23632
Index: doc/theses/aaron_moss_PhD/phd/evaluation/cfa-cc/cfa-co.csv
===================================================================
--- doc/theses/aaron_moss_PhD/phd/evaluation/cfa-cc/cfa-co.csv	(revision 92d41a4af1542b1fcfd3bacde48933e4c8519366)
+++ doc/theses/aaron_moss_PhD/phd/evaluation/cfa-cc/cfa-co.csv	(revision 92d41a4af1542b1fcfd3bacde48933e4c8519366)
@@ -0,0 +1,56 @@
+"test","user(s)","sys(s)","wall(s)","max-mem(KB)","user(s)","sys(s)","wall(s)","max-mem(KB)","user(s)","sys(s)","wall(s)","max-mem(KB)"
+"abs",104.95,0.88,106.03,270592,105.08,0.82,106.11,270592,107.54,1.38,109.16,270620
+"alloc",31.55,0.19,31.80,81832,31.36,0.17,31.59,81832,31.48,0.19,31.73,81832
+"array",2.26,0.03,2.32,21404,2.27,0.02,2.32,21404,2.25,0.04,2.32,21404
+"ato",15.50,0.11,15.63,70212,15.46,0.12,15.62,70212,15.51,0.12,15.68,70212
+"cast",2.24,0.02,2.32,21352,2.23,0.02,2.28,21352,2.22,0.04,2.29,21352
+"complex",26.56,0.14,26.76,86812,26.74,0.13,26.91,86812,26.48,0.16,26.70,86812
+"ctor-autogen",5.59,0.06,5.68,34052,5.61,0.07,5.78,34052,5.60,0.05,5.68,34052
+"declarationSpecifier",3.12,0.04,3.19,24828,3.10,0.02,3.15,24828,3.14,0.04,3.21,24828
+"designations",3.28,0.01,3.33,24564,3.31,0.04,3.39,24564,3.29,0.02,3.34,24564
+"div",18.96,0.25,19.26,161136,18.90,0.21,19.16,161136,19.61,0.30,19.95,161136
+"dtor-early-exit",37.12,0.19,37.37,126132,37.00,0.20,37.33,126132,37.12,0.17,37.37,126132
+"enum",2.24,0.04,2.32,21508,2.26,0.03,2.31,21508,2.26,0.03,2.33,21508
+"extension",2.70,0.01,2.74,22548,2.67,0.06,2.75,22548,2.73,0.02,2.80,22548
+"fstream_test",15.86,0.13,16.03,108772,15.82,0.11,15.98,108772,15.99,0.14,16.19,108772
+"genericUnion",2.68,0.06,2.76,23228,2.69,0.06,2.85,23228,2.75,0.02,2.86,23228
+"globals",13.24,0.11,13.44,56368,13.20,0.08,13.40,56368,13.37,0.11,13.51,56368
+"gmp",59.08,0.30,59.45,163596,59.17,0.31,59.62,163596,58.82,0.27,59.20,163596
+"hello",9.49,0.07,9.60,50232,9.52,0.07,9.64,50232,9.54,0.07,9.69,50232
+"identFuncDeclarator",2.24,0.02,2.35,21776,2.28,0.02,2.38,21776,2.28,0.03,2.39,21776
+"identity",18.45,0.12,18.67,69532,18.48,0.10,18.63,69532,18.45,0.09,18.59,69532
+"identParamDeclarator",2.22,0.04,2.28,21724,2.28,0.03,2.35,21724,2.25,0.02,2.29,21724
+"init_once",3.08,0.03,3.15,23276,3.09,0.03,3.15,23276,3.07,0.05,3.15,23276
+"io",635.68,4.08,640.57,1059436,631.54,2.88,635.48,1059436,630.14,2.36,633.57,1059324
+"KRfunctions",2.32,0.02,2.36,21708,2.33,0.01,2.37,21708,2.32,0.02,2.37,21708
+"labelledExit",2.36,0.04,2.44,21632,2.37,0.04,2.45,21632,2.37,0.04,2.44,21632
+"limits",2.74,0.04,2.81,21792,2.81,0.03,2.87,21792,2.77,0.02,2.83,21792
+"math1",403.29,1.47,405.53,531152,408.18,1.48,410.07,530888,405.02,1.87,407.62,530948
+"math2",531.29,2.34,534.32,542820,531.37,4.82,537.06,542864,532.93,5.26,539.07,542864
+"math3",130.26,0.57,131.05,247188,130.42,0.52,131.17,247188,130.06,0.56,130.90,247188
+"maybe",3.34,0.03,3.40,25692,3.33,0.04,3.41,25692,3.34,0.02,3.38,25692
+"memberCtors",2.78,0.03,2.83,23072,2.82,0.02,2.88,23072,2.78,0.04,2.84,23072
+"minmax",81.00,0.30,81.41,180000,80.71,0.34,81.20,180000,80.99,0.35,81.49,180000
+"numericConstants",2.23,0.01,2.28,21412,2.22,0.02,2.27,21412,2.22,0.02,2.29,21412
+"polymorphism",2.38,0.03,2.44,21928,2.39,0.02,2.44,21928,2.42,0.02,2.46,21928
+"quoted_keyword",7.00,0.10,7.14,99348,6.89,0.10,7.05,99348,6.95,0.07,7.05,99348
+"random",11.91,0.07,12.02,56468,11.81,0.12,11.95,56468,11.94,0.10,12.09,56468
+"rational",113.34,0.74,114.24,361784,113.25,0.53,114.00,361784,113.28,0.60,114.04,361784
+"references",2.68,0.03,2.74,22716,2.66,0.02,2.72,22716,2.69,0.03,2.75,22716
+"result",5.29,0.04,5.36,49108,5.27,0.04,5.34,49108,5.26,0.04,5.34,49108
+"searchsort",42.62,0.23,42.91,121216,42.57,0.22,42.90,121216,42.58,0.23,42.88,121216
+"shortCircuit",5.46,0.04,5.54,36408,5.50,0.06,5.59,36408,5.51,0.04,5.60,36408
+"simpleGenericTriple",3.01,0.04,3.09,25108,3.01,0.04,3.08,25108,3.02,0.02,3.06,25108
+"sum",68.70,0.50,69.33,338964,68.62,0.52,69.28,338964,68.65,0.53,69.33,338964
+"swap",54.78,0.23,55.12,151396,54.40,0.25,54.75,151396,54.88,0.20,55.16,151396
+"tupleAssign",62.12,0.42,62.66,282716,62.27,0.38,62.77,283484,62.07,0.40,62.58,283548
+"tupleCast",2.32,0.04,2.38,21736,2.33,0.04,2.39,21736,2.38,0.02,2.44,21736
+"tupleFunction",3.15,0.04,3.22,23640,3.16,0.03,3.23,23640,3.15,0.02,3.20,23640
+"tupleMember",2.84,0.03,2.90,24056,2.82,0.04,2.89,24056,2.88,0.02,3.00,24056
+"tuplePolymorphism",3.64,0.05,3.73,26232,3.66,0.03,3.73,26232,3.63,0.05,3.70,26232
+"tupleVariadic",3.18,0.03,3.24,24420,3.18,0.04,3.25,24420,3.14,0.04,3.24,24420
+"typedefRedef",2.23,0.04,2.31,21364,2.25,0.03,2.31,21364,2.23,0.02,2.29,21364
+"typeof",2.24,0.03,2.30,21368,2.22,0.02,2.27,21368,2.22,0.02,2.28,21368
+"user_literals",17.16,0.10,17.30,68672,17.22,0.09,17.36,68672,17.17,0.11,17.32,68672
+"variableDeclarator",2.40,0.02,2.48,21808,2.61,0.04,2.68,21808,2.43,0.02,2.48,21808
+"voidPtr",2.22,0.02,2.28,21384,2.22,0.03,2.28,21384,2.26,0.03,2.32,21384
Index: doc/theses/aaron_moss_PhD/phd/evaluation/cfa-cc/cfa-dca.csv
===================================================================
--- doc/theses/aaron_moss_PhD/phd/evaluation/cfa-cc/cfa-dca.csv	(revision 92d41a4af1542b1fcfd3bacde48933e4c8519366)
+++ doc/theses/aaron_moss_PhD/phd/evaluation/cfa-cc/cfa-dca.csv	(revision 92d41a4af1542b1fcfd3bacde48933e4c8519366)
@@ -0,0 +1,56 @@
+"test","user(s)","sys(s)","wall(s)","max-mem(KB)","user(s)","sys(s)","wall(s)","max-mem(KB)","user(s)","sys(s)","wall(s)","max-mem(KB)"
+"abs",57.96,1.48,59.57,416516,58.05,1.34,59.49,416516,58.19,1.43,59.70,416516
+"alloc",92.13,2.96,95.23,362804,92.48,3.05,95.66,362808,92.78,2.96,95.84,362748
+"array",7.26,0.07,7.36,44876,7.27,0.06,7.36,44876,7.29,0.06,7.39,44876
+"ato",23.42,0.25,23.71,241940,23.48,0.22,23.76,241940,23.44,0.24,23.71,241940
+"cast",7.23,0.06,7.33,44788,7.26,0.05,7.34,44788,7.21,0.04,7.28,44788
+"complex",68.73,2.77,71.61,294028,68.56,2.59,71.25,294000,68.59,2.71,71.41,294000
+"ctor-autogen",15.98,0.08,16.10,78088,15.86,0.09,16.00,78088,15.95,0.11,16.08,78088
+"declarationSpecifier",9.66,0.05,9.74,54844,9.62,0.06,9.72,54844,9.80,0.07,9.90,54844
+"designations",9.26,0.08,9.36,54632,9.30,0.06,9.44,54632,9.29,0.08,9.40,54632
+"div",15.84,0.15,16.04,117424,15.94,0.10,16.09,117424,15.81,0.11,15.97,117424
+"dtor-early-exit",43.84,0.42,44.33,553588,44.00,0.51,44.57,553588,44.52,0.56,45.14,553588
+"enum",7.37,0.05,7.46,45076,7.30,0.05,7.38,45076,7.25,0.07,7.41,45076
+"extension",8.31,0.04,8.39,49436,8.19,0.06,8.28,49436,8.18,0.06,8.28,49436
+"fstream_test",21.22,0.22,21.48,197396,21.22,0.23,21.51,197396,21.32,0.19,21.56,197396
+"genericUnion",8.15,0.12,8.30,48068,8.24,0.04,8.32,48068,8.20,0.06,8.29,48068
+"globals",20.90,0.18,21.14,196548,20.70,0.20,20.97,196548,20.72,0.20,20.97,196548
+"gmp",83.92,0.93,84.97,777864,84.64,1.10,85.85,777864,84.04,1.06,85.21,777864
+"hello",16.23,0.16,16.42,197876,16.22,0.17,16.44,197876,16.22,0.16,16.43,197876
+"identFuncDeclarator",7.27,0.05,7.39,45444,7.35,0.04,7.42,45444,7.30,0.05,7.39,45444
+"identity",25.54,0.24,25.84,239256,26.11,0.24,26.41,239256,25.50,0.24,25.79,239256
+"identParamDeclarator",7.24,0.04,7.32,45336,7.25,0.04,7.32,45336,7.21,0.06,7.33,45336
+"init_once",8.85,0.08,8.98,52032,8.88,0.04,8.95,52032,8.82,0.09,8.94,52032
+"io",445.48,2.37,448.41,1630432,444.89,2.32,447.79,1630432,446.49,2.29,449.24,1630432
+"KRfunctions",7.34,0.04,7.42,45964,7.36,0.03,7.42,45964,7.34,0.05,7.43,45964
+"labelledExit",7.57,0.06,7.66,45520,7.51,0.04,7.63,45520,7.49,0.04,7.56,45520
+"limits",8.49,0.06,8.57,48392,8.58,0.06,8.66,48392,8.47,0.05,8.55,48392
+"math1",189.02,1.53,190.80,939712,189.27,1.84,191.36,939712,189.09,1.75,191.11,939712
+"math2",225.14,1.71,227.21,625848,224.28,1.83,226.47,625848,228.43,3.80,232.61,625928
+"math3",103.06,0.68,103.90,538724,103.20,0.62,103.96,538724,102.77,0.67,103.57,538724
+"maybe",10.12,0.04,10.19,56132,10.20,0.06,10.28,56132,10.13,0.05,10.21,56132
+"memberCtors",8.34,0.07,8.45,50108,8.33,0.05,8.41,50108,8.30,0.05,8.38,50108
+"minmax",84.30,0.55,84.99,450004,83.05,0.51,83.70,450004,83.29,0.52,83.92,450004
+"numericConstants",7.28,0.03,7.38,44816,7.31,0.04,7.44,44816,7.22,0.05,7.29,44816
+"polymorphism",7.39,0.03,7.45,45688,7.45,0.05,7.54,45688,7.39,0.05,7.47,45688
+"quoted_keyword",11.72,0.13,11.90,156580,11.70,0.12,11.94,156580,11.67,0.13,11.84,156580
+"random",21.14,0.21,21.40,202944,21.19,0.21,21.45,202944,21.14,0.20,21.38,202944
+"rational",103.33,0.77,104.25,797644,103.52,0.76,104.38,797644,102.50,0.76,103.37,797644
+"references",7.92,0.09,8.03,49176,7.94,0.07,8.05,49176,7.98,0.03,8.03,49176
+"result",13.55,0.11,13.70,99112,13.48,0.15,13.69,99284,13.45,0.12,13.62,99140
+"searchsort",52.09,0.73,52.91,548396,51.91,0.60,52.59,548396,52.40,0.69,53.16,548396
+"shortCircuit",12.26,0.12,12.42,109896,12.23,0.10,12.36,109896,12.20,0.14,12.37,109896
+"simpleGenericTriple",9.10,0.04,9.19,53172,9.12,0.04,9.23,53172,9.09,0.06,9.19,53172
+"sum",52.24,1.06,53.37,771508,51.91,1.14,53.15,771508,52.23,1.17,53.48,771272
+"swap",66.77,0.49,67.35,378312,66.35,0.38,66.85,378312,66.44,0.48,67.02,378312
+"tupleAssign",51.48,0.24,51.82,208520,51.54,0.36,52.01,208520,51.45,0.33,51.87,208520
+"tupleCast",7.35,0.01,7.40,45232,7.30,0.06,7.39,45232,7.33,0.06,7.42,45232
+"tupleFunction",8.73,0.05,8.83,51404,8.71,0.05,8.80,51404,8.66,0.08,8.77,51404
+"tupleMember",8.32,0.07,8.42,49964,8.27,0.07,8.36,49964,8.33,0.04,8.40,49964
+"tuplePolymorphism",9.62,0.07,9.73,56656,9.76,0.06,9.86,56656,9.64,0.08,9.75,56656
+"tupleVariadic",8.78,0.07,8.88,52644,8.80,0.07,8.90,52644,8.80,0.08,8.91,52644
+"typedefRedef",7.24,0.05,7.33,44784,7.24,0.06,7.33,44784,7.27,0.04,7.35,44784
+"typeof",7.26,0.04,7.33,44796,7.20,0.03,7.32,44796,7.14,0.04,7.21,44796
+"user_literals",25.48,0.25,25.77,281096,25.77,0.34,26.16,281096,25.74,0.29,26.08,281096
+"variableDeclarator",7.70,0.05,7.78,45516,7.72,0.08,7.84,45516,7.72,0.07,7.82,45516
+"voidPtr",7.18,0.04,7.26,44880,7.15,0.07,7.25,44880,7.22,0.04,7.32,44880
Index: doc/theses/aaron_moss_PhD/phd/evaluation/cfa-cc/cfa-def.csv
===================================================================
--- doc/theses/aaron_moss_PhD/phd/evaluation/cfa-cc/cfa-def.csv	(revision 92d41a4af1542b1fcfd3bacde48933e4c8519366)
+++ doc/theses/aaron_moss_PhD/phd/evaluation/cfa-cc/cfa-def.csv	(revision 92d41a4af1542b1fcfd3bacde48933e4c8519366)
@@ -0,0 +1,56 @@
+"test","user(s)","sys(s)","wall(s)","max-mem(KB)","user(s)","sys(s)","wall(s)","max-mem(KB)","user(s)","sys(s)","wall(s)","max-mem(KB)"
+"abs",55.58,1.50,57.20,416024,55.50,1.60,57.18,416164,55.75,1.60,57.44,416200
+"alloc",92.40,2.96,95.51,362676,92.28,2.89,95.26,362844,91.31,2.78,94.21,362676
+"array",7.26,0.07,7.43,44808,7.36,0.04,7.43,44808,7.37,0.05,7.45,44808
+"ato",23.45,0.19,23.69,242832,23.50,0.22,23.76,242832,23.26,0.27,23.57,242832
+"cast",7.20,0.06,7.28,44724,7.21,0.04,7.33,44724,7.26,0.04,7.37,44724
+"complex",68.48,2.78,71.37,294008,68.61,2.61,71.33,294008,68.40,2.77,71.27,293936
+"ctor-autogen",15.78,0.10,15.92,77880,15.96,0.11,16.18,77880,15.79,0.11,15.95,77880
+"declarationSpecifier",9.60,0.07,9.70,54808,9.71,0.07,9.83,54808,9.63,0.07,9.73,54808
+"designations",9.31,0.05,9.38,54572,9.43,0.08,9.54,54572,9.32,0.06,9.41,54572
+"div",15.87,0.14,16.08,117256,15.66,0.10,15.80,117256,15.84,0.13,16.07,117256
+"dtor-early-exit",43.35,0.38,43.84,553384,43.42,0.45,44.01,553384,43.29,0.55,43.91,553384
+"enum",7.90,0.07,8.00,45008,7.28,0.02,7.34,45008,7.24,0.05,7.32,45008
+"extension",8.21,0.06,8.31,49288,8.18,0.06,8.28,49288,8.18,0.06,8.28,49288
+"fstream_test",21.38,0.18,21.62,197736,21.54,0.21,21.80,197736,21.30,0.22,21.57,197736
+"genericUnion",8.27,0.03,8.34,47944,8.34,0.04,8.42,47944,8.23,0.05,8.31,47944
+"globals",20.90,0.17,21.11,195892,20.81,0.20,21.05,195892,21.15,0.18,21.45,195892
+"gmp",83.62,1.11,84.83,778984,83.51,1.06,84.68,778984,83.53,1.08,84.72,778984
+"hello",16.18,0.20,16.43,198204,16.24,0.14,16.43,198204,16.22,0.16,16.41,198204
+"identFuncDeclarator",7.28,0.05,7.37,45372,7.22,0.04,7.29,45372,7.21,0.05,7.29,45372
+"identity",25.60,0.21,25.86,238720,25.56,0.20,25.81,238720,25.55,0.20,25.85,238720
+"identParamDeclarator",7.26,0.07,7.36,45276,7.19,0.06,7.30,45276,7.17,0.06,7.26,45276
+"init_once",8.82,0.07,8.99,51956,8.84,0.10,8.98,51956,8.89,0.07,8.99,51956
+"io",445.57,3.73,449.98,1631932,440.46,2.91,444.07,1631932,440.01,2.33,443.03,1631932
+"KRfunctions",7.62,0.05,7.71,45896,7.42,0.05,7.50,45896,7.38,0.08,7.51,45896
+"labelledExit",7.47,0.07,7.57,45460,7.47,0.05,7.55,45460,7.45,0.07,7.57,45460
+"limits",8.47,0.04,8.55,48328,8.44,0.07,8.55,48328,8.52,0.04,8.59,48328
+"math1",188.40,1.72,190.34,939204,190.31,2.30,192.90,939368,187.58,1.63,189.46,939204
+"math2",223.51,1.81,225.68,626860,224.61,1.72,226.56,626860,223.50,1.81,225.61,626860
+"math3",103.71,1.80,105.68,536252,102.20,0.66,103.01,536252,102.27,0.64,103.08,536252
+"maybe",10.36,0.07,10.46,56072,10.04,0.06,10.12,56072,10.14,0.06,10.23,56072
+"memberCtors",8.22,0.06,8.31,50056,8.29,0.06,8.39,50056,8.24,0.05,8.31,50056
+"minmax",83.42,0.47,83.99,450668,84.68,0.60,85.44,450668,82.59,0.61,83.33,450668
+"numericConstants",7.24,0.04,7.31,44756,7.22,0.04,7.30,44756,7.16,0.08,7.28,44756
+"polymorphism",7.38,0.02,7.44,45628,7.37,0.04,7.46,45628,7.39,0.06,7.48,45628
+"quoted_keyword",11.77,0.10,11.91,156728,11.76,0.14,11.94,156728,11.75,0.14,11.92,156728
+"random",21.14,0.22,21.41,203216,21.08,0.27,21.41,203216,21.45,0.22,21.72,203216
+"rational",101.52,0.95,102.59,797316,101.94,0.72,102.76,797316,101.36,0.71,102.19,797316
+"references",8.00,0.06,8.09,49096,7.97,0.05,8.05,49096,7.96,0.07,8.06,49096
+"result",13.43,0.12,13.58,99240,13.43,0.11,13.59,99364,13.42,0.12,13.57,99240
+"searchsort",51.84,0.63,52.55,547896,51.35,0.60,52.02,547896,51.86,0.66,52.58,547896
+"shortCircuit",12.19,0.13,12.35,109700,12.40,0.09,12.52,109700,12.25,0.13,12.42,109700
+"simpleGenericTriple",9.00,0.05,9.09,53116,9.01,0.06,9.09,53116,8.96,0.08,9.08,53116
+"sum",52.10,1.32,53.52,771472,52.13,1.03,53.25,771344,52.03,1.10,53.23,771472
+"swap",65.49,0.38,65.97,376748,65.64,0.43,66.17,376748,65.27,0.42,65.79,376748
+"tupleAssign",50.84,0.38,51.31,208792,50.85,0.36,51.33,208792,51.17,0.34,51.59,208792
+"tupleCast",7.40,0.05,7.48,45168,7.29,0.05,7.37,45168,7.32,0.03,7.38,45168
+"tupleFunction",8.64,0.09,8.77,51344,8.65,0.09,8.77,51344,8.66,0.07,8.77,51344
+"tupleMember",8.29,0.03,8.36,49908,8.28,0.05,8.36,49908,8.30,0.04,8.42,49908
+"tuplePolymorphism",9.86,0.08,9.97,56664,9.86,0.08,9.98,56664,9.95,0.06,10.05,56664
+"tupleVariadic",8.74,0.09,8.86,52592,8.76,0.05,8.85,52592,8.82,0.06,8.91,52592
+"typedefRedef",7.35,0.04,7.43,44720,7.30,0.05,7.39,44720,7.28,0.06,7.37,44720
+"typeof",7.22,0.06,7.31,44732,7.21,0.05,7.29,44732,7.23,0.07,7.32,44732
+"user_literals",25.22,0.26,25.53,280956,25.45,0.24,25.73,280956,25.20,0.20,25.45,280956
+"variableDeclarator",7.75,0.04,7.83,45452,7.76,0.04,7.84,45452,7.87,0.06,7.96,45452
+"voidPtr",7.23,0.03,7.29,44824,7.22,0.06,7.32,44824,7.20,0.04,7.27,44824
Index: doc/theses/aaron_moss_PhD/phd/evaluation/cfa-cc/cfa-imm.csv
===================================================================
--- doc/theses/aaron_moss_PhD/phd/evaluation/cfa-cc/cfa-imm.csv	(revision 92d41a4af1542b1fcfd3bacde48933e4c8519366)
+++ doc/theses/aaron_moss_PhD/phd/evaluation/cfa-cc/cfa-imm.csv	(revision 92d41a4af1542b1fcfd3bacde48933e4c8519366)
@@ -0,0 +1,56 @@
+"test","user(s)","sys(s)","wall(s)","max-mem(KB)","user(s)","sys(s)","wall(s)","max-mem(KB)","user(s)","sys(s)","wall(s)","max-mem(KB)"
+"abs",205.99,1.66,207.91,525500,207.40,2.50,210.25,525676,205.31,1.74,207.37,525500
+"alloc",88.25,2.88,91.27,354864,88.26,2.80,91.24,355012,88.25,2.70,91.10,355012
+"array",7.18,0.04,7.25,44544,7.17,0.05,7.26,44544,7.15,0.07,7.25,44544
+"ato",26.76,0.20,27.00,220456,26.96,0.22,27.22,220456,26.88,0.23,27.16,220456
+"cast",7.10,0.07,7.22,44460,7.18,0.04,7.31,44460,7.18,0.02,7.23,44460
+"complex",70.87,2.55,73.55,286268,70.71,2.69,73.49,286016,70.39,2.84,73.37,286032
+"ctor-autogen",13.39,0.09,13.52,75392,13.36,0.08,13.48,75392,13.36,0.08,13.48,75392
+"declarationSpecifier",9.50,0.06,9.63,54508,9.48,0.07,9.59,54508,9.54,0.08,9.65,54508
+"designations",9.03,0.07,9.13,54232,9.16,0.07,9.27,54232,9.14,0.06,9.27,54232
+"div",29.18,0.30,29.53,218904,29.16,0.28,29.50,218904,29.36,0.22,29.64,218904
+"dtor-early-exit",53.25,0.46,53.81,510616,53.40,0.36,53.87,510616,53.15,0.48,53.74,510616
+"enum",7.21,0.06,7.31,44744,7.29,0.04,7.37,44744,7.22,0.04,7.29,44744
+"extension",8.08,0.08,8.25,49080,8.13,0.08,8.23,49080,8.10,0.05,8.18,49080
+"fstream_test",25.82,0.18,26.06,187664,25.86,0.20,26.13,187664,25.77,0.26,26.09,187664
+"genericUnion",8.00,0.04,8.08,47468,8.05,0.07,8.15,47468,8.00,0.06,8.10,47468
+"globals",24.25,0.19,24.48,182196,24.04,0.20,24.29,182196,24.04,0.17,24.26,182196
+"gmp",92.29,1.03,93.44,728660,92.91,1.14,94.19,728660,92.33,1.05,93.50,728660
+"hello",17.32,0.19,17.55,188008,17.31,0.18,17.54,188008,17.39,0.16,17.59,188008
+"identFuncDeclarator",7.28,0.04,7.36,45100,7.24,0.06,7.34,45100,7.26,0.04,7.33,45100
+"identity",32.62,0.20,32.87,219076,33.34,0.28,33.69,219076,32.61,0.21,32.89,219076
+"identParamDeclarator",7.20,0.04,7.28,45004,7.26,0.04,7.34,45004,7.20,0.05,7.28,45004
+"init_once",8.70,0.07,8.80,51568,8.71,0.06,8.79,51568,8.63,0.09,8.77,51568
+"io",823.65,2.92,827.53,1515864,821.96,4.54,827.79,1515864,822.06,8.16,831.53,1515864
+"KRfunctions",7.26,0.06,7.36,45632,7.34,0.06,7.45,45632,7.23,0.08,7.35,45632
+"labelledExit",7.43,0.03,7.50,45196,7.46,0.08,7.57,45196,7.37,0.06,7.47,45196
+"limits",8.41,0.06,8.52,48080,8.37,0.06,8.47,48080,8.39,0.04,8.47,48080
+"math1",620.06,2.89,623.75,848092,621.49,3.77,626.24,848308,622.02,3.78,626.86,848308
+"math2",763.06,4.10,768.06,730828,765.46,5.74,771.95,730872,758.84,4.10,764.21,730700
+"math3",202.02,0.73,203.08,510084,202.65,0.71,203.70,510084,202.28,0.76,203.38,510084
+"maybe",9.30,0.06,9.40,54840,9.34,0.06,9.44,54840,9.27,0.06,9.36,54840
+"memberCtors",8.18,0.06,8.27,49764,8.16,0.06,8.26,49764,8.19,0.08,8.31,49764
+"minmax",126.47,0.54,127.24,379380,126.80,0.50,127.49,379380,126.64,0.47,127.36,379380
+"numericConstants",7.12,0.03,7.18,44488,7.14,0.04,7.21,44488,7.16,0.04,7.24,44488
+"polymorphism",7.32,0.03,7.38,45308,7.28,0.04,7.39,45308,7.29,0.04,7.36,45308
+"quoted_keyword",17.43,0.23,17.70,211564,17.47,0.19,17.72,211412,17.47,0.19,17.70,211412
+"random",22.98,0.20,23.23,187684,23.09,0.18,23.32,187684,22.98,0.23,23.27,187684
+"rational",152.03,0.73,153.03,736652,151.88,0.84,152.86,736652,151.50,0.85,152.60,736652
+"references",7.89,0.04,7.96,48816,7.90,0.03,7.98,48816,7.94,0.03,8.01,48816
+"result",12.09,0.12,12.25,97536,12.12,0.11,12.27,97536,12.09,0.13,12.26,97536
+"searchsort",70.92,0.66,71.69,544144,71.01,0.66,71.79,544144,71.03,0.59,71.72,544144
+"shortCircuit",12.53,0.11,12.69,105652,12.54,0.09,12.67,105652,12.49,0.12,12.72,105652
+"simpleGenericTriple",8.49,0.05,8.59,52260,8.45,0.06,8.55,52260,8.47,0.05,8.55,52260
+"sum",122.89,1.01,124.14,686232,122.82,1.16,124.22,686204,122.71,0.95,123.87,686232
+"swap",93.87,0.42,94.48,304152,94.00,0.36,94.55,304152,94.22,0.36,94.76,304152
+"tupleAssign",79.46,0.50,80.19,363820,79.38,0.46,79.99,363820,79.45,0.42,80.01,363820
+"tupleCast",7.24,0.06,7.33,44904,7.23,0.06,7.33,44904,7.23,0.06,7.31,44904
+"tupleFunction",8.52,0.08,8.64,50996,8.52,0.06,8.63,50996,8.57,0.04,8.67,50996
+"tupleMember",8.18,0.06,8.27,49596,8.17,0.06,8.27,49596,8.18,0.05,8.26,49596
+"tuplePolymorphism",9.24,0.08,9.37,55868,9.28,0.06,9.38,55868,9.26,0.06,9.35,55868
+"tupleVariadic",8.54,0.06,8.65,52112,8.56,0.06,8.66,52112,8.57,0.04,8.64,52112
+"typedefRedef",7.16,0.04,7.24,44456,7.12,0.08,7.23,44456,7.17,0.05,7.26,44456
+"typeof",7.04,0.08,7.16,44468,7.10,0.03,7.16,44468,7.07,0.06,7.16,44468
+"user_literals",28.57,0.26,28.89,261940,28.61,0.23,28.89,261940,28.61,0.25,28.92,261940
+"variableDeclarator",7.65,0.04,7.72,45196,7.59,0.07,7.69,45196,7.64,0.05,7.73,45196
+"voidPtr",7.05,0.06,7.15,44552,7.09,0.03,7.17,44552,7.09,0.04,7.16,44552
Index: doc/theses/aaron_moss_PhD/phd/evaluation/cfa-mem-by-time.tsv
===================================================================
--- doc/theses/aaron_moss_PhD/phd/evaluation/cfa-mem-by-time.tsv	(revision 92d41a4af1542b1fcfd3bacde48933e4c8519366)
+++ doc/theses/aaron_moss_PhD/phd/evaluation/cfa-mem-by-time.tsv	(revision 92d41a4af1542b1fcfd3bacde48933e4c8519366)
@@ -0,0 +1,56 @@
+test	"\\textsc{cfa-co}"	"\\textsc{cfa-bu}"	"\\textsc{cfa-imm}"	"\\textsc{cfa-def}"	"\\textsc{cfa-dca}"	"cfa-co time (ms)"
+abs	270592	303272	525500	416164	416516	105.08
+alloc	81832	210880	355012	362676	362804	31.48
+array	21404	23656	44544	44808	44876	2.26
+ato	70212	143076	220456	242832	241940	15.50
+cast	21352	23584	44460	44724	44788	2.23
+complex	86812	163508	286032	294008	294000	26.56
+ctor-autogen	34052	48612	75392	77880	78088	5.60
+declarationSpecifier	24828	30728	54508	54808	54844	3.12
+designations	24564	31008	54232	54572	54632	3.29
+div	161136	169004	218904	117256	117424	18.96
+dtor-early-exit	126132	338952	510616	553384	553588	37.12
+enum	21508	23788	44744	45008	45076	2.26
+extension	22548	26940	49080	49288	49436	2.70
+fstream_test	108772	142828	187664	197736	197396	15.86
+genericUnion	23228	26052	47468	47944	48068	2.69
+globals	56368	117664	182196	195892	196548	13.24
+gmp	163596	499088	728660	778984	777864	59.08
+hello	50232	119304	188008	198204	197876	9.52
+identFuncDeclarator	21776	24092	45100	45372	45444	2.28
+identity	69532	141104	219076	238720	239256	18.45
+identParamDeclarator	21724	24012	45004	45276	45336	2.25
+init_once	23276	29200	51568	51956	52032	3.08
+io	1059436	1244220	1515864	1631932	1630432	631.54
+KRfunctions	21708	24464	45632	45896	45964	2.32
+labelledExit	21632	24304	45196	45460	45520	2.37
+limits	21792	26276	48080	48328	48392	2.77
+math1	530948	695084	848308	939204	939712	405.02
+math2	542864	599972	730828	626860	625848	531.37
+math3	247188	358276	510084	536252	538724	130.26
+maybe	25692	31572	54840	56072	56132	3.34
+memberCtors	23072	27776	49764	50056	50108	2.78
+minmax	180000	258132	379380	450668	450004	80.99
+numericConstants	21412	23624	44488	44756	44816	2.22
+polymorphism	21928	24340	45308	45628	45688	2.39
+quoted_keyword	99348	109948	211412	156728	156580	6.95
+random	56468	120752	187684	203216	202944	11.91
+rational	361784	540184	736652	797316	797644	113.28
+references	22716	27100	48816	49096	49176	2.68
+result	49108	65324	97536	99240	99140	5.27
+searchsort	121216	395300	544144	547896	548396	42.58
+shortCircuit	36408	65200	105652	109700	109896	5.50
+simpleGenericTriple	25108	29908	52260	53116	53172	3.01
+sum	338964	367132	686232	771472	771508	68.65
+swap	151396	212760	304152	376748	378312	54.78
+tupleAssign	283484	296536	363820	208792	208520	62.12
+tupleCast	21736	24100	44904	45168	45232	2.33
+tupleFunction	23640	28708	50996	51344	51404	3.15
+tupleMember	24056	28412	49596	49908	49964	2.84
+tuplePolymorphism	26232	32912	55868	56664	56656	3.64
+tupleVariadic	24420	29980	52112	52592	52644	3.18
+typedefRedef	21364	23576	44456	44720	44784	2.23
+typeof	21368	23592	44468	44732	44796	2.22
+user_literals	68672	172736	261940	280956	281096	17.17
+variableDeclarator	21808	24088	45196	45452	45516	2.43
+voidPtr	21384	23632	44552	44824	44880	2.22
Index: doc/theses/aaron_moss_PhD/phd/evaluation/cfa-mem.tsv
===================================================================
--- doc/theses/aaron_moss_PhD/phd/evaluation/cfa-mem.tsv	(revision 92d41a4af1542b1fcfd3bacde48933e4c8519366)
+++ doc/theses/aaron_moss_PhD/phd/evaluation/cfa-mem.tsv	(revision 92d41a4af1542b1fcfd3bacde48933e4c8519366)
@@ -0,0 +1,56 @@
+test	cfa-co	cfa-bu	cfa-imm	cfa-def	cfa-dca
+abs	270592	303272	525500	416164	416516
+alloc	81832	210880	355012	362676	362804
+array	21404	23656	44544	44808	44876
+ato	70212	143076	220456	242832	241940
+cast	21352	23584	44460	44724	44788
+complex	86812	163508	286032	294008	294000
+ctor-autogen	34052	48612	75392	77880	78088
+declarationSpecifier	24828	30728	54508	54808	54844
+designations	24564	31008	54232	54572	54632
+div	161136	169004	218904	117256	117424
+dtor-early-exit	126132	338952	510616	553384	553588
+enum	21508	23788	44744	45008	45076
+extension	22548	26940	49080	49288	49436
+fstream_test	108772	142828	187664	197736	197396
+genericUnion	23228	26052	47468	47944	48068
+globals	56368	117664	182196	195892	196548
+gmp	163596	499088	728660	778984	777864
+hello	50232	119304	188008	198204	197876
+identFuncDeclarator	21776	24092	45100	45372	45444
+identity	69532	141104	219076	238720	239256
+identParamDeclarator	21724	24012	45004	45276	45336
+init_once	23276	29200	51568	51956	52032
+io	1059436	1244220	1515864	1631932	1630432
+KRfunctions	21708	24464	45632	45896	45964
+labelledExit	21632	24304	45196	45460	45520
+limits	21792	26276	48080	48328	48392
+math1	530948	695084	848308	939204	939712
+math2	542864	599972	730828	626860	625848
+math3	247188	358276	510084	536252	538724
+maybe	25692	31572	54840	56072	56132
+memberCtors	23072	27776	49764	50056	50108
+minmax	180000	258132	379380	450668	450004
+numericConstants	21412	23624	44488	44756	44816
+polymorphism	21928	24340	45308	45628	45688
+quoted_keyword	99348	109948	211412	156728	156580
+random	56468	120752	187684	203216	202944
+rational	361784	540184	736652	797316	797644
+references	22716	27100	48816	49096	49176
+result	49108	65324	97536	99240	99140
+searchsort	121216	395300	544144	547896	548396
+shortCircuit	36408	65200	105652	109700	109896
+simpleGenericTriple	25108	29908	52260	53116	53172
+sum	338964	367132	686232	771472	771508
+swap	151396	212760	304152	376748	378312
+tupleAssign	283484	296536	363820	208792	208520
+tupleCast	21736	24100	44904	45168	45232
+tupleFunction	23640	28708	50996	51344	51404
+tupleMember	24056	28412	49596	49908	49964
+tuplePolymorphism	26232	32912	55868	56664	56656
+tupleVariadic	24420	29980	52112	52592	52644
+typedefRedef	21364	23576	44456	44720	44784
+typeof	21368	23592	44468	44732	44796
+user_literals	68672	172736	261940	280956	281096
+variableDeclarator	21808	24088	45196	45452	45516
+voidPtr	21384	23632	44552	44824	44880
Index: doc/theses/aaron_moss_PhD/phd/evaluation/cfa-plots.gp
===================================================================
--- doc/theses/aaron_moss_PhD/phd/evaluation/cfa-plots.gp	(revision 92d41a4af1542b1fcfd3bacde48933e4c8519366)
+++ doc/theses/aaron_moss_PhD/phd/evaluation/cfa-plots.gp	(revision 92d41a4af1542b1fcfd3bacde48933e4c8519366)
@@ -0,0 +1,36 @@
+# set terminal pdfcairo size 6,3
+# BUILD = "build/"
+set terminal pslatex size 6.25,2.5 color solid
+
+# RUNTIME #
+set output BUILD."cfa-time.tex"
+
+set xlabel "\\textsc{cfa-co} runtime (ms)"
+set ylabel "runtime (ms)"
+set logscale xy
+set key outside
+
+plot for [i=2:6] 'evaluation/cfa-time.tsv' using 2:i title columnheader
+
+# MEMORY #
+set output BUILD."cfa-mem.tex"
+
+set ylabel "peak memory (MB)"
+
+plot for [i=2:6] 'evaluation/cfa-mem-by-time.tsv' using 7:(column(i)/1000) title columnheader
+
+# # RUNTIME SPEEDUP #
+# set output BUILD."cfa-speedup.pdf"
+
+# set ylabel "time factor of cfa-co"
+# unset logscale y
+
+# plot for [i=2:6] 'evaluation/cfa-time.tsv' using 2:(column(i)/column(2)) title columnheader
+
+# # MEMORY SPEEDUP #
+# set output BUILD."cfa-mem-speedup.pdf"
+
+# set ylabel "peak memory factor of cfa-co"
+# unset logscale y
+
+# plot for [i=2:6] 'evaluation/cfa-mem-by-time.tsv' using 7:(column(i)/column(2)) title columnheader
Index: doc/theses/aaron_moss_PhD/phd/evaluation/cfa-time.tsv
===================================================================
--- doc/theses/aaron_moss_PhD/phd/evaluation/cfa-time.tsv	(revision 92d41a4af1542b1fcfd3bacde48933e4c8519366)
+++ doc/theses/aaron_moss_PhD/phd/evaluation/cfa-time.tsv	(revision 92d41a4af1542b1fcfd3bacde48933e4c8519366)
@@ -0,0 +1,56 @@
+test	"\\textsc{cfa-co}"	"\\textsc{cfa-bu}"	"\\textsc{cfa-imm}"	"\\textsc{cfa-def}"	"\\textsc{cfa-dca}"
+abs	105.08	110.70	205.99	55.58	58.05
+alloc	31.48	39.04	88.25	92.28	92.48
+array	2.26	2.42	7.17	7.36	7.27
+ato	15.50	14.74	26.88	23.45	23.44
+cast	2.23	2.38	7.18	7.21	7.23
+complex	26.56	32.36	70.71	68.48	68.59
+ctor-autogen	5.60	5.66	13.36	15.79	15.95
+declarationSpecifier	3.12	3.36	9.50	9.63	9.66
+designations	3.29	3.25	9.14	9.32	9.29
+div	18.96	16.59	29.18	15.84	15.84
+dtor-early-exit	37.12	33.96	53.25	43.35	44.00
+enum	2.26	2.40	7.22	7.28	7.30
+extension	2.70	2.81	8.10	8.18	8.19
+fstream_test	15.86	14.75	25.82	21.38	21.22
+genericUnion	2.69	2.76	8.00	8.27	8.20
+globals	13.24	12.85	24.04	20.90	20.72
+gmp	59.08	59.90	92.33	83.53	84.04
+hello	9.52	9.07	17.32	16.22	16.22
+identFuncDeclarator	2.28	2.36	7.26	7.22	7.30
+identity	18.45	18.12	32.62	25.56	25.54
+identParamDeclarator	2.25	2.42	7.20	7.19	7.24
+init_once	3.08	3.13	8.70	8.84	8.85
+io	631.54	580.98	822.06	440.46	445.48
+KRfunctions	2.32	2.42	7.26	7.42	7.34
+labelledExit	2.37	2.55	7.43	7.47	7.51
+limits	2.77	2.86	8.39	8.47	8.49
+math1	405.02	417.46	621.49	188.40	189.09
+math2	531.37	540.88	763.06	223.51	225.14
+math3	130.26	134.92	202.28	102.27	103.06
+maybe	3.34	3.58	9.30	10.14	10.13
+memberCtors	2.78	2.87	8.18	8.24	8.33
+minmax	80.99	84.16	126.64	83.42	83.29
+numericConstants	2.22	2.38	7.14	7.22	7.28
+polymorphism	2.39	2.46	7.29	7.38	7.39
+quoted_keyword	6.95	7.31	17.47	11.76	11.70
+random	11.91	11.99	22.98	21.14	21.14
+rational	113.28	96.15	151.88	101.52	103.33
+references	2.68	2.69	7.90	7.97	7.94
+result	5.27	5.57	12.09	13.43	13.48
+searchsort	42.58	42.23	71.01	51.84	52.09
+shortCircuit	5.50	5.55	12.53	12.25	12.23
+simpleGenericTriple	3.01	3.10	8.47	9.00	9.10
+sum	68.65	67.27	122.82	52.10	52.23
+swap	54.78	59.55	94.00	65.49	66.44
+tupleAssign	62.12	54.14	79.45	50.85	51.48
+tupleCast	2.33	2.39	7.23	7.32	7.33
+tupleFunction	3.15	3.01	8.52	8.65	8.71
+tupleMember	2.84	2.94	8.18	8.29	8.32
+tuplePolymorphism	3.64	3.41	9.26	9.86	9.64
+tupleVariadic	3.18	3.11	8.56	8.76	8.80
+typedefRedef	2.23	2.35	7.16	7.30	7.24
+typeof	2.22	2.43	7.07	7.22	7.20
+user_literals	17.17	16.16	28.61	25.22	25.74
+variableDeclarator	2.43	2.56	7.64	7.76	7.72
+voidPtr	2.22	2.36	7.09	7.22	7.18
Index: doc/theses/aaron_moss_PhD/phd/evaluation/generic-timing.dat
===================================================================
--- doc/theses/aaron_moss_PhD/phd/evaluation/generic-timing.dat	(revision 114bde658eed1edf31cde78bd21584a1ced7df2e)
+++ doc/theses/aaron_moss_PhD/phd/evaluation/generic-timing.dat	(revision 92d41a4af1542b1fcfd3bacde48933e4c8519366)
@@ -8,3 +8,2 @@
 "clear\npair"	2840	773	748	3511
 "pop\npair"	3025	5414	813	23867
-
Index: doc/theses/aaron_moss_PhD/phd/evaluation/mem-by-max-assns.tsv
===================================================================
--- doc/theses/aaron_moss_PhD/phd/evaluation/mem-by-max-assns.tsv	(revision 92d41a4af1542b1fcfd3bacde48933e4c8519366)
+++ doc/theses/aaron_moss_PhD/phd/evaluation/mem-by-max-assns.tsv	(revision 92d41a4af1542b1fcfd3bacde48933e4c8519366)
@@ -0,0 +1,132 @@
+i	test	algos completed	avg. assns/decl	max assns/decl	avg. max expr. depth	max. expr depth	bu-imm-bas	bu-imm-iti	bu-imm-per	co-imm-bas	co-imm-iti	co-imm-per	td-imm-bas	td-imm-iti	bu-def-bas	bu-def-iti	bu-def-per	co-def-bas	co-def-iti	co-def-per	td-def-bas	td-def-iti	bu-tec-bas	bu-tec-iti	bu-tec-per	co-tec-bas	co-tec-iti	co-tec-per	td-tec-bas	td-tec-iti
+84	stdincludes	24	0.002	6	0.36	4	6	30	7	10	90	10	384	1324	6	10	7	10	53	10	13	18	6	10	7	10	53	10	13	18
+113	interpose-stdlib	24	0.002	6	0.37	5	6	25	6	7	83	7	333	1118	6	9	6	7	43	7	11	17	6	9	6	7	43	7	11	17
+110	debug-stdlib	24	0.003	6	0.39	3	5	17	5	7	54	7	201	629	5	7	5	6	31	6	11	17	5	7	5	6	31	6	11	17
+107	assert-stdlib	24	0.005	6	0.42	3	5	11	5	7	31	6	114	314	5	6	5	6	21	6	10	15	5	6	5	6	21	6	10	15
+117	limits-stdlib	21	0.005	6	1.07	3	5	9	5	7	27	7	84		5	6	5	6	20	6	16		5	6	5	6	20	6	16	
+125	startup-stdlib	24	0.005	6	0.88	3	5	8	5	7	27	7	81	185	5	6	5	6	19	6	10	16	5	6	5	6	19	6	10	16
+19	declarationSpecifier	24	0.005	6	0.89	3	5	11	5	6	45	6	144	371	5	6	5	6	28	6	9	14	5	6	5	6	28	6	9	14
+5	attributes	24	0.006	6	0.84	3	5	9	5	6	29	6	94	231	4	6	5	6	20	6	10	15	5	6	5	6	20	6	10	15
+20	designations	15	0.006	6	0.62	3	5	10	5				103	261	4	6	5				10	15	5	6	5				10	15
+52	limits	24	0.006	6	0.80	3	5	9	5	7	26	7	79	178	5	6	5	6	19	6	10	15	5	6	5	6	19	6	10	15
+36	functions	24	0.006	6	1.00	3	5	8	5	6	26	6	81	186	4	6	5	6	19	6	10	15	5	6	5	6	19	6	10	15
+76	references	24	0.006	6	0.99	4	5	9	5	26	38	26	86	204	5	6	5	26	32	26	10	15	5	6	5	26	32	26	10	15
+100	variableDeclarator	24	0.006	6	0.60	3	5	8	5	7	26	6	79	178	5	6	5	6	19	6	10	15	5	6	5	6	19	6	10	15
+37	gccExtensions	24	0.006	6	0.97	3	5	9	5	16	30	20	78	178	5	6	5	16	28	20	10	15	5	6	5	16	28	20	10	15
+50	KRfunctions	24	0.006	6	1.08	3	5	8	5	26	117	27	81	186	4	6	4	26	117	27	10	15	5	6	4	26	117	27	10	15
+60	memberCtors	24	0.006	6	1.09	3	5	9	5	6	29	6	88	211	4	6	4	6	20	6	10	15	5	6	4	6	20	6	10	15
+43	identFuncDeclarator	24	0.006	6	0.59	3	5	8	5	6	26	6	78	178	4	6	4	6	19	6	10	15	5	6	4	6	19	6	10	15
+94	tupleMember	24	0.006	6	1.00	4	5	9	5	46	64	49	85	201	4	6	5	46	55	49	15	33	5	6	5	46	55	49	15	33
+28	extension	24	0.006	6	0.94	3	5	9	5	16	30	20	85	199	5	6	5	16	28	20	10	15	5	6	5	16	28	20	10	15
+47	init_once	24	0.006	6	0.82	5	5	9	5	7	28	7	90	212	5	6	5	6	20	6	10	15	5	6	5	6	20	6	10	15
+93	tupleFunction	15	0.006	6	0.98	3	5	9	5				83	195	4	6	5				10	15	5	6	5				10	15
+66	operators	24	0.006	6	1.06	3	5	8	5	6	26	6	81	186	4	6	4	6	19	6	10	15	5	6	4	6	19	6	10	15
+26	enum	24	0.006	6	1.03	3	5	8	5	6	26	6	78	178	4	6	4	6	19	6	10	15	5	6	4	6	19	6	10	15
+80	self-assignment	24	0.006	6	1.04	3	5	9	5	6	27	6	83	195	4	6	4	6	19	6	10	15	5	6	4	6	19	6	10	15
+87	switch	24	0.007	6	0.72	3	5	8	5	6	26	6	78	178	4	6	4	6	19	6	10	15	5	6	4	6	19	6	10	15
+88	sync	24	0.007	6	1.68	3	5	8	5	41	1191	44	78	178	5	6	5	41	1191	44	10	15	5	6	5	41	1191	44	10	15
+16	counter	24	0.007	6	1.08	3	5	8	5	6	26	6	81	186	4	6	4	6	19	6	10	15	5	6	4	6	19	6	10	15
+3	array	24	0.007	6	1.01	3	5	8	5	6	26	6	78	178	4	6	4	6	19	6	10	15	5	6	4	6	19	6	10	15
+27	expression	24	0.007	6	1.04	3	5	8	5	7	26	7	78	178	4	6	4	6	19	7	10	15	5	6	4	6	19	7	10	15
+98	typeof	24	0.007	6	1.03	3	5	8	5	6	26	6	78	178	4	6	4	6	19	6	10	15	5	6	4	6	19	6	10	15
+51	labelledExit	24	0.007	6	0.81	3	5	8	5	6	26	6	78	178	4	6	4	6	19	6	10	15	5	6	4	6	19	6	10	15
+12	cast	24	0.007	6	1.03	3	5	8	5	6	26	6	78	178	4	6	4	6	19	6	10	15	5	6	4	6	19	6	10	15
+92	tupleCast	24	0.007	6	1.05	3	5	8	5	6	26	6	78	178	4	6	5	6	19	6	10	15	5	6	5	6	19	6	10	15
+11	castError	24	0.007	6	1.04	3	5	8	5	6	26	6	78	178	4	6	4	6	19	6	10	15	5	6	4	6	19	6	10	15
+97	typedefRedef	24	0.007	6	1.07	3	5	8	5	6	26	6	78	178	4	6	4	6	19	6	10	15	5	6	4	6	19	6	10	15
+102	voidPtr	24	0.007	6	1.02	3	5	8	5	6	26	6	78	178	4	6	4	6	19	6	10	15	5	6	4	6	19	6	10	15
+29	fallthrough	24	0.007	6	0.91	3	5	8	5	6	26	6	78	178	4	6	4	6	19	6	10	15	5	6	4	6	19	6	10	15
+45	identParamDeclarator	24	0.007	6	1.07	3	5	8	5	6	26	6	78	178	4	6	5	6	19	6	10	15	5	6	5	6	19	6	10	15
+65	numericConstants	24	0.007	6	0.74	3	5	8	5	6	26	6	78	178	4	6	4	6	19	6	10	15	5	6	4	6	19	6	10	15
+13	completeTypeError	24	0.008	6	1.05	3	5	8	5	6	26	6	80	183	4	6	4	6	19	6	10	15	5	6	4	6	19	6	10	15
+131	imgui	15	0.013	6	0.35	5	8	24	10				1350	2715	8	12	10				1337	2634	8	12	10				1337	2634
+64	nested-types	24	0.015	6	1.01	3	5	9	5	9	31	9	114	238	4	6	4	7	21	7	10	15	5	6	4	7	21	7	10	15
+105	with-statement	24	0.017	6	0.97	3	5	9	5	9	31	9	113	238	4	6	5	7	21	7	10	15	5	6	5	7	21	7	10	15
+38	genericUnion	24	0.018	6	1.04	4	5	9	5	9	29	9	107	218	4	6	5	7	20	7	10	15	5	6	5	7	20	7	10	15
+82	simpleGenericTriple	24	0.021	6	0.98	3	5	9	5	17	29	20	122	252	4	6	5	17	27	20	10	15	5	6	5	17	27	20	10	15
+17	ctor-autogen	24	0.023	6	0.84	3	5	11	5	12	41	12	148	340	5	6	5	9	26	9	10	15	5	6	5	9	26	9	10	15
+118	maybe-stdlib	24	0.031	6	1.17	3	5	9	5	10	30	10	111	226	4	6	5	7	21	7	10	15	5	6	5	7	21	7	10	15
+59	maybe	24	0.035	6	1.06	3	5	9	5	11	32	11	117	235	4	6	5	8	22	8	10	15	5	6	5	8	22	8	10	15
+108	common-stdlib	24	0.015	7	0.56	3	5	14	5	7	49	7	164	485	5	6	5	6	33	6	10	15	5	6	5	6	33	6	10	15
+77	result	24	0.072	8	1.01	3	6	10	6	15	36	15	134	256	5	6	5	10	23	10	10	15	5	6	5	10	23	10	10	15
+124	result-stdlib	24	0.073	8	1.22	3	6	10	6	15	36	15	134	256	5	6	5	10	23	10	10	15	5	6	5	10	23	10	10	15
+95	tuplePolymorphism	22	0.014	9	0.93	3	5	9	5	41	52	41	86	203	5		5	41	43	41	10	15	5		5	41	43	41	10	15
+116	kernel-stdlib	9	0.020	10	0.70	6	8	45	9						8	15	8						8	15	8					
+122	preemption-stdlib	18	0.021	10	0.66	6	8	40	8	37	165	39			7	13	8	37	111	38			7	13	8	37	111	38		
+112	heap-stdlib	15	0.025	10	0.65	7	7	41	7				315	937	7	13	7				91	251	7	14	7				91	251
+109	coroutine-stdlib	18	0.026	10	0.81	6	7	32	7	38	131	35			7	13	7	33	89	35			7	13	7	33	89	35		
+106	alarm-stdlib	18	0.027	10	0.84	6	7	32	7	35	130	36			6	12	7	33	88	35			6	12	7	33	88	35		
+69	preempt	18	0.028	10	0.79	6	7	30	7	38	125	35			6	12	7	33	84	35			7	12	7	33	84	35		
+119	monitor-stdlib	18	0.028	10	1.02	6	8	31	8	35	130	38			7	12	8	33	88	35			7	12	8	33	88	35		
+127	thread-stdlib	18	0.028	10	0.81	6	7	32	7	35	131	35			6	12	7	33	88	35			6	13	7	33	88	35		
+126	stdlib-stdlib	24	0.028	10	0.62	4	6	18	6	30	68	34	217	688	6	8	6	29	50	34	91	251	6	8	6	30	50	34	91	251
+41	heap	24	0.031	10	0.70	6	7	30	7	35	120	35	407	1322	6	11	7	33	81	33	92	252	6	11	7	33	81	35	92	252
+120	mutex-stdlib	18	0.032	10	0.93	6	8	33	8	37	136	39			7	13	7	34	92	35			7	13	7	34	92	35		
+96	tupleVariadic	24	0.047	10	0.76	4	5	14	6	33	59	33	169	504	5	7	5	33	47	33	86	239	5	7	5	33	47	33	86	239
+129	vector-stdlib	24	0.095	10	0.82	6	6	15	6	37	69	39	227	573	55	52	18	150	103	43	86	240	55	52	18	150	103	43	86	240
+6	avl_test	24	0.100	10	0.71	4	45	241	40	34	137	37	271	660	6	7	6	31	52	34	86	239	6	7	6	31	52	34	86	239
+121	pair-stdlib	24	0.054	11	1.10	3	5	9	5	11	31	11	126	245	4	6	5	8	21	8	10	15	5	6	5	8	21	8	10	15
+68	polymorphism	21	0.021	12	0.99	3			11	24	68	12	2545	5681	10		6	15	140	14	35	37	10	10	6	15	140	14	35	37
+115	iterator-stdlib	24	0.018	13	1.04	3	5	8	5	6	26	6	78	178	4	6	4	6	19	6	10	15	5	6	4	6	19	6	10	15
+32	forall	15	0.196	15	0.99	3	3439	6401	3257	3415		3253			22	28	15				501	590	21	28	15				501	589
+130	glm	23	0.206	19	1.43	5	14	23	14	25	55	26	3197		16	23	13	21	43	23	38	36	14	20	13	21	43	23	34	33
+103	wait	18	0.146	35	0.78	6	8	32	8	36	135	36			8	13	8	33	91	35			7	13	8	33	91	35		
+21	disjoint	18	0.147	35	0.78	6	53	47	20	114	156	88			8	14	9	87	120	102			8	14	9	87	120	102		
+8	block	18	0.147	35	0.79	7	13	32	9	94	133	56			10	13	9	70	100	80			8	13	9	69	98	80		
+15	coroutineYield	18	0.150	35	0.76	6	8	32	8	36	130	36			8	13	8	33	88	35			7	13	8	33	88	35		
+18	datingService	22	0.155	35	0.63	7	7	31	7	36	126	38			7	11	7	33	85	35	92	252	7	11	7	33	85	35	92	252
+9	boundedBufferEXT	18	0.161	35	0.63	6	53	47	19	114	156	88			8	14	9	87	120	102			7	14	9	86	119	102		
+10	boundedBufferINT	18	0.162	35	0.63	6	53	47	19	114	156	88			8	14	9	87	120	102			8	14	9	86	119	102		
+83	statement	9	0.166	35	0.67	6	143	87	32						11	21	11						8	20	11					
+7	barge	18	0.166	35	0.64	6	26	31	14	52	127	47			7	12	8	33	86	38			7	12	8	33	86	37		
+71	quickSort	18	0.166	35	0.64	6	12	30	9	96	996	102			9	12	8	96	996	102			7	12	8	96	996	102		
+75	recurse	18	0.166	35	0.64	6	25	31	14	43	125	36			7	12	8	33	85	35			7	11	8	33	85	35		
+104	when	18	0.166	35	0.64	6	53	46	19	113	152	88			8	14	9	87	121	102			7	14	9	86	121	102		
+63	multi-monitor	9	0.168	35	0.63	6	881	615	192						13	58	15						12	58	15					
+62	monitor	18	0.168	35	0.62	6	26	32	14	52	125	47			7	12	8	33	85	37			7	12	8	33	85	37		
+89	thread	18	0.168	35	0.63	6	53	46	19	117	156	88			8	14	9	87	124	102			7	14	9	86	123	102		
+58	matrixSum	18	0.168	35	0.62	6	26	31	14	52	124	46			7	12	8	35	84	37			7	12	8	33	84	37		
+24	dtor	18	0.168	35	0.62	6	8	31	8	35	124	35			7	11	7	33	84	33			7	11	7	33	84	35		
+70	prodcons	15	0.170	35	0.62	6	93	69	26	7601		5047			9	18	10	6389		7718			7	18	10	6389		7718		
+25	else	18	0.179	35	0.58	4	75	73	26	206	277	154			8	16	10	166	233	196			7	16	10	165	232	196		
+114	iostream-stdlib	9	0.182	35	0.59	3	10	12	8						5	7	6						6	7	6					
+67	pingpong	18	0.184	35	0.55	6	7	23	7	12	79	12			6	9	6	9	43	9			6	9	6	9	43	9		
+31	fmtLines	18	0.185	35	0.55	6	11	23	8	15	79	14			6	9	6	9	43	10			6	9	6	9	43	10		
+78	runningTotal	18	0.185	35	0.55	6	358	319	102	3349	4563	2516			9	34	11	2126	2999	2524			8	33	10	2126	2999	2524		
+30	fibonacci	18	0.185	35	0.55	6	358	319	102	3349	4563	2516			9	34	11	2126	2999	2524			8	33	10	2126	2999	2524		
+111	fstream-stdlib	24	0.206	35	0.46	3	6	18	6	7	61	7	222	704	5	8	6	6	34	7	11	16	5	8	6	6	34	7	11	16
+2	alloc	24	0.226	35	0.65	5	6	18	6	30	68	34	229	728	6	9	6	29	52	34	91	250	6	9	6	30	52	34	91	250
+128	time-stdlib	9	0.233	35	0.87	6	53	44	20						7	12	9						6	12	9					
+40	gmp	9	0.256	35	1.25	9	240	93	32						13	24	11						8	22	11					
+57	math4	9	0.256	35	1.33	6	1273	641	197						15	61	15						12	59	15					
+54	math1	8	0.256	35	1.29	10		2371	690						47	193	36						29	186	35					
+56	math3	9	0.257	35	1.29	8	4559	1570	465						27	130	25						21	127	24					
+55	math2	9	0.257	35	1.32	8	4559	1571	465						28	131	25						21	128	24					
+73	random	18	0.259	35	0.67	4	25	29	13	52	74	45			7	12	7	33	47	37			6	11	7	32	47	36		
+14	complex	9	0.273	35	0.45	7	280	126	42						12	26	11						7	24	11					
+23	dtor-early-exit	18	0.285	35	0.69	4	52	45	18	112	149	87			7	13	8	86	119	101			6	13	8	85	118	100		
+86	swap	9	0.286	35	0.77	5	1577	912	280						15	80	17						13	79	16					
+79	searchsort	9	0.286	35	0.79	6	1897	1103	362						15	54	19						15	53	18					
+22	div	7	0.287	35	0.64	5	10		8						9		7						9	11	7					
+85	sum	9	0.288	35	0.76	9	358		98			7440			335	113	29						10	30	12					
+4	ato	18	0.289	35	0.76	4	29	32	14	300	395	207			8	13	8	267	378	315			7	12	8	266	376	314		
+61	minmax	9	0.289	35	0.77	7	1285	649	198						17	61	15						12	58	15					
+1	abs	9	0.290	35	0.68	6	181	111	37						10	24	11						8	22	10					
+90	time	9	0.290	35	1.08	9	880	612	191						19	56	14						11	56	14					
+35	function-operator	22	0.300	35	0.69	5	35	43	18	88	125	78			8	16	9	85	120	99	4258	5854	8	17	9	85	119	99	4258	6045
+99	user_literals	18	0.347	35	0.77	5	51	44	17	112	149	86			6	12	7	85	119	100			6	12	7	84	118	100		
+39	globals	18	0.360	35	0.81	4	51	44	17	112	149	86			6	12	7	85	118	100			6	12	7	84	117	100		
+72	quoted_keyword	18	0.364	35	0.68	6	24	29	12	52	83	45			6	11	6	32	53	36			6	11	6	32	53	36		
+33	forctrl	9	0.369	35	0.73	5	1543	895	274						14	74	15						13	73	14					
+81	shortCircuit	18	0.374	35	0.70	3	23	28	12	41	58	34			6	9	6	20	25	22			5	9	6	20	25	22		
+49	io2	6	0.376	35	1.39	34									104	520	79						70	516	78					
+46	ifwhileCtl	18	0.377	35	0.70	3	6	10	6	7	32	7			6	6	6	6	22	6			5	6	5	6	22	6		
+91	tupleAssign	9	0.377	35	0.90	12	1620	458	136						42	56	16						11	49	14					
+53	literals	18	0.380	35	0.61	3	51	44	17	112	148	86			6	12	7	85	118	100			6	12	7	84	117	99		
+34	fstream_test	9	0.381	35	0.75	11	1154	814	194						39	50	13						10	50	11					
+48	io1	3	0.381	35	1.09	24																	26	187	44					
+42	hello	18	0.381	35	0.72	3	6	10	6	7	32	7			6	6	5	6	22	6			5	6	5	6	22	6		
+44	identity	18	0.382	35	0.81	5	58	49	19	125	155	87			7	14	8	86	124	101			6	13	8	85	123	101		
+101	vector	16	0.406	35	1.08	7	154	55	21	2714	2909	1309			12	19	10	6539		7717			7	15	9	6538		7717		
+123	rational-stdlib	17	0.340	44	0.78	5	32		17	97	150	87			8	14	9	68	147	76			8	14	9	68	147	76		
+74	rational	9	0.432	44	0.74	5				250	282	154											60	26	13	109	158	70		
Index: doc/theses/aaron_moss_PhD/phd/evaluation/mem-by-max-depth.tsv
===================================================================
--- doc/theses/aaron_moss_PhD/phd/evaluation/mem-by-max-depth.tsv	(revision 92d41a4af1542b1fcfd3bacde48933e4c8519366)
+++ doc/theses/aaron_moss_PhD/phd/evaluation/mem-by-max-depth.tsv	(revision 92d41a4af1542b1fcfd3bacde48933e4c8519366)
@@ -0,0 +1,132 @@
+i	test	algos completed	avg. assns/decl	avg. max expr. depth	max. expr depth	bu-imm-bas	bu-imm-iti	bu-imm-per	co-imm-bas	co-imm-iti	co-imm-per	td-imm-bas	td-imm-iti	bu-def-bas	bu-def-iti	bu-def-per	co-def-bas	co-def-iti	co-def-per	td-def-bas	td-def-iti	bu-tec-bas	bu-tec-iti	bu-tec-per	co-tec-bas	co-tec-iti	co-tec-per	td-tec-bas	td-tec-iti
+110	debug-stdlib	24	0.003	0.39	3	5	17	5	7	54	7	201	629	5	7	5	6	31	6	11	17	5	7	5	6	31	6	11	17
+107	assert-stdlib	24	0.005	0.42	3	5	11	5	7	31	6	114	314	5	6	5	6	21	6	10	15	5	6	5	6	21	6	10	15
+111	fstream-stdlib	24	0.206	0.46	3	6	18	6	7	61	7	222	704	5	8	6	6	34	7	11	16	5	8	6	6	34	7	11	16
+108	common-stdlib	24	0.015	0.56	3	5	14	5	7	49	7	164	485	5	6	5	6	33	6	10	15	5	6	5	6	33	6	10	15
+114	iostream-stdlib	9	0.182	0.59	3	10	12	8						5	7	6						6	7	6					
+43	identFuncDeclarator	24	0.006	0.59	3	5	8	5	6	26	6	78	178	4	6	4	6	19	6	10	15	5	6	4	6	19	6	10	15
+100	variableDeclarator	24	0.006	0.60	3	5	8	5	7	26	6	79	178	5	6	5	6	19	6	10	15	5	6	5	6	19	6	10	15
+53	literals	18	0.380	0.61	3	51	44	17	112	148	86			6	12	7	85	118	100			6	12	7	84	117	99		
+20	designations	15	0.006	0.62	3	5	10	5				103	261	4	6	5				10	15	5	6	5				10	15
+81	shortCircuit	18	0.374	0.70	3	23	28	12	41	58	34			6	9	6	20	25	22			5	9	6	20	25	22		
+46	ifwhileCtl	18	0.377	0.70	3	6	10	6	7	32	7			6	6	6	6	22	6			5	6	5	6	22	6		
+42	hello	18	0.381	0.72	3	6	10	6	7	32	7			6	6	5	6	22	6			5	6	5	6	22	6		
+87	switch	24	0.007	0.72	3	5	8	5	6	26	6	78	178	4	6	4	6	19	6	10	15	5	6	4	6	19	6	10	15
+65	numericConstants	24	0.007	0.74	3	5	8	5	6	26	6	78	178	4	6	4	6	19	6	10	15	5	6	4	6	19	6	10	15
+52	limits	24	0.006	0.80	3	5	9	5	7	26	7	79	178	5	6	5	6	19	6	10	15	5	6	5	6	19	6	10	15
+51	labelledExit	24	0.007	0.81	3	5	8	5	6	26	6	78	178	4	6	4	6	19	6	10	15	5	6	4	6	19	6	10	15
+17	ctor-autogen	24	0.023	0.84	3	5	11	5	12	41	12	148	340	5	6	5	9	26	9	10	15	5	6	5	9	26	9	10	15
+5	attributes	24	0.006	0.84	3	5	9	5	6	29	6	94	231	4	6	5	6	20	6	10	15	5	6	5	6	20	6	10	15
+125	startup-stdlib	24	0.005	0.88	3	5	8	5	7	27	7	81	185	5	6	5	6	19	6	10	16	5	6	5	6	19	6	10	16
+19	declarationSpecifier	24	0.005	0.89	3	5	11	5	6	45	6	144	371	5	6	5	6	28	6	9	14	5	6	5	6	28	6	9	14
+29	fallthrough	24	0.007	0.91	3	5	8	5	6	26	6	78	178	4	6	4	6	19	6	10	15	5	6	4	6	19	6	10	15
+95	tuplePolymorphism	22	0.014	0.93	3	5	9	5	41	52	41	86	203	5		5	41	43	41	10	15	5		5	41	43	41	10	15
+28	extension	24	0.006	0.94	3	5	9	5	16	30	20	85	199	5	6	5	16	28	20	10	15	5	6	5	16	28	20	10	15
+37	gccExtensions	24	0.006	0.97	3	5	9	5	16	30	20	78	178	5	6	5	16	28	20	10	15	5	6	5	16	28	20	10	15
+105	with-statement	24	0.017	0.97	3	5	9	5	9	31	9	113	238	4	6	5	7	21	7	10	15	5	6	5	7	21	7	10	15
+82	simpleGenericTriple	24	0.021	0.98	3	5	9	5	17	29	20	122	252	4	6	5	17	27	20	10	15	5	6	5	17	27	20	10	15
+93	tupleFunction	15	0.006	0.98	3	5	9	5				83	195	4	6	5				10	15	5	6	5				10	15
+68	polymorphism	21	0.021	0.99	3			11	24	68	12	2545	5681	10		6	15	140	14	35	37	10	10	6	15	140	14	35	37
+32	forall	15	0.196	0.99	3	3439	6401	3257	3415		3253			22	28	15				501	590	21	28	15				501	589
+36	functions	24	0.006	1.00	3	5	8	5	6	26	6	81	186	4	6	5	6	19	6	10	15	5	6	5	6	19	6	10	15
+77	result	24	0.072	1.01	3	6	10	6	15	36	15	134	256	5	6	5	10	23	10	10	15	5	6	5	10	23	10	10	15
+64	nested-types	24	0.015	1.01	3	5	9	5	9	31	9	114	238	4	6	4	7	21	7	10	15	5	6	4	7	21	7	10	15
+3	array	24	0.007	1.01	3	5	8	5	6	26	6	78	178	4	6	4	6	19	6	10	15	5	6	4	6	19	6	10	15
+102	voidPtr	24	0.007	1.02	3	5	8	5	6	26	6	78	178	4	6	4	6	19	6	10	15	5	6	4	6	19	6	10	15
+26	enum	24	0.006	1.03	3	5	8	5	6	26	6	78	178	4	6	4	6	19	6	10	15	5	6	4	6	19	6	10	15
+12	cast	24	0.007	1.03	3	5	8	5	6	26	6	78	178	4	6	4	6	19	6	10	15	5	6	4	6	19	6	10	15
+98	typeof	24	0.007	1.03	3	5	8	5	6	26	6	78	178	4	6	4	6	19	6	10	15	5	6	4	6	19	6	10	15
+80	self-assignment	24	0.006	1.04	3	5	9	5	6	27	6	83	195	4	6	4	6	19	6	10	15	5	6	4	6	19	6	10	15
+115	iterator-stdlib	24	0.018	1.04	3	5	8	5	6	26	6	78	178	4	6	4	6	19	6	10	15	5	6	4	6	19	6	10	15
+11	castError	24	0.007	1.04	3	5	8	5	6	26	6	78	178	4	6	4	6	19	6	10	15	5	6	4	6	19	6	10	15
+27	expression	24	0.007	1.04	3	5	8	5	7	26	7	78	178	4	6	4	6	19	7	10	15	5	6	4	6	19	7	10	15
+92	tupleCast	24	0.007	1.05	3	5	8	5	6	26	6	78	178	4	6	5	6	19	6	10	15	5	6	5	6	19	6	10	15
+13	completeTypeError	24	0.008	1.05	3	5	8	5	6	26	6	80	183	4	6	4	6	19	6	10	15	5	6	4	6	19	6	10	15
+66	operators	24	0.006	1.06	3	5	8	5	6	26	6	81	186	4	6	4	6	19	6	10	15	5	6	4	6	19	6	10	15
+59	maybe	24	0.035	1.06	3	5	9	5	11	32	11	117	235	4	6	5	8	22	8	10	15	5	6	5	8	22	8	10	15
+45	identParamDeclarator	24	0.007	1.07	3	5	8	5	6	26	6	78	178	4	6	5	6	19	6	10	15	5	6	5	6	19	6	10	15
+97	typedefRedef	24	0.007	1.07	3	5	8	5	6	26	6	78	178	4	6	4	6	19	6	10	15	5	6	4	6	19	6	10	15
+117	limits-stdlib	21	0.005	1.07	3	5	9	5	7	27	7	84		5	6	5	6	20	6	16		5	6	5	6	20	6	16	
+50	KRfunctions	24	0.006	1.08	3	5	8	5	26	117	27	81	186	4	6	4	26	117	27	10	15	5	6	4	26	117	27	10	15
+16	counter	24	0.007	1.08	3	5	8	5	6	26	6	81	186	4	6	4	6	19	6	10	15	5	6	4	6	19	6	10	15
+60	memberCtors	24	0.006	1.09	3	5	9	5	6	29	6	88	211	4	6	4	6	20	6	10	15	5	6	4	6	20	6	10	15
+121	pair-stdlib	24	0.054	1.10	3	5	9	5	11	31	11	126	245	4	6	5	8	21	8	10	15	5	6	5	8	21	8	10	15
+118	maybe-stdlib	24	0.031	1.17	3	5	9	5	10	30	10	111	226	4	6	5	7	21	7	10	15	5	6	5	7	21	7	10	15
+124	result-stdlib	24	0.073	1.22	3	6	10	6	15	36	15	134	256	5	6	5	10	23	10	10	15	5	6	5	10	23	10	10	15
+88	sync	24	0.007	1.68	3	5	8	5	41	1191	44	78	178	5	6	5	41	1191	44	10	15	5	6	5	41	1191	44	10	15
+84	stdincludes	24	0.002	0.36	4	6	30	7	10	90	10	384	1324	6	10	7	10	53	10	13	18	6	10	7	10	53	10	13	18
+25	else	18	0.179	0.58	4	75	73	26	206	277	154			8	16	10	166	233	196			7	16	10	165	232	196		
+126	stdlib-stdlib	24	0.028	0.62	4	6	18	6	30	68	34	217	688	6	8	6	29	50	34	91	251	6	8	6	30	50	34	91	251
+73	random	18	0.259	0.67	4	25	29	13	52	74	45			7	12	7	33	47	37			6	11	7	32	47	36		
+23	dtor-early-exit	18	0.285	0.69	4	52	45	18	112	149	87			7	13	8	86	119	101			6	13	8	85	118	100		
+6	avl_test	24	0.100	0.71	4	45	241	40	34	137	37	271	660	6	7	6	31	52	34	86	239	6	7	6	31	52	34	86	239
+4	ato	18	0.289	0.76	4	29	32	14	300	395	207			8	13	8	267	378	315			7	12	8	266	376	314		
+96	tupleVariadic	24	0.047	0.76	4	5	14	6	33	59	33	169	504	5	7	5	33	47	33	86	239	5	7	5	33	47	33	86	239
+39	globals	18	0.360	0.81	4	51	44	17	112	149	86			6	12	7	85	118	100			6	12	7	84	117	100		
+76	references	24	0.006	0.99	4	5	9	5	26	38	26	86	204	5	6	5	26	32	26	10	15	5	6	5	26	32	26	10	15
+94	tupleMember	24	0.006	1.00	4	5	9	5	46	64	49	85	201	4	6	5	46	55	49	15	33	5	6	5	46	55	49	15	33
+38	genericUnion	24	0.018	1.04	4	5	9	5	9	29	9	107	218	4	6	5	7	20	7	10	15	5	6	5	7	20	7	10	15
+131	imgui	15	0.013	0.35	5	8	24	10				1350	2715	8	12	10				1337	2634	8	12	10				1337	2634
+113	interpose-stdlib	24	0.002	0.37	5	6	25	6	7	83	7	333	1118	6	9	6	7	43	7	11	17	6	9	6	7	43	7	11	17
+22	div	7	0.287	0.64	5	10		8						9		7						9	11	7					
+2	alloc	24	0.226	0.65	5	6	18	6	30	68	34	229	728	6	9	6	29	52	34	91	250	6	9	6	30	52	34	91	250
+35	function-operator	22	0.300	0.69	5	35	43	18	88	125	78			8	16	9	85	120	99	4258	5854	8	17	9	85	119	99	4258	6045
+33	forctrl	9	0.369	0.73	5	1543	895	274						14	74	15						13	73	14					
+74	rational	9	0.432	0.74	5				250	282	154											60	26	13	109	158	70		
+86	swap	9	0.286	0.77	5	1577	912	280						15	80	17						13	79	16					
+99	user_literals	18	0.347	0.77	5	51	44	17	112	149	86			6	12	7	85	119	100			6	12	7	84	118	100		
+123	rational-stdlib	17	0.340	0.78	5	32		17	97	150	87			8	14	9	68	147	76			8	14	9	68	147	76		
+44	identity	18	0.382	0.81	5	58	49	19	125	155	87			7	14	8	86	124	101			6	13	8	85	123	101		
+47	init_once	24	0.006	0.82	5	5	9	5	7	28	7	90	212	5	6	5	6	20	6	10	15	5	6	5	6	20	6	10	15
+130	glm	23	0.206	1.43	5	14	23	14	25	55	26	3197		16	23	13	21	43	23	38	36	14	20	13	21	43	23	34	33
+31	fmtLines	18	0.185	0.55	6	11	23	8	15	79	14			6	9	6	9	43	10			6	9	6	9	43	10		
+78	runningTotal	18	0.185	0.55	6	358	319	102	3349	4563	2516			9	34	11	2126	2999	2524			8	33	10	2126	2999	2524		
+30	fibonacci	18	0.185	0.55	6	358	319	102	3349	4563	2516			9	34	11	2126	2999	2524			8	33	10	2126	2999	2524		
+67	pingpong	18	0.184	0.55	6	7	23	7	12	79	12			6	9	6	9	43	9			6	9	6	9	43	9		
+58	matrixSum	18	0.168	0.62	6	26	31	14	52	124	46			7	12	8	35	84	37			7	12	8	33	84	37		
+70	prodcons	15	0.170	0.62	6	93	69	26	7601		5047			9	18	10	6389		7718			7	18	10	6389		7718		
+24	dtor	18	0.168	0.62	6	8	31	8	35	124	35			7	11	7	33	84	33			7	11	7	33	84	35		
+62	monitor	18	0.168	0.62	6	26	32	14	52	125	47			7	12	8	33	85	37			7	12	8	33	85	37		
+63	multi-monitor	9	0.168	0.63	6	881	615	192						13	58	15						12	58	15					
+89	thread	18	0.168	0.63	6	53	46	19	117	156	88			8	14	9	87	124	102			7	14	9	86	123	102		
+10	boundedBufferINT	18	0.162	0.63	6	53	47	19	114	156	88			8	14	9	87	120	102			8	14	9	86	119	102		
+9	boundedBufferEXT	18	0.161	0.63	6	53	47	19	114	156	88			8	14	9	87	120	102			7	14	9	86	119	102		
+104	when	18	0.166	0.64	6	53	46	19	113	152	88			8	14	9	87	121	102			7	14	9	86	121	102		
+75	recurse	18	0.166	0.64	6	25	31	14	43	125	36			7	12	8	33	85	35			7	11	8	33	85	35		
+71	quickSort	18	0.166	0.64	6	12	30	9	96	996	102			9	12	8	96	996	102			7	12	8	96	996	102		
+7	barge	18	0.166	0.64	6	26	31	14	52	127	47			7	12	8	33	86	38			7	12	8	33	86	37		
+122	preemption-stdlib	18	0.021	0.66	6	8	40	8	37	165	39			7	13	8	37	111	38			7	13	8	37	111	38		
+83	statement	9	0.166	0.67	6	143	87	32						11	21	11						8	20	11					
+72	quoted_keyword	18	0.364	0.68	6	24	29	12	52	83	45			6	11	6	32	53	36			6	11	6	32	53	36		
+1	abs	9	0.290	0.68	6	181	111	37						10	24	11						8	22	10					
+41	heap	24	0.031	0.70	6	7	30	7	35	120	35	407	1322	6	11	7	33	81	33	92	252	6	11	7	33	81	35	92	252
+116	kernel-stdlib	9	0.020	0.70	6	8	45	9						8	15	8						8	15	8					
+15	coroutineYield	18	0.150	0.76	6	8	32	8	36	130	36			8	13	8	33	88	35			7	13	8	33	88	35		
+103	wait	18	0.146	0.78	6	8	32	8	36	135	36			8	13	8	33	91	35			7	13	8	33	91	35		
+21	disjoint	18	0.147	0.78	6	53	47	20	114	156	88			8	14	9	87	120	102			8	14	9	87	120	102		
+79	searchsort	9	0.286	0.79	6	1897	1103	362						15	54	19						15	53	18					
+69	preempt	18	0.028	0.79	6	7	30	7	38	125	35			6	12	7	33	84	35			7	12	7	33	84	35		
+127	thread-stdlib	18	0.028	0.81	6	7	32	7	35	131	35			6	12	7	33	88	35			6	13	7	33	88	35		
+109	coroutine-stdlib	18	0.026	0.81	6	7	32	7	38	131	35			7	13	7	33	89	35			7	13	7	33	89	35		
+129	vector-stdlib	24	0.095	0.82	6	6	15	6	37	69	39	227	573	55	52	18	150	103	43	86	240	55	52	18	150	103	43	86	240
+106	alarm-stdlib	18	0.027	0.84	6	7	32	7	35	130	36			6	12	7	33	88	35			6	12	7	33	88	35		
+128	time-stdlib	9	0.233	0.87	6	53	44	20						7	12	9						6	12	9					
+120	mutex-stdlib	18	0.032	0.93	6	8	33	8	37	136	39			7	13	7	34	92	35			7	13	7	34	92	35		
+119	monitor-stdlib	18	0.028	1.02	6	8	31	8	35	130	38			7	12	8	33	88	35			7	12	8	33	88	35		
+57	math4	9	0.256	1.33	6	1273	641	197						15	61	15						12	59	15					
+14	complex	9	0.273	0.45	7	280	126	42						12	26	11						7	24	11					
+18	datingService	22	0.155	0.63	7	7	31	7	36	126	38			7	11	7	33	85	35	92	252	7	11	7	33	85	35	92	252
+112	heap-stdlib	15	0.025	0.65	7	7	41	7				315	937	7	13	7				91	251	7	14	7				91	251
+61	minmax	9	0.289	0.77	7	1285	649	198						17	61	15						12	58	15					
+8	block	18	0.147	0.79	7	13	32	9	94	133	56			10	13	9	70	100	80			8	13	9	69	98	80		
+101	vector	16	0.406	1.08	7	154	55	21	2714	2909	1309			12	19	10	6539		7717			7	15	9	6538		7717		
+56	math3	9	0.257	1.29	8	4559	1570	465						27	130	25						21	127	24					
+55	math2	9	0.257	1.32	8	4559	1571	465						28	131	25						21	128	24					
+85	sum	9	0.288	0.76	9	358		98			7440			335	113	29						10	30	12					
+90	time	9	0.290	1.08	9	880	612	191						19	56	14						11	56	14					
+40	gmp	9	0.256	1.25	9	240	93	32						13	24	11						8	22	11					
+54	math1	8	0.256	1.29	10		2371	690						47	193	36						29	186	35					
+34	fstream_test	9	0.381	0.75	11	1154	814	194						39	50	13						10	50	11					
+91	tupleAssign	9	0.377	0.90	12	1620	458	136						42	56	16						11	49	14					
+48	io1	3	0.381	1.09	24																	26	187	44					
+49	io2	6	0.376	1.39	34									104	520	79						70	516	78					
Index: doc/theses/aaron_moss_PhD/phd/evaluation/metric-plots.gp
===================================================================
--- doc/theses/aaron_moss_PhD/phd/evaluation/metric-plots.gp	(revision 92d41a4af1542b1fcfd3bacde48933e4c8519366)
+++ doc/theses/aaron_moss_PhD/phd/evaluation/metric-plots.gp	(revision 92d41a4af1542b1fcfd3bacde48933e4c8519366)
@@ -0,0 +1,21 @@
+set terminal pdfcairo size 6,6
+
+set datafile separator "\t"
+set key autotitle columnheader
+
+# MEMORY BY MAX EXPR. DEPTH #
+set output "mem-by-max-depth.pdf"
+
+set logscale x
+set logscale y
+set xlabel "Maximum expression depth"
+set ylabel "MB"
+
+plot for [COL=7:30] 'evaluation/mem-by-max-depth.tsv' using 6:COL with linespoints
+
+# TIME BY MAX EXPR. DEPTH #
+set output "time-by-max-depth.pdf"
+
+set ylabel "seconds"
+
+plot for [COL=7:30] 'evaluation/time-by-max-depth.tsv' using 6:COL with linespoints
Index: doc/theses/aaron_moss_PhD/phd/evaluation/per-prob-scatter.gp
===================================================================
--- doc/theses/aaron_moss_PhD/phd/evaluation/per-prob-scatter.gp	(revision 92d41a4af1542b1fcfd3bacde48933e4c8519366)
+++ doc/theses/aaron_moss_PhD/phd/evaluation/per-prob-scatter.gp	(revision 92d41a4af1542b1fcfd3bacde48933e4c8519366)
@@ -0,0 +1,47 @@
+# set terminal pdfcairo size 6,3
+# BUILD = "build/"
+set terminal pslatex size 6.25,2.5 color solid
+
+set datafile separator ","
+
+tests = "io1 io2 math1 math2 math3 math4 minmax rational searchsort swap kernel preemption imgui"
+
+# BY DEPTH #
+set output BUILD."per-prob-depth.tex"
+
+set xlabel "max depth"
+set ylabel "runtime (ms)"
+set logscale xy
+
+set key outside
+
+plot for [i=1:words(tests)] 'evaluation/per_prob/'.word(tests, i).'-per-prob.csv' using 2:(column(7)/1000) title word(tests, i)
+
+# # BY PARAMETER LIST WIDTH #
+# set output BUILD."per-prob-params.pdf"
+
+# set xlabel "max params"
+
+# plot for [i=1:words(tests)] 'evaluation/per_prob/'.word(tests, i).'-per-prob.csv' using 3:(column(7)/1000) title word(tests, i)
+
+# BY SUBEXPRS #
+set output BUILD."per-prob-subs.tex"
+
+set xlabel "number of subexpressions"
+
+plot for [i=1:words(tests)] 'evaluation/per_prob/'.word(tests, i).'-per-prob.csv' using 4:(column(7)/1000) title word(tests, i)
+
+# # BY MAX OVERLOADS #
+# set output BUILD."per-prob-overloads.pdf"
+
+# set xlabel "max name overloads"
+
+# plot for [i=1:words(tests)] 'evaluation/per_prob/'.word(tests, i).'-per-prob.csv' using 5:(column(7)/1000) title word(tests, i)
+
+# BY ASSERTIONS #
+set output BUILD."per-prob-assns.tex"
+
+set xlabel "assertions resolved"
+
+plot for [i=1:words(tests)] 'evaluation/per_prob/'.word(tests, i).'-per-prob.csv' using 6:(column(7)/1000) title word(tests, i)
+
Index: doc/theses/aaron_moss_PhD/phd/evaluation/per-prob.gp
===================================================================
--- doc/theses/aaron_moss_PhD/phd/evaluation/per-prob.gp	(revision 92d41a4af1542b1fcfd3bacde48933e4c8519366)
+++ doc/theses/aaron_moss_PhD/phd/evaluation/per-prob.gp	(revision 92d41a4af1542b1fcfd3bacde48933e4c8519366)
@@ -0,0 +1,29 @@
+# set terminal pdfcairo linewidth 3 size 6,3
+# set output "per-prob-histo.pdf"
+set terminal pslatex size 6.25,2.125 color solid
+set output BUILD."per-prob-histo.tex"
+
+set linetype 1 lc rgb 'black'
+set linetype 2 lc rgb 'red'
+set linetype 3 lc rgb 'blue'
+set linetype 4 lc rgb 'green'
+
+set style data histogram
+set style histogram cluster # gap 2
+set style fill pattern 4 border lt -1
+
+set xlabel "expression time (ms)"
+set xtics nomirror
+
+set ylabel "count"
+set logscale y
+set format y "$%.0f$"
+set ytics autofreq nomirror
+
+set y2label "ms"
+set logscale y2
+set format y2 "$%.0f$"
+set y2tics autofreq nomirror
+
+plot 'evaluation/per-prob.tsv' using 2:xticlabels(1) title 'expressions (count)',\
+     'evaluation/per-prob.tsv' using (column(3)/1000):xticlabels(1) title 'total time (ms)' axes x1y2
Index: doc/theses/aaron_moss_PhD/phd/evaluation/per-prob.tsv
===================================================================
--- doc/theses/aaron_moss_PhD/phd/evaluation/per-prob.tsv	(revision 92d41a4af1542b1fcfd3bacde48933e4c8519366)
+++ doc/theses/aaron_moss_PhD/phd/evaluation/per-prob.tsv	(revision 92d41a4af1542b1fcfd3bacde48933e4c8519366)
@@ -0,0 +1,7 @@
+#"bin"	"in bin"	"summed time"	"% exprs"	"% time"
+"$<0.01$"	10866	20422	0.527	0.001
+"$<0.1$"	1514	68775	0.073	0.003
+"$<1$"	4584	1748119	0.222	0.065
+"$<10$"	3421	6613230	0.166	0.248
+"$<100$"	201	8133176	0.010	0.304
+"$<1000$"	46	10135929	0.002	0.379
Index: doc/theses/aaron_moss_PhD/phd/evaluation/per_prob/imgui-per-prob.csv
===================================================================
--- doc/theses/aaron_moss_PhD/phd/evaluation/per_prob/imgui-per-prob.csv	(revision 92d41a4af1542b1fcfd3bacde48933e4c8519366)
+++ doc/theses/aaron_moss_PhD/phd/evaluation/per_prob/imgui-per-prob.csv	(revision 92d41a4af1542b1fcfd3bacde48933e4c8519366)
@@ -0,0 +1,7115 @@
+3583,2,1,2,377,0,50
+3584,2,3,4,377,0,151
+3585,2,1,2,54,0,27
+3586,1,0,1,0,0,2
+3587,1,0,1,0,0,2
+3588,2,1,2,377,0,23
+3589,2,3,4,377,0,155
+3590,2,1,2,54,0,24
+3591,1,0,1,0,0,2
+3592,1,0,1,0,0,1
+3593,2,1,2,377,0,22
+3594,2,3,4,377,0,157
+3595,2,1,2,54,0,30
+3596,1,0,1,0,0,7
+3597,1,0,1,0,0,3
+3598,2,1,2,377,0,22
+3599,2,3,4,377,0,144
+3600,2,1,2,54,0,19
+3601,1,0,1,0,0,2
+3602,1,0,1,0,0,2
+3603,2,1,2,377,0,23
+3604,2,3,4,377,0,147
+3605,2,1,2,54,0,19
+3606,1,0,1,0,0,2
+3607,1,0,1,0,0,2
+3608,2,1,2,377,0,24
+3609,2,3,4,377,0,174
+3610,2,1,2,54,0,25
+3611,1,0,1,0,0,2
+3612,1,0,1,0,0,4
+3613,2,1,2,377,0,22
+3614,2,5,6,377,0,173
+3615,2,1,2,54,0,19
+3616,1,0,1,0,0,1
+3617,1,0,1,0,0,2
+3618,1,0,1,0,0,1
+3619,1,0,1,0,0,2
+3620,2,1,2,377,0,20
+3621,2,5,6,377,0,163
+3622,2,1,2,54,0,19
+3623,1,0,1,0,0,2
+3624,1,0,1,0,0,2
+3625,1,0,1,0,0,2
+3626,1,0,1,0,0,5
+3627,2,1,2,377,0,25
+3628,2,3,4,377,0,153
+3629,2,1,2,54,0,29
+3630,1,0,1,0,0,2
+3631,1,0,1,0,0,2
+3632,2,1,2,377,0,29
+3633,2,3,4,377,0,157
+3634,2,1,2,54,0,26
+3635,1,0,1,0,0,2
+3636,1,0,1,0,0,3
+3637,2,1,2,377,0,24
+3638,2,5,6,377,0,170
+3639,2,1,2,54,0,25
+3640,1,0,1,0,0,2
+3641,1,0,1,0,0,2
+3642,1,0,1,0,0,3
+3643,1,0,1,0,0,2
+3644,2,1,2,377,0,19
+3645,2,5,6,377,0,157
+3646,2,1,2,54,0,18
+3647,1,0,1,0,0,2
+3648,1,0,1,0,0,2
+3649,1,0,1,0,0,2
+3650,1,0,1,0,0,2
+3651,2,1,2,377,0,24
+3652,2,3,4,377,0,151
+3653,2,1,2,54,0,28
+3654,1,0,1,0,0,2
+3655,1,0,1,0,0,3
+3656,2,1,2,377,0,19
+3657,2,3,4,377,0,134
+3658,2,1,2,54,0,18
+3659,1,0,1,0,0,2
+3660,1,0,1,0,0,2
+3661,2,1,2,377,0,22
+3662,2,3,4,377,0,146
+3663,2,1,2,54,0,28
+3664,1,0,1,0,0,2
+3665,1,0,1,0,0,2
+3666,2,1,2,377,0,21
+3667,2,3,4,377,0,145
+3668,2,1,2,54,0,23
+3669,1,0,1,0,0,2
+3670,1,0,1,0,0,2
+3671,2,1,2,377,0,22
+3672,3,3,5,377,0,394
+3673,2,1,2,54,0,24
+3674,2,1,2,18,0,82
+3675,1,0,1,0,0,2
+3676,2,1,2,377,0,23
+3677,2,3,4,377,0,153
+3678,2,1,2,54,0,19
+3679,1,0,1,0,0,2
+3680,1,0,1,0,0,2
+3681,2,1,2,377,0,23
+3682,2,3,4,377,0,145
+3683,2,1,2,54,0,24
+3684,1,0,1,0,0,2
+3685,1,0,1,0,0,3
+3686,2,1,2,377,0,20
+3687,2,3,4,377,0,138
+3688,2,1,2,54,0,18
+3689,1,0,1,0,0,2
+3690,1,0,1,0,0,2
+3691,2,1,2,377,0,30
+3692,2,3,4,377,0,160
+3693,2,1,2,54,0,22
+3694,1,0,1,0,0,2
+3695,1,0,1,0,0,3
+3696,2,1,2,377,0,20
+3697,2,3,4,377,0,136
+3698,2,1,2,54,0,17
+3699,1,0,1,0,0,2
+3700,1,0,1,0,0,1
+3701,2,2,3,377,0,1391
+3702,2,2,3,377,0,1383
+3703,2,2,3,377,0,1402
+3704,2,2,3,377,0,1397
+3705,2,2,3,377,0,1377
+3706,2,2,3,377,0,1414
+3707,2,2,3,377,0,1391
+3708,2,2,3,377,0,1401
+3709,2,2,3,377,0,1380
+3710,2,2,3,377,0,1404
+3711,2,2,3,377,0,1387
+3712,2,2,3,377,0,1278
+3713,2,2,3,377,0,1375
+3714,2,2,3,377,0,1395
+3715,2,2,3,377,0,1403
+3716,2,2,3,377,0,1406
+3717,2,2,3,377,0,1422
+3718,2,2,3,377,0,1309
+3719,2,2,3,377,0,1363
+3720,2,2,3,377,0,1425
+3721,2,2,3,377,0,1285
+3722,2,2,3,377,0,1383
+3723,2,2,3,377,0,1409
+3724,2,2,3,377,0,1314
+3725,2,2,3,377,0,1405
+3726,2,2,3,377,0,1383
+3727,2,2,3,377,0,1404
+3728,2,2,3,377,0,1413
+3729,2,2,3,377,0,1425
+3730,2,2,3,377,0,1381
+3731,2,2,3,377,0,1380
+3732,2,2,3,377,0,1441
+3733,2,2,3,377,0,1382
+3734,2,2,3,377,0,1402
+3735,2,2,3,377,0,1419
+3736,2,2,3,377,0,1403
+3737,2,2,3,377,0,1422
+3738,2,2,3,377,0,1408
+3739,2,2,3,377,0,1380
+3740,2,2,3,377,0,1446
+3741,2,2,3,377,0,1442
+3742,2,2,3,377,0,1391
+3743,2,2,3,377,0,1435
+3744,2,2,3,377,0,1307
+3745,2,2,3,377,0,1381
+3746,2,2,3,377,0,1471
+3747,2,2,3,377,0,1414
+3748,2,2,3,377,0,1412
+3749,2,2,3,377,0,1450
+3750,2,2,3,377,0,1406
+3751,2,2,3,377,0,1451
+3752,2,2,3,377,0,1287
+3753,2,2,3,377,0,1386
+3754,2,2,3,377,0,1427
+3755,2,2,3,377,0,1320
+3756,2,2,3,377,0,1392
+3757,2,2,3,377,0,1359
+3758,2,2,3,377,0,1368
+3759,2,2,3,377,0,1391
+3760,2,2,3,377,0,1438
+3761,2,2,3,377,0,1419
+3762,2,2,3,377,0,1407
+3763,2,2,3,377,0,1442
+3764,2,2,3,377,0,1468
+3765,2,2,3,377,0,1395
+3766,2,2,3,377,0,1419
+3767,2,2,3,377,0,1430
+3768,2,2,3,377,0,1424
+3769,2,2,3,377,0,1419
+3770,2,2,3,377,0,1425
+3771,2,2,3,377,0,1426
+3772,2,2,3,377,0,1474
+3773,2,2,3,377,0,1401
+3774,2,2,3,377,0,1420
+3775,2,2,3,377,0,1447
+3776,2,2,3,377,0,1430
+3777,2,2,3,377,0,1438
+3778,2,2,3,377,0,1431
+3779,2,2,3,377,0,1413
+3780,2,2,3,377,0,1457
+3781,2,2,3,377,0,1432
+3782,2,2,3,377,0,1458
+3783,2,2,3,377,0,1417
+3784,2,2,3,377,0,1450
+3785,2,2,3,377,0,1425
+3786,2,2,3,377,0,1446
+3787,2,2,3,377,0,1420
+3788,2,2,3,377,0,1427
+3789,2,2,3,377,0,1482
+3790,2,2,3,377,0,1419
+3791,2,2,3,377,0,1379
+3792,2,2,3,377,0,1395
+3793,2,2,3,377,0,1442
+3794,2,2,3,377,0,1431
+3795,2,2,3,377,0,1369
+3796,2,2,3,377,0,1412
+3797,2,2,3,377,0,1445
+3798,2,2,3,377,0,1432
+3799,2,2,3,377,0,1468
+3800,2,2,3,377,0,1429
+3801,2,2,3,377,0,1437
+3802,2,2,3,377,0,1429
+3803,2,2,3,377,0,1421
+3804,2,2,3,377,0,1498
+3805,2,2,3,377,0,1437
+3806,2,2,3,377,0,1432
+3807,2,2,3,377,0,1444
+3808,2,2,3,377,0,1409
+3809,2,2,3,377,0,1416
+3810,2,2,3,377,0,1447
+3811,2,2,3,377,0,1444
+3812,2,2,3,377,0,1414
+3813,2,2,3,377,0,1441
+3814,2,2,3,377,0,1434
+3815,2,2,3,377,0,1427
+3816,2,2,3,377,0,1436
+3817,2,2,3,377,0,1412
+3818,2,2,3,377,0,1414
+3819,2,2,3,377,0,1411
+3820,2,2,3,377,0,1419
+3821,2,2,3,377,0,1400
+3822,2,2,3,377,0,1401
+3823,2,2,3,377,0,1388
+3824,2,2,3,377,0,1413
+3825,2,2,3,377,0,1399
+3826,2,2,3,377,0,1394
+3827,2,2,3,377,0,1405
+3828,2,2,3,377,0,1405
+3829,2,2,3,377,0,1420
+3830,2,2,3,377,0,1431
+3831,2,2,3,377,0,1421
+3832,2,2,3,377,0,1442
+3833,2,2,3,377,0,1391
+3834,2,2,3,377,0,1423
+3835,2,2,3,377,0,1424
+3836,2,2,3,377,0,1407
+3837,2,2,3,377,0,1407
+3838,2,2,3,377,0,1428
+3839,2,2,3,377,0,1422
+3840,2,2,3,377,0,1425
+3841,2,2,3,377,0,1428
+3842,2,2,3,377,0,1406
+3843,2,2,3,377,0,1424
+3844,2,2,3,377,0,1411
+3845,2,2,3,377,0,1412
+3846,2,2,3,377,0,1436
+3847,2,2,3,377,0,1426
+3848,2,2,3,377,0,1418
+3849,2,2,3,377,0,1429
+3850,2,2,3,377,0,1392
+3851,2,2,3,377,0,1410
+3852,2,2,3,377,0,1421
+3853,2,2,3,377,0,1428
+3854,2,2,3,377,0,1410
+3855,2,2,3,377,0,1420
+3856,2,2,3,377,0,1430
+3857,2,2,3,377,0,1427
+3858,2,2,3,377,0,1410
+3859,2,2,3,377,0,1434
+3860,2,2,3,377,0,1428
+3861,2,2,3,377,0,1413
+3862,2,2,3,377,0,1419
+3863,2,2,3,377,0,1433
+3864,2,2,3,377,0,1418
+3865,2,2,3,377,0,1361
+3866,2,2,3,377,0,1434
+3867,2,2,3,377,0,1430
+3868,2,2,3,377,0,1419
+3869,2,2,3,377,0,1441
+3870,2,1,2,377,0,20
+3871,2,3,4,377,0,149
+3872,2,1,2,54,0,25
+3873,1,0,1,0,0,2
+3874,1,0,1,0,0,5
+3875,2,1,2,377,0,26
+3876,2,3,4,377,0,145
+3877,2,1,2,54,0,26
+3878,1,0,1,0,0,2
+3879,1,0,1,0,0,4
+3880,2,1,2,377,0,24
+3881,2,3,4,377,0,148
+3882,2,1,2,54,0,18
+3883,1,0,1,0,0,2
+3884,1,0,1,0,0,2
+3885,2,1,2,377,0,32
+3886,2,3,4,377,0,135
+3887,2,1,2,54,0,18
+3888,1,0,1,0,0,2
+3889,1,0,1,0,0,1
+3890,2,1,2,377,0,19
+3891,2,3,4,377,0,150
+3892,2,1,2,54,0,19
+3893,1,0,1,0,0,2
+3894,1,0,1,0,0,2
+3895,2,1,2,377,0,22
+3896,2,3,4,377,0,147
+3897,2,1,2,54,0,29
+3898,1,0,1,0,0,2
+3899,1,0,1,0,0,2
+3900,2,2,3,377,0,1431
+3901,2,2,3,377,0,1374
+3902,2,1,2,377,0,20
+3903,2,3,4,377,0,139
+3904,2,1,2,54,0,26
+3905,1,0,1,0,0,2
+3906,1,0,1,0,0,2
+3917,3,2,5,377,,163
+3932,2,1,2,378,,20
+3933,2,2,3,378,0,139
+3934,2,1,2,55,0,18
+3935,1,0,1,1,0,3
+3936,2,2,3,20,0,57
+3937,2,2,3,378,0,143
+3949,3,2,5,377,,172
+3964,2,1,2,378,,18
+3965,2,2,3,378,0,137
+3966,2,1,2,55,0,18
+3967,1,0,1,1,0,3
+3968,2,2,3,20,0,56
+3969,2,2,3,378,0,148
+3978,3,2,5,377,0,1461
+3979,2,2,3,377,0,1261
+3988,3,2,5,377,0,1413
+3989,2,2,3,377,0,1377
+3998,3,2,5,377,0,1433
+3999,2,2,3,377,0,1379
+4008,3,2,5,377,0,1466
+4009,2,2,3,377,0,1362
+4018,3,2,5,377,0,1477
+4019,2,2,3,377,0,1353
+4028,3,2,5,377,0,1416
+4029,2,2,3,377,0,1392
+4039,1,0,1,0,0,2
+4040,2,2,3,377,0,1443
+4041,2,2,3,377,0,1367
+4042,1,0,1,0,0,2
+4043,4,2,7,377,0,1704
+4044,2,2,3,377,0,1371
+4045,2,2,3,377,0,1407
+4046,1,0,1,0,0,2
+4047,1,0,1,0,0,2
+4048,2,2,3,10,0,109
+4049,1,0,1,0,0,3
+4050,2,2,3,18,0,154
+4051,2,2,3,18,0,154
+4052,3,2,5,377,0,1516
+4053,2,2,3,377,0,1316
+4074,1,0,1,0,0,2
+4075,2,2,3,380,0,169
+4076,2,2,3,380,0,150
+4077,2,1,2,380,0,26
+4078,2,2,3,380,0,162
+4079,2,1,2,55,0,25
+4080,1,0,1,0,0,2
+4081,1,0,1,0,0,3
+4082,2,2,3,10,0,101
+4083,1,0,1,0,0,2
+4084,3,2,5,57,0,47
+4085,3,2,5,57,0,47
+4086,3,2,5,380,0,148
+4087,2,2,3,380,0,142
+4097,1,0,1,0,0,2
+4098,2,2,3,377,0,1232
+4099,2,2,3,377,0,1338
+4100,1,0,1,0,0,2
+4101,4,2,7,377,0,1723
+4102,2,2,3,377,0,1364
+4103,2,2,3,377,0,1412
+4104,1,0,1,0,0,2
+4105,1,0,1,0,0,2
+4106,2,2,3,10,0,110
+4107,1,0,1,0,0,3
+4108,2,2,3,18,0,164
+4109,2,2,3,18,0,153
+4110,3,2,5,377,0,1514
+4111,2,2,3,377,0,1329
+4120,1,0,1,0,0,2
+4121,2,2,3,377,0,1302
+4122,2,2,3,377,0,1315
+4123,4,2,7,377,0,1831
+4124,2,2,3,377,0,1378
+4133,3,2,5,56,0,657
+4134,2,2,3,377,0,1223
+4135,2,2,3,377,0,1327
+4144,3,2,5,56,0,625
+4145,2,2,3,377,0,1234
+4146,2,2,3,377,0,1351
+4155,3,2,5,56,0,658
+4156,2,2,3,377,0,1244
+4157,2,2,3,377,0,1363
+4166,3,2,5,56,0,640
+4167,2,2,3,377,0,1258
+4168,2,2,3,377,0,1406
+4196,1,0,1,0,0,2
+4197,1,0,1,0,0,2
+4198,2,2,3,377,0,149
+4199,2,2,3,377,0,151
+4223,2,2,3,377,0,1290
+4224,1,0,1,0,0,2
+4225,1,0,1,0,0,2
+4226,1,0,1,0,0,2
+4227,2,2,3,377,0,1402
+4228,1,0,1,0,0,2
+4229,1,0,1,0,0,2
+4230,1,0,1,0,0,4
+4240,2,2,3,377,0,1374
+4241,1,0,1,0,0,2
+4242,1,0,1,0,0,2
+4243,1,0,1,0,0,2
+4244,2,2,3,377,0,1403
+4245,1,0,1,0,0,2
+4246,1,0,1,0,0,2
+4247,1,0,1,0,0,2
+4256,2,2,3,377,0,1394
+4257,1,0,1,0,0,2
+4258,1,0,1,0,0,2
+4259,1,0,1,0,0,5
+4260,2,2,3,377,0,1412
+4261,1,0,1,0,0,2
+4262,1,0,1,0,0,2
+4263,1,0,1,0,0,4
+4274,2,2,3,377,0,1410
+4275,1,0,1,0,0,2
+4276,1,0,1,0,0,3
+4277,1,0,1,0,0,1
+4278,1,0,1,0,0,2
+4279,1,0,1,0,0,2
+4280,1,0,1,0,0,2
+4281,1,0,1,0,0,2
+4282,2,2,3,377,0,1481
+4283,1,0,1,0,0,2
+4284,1,0,1,0,0,1
+4285,1,0,1,0,0,1
+4286,1,0,1,0,0,1
+4287,2,2,3,377,0,117
+4288,2,2,3,377,0,143
+4298,2,2,3,377,0,1371
+4299,1,0,1,0,0,1
+4300,1,0,1,0,0,1
+4301,1,0,1,0,0,1
+4302,2,2,3,377,0,1361
+4303,1,0,1,0,0,2
+4304,1,0,1,0,0,2
+4305,1,0,1,0,0,2
+4316,2,2,3,377,0,1372
+4317,1,0,1,0,0,2
+4318,1,0,1,0,0,2
+4319,1,0,1,0,0,2
+4320,2,2,3,377,0,1382
+4321,1,0,1,0,0,2
+4322,1,0,1,0,0,2
+4323,1,0,1,0,0,2
+4335,2,2,3,377,0,1373
+4336,1,0,1,0,0,2
+4337,1,0,1,0,0,2
+4338,1,0,1,0,0,2
+4339,2,2,3,377,0,1375
+4340,1,0,1,0,0,2
+4341,1,0,1,0,0,2
+4342,1,0,1,0,0,2
+4355,2,2,3,377,0,1383
+4356,1,0,1,0,0,2
+4357,1,0,1,0,0,2
+4358,1,0,1,0,0,2
+4359,2,2,3,377,0,1427
+4360,1,0,1,0,0,2
+4361,1,0,1,0,0,2
+4362,1,0,1,0,0,2
+4376,2,2,3,377,0,1384
+4377,1,0,1,0,0,2
+4378,1,0,1,0,0,2
+4379,1,0,1,0,0,2
+4380,2,2,3,377,0,1381
+4381,1,0,1,0,0,2
+4382,1,0,1,0,0,2
+4383,1,0,1,0,0,2
+4393,2,2,3,377,0,1344
+4394,1,0,1,1,0,3
+4395,2,2,3,11,0,108
+4396,3,2,5,377,0,1739
+4397,2,2,3,377,0,1250
+4425,1,0,1,0,0,2
+4426,1,0,1,0,0,2
+4427,2,2,3,377,0,135
+4428,2,2,3,377,0,139
+4450,3,3,6,56,,59
+4458,3,3,6,56,,64
+4467,3,4,7,56,,76
+4476,3,4,7,1,,45
+4477,5,2,7,377,0,1488
+4478,2,2,3,377,0,1317
+4487,3,3,6,56,,73
+4488,2,2,3,377,0,179
+4489,2,2,3,377,0,147
+4517,1,0,1,0,0,3
+4518,1,0,1,0,0,2
+4519,1,0,1,0,0,2
+4520,1,0,1,0,0,5
+4521,2,2,3,377,0,148
+4522,2,2,3,377,0,148
+4563,3,5,10,56,,102
+4571,3,5,10,56,,105
+4582,3,8,13,56,,153
+4610,1,0,1,0,0,2
+4611,2,2,3,377,0,1284
+4612,2,2,3,377,0,1403
+4640,1,0,1,0,0,2
+4641,2,2,3,377,0,1387
+4642,2,2,3,377,0,1401
+4670,1,0,1,0,0,2
+4671,2,2,3,377,0,1431
+4672,2,2,3,377,0,1395
+4700,1,0,1,0,0,2
+4701,2,2,3,377,0,1420
+4702,2,2,3,377,0,1432
+4730,1,0,1,0,0,3
+4731,2,2,3,377,0,1423
+4732,2,2,3,377,0,1412
+4760,1,0,1,0,0,2
+4761,2,2,3,377,0,1429
+4762,2,2,3,377,0,1438
+4790,1,0,1,0,0,2
+4791,2,2,3,377,0,1442
+4792,2,2,3,377,0,1480
+4820,1,0,1,0,0,2
+4821,2,2,3,377,0,1432
+4822,2,2,3,377,0,1389
+4850,1,0,1,0,0,3
+4851,2,2,3,377,0,1465
+4852,2,2,3,377,0,1399
+4880,1,0,1,0,0,2
+4881,2,2,3,377,0,1454
+4882,2,2,3,377,0,1430
+4910,1,0,1,0,0,2
+4911,2,2,3,377,0,1440
+4912,2,2,3,377,0,1411
+4940,1,0,1,0,0,3
+4941,2,2,3,377,0,1355
+4942,2,2,3,377,0,1371
+4970,1,0,1,0,0,6
+4971,2,2,3,377,0,1413
+4972,2,2,3,377,0,1390
+5000,1,0,1,0,0,4
+5001,2,2,3,377,0,1410
+5002,2,2,3,377,0,1403
+5030,1,0,1,0,0,2
+5031,2,2,3,377,0,1414
+5032,2,2,3,377,0,1354
+5060,1,0,1,0,0,2
+5061,2,2,3,377,0,1421
+5062,2,2,3,377,0,1399
+5090,1,0,1,0,0,2
+5091,2,2,3,377,0,1418
+5092,2,2,3,377,0,1392
+5120,1,0,1,0,0,3
+5121,2,2,3,377,0,1365
+5122,2,2,3,377,0,1408
+5150,1,0,1,0,0,2
+5151,2,2,3,377,0,1418
+5152,2,2,3,377,0,1414
+5160,2,2,3,377,0,1402
+5161,1,0,1,0,0,2
+5162,1,0,1,0,0,1
+5163,1,0,1,0,0,1
+5172,2,2,3,377,0,1407
+5173,1,0,1,0,0,2
+5174,1,0,1,0,0,2
+5175,1,0,1,0,0,2
+5183,2,2,3,377,0,1423
+5184,1,0,1,0,0,2
+5185,1,0,1,0,0,2
+5186,1,0,1,0,0,2
+5196,1,0,1,0,0,2
+5197,1,0,1,0,0,2
+5198,1,0,1,0,0,2
+5199,1,0,1,0,0,2
+5200,1,0,1,0,0,2
+5201,1,0,1,0,0,2
+5202,1,0,1,0,0,2
+5203,1,0,1,0,0,2
+5204,1,0,1,0,0,2
+5205,1,0,1,0,0,1
+5206,1,0,1,0,0,1
+5207,1,0,1,0,0,2
+5208,1,0,1,0,0,2
+5209,1,0,1,0,0,2
+5210,1,0,1,0,0,2
+5211,1,0,1,0,0,3
+5212,1,0,1,0,0,3
+5213,1,0,1,0,0,3
+5214,1,0,1,0,0,2
+5215,1,0,1,0,0,2
+5216,1,0,1,0,0,7
+5217,1,0,1,0,0,6
+5218,1,0,1,0,0,4
+5219,1,0,1,0,0,2
+5220,1,0,1,0,0,4
+5221,1,0,1,0,0,3
+5222,1,0,1,0,0,2
+5223,1,0,1,0,0,1
+5224,1,0,1,0,0,2
+5225,2,2,3,377,0,1388
+5226,1,0,1,0,0,1
+5227,1,0,1,0,0,1
+5228,1,0,1,0,0,1
+5229,1,0,1,0,0,1
+5230,2,2,3,377,0,124
+5231,2,2,3,377,0,152
+5240,2,2,3,377,0,1350
+5241,1,0,1,0,0,2
+5242,1,0,1,0,0,2
+5243,1,0,1,0,0,2
+5253,2,2,3,377,0,1367
+5254,1,0,1,0,0,2
+5255,1,0,1,0,0,1
+5256,1,0,1,0,0,5
+5267,2,2,3,377,0,1366
+5268,1,0,1,0,0,2
+5269,1,0,1,0,0,2
+5270,1,0,1,0,0,2
+5282,2,2,3,377,0,1391
+5283,1,0,1,0,0,2
+5284,1,0,1,0,0,2
+5285,1,0,1,0,0,1
+5298,2,2,3,377,0,1376
+5299,1,0,1,0,0,2
+5300,1,0,1,0,0,2
+5301,1,0,1,0,0,2
+5315,2,2,3,377,0,1425
+5316,1,0,1,0,0,2
+5317,1,0,1,0,0,2
+5318,1,0,1,0,0,2
+5333,2,2,3,377,0,1426
+5334,1,0,1,0,0,2
+5335,1,0,1,0,0,2
+5336,1,0,1,0,0,1
+5352,2,2,3,377,0,1450
+5353,1,0,1,0,0,1
+5354,1,0,1,0,0,1
+5355,1,0,1,0,0,2
+5372,2,2,3,377,0,1399
+5373,1,0,1,0,0,2
+5374,1,0,1,0,0,2
+5375,1,0,1,0,0,2
+5393,2,2,3,377,0,1433
+5394,1,0,1,0,0,1
+5395,1,0,1,0,0,1
+5396,1,0,1,0,0,1
+5415,2,2,3,377,0,1440
+5416,1,0,1,0,0,2
+5417,1,0,1,0,0,2
+5418,1,0,1,0,0,2
+5438,2,2,3,377,0,1444
+5439,1,0,1,0,0,2
+5440,1,0,1,0,0,2
+5441,1,0,1,0,0,1
+5462,2,2,3,377,0,1453
+5463,1,0,1,0,0,2
+5464,1,0,1,0,0,1
+5465,1,0,1,0,0,2
+5487,2,2,3,377,0,1412
+5488,1,0,1,0,0,2
+5489,1,0,1,0,0,2
+5490,1,0,1,0,0,2
+5513,2,2,3,377,0,1415
+5514,1,0,1,0,0,2
+5515,1,0,1,0,0,2
+5516,1,0,1,0,0,1
+5540,2,2,3,377,0,1439
+5541,1,0,1,0,0,2
+5542,1,0,1,0,0,2
+5543,1,0,1,0,0,9
+5568,2,2,3,377,0,1428
+5569,1,0,1,0,0,2
+5570,1,0,1,0,0,2
+5571,1,0,1,0,0,2
+5597,2,2,3,377,0,1423
+5598,1,0,1,0,0,2
+5599,1,0,1,0,0,1
+5600,1,0,1,0,0,2
+5627,2,2,3,377,0,1448
+5628,1,0,1,0,0,2
+5629,1,0,1,0,0,10
+5630,1,0,1,0,0,1
+5658,2,2,3,377,0,1421
+5659,1,0,1,0,0,2
+5660,1,0,1,0,0,1
+5661,1,0,1,0,0,2
+5690,2,2,3,377,0,1484
+5691,1,0,1,0,0,1
+5692,1,0,1,0,0,1
+5693,1,0,1,0,0,1
+5723,2,2,3,377,0,1409
+5724,1,0,1,0,0,2
+5725,1,0,1,0,0,2
+5726,1,0,1,0,0,2
+5757,2,2,3,377,0,1439
+5758,1,0,1,0,0,1
+5759,1,0,1,0,0,1
+5760,1,0,1,0,0,1
+5792,2,2,3,377,0,1435
+5793,1,0,1,0,0,2
+5794,1,0,1,0,0,2
+5795,1,0,1,0,0,2
+5828,2,2,3,377,0,1386
+5829,1,0,1,0,0,2
+5830,1,0,1,0,0,2
+5831,1,0,1,0,0,1
+5865,2,2,3,377,0,1375
+5866,1,0,1,0,0,2
+5867,1,0,1,0,0,2
+5868,1,0,1,0,0,2
+5903,2,2,3,377,0,1386
+5904,1,0,1,0,0,2
+5905,1,0,1,0,0,2
+5906,1,0,1,0,0,4
+5942,2,2,3,377,0,1392
+5943,1,0,1,0,0,2
+5944,1,0,1,0,0,1
+5945,1,0,1,0,0,2
+5982,2,2,3,377,0,1394
+5983,1,0,1,0,0,2
+5984,1,0,1,0,0,1
+5985,1,0,1,0,0,2
+6023,2,2,3,377,0,1391
+6024,1,0,1,0,0,1
+6025,1,0,1,0,0,1
+6026,1,0,1,0,0,2
+6052,2,2,3,377,0,1394
+6053,1,0,1,0,0,2
+6054,1,0,1,0,0,1
+6055,1,0,1,0,0,2
+6056,2,2,3,377,0,1393
+6057,1,0,1,0,0,2
+6058,1,0,1,0,0,2
+6059,1,0,1,0,0,2
+6060,2,2,3,377,0,1392
+6061,1,0,1,0,0,2
+6062,1,0,1,0,0,2
+6063,1,0,1,0,0,2
+6064,2,2,3,377,0,1434
+6065,1,0,1,0,0,2
+6066,1,0,1,0,0,1
+6067,1,0,1,0,0,2
+6068,2,2,3,377,0,1386
+6069,1,0,1,0,0,2
+6070,1,0,1,0,0,2
+6071,1,0,1,0,0,2
+6072,2,2,3,377,0,1418
+6073,1,0,1,0,0,2
+6074,1,0,1,0,0,2
+6075,1,0,1,0,0,2
+6076,2,2,3,377,0,1415
+6077,1,0,1,0,0,2
+6078,1,0,1,0,0,2
+6079,1,0,1,0,0,1
+6080,2,2,3,377,0,1425
+6081,1,0,1,0,0,2
+6082,1,0,1,0,0,1
+6083,1,0,1,0,0,2
+6084,2,2,3,377,0,1380
+6085,1,0,1,0,0,2
+6086,1,0,1,0,0,2
+6087,1,0,1,0,0,1
+6088,2,2,3,377,0,1449
+6089,1,0,1,0,0,2
+6090,1,0,1,0,0,2
+6091,1,0,1,0,0,2
+6092,2,2,3,377,0,1377
+6093,1,0,1,0,0,2
+6094,1,0,1,0,0,2
+6095,1,0,1,0,0,1
+6096,2,2,3,377,0,1427
+6097,1,0,1,0,0,2
+6098,1,0,1,0,0,2
+6099,1,0,1,0,0,1
+6100,2,2,3,377,0,1395
+6101,1,0,1,0,0,2
+6102,1,0,1,0,0,4
+6103,1,0,1,0,0,1
+6104,2,2,3,377,0,1418
+6105,1,0,1,0,0,5
+6106,1,0,1,0,0,2
+6107,1,0,1,0,0,1
+6108,2,2,3,377,0,1491
+6109,1,0,1,0,0,1
+6110,1,0,1,0,0,1
+6111,1,0,1,0,0,1
+6112,2,2,3,377,0,1387
+6113,1,0,1,0,0,2
+6114,1,0,1,0,0,2
+6115,1,0,1,0,0,2
+6116,2,2,3,377,0,1448
+6117,1,0,1,0,0,2
+6118,1,0,1,0,0,1
+6119,1,0,1,0,0,2
+6120,2,2,3,377,0,1434
+6121,1,0,1,0,0,2
+6122,1,0,1,0,0,2
+6123,1,0,1,0,0,1
+6124,2,2,3,377,0,1424
+6125,1,0,1,0,0,1
+6126,1,0,1,0,0,1
+6127,1,0,1,0,0,1
+6154,2,2,3,377,0,1435
+6155,1,0,1,0,0,2
+6156,1,0,1,0,0,2
+6157,1,0,1,0,0,1
+6158,2,2,3,377,0,1417
+6159,1,0,1,0,0,2
+6160,1,0,1,0,0,2
+6161,1,0,1,0,0,2
+6162,2,2,3,377,0,1438
+6163,1,0,1,0,0,2
+6164,1,0,1,0,0,2
+6165,1,0,1,0,0,2
+6166,2,2,3,377,0,1424
+6167,1,0,1,0,0,1
+6168,1,0,1,0,0,1
+6169,1,0,1,0,0,2
+6170,2,2,3,377,0,1432
+6171,1,0,1,0,0,2
+6172,1,0,1,0,0,2
+6173,1,0,1,0,0,2
+6174,2,2,3,377,0,1423
+6175,1,0,1,0,0,2
+6176,1,0,1,0,0,2
+6177,1,0,1,0,0,2
+6178,2,2,3,377,0,1443
+6179,1,0,1,0,0,2
+6180,1,0,1,0,0,2
+6181,1,0,1,0,0,2
+6182,2,2,3,377,0,1420
+6183,1,0,1,0,0,2
+6184,1,0,1,0,0,2
+6185,1,0,1,0,0,1
+6186,2,2,3,377,0,1436
+6187,1,0,1,0,0,2
+6188,1,0,1,0,0,2
+6189,1,0,1,0,0,2
+6190,2,2,3,377,0,1419
+6191,1,0,1,0,0,2
+6192,1,0,1,0,0,2
+6193,1,0,1,0,0,2
+6194,2,2,3,377,0,1408
+6195,1,0,1,0,0,2
+6196,1,0,1,0,0,2
+6197,1,0,1,0,0,2
+6198,2,2,3,377,0,1454
+6199,1,0,1,0,0,2
+6200,1,0,1,0,0,2
+6201,1,0,1,0,0,2
+6202,2,2,3,377,0,1424
+6203,1,0,1,0,0,2
+6204,1,0,1,0,0,2
+6205,1,0,1,0,0,2
+6206,2,2,3,377,0,1464
+6207,1,0,1,0,0,2
+6208,1,0,1,0,0,2
+6209,1,0,1,0,0,2
+6210,2,2,3,377,0,1441
+6211,1,0,1,0,0,3
+6212,1,0,1,0,0,2
+6213,1,0,1,0,0,5
+6214,2,2,3,377,0,1428
+6215,1,0,1,0,0,2
+6216,1,0,1,0,0,2
+6217,1,0,1,0,0,1
+6218,2,2,3,377,0,1441
+6219,1,0,1,0,0,2
+6220,1,0,1,0,0,2
+6221,1,0,1,0,0,2
+6222,2,2,3,377,0,1441
+6223,1,0,1,0,0,2
+6224,1,0,1,0,0,2
+6225,1,0,1,0,0,1
+6226,2,2,3,377,0,1405
+6227,1,0,1,0,0,1
+6228,1,0,1,0,0,1
+6229,1,0,1,0,0,2
+6255,2,2,3,377,0,1421
+6256,1,0,1,0,0,2
+6257,1,0,1,0,0,1
+6258,1,0,1,0,0,1
+6259,2,2,3,377,0,1420
+6260,1,0,1,0,0,2
+6261,1,0,1,0,0,2
+6262,1,0,1,0,0,2
+6263,2,2,3,377,0,1451
+6264,1,0,1,0,0,2
+6265,1,0,1,0,0,2
+6266,1,0,1,0,0,1
+6267,2,2,3,377,0,1408
+6268,1,0,1,0,0,2
+6269,1,0,1,0,0,2
+6270,1,0,1,0,0,1
+6271,2,2,3,377,0,1450
+6272,1,0,1,0,0,3
+6273,1,0,1,0,0,2
+6274,1,0,1,0,0,1
+6275,2,2,3,377,0,1449
+6276,1,0,1,0,0,2
+6277,1,0,1,0,0,2
+6278,1,0,1,0,0,2
+6279,2,2,3,377,0,1434
+6280,1,0,1,0,0,2
+6281,1,0,1,0,0,1
+6282,1,0,1,0,0,1
+6283,2,2,3,377,0,1437
+6284,1,0,1,0,0,2
+6285,1,0,1,0,0,2
+6286,1,0,1,0,0,5
+6287,2,2,3,377,0,1436
+6288,1,0,1,0,0,2
+6289,1,0,1,0,0,2
+6290,1,0,1,0,0,2
+6291,2,2,3,377,0,1444
+6292,1,0,1,0,0,2
+6293,1,0,1,0,0,2
+6294,1,0,1,0,0,2
+6295,2,2,3,377,0,1485
+6296,1,0,1,0,0,1
+6297,1,0,1,0,0,1
+6298,1,0,1,0,0,1
+6299,2,2,3,377,0,1395
+6300,1,0,1,0,0,2
+6301,1,0,1,0,0,2
+6302,1,0,1,0,0,2
+6303,2,2,3,377,0,1443
+6304,1,0,1,0,0,2
+6305,1,0,1,0,0,2
+6306,1,0,1,0,0,2
+6307,2,2,3,377,0,1394
+6308,1,0,1,0,0,2
+6309,1,0,1,0,0,2
+6310,1,0,1,0,0,2
+6311,2,2,3,377,0,1399
+6312,1,0,1,0,0,1
+6313,1,0,1,0,0,2
+6314,1,0,1,0,0,2
+6315,2,2,3,377,0,1408
+6316,1,0,1,0,0,2
+6317,1,0,1,0,0,2
+6318,1,0,1,0,0,1
+6319,2,2,3,377,0,1410
+6320,1,0,1,0,0,4
+6321,1,0,1,0,0,1
+6322,1,0,1,0,0,2
+6323,2,2,3,377,0,1413
+6324,1,0,1,0,0,2
+6325,1,0,1,0,0,2
+6326,1,0,1,0,0,2
+6327,2,2,3,377,0,1430
+6328,1,0,1,0,0,2
+6329,1,0,1,0,0,2
+6330,1,0,1,0,0,1
+6358,1,0,1,0,0,2
+6359,1,0,1,0,0,2
+6360,1,0,1,0,0,2
+6361,1,0,1,0,0,2
+6362,1,0,1,0,0,1
+6363,1,0,1,0,0,1
+6364,1,0,1,0,0,1
+6365,1,0,1,0,0,1
+6366,1,0,1,0,0,1
+6367,1,0,1,0,0,1
+6368,2,2,3,377,0,1403
+6369,1,0,1,0,0,2
+6370,1,0,1,0,0,2
+6371,1,0,1,0,0,2
+6372,1,0,1,0,0,2
+6373,1,0,1,0,0,1
+6374,1,0,1,0,0,1
+6375,1,0,1,0,0,1
+6376,1,0,1,0,0,2
+6377,1,0,1,0,0,1
+6378,1,0,1,0,0,1
+6379,1,0,1,0,0,2
+6380,1,0,1,0,0,1
+6381,1,0,1,0,0,1
+6382,1,0,1,0,0,1
+6383,1,0,1,0,0,1
+6384,1,0,1,0,0,2
+6385,1,0,1,0,0,2
+6386,1,0,1,0,0,2
+6387,1,0,1,0,0,1
+6388,1,0,1,0,0,2
+6389,1,0,1,0,0,1
+6390,1,0,1,0,0,1
+6391,1,0,1,0,0,1
+6392,1,0,1,0,0,4
+6393,2,2,3,377,0,1433
+6394,1,0,1,0,0,2
+6395,1,0,1,0,0,2
+6396,1,0,1,0,0,1
+6397,1,0,1,0,0,1
+6398,1,0,1,0,0,1
+6399,1,0,1,0,0,2
+6400,1,0,1,0,0,1
+6401,1,0,1,0,0,1
+6402,1,0,1,0,0,2
+6403,1,0,1,0,0,1
+6404,1,0,1,0,0,1
+6405,2,2,3,377,0,1379
+6406,1,0,1,0,0,2
+6407,1,0,1,0,0,2
+6408,1,0,1,0,0,2
+6409,1,0,1,0,0,1
+6410,2,2,3,377,0,1403
+6411,1,0,1,0,0,2
+6412,1,0,1,0,0,1
+6413,1,0,1,0,0,1
+6414,1,0,1,0,0,1
+6415,2,2,3,377,0,1375
+6416,1,0,1,0,0,2
+6417,1,0,1,0,0,2
+6418,1,0,1,0,0,1
+6419,1,0,1,0,0,2
+6420,1,0,1,0,0,1
+6421,1,0,1,0,0,2
+6422,1,0,1,0,0,2
+6423,1,0,1,0,0,2
+6424,1,0,1,0,0,2
+6425,1,0,1,0,0,1
+6426,1,0,1,0,0,2
+6427,1,0,1,0,0,2
+6428,1,0,1,0,0,1
+6429,1,0,1,0,0,2
+6430,1,0,1,0,0,2
+6431,1,0,1,0,0,2
+6432,1,0,1,0,0,2
+6433,2,2,3,377,0,1475
+6434,1,0,1,0,0,2
+6435,1,0,1,0,0,2
+6436,1,0,1,0,0,2
+6437,1,0,1,0,0,4
+6438,2,2,3,377,0,1372
+6439,1,0,1,0,0,2
+6440,1,0,1,0,0,1
+6441,1,0,1,0,0,2
+6442,1,0,1,0,0,2
+6443,2,2,3,377,0,1381
+6444,1,0,1,0,0,2
+6445,1,0,1,0,0,2
+6446,1,0,1,0,0,1
+6447,1,0,1,0,0,2
+6448,2,2,3,377,0,1398
+6449,1,0,1,0,0,2
+6450,1,0,1,0,0,2
+6451,1,0,1,0,0,2
+6452,1,0,1,0,0,2
+6453,2,2,3,377,0,1420
+6454,1,0,1,0,0,2
+6455,1,0,1,0,0,1
+6456,1,0,1,0,0,1
+6457,1,0,1,0,0,2
+6458,2,2,3,377,0,1417
+6459,1,0,1,0,0,2
+6460,1,0,1,0,0,2
+6461,1,0,1,0,0,2
+6462,1,0,1,0,0,1
+6463,2,2,3,377,0,1391
+6464,1,0,1,0,0,2
+6465,1,0,1,0,0,2
+6466,1,0,1,0,0,1
+6467,1,0,1,0,0,2
+6468,2,2,3,377,0,1430
+6469,1,0,1,0,0,2
+6470,1,0,1,0,0,2
+6471,1,0,1,0,0,2
+6472,1,0,1,0,0,2
+6473,2,2,3,377,0,1449
+6474,1,0,1,0,0,2
+6475,1,0,1,0,0,2
+6476,1,0,1,0,0,2
+6477,1,0,1,0,0,2
+6478,2,2,3,377,0,1443
+6479,1,0,1,0,0,2
+6480,1,0,1,0,0,2
+6481,1,0,1,0,0,1
+6482,1,0,1,0,0,1
+6483,2,2,3,377,0,1447
+6484,1,0,1,0,0,3
+6485,1,0,1,0,0,2
+6486,1,0,1,0,0,2
+6487,1,0,1,0,0,2
+6488,2,2,3,377,0,1414
+6489,1,0,1,0,0,2
+6490,1,0,1,0,0,2
+6491,1,0,1,0,0,1
+6492,1,0,1,0,0,2
+6493,2,2,3,377,0,1439
+6494,1,0,1,0,0,1
+6495,1,0,1,0,0,1
+6496,1,0,1,0,0,2
+6497,1,0,1,0,0,2
+6498,2,2,3,377,0,1460
+6499,1,0,1,0,0,2
+6500,1,0,1,0,0,2
+6501,1,0,1,0,0,2
+6502,1,0,1,0,0,2
+6503,2,2,3,377,0,179
+6504,2,2,3,377,0,176
+6531,2,2,3,377,0,1366
+6532,1,0,1,0,0,1
+6533,1,0,1,0,0,1
+6534,1,0,1,0,0,1
+6535,2,2,3,377,0,1417
+6536,1,0,1,0,0,2
+6537,1,0,1,0,0,1
+6538,1,0,1,0,0,2
+6539,2,2,3,377,0,1423
+6540,1,0,1,0,0,2
+6541,1,0,1,0,0,2
+6542,1,0,1,0,0,1
+6543,2,2,3,377,0,1456
+6544,1,0,1,0,0,2
+6545,1,0,1,0,0,1
+6546,1,0,1,0,0,2
+6547,2,2,3,377,0,1426
+6548,1,0,1,0,0,1
+6549,1,0,1,0,0,1
+6550,1,0,1,0,0,2
+6551,2,2,3,377,0,1435
+6552,1,0,1,0,0,2
+6553,1,0,1,0,0,2
+6554,1,0,1,0,0,5
+6555,2,2,3,377,0,1442
+6556,1,0,1,0,0,2
+6557,1,0,1,0,0,2
+6558,1,0,1,0,0,2
+6559,2,2,3,377,0,1420
+6560,1,0,1,0,0,2
+6561,1,0,1,0,0,2
+6562,1,0,1,0,0,2
+6563,2,2,3,377,0,1464
+6564,1,0,1,0,0,2
+6565,1,0,1,0,0,2
+6566,1,0,1,0,0,2
+6567,2,2,3,377,0,1435
+6568,1,0,1,0,0,2
+6569,1,0,1,0,0,2
+6570,1,0,1,0,0,2
+6571,2,2,3,377,0,1424
+6572,1,0,1,0,0,2
+6573,1,0,1,0,0,2
+6574,1,0,1,0,0,2
+6575,2,2,3,377,0,1430
+6576,1,0,1,0,0,2
+6577,1,0,1,0,0,2
+6578,1,0,1,0,0,2
+6579,2,2,3,377,0,1424
+6580,1,0,1,0,0,2
+6581,1,0,1,0,0,2
+6582,1,0,1,0,0,2
+6583,2,2,3,377,0,1438
+6584,1,0,1,0,0,3
+6585,1,0,1,0,0,2
+6586,1,0,1,0,0,1
+6587,2,2,3,377,0,1439
+6588,1,0,1,0,0,1
+6589,1,0,1,0,0,1
+6590,1,0,1,0,0,2
+6591,2,2,3,377,0,1425
+6592,1,0,1,0,0,2
+6593,1,0,1,0,0,2
+6594,1,0,1,0,0,2
+6595,2,2,3,377,0,1440
+6596,1,0,1,0,0,2
+6597,1,0,1,0,0,2
+6598,1,0,1,0,0,2
+6599,2,2,3,377,0,1446
+6600,1,0,1,0,0,3
+6601,1,0,1,0,0,1
+6602,1,0,1,0,0,2
+6603,2,2,3,377,0,1447
+6604,1,0,1,0,0,2
+6605,1,0,1,0,0,2
+6606,1,0,1,0,0,1
+6634,2,2,3,377,0,1427
+6635,1,0,1,0,0,2
+6636,1,0,1,0,0,2
+6637,1,0,1,0,0,2
+6638,2,2,3,377,0,1412
+6639,1,0,1,0,0,2
+6640,1,0,1,0,0,2
+6641,1,0,1,0,0,2
+6642,2,2,3,377,0,1468
+6643,1,0,1,0,0,2
+6644,1,0,1,0,0,2
+6645,1,0,1,0,0,2
+6646,2,2,3,377,0,1436
+6647,1,0,1,0,0,2
+6648,1,0,1,0,0,2
+6649,1,0,1,0,0,1
+6650,2,2,3,377,0,1403
+6651,1,0,1,0,0,1
+6652,1,0,1,0,0,1
+6653,1,0,1,0,0,2
+6654,2,2,3,377,0,1395
+6655,1,0,1,0,0,5
+6656,1,0,1,0,0,1
+6657,1,0,1,0,0,1
+6658,2,2,3,377,0,1388
+6659,1,0,1,0,0,2
+6660,1,0,1,0,0,2
+6661,1,0,1,0,0,1
+6662,2,2,3,377,0,1419
+6663,1,0,1,0,0,1
+6664,1,0,1,0,0,1
+6665,1,0,1,0,0,2
+6666,2,2,3,377,0,1403
+6667,1,0,1,0,0,2
+6668,1,0,1,0,0,2
+6669,1,0,1,0,0,2
+6670,2,2,3,377,0,1407
+6671,1,0,1,0,0,2
+6672,1,0,1,0,0,2
+6673,1,0,1,0,0,2
+6674,2,2,3,377,0,1424
+6675,1,0,1,0,0,2
+6676,1,0,1,0,0,2
+6677,1,0,1,0,0,2
+6678,2,2,3,377,0,1413
+6679,1,0,1,0,0,2
+6680,1,0,1,0,0,1
+6681,1,0,1,0,0,2
+6682,2,2,3,377,0,1431
+6683,1,0,1,0,0,2
+6684,1,0,1,0,0,2
+6685,1,0,1,0,0,1
+6686,2,2,3,377,0,1410
+6687,1,0,1,0,0,2
+6688,1,0,1,0,0,1
+6689,1,0,1,0,0,2
+6690,2,2,3,377,0,1427
+6691,1,0,1,0,0,2
+6692,1,0,1,0,0,2
+6693,1,0,1,0,0,1
+6694,2,2,3,377,0,1396
+6695,1,0,1,0,0,2
+6696,1,0,1,0,0,2
+6697,1,0,1,0,0,2
+6698,2,2,3,377,0,1404
+6699,1,0,1,0,0,2
+6700,1,0,1,0,0,1
+6701,1,0,1,0,0,2
+6702,2,2,3,377,0,1405
+6703,1,0,1,0,0,2
+6704,1,0,1,0,0,2
+6705,1,0,1,0,0,1
+6706,2,2,3,377,0,1420
+6707,1,0,1,0,0,2
+6708,1,0,1,0,0,2
+6709,1,0,1,0,0,2
+6738,2,2,3,377,0,1413
+6739,1,0,1,0,0,2
+6740,1,0,1,0,0,2
+6741,1,0,1,0,0,1
+6742,2,2,3,377,0,1396
+6743,1,0,1,0,0,2
+6744,1,0,1,0,0,2
+6745,1,0,1,0,0,1
+6746,2,2,3,377,0,1423
+6747,1,0,1,0,0,2
+6748,1,0,1,0,0,1
+6749,1,0,1,0,0,2
+6750,2,2,3,377,0,1380
+6751,1,0,1,0,0,2
+6752,1,0,1,0,0,1
+6753,1,0,1,0,0,2
+6754,2,2,3,377,0,1424
+6755,1,0,1,0,0,2
+6756,1,0,1,0,0,2
+6757,1,0,1,0,0,2
+6758,2,2,3,377,0,1377
+6759,1,0,1,0,0,2
+6760,1,0,1,0,0,1
+6761,1,0,1,0,0,1
+6762,2,2,3,377,0,1431
+6763,1,0,1,0,0,2
+6764,1,0,1,0,0,2
+6765,1,0,1,0,0,2
+6766,2,2,3,377,0,1399
+6767,1,0,1,0,0,2
+6768,1,0,1,0,0,1
+6769,1,0,1,0,0,2
+6770,2,2,3,377,0,1427
+6771,1,0,1,0,0,2
+6772,1,0,1,0,0,2
+6773,1,0,1,0,0,1
+6774,2,2,3,377,0,1368
+6775,1,0,1,0,0,2
+6776,1,0,1,0,0,2
+6777,1,0,1,0,0,1
+6778,2,2,3,377,0,1444
+6779,1,0,1,0,0,2
+6780,1,0,1,0,0,2
+6781,1,0,1,0,0,2
+6782,2,2,3,377,0,1364
+6783,1,0,1,0,0,1
+6784,1,0,1,0,0,1
+6785,1,0,1,0,0,2
+6786,2,2,3,377,0,1452
+6787,1,0,1,0,0,2
+6788,1,0,1,0,0,2
+6789,1,0,1,0,0,2
+6790,2,2,3,377,0,1409
+6791,1,0,1,0,0,3
+6792,1,0,1,0,0,2
+6793,1,0,1,0,0,1
+6794,2,2,3,377,0,1396
+6795,1,0,1,0,0,2
+6796,1,0,1,0,0,1
+6797,1,0,1,0,0,2
+6798,2,2,3,377,0,1494
+6799,1,0,1,0,0,2
+6800,1,0,1,0,0,2
+6801,1,0,1,0,0,2
+6802,2,2,3,377,0,1437
+6803,1,0,1,0,0,2
+6804,1,0,1,0,0,2
+6805,1,0,1,0,0,1
+6806,2,2,3,377,0,1435
+6807,1,0,1,0,0,2
+6808,1,0,1,0,0,2
+6809,1,0,1,0,0,1
+6810,2,2,3,377,0,1468
+6811,1,0,1,0,0,2
+6812,1,0,1,0,0,2
+6813,1,0,1,0,0,2
+6843,2,2,3,377,0,1425
+6844,1,0,1,0,0,2
+6845,1,0,1,0,0,2
+6846,1,0,1,0,0,1
+6847,2,2,3,377,0,1403
+6848,1,0,1,0,0,2
+6849,1,0,1,0,0,2
+6850,1,0,1,0,0,2
+6851,2,2,3,377,0,1437
+6852,1,0,1,0,0,2
+6853,1,0,1,0,0,2
+6854,1,0,1,0,0,2
+6855,2,2,3,377,0,1449
+6856,1,0,1,0,0,2
+6857,1,0,1,0,0,2
+6858,1,0,1,0,0,2
+6859,2,2,3,377,0,1456
+6860,1,0,1,0,0,2
+6861,1,0,1,0,0,2
+6862,1,0,1,0,0,1
+6863,2,2,3,377,0,1421
+6864,1,0,1,0,0,2
+6865,1,0,1,0,0,2
+6866,1,0,1,0,0,2
+6867,2,2,3,377,0,1447
+6868,1,0,1,0,0,2
+6869,1,0,1,0,0,3
+6870,1,0,1,0,0,2
+6871,2,2,3,377,0,1430
+6872,1,0,1,0,0,2
+6873,1,0,1,0,0,2
+6874,1,0,1,0,0,1
+6875,2,2,3,377,0,1455
+6876,1,0,1,0,0,2
+6877,1,0,1,0,0,2
+6878,1,0,1,0,0,1
+6879,2,2,3,377,0,1424
+6880,1,0,1,0,0,1
+6881,1,0,1,0,0,1
+6882,1,0,1,0,0,2
+6883,2,2,3,377,0,1445
+6884,1,0,1,0,0,2
+6885,1,0,1,0,0,2
+6886,1,0,1,0,0,2
+6887,2,2,3,377,0,1449
+6888,1,0,1,0,0,2
+6889,1,0,1,0,0,2
+6890,1,0,1,0,0,2
+6891,2,2,3,377,0,1419
+6892,1,0,1,0,0,2
+6893,1,0,1,0,0,2
+6894,1,0,1,0,0,1
+6895,2,2,3,377,0,1465
+6896,1,0,1,0,0,2
+6897,1,0,1,0,0,2
+6898,1,0,1,0,0,2
+6899,2,2,3,377,0,1419
+6900,1,0,1,0,0,2
+6901,1,0,1,0,0,2
+6902,1,0,1,0,0,2
+6903,2,2,3,377,0,1439
+6904,1,0,1,0,0,2
+6905,1,0,1,0,0,2
+6906,1,0,1,0,0,1
+6907,2,2,3,377,0,1438
+6908,1,0,1,0,0,2
+6909,1,0,1,0,0,2
+6910,1,0,1,0,0,1
+6911,2,2,3,377,0,1397
+6912,1,0,1,0,0,2
+6913,1,0,1,0,0,2
+6914,1,0,1,0,0,1
+6915,2,2,3,377,0,1427
+6916,1,0,1,0,0,2
+6917,1,0,1,0,0,2
+6918,1,0,1,0,0,2
+6949,2,2,3,377,0,1429
+6950,1,0,1,0,0,2
+6951,1,0,1,0,0,2
+6952,1,0,1,0,0,2
+6953,2,2,3,377,0,1411
+6954,1,0,1,0,0,2
+6955,1,0,1,0,0,2
+6956,1,0,1,0,0,1
+6957,2,2,3,377,0,1435
+6958,1,0,1,0,0,2
+6959,1,0,1,0,0,2
+6960,1,0,1,0,0,2
+6961,2,2,3,377,0,1456
+6962,1,0,1,0,0,2
+6963,1,0,1,0,0,2
+6964,1,0,1,0,0,2
+6965,2,2,3,377,0,1434
+6966,1,0,1,0,0,2
+6967,1,0,1,0,0,2
+6968,1,0,1,0,0,2
+6969,2,2,3,377,0,1450
+6970,1,0,1,0,0,2
+6971,1,0,1,0,0,2
+6972,1,0,1,0,0,2
+6973,2,2,3,377,0,1441
+6974,1,0,1,0,0,1
+6975,1,0,1,0,0,1
+6976,1,0,1,0,0,3
+6977,2,2,3,377,0,1416
+6978,1,0,1,0,0,2
+6979,1,0,1,0,0,1
+6980,1,0,1,0,0,2
+6981,2,2,3,377,0,1425
+6982,1,0,1,0,0,2
+6983,1,0,1,0,0,1
+6984,1,0,1,0,0,2
+6985,2,2,3,377,0,1387
+6986,1,0,1,0,0,4
+6987,1,0,1,0,0,2
+6988,1,0,1,0,0,2
+6989,2,2,3,377,0,1398
+6990,1,0,1,0,0,1
+6991,1,0,1,0,0,1
+6992,1,0,1,0,0,2
+6993,2,2,3,377,0,1404
+6994,1,0,1,0,0,1
+6995,1,0,1,0,0,1
+6996,1,0,1,0,0,2
+6997,2,2,3,377,0,1392
+6998,1,0,1,0,0,2
+6999,1,0,1,0,0,2
+7000,1,0,1,0,0,2
+7001,2,2,3,377,0,1412
+7002,1,0,1,0,0,2
+7003,1,0,1,0,0,1
+7004,1,0,1,0,0,2
+7005,2,2,3,377,0,1398
+7006,1,0,1,0,0,2
+7007,1,0,1,0,0,2
+7008,1,0,1,0,0,2
+7009,2,2,3,377,0,1419
+7010,1,0,1,0,0,2
+7011,1,0,1,0,0,2
+7012,1,0,1,0,0,1
+7013,2,2,3,377,0,1398
+7014,1,0,1,0,0,2
+7015,1,0,1,0,0,2
+7016,1,0,1,0,0,2
+7017,2,2,3,377,0,1414
+7018,1,0,1,0,0,2
+7019,1,0,1,0,0,1
+7020,1,0,1,0,0,2
+7021,2,2,3,377,0,1380
+7022,1,0,1,0,0,2
+7023,1,0,1,0,0,2
+7024,1,0,1,0,0,2
+7056,2,2,3,377,0,1439
+7057,1,0,1,0,0,2
+7058,1,0,1,0,0,2
+7059,1,0,1,0,0,2
+7060,2,2,3,377,0,1353
+7061,1,0,1,0,0,2
+7062,1,0,1,0,0,2
+7063,1,0,1,0,0,2
+7064,2,2,3,377,0,1420
+7065,1,0,1,0,0,2
+7066,1,0,1,0,0,2
+7067,1,0,1,0,0,1
+7068,2,2,3,377,0,1346
+7069,1,0,1,0,0,2
+7070,1,0,1,0,0,1
+7071,1,0,1,0,0,2
+7072,2,2,3,377,0,1423
+7073,1,0,1,0,0,2
+7074,1,0,1,0,0,2
+7075,1,0,1,0,0,1
+7076,2,2,3,377,0,1365
+7077,1,0,1,0,0,2
+7078,1,0,1,0,0,2
+7079,1,0,1,0,0,4
+7080,2,2,3,377,0,1414
+7081,1,0,1,0,0,2
+7082,1,0,1,0,0,2
+7083,1,0,1,0,0,1
+7084,2,2,3,377,0,1396
+7085,1,0,1,0,0,2
+7086,1,0,1,0,0,1
+7087,1,0,1,0,0,2
+7088,2,2,3,377,0,1417
+7089,1,0,1,0,0,2
+7090,1,0,1,0,0,2
+7091,1,0,1,0,0,2
+7092,2,2,3,377,0,1367
+7093,1,0,1,0,0,2
+7094,1,0,1,0,0,2
+7095,1,0,1,0,0,2
+7096,2,2,3,377,0,1432
+7097,1,0,1,0,0,2
+7098,1,0,1,0,0,5
+7099,1,0,1,0,0,2
+7100,2,2,3,377,0,1389
+7101,1,0,1,0,0,2
+7102,1,0,1,0,0,1
+7103,1,0,1,0,0,1
+7104,2,2,3,377,0,1436
+7105,1,0,1,0,0,2
+7106,1,0,1,0,0,1
+7107,1,0,1,0,0,1
+7108,2,2,3,377,0,1336
+7109,1,0,1,0,0,2
+7110,1,0,1,0,0,2
+7111,1,0,1,0,0,1
+7112,2,2,3,377,0,1442
+7113,1,0,1,0,0,2
+7114,1,0,1,0,0,2
+7115,1,0,1,0,0,2
+7116,2,2,3,377,0,1388
+7117,1,0,1,0,0,2
+7118,1,0,1,0,0,2
+7119,1,0,1,0,0,1
+7120,2,2,3,377,0,1434
+7121,1,0,1,0,0,2
+7122,1,0,1,0,0,1
+7123,1,0,1,0,0,1
+7124,2,2,3,377,0,1390
+7125,1,0,1,0,0,2
+7126,1,0,1,0,0,1
+7127,1,0,1,0,0,2
+7128,2,2,3,377,0,1453
+7129,1,0,1,0,0,2
+7130,1,0,1,0,0,2
+7131,1,0,1,0,0,2
+7164,2,2,3,377,0,1423
+7165,1,0,1,0,0,2
+7166,1,0,1,0,0,10
+7167,1,0,1,0,0,2
+7168,2,2,3,377,0,1411
+7169,1,0,1,0,0,2
+7170,1,0,1,0,0,1
+7171,1,0,1,0,0,2
+7172,2,2,3,377,0,1445
+7173,1,0,1,0,0,2
+7174,1,0,1,0,0,2
+7175,1,0,1,0,0,2
+7176,2,2,3,377,0,1436
+7177,1,0,1,0,0,2
+7178,1,0,1,0,0,2
+7179,1,0,1,0,0,2
+7180,2,2,3,377,0,1426
+7181,1,0,1,0,0,2
+7182,1,0,1,0,0,2
+7183,1,0,1,0,0,2
+7184,2,2,3,377,0,1437
+7185,1,0,1,0,0,6
+7186,1,0,1,0,0,2
+7187,1,0,1,0,0,2
+7188,2,2,3,377,0,1448
+7189,1,0,1,0,0,2
+7190,1,0,1,0,0,3
+7191,1,0,1,0,0,1
+7192,2,2,3,377,0,1431
+7193,1,0,1,0,0,2
+7194,1,0,1,0,0,2
+7195,1,0,1,0,0,1
+7196,2,2,3,377,0,1439
+7197,1,0,1,0,0,2
+7198,1,0,1,0,0,2
+7199,1,0,1,0,0,2
+7200,2,2,3,377,0,1439
+7201,1,0,1,0,0,2
+7202,1,0,1,0,0,1
+7203,1,0,1,0,0,1
+7204,2,2,3,377,0,1423
+7205,1,0,1,0,0,2
+7206,1,0,1,0,0,2
+7207,1,0,1,0,0,2
+7208,2,2,3,377,0,1446
+7209,1,0,1,0,0,2
+7210,1,0,1,0,0,2
+7211,1,0,1,0,0,4
+7212,2,2,3,377,0,1423
+7213,1,0,1,0,0,2
+7214,1,0,1,0,0,2
+7215,1,0,1,0,0,2
+7216,2,2,3,377,0,1445
+7217,1,0,1,0,0,2
+7218,1,0,1,0,0,2
+7219,1,0,1,0,0,2
+7220,2,2,3,377,0,1445
+7221,1,0,1,0,0,2
+7222,1,0,1,0,0,2
+7223,1,0,1,0,0,1
+7224,2,2,3,377,0,1424
+7225,1,0,1,0,0,2
+7226,1,0,1,0,0,1
+7227,1,0,1,0,0,2
+7228,2,2,3,377,0,1445
+7229,1,0,1,0,0,2
+7230,1,0,1,0,0,2
+7231,1,0,1,0,0,2
+7232,2,2,3,377,0,1417
+7233,1,0,1,0,0,2
+7234,1,0,1,0,0,3
+7235,1,0,1,0,0,1
+7236,2,2,3,377,0,1452
+7237,1,0,1,0,0,2
+7238,1,0,1,0,0,2
+7239,1,0,1,0,0,1
+7273,2,2,3,377,0,1408
+7274,1,0,1,0,0,2
+7275,1,0,1,0,0,2
+7276,1,0,1,0,0,2
+7277,2,2,3,377,0,1394
+7278,1,0,1,0,0,2
+7279,1,0,1,0,0,2
+7280,1,0,1,0,0,2
+7281,2,2,3,377,0,1419
+7282,1,0,1,0,0,2
+7283,1,0,1,0,0,2
+7284,1,0,1,0,0,2
+7285,2,2,3,377,0,1460
+7286,1,0,1,0,0,1
+7287,1,0,1,0,0,1
+7288,1,0,1,0,0,2
+7289,2,2,3,377,0,1429
+7290,1,0,1,0,0,2
+7291,1,0,1,0,0,2
+7292,1,0,1,0,0,1
+7293,2,2,3,377,0,1434
+7294,1,0,1,0,0,2
+7295,1,0,1,0,0,2
+7296,1,0,1,0,0,2
+7297,2,2,3,377,0,1451
+7298,1,0,1,0,0,2
+7299,1,0,1,0,0,2
+7300,1,0,1,0,0,1
+7301,2,2,3,377,0,1441
+7302,1,0,1,0,0,2
+7303,1,0,1,0,0,2
+7304,1,0,1,0,0,1
+7305,2,2,3,377,0,1426
+7306,1,0,1,0,0,2
+7307,1,0,1,0,0,2
+7308,1,0,1,0,0,1
+7309,2,2,3,377,0,1432
+7310,1,0,1,0,0,2
+7311,1,0,1,0,0,2
+7312,1,0,1,0,0,1
+7313,2,2,3,377,0,1434
+7314,1,0,1,0,0,2
+7315,1,0,1,0,0,2
+7316,1,0,1,0,0,1
+7317,2,2,3,377,0,1459
+7318,1,0,1,0,0,2
+7319,1,0,1,0,0,1
+7320,1,0,1,0,0,1
+7321,2,2,3,377,0,1411
+7322,1,0,1,0,0,2
+7323,1,0,1,0,0,2
+7324,1,0,1,0,0,1
+7325,2,2,3,377,0,1409
+7326,1,0,1,0,0,2
+7327,1,0,1,0,0,2
+7328,1,0,1,0,0,2
+7329,2,2,3,377,0,1377
+7330,1,0,1,0,0,2
+7331,1,0,1,0,0,2
+7332,1,0,1,0,0,2
+7333,2,2,3,377,0,1412
+7334,1,0,1,0,0,1
+7335,1,0,1,0,0,1
+7336,1,0,1,0,0,2
+7337,2,2,3,377,0,1377
+7338,1,0,1,0,0,2
+7339,1,0,1,0,0,2
+7340,1,0,1,0,0,2
+7341,2,2,3,377,0,1439
+7342,1,0,1,0,0,2
+7343,1,0,1,0,0,2
+7344,1,0,1,0,0,1
+7345,2,2,3,377,0,1384
+7346,1,0,1,0,0,2
+7347,1,0,1,0,0,2
+7348,1,0,1,0,0,1
+7383,2,2,3,377,0,1431
+7384,1,0,1,0,0,2
+7385,1,0,1,0,0,2
+7386,1,0,1,0,0,1
+7387,2,2,3,377,0,1349
+7388,1,0,1,0,0,2
+7389,1,0,1,0,0,1
+7390,1,0,1,0,0,4
+7391,2,2,3,377,0,1393
+7392,1,0,1,0,0,2
+7393,1,0,1,0,0,2
+7394,1,0,1,0,0,2
+7395,2,2,3,377,0,1377
+7396,1,0,1,0,0,2
+7397,1,0,1,0,0,2
+7398,1,0,1,0,0,1
+7399,2,2,3,377,0,1384
+7400,1,0,1,0,0,2
+7401,1,0,1,0,0,2
+7402,1,0,1,0,0,1
+7403,2,2,3,377,0,1376
+7404,1,0,1,0,0,2
+7405,1,0,1,0,0,2
+7406,1,0,1,0,0,1
+7407,2,2,3,377,0,1402
+7408,1,0,1,0,0,2
+7409,1,0,1,0,0,2
+7410,1,0,1,0,0,1
+7411,2,2,3,377,0,1393
+7412,1,0,1,0,0,2
+7413,1,0,1,0,0,2
+7414,1,0,1,0,0,2
+7415,2,2,3,377,0,1404
+7416,1,0,1,0,0,1
+7417,1,0,1,0,0,1
+7418,1,0,1,0,0,2
+7419,2,2,3,377,0,1384
+7420,1,0,1,0,0,2
+7421,1,0,1,0,0,2
+7422,1,0,1,0,0,1
+7423,2,2,3,377,0,1397
+7424,1,0,1,0,0,2
+7425,1,0,1,0,0,2
+7426,1,0,1,0,0,2
+7427,2,2,3,377,0,1375
+7428,1,0,1,0,0,2
+7429,1,0,1,0,0,2
+7430,1,0,1,0,0,2
+7431,2,2,3,377,0,1414
+7432,1,0,1,0,0,2
+7433,1,0,1,0,0,2
+7434,1,0,1,0,0,1
+7435,2,2,3,377,0,1383
+7436,1,0,1,0,0,2
+7437,1,0,1,0,0,2
+7438,1,0,1,0,0,1
+7439,2,2,3,377,0,1423
+7440,1,0,1,0,0,2
+7441,1,0,1,0,0,2
+7442,1,0,1,0,0,2
+7443,2,2,3,377,0,1392
+7444,1,0,1,0,0,2
+7445,1,0,1,0,0,2
+7446,1,0,1,0,0,1
+7447,2,2,3,377,0,1398
+7448,1,0,1,0,0,2
+7449,1,0,1,0,0,1
+7450,1,0,1,0,0,2
+7451,2,2,3,377,0,1404
+7452,1,0,1,0,0,2
+7453,1,0,1,0,0,2
+7454,1,0,1,0,0,2
+7455,2,2,3,377,0,1390
+7456,1,0,1,0,0,2
+7457,1,0,1,0,0,2
+7458,1,0,1,0,0,1
+7494,2,2,3,377,0,1403
+7495,1,0,1,0,0,2
+7496,1,0,1,0,0,2
+7497,1,0,1,0,0,2
+7498,2,2,3,377,0,1443
+7499,1,0,1,0,0,2
+7500,1,0,1,0,0,1
+7501,1,0,1,0,0,2
+7502,2,2,3,377,0,1354
+7503,1,0,1,0,0,2
+7504,1,0,1,0,0,2
+7505,1,0,1,0,0,2
+7506,2,2,3,377,0,1440
+7507,1,0,1,0,0,2
+7508,1,0,1,0,0,1
+7509,1,0,1,0,0,2
+7510,2,2,3,377,0,1455
+7511,1,0,1,0,0,2
+7512,1,0,1,0,0,1
+7513,1,0,1,0,0,1
+7514,2,2,3,377,0,1453
+7515,1,0,1,0,0,2
+7516,1,0,1,0,0,2
+7517,1,0,1,0,0,2
+7518,2,2,3,377,0,1413
+7519,1,0,1,0,0,2
+7520,1,0,1,0,0,1
+7521,1,0,1,0,0,2
+7522,2,2,3,377,0,1444
+7523,1,0,1,0,0,2
+7524,1,0,1,0,0,2
+7525,1,0,1,0,0,2
+7526,2,2,3,377,0,1407
+7527,1,0,1,0,0,2
+7528,1,0,1,0,0,2
+7529,1,0,1,0,0,2
+7530,2,2,3,377,0,1432
+7531,1,0,1,0,0,2
+7532,1,0,1,0,0,1
+7533,1,0,1,0,0,2
+7534,2,2,3,377,0,1422
+7535,1,0,1,0,0,2
+7536,1,0,1,0,0,2
+7537,1,0,1,0,0,2
+7538,2,2,3,377,0,1428
+7539,1,0,1,0,0,2
+7540,1,0,1,0,0,2
+7541,1,0,1,0,0,5
+7542,2,2,3,377,0,1428
+7543,1,0,1,0,0,2
+7544,1,0,1,0,0,2
+7545,1,0,1,0,0,2
+7546,2,2,3,377,0,1423
+7547,1,0,1,0,0,2
+7548,1,0,1,0,0,2
+7549,1,0,1,0,0,2
+7550,2,2,3,377,0,1433
+7551,1,0,1,0,0,4
+7552,1,0,1,0,0,2
+7553,1,0,1,0,0,1
+7554,2,2,3,377,0,1442
+7555,1,0,1,0,0,2
+7556,1,0,1,0,0,2
+7557,1,0,1,0,0,1
+7558,2,2,3,377,0,1441
+7559,1,0,1,0,0,2
+7560,1,0,1,0,0,1
+7561,1,0,1,0,0,2
+7562,2,2,3,377,0,1435
+7563,1,0,1,0,0,2
+7564,1,0,1,0,0,2
+7565,1,0,1,0,0,2
+7566,2,2,3,377,0,1427
+7567,1,0,1,0,0,2
+7568,1,0,1,0,0,2
+7569,1,0,1,0,0,1
+7606,2,2,3,377,0,1413
+7607,1,0,1,0,0,2
+7608,1,0,1,0,0,2
+7609,1,0,1,0,0,2
+7610,2,2,3,377,0,1425
+7611,1,0,1,0,0,2
+7612,1,0,1,0,0,2
+7613,1,0,1,0,0,2
+7614,2,2,3,377,0,1446
+7615,1,0,1,0,0,2
+7616,1,0,1,0,0,1
+7617,1,0,1,0,0,2
+7618,2,2,3,377,0,1406
+7619,1,0,1,0,0,2
+7620,1,0,1,0,0,2
+7621,1,0,1,0,0,1
+7622,2,2,3,377,0,1444
+7623,1,0,1,0,0,2
+7624,1,0,1,0,0,2
+7625,1,0,1,0,0,2
+7626,2,2,3,377,0,1445
+7627,1,0,1,0,0,2
+7628,1,0,1,0,0,2
+7629,1,0,1,0,0,2
+7630,2,2,3,377,0,1416
+7631,1,0,1,0,0,2
+7632,1,0,1,0,0,1
+7633,1,0,1,0,0,2
+7634,2,2,3,377,0,1441
+7635,1,0,1,0,0,2
+7636,1,0,1,0,0,2
+7637,1,0,1,0,0,2
+7638,2,2,3,377,0,1439
+7639,1,0,1,0,0,2
+7640,1,0,1,0,0,2
+7641,1,0,1,0,0,1
+7642,2,2,3,377,0,1437
+7643,1,0,1,0,0,2
+7644,1,0,1,0,0,2
+7645,1,0,1,0,0,2
+7646,2,2,3,377,0,1440
+7647,1,0,1,0,0,2
+7648,1,0,1,0,0,1
+7649,1,0,1,0,0,2
+7650,2,2,3,377,0,1452
+7651,1,0,1,0,0,2
+7652,1,0,1,0,0,2
+7653,1,0,1,0,0,1
+7654,2,2,3,377,0,1456
+7655,1,0,1,0,0,2
+7656,1,0,1,0,0,2
+7657,1,0,1,0,0,2
+7658,2,2,3,377,0,1416
+7659,1,0,1,0,0,2
+7660,1,0,1,0,0,2
+7661,1,0,1,0,0,1
+7662,2,2,3,377,0,1437
+7663,1,0,1,0,0,2
+7664,1,0,1,0,0,2
+7665,1,0,1,0,0,4
+7666,2,2,3,377,0,1430
+7667,1,0,1,0,0,2
+7668,1,0,1,0,0,2
+7669,1,0,1,0,0,1
+7670,2,2,3,377,0,1407
+7671,1,0,1,0,0,2
+7672,1,0,1,0,0,1
+7673,1,0,1,0,0,2
+7674,2,2,3,377,0,1379
+7675,1,0,1,0,0,2
+7676,1,0,1,0,0,2
+7677,1,0,1,0,0,2
+7678,2,2,3,377,0,1418
+7679,1,0,1,0,0,2
+7680,1,0,1,0,0,2
+7681,1,0,1,0,0,2
+7719,2,2,3,377,0,1418
+7720,1,0,1,0,0,1
+7721,1,0,1,0,0,1
+7722,1,0,1,0,0,2
+7723,2,2,3,377,0,1379
+7724,1,0,1,0,0,2
+7725,1,0,1,0,0,2
+7726,1,0,1,0,0,2
+7727,2,2,3,377,0,1401
+7728,1,0,1,0,0,2
+7729,1,0,1,0,0,2
+7730,1,0,1,0,0,2
+7731,2,2,3,377,0,1391
+7732,1,0,1,0,0,1
+7733,1,0,1,0,0,1
+7734,1,0,1,0,0,2
+7735,2,2,3,377,0,1379
+7736,1,0,1,0,0,1
+7737,1,0,1,0,0,1
+7738,1,0,1,0,0,1
+7739,2,2,3,377,0,1401
+7740,1,0,1,0,0,2
+7741,1,0,1,0,0,1
+7742,1,0,1,0,0,2
+7743,2,2,3,377,0,1414
+7744,1,0,1,0,0,2
+7745,1,0,1,0,0,1
+7746,1,0,1,0,0,2
+7747,2,2,3,377,0,1424
+7748,1,0,1,0,0,2
+7749,1,0,1,0,0,2
+7750,1,0,1,0,0,1
+7751,2,2,3,377,0,1396
+7752,1,0,1,0,0,2
+7753,1,0,1,0,0,2
+7754,1,0,1,0,0,2
+7755,2,2,3,377,0,1409
+7756,1,0,1,0,0,2
+7757,1,0,1,0,0,2
+7758,1,0,1,0,0,1
+7759,2,2,3,377,0,1405
+7760,1,0,1,0,0,2
+7761,1,0,1,0,0,2
+7762,1,0,1,0,0,2
+7763,2,2,3,377,0,1419
+7764,1,0,1,0,0,2
+7765,1,0,1,0,0,2
+7766,1,0,1,0,0,2
+7767,2,2,3,377,0,1390
+7768,1,0,1,0,0,2
+7769,1,0,1,0,0,2
+7770,1,0,1,0,0,1
+7771,2,2,3,377,0,1430
+7772,1,0,1,0,0,2
+7773,1,0,1,0,0,2
+7774,1,0,1,0,0,1
+7775,2,2,3,377,0,1385
+7776,1,0,1,0,0,2
+7777,1,0,1,0,0,2
+7778,1,0,1,0,0,1
+7779,2,2,3,377,0,1423
+7780,1,0,1,0,0,1
+7781,1,0,1,0,0,1
+7782,1,0,1,0,0,2
+7783,2,2,3,377,0,1393
+7784,1,0,1,0,0,2
+7785,1,0,1,0,0,2
+7786,1,0,1,0,0,2
+7787,2,2,3,377,0,1437
+7788,1,0,1,0,0,2
+7789,1,0,1,0,0,2
+7790,1,0,1,0,0,1
+7791,2,2,3,377,0,1391
+7792,1,0,1,0,0,2
+7793,1,0,1,0,0,2
+7794,1,0,1,0,0,2
+7833,2,2,3,377,0,1423
+7834,1,0,1,0,0,2
+7835,1,0,1,0,0,2
+7836,1,0,1,0,0,2
+7837,2,2,3,377,0,1351
+7838,1,0,1,0,0,2
+7839,1,0,1,0,0,1
+7840,1,0,1,0,0,1
+7841,2,2,3,377,0,1424
+7842,1,0,1,0,0,2
+7843,1,0,1,0,0,2
+7844,1,0,1,0,0,2
+7845,2,2,3,377,0,1377
+7846,1,0,1,0,0,2
+7847,1,0,1,0,0,2
+7848,1,0,1,0,0,2
+7849,2,2,3,377,0,1433
+7850,1,0,1,0,0,2
+7851,1,0,1,0,0,2
+7852,1,0,1,0,0,1
+7853,2,2,3,377,0,1410
+7854,1,0,1,0,0,2
+7855,1,0,1,0,0,2
+7856,1,0,1,0,0,1
+7857,2,2,3,377,0,1446
+7858,1,0,1,0,0,2
+7859,1,0,1,0,0,2
+7860,1,0,1,0,0,1
+7861,2,2,3,377,0,1431
+7862,1,0,1,0,0,2
+7863,1,0,1,0,0,2
+7864,1,0,1,0,0,1
+7865,2,2,3,377,0,1431
+7866,1,0,1,0,0,2
+7867,1,0,1,0,0,1
+7868,1,0,1,0,0,1
+7869,2,2,3,377,0,1442
+7870,1,0,1,0,0,2
+7871,1,0,1,0,0,2
+7872,1,0,1,0,0,2
+7873,2,2,3,377,0,1444
+7874,1,0,1,0,0,2
+7875,1,0,1,0,0,1
+7876,1,0,1,0,0,2
+7877,2,2,3,377,0,1440
+7878,1,0,1,0,0,2
+7879,1,0,1,0,0,2
+7880,1,0,1,0,0,2
+7881,2,2,3,377,0,1434
+7882,1,0,1,0,0,2
+7883,1,0,1,0,0,2
+7884,1,0,1,0,0,1
+7885,2,2,3,377,0,1443
+7886,1,0,1,0,0,2
+7887,1,0,1,0,0,2
+7888,1,0,1,0,0,2
+7889,2,2,3,377,0,1418
+7890,1,0,1,0,0,2
+7891,1,0,1,0,0,2
+7892,1,0,1,0,0,2
+7893,2,2,3,377,0,1459
+7894,1,0,1,0,0,2
+7895,1,0,1,0,0,1
+7896,1,0,1,0,0,2
+7897,2,2,3,377,0,1449
+7898,1,0,1,0,0,2
+7899,1,0,1,0,0,2
+7900,1,0,1,0,0,2
+7901,2,2,3,377,0,1407
+7902,1,0,1,0,0,2
+7903,1,0,1,0,0,1
+7904,1,0,1,0,0,2
+7905,2,2,3,377,0,1457
+7906,1,0,1,0,0,2
+7907,1,0,1,0,0,2
+7908,1,0,1,0,0,2
+7948,2,2,3,377,0,1421
+7949,1,0,1,0,0,1
+7950,1,0,1,0,0,2
+7951,1,0,1,0,0,1
+7952,2,2,3,377,0,1390
+7953,1,0,1,0,0,2
+7954,1,0,1,0,0,2
+7955,1,0,1,0,0,2
+7956,2,2,3,377,0,1448
+7957,1,0,1,0,0,2
+7958,1,0,1,0,0,2
+7959,1,0,1,0,0,2
+7960,2,2,3,377,0,1411
+7961,1,0,1,0,0,2
+7962,1,0,1,0,0,1
+7963,1,0,1,0,0,2
+7964,2,2,3,377,0,1430
+7965,1,0,1,0,0,2
+7966,1,0,1,0,0,2
+7967,1,0,1,0,0,2
+7968,2,2,3,377,0,1460
+7969,1,0,1,0,0,2
+7970,1,0,1,0,0,2
+7971,1,0,1,0,0,2
+7972,2,2,3,377,0,1441
+7973,1,0,1,0,0,2
+7974,1,0,1,0,0,2
+7975,1,0,1,0,0,1
+7976,2,2,3,377,0,1424
+7977,1,0,1,0,0,2
+7978,1,0,1,0,0,2
+7979,1,0,1,0,0,2
+7980,2,2,3,377,0,1440
+7981,1,0,1,0,0,2
+7982,1,0,1,0,0,1
+7983,1,0,1,0,0,1
+7984,2,2,3,377,0,1430
+7985,1,0,1,0,0,2
+7986,1,0,1,0,0,2
+7987,1,0,1,0,0,1
+7988,2,2,3,377,0,1434
+7989,1,0,1,0,0,3
+7990,1,0,1,0,0,2
+7991,1,0,1,0,0,1
+7992,2,2,3,377,0,1440
+7993,1,0,1,0,0,2
+7994,1,0,1,0,0,2
+7995,1,0,1,0,0,1
+7996,2,2,3,377,0,1437
+7997,1,0,1,0,0,2
+7998,1,0,1,0,0,2
+7999,1,0,1,0,0,2
+8000,2,2,3,377,0,1429
+8001,1,0,1,0,0,2
+8002,1,0,1,0,0,1
+8003,1,0,1,0,0,1
+8004,2,2,3,377,0,1440
+8005,1,0,1,0,0,2
+8006,1,0,1,0,0,4
+8007,1,0,1,0,0,2
+8008,2,2,3,377,0,1439
+8009,1,0,1,0,0,2
+8010,1,0,1,0,0,2
+8011,1,0,1,0,0,2
+8012,2,2,3,377,0,1439
+8013,1,0,1,0,0,2
+8014,1,0,1,0,0,1
+8015,1,0,1,0,0,2
+8016,2,2,3,377,0,1424
+8017,1,0,1,0,0,2
+8018,1,0,1,0,0,2
+8019,1,0,1,0,0,2
+8020,2,2,3,377,0,1471
+8021,1,0,1,0,0,2
+8022,1,0,1,0,0,2
+8023,1,0,1,0,0,2
+8064,2,2,3,377,0,1405
+8065,1,0,1,0,0,2
+8066,1,0,1,0,0,1
+8067,1,0,1,0,0,1
+8068,2,2,3,377,0,1390
+8069,1,0,1,0,0,2
+8070,1,0,1,0,0,2
+8071,1,0,1,0,0,2
+8072,2,2,3,377,0,1380
+8073,1,0,1,0,0,2
+8074,1,0,1,0,0,2
+8075,1,0,1,0,0,2
+8076,2,2,3,377,0,1405
+8077,1,0,1,0,0,1
+8078,1,0,1,0,0,1
+8079,1,0,1,0,0,2
+8080,2,2,3,377,0,1390
+8081,1,0,1,0,0,1
+8082,1,0,1,0,0,2
+8083,1,0,1,0,0,2
+8084,2,2,3,377,0,1423
+8085,1,0,1,0,0,2
+8086,1,0,1,0,0,2
+8087,1,0,1,0,0,2
+8088,2,2,3,377,0,1381
+8089,1,0,1,0,0,2
+8090,1,0,1,0,0,2
+8091,1,0,1,0,0,1
+8092,2,2,3,377,0,1420
+8093,1,0,1,0,0,1
+8094,1,0,1,0,0,1
+8095,1,0,1,0,0,2
+8096,2,2,3,377,0,1403
+8097,1,0,1,0,0,1
+8098,1,0,1,0,0,1
+8099,1,0,1,0,0,2
+8100,2,2,3,377,0,1421
+8101,1,0,1,0,0,2
+8102,1,0,1,0,0,2
+8103,1,0,1,0,0,1
+8104,2,2,3,377,0,1362
+8105,1,0,1,0,0,2
+8106,1,0,1,0,0,2
+8107,1,0,1,0,0,1
+8108,2,2,3,377,0,1411
+8109,1,0,1,0,0,2
+8110,1,0,1,0,0,2
+8111,1,0,1,0,0,2
+8112,2,2,3,377,0,1395
+8113,1,0,1,0,0,2
+8114,1,0,1,0,0,1
+8115,1,0,1,0,0,2
+8116,2,2,3,377,0,1418
+8117,1,0,1,0,0,2
+8118,1,0,1,0,0,2
+8119,1,0,1,0,0,1
+8120,2,2,3,377,0,1390
+8121,1,0,1,0,0,2
+8122,1,0,1,0,0,2
+8123,1,0,1,0,0,1
+8124,2,2,3,377,0,1433
+8125,1,0,1,0,0,2
+8126,1,0,1,0,0,2
+8127,1,0,1,0,0,2
+8128,2,2,3,377,0,1399
+8129,1,0,1,0,0,2
+8130,1,0,1,0,0,2
+8131,1,0,1,0,0,2
+8132,2,2,3,377,0,1423
+8133,1,0,1,0,0,2
+8134,1,0,1,0,0,2
+8135,1,0,1,0,0,2
+8136,2,2,3,377,0,1377
+8137,1,0,1,0,0,2
+8138,1,0,1,0,0,2
+8139,1,0,1,0,0,2
+8181,2,2,3,377,0,1451
+8182,1,0,1,0,0,1
+8183,1,0,1,0,0,1
+8184,1,0,1,0,0,2
+8185,2,2,3,377,0,1355
+8186,1,0,1,0,0,1
+8187,1,0,1,0,0,2
+8188,1,0,1,0,0,2
+8189,2,2,3,377,0,1395
+8190,1,0,1,0,0,2
+8191,1,0,1,0,0,2
+8192,1,0,1,0,0,1
+8193,2,2,3,377,0,1390
+8194,1,0,1,0,0,2
+8195,1,0,1,0,0,2
+8196,1,0,1,0,0,1
+8197,2,2,3,377,0,1401
+8198,1,0,1,0,0,2
+8199,1,0,1,0,0,2
+8200,1,0,1,0,0,2
+8201,2,2,3,377,0,1376
+8202,1,0,1,0,0,2
+8203,1,0,1,0,0,2
+8204,1,0,1,0,0,2
+8205,2,2,3,377,0,1409
+8206,1,0,1,0,0,2
+8207,1,0,1,0,0,2
+8208,1,0,1,0,0,2
+8209,2,2,3,377,0,1403
+8210,1,0,1,0,0,2
+8211,1,0,1,0,0,1
+8212,1,0,1,0,0,2
+8213,2,2,3,377,0,1441
+8214,1,0,1,0,0,2
+8215,1,0,1,0,0,1
+8216,1,0,1,0,0,2
+8217,2,2,3,377,0,1384
+8218,1,0,1,0,0,2
+8219,1,0,1,0,0,2
+8220,1,0,1,0,0,2
+8221,2,2,3,377,0,1418
+8222,1,0,1,0,0,2
+8223,1,0,1,0,0,1
+8224,1,0,1,0,0,1
+8225,2,2,3,377,0,1443
+8226,1,0,1,0,0,2
+8227,1,0,1,0,0,2
+8228,1,0,1,0,0,2
+8229,2,2,3,377,0,1417
+8230,1,0,1,0,0,2
+8231,1,0,1,0,0,2
+8232,1,0,1,0,0,1
+8233,2,2,3,377,0,1427
+8234,1,0,1,0,0,2
+8235,1,0,1,0,0,2
+8236,1,0,1,0,0,1
+8237,2,2,3,377,0,1444
+8238,1,0,1,0,0,2
+8239,1,0,1,0,0,2
+8240,1,0,1,0,0,2
+8241,2,2,3,377,0,1433
+8242,1,0,1,0,0,2
+8243,1,0,1,0,0,2
+8244,1,0,1,0,0,1
+8245,2,2,3,377,0,1442
+8246,1,0,1,0,0,2
+8247,1,0,1,0,0,2
+8248,1,0,1,0,0,2
+8249,2,2,3,377,0,1426
+8250,1,0,1,0,0,2
+8251,1,0,1,0,0,2
+8252,1,0,1,0,0,2
+8253,2,2,3,377,0,1455
+8254,1,0,1,0,0,2
+8255,1,0,1,0,0,2
+8256,1,0,1,0,0,2
+8299,2,2,3,377,0,1447
+8300,1,0,1,0,0,2
+8301,1,0,1,0,0,2
+8302,1,0,1,0,0,2
+8303,2,2,3,377,0,1434
+8304,1,0,1,0,0,2
+8305,1,0,1,0,0,2
+8306,1,0,1,0,0,1
+8307,2,2,3,377,0,1414
+8308,1,0,1,0,0,2
+8309,1,0,1,0,0,1
+8310,1,0,1,0,0,2
+8311,2,2,3,377,0,1437
+8312,1,0,1,0,0,2
+8313,1,0,1,0,0,2
+8314,1,0,1,0,0,2
+8315,2,2,3,377,0,1428
+8316,1,0,1,0,0,2
+8317,1,0,1,0,0,2
+8318,1,0,1,0,0,2
+8319,2,2,3,377,0,1431
+8320,1,0,1,0,0,2
+8321,1,0,1,0,0,2
+8322,1,0,1,0,0,2
+8323,2,2,3,377,0,1441
+8324,1,0,1,0,0,2
+8325,1,0,1,0,0,2
+8326,1,0,1,0,0,2
+8327,2,2,3,377,0,1417
+8328,1,0,1,0,0,2
+8329,1,0,1,0,0,1
+8330,1,0,1,0,0,2
+8331,2,2,3,377,0,1465
+8332,1,0,1,0,0,2
+8333,1,0,1,0,0,2
+8334,1,0,1,0,0,2
+8335,2,2,3,377,0,1417
+8336,1,0,1,0,0,3
+8337,1,0,1,0,0,2
+8338,1,0,1,0,0,1
+8339,2,2,3,377,0,1443
+8340,1,0,1,0,0,2
+8341,1,0,1,0,0,2
+8342,1,0,1,0,0,2
+8343,2,2,3,377,0,1446
+8344,1,0,1,0,0,2
+8345,1,0,1,0,0,1
+8346,1,0,1,0,0,2
+8347,2,2,3,377,0,1433
+8348,1,0,1,0,0,2
+8349,1,0,1,0,0,2
+8350,1,0,1,0,0,2
+8351,2,2,3,377,0,1454
+8352,1,0,1,0,0,2
+8353,1,0,1,0,0,1
+8354,1,0,1,0,0,2
+8355,2,2,3,377,0,1430
+8356,1,0,1,0,0,2
+8357,1,0,1,0,0,1
+8358,1,0,1,0,0,2
+8359,2,2,3,377,0,1443
+8360,1,0,1,0,0,2
+8361,1,0,1,0,0,1
+8362,1,0,1,0,0,2
+8363,2,2,3,377,0,1439
+8364,1,0,1,0,0,2
+8365,1,0,1,0,0,1
+8366,1,0,1,0,0,2
+8367,2,2,3,377,0,1416
+8368,1,0,1,0,0,2
+8369,1,0,1,0,0,3
+8370,1,0,1,0,0,2
+8371,2,2,3,377,0,1427
+8372,1,0,1,0,0,2
+8373,1,0,1,0,0,2
+8374,1,0,1,0,0,2
+8418,2,2,3,377,0,1413
+8419,1,0,1,0,0,1
+8420,1,0,1,0,0,1
+8421,1,0,1,0,0,1
+8422,2,2,3,377,0,1365
+8423,1,0,1,0,0,2
+8424,1,0,1,0,0,2
+8425,1,0,1,0,0,2
+8426,2,2,3,377,0,1390
+8427,1,0,1,0,0,2
+8428,1,0,1,0,0,2
+8429,1,0,1,0,0,2
+8430,2,2,3,377,0,1414
+8431,1,0,1,0,0,2
+8432,1,0,1,0,0,2
+8433,1,0,1,0,0,2
+8434,2,2,3,377,0,1369
+8435,1,0,1,0,0,2
+8436,1,0,1,0,0,2
+8437,1,0,1,0,0,2
+8438,2,2,3,377,0,1375
+8439,1,0,1,0,0,2
+8440,1,0,1,0,0,2
+8441,1,0,1,0,0,2
+8442,2,2,3,377,0,1408
+8443,1,0,1,0,0,2
+8444,1,0,1,0,0,2
+8445,1,0,1,0,0,2
+8446,2,2,3,377,0,1401
+8447,1,0,1,0,0,2
+8448,1,0,1,0,0,2
+8449,1,0,1,0,0,2
+8450,2,2,3,377,0,1399
+8451,1,0,1,0,0,2
+8452,1,0,1,0,0,2
+8453,1,0,1,0,0,2
+8454,2,2,3,377,0,1404
+8455,1,0,1,0,0,2
+8456,1,0,1,0,0,2
+8457,1,0,1,0,0,1
+8458,2,2,3,377,0,1380
+8459,1,0,1,0,0,2
+8460,1,0,1,0,0,2
+8461,1,0,1,0,0,2
+8462,2,2,3,377,0,1395
+8463,1,0,1,0,0,2
+8464,1,0,1,0,0,1
+8465,1,0,1,0,0,1
+8466,2,2,3,377,0,1405
+8467,1,0,1,0,0,2
+8468,1,0,1,0,0,1
+8469,1,0,1,0,0,2
+8470,2,2,3,377,0,1401
+8471,1,0,1,0,0,2
+8472,1,0,1,0,0,2
+8473,1,0,1,0,0,2
+8474,2,2,3,377,0,1411
+8475,1,0,1,0,0,2
+8476,1,0,1,0,0,1
+8477,1,0,1,0,0,2
+8478,2,2,3,377,0,1410
+8479,1,0,1,0,0,2
+8480,1,0,1,0,0,1
+8481,1,0,1,0,0,2
+8482,2,2,3,377,0,1378
+8483,1,0,1,0,0,2
+8484,1,0,1,0,0,2
+8485,1,0,1,0,0,4
+8486,2,2,3,377,0,1422
+8487,1,0,1,0,0,1
+8488,1,0,1,0,0,1
+8489,1,0,1,0,0,2
+8490,2,2,3,377,0,1396
+8491,1,0,1,0,0,1
+8492,1,0,1,0,0,1
+8493,1,0,1,0,0,1
+8538,2,2,3,377,0,1411
+8539,1,0,1,0,0,2
+8540,1,0,1,0,0,10
+8541,1,0,1,0,0,1
+8542,2,2,3,377,0,1355
+8543,1,0,1,0,0,2
+8544,1,0,1,0,0,1
+8545,1,0,1,0,0,2
+8546,2,2,3,377,0,1403
+8547,1,0,1,0,0,2
+8548,1,0,1,0,0,1
+8549,1,0,1,0,0,2
+8550,2,2,3,377,0,1396
+8551,1,0,1,0,0,2
+8552,1,0,1,0,0,2
+8553,1,0,1,0,0,2
+8554,2,2,3,377,0,1414
+8555,1,0,1,0,0,2
+8556,1,0,1,0,0,1
+8557,1,0,1,0,0,2
+8558,2,2,3,377,0,1393
+8559,1,0,1,0,0,2
+8560,1,0,1,0,0,2
+8561,1,0,1,0,0,1
+8562,2,2,3,377,0,1415
+8563,1,0,1,0,0,2
+8564,1,0,1,0,0,2
+8565,1,0,1,0,0,2
+8566,2,2,3,377,0,1396
+8567,1,0,1,0,0,2
+8568,1,0,1,0,0,2
+8569,1,0,1,0,0,2
+8570,2,2,3,377,0,1400
+8571,1,0,1,0,0,2
+8572,1,0,1,0,0,2
+8573,1,0,1,0,0,2
+8574,2,2,3,377,0,1445
+8575,1,0,1,0,0,3
+8576,1,0,1,0,0,1
+8577,1,0,1,0,0,1
+8578,2,2,3,377,0,1401
+8579,1,0,1,0,0,2
+8580,1,0,1,0,0,1
+8581,1,0,1,0,0,2
+8582,2,2,3,377,0,1426
+8583,1,0,1,0,0,2
+8584,1,0,1,0,0,2
+8585,1,0,1,0,0,1
+8586,2,2,3,377,0,1436
+8587,1,0,1,0,0,3
+8588,1,0,1,0,0,2
+8589,1,0,1,0,0,1
+8590,2,2,3,377,0,1420
+8591,1,0,1,0,0,2
+8592,1,0,1,0,0,2
+8593,1,0,1,0,0,1
+8594,2,2,3,377,0,1480
+8595,1,0,1,0,0,2
+8596,1,0,1,0,0,2
+8597,1,0,1,0,0,2
+8598,2,2,3,377,0,1436
+8599,1,0,1,0,0,2
+8600,1,0,1,0,0,2
+8601,1,0,1,0,0,2
+8602,2,2,3,377,0,1432
+8603,1,0,1,0,0,2
+8604,1,0,1,0,0,3
+8605,1,0,1,0,0,2
+8606,2,2,3,377,0,1452
+8607,1,0,1,0,0,2
+8608,1,0,1,0,0,2
+8609,1,0,1,0,0,2
+8610,2,2,3,377,0,1444
+8611,1,0,1,0,0,2
+8612,1,0,1,0,0,1
+8613,1,0,1,0,0,2
+8659,2,2,3,377,0,1410
+8660,1,0,1,0,0,3
+8661,1,0,1,0,0,10
+8662,1,0,1,0,0,1
+8663,2,2,3,377,0,1429
+8664,1,0,1,0,0,2
+8665,1,0,1,0,0,2
+8666,1,0,1,0,0,2
+8667,2,2,3,377,0,1422
+8668,1,0,1,0,0,5
+8669,1,0,1,0,0,2
+8670,1,0,1,0,0,2
+8671,2,2,3,377,0,1438
+8672,1,0,1,0,0,2
+8673,1,0,1,0,0,2
+8674,1,0,1,0,0,2
+8675,2,2,3,377,0,1450
+8676,1,0,1,0,0,2
+8677,1,0,1,0,0,2
+8678,1,0,1,0,0,2
+8679,2,2,3,377,0,1414
+8680,1,0,1,0,0,2
+8681,1,0,1,0,0,2
+8682,1,0,1,0,0,2
+8683,2,2,3,377,0,1421
+8684,1,0,1,0,0,2
+8685,1,0,1,0,0,2
+8686,1,0,1,0,0,2
+8687,2,2,3,377,0,1438
+8688,1,0,1,0,0,2
+8689,1,0,1,0,0,2
+8690,1,0,1,0,0,2
+8691,2,2,3,377,0,1427
+8692,1,0,1,0,0,2
+8693,1,0,1,0,0,2
+8694,1,0,1,0,0,1
+8695,2,2,3,377,0,1443
+8696,1,0,1,0,0,2
+8697,1,0,1,0,0,2
+8698,1,0,1,0,0,2
+8699,2,2,3,377,0,1416
+8700,1,0,1,0,0,2
+8701,1,0,1,0,0,2
+8702,1,0,1,0,0,2
+8703,2,2,3,377,0,1444
+8704,1,0,1,0,0,1
+8705,1,0,1,0,0,1
+8706,1,0,1,0,0,2
+8707,2,2,3,377,0,1432
+8708,1,0,1,0,0,2
+8709,1,0,1,0,0,2
+8710,1,0,1,0,0,2
+8711,2,2,3,377,0,1430
+8712,1,0,1,0,0,2
+8713,1,0,1,0,0,2
+8714,1,0,1,0,0,1
+8715,2,2,3,377,0,1425
+8716,1,0,1,0,0,2
+8717,1,0,1,0,0,2
+8718,1,0,1,0,0,2
+8719,2,2,3,377,0,1448
+8720,1,0,1,0,0,2
+8721,1,0,1,0,0,1
+8722,1,0,1,0,0,1
+8723,2,2,3,377,0,1412
+8724,1,0,1,0,0,2
+8725,1,0,1,0,0,2
+8726,1,0,1,0,0,1
+8727,2,2,3,377,0,1453
+8728,1,0,1,0,0,2
+8729,1,0,1,0,0,2
+8730,1,0,1,0,0,2
+8731,2,2,3,377,0,1450
+8732,1,0,1,0,0,2
+8733,1,0,1,0,0,2
+8734,1,0,1,0,0,2
+8781,2,2,3,377,0,1437
+8782,1,0,1,0,0,1
+8783,1,0,1,0,0,1
+8784,1,0,1,0,0,1
+8785,2,2,3,377,0,1402
+8786,1,0,1,0,0,2
+8787,1,0,1,0,0,2
+8788,1,0,1,0,0,2
+8789,2,2,3,377,0,1423
+8790,1,0,1,0,0,2
+8791,1,0,1,0,0,2
+8792,1,0,1,0,0,1
+8793,2,2,3,377,0,1419
+8794,1,0,1,0,0,2
+8795,1,0,1,0,0,2
+8796,1,0,1,0,0,2
+8797,2,2,3,377,0,1411
+8798,1,0,1,0,0,2
+8799,1,0,1,0,0,1
+8800,1,0,1,0,0,2
+8801,2,2,3,377,0,1385
+8802,1,0,1,0,0,2
+8803,1,0,1,0,0,2
+8804,1,0,1,0,0,2
+8805,2,2,3,377,0,1401
+8806,1,0,1,0,0,2
+8807,1,0,1,0,0,2
+8808,1,0,1,0,0,2
+8809,2,2,3,377,0,1407
+8810,1,0,1,0,0,2
+8811,1,0,1,0,0,2
+8812,1,0,1,0,0,2
+8813,2,2,3,377,0,1412
+8814,1,0,1,0,0,2
+8815,1,0,1,0,0,2
+8816,1,0,1,0,0,2
+8817,2,2,3,377,0,1386
+8818,1,0,1,0,0,2
+8819,1,0,1,0,0,1
+8820,1,0,1,0,0,2
+8821,2,2,3,377,0,1432
+8822,1,0,1,0,0,2
+8823,1,0,1,0,0,2
+8824,1,0,1,0,0,2
+8825,2,2,3,377,0,1381
+8826,1,0,1,0,0,2
+8827,1,0,1,0,0,2
+8828,1,0,1,0,0,1
+8829,2,2,3,377,0,1420
+8830,1,0,1,0,0,2
+8831,1,0,1,0,0,2
+8832,1,0,1,0,0,1
+8833,2,2,3,377,0,1402
+8834,1,0,1,0,0,2
+8835,1,0,1,0,0,2
+8836,1,0,1,0,0,2
+8837,2,2,3,377,0,1410
+8838,1,0,1,0,0,2
+8839,1,0,1,0,0,2
+8840,1,0,1,0,0,2
+8841,2,2,3,377,0,1394
+8842,1,0,1,0,0,2
+8843,1,0,1,0,0,2
+8844,1,0,1,0,0,2
+8845,2,2,3,377,0,1414
+8846,1,0,1,0,0,2
+8847,1,0,1,0,0,2
+8848,1,0,1,0,0,2
+8849,2,2,3,377,0,1372
+8850,1,0,1,0,0,2
+8851,1,0,1,0,0,2
+8852,1,0,1,0,0,2
+8853,2,2,3,377,0,1434
+8854,1,0,1,0,0,2
+8855,1,0,1,0,0,2
+8856,1,0,1,0,0,2
+8904,2,2,3,377,0,1392
+8905,1,0,1,0,0,2
+8906,1,0,1,0,0,2
+8907,1,0,1,0,0,1
+8908,2,2,3,377,0,1359
+8909,1,0,1,0,0,2
+8910,1,0,1,0,0,2
+8911,1,0,1,0,0,2
+8912,2,2,3,377,0,1401
+8913,1,0,1,0,0,2
+8914,1,0,1,0,0,2
+8915,1,0,1,0,0,1
+8916,2,2,3,377,0,1410
+8917,1,0,1,0,0,2
+8918,1,0,1,0,0,4
+8919,1,0,1,0,0,2
+8920,2,2,3,377,0,1365
+8921,1,0,1,0,0,2
+8922,1,0,1,0,0,2
+8923,1,0,1,0,0,2
+8924,2,2,3,377,0,1415
+8925,1,0,1,0,0,2
+8926,1,0,1,0,0,2
+8927,1,0,1,0,0,2
+8928,2,2,3,377,0,1359
+8929,1,0,1,0,0,2
+8930,1,0,1,0,0,2
+8931,1,0,1,0,0,2
+8932,2,2,3,377,0,1409
+8933,1,0,1,0,0,2
+8934,1,0,1,0,0,2
+8935,1,0,1,0,0,2
+8936,2,2,3,377,0,1368
+8937,1,0,1,0,0,2
+8938,1,0,1,0,0,2
+8939,1,0,1,0,0,2
+8940,2,2,3,377,0,1422
+8941,1,0,1,0,0,2
+8942,1,0,1,0,0,1
+8943,1,0,1,0,0,2
+8944,2,2,3,377,0,1399
+8945,1,0,1,0,0,2
+8946,1,0,1,0,0,2
+8947,1,0,1,0,0,1
+8948,2,2,3,377,0,1412
+8949,1,0,1,0,0,2
+8950,1,0,1,0,0,2
+8951,1,0,1,0,0,1
+8952,2,2,3,377,0,1416
+8953,1,0,1,0,0,2
+8954,1,0,1,0,0,1
+8955,1,0,1,0,0,2
+8956,2,2,3,377,0,1449
+8957,1,0,1,0,0,2
+8958,1,0,1,0,0,2
+8959,1,0,1,0,0,1
+8960,2,2,3,377,0,1442
+8961,1,0,1,0,0,2
+8962,1,0,1,0,0,2
+8963,1,0,1,0,0,2
+8964,2,2,3,377,0,1407
+8965,1,0,1,0,0,1
+8966,1,0,1,0,0,1
+8967,1,0,1,0,0,2
+8968,2,2,3,377,0,1434
+8969,1,0,1,0,0,2
+8970,1,0,1,0,0,2
+8971,1,0,1,0,0,2
+8972,2,2,3,377,0,1463
+8973,1,0,1,0,0,2
+8974,1,0,1,0,0,2
+8975,1,0,1,0,0,2
+8976,2,2,3,377,0,1426
+8977,1,0,1,0,0,1
+8978,1,0,1,0,0,1
+8979,1,0,1,0,0,2
+9028,2,2,3,377,0,1465
+9029,1,0,1,0,0,2
+9030,1,0,1,0,0,3
+9031,1,0,1,0,0,2
+9032,2,2,3,377,0,1392
+9033,1,0,1,0,0,2
+9034,1,0,1,0,0,2
+9035,1,0,1,0,0,2
+9036,2,2,3,377,0,1452
+9037,1,0,1,0,0,2
+9038,1,0,1,0,0,2
+9039,1,0,1,0,0,1
+9040,2,2,3,377,0,1421
+9041,1,0,1,0,0,2
+9042,1,0,1,0,0,2
+9043,1,0,1,0,0,2
+9044,2,2,3,377,0,1430
+9045,1,0,1,0,0,2
+9046,1,0,1,0,0,2
+9047,1,0,1,0,0,2
+9048,2,2,3,377,0,1418
+9049,1,0,1,0,0,2
+9050,1,0,1,0,0,2
+9051,1,0,1,0,0,2
+9052,2,2,3,377,0,1466
+9053,1,0,1,0,0,2
+9054,1,0,1,0,0,2
+9055,1,0,1,0,0,1
+9056,2,2,3,377,0,1418
+9057,1,0,1,0,0,2
+9058,1,0,1,0,0,1
+9059,1,0,1,0,0,2
+9060,2,2,3,377,0,1436
+9061,1,0,1,0,0,2
+9062,1,0,1,0,0,1
+9063,1,0,1,0,0,2
+9064,2,2,3,377,0,1441
+9065,1,0,1,0,0,2
+9066,1,0,1,0,0,1
+9067,1,0,1,0,0,1
+9068,2,2,3,377,0,1456
+9069,1,0,1,0,0,2
+9070,1,0,1,0,0,2
+9071,1,0,1,0,0,2
+9072,2,2,3,377,0,1420
+9073,1,0,1,0,0,2
+9074,1,0,1,0,0,2
+9075,1,0,1,0,0,2
+9076,2,2,3,377,0,1426
+9077,1,0,1,0,0,2
+9078,1,0,1,0,0,2
+9079,1,0,1,0,0,2
+9080,2,2,3,377,0,1436
+9081,1,0,1,0,0,2
+9082,1,0,1,0,0,2
+9083,1,0,1,0,0,2
+9084,2,2,3,377,0,1434
+9085,1,0,1,0,0,2
+9086,1,0,1,0,0,2
+9087,1,0,1,0,0,2
+9088,2,2,3,377,0,1450
+9089,1,0,1,0,0,2
+9090,1,0,1,0,0,2
+9091,1,0,1,0,0,2
+9092,2,2,3,377,0,1434
+9093,1,0,1,0,0,2
+9094,1,0,1,0,0,2
+9095,1,0,1,0,0,2
+9096,2,2,3,377,0,1432
+9097,1,0,1,0,0,2
+9098,1,0,1,0,0,2
+9099,1,0,1,0,0,2
+9100,2,2,3,377,0,1424
+9101,1,0,1,0,0,2
+9102,1,0,1,0,0,2
+9103,1,0,1,0,0,2
+9153,2,2,3,377,0,1435
+9154,1,0,1,0,0,2
+9155,1,0,1,0,0,2
+9156,1,0,1,0,0,1
+9157,2,2,3,377,0,1408
+9158,1,0,1,0,0,2
+9159,1,0,1,0,0,2
+9160,1,0,1,0,0,1
+9161,2,2,3,377,0,1465
+9162,1,0,1,0,0,2
+9163,1,0,1,0,0,1
+9164,1,0,1,0,0,2
+9165,2,2,3,377,0,1414
+9166,1,0,1,0,0,2
+9167,1,0,1,0,0,1
+9168,1,0,1,0,0,2
+9169,2,2,3,377,0,1418
+9170,1,0,1,0,0,2
+9171,1,0,1,0,0,5
+9172,1,0,1,0,0,2
+9173,2,2,3,377,0,1426
+9174,1,0,1,0,0,2
+9175,1,0,1,0,0,2
+9176,1,0,1,0,0,2
+9177,2,2,3,377,0,1370
+9178,1,0,1,0,0,1
+9179,1,0,1,0,0,1
+9180,1,0,1,0,0,1
+9181,2,2,3,377,0,1376
+9182,1,0,1,0,0,1
+9183,1,0,1,0,0,1
+9184,1,0,1,0,0,1
+9185,2,2,3,377,0,1413
+9186,1,0,1,0,0,2
+9187,1,0,1,0,0,2
+9188,1,0,1,0,0,2
+9189,2,2,3,377,0,1387
+9190,1,0,1,0,0,1
+9191,1,0,1,0,0,2
+9192,1,0,1,0,0,2
+9193,2,2,3,377,0,1415
+9194,1,0,1,0,0,1
+9195,1,0,1,0,0,1
+9196,1,0,1,0,0,2
+9197,2,2,3,377,0,1403
+9198,1,0,1,0,0,2
+9199,1,0,1,0,0,2
+9200,1,0,1,0,0,1
+9201,2,2,3,377,0,1386
+9202,1,0,1,0,0,2
+9203,1,0,1,0,0,2
+9204,1,0,1,0,0,2
+9205,2,2,3,377,0,1411
+9206,1,0,1,0,0,2
+9207,1,0,1,0,0,2
+9208,1,0,1,0,0,2
+9209,2,2,3,377,0,1371
+9210,1,0,1,0,0,2
+9211,1,0,1,0,0,2
+9212,1,0,1,0,0,2
+9213,2,2,3,377,0,1409
+9214,1,0,1,0,0,2
+9215,1,0,1,0,0,2
+9216,1,0,1,0,0,1
+9217,2,2,3,377,0,1380
+9218,1,0,1,0,0,2
+9219,1,0,1,0,0,2
+9220,1,0,1,0,0,2
+9221,2,2,3,377,0,1411
+9222,1,0,1,0,0,2
+9223,1,0,1,0,0,2
+9224,1,0,1,0,0,1
+9225,2,2,3,377,0,1380
+9226,1,0,1,0,0,2
+9227,1,0,1,0,0,2
+9228,1,0,1,0,0,2
+9279,2,2,3,377,0,1404
+9280,1,0,1,0,0,2
+9281,1,0,1,0,0,1
+9282,1,0,1,0,0,1
+9283,2,2,3,377,0,1339
+9284,1,0,1,0,0,2
+9285,1,0,1,0,0,2
+9286,1,0,1,0,0,1
+9287,2,2,3,377,0,1374
+9288,1,0,1,0,0,2
+9289,1,0,1,0,0,2
+9290,1,0,1,0,0,2
+9291,2,2,3,377,0,1384
+9292,1,0,1,0,0,2
+9293,1,0,1,0,0,1
+9294,1,0,1,0,0,2
+9295,2,2,3,377,0,1368
+9296,1,0,1,0,0,2
+9297,1,0,1,0,0,2
+9298,1,0,1,0,0,2
+9299,2,2,3,377,0,1391
+9300,1,0,1,0,0,2
+9301,1,0,1,0,0,1
+9302,1,0,1,0,0,2
+9303,2,2,3,377,0,1368
+9304,1,0,1,0,0,2
+9305,1,0,1,0,0,1
+9306,1,0,1,0,0,2
+9307,2,2,3,377,0,1388
+9308,1,0,1,0,0,2
+9309,1,0,1,0,0,1
+9310,1,0,1,0,0,2
+9311,2,2,3,377,0,1403
+9312,1,0,1,0,0,2
+9313,1,0,1,0,0,2
+9314,1,0,1,0,0,2
+9315,2,2,3,377,0,1384
+9316,1,0,1,0,0,2
+9317,1,0,1,0,0,2
+9318,1,0,1,0,0,1
+9319,2,2,3,377,0,1397
+9320,1,0,1,0,0,2
+9321,1,0,1,0,0,2
+9322,1,0,1,0,0,2
+9323,2,2,3,377,0,1388
+9324,1,0,1,0,0,2
+9325,1,0,1,0,0,2
+9326,1,0,1,0,0,2
+9327,2,2,3,377,0,1383
+9328,1,0,1,0,0,2
+9329,1,0,1,0,0,1
+9330,1,0,1,0,0,2
+9331,2,2,3,377,0,1413
+9332,1,0,1,0,0,2
+9333,1,0,1,0,0,2
+9334,1,0,1,0,0,2
+9335,2,2,3,377,0,1418
+9336,1,0,1,0,0,2
+9337,1,0,1,0,0,2
+9338,1,0,1,0,0,2
+9339,2,2,3,377,0,1445
+9340,1,0,1,0,0,2
+9341,1,0,1,0,0,2
+9342,1,0,1,0,0,1
+9343,2,2,3,377,0,1430
+9344,1,0,1,0,0,2
+9345,1,0,1,0,0,2
+9346,1,0,1,0,0,2
+9347,2,2,3,377,0,1402
+9348,1,0,1,0,0,2
+9349,1,0,1,0,0,2
+9350,1,0,1,0,0,2
+9351,2,2,3,377,0,1452
+9352,1,0,1,0,0,3
+9353,1,0,1,0,0,2
+9354,1,0,1,0,0,2
+9406,2,2,3,377,0,1435
+9407,1,0,1,0,0,1
+9408,1,0,1,0,0,1
+9409,1,0,1,0,0,1
+9410,2,2,3,377,0,1415
+9411,1,0,1,0,0,2
+9412,1,0,1,0,0,1
+9413,1,0,1,0,0,2
+9414,2,2,3,377,0,1452
+9415,1,0,1,0,0,2
+9416,1,0,1,0,0,2
+9417,1,0,1,0,0,2
+9418,2,2,3,377,0,1431
+9419,1,0,1,0,0,2
+9420,1,0,1,0,0,2
+9421,1,0,1,0,0,1
+9422,2,2,3,377,0,1465
+9423,1,0,1,0,0,1
+9424,1,0,1,0,0,1
+9425,1,0,1,0,0,2
+9426,2,2,3,377,0,1429
+9427,1,0,1,0,0,5
+9428,1,0,1,0,0,2
+9429,1,0,1,0,0,2
+9430,2,2,3,377,0,1446
+9431,1,0,1,0,0,2
+9432,1,0,1,0,0,2
+9433,1,0,1,0,0,1
+9434,2,2,3,377,0,1445
+9435,1,0,1,0,0,2
+9436,1,0,1,0,0,2
+9437,1,0,1,0,0,1
+9438,2,2,3,377,0,1435
+9439,1,0,1,0,0,2
+9440,1,0,1,0,0,2
+9441,1,0,1,0,0,2
+9442,2,2,3,377,0,1419
+9443,1,0,1,0,0,2
+9444,1,0,1,0,0,2
+9445,1,0,1,0,0,2
+9446,2,2,3,377,0,1433
+9447,1,0,1,0,0,2
+9448,1,0,1,0,0,2
+9449,1,0,1,0,0,2
+9450,2,2,3,377,0,1452
+9451,1,0,1,0,0,2
+9452,1,0,1,0,0,2
+9453,1,0,1,0,0,1
+9454,2,2,3,377,0,1436
+9455,1,0,1,0,0,3
+9456,1,0,1,0,0,2
+9457,1,0,1,0,0,2
+9458,2,2,3,377,0,1418
+9459,1,0,1,0,0,2
+9460,1,0,1,0,0,1
+9461,1,0,1,0,0,2
+9462,2,2,3,377,0,1440
+9463,1,0,1,0,0,2
+9464,1,0,1,0,0,2
+9465,1,0,1,0,0,2
+9466,2,2,3,377,0,1414
+9467,1,0,1,0,0,2
+9468,1,0,1,0,0,2
+9469,1,0,1,0,0,1
+9470,2,2,3,377,0,1445
+9471,1,0,1,0,0,2
+9472,1,0,1,0,0,1
+9473,1,0,1,0,0,1
+9474,2,2,3,377,0,1452
+9475,1,0,1,0,0,2
+9476,1,0,1,0,0,1
+9477,1,0,1,0,0,1
+9478,2,2,3,377,0,1420
+9479,1,0,1,0,0,2
+9480,1,0,1,0,0,2
+9481,1,0,1,0,0,2
+9534,2,2,3,377,0,1421
+9535,1,0,1,0,0,2
+9536,1,0,1,0,0,2
+9537,1,0,1,0,0,2
+9538,2,2,3,377,0,1424
+9539,1,0,1,0,0,2
+9540,1,0,1,0,0,2
+9541,1,0,1,0,0,2
+9542,2,2,3,377,0,1410
+9543,1,0,1,0,0,2
+9544,1,0,1,0,0,1
+9545,1,0,1,0,0,2
+9546,2,2,3,377,0,1443
+9547,1,0,1,0,0,2
+9548,1,0,1,0,0,2
+9549,1,0,1,0,0,1
+9550,2,2,3,377,0,1427
+9551,1,0,1,0,0,2
+9552,1,0,1,0,0,2
+9553,1,0,1,0,0,1
+9554,2,2,3,377,0,1402
+9555,1,0,1,0,0,2
+9556,1,0,1,0,0,4
+9557,1,0,1,0,0,2
+9558,2,2,3,377,0,1407
+9559,1,0,1,0,0,2
+9560,1,0,1,0,0,2
+9561,1,0,1,0,0,2
+9562,2,2,3,377,0,1399
+9563,1,0,1,0,0,2
+9564,1,0,1,0,0,2
+9565,1,0,1,0,0,1
+9566,2,2,3,377,0,1391
+9567,1,0,1,0,0,2
+9568,1,0,1,0,0,2
+9569,1,0,1,0,0,2
+9570,2,2,3,377,0,1412
+9571,1,0,1,0,0,1
+9572,1,0,1,0,0,1
+9573,1,0,1,0,0,2
+9574,2,2,3,377,0,1385
+9575,1,0,1,0,0,2
+9576,1,0,1,0,0,1
+9577,1,0,1,0,0,2
+9578,2,2,3,377,0,1398
+9579,1,0,1,0,0,1
+9580,1,0,1,0,0,1
+9581,1,0,1,0,0,2
+9582,2,2,3,377,0,1422
+9583,1,0,1,0,0,2
+9584,1,0,1,0,0,1
+9585,1,0,1,0,0,2
+9586,2,2,3,377,0,1400
+9587,1,0,1,0,0,1
+9588,1,0,1,0,0,2
+9589,1,0,1,0,0,2
+9590,2,2,3,377,0,1424
+9591,1,0,1,0,0,2
+9592,1,0,1,0,0,1
+9593,1,0,1,0,0,2
+9594,2,2,3,377,0,1410
+9595,1,0,1,0,0,2
+9596,1,0,1,0,0,2
+9597,1,0,1,0,0,2
+9598,2,2,3,377,0,1412
+9599,1,0,1,0,0,2
+9600,1,0,1,0,0,2
+9601,1,0,1,0,0,2
+9602,2,2,3,377,0,1399
+9603,1,0,1,0,0,2
+9604,1,0,1,0,0,2
+9605,1,0,1,0,0,2
+9606,2,2,3,377,0,1406
+9607,1,0,1,0,0,2
+9608,1,0,1,0,0,2
+9609,1,0,1,0,0,2
+9663,2,2,3,377,0,1418
+9664,1,0,1,0,0,2
+9665,1,0,1,0,0,2
+9666,1,0,1,0,0,2
+9667,2,2,3,377,0,1360
+9668,1,0,1,0,0,2
+9669,1,0,1,0,0,2
+9670,1,0,1,0,0,2
+9671,2,2,3,377,0,1406
+9672,1,0,1,0,0,2
+9673,1,0,1,0,0,2
+9674,1,0,1,0,0,1
+9675,2,2,3,377,0,1383
+9676,1,0,1,0,0,2
+9677,1,0,1,0,0,2
+9678,1,0,1,0,0,2
+9679,2,2,3,377,0,1404
+9680,1,0,1,0,0,2
+9681,1,0,1,0,0,2
+9682,1,0,1,0,0,2
+9683,2,2,3,377,0,1404
+9684,1,0,1,0,0,2
+9685,1,0,1,0,0,1
+9686,1,0,1,0,0,2
+9687,2,2,3,377,0,1406
+9688,1,0,1,0,0,2
+9689,1,0,1,0,0,2
+9690,1,0,1,0,0,2
+9691,2,2,3,377,0,1420
+9692,1,0,1,0,0,1
+9693,1,0,1,0,0,1
+9694,1,0,1,0,0,2
+9695,2,2,3,377,0,1406
+9696,1,0,1,0,0,2
+9697,1,0,1,0,0,2
+9698,1,0,1,0,0,2
+9699,2,2,3,377,0,1403
+9700,1,0,1,0,0,2
+9701,1,0,1,0,0,2
+9702,1,0,1,0,0,2
+9703,2,2,3,377,0,1395
+9704,1,0,1,0,0,2
+9705,1,0,1,0,0,2
+9706,1,0,1,0,0,1
+9707,2,2,3,377,0,1386
+9708,1,0,1,0,0,2
+9709,1,0,1,0,0,2
+9710,1,0,1,0,0,2
+9711,2,2,3,377,0,1406
+9712,1,0,1,0,0,2
+9713,1,0,1,0,0,2
+9714,1,0,1,0,0,2
+9715,2,2,3,377,0,1432
+9716,1,0,1,0,0,2
+9717,1,0,1,0,0,2
+9718,1,0,1,0,0,2
+9719,2,2,3,377,0,1403
+9720,1,0,1,0,0,2
+9721,1,0,1,0,0,2
+9722,1,0,1,0,0,2
+9723,2,2,3,377,0,1441
+9724,1,0,1,0,0,2
+9725,1,0,1,0,0,1
+9726,1,0,1,0,0,2
+9727,2,2,3,377,0,1432
+9728,1,0,1,0,0,2
+9729,1,0,1,0,0,2
+9730,1,0,1,0,0,2
+9731,2,2,3,377,0,1420
+9732,1,0,1,0,0,2
+9733,1,0,1,0,0,2
+9734,1,0,1,0,0,2
+9735,2,2,3,377,0,1449
+9736,1,0,1,0,0,2
+9737,1,0,1,0,0,2
+9738,1,0,1,0,0,2
+9793,2,2,3,377,0,1449
+9794,1,0,1,0,0,2
+9795,1,0,1,0,0,2
+9796,1,0,1,0,0,2
+9797,2,2,3,377,0,1413
+9798,1,0,1,0,0,2
+9799,1,0,1,0,0,2
+9800,1,0,1,0,0,2
+9801,2,2,3,377,0,1418
+9802,1,0,1,0,0,2
+9803,1,0,1,0,0,3
+9804,1,0,1,0,0,1
+9805,2,2,3,377,0,1454
+9806,1,0,1,0,0,2
+9807,1,0,1,0,0,2
+9808,1,0,1,0,0,2
+9809,2,2,3,377,0,1427
+9810,1,0,1,0,0,2
+9811,1,0,1,0,0,2
+9812,1,0,1,0,0,2
+9813,2,2,3,377,0,1418
+9814,1,0,1,0,0,2
+9815,1,0,1,0,0,2
+9816,1,0,1,0,0,5
+9817,2,2,3,377,0,1446
+9818,1,0,1,0,0,2
+9819,1,0,1,0,0,2
+9820,1,0,1,0,0,2
+9821,2,2,3,377,0,1439
+9822,1,0,1,0,0,2
+9823,1,0,1,0,0,2
+9824,1,0,1,0,0,2
+9825,2,2,3,377,0,1431
+9826,1,0,1,0,0,3
+9827,1,0,1,0,0,2
+9828,1,0,1,0,0,2
+9829,2,2,3,377,0,1427
+9830,1,0,1,0,0,2
+9831,1,0,1,0,0,2
+9832,1,0,1,0,0,2
+9833,2,2,3,377,0,1440
+9834,1,0,1,0,0,2
+9835,1,0,1,0,0,1
+9836,1,0,1,0,0,2
+9837,2,2,3,377,0,1419
+9838,1,0,1,0,0,2
+9839,1,0,1,0,0,2
+9840,1,0,1,0,0,2
+9841,2,2,3,377,0,1427
+9842,1,0,1,0,0,2
+9843,1,0,1,0,0,2
+9844,1,0,1,0,0,1
+9845,2,2,3,377,0,1422
+9846,1,0,1,0,0,2
+9847,1,0,1,0,0,2
+9848,1,0,1,0,0,1
+9849,2,2,3,377,0,1451
+9850,1,0,1,0,0,5
+9851,1,0,1,0,0,2
+9852,1,0,1,0,0,2
+9853,2,2,3,377,0,1445
+9854,1,0,1,0,0,2
+9855,1,0,1,0,0,2
+9856,1,0,1,0,0,2
+9857,2,2,3,377,0,1450
+9858,1,0,1,0,0,2
+9859,1,0,1,0,0,1
+9860,1,0,1,0,0,1
+9861,2,2,3,377,0,1453
+9862,1,0,1,0,0,2
+9863,1,0,1,0,0,2
+9864,1,0,1,0,0,2
+9865,2,2,3,377,0,1411
+9866,1,0,1,0,0,2
+9867,1,0,1,0,0,2
+9868,1,0,1,0,0,1
+9924,2,2,3,377,0,1448
+9925,1,0,1,0,0,2
+9926,1,0,1,0,0,2
+9927,1,0,1,0,0,2
+9928,2,2,3,377,0,1372
+9929,1,0,1,0,0,2
+9930,1,0,1,0,0,2
+9931,1,0,1,0,0,1
+9932,2,2,3,377,0,1447
+9933,1,0,1,0,0,2
+9934,1,0,1,0,0,2
+9935,1,0,1,0,0,1
+9936,2,2,3,377,0,1408
+9937,1,0,1,0,0,2
+9938,1,0,1,0,0,2
+9939,1,0,1,0,0,1
+9940,2,2,3,377,0,1426
+9941,1,0,1,0,0,2
+9942,1,0,1,0,0,1
+9943,1,0,1,0,0,2
+9944,2,2,3,377,0,1392
+9945,1,0,1,0,0,2
+9946,1,0,1,0,0,2
+9947,1,0,1,0,0,5
+9948,2,2,3,377,0,1407
+9949,1,0,1,0,0,2
+9950,1,0,1,0,0,2
+9951,1,0,1,0,0,1
+9952,2,2,3,377,0,1379
+9953,1,0,1,0,0,2
+9954,1,0,1,0,0,2
+9955,1,0,1,0,0,2
+9956,2,2,3,377,0,1411
+9957,1,0,1,0,0,2
+9958,1,0,1,0,0,2
+9959,1,0,1,0,0,2
+9960,2,2,3,377,0,1388
+9961,1,0,1,0,0,2
+9962,1,0,1,0,0,2
+9963,1,0,1,0,0,2
+9964,2,2,3,377,0,1399
+9965,1,0,1,0,0,2
+9966,1,0,1,0,0,2
+9967,1,0,1,0,0,2
+9968,2,2,3,377,0,1396
+9969,1,0,1,0,0,2
+9970,1,0,1,0,0,2
+9971,1,0,1,0,0,2
+9972,2,2,3,377,0,1430
+9973,1,0,1,0,0,2
+9974,1,0,1,0,0,2
+9975,1,0,1,0,0,2
+9976,2,2,3,377,0,1385
+9977,1,0,1,0,0,2
+9978,1,0,1,0,0,1
+9979,1,0,1,0,0,2
+9980,2,2,3,377,0,1405
+9981,1,0,1,0,0,2
+9982,1,0,1,0,0,2
+9983,1,0,1,0,0,1
+9984,2,2,3,377,0,1375
+9985,1,0,1,0,0,2
+9986,1,0,1,0,0,2
+9987,1,0,1,0,0,2
+9988,2,2,3,377,0,1423
+9989,1,0,1,0,0,2
+9990,1,0,1,0,0,1
+9991,1,0,1,0,0,1
+9992,2,2,3,377,0,1361
+9993,1,0,1,0,0,2
+9994,1,0,1,0,0,2
+9995,1,0,1,0,0,2
+9996,2,2,3,377,0,1431
+9997,1,0,1,0,0,2
+9998,1,0,1,0,0,2
+9999,1,0,1,0,0,2
+10056,2,2,3,377,0,1399
+10057,1,0,1,0,0,2
+10058,1,0,1,0,0,2
+10059,1,0,1,0,0,2
+10060,2,2,3,377,0,1369
+10061,1,0,1,0,0,2
+10062,1,0,1,0,0,1
+10063,1,0,1,0,0,2
+10064,2,2,3,377,0,1382
+10065,1,0,1,0,0,2
+10066,1,0,1,0,0,1
+10067,1,0,1,0,0,2
+10068,2,2,3,377,0,1383
+10069,1,0,1,0,0,2
+10070,1,0,1,0,0,2
+10071,1,0,1,0,0,2
+10072,2,2,3,377,0,1386
+10073,1,0,1,0,0,1
+10074,1,0,1,0,0,1
+10075,1,0,1,0,0,2
+10076,2,2,3,377,0,1401
+10077,1,0,1,0,0,2
+10078,1,0,1,0,0,5
+10079,1,0,1,0,0,2
+10080,2,2,3,377,0,1353
+10081,1,0,1,0,0,1
+10082,1,0,1,0,0,1
+10083,1,0,1,0,0,2
+10084,2,2,3,377,0,1410
+10085,1,0,1,0,0,2
+10086,1,0,1,0,0,2
+10087,1,0,1,0,0,1
+10088,2,2,3,377,0,1378
+10089,1,0,1,0,0,2
+10090,1,0,1,0,0,2
+10091,1,0,1,0,0,2
+10092,2,2,3,377,0,1384
+10093,1,0,1,0,0,1
+10094,1,0,1,0,0,1
+10095,1,0,1,0,0,2
+10096,2,2,3,377,0,1402
+10097,1,0,1,0,0,1
+10098,1,0,1,0,0,1
+10099,1,0,1,0,0,2
+10100,2,2,3,377,0,1381
+10101,1,0,1,0,0,2
+10102,1,0,1,0,0,2
+10103,1,0,1,0,0,2
+10104,2,2,3,377,0,1383
+10105,1,0,1,0,0,2
+10106,1,0,1,0,0,2
+10107,1,0,1,0,0,1
+10108,2,2,3,377,0,1436
+10109,1,0,1,0,0,2
+10110,1,0,1,0,0,2
+10111,1,0,1,0,0,2
+10112,2,2,3,377,0,1443
+10113,1,0,1,0,0,2
+10114,1,0,1,0,0,2
+10115,1,0,1,0,0,2
+10116,2,2,3,377,0,1422
+10117,1,0,1,0,0,2
+10118,1,0,1,0,0,2
+10119,1,0,1,0,0,2
+10120,2,2,3,377,0,1438
+10121,1,0,1,0,0,2
+10122,1,0,1,0,0,2
+10123,1,0,1,0,0,1
+10124,2,2,3,377,0,1411
+10125,1,0,1,0,0,2
+10126,1,0,1,0,0,2
+10127,1,0,1,0,0,2
+10128,2,2,3,377,0,1453
+10129,1,0,1,0,0,2
+10130,1,0,1,0,0,2
+10131,1,0,1,0,0,2
+10189,2,2,3,377,0,1441
+10190,1,0,1,0,0,2
+10191,1,0,1,0,0,2
+10192,1,0,1,0,0,2
+10193,2,2,3,377,0,1395
+10194,1,0,1,0,0,2
+10195,1,0,1,0,0,2
+10196,1,0,1,0,0,2
+10197,2,2,3,377,0,1440
+10198,1,0,1,0,0,2
+10199,1,0,1,0,0,2
+10200,1,0,1,0,0,1
+10201,2,2,3,377,0,1416
+10202,1,0,1,0,0,2
+10203,1,0,1,0,0,2
+10204,1,0,1,0,0,2
+10205,2,2,3,377,0,1438
+10206,1,0,1,0,0,2
+10207,1,0,1,0,0,1
+10208,1,0,1,0,0,2
+10209,2,2,3,377,0,1424
+10210,1,0,1,0,0,2
+10211,1,0,1,0,0,4
+10212,1,0,1,0,0,2
+10213,2,2,3,377,0,1420
+10214,1,0,1,0,0,2
+10215,1,0,1,0,0,2
+10216,1,0,1,0,0,2
+10217,2,2,3,377,0,1431
+10218,1,0,1,0,0,1
+10219,1,0,1,0,0,1
+10220,1,0,1,0,0,2
+10221,2,2,3,377,0,1455
+10222,1,0,1,0,0,2
+10223,1,0,1,0,0,1
+10224,1,0,1,0,0,1
+10225,2,2,3,377,0,1425
+10226,1,0,1,0,0,2
+10227,1,0,1,0,0,2
+10228,1,0,1,0,0,2
+10229,2,2,3,377,0,1438
+10230,1,0,1,0,0,2
+10231,1,0,1,0,0,2
+10232,1,0,1,0,0,2
+10233,2,2,3,377,0,1426
+10234,1,0,1,0,0,2
+10235,1,0,1,0,0,2
+10236,1,0,1,0,0,2
+10237,2,2,3,377,0,1441
+10238,1,0,1,0,0,2
+10239,1,0,1,0,0,2
+10240,1,0,1,0,0,1
+10241,2,2,3,377,0,1454
+10242,1,0,1,0,0,2
+10243,1,0,1,0,0,1
+10244,1,0,1,0,0,2
+10245,2,2,3,377,0,1439
+10246,1,0,1,0,0,2
+10247,1,0,1,0,0,2
+10248,1,0,1,0,0,1
+10249,2,2,3,377,0,1412
+10250,1,0,1,0,0,2
+10251,1,0,1,0,0,2
+10252,1,0,1,0,0,2
+10253,2,2,3,377,0,1477
+10254,1,0,1,0,0,2
+10255,1,0,1,0,0,2
+10256,1,0,1,0,0,1
+10257,2,2,3,377,0,1426
+10258,1,0,1,0,0,1
+10259,1,0,1,0,0,1
+10260,1,0,1,0,0,2
+10261,2,2,3,377,0,1438
+10262,1,0,1,0,0,2
+10263,1,0,1,0,0,2
+10264,1,0,1,0,0,2
+10323,2,2,3,377,0,1465
+10324,1,0,1,0,0,2
+10325,1,0,1,0,0,2
+10326,1,0,1,0,0,1
+10327,2,2,3,377,0,1444
+10328,1,0,1,0,0,2
+10329,1,0,1,0,0,2
+10330,1,0,1,0,0,2
+10331,2,2,3,377,0,1453
+10332,1,0,1,0,0,2
+10333,1,0,1,0,0,1
+10334,1,0,1,0,0,1
+10335,2,2,3,377,0,1416
+10336,1,0,1,0,0,1
+10337,1,0,1,0,0,1
+10338,1,0,1,0,0,1
+10339,2,2,3,377,0,1366
+10340,1,0,1,0,0,4
+10341,1,0,1,0,0,1
+10342,1,0,1,0,0,2
+10343,2,2,3,377,0,1406
+10344,1,0,1,0,0,6
+10345,1,0,1,0,0,2
+10346,1,0,1,0,0,2
+10347,2,2,3,377,0,1404
+10348,1,0,1,0,0,2
+10349,1,0,1,0,0,2
+10350,1,0,1,0,0,2
+10351,2,2,3,377,0,1392
+10352,1,0,1,0,0,2
+10353,1,0,1,0,0,1
+10354,1,0,1,0,0,1
+10355,2,2,3,377,0,1415
+10356,1,0,1,0,0,1
+10357,1,0,1,0,0,1
+10358,1,0,1,0,0,2
+10359,2,2,3,377,0,1390
+10360,1,0,1,0,0,2
+10361,1,0,1,0,0,2
+10362,1,0,1,0,0,2
+10363,2,2,3,377,0,1419
+10364,1,0,1,0,0,2
+10365,1,0,1,0,0,2
+10366,1,0,1,0,0,1
+10367,2,2,3,377,0,1392
+10368,1,0,1,0,0,2
+10369,1,0,1,0,0,2
+10370,1,0,1,0,0,2
+10371,2,2,3,377,0,1414
+10372,1,0,1,0,0,2
+10373,1,0,1,0,0,1
+10374,1,0,1,0,0,2
+10375,2,2,3,377,0,1411
+10376,1,0,1,0,0,2
+10377,1,0,1,0,0,2
+10378,1,0,1,0,0,2
+10379,2,2,3,377,0,1418
+10380,1,0,1,0,0,1
+10381,1,0,1,0,0,1
+10382,1,0,1,0,0,2
+10383,2,2,3,377,0,1380
+10384,1,0,1,0,0,1
+10385,1,0,1,0,0,2
+10386,1,0,1,0,0,2
+10387,2,2,3,377,0,1404
+10388,1,0,1,0,0,2
+10389,1,0,1,0,0,2
+10390,1,0,1,0,0,2
+10391,2,2,3,377,0,1388
+10392,1,0,1,0,0,1
+10393,1,0,1,0,0,1
+10394,1,0,1,0,0,2
+10395,2,2,3,377,0,1407
+10396,1,0,1,0,0,2
+10397,1,0,1,0,0,1
+10398,1,0,1,0,0,2
+10458,2,2,3,377,0,1403
+10459,1,0,1,0,0,1
+10460,1,0,1,0,0,1
+10461,1,0,1,0,0,1
+10462,2,2,3,377,0,1400
+10463,1,0,1,0,0,2
+10464,1,0,1,0,0,2
+10465,1,0,1,0,0,1
+10466,2,2,3,377,0,1373
+10467,1,0,1,0,0,2
+10468,1,0,1,0,0,1
+10469,1,0,1,0,0,2
+10470,2,2,3,377,0,1431
+10471,1,0,1,0,0,2
+10472,1,0,1,0,0,2
+10473,1,0,1,0,0,2
+10474,2,2,3,377,0,1363
+10475,1,0,1,0,0,2
+10476,1,0,1,0,0,2
+10477,1,0,1,0,0,2
+10478,2,2,3,377,0,1395
+10479,1,0,1,0,0,2
+10480,1,0,1,0,0,2
+10481,1,0,1,0,0,1
+10482,2,2,3,377,0,1398
+10483,1,0,1,0,0,2
+10484,1,0,1,0,0,2
+10485,1,0,1,0,0,2
+10486,2,2,3,377,0,1392
+10487,1,0,1,0,0,2
+10488,1,0,1,0,0,2
+10489,1,0,1,0,0,1
+10490,2,2,3,377,0,1391
+10491,1,0,1,0,0,2
+10492,1,0,1,0,0,2
+10493,1,0,1,0,0,2
+10494,2,2,3,377,0,1401
+10495,1,0,1,0,0,2
+10496,1,0,1,0,0,1
+10497,1,0,1,0,0,2
+10498,2,2,3,377,0,1383
+10499,1,0,1,0,0,2
+10500,1,0,1,0,0,1
+10501,1,0,1,0,0,2
+10502,2,2,3,377,0,1433
+10503,1,0,1,0,0,2
+10504,1,0,1,0,0,2
+10505,1,0,1,0,0,2
+10506,2,2,3,377,0,1398
+10507,1,0,1,0,0,2
+10508,1,0,1,0,0,2
+10509,1,0,1,0,0,2
+10510,2,2,3,377,0,1431
+10511,1,0,1,0,0,2
+10512,1,0,1,0,0,2
+10513,1,0,1,0,0,2
+10514,2,2,3,377,0,1452
+10515,1,0,1,0,0,2
+10516,1,0,1,0,0,2
+10517,1,0,1,0,0,2
+10518,2,2,3,377,0,1414
+10519,1,0,1,0,0,2
+10520,1,0,1,0,0,1
+10521,1,0,1,0,0,1
+10522,2,2,3,377,0,1435
+10523,1,0,1,0,0,2
+10524,1,0,1,0,0,2
+10525,1,0,1,0,0,1
+10526,2,2,3,377,0,1421
+10527,1,0,1,0,0,2
+10528,1,0,1,0,0,2
+10529,1,0,1,0,0,1
+10530,2,2,3,377,0,1443
+10531,1,0,1,0,0,2
+10532,1,0,1,0,0,2
+10533,1,0,1,0,0,2
+10594,2,2,3,377,0,1432
+10595,1,0,1,0,0,1
+10596,1,0,1,0,0,1
+10597,1,0,1,0,0,1
+10598,2,2,3,377,0,1406
+10599,1,0,1,0,0,1
+10600,1,0,1,0,0,1
+10601,1,0,1,0,0,1
+10602,2,2,3,377,0,1442
+10603,1,0,1,0,0,2
+10604,1,0,1,0,0,2
+10605,1,0,1,0,0,1
+10606,2,2,3,377,0,1434
+10607,1,0,1,0,0,2
+10608,1,0,1,0,0,2
+10609,1,0,1,0,0,2
+10610,2,2,3,377,0,1419
+10611,1,0,1,0,0,2
+10612,1,0,1,0,0,2
+10613,1,0,1,0,0,2
+10614,2,2,3,377,0,1476
+10615,1,0,1,0,0,2
+10616,1,0,1,0,0,2
+10617,1,0,1,0,0,2
+10618,2,2,3,377,0,1439
+10619,1,0,1,0,0,2
+10620,1,0,1,0,0,2
+10621,1,0,1,0,0,2
+10622,2,2,3,377,0,1446
+10623,1,0,1,0,0,2
+10624,1,0,1,0,0,1
+10625,1,0,1,0,0,2
+10626,2,2,3,377,0,1431
+10627,1,0,1,0,0,2
+10628,1,0,1,0,0,2
+10629,1,0,1,0,0,3
+10630,2,2,3,377,0,1427
+10631,1,0,1,0,0,2
+10632,1,0,1,0,0,1
+10633,1,0,1,0,0,2
+10634,2,2,3,377,0,1414
+10635,1,0,1,0,0,2
+10636,1,0,1,0,0,2
+10637,1,0,1,0,0,1
+10638,2,2,3,377,0,1474
+10639,1,0,1,0,0,3
+10640,1,0,1,0,0,1
+10641,1,0,1,0,0,2
+10642,2,2,3,377,0,1430
+10643,1,0,1,0,0,2
+10644,1,0,1,0,0,2
+10645,1,0,1,0,0,2
+10646,2,2,3,377,0,1434
+10647,1,0,1,0,0,2
+10648,1,0,1,0,0,2
+10649,1,0,1,0,0,2
+10650,2,2,3,377,0,1441
+10651,1,0,1,0,0,2
+10652,1,0,1,0,0,2
+10653,1,0,1,0,0,2
+10654,2,2,3,377,0,1445
+10655,1,0,1,0,0,2
+10656,1,0,1,0,0,2
+10657,1,0,1,0,0,2
+10658,2,2,3,377,0,1417
+10659,1,0,1,0,0,2
+10660,1,0,1,0,0,1
+10661,1,0,1,0,0,2
+10662,2,2,3,377,0,1461
+10663,1,0,1,0,0,2
+10664,1,0,1,0,0,2
+10665,1,0,1,0,0,1
+10666,2,2,3,377,0,1428
+10667,1,0,1,0,0,1
+10668,1,0,1,0,0,1
+10669,1,0,1,0,0,2
+10731,2,2,3,377,0,1440
+10732,1,0,1,0,0,2
+10733,1,0,1,0,0,2
+10734,1,0,1,0,0,2
+10735,2,2,3,377,0,1441
+10736,1,0,1,0,0,2
+10737,1,0,1,0,0,1
+10738,1,0,1,0,0,2
+10739,2,2,3,377,0,1378
+10740,1,0,1,0,0,2
+10741,1,0,1,0,0,1
+10742,1,0,1,0,0,1
+10743,2,2,3,377,0,1410
+10744,1,0,1,0,0,2
+10745,1,0,1,0,0,2
+10746,1,0,1,0,0,2
+10747,2,2,3,377,0,1386
+10748,1,0,1,0,0,2
+10749,1,0,1,0,0,4
+10750,1,0,1,0,0,1
+10751,2,2,3,377,0,1382
+10752,1,0,1,0,0,1
+10753,1,0,1,0,0,1
+10754,1,0,1,0,0,2
+10755,2,2,3,377,0,1408
+10756,1,0,1,0,0,2
+10757,1,0,1,0,0,2
+10758,1,0,1,0,0,2
+10759,2,2,3,377,0,1381
+10760,1,0,1,0,0,2
+10761,1,0,1,0,0,2
+10762,1,0,1,0,0,2
+10763,2,2,3,377,0,1410
+10764,1,0,1,0,0,1
+10765,1,0,1,0,0,1
+10766,1,0,1,0,0,2
+10767,2,2,3,377,0,1391
+10768,1,0,1,0,0,2
+10769,1,0,1,0,0,2
+10770,1,0,1,0,0,1
+10771,2,2,3,377,0,1392
+10772,1,0,1,0,0,2
+10773,1,0,1,0,0,2
+10774,1,0,1,0,0,2
+10775,2,2,3,377,0,1400
+10776,1,0,1,0,0,2
+10777,1,0,1,0,0,1
+10778,1,0,1,0,0,2
+10779,2,2,3,377,0,1391
+10780,1,0,1,0,0,2
+10781,1,0,1,0,0,2
+10782,1,0,1,0,0,2
+10783,2,2,3,377,0,1397
+10784,1,0,1,0,0,2
+10785,1,0,1,0,0,2
+10786,1,0,1,0,0,2
+10787,2,2,3,377,0,1373
+10788,1,0,1,0,0,2
+10789,1,0,1,0,0,2
+10790,1,0,1,0,0,2
+10791,2,2,3,377,0,1400
+10792,1,0,1,0,0,2
+10793,1,0,1,0,0,2
+10794,1,0,1,0,0,2
+10795,2,2,3,377,0,1369
+10796,1,0,1,0,0,1
+10797,1,0,1,0,0,2
+10798,1,0,1,0,0,2
+10799,2,2,3,377,0,1424
+10800,1,0,1,0,0,2
+10801,1,0,1,0,0,2
+10802,1,0,1,0,0,2
+10803,2,2,3,377,0,1377
+10804,1,0,1,0,0,2
+10805,1,0,1,0,0,1
+10806,1,0,1,0,0,1
+10869,2,2,3,377,0,1402
+10870,1,0,1,0,0,1
+10871,1,0,1,0,0,1
+10872,1,0,1,0,0,1
+10873,2,2,3,377,0,1381
+10874,1,0,1,0,0,2
+10875,1,0,1,0,0,2
+10876,1,0,1,0,0,2
+10877,2,2,3,377,0,1370
+10878,1,0,1,0,0,2
+10879,1,0,1,0,0,1
+10880,1,0,1,0,0,1
+10881,2,2,3,377,0,1388
+10882,1,0,1,0,0,2
+10883,1,0,1,0,0,2
+10884,1,0,1,0,0,1
+10885,2,2,3,377,0,1410
+10886,1,0,1,0,0,2
+10887,1,0,1,0,0,2
+10888,1,0,1,0,0,2
+10889,2,2,3,377,0,1406
+10890,1,0,1,0,0,2
+10891,1,0,1,0,0,2
+10892,1,0,1,0,0,2
+10893,2,2,3,377,0,1390
+10894,1,0,1,0,0,2
+10895,1,0,1,0,0,2
+10896,1,0,1,0,0,2
+10897,2,2,3,377,0,1400
+10898,1,0,1,0,0,2
+10899,1,0,1,0,0,1
+10900,1,0,1,0,0,2
+10901,2,2,3,377,0,1386
+10902,1,0,1,0,0,2
+10903,1,0,1,0,0,2
+10904,1,0,1,0,0,2
+10905,2,2,3,377,0,1408
+10906,1,0,1,0,0,2
+10907,1,0,1,0,0,2
+10908,1,0,1,0,0,2
+10909,2,2,3,377,0,1442
+10910,1,0,1,0,0,3
+10911,1,0,1,0,0,2
+10912,1,0,1,0,0,1
+10913,2,2,3,377,0,1439
+10914,1,0,1,0,0,2
+10915,1,0,1,0,0,1
+10916,1,0,1,0,0,2
+10917,2,2,3,377,0,1429
+10918,1,0,1,0,0,2
+10919,1,0,1,0,0,2
+10920,1,0,1,0,0,2
+10921,2,2,3,377,0,1445
+10922,1,0,1,0,0,2
+10923,1,0,1,0,0,2
+10924,1,0,1,0,0,2
+10925,2,2,3,377,0,1436
+10926,1,0,1,0,0,2
+10927,1,0,1,0,0,2
+10928,1,0,1,0,0,2
+10929,2,2,3,377,0,1443
+10930,1,0,1,0,0,2
+10931,1,0,1,0,0,2
+10932,1,0,1,0,0,2
+10933,2,2,3,377,0,1448
+10934,1,0,1,0,0,2
+10935,1,0,1,0,0,2
+10936,1,0,1,0,0,1
+10937,2,2,3,377,0,1459
+10938,1,0,1,0,0,2
+10939,1,0,1,0,0,2
+10940,1,0,1,0,0,2
+10941,2,2,3,377,0,1420
+10942,1,0,1,0,0,2
+10943,1,0,1,0,0,2
+10944,1,0,1,0,0,2
+11008,2,2,3,377,0,1431
+11009,1,0,1,0,0,2
+11010,1,0,1,0,0,1
+11011,1,0,1,0,0,1
+11012,2,2,3,377,0,1422
+11013,1,0,1,0,0,2
+11014,1,0,1,0,0,2
+11015,1,0,1,0,0,2
+11016,2,2,3,377,0,1442
+11017,1,0,1,0,0,2
+11018,1,0,1,0,0,2
+11019,1,0,1,0,0,2
+11020,2,2,3,377,0,1416
+11021,1,0,1,0,0,2
+11022,1,0,1,0,0,2
+11023,1,0,1,0,0,2
+11024,2,2,3,377,0,1454
+11025,1,0,1,0,0,2
+11026,1,0,1,0,0,2
+11027,1,0,1,0,0,2
+11028,2,2,3,377,0,1422
+11029,1,0,1,0,0,2
+11030,1,0,1,0,0,2
+11031,1,0,1,0,0,2
+11032,2,2,3,377,0,1424
+11033,1,0,1,0,0,2
+11034,1,0,1,0,0,2
+11035,1,0,1,0,0,2
+11036,2,2,3,377,0,1448
+11037,1,0,1,0,0,2
+11038,1,0,1,0,0,2
+11039,1,0,1,0,0,2
+11040,2,2,3,377,0,1410
+11041,1,0,1,0,0,2
+11042,1,0,1,0,0,2
+11043,1,0,1,0,0,2
+11044,2,2,3,377,0,1430
+11045,1,0,1,0,0,2
+11046,1,0,1,0,0,2
+11047,1,0,1,0,0,2
+11048,2,2,3,377,0,1442
+11049,1,0,1,0,0,2
+11050,1,0,1,0,0,2
+11051,1,0,1,0,0,2
+11052,2,2,3,377,0,1430
+11053,1,0,1,0,0,2
+11054,1,0,1,0,0,2
+11055,1,0,1,0,0,2
+11056,2,2,3,377,0,1450
+11057,1,0,1,0,0,2
+11058,1,0,1,0,0,2
+11059,1,0,1,0,0,2
+11060,2,2,3,377,0,1430
+11061,1,0,1,0,0,2
+11062,1,0,1,0,0,2
+11063,1,0,1,0,0,1
+11064,2,2,3,377,0,1472
+11065,1,0,1,0,0,1
+11066,1,0,1,0,0,1
+11067,1,0,1,0,0,2
+11068,2,2,3,377,0,1408
+11069,1,0,1,0,0,2
+11070,1,0,1,0,0,2
+11071,1,0,1,0,0,2
+11072,2,2,3,377,0,1458
+11073,1,0,1,0,0,2
+11074,1,0,1,0,0,2
+11075,1,0,1,0,0,2
+11076,2,2,3,377,0,1432
+11077,1,0,1,0,0,2
+11078,1,0,1,0,0,1
+11079,1,0,1,0,0,2
+11080,2,2,3,377,0,1414
+11081,1,0,1,0,0,2
+11082,1,0,1,0,0,2
+11083,1,0,1,0,0,2
+11148,2,2,3,377,0,1396
+11149,1,0,1,0,0,1
+11150,1,0,1,0,0,1
+11151,1,0,1,0,0,1
+11152,2,2,3,377,0,1377
+11153,1,0,1,0,0,2
+11154,1,0,1,0,0,2
+11155,1,0,1,0,0,2
+11156,2,2,3,377,0,1380
+11157,1,0,1,0,0,1
+11158,1,0,1,0,0,1
+11159,1,0,1,0,0,2
+11160,2,2,3,377,0,1359
+11161,1,0,1,0,0,1
+11162,1,0,1,0,0,2
+11163,1,0,1,0,0,1
+11164,2,2,3,377,0,1379
+11165,1,0,1,0,0,2
+11166,1,0,1,0,0,2
+11167,1,0,1,0,0,2
+11168,2,2,3,377,0,1385
+11169,1,0,1,0,0,2
+11170,1,0,1,0,0,2
+11171,1,0,1,0,0,2
+11172,2,2,3,377,0,1371
+11173,1,0,1,0,0,1
+11174,1,0,1,0,0,1
+11175,1,0,1,0,0,4
+11176,2,2,3,377,0,1396
+11177,1,0,1,0,0,2
+11178,1,0,1,0,0,2
+11179,1,0,1,0,0,1
+11180,2,2,3,377,0,1396
+11181,1,0,1,0,0,2
+11182,1,0,1,0,0,2
+11183,1,0,1,0,0,2
+11184,2,2,3,377,0,1384
+11185,1,0,1,0,0,2
+11186,1,0,1,0,0,2
+11187,1,0,1,0,0,2
+11188,2,2,3,377,0,1365
+11189,1,0,1,0,0,2
+11190,1,0,1,0,0,2
+11191,1,0,1,0,0,2
+11192,2,2,3,377,0,1396
+11193,1,0,1,0,0,2
+11194,1,0,1,0,0,2
+11195,1,0,1,0,0,2
+11196,2,2,3,377,0,1368
+11197,1,0,1,0,0,2
+11198,1,0,1,0,0,2
+11199,1,0,1,0,0,2
+11200,2,2,3,377,0,1414
+11201,1,0,1,0,0,2
+11202,1,0,1,0,0,1
+11203,1,0,1,0,0,2
+11204,2,2,3,377,0,1377
+11205,1,0,1,0,0,2
+11206,1,0,1,0,0,2
+11207,1,0,1,0,0,2
+11208,2,2,3,377,0,1397
+11209,1,0,1,0,0,2
+11210,1,0,1,0,0,2
+11211,1,0,1,0,0,2
+11212,2,2,3,377,0,1385
+11213,1,0,1,0,0,2
+11214,1,0,1,0,0,2
+11215,1,0,1,0,0,2
+11216,2,2,3,377,0,1412
+11217,1,0,1,0,0,2
+11218,1,0,1,0,0,2
+11219,1,0,1,0,0,1
+11220,2,2,3,377,0,1379
+11221,1,0,1,0,0,2
+11222,1,0,1,0,0,2
+11223,1,0,1,0,0,1
+11289,2,2,3,377,0,1401
+11290,1,0,1,0,0,2
+11291,1,0,1,0,0,2
+11292,1,0,1,0,0,2
+11293,2,2,3,377,0,1340
+11294,1,0,1,0,0,2
+11295,1,0,1,0,0,2
+11296,1,0,1,0,0,1
+11297,2,2,3,377,0,1411
+11298,1,0,1,0,0,2
+11299,1,0,1,0,0,1
+11300,1,0,1,0,0,2
+11301,2,2,3,377,0,1268
+11302,1,0,1,0,0,2
+11303,1,0,1,0,0,2
+11304,1,0,1,0,0,2
+11305,2,2,3,377,0,1378
+11306,1,0,1,0,0,2
+11307,1,0,1,0,0,1
+11308,1,0,1,0,0,2
+11309,2,2,3,377,0,1406
+11310,1,0,1,0,0,2
+11311,1,0,1,0,0,2
+11312,1,0,1,0,0,2
+11313,2,2,3,377,0,1405
+11314,1,0,1,0,0,2
+11315,1,0,1,0,0,2
+11316,1,0,1,0,0,2
+11317,2,2,3,377,0,1404
+11318,1,0,1,0,0,2
+11319,1,0,1,0,0,1
+11320,1,0,1,0,0,2
+11321,2,2,3,377,0,1473
+11322,1,0,1,0,0,2
+11323,1,0,1,0,0,1
+11324,1,0,1,0,0,4
+11325,2,2,3,377,0,1430
+11326,1,0,1,0,0,2
+11327,1,0,1,0,0,2
+11328,1,0,1,0,0,1
+11329,2,2,3,377,0,1462
+11330,1,0,1,0,0,2
+11331,1,0,1,0,0,1
+11332,1,0,1,0,0,1
+11333,2,2,3,377,0,1320
+11334,1,0,1,0,0,2
+11335,1,0,1,0,0,1
+11336,1,0,1,0,0,1
+11337,2,2,3,377,0,1409
+11338,1,0,1,0,0,2
+11339,1,0,1,0,0,1
+11340,1,0,1,0,0,1
+11341,2,2,3,377,0,1456
+11342,1,0,1,0,0,2
+11343,1,0,1,0,0,2
+11344,1,0,1,0,0,2
+11345,2,2,3,377,0,1426
+11346,1,0,1,0,0,2
+11347,1,0,1,0,0,2
+11348,1,0,1,0,0,2
+11349,2,2,3,377,0,1443
+11350,1,0,1,0,0,2
+11351,1,0,1,0,0,2
+11352,1,0,1,0,0,2
+11353,2,2,3,377,0,1433
+11354,1,0,1,0,0,2
+11355,1,0,1,0,0,2
+11356,1,0,1,0,0,2
+11357,2,2,3,377,0,1416
+11358,1,0,1,0,0,2
+11359,1,0,1,0,0,2
+11360,1,0,1,0,0,2
+11361,2,2,3,377,0,1408
+11362,1,0,1,0,0,2
+11363,1,0,1,0,0,1
+11364,1,0,1,0,0,3
+11431,2,2,3,377,0,1450
+11432,1,0,1,0,0,1
+11433,1,0,1,0,0,1
+11434,1,0,1,0,0,1
+11435,2,2,3,377,0,1400
+11436,1,0,1,0,0,2
+11437,1,0,1,0,0,2
+11438,1,0,1,0,0,2
+11439,2,2,3,377,0,1418
+11440,1,0,1,0,0,2
+11441,1,0,1,0,0,5
+11442,1,0,1,0,0,2
+11443,2,2,3,377,0,1446
+11444,1,0,1,0,0,2
+11445,1,0,1,0,0,2
+11446,1,0,1,0,0,1
+11447,2,2,3,377,0,1403
+11448,1,0,1,0,0,2
+11449,1,0,1,0,0,2
+11450,1,0,1,0,0,2
+11451,2,2,3,377,0,1452
+11452,1,0,1,0,0,2
+11453,1,0,1,0,0,2
+11454,1,0,1,0,0,1
+11455,2,2,3,377,0,1441
+11456,1,0,1,0,0,2
+11457,1,0,1,0,0,1
+11458,1,0,1,0,0,4
+11459,2,2,3,377,0,1427
+11460,1,0,1,0,0,2
+11461,1,0,1,0,0,2
+11462,1,0,1,0,0,2
+11463,2,2,3,377,0,1430
+11464,1,0,1,0,0,2
+11465,1,0,1,0,0,2
+11466,1,0,1,0,0,2
+11467,2,2,3,377,0,1423
+11468,1,0,1,0,0,2
+11469,1,0,1,0,0,2
+11470,1,0,1,0,0,2
+11471,2,2,3,377,0,1448
+11472,1,0,1,0,0,2
+11473,1,0,1,0,0,2
+11474,1,0,1,0,0,2
+11475,2,2,3,377,0,1437
+11476,1,0,1,0,0,2
+11477,1,0,1,0,0,2
+11478,1,0,1,0,0,2
+11479,2,2,3,377,0,1425
+11480,1,0,1,0,0,1
+11481,1,0,1,0,0,1
+11482,1,0,1,0,0,2
+11483,2,2,3,377,0,1416
+11484,1,0,1,0,0,2
+11485,1,0,1,0,0,2
+11486,1,0,1,0,0,1
+11487,2,2,3,377,0,1428
+11488,1,0,1,0,0,2
+11489,1,0,1,0,0,2
+11490,1,0,1,0,0,2
+11491,2,2,3,377,0,1434
+11492,1,0,1,0,0,1
+11493,1,0,1,0,0,1
+11494,1,0,1,0,0,1
+11495,2,2,3,377,0,1404
+11496,1,0,1,0,0,2
+11497,1,0,1,0,0,2
+11498,1,0,1,0,0,2
+11499,2,2,3,377,0,1428
+11500,1,0,1,0,0,2
+11501,1,0,1,0,0,2
+11502,1,0,1,0,0,2
+11503,2,2,3,377,0,1452
+11504,1,0,1,0,0,2
+11505,1,0,1,0,0,2
+11506,1,0,1,0,0,2
+11574,2,2,3,377,0,1395
+11575,1,0,1,0,0,2
+11576,1,0,1,0,0,1
+11577,1,0,1,0,0,1
+11578,2,2,3,377,0,1337
+11579,1,0,1,0,0,2
+11580,1,0,1,0,0,2
+11581,1,0,1,0,0,2
+11582,2,2,3,377,0,1386
+11583,1,0,1,0,0,1
+11584,1,0,1,0,0,1
+11585,1,0,1,0,0,2
+11586,2,2,3,377,0,1384
+11587,1,0,1,0,0,2
+11588,1,0,1,0,0,2
+11589,1,0,1,0,0,2
+11590,2,2,3,377,0,1369
+11591,1,0,1,0,0,1
+11592,1,0,1,0,0,1
+11593,1,0,1,0,0,1
+11594,2,2,3,377,0,1398
+11595,1,0,1,0,0,2
+11596,1,0,1,0,0,2
+11597,1,0,1,0,0,2
+11598,2,2,3,377,0,1359
+11599,1,0,1,0,0,1
+11600,1,0,1,0,0,1
+11601,1,0,1,0,0,4
+11602,2,2,3,377,0,1409
+11603,1,0,1,0,0,2
+11604,1,0,1,0,0,2
+11605,1,0,1,0,0,1
+11606,2,2,3,377,0,1374
+11607,1,0,1,0,0,2
+11608,1,0,1,0,0,1
+11609,1,0,1,0,0,2
+11610,2,2,3,377,0,1394
+11611,1,0,1,0,0,1
+11612,1,0,1,0,0,1
+11613,1,0,1,0,0,1
+11614,2,2,3,377,0,1364
+11615,1,0,1,0,0,2
+11616,1,0,1,0,0,2
+11617,1,0,1,0,0,1
+11618,2,2,3,377,0,1408
+11619,1,0,1,0,0,2
+11620,1,0,1,0,0,2
+11621,1,0,1,0,0,1
+11622,2,2,3,377,0,1379
+11623,1,0,1,0,0,2
+11624,1,0,1,0,0,1
+11625,1,0,1,0,0,2
+11626,2,2,3,377,0,1415
+11627,1,0,1,0,0,2
+11628,1,0,1,0,0,2
+11629,1,0,1,0,0,2
+11630,2,2,3,377,0,1388
+11631,1,0,1,0,0,2
+11632,1,0,1,0,0,1
+11633,1,0,1,0,0,2
+11634,2,2,3,377,0,1396
+11635,1,0,1,0,0,2
+11636,1,0,1,0,0,2
+11637,1,0,1,0,0,1
+11638,2,2,3,377,0,1374
+11639,1,0,1,0,0,2
+11640,1,0,1,0,0,2
+11641,1,0,1,0,0,2
+11642,2,2,3,377,0,1406
+11643,1,0,1,0,0,2
+11644,1,0,1,0,0,2
+11645,1,0,1,0,0,2
+11646,2,2,3,377,0,1360
+11647,1,0,1,0,0,2
+11648,1,0,1,0,0,2
+11649,1,0,1,0,0,1
+11718,2,2,3,377,0,1427
+11719,1,0,1,0,0,2
+11720,1,0,1,0,0,2
+11721,1,0,1,0,0,2
+11722,2,2,3,377,0,1328
+11723,1,0,1,0,0,4
+11724,1,0,1,0,0,2
+11725,1,0,1,0,0,1
+11726,2,2,3,377,0,1398
+11727,1,0,1,0,0,2
+11728,1,0,1,0,0,2
+11729,1,0,1,0,0,2
+11730,2,2,3,377,0,1378
+11731,1,0,1,0,0,2
+11732,1,0,1,0,0,1
+11733,1,0,1,0,0,1
+11734,2,2,3,377,0,1423
+11735,1,0,1,0,0,2
+11736,1,0,1,0,0,2
+11737,1,0,1,0,0,1
+11738,2,2,3,377,0,1403
+11739,1,0,1,0,0,2
+11740,1,0,1,0,0,2
+11741,1,0,1,0,0,2
+11742,2,2,3,377,0,1402
+11743,1,0,1,0,0,2
+11744,1,0,1,0,0,1
+11745,1,0,1,0,0,2
+11746,2,2,3,377,0,1420
+11747,1,0,1,0,0,1
+11748,1,0,1,0,0,1
+11749,1,0,1,0,0,2
+11750,2,2,3,377,0,1422
+11751,1,0,1,0,0,2
+11752,1,0,1,0,0,2
+11753,1,0,1,0,0,2
+11754,2,2,3,377,0,1450
+11755,1,0,1,0,0,3
+11756,1,0,1,0,0,2
+11757,1,0,1,0,0,2
+11758,2,2,3,377,0,1448
+11759,1,0,1,0,0,2
+11760,1,0,1,0,0,2
+11761,1,0,1,0,0,2
+11762,2,2,3,377,0,1409
+11763,1,0,1,0,0,2
+11764,1,0,1,0,0,2
+11765,1,0,1,0,0,2
+11766,2,2,3,377,0,1441
+11767,1,0,1,0,0,2
+11768,1,0,1,0,0,2
+11769,1,0,1,0,0,2
+11770,2,2,3,377,0,1432
+11771,1,0,1,0,0,2
+11772,1,0,1,0,0,2
+11773,1,0,1,0,0,2
+11774,2,2,3,377,0,1451
+11775,1,0,1,0,0,2
+11776,1,0,1,0,0,2
+11777,1,0,1,0,0,2
+11778,2,2,3,377,0,1430
+11779,1,0,1,0,0,2
+11780,1,0,1,0,0,2
+11781,1,0,1,0,0,1
+11782,2,2,3,377,0,1425
+11783,1,0,1,0,0,2
+11784,1,0,1,0,0,3
+11785,1,0,1,0,0,2
+11786,2,2,3,377,0,1446
+11787,1,0,1,0,0,2
+11788,1,0,1,0,0,2
+11789,1,0,1,0,0,1
+11790,2,2,3,377,0,1431
+11791,1,0,1,0,0,2
+11792,1,0,1,0,0,2
+11793,1,0,1,0,0,2
+11863,2,2,3,377,0,1448
+11864,1,0,1,0,0,1
+11865,1,0,1,0,0,1
+11866,1,0,1,0,0,4
+11867,2,2,3,377,0,1412
+11868,1,0,1,0,0,2
+11869,1,0,1,0,0,2
+11870,1,0,1,0,0,1
+11871,2,2,3,377,0,1429
+11872,1,0,1,0,0,2
+11873,1,0,1,0,0,2
+11874,1,0,1,0,0,2
+11875,2,2,3,377,0,1438
+11876,1,0,1,0,0,2
+11877,1,0,1,0,0,2
+11878,1,0,1,0,0,1
+11879,2,2,3,377,0,1432
+11880,1,0,1,0,0,2
+11881,1,0,1,0,0,2
+11882,1,0,1,0,0,2
+11883,2,2,3,377,0,1420
+11884,1,0,1,0,0,2
+11885,1,0,1,0,0,2
+11886,1,0,1,0,0,2
+11887,2,2,3,377,0,1442
+11888,1,0,1,0,0,2
+11889,1,0,1,0,0,2
+11890,1,0,1,0,0,2
+11891,2,2,3,377,0,1447
+11892,1,0,1,0,0,2
+11893,1,0,1,0,0,2
+11894,1,0,1,0,0,2
+11895,2,2,3,377,0,1433
+11896,1,0,1,0,0,2
+11897,1,0,1,0,0,2
+11898,1,0,1,0,0,2
+11899,2,2,3,377,0,1433
+11900,1,0,1,0,0,2
+11901,1,0,1,0,0,2
+11902,1,0,1,0,0,2
+11903,2,2,3,377,0,1426
+11904,1,0,1,0,0,2
+11905,1,0,1,0,0,2
+11906,1,0,1,0,0,2
+11907,2,2,3,377,0,1431
+11908,1,0,1,0,0,2
+11909,1,0,1,0,0,1
+11910,1,0,1,0,0,2
+11911,2,2,3,377,0,1427
+11912,1,0,1,0,0,2
+11913,1,0,1,0,0,1
+11914,1,0,1,0,0,2
+11915,2,2,3,377,0,1437
+11916,1,0,1,0,0,2
+11917,1,0,1,0,0,1
+11918,1,0,1,0,0,1
+11919,2,2,3,377,0,1440
+11920,1,0,1,0,0,2
+11921,1,0,1,0,0,2
+11922,1,0,1,0,0,2
+11923,2,2,3,377,0,1439
+11924,1,0,1,0,0,2
+11925,1,0,1,0,0,2
+11926,1,0,1,0,0,2
+11927,2,2,3,377,0,1420
+11928,1,0,1,0,0,2
+11929,1,0,1,0,0,2
+11930,1,0,1,0,0,2
+11931,2,2,3,377,0,1411
+11932,1,0,1,0,0,2
+11933,1,0,1,0,0,2
+11934,1,0,1,0,0,1
+11935,2,2,3,377,0,1409
+11936,1,0,1,0,0,2
+11937,1,0,1,0,0,2
+11938,1,0,1,0,0,2
+12009,2,2,3,377,0,1397
+12010,1,0,1,0,0,2
+12011,1,0,1,0,0,2
+12012,1,0,1,0,0,1
+12013,2,2,3,377,0,1346
+12014,1,0,1,0,0,2
+12015,1,0,1,0,0,1
+12016,1,0,1,0,0,2
+12017,2,2,3,377,0,1388
+12018,1,0,1,0,0,2
+12019,1,0,1,0,0,2
+12020,1,0,1,0,0,1
+12021,2,2,3,377,0,1384
+12022,1,0,1,0,0,2
+12023,1,0,1,0,0,2
+12024,1,0,1,0,0,2
+12025,2,2,3,377,0,1382
+12026,1,0,1,0,0,2
+12027,1,0,1,0,0,1
+12028,1,0,1,0,0,1
+12029,2,2,3,377,0,1359
+12030,1,0,1,0,0,2
+12031,1,0,1,0,0,2
+12032,1,0,1,0,0,1
+12033,2,2,3,377,0,1413
+12034,1,0,1,0,0,2
+12035,1,0,1,0,0,2
+12036,1,0,1,0,0,1
+12037,2,2,3,377,0,1398
+12038,1,0,1,0,0,2
+12039,1,0,1,0,0,1
+12040,1,0,1,0,0,2
+12041,2,2,3,377,0,1395
+12042,1,0,1,0,0,2
+12043,1,0,1,0,0,2
+12044,1,0,1,0,0,2
+12045,2,2,3,377,0,1363
+12046,1,0,1,0,0,2
+12047,1,0,1,0,0,2
+12048,1,0,1,0,0,1
+12049,2,2,3,377,0,1398
+12050,1,0,1,0,0,2
+12051,1,0,1,0,0,1
+12052,1,0,1,0,0,1
+12053,2,2,3,377,0,1372
+12054,1,0,1,0,0,2
+12055,1,0,1,0,0,2
+12056,1,0,1,0,0,2
+12057,2,2,3,377,0,1423
+12058,1,0,1,0,0,2
+12059,1,0,1,0,0,1
+12060,1,0,1,0,0,2
+12061,2,2,3,377,0,1376
+12062,1,0,1,0,0,2
+12063,1,0,1,0,0,1
+12064,1,0,1,0,0,1
+12065,2,2,3,377,0,1413
+12066,1,0,1,0,0,1
+12067,1,0,1,0,0,1
+12068,1,0,1,0,0,2
+12069,2,2,3,377,0,1399
+12070,1,0,1,0,0,2
+12071,1,0,1,0,0,2
+12072,1,0,1,0,0,2
+12073,2,2,3,377,0,1397
+12074,1,0,1,0,0,2
+12075,1,0,1,0,0,2
+12076,1,0,1,0,0,1
+12077,2,2,3,377,0,1396
+12078,1,0,1,0,0,2
+12079,1,0,1,0,0,1
+12080,1,0,1,0,0,1
+12081,2,2,3,377,0,1424
+12082,1,0,1,0,0,2
+12083,1,0,1,0,0,2
+12084,1,0,1,0,0,2
+12156,2,2,3,377,0,1387
+12157,1,0,1,0,0,1
+12158,1,0,1,0,0,1
+12159,1,0,1,0,0,1
+12160,2,2,3,377,0,1361
+12161,1,0,1,0,0,2
+12162,1,0,1,0,0,2
+12163,1,0,1,0,0,1
+12164,2,2,3,377,0,1428
+12165,1,0,1,0,0,2
+12166,1,0,1,0,0,2
+12167,1,0,1,0,0,2
+12168,2,2,3,377,0,1423
+12169,1,0,1,0,0,2
+12170,1,0,1,0,0,2
+12171,1,0,1,0,0,1
+12172,2,2,3,377,0,1438
+12173,1,0,1,0,0,2
+12174,1,0,1,0,0,2
+12175,1,0,1,0,0,2
+12176,2,2,3,377,0,1423
+12177,1,0,1,0,0,2
+12178,1,0,1,0,0,2
+12179,1,0,1,0,0,2
+12180,2,2,3,377,0,1451
+12181,1,0,1,0,0,2
+12182,1,0,1,0,0,2
+12183,1,0,1,0,0,2
+12184,2,2,3,377,0,1455
+12185,1,0,1,0,0,2
+12186,1,0,1,0,0,2
+12187,1,0,1,0,0,1
+12188,2,2,3,377,0,1431
+12189,1,0,1,0,0,2
+12190,1,0,1,0,0,2
+12191,1,0,1,0,0,2
+12192,2,2,3,377,0,1447
+12193,1,0,1,0,0,2
+12194,1,0,1,0,0,2
+12195,1,0,1,0,0,2
+12196,2,2,3,377,0,1408
+12197,1,0,1,0,0,2
+12198,1,0,1,0,0,2
+12199,1,0,1,0,0,1
+12200,2,2,3,377,0,1473
+12201,1,0,1,0,0,2
+12202,1,0,1,0,0,2
+12203,1,0,1,0,0,2
+12204,2,2,3,377,0,1429
+12205,1,0,1,0,0,2
+12206,1,0,1,0,0,2
+12207,1,0,1,0,0,1
+12208,2,2,3,377,0,1447
+12209,1,0,1,0,0,2
+12210,1,0,1,0,0,2
+12211,1,0,1,0,0,1
+12212,2,2,3,377,0,1439
+12213,1,0,1,0,0,2
+12214,1,0,1,0,0,1
+12215,1,0,1,0,0,1
+12216,2,2,3,377,0,1453
+12217,1,0,1,0,0,2
+12218,1,0,1,0,0,2
+12219,1,0,1,0,0,2
+12220,2,2,3,377,0,1451
+12221,1,0,1,0,0,2
+12222,1,0,1,0,0,2
+12223,1,0,1,0,0,1
+12224,2,2,3,377,0,1420
+12225,1,0,1,0,0,2
+12226,1,0,1,0,0,2
+12227,1,0,1,0,0,2
+12228,2,2,3,377,0,1443
+12229,1,0,1,0,0,2
+12230,1,0,1,0,0,2
+12231,1,0,1,0,0,2
+12304,2,2,3,377,0,1410
+12305,1,0,1,0,0,1
+12306,1,0,1,0,0,1
+12307,1,0,1,0,0,1
+12308,2,2,3,377,0,1403
+12309,1,0,1,0,0,2
+12310,1,0,1,0,0,2
+12311,1,0,1,0,0,2
+12312,2,2,3,377,0,1426
+12313,1,0,1,0,0,2
+12314,1,0,1,0,0,2
+12315,1,0,1,0,0,2
+12316,2,2,3,377,0,1415
+12317,1,0,1,0,0,2
+12318,1,0,1,0,0,2
+12319,1,0,1,0,0,1
+12320,2,2,3,377,0,1452
+12321,1,0,1,0,0,2
+12322,1,0,1,0,0,2
+12323,1,0,1,0,0,2
+12324,2,2,3,377,0,1470
+12325,1,0,1,0,0,2
+12326,1,0,1,0,0,2
+12327,1,0,1,0,0,2
+12328,2,2,3,377,0,1401
+12329,1,0,1,0,0,2
+12330,1,0,1,0,0,2
+12331,1,0,1,0,0,2
+12332,2,2,3,377,0,1457
+12333,1,0,1,0,0,2
+12334,1,0,1,0,0,2
+12335,1,0,1,0,0,1
+12336,2,2,3,377,0,1434
+12337,1,0,1,0,0,2
+12338,1,0,1,0,0,2
+12339,1,0,1,0,0,2
+12340,2,2,3,377,0,1448
+12341,1,0,1,0,0,2
+12342,1,0,1,0,0,1
+12343,1,0,1,0,0,2
+12344,2,2,3,377,0,1432
+12345,1,0,1,0,0,2
+12346,1,0,1,0,0,1
+12347,1,0,1,0,0,1
+12348,2,2,3,377,0,1432
+12349,1,0,1,0,0,2
+12350,1,0,1,0,0,2
+12351,1,0,1,0,0,2
+12352,2,2,3,377,0,1477
+12353,1,0,1,0,0,2
+12354,1,0,1,0,0,2
+12355,1,0,1,0,0,2
+12356,2,2,3,377,0,1418
+12357,1,0,1,0,0,2
+12358,1,0,1,0,0,2
+12359,1,0,1,0,0,2
+12360,2,2,3,377,0,1414
+12361,1,0,1,0,0,2
+12362,1,0,1,0,0,2
+12363,1,0,1,0,0,2
+12364,2,2,3,377,0,1419
+12365,1,0,1,0,0,2
+12366,1,0,1,0,0,2
+12367,1,0,1,0,0,2
+12368,2,2,3,377,0,1404
+12369,1,0,1,0,0,2
+12370,1,0,1,0,0,1
+12371,1,0,1,0,0,2
+12372,2,2,3,377,0,1387
+12373,1,0,1,0,0,1
+12374,1,0,1,0,0,1
+12375,1,0,1,0,0,2
+12376,2,2,3,377,0,1437
+12377,1,0,1,0,0,2
+12378,1,0,1,0,0,2
+12379,1,0,1,0,0,1
+12453,2,2,3,377,0,1391
+12454,1,0,1,0,0,1
+12455,1,0,1,0,0,1
+12456,1,0,1,0,0,1
+12457,2,2,3,377,0,1367
+12458,1,0,1,0,0,2
+12459,1,0,1,0,0,1
+12460,1,0,1,0,0,2
+12461,2,2,3,377,0,1386
+12462,1,0,1,0,0,2
+12463,1,0,1,0,0,2
+12464,1,0,1,0,0,1
+12465,2,2,3,377,0,1379
+12466,1,0,1,0,0,2
+12467,1,0,1,0,0,2
+12468,1,0,1,0,0,2
+12469,2,2,3,377,0,1413
+12470,1,0,1,0,0,2
+12471,1,0,1,0,0,1
+12472,1,0,1,0,0,2
+12473,2,2,3,377,0,1387
+12474,1,0,1,0,0,1
+12475,1,0,1,0,0,1
+12476,1,0,1,0,0,2
+12477,2,2,3,377,0,1396
+12478,1,0,1,0,0,2
+12479,1,0,1,0,0,1
+12480,1,0,1,0,0,1
+12481,2,2,3,377,0,1410
+12482,1,0,1,0,0,2
+12483,1,0,1,0,0,2
+12484,1,0,1,0,0,1
+12485,2,2,3,377,0,1383
+12486,1,0,1,0,0,1
+12487,1,0,1,0,0,1
+12488,1,0,1,0,0,2
+12489,2,2,3,377,0,1387
+12490,1,0,1,0,0,2
+12491,1,0,1,0,0,2
+12492,1,0,1,0,0,2
+12493,2,2,3,377,0,1427
+12494,1,0,1,0,0,2
+12495,1,0,1,0,0,2
+12496,1,0,1,0,0,1
+12497,2,2,3,377,0,1402
+12498,1,0,1,0,0,2
+12499,1,0,1,0,0,2
+12500,1,0,1,0,0,2
+12501,2,2,3,377,0,1391
+12502,1,0,1,0,0,2
+12503,1,0,1,0,0,2
+12504,1,0,1,0,0,2
+12505,2,2,3,377,0,1416
+12506,1,0,1,0,0,2
+12507,1,0,1,0,0,2
+12508,1,0,1,0,0,2
+12509,2,2,3,377,0,1414
+12510,1,0,1,0,0,2
+12511,1,0,1,0,0,2
+12512,1,0,1,0,0,2
+12513,2,2,3,377,0,1404
+12514,1,0,1,0,0,2
+12515,1,0,1,0,0,2
+12516,1,0,1,0,0,1
+12517,2,2,3,377,0,1409
+12518,1,0,1,0,0,2
+12519,1,0,1,0,0,1
+12520,1,0,1,0,0,1
+12521,2,2,3,377,0,1397
+12522,1,0,1,0,0,2
+12523,1,0,1,0,0,2
+12524,1,0,1,0,0,2
+12525,2,2,3,377,0,1412
+12526,1,0,1,0,0,2
+12527,1,0,1,0,0,2
+12528,1,0,1,0,0,2
+12603,2,2,3,377,0,1427
+12604,1,0,1,0,0,2
+12605,1,0,1,0,0,2
+12606,1,0,1,0,0,2
+12607,2,2,3,377,0,1379
+12608,1,0,1,0,0,2
+12609,1,0,1,0,0,2
+12610,1,0,1,0,0,2
+12611,2,2,3,377,0,1433
+12612,1,0,1,0,0,2
+12613,1,0,1,0,0,2
+12614,1,0,1,0,0,2
+12615,2,2,3,377,0,1414
+12616,1,0,1,0,0,1
+12617,1,0,1,0,0,1
+12618,1,0,1,0,0,2
+12619,2,2,3,377,0,1426
+12620,1,0,1,0,0,1
+12621,1,0,1,0,0,1
+12622,1,0,1,0,0,2
+12623,2,2,3,377,0,1451
+12624,1,0,1,0,0,2
+12625,1,0,1,0,0,2
+12626,1,0,1,0,0,1
+12627,2,2,3,377,0,1427
+12628,1,0,1,0,0,2
+12629,1,0,1,0,0,1
+12630,1,0,1,0,0,1
+12631,2,2,3,377,0,1431
+12632,1,0,1,0,0,2
+12633,1,0,1,0,0,1
+12634,1,0,1,0,0,1
+12635,2,2,3,377,0,1426
+12636,1,0,1,0,0,2
+12637,1,0,1,0,0,2
+12638,1,0,1,0,0,1
+12639,2,2,3,377,0,1420
+12640,1,0,1,0,0,2
+12641,1,0,1,0,0,2
+12642,1,0,1,0,0,2
+12643,2,2,3,377,0,1481
+12644,1,0,1,0,0,3
+12645,1,0,1,0,0,1
+12646,1,0,1,0,0,1
+12647,2,2,3,377,0,1439
+12648,1,0,1,0,0,1
+12649,1,0,1,0,0,1
+12650,1,0,1,0,0,2
+12651,2,2,3,377,0,1427
+12652,1,0,1,0,0,2
+12653,1,0,1,0,0,3
+12654,1,0,1,0,0,2
+12655,2,2,3,377,0,1440
+12656,1,0,1,0,0,2
+12657,1,0,1,0,0,1
+12658,1,0,1,0,0,2
+12659,2,2,3,377,0,1459
+12660,1,0,1,0,0,2
+12661,1,0,1,0,0,2
+12662,1,0,1,0,0,1
+12663,2,2,3,377,0,1443
+12664,1,0,1,0,0,2
+12665,1,0,1,0,0,1
+12666,1,0,1,0,0,1
+12667,2,2,3,377,0,1447
+12668,1,0,1,0,0,2
+12669,1,0,1,0,0,2
+12670,1,0,1,0,0,2
+12671,2,2,3,377,0,1414
+12672,1,0,1,0,0,2
+12673,1,0,1,0,0,1
+12674,1,0,1,0,0,2
+12675,2,2,3,377,0,1442
+12676,1,0,1,0,0,4
+12677,1,0,1,0,0,2
+12678,1,0,1,0,0,1
+12754,2,2,3,377,0,1424
+12755,1,0,1,0,0,1
+12756,1,0,1,0,0,1
+12757,1,0,1,0,0,1
+12758,2,2,3,377,0,1435
+12759,1,0,1,0,0,1
+12760,1,0,1,0,0,1
+12761,1,0,1,0,0,1
+12762,2,2,3,377,0,1395
+12763,1,0,1,0,0,2
+12764,1,0,1,0,0,2
+12765,1,0,1,0,0,2
+12766,2,2,3,377,0,1434
+12767,1,0,1,0,0,2
+12768,1,0,1,0,0,2
+12769,1,0,1,0,0,2
+12770,2,2,3,377,0,1447
+12771,1,0,1,0,0,2
+12772,1,0,1,0,0,2
+12773,1,0,1,0,0,2
+12774,2,2,3,377,0,1433
+12775,1,0,1,0,0,2
+12776,1,0,1,0,0,2
+12777,1,0,1,0,0,1
+12778,2,2,3,377,0,1430
+12779,1,0,1,0,0,1
+12780,1,0,1,0,0,1
+12781,1,0,1,0,0,2
+12782,2,2,3,377,0,1440
+12783,1,0,1,0,0,2
+12784,1,0,1,0,0,2
+12785,1,0,1,0,0,2
+12786,2,2,3,377,0,1417
+12787,1,0,1,0,0,2
+12788,1,0,1,0,0,2
+12789,1,0,1,0,0,2
+12790,2,2,3,377,0,1439
+12791,1,0,1,0,0,2
+12792,1,0,1,0,0,2
+12793,1,0,1,0,0,2
+12794,2,2,3,377,0,1423
+12795,1,0,1,0,0,2
+12796,1,0,1,0,0,2
+12797,1,0,1,0,0,2
+12798,2,2,3,377,0,1418
+12799,1,0,1,0,0,2
+12800,1,0,1,0,0,1
+12801,1,0,1,0,0,2
+12802,2,2,3,377,0,1404
+12803,1,0,1,0,0,2
+12804,1,0,1,0,0,2
+12805,1,0,1,0,0,2
+12806,2,2,3,377,0,1390
+12807,1,0,1,0,0,2
+12808,1,0,1,0,0,2
+12809,1,0,1,0,0,2
+12810,2,2,3,377,0,1354
+12811,1,0,1,0,0,2
+12812,1,0,1,0,0,1
+12813,1,0,1,0,0,2
+12814,2,2,3,377,0,1391
+12815,1,0,1,0,0,2
+12816,1,0,1,0,0,1
+12817,1,0,1,0,0,2
+12818,2,2,3,377,0,1388
+12819,1,0,1,0,0,2
+12820,1,0,1,0,0,2
+12821,1,0,1,0,0,1
+12822,2,2,3,377,0,1409
+12823,1,0,1,0,0,2
+12824,1,0,1,0,0,2
+12825,1,0,1,0,0,1
+12826,2,2,3,377,0,1387
+12827,1,0,1,0,0,2
+12828,1,0,1,0,0,2
+12829,1,0,1,0,0,2
+12906,2,2,3,377,0,1394
+12907,1,0,1,0,0,2
+12908,1,0,1,0,0,1
+12909,1,0,1,0,0,2
+12910,2,2,3,377,0,1334
+12911,1,0,1,0,0,2
+12912,1,0,1,0,0,2
+12913,1,0,1,0,0,2
+12914,2,2,3,377,0,1393
+12915,1,0,1,0,0,2
+12916,1,0,1,0,0,2
+12917,1,0,1,0,0,2
+12918,2,2,3,377,0,1362
+12919,1,0,1,0,0,1
+12920,1,0,1,0,0,1
+12921,1,0,1,0,0,4
+12922,2,2,3,377,0,1390
+12923,1,0,1,0,0,2
+12924,1,0,1,0,0,1
+12925,1,0,1,0,0,1
+12926,2,2,3,377,0,1363
+12927,1,0,1,0,0,2
+12928,1,0,1,0,0,1
+12929,1,0,1,0,0,1
+12930,2,2,3,377,0,1387
+12931,1,0,1,0,0,2
+12932,1,0,1,0,0,1
+12933,1,0,1,0,0,1
+12934,2,2,3,377,0,1369
+12935,1,0,1,0,0,2
+12936,1,0,1,0,0,2
+12937,1,0,1,0,0,1
+12938,2,2,3,377,0,1390
+12939,1,0,1,0,0,2
+12940,1,0,1,0,0,2
+12941,1,0,1,0,0,2
+12942,2,2,3,377,0,1376
+12943,1,0,1,0,0,1
+12944,1,0,1,0,0,1
+12945,1,0,1,0,0,2
+12946,2,2,3,377,0,1390
+12947,1,0,1,0,0,2
+12948,1,0,1,0,0,2
+12949,1,0,1,0,0,1
+12950,2,2,3,377,0,1383
+12951,1,0,1,0,0,1
+12952,1,0,1,0,0,1
+12953,1,0,1,0,0,2
+12954,2,2,3,377,0,1412
+12955,1,0,1,0,0,2
+12956,1,0,1,0,0,2
+12957,1,0,1,0,0,2
+12958,2,2,3,377,0,1365
+12959,1,0,1,0,0,2
+12960,1,0,1,0,0,2
+12961,1,0,1,0,0,2
+12962,2,2,3,377,0,1414
+12963,1,0,1,0,0,2
+12964,1,0,1,0,0,1
+12965,1,0,1,0,0,1
+12966,2,2,3,377,0,1369
+12967,1,0,1,0,0,1
+12968,1,0,1,0,0,2
+12969,1,0,1,0,0,2
+12970,2,2,3,377,0,1411
+12971,1,0,1,0,0,1
+12972,1,0,1,0,0,4
+12973,1,0,1,0,0,2
+12974,2,2,3,377,0,1382
+12975,1,0,1,0,0,2
+12976,1,0,1,0,0,2
+12977,1,0,1,0,0,2
+12978,2,2,3,377,0,1400
+12979,1,0,1,0,0,2
+12980,1,0,1,0,0,2
+12981,1,0,1,0,0,1
+13059,2,2,3,377,0,1453
+13060,1,0,1,0,0,2
+13061,1,0,1,0,0,2
+13062,1,0,1,0,0,2
+13063,2,2,3,377,0,1400
+13064,1,0,1,0,0,2
+13065,1,0,1,0,0,2
+13066,1,0,1,0,0,1
+13067,2,2,3,377,0,1409
+13068,1,0,1,0,0,2
+13069,1,0,1,0,0,2
+13070,1,0,1,0,0,2
+13071,2,2,3,377,0,1431
+13072,1,0,1,0,0,5
+13073,1,0,1,0,0,2
+13074,1,0,1,0,0,2
+13075,2,2,3,377,0,1419
+13076,1,0,1,0,0,2
+13077,1,0,1,0,0,2
+13078,1,0,1,0,0,2
+13079,2,2,3,377,0,1448
+13080,1,0,1,0,0,2
+13081,1,0,1,0,0,1
+13082,1,0,1,0,0,1
+13083,2,2,3,377,0,1448
+13084,1,0,1,0,0,2
+13085,1,0,1,0,0,2
+13086,1,0,1,0,0,2
+13087,2,2,3,377,0,1411
+13088,1,0,1,0,0,2
+13089,1,0,1,0,0,1
+13090,1,0,1,0,0,1
+13091,2,2,3,377,0,1452
+13092,1,0,1,0,0,2
+13093,1,0,1,0,0,2
+13094,1,0,1,0,0,2
+13095,2,2,3,377,0,1471
+13096,1,0,1,0,0,2
+13097,1,0,1,0,0,2
+13098,1,0,1,0,0,2
+13099,2,2,3,377,0,1451
+13100,1,0,1,0,0,2
+13101,1,0,1,0,0,1
+13102,1,0,1,0,0,2
+13103,2,2,3,377,0,1455
+13104,1,0,1,0,0,2
+13105,1,0,1,0,0,2
+13106,1,0,1,0,0,2
+13107,2,2,3,377,0,1423
+13108,1,0,1,0,0,2
+13109,1,0,1,0,0,2
+13110,1,0,1,0,0,2
+13111,2,2,3,377,0,1456
+13112,1,0,1,0,0,2
+13113,1,0,1,0,0,2
+13114,1,0,1,0,0,2
+13115,2,2,3,377,0,1762
+13116,1,0,1,0,0,2
+13117,1,0,1,0,0,2
+13118,1,0,1,0,0,1
+13119,2,2,3,377,0,1539
+13120,1,0,1,0,0,2
+13121,1,0,1,0,0,4
+13122,1,0,1,0,0,1
+13123,2,2,3,377,0,1410
+13124,1,0,1,0,0,2
+13125,1,0,1,0,0,2
+13126,1,0,1,0,0,1
+13127,2,2,3,377,0,1433
+13128,1,0,1,0,0,2
+13129,1,0,1,0,0,2
+13130,1,0,1,0,0,2
+13131,2,2,3,377,0,1444
+13132,1,0,1,0,0,2
+13133,1,0,1,0,0,2
+13134,1,0,1,0,0,2
+13213,2,2,3,377,0,1394
+13214,1,0,1,0,0,1
+13215,1,0,1,0,0,1
+13216,1,0,1,0,0,1
+13217,2,2,3,377,0,1421
+13218,1,0,1,0,0,2
+13219,1,0,1,0,0,2
+13220,1,0,1,0,0,1
+13221,2,2,3,377,0,1443
+13222,1,0,1,0,0,2
+13223,1,0,1,0,0,2
+13224,1,0,1,0,0,1
+13225,2,2,3,377,0,1434
+13226,1,0,1,0,0,2
+13227,1,0,1,0,0,2
+13228,1,0,1,0,0,1
+13229,2,2,3,377,0,1443
+13230,1,0,1,0,0,2
+13231,1,0,1,0,0,1
+13232,1,0,1,0,0,1
+13233,2,2,3,377,0,1446
+13234,1,0,1,0,0,2
+13235,1,0,1,0,0,2
+13236,1,0,1,0,0,1
+13237,2,2,3,377,0,1428
+13238,1,0,1,0,0,2
+13239,1,0,1,0,0,2
+13240,1,0,1,0,0,2
+13241,2,2,3,377,0,1430
+13242,1,0,1,0,0,2
+13243,1,0,1,0,0,2
+13244,1,0,1,0,0,1
+13245,2,2,3,377,0,1417
+13246,1,0,1,0,0,2
+13247,1,0,1,0,0,2
+13248,1,0,1,0,0,2
+13249,2,2,3,377,0,1433
+13250,1,0,1,0,0,2
+13251,1,0,1,0,0,2
+13252,1,0,1,0,0,2
+13253,2,2,3,377,0,1384
+13254,1,0,1,0,0,2
+13255,1,0,1,0,0,2
+13256,1,0,1,0,0,1
+13257,2,2,3,377,0,1419
+13258,1,0,1,0,0,2
+13259,1,0,1,0,0,1
+13260,1,0,1,0,0,1
+13261,2,2,3,377,0,1401
+13262,1,0,1,0,0,2
+13263,1,0,1,0,0,2
+13264,1,0,1,0,0,1
+13265,2,2,3,377,0,1425
+13266,1,0,1,0,0,2
+13267,1,0,1,0,0,2
+13268,1,0,1,0,0,2
+13269,2,2,3,377,0,1398
+13270,1,0,1,0,0,2
+13271,1,0,1,0,0,9
+13272,1,0,1,0,0,2
+13273,2,2,3,377,0,1425
+13274,1,0,1,0,0,1
+13275,1,0,1,0,0,1
+13276,1,0,1,0,0,2
+13277,2,2,3,377,0,1397
+13278,1,0,1,0,0,2
+13279,1,0,1,0,0,2
+13280,1,0,1,0,0,1
+13281,2,2,3,377,0,1403
+13282,1,0,1,0,0,2
+13283,1,0,1,0,0,2
+13284,1,0,1,0,0,2
+13285,2,2,3,377,0,1414
+13286,1,0,1,0,0,1
+13287,1,0,1,0,0,2
+13288,1,0,1,0,0,2
+13368,2,2,3,377,0,1390
+13369,1,0,1,0,0,2
+13370,1,0,1,0,0,2
+13371,1,0,1,0,0,1
+13372,2,2,3,377,0,1382
+13373,1,0,1,0,0,2
+13374,1,0,1,0,0,1
+13375,1,0,1,0,0,2
+13376,2,2,3,377,0,1383
+13377,1,0,1,0,0,2
+13378,1,0,1,0,0,2
+13379,1,0,1,0,0,1
+13380,2,2,3,377,0,1411
+13381,1,0,1,0,0,2
+13382,1,0,1,0,0,1
+13383,1,0,1,0,0,2
+13384,2,2,3,377,0,1394
+13385,1,0,1,0,0,1
+13386,1,0,1,0,0,1
+13387,1,0,1,0,0,2
+13388,2,2,3,377,0,1405
+13389,1,0,1,0,0,2
+13390,1,0,1,0,0,1
+13391,1,0,1,0,0,2
+13392,2,2,3,377,0,1417
+13393,1,0,1,0,0,2
+13394,1,0,1,0,0,2
+13395,1,0,1,0,0,2
+13396,2,2,3,377,0,1393
+13397,1,0,1,0,0,2
+13398,1,0,1,0,0,2
+13399,1,0,1,0,0,2
+13400,2,2,3,377,0,1418
+13401,1,0,1,0,0,2
+13402,1,0,1,0,0,1
+13403,1,0,1,0,0,2
+13404,2,2,3,377,0,1388
+13405,1,0,1,0,0,2
+13406,1,0,1,0,0,2
+13407,1,0,1,0,0,2
+13408,2,2,3,377,0,1412
+13409,1,0,1,0,0,2
+13410,1,0,1,0,0,2
+13411,1,0,1,0,0,1
+13412,2,2,3,377,0,1394
+13413,1,0,1,0,0,2
+13414,1,0,1,0,0,2
+13415,1,0,1,0,0,2
+13416,2,2,3,377,0,1405
+13417,1,0,1,0,0,2
+13418,1,0,1,0,0,1
+13419,1,0,1,0,0,1
+13420,2,2,3,377,0,1386
+13421,1,0,1,0,0,2
+13422,1,0,1,0,0,6
+13423,1,0,1,0,0,1
+13424,2,2,3,377,0,1433
+13425,1,0,1,0,0,2
+13426,1,0,1,0,0,1
+13427,1,0,1,0,0,2
+13428,2,2,3,377,0,1390
+13429,1,0,1,0,0,2
+13430,1,0,1,0,0,2
+13431,1,0,1,0,0,2
+13432,2,2,3,377,0,1413
+13433,1,0,1,0,0,2
+13434,1,0,1,0,0,1
+13435,1,0,1,0,0,2
+13436,2,2,3,377,0,1419
+13437,1,0,1,0,0,2
+13438,1,0,1,0,0,2
+13439,1,0,1,0,0,2
+13440,2,2,3,377,0,1406
+13441,1,0,1,0,0,2
+13442,1,0,1,0,0,2
+13443,1,0,1,0,0,2
+13524,2,2,3,377,0,1408
+13525,1,0,1,0,0,1
+13526,1,0,1,0,0,1
+13527,1,0,1,0,0,1
+13528,2,2,3,377,0,1405
+13529,1,0,1,0,0,2
+13530,1,0,1,0,0,2
+13531,1,0,1,0,0,2
+13532,2,2,3,377,0,1424
+13533,1,0,1,0,0,2
+13534,1,0,1,0,0,2
+13535,1,0,1,0,0,2
+13536,2,2,3,377,0,1439
+13537,1,0,1,0,0,2
+13538,1,0,1,0,0,2
+13539,1,0,1,0,0,2
+13540,2,2,3,377,0,1419
+13541,1,0,1,0,0,1
+13542,1,0,1,0,0,1
+13543,1,0,1,0,0,2
+13544,2,2,3,377,0,1423
+13545,1,0,1,0,0,2
+13546,1,0,1,0,0,2
+13547,1,0,1,0,0,1
+13548,2,2,3,377,0,1444
+13549,1,0,1,0,0,2
+13550,1,0,1,0,0,2
+13551,1,0,1,0,0,1
+13552,2,2,3,377,0,1448
+13553,1,0,1,0,0,2
+13554,1,0,1,0,0,2
+13555,1,0,1,0,0,2
+13556,2,2,3,377,0,1417
+13557,1,0,1,0,0,2
+13558,1,0,1,0,0,2
+13559,1,0,1,0,0,1
+13560,2,2,3,377,0,1429
+13561,1,0,1,0,0,2
+13562,1,0,1,0,0,2
+13563,1,0,1,0,0,2
+13564,2,2,3,377,0,1420
+13565,1,0,1,0,0,1
+13566,1,0,1,0,0,1
+13567,1,0,1,0,0,2
+13568,2,2,3,377,0,1446
+13569,1,0,1,0,0,2
+13570,1,0,1,0,0,2
+13571,1,0,1,0,0,2
+13572,2,2,3,377,0,1443
+13573,1,0,1,0,0,2
+13574,1,0,1,0,0,2
+13575,1,0,1,0,0,2
+13576,2,2,3,377,0,1406
+13577,1,0,1,0,0,2
+13578,1,0,1,0,0,2
+13579,1,0,1,0,0,2
+13580,2,2,3,377,0,1434
+13581,1,0,1,0,0,2
+13582,1,0,1,0,0,2
+13583,1,0,1,0,0,2
+13584,2,2,3,377,0,1420
+13585,1,0,1,0,0,2
+13586,1,0,1,0,0,2
+13587,1,0,1,0,0,1
+13588,2,2,3,377,0,1445
+13589,1,0,1,0,0,2
+13590,1,0,1,0,0,2
+13591,1,0,1,0,0,1
+13592,2,2,3,377,0,1449
+13593,1,0,1,0,0,2
+13594,1,0,1,0,0,1
+13595,1,0,1,0,0,2
+13596,2,2,3,377,0,1433
+13597,1,0,1,0,0,2
+13598,1,0,1,0,0,2
+13599,1,0,1,0,0,1
+13681,2,2,3,377,0,1441
+13682,1,0,1,0,0,2
+13683,1,0,1,0,0,2
+13684,1,0,1,0,0,1
+13685,2,2,3,377,0,1425
+13686,1,0,1,0,0,2
+13687,1,0,1,0,0,2
+13688,1,0,1,0,0,2
+13689,2,2,3,377,0,1438
+13690,1,0,1,0,0,2
+13691,1,0,1,0,0,2
+13692,1,0,1,0,0,1
+13693,2,2,3,377,0,1428
+13694,1,0,1,0,0,2
+13695,1,0,1,0,0,2
+13696,1,0,1,0,0,1
+13697,2,2,3,377,0,1418
+13698,1,0,1,0,0,2
+13699,1,0,1,0,0,2
+13700,1,0,1,0,0,1
+13701,2,2,3,377,0,1400
+13702,1,0,1,0,0,1
+13703,1,0,1,0,0,1
+13704,1,0,1,0,0,2
+13705,2,2,3,377,0,1376
+13706,1,0,1,0,0,2
+13707,1,0,1,0,0,2
+13708,1,0,1,0,0,2
+13709,2,2,3,377,0,1379
+13710,1,0,1,0,0,2
+13711,1,0,1,0,0,2
+13712,1,0,1,0,0,2
+13713,2,2,3,377,0,1373
+13714,1,0,1,0,0,2
+13715,1,0,1,0,0,2
+13716,1,0,1,0,0,2
+13717,2,2,3,377,0,1397
+13718,1,0,1,0,0,1
+13719,1,0,1,0,0,1
+13720,1,0,1,0,0,2
+13721,2,2,3,377,0,1400
+13722,1,0,1,0,0,2
+13723,1,0,1,0,0,2
+13724,1,0,1,0,0,1
+13725,2,2,3,377,0,1389
+13726,1,0,1,0,0,5
+13727,1,0,1,0,0,1
+13728,1,0,1,0,0,2
+13729,2,2,3,377,0,1384
+13730,1,0,1,0,0,2
+13731,1,0,1,0,0,2
+13732,1,0,1,0,0,2
+13733,2,2,3,377,0,1394
+13734,1,0,1,0,0,2
+13735,1,0,1,0,0,2
+13736,1,0,1,0,0,1
+13737,2,2,3,377,0,1424
+13738,1,0,1,0,0,1
+13739,1,0,1,0,0,2
+13740,1,0,1,0,0,2
+13741,2,2,3,377,0,1377
+13742,1,0,1,0,0,2
+13743,1,0,1,0,0,2
+13744,1,0,1,0,0,2
+13745,2,2,3,377,0,1429
+13746,1,0,1,0,0,2
+13747,1,0,1,0,0,2
+13748,1,0,1,0,0,1
+13749,2,2,3,377,0,1402
+13750,1,0,1,0,0,2
+13751,1,0,1,0,0,2
+13752,1,0,1,0,0,1
+13753,2,2,3,377,0,1421
+13754,1,0,1,0,0,2
+13755,1,0,1,0,0,2
+13756,1,0,1,0,0,2
+13839,2,2,3,377,0,1375
+13840,1,0,1,0,0,1
+13841,1,0,1,0,0,1
+13842,1,0,1,0,0,2
+13843,2,2,3,377,0,1353
+13844,1,0,1,0,0,2
+13845,1,0,1,0,0,2
+13846,1,0,1,0,0,2
+13847,2,2,3,377,0,1386
+13848,1,0,1,0,0,2
+13849,1,0,1,0,0,1
+13850,1,0,1,0,0,2
+13851,2,2,3,377,0,1375
+13852,1,0,1,0,0,1
+13853,1,0,1,0,0,1
+13854,1,0,1,0,0,2
+13855,2,2,3,377,0,1397
+13856,1,0,1,0,0,2
+13857,1,0,1,0,0,1
+13858,1,0,1,0,0,2
+13859,2,2,3,377,0,1393
+13860,1,0,1,0,0,2
+13861,1,0,1,0,0,1
+13862,1,0,1,0,0,2
+13863,2,2,3,377,0,1398
+13864,1,0,1,0,0,1
+13865,1,0,1,0,0,1
+13866,1,0,1,0,0,2
+13867,2,2,3,377,0,1396
+13868,1,0,1,0,0,2
+13869,1,0,1,0,0,2
+13870,1,0,1,0,0,1
+13871,2,2,3,377,0,1396
+13872,1,0,1,0,0,2
+13873,1,0,1,0,0,2
+13874,1,0,1,0,0,2
+13875,2,2,3,377,0,1405
+13876,1,0,1,0,0,1
+13877,1,0,1,0,0,1
+13878,1,0,1,0,0,2
+13879,2,2,3,377,0,1413
+13880,1,0,1,0,0,2
+13881,1,0,1,0,0,2
+13882,1,0,1,0,0,2
+13883,2,2,3,377,0,1390
+13884,1,0,1,0,0,2
+13885,1,0,1,0,0,2
+13886,1,0,1,0,0,2
+13887,2,2,3,377,0,1453
+13888,1,0,1,0,0,2
+13889,1,0,1,0,0,2
+13890,1,0,1,0,0,2
+13891,2,2,3,377,0,1424
+13892,1,0,1,0,0,2
+13893,1,0,1,0,0,2
+13894,1,0,1,0,0,2
+13895,2,2,3,377,0,1446
+13896,1,0,1,0,0,2
+13897,1,0,1,0,0,2
+13898,1,0,1,0,0,1
+13899,2,2,3,377,0,1464
+13900,1,0,1,0,0,2
+13901,1,0,1,0,0,2
+13902,1,0,1,0,0,2
+13903,2,2,3,377,0,1451
+13904,1,0,1,0,0,2
+13905,1,0,1,0,0,2
+13906,1,0,1,0,0,2
+13907,2,2,3,377,0,1458
+13908,1,0,1,0,0,2
+13909,1,0,1,0,0,2
+13910,1,0,1,0,0,2
+13911,2,2,3,377,0,1448
+13912,1,0,1,0,0,2
+13913,1,0,1,0,0,2
+13914,1,0,1,0,0,2
+13998,2,2,3,377,0,1415
+13999,1,0,1,0,0,1
+14000,1,0,1,0,0,2
+14001,1,0,1,0,0,2
+14002,2,2,3,377,0,1404
+14003,1,0,1,0,0,2
+14004,1,0,1,0,0,2
+14005,1,0,1,0,0,2
+14006,2,2,3,377,0,1423
+14007,1,0,1,0,0,2
+14008,1,0,1,0,0,2
+14009,1,0,1,0,0,1
+14010,2,2,3,377,0,1420
+14011,1,0,1,0,0,2
+14012,1,0,1,0,0,2
+14013,1,0,1,0,0,2
+14014,2,2,3,377,0,1460
+14015,1,0,1,0,0,2
+14016,1,0,1,0,0,2
+14017,1,0,1,0,0,1
+14018,2,2,3,377,0,1412
+14019,1,0,1,0,0,2
+14020,1,0,1,0,0,3
+14021,1,0,1,0,0,2
+14022,2,2,3,377,0,1428
+14023,1,0,1,0,0,2
+14024,1,0,1,0,0,1
+14025,1,0,1,0,0,2
+14026,2,2,3,377,0,1446
+14027,1,0,1,0,0,2
+14028,1,0,1,0,0,2
+14029,1,0,1,0,0,2
+14030,2,2,3,377,0,1416
+14031,1,0,1,0,0,2
+14032,1,0,1,0,0,2
+14033,1,0,1,0,0,1
+14034,2,2,3,377,0,1442
+14035,1,0,1,0,0,1
+14036,1,0,1,0,0,1
+14037,1,0,1,0,0,2
+14038,2,2,3,377,0,1426
+14039,1,0,1,0,0,2
+14040,1,0,1,0,0,1
+14041,1,0,1,0,0,2
+14042,2,2,3,377,0,1438
+14043,1,0,1,0,0,2
+14044,1,0,1,0,0,2
+14045,1,0,1,0,0,1
+14046,2,2,3,377,0,1411
+14047,1,0,1,0,0,2
+14048,1,0,1,0,0,1
+14049,1,0,1,0,0,2
+14050,2,2,3,377,0,1433
+14051,1,0,1,0,0,2
+14052,1,0,1,0,0,2
+14053,1,0,1,0,0,2
+14054,2,2,3,377,0,1443
+14055,1,0,1,0,0,2
+14056,1,0,1,0,0,2
+14057,1,0,1,0,0,1
+14058,2,2,3,377,0,1421
+14059,1,0,1,0,0,2
+14060,1,0,1,0,0,2
+14061,1,0,1,0,0,3
+14062,2,2,3,377,0,1450
+14063,1,0,1,0,0,2
+14064,1,0,1,0,0,2
+14065,1,0,1,0,0,1
+14066,2,2,3,377,0,1433
+14067,1,0,1,0,0,2
+14068,1,0,1,0,0,2
+14069,1,0,1,0,0,1
+14070,2,2,3,377,0,1425
+14071,1,0,1,0,0,2
+14072,1,0,1,0,0,2
+14073,1,0,1,0,0,1
+14158,2,2,3,377,0,1404
+14159,1,0,1,0,0,1
+14160,1,0,1,0,0,1
+14161,1,0,1,0,0,1
+14162,2,2,3,377,0,1383
+14163,1,0,1,0,0,2
+14164,1,0,1,0,0,2
+14165,1,0,1,0,0,1
+14166,2,2,3,377,0,1399
+14167,1,0,1,0,0,1
+14168,1,0,1,0,0,1
+14169,1,0,1,0,0,2
+14170,2,2,3,377,0,1399
+14171,1,0,1,0,0,2
+14172,1,0,1,0,0,2
+14173,1,0,1,0,0,2
+14174,2,2,3,377,0,1399
+14175,1,0,1,0,0,2
+14176,1,0,1,0,0,2
+14177,1,0,1,0,0,2
+14178,2,2,3,377,0,1396
+14179,1,0,1,0,0,2
+14180,1,0,1,0,0,2
+14181,1,0,1,0,0,1
+14182,2,2,3,377,0,1394
+14183,1,0,1,0,0,2
+14184,1,0,1,0,0,2
+14185,1,0,1,0,0,1
+14186,2,2,3,377,0,1410
+14187,1,0,1,0,0,2
+14188,1,0,1,0,0,2
+14189,1,0,1,0,0,4
+14190,2,2,3,377,0,1367
+14191,1,0,1,0,0,2
+14192,1,0,1,0,0,1
+14193,1,0,1,0,0,1
+14194,2,2,3,377,0,1400
+14195,1,0,1,0,0,1
+14196,1,0,1,0,0,2
+14197,1,0,1,0,0,2
+14198,2,2,3,377,0,1379
+14199,1,0,1,0,0,2
+14200,1,0,1,0,0,3
+14201,1,0,1,0,0,1
+14202,2,2,3,377,0,1418
+14203,1,0,1,0,0,2
+14204,1,0,1,0,0,2
+14205,1,0,1,0,0,1
+14206,2,2,3,377,0,1373
+14207,1,0,1,0,0,1
+14208,1,0,1,0,0,1
+14209,1,0,1,0,0,2
+14210,2,2,3,377,0,1410
+14211,1,0,1,0,0,2
+14212,1,0,1,0,0,2
+14213,1,0,1,0,0,1
+14214,2,2,3,377,0,1387
+14215,1,0,1,0,0,2
+14216,1,0,1,0,0,2
+14217,1,0,1,0,0,2
+14218,2,2,3,377,0,1430
+14219,1,0,1,0,0,2
+14220,1,0,1,0,0,2
+14221,1,0,1,0,0,2
+14222,2,2,3,377,0,1360
+14223,1,0,1,0,0,2
+14224,1,0,1,0,0,2
+14225,1,0,1,0,0,2
+14226,2,2,3,377,0,1406
+14227,1,0,1,0,0,1
+14228,1,0,1,0,0,2
+14229,1,0,1,0,0,2
+14230,2,2,3,377,0,1366
+14231,1,0,1,0,0,2
+14232,1,0,1,0,0,2
+14233,1,0,1,0,0,2
+14319,2,2,3,377,0,1414
+14320,1,0,1,0,0,1
+14321,1,0,1,0,0,1
+14322,1,0,1,0,0,1
+14323,2,2,3,377,0,1364
+14324,1,0,1,0,0,2
+14325,1,0,1,0,0,2
+14326,1,0,1,0,0,2
+14327,2,2,3,377,0,1409
+14328,1,0,1,0,0,2
+14329,1,0,1,0,0,2
+14330,1,0,1,0,0,1
+14331,2,2,3,377,0,1384
+14332,1,0,1,0,0,1
+14333,1,0,1,0,0,2
+14334,1,0,1,0,0,2
+14335,2,2,3,377,0,1437
+14336,1,0,1,0,0,2
+14337,1,0,1,0,0,2
+14338,1,0,1,0,0,2
+14339,2,2,3,377,0,1382
+14340,1,0,1,0,0,2
+14341,1,0,1,0,0,2
+14342,1,0,1,0,0,2
+14343,2,2,3,377,0,1476
+14344,1,0,1,0,0,8
+14345,1,0,1,0,0,2
+14346,1,0,1,0,0,2
+14347,2,2,3,377,0,1406
+14348,1,0,1,0,0,2
+14349,1,0,1,0,0,2
+14350,1,0,1,0,0,2
+14351,2,2,3,377,0,1437
+14352,1,0,1,0,0,2
+14353,1,0,1,0,0,2
+14354,1,0,1,0,0,2
+14355,2,2,3,377,0,1444
+14356,1,0,1,0,0,2
+14357,1,0,1,0,0,2
+14358,1,0,1,0,0,1
+14359,2,2,3,377,0,1436
+14360,1,0,1,0,0,2
+14361,1,0,1,0,0,2
+14362,1,0,1,0,0,2
+14363,2,2,3,377,0,1423
+14364,1,0,1,0,0,2
+14365,1,0,1,0,0,2
+14366,1,0,1,0,0,1
+14367,2,2,3,377,0,1445
+14368,1,0,1,0,0,2
+14369,1,0,1,0,0,1
+14370,1,0,1,0,0,1
+14371,2,2,3,377,0,1422
+14372,1,0,1,0,0,2
+14373,1,0,1,0,0,2
+14374,1,0,1,0,0,1
+14375,2,2,3,377,0,1416
+14376,1,0,1,0,0,1
+14377,1,0,1,0,0,2
+14378,1,0,1,0,0,2
+14379,2,2,3,377,0,1446
+14380,1,0,1,0,0,2
+14381,1,0,1,0,0,2
+14382,1,0,1,0,0,2
+14383,2,2,3,377,0,1415
+14384,1,0,1,0,0,2
+14385,1,0,1,0,0,2
+14386,1,0,1,0,0,2
+14387,2,2,3,377,0,1435
+14388,1,0,1,0,0,2
+14389,1,0,1,0,0,2
+14390,1,0,1,0,0,2
+14391,2,2,3,377,0,1451
+14392,1,0,1,0,0,2
+14393,1,0,1,0,0,2
+14394,1,0,1,0,0,2
+14481,2,2,3,377,0,1393
+14482,1,0,1,0,0,2
+14483,1,0,1,0,0,2
+14484,1,0,1,0,0,2
+14485,2,2,3,377,0,1385
+14486,1,0,1,0,0,2
+14487,1,0,1,0,0,2
+14488,1,0,1,0,0,1
+14489,2,2,3,377,0,1441
+14490,1,0,1,0,0,2
+14491,1,0,1,0,0,2
+14492,1,0,1,0,0,2
+14493,2,2,3,377,0,1384
+14494,1,0,1,0,0,2
+14495,1,0,1,0,0,2
+14496,1,0,1,0,0,2
+14497,2,2,3,377,0,1414
+14498,1,0,1,0,0,2
+14499,1,0,1,0,0,1
+14500,1,0,1,0,0,2
+14501,2,2,3,377,0,1445
+14502,1,0,1,0,0,2
+14503,1,0,1,0,0,2
+14504,1,0,1,0,0,2
+14505,2,2,3,377,0,1433
+14506,1,0,1,0,0,2
+14507,1,0,1,0,0,2
+14508,1,0,1,0,0,2
+14509,2,2,3,377,0,1448
+14510,1,0,1,0,0,2
+14511,1,0,1,0,0,2
+14512,1,0,1,0,0,1
+14513,2,2,3,377,0,1410
+14514,1,0,1,0,0,2
+14515,1,0,1,0,0,2
+14516,1,0,1,0,0,2
+14517,2,2,3,377,0,1430
+14518,1,0,1,0,0,2
+14519,1,0,1,0,0,1
+14520,1,0,1,0,0,2
+14521,2,2,3,377,0,1423
+14522,1,0,1,0,0,2
+14523,1,0,1,0,0,2
+14524,1,0,1,0,0,1
+14525,2,2,3,377,0,1412
+14526,1,0,1,0,0,2
+14527,1,0,1,0,0,2
+14528,1,0,1,0,0,1
+14529,2,2,3,377,0,1442
+14530,1,0,1,0,0,2
+14531,1,0,1,0,0,2
+14532,1,0,1,0,0,2
+14533,2,2,3,377,0,1418
+14534,1,0,1,0,0,2
+14535,1,0,1,0,0,2
+14536,1,0,1,0,0,1
+14537,2,2,3,377,0,1436
+14538,1,0,1,0,0,2
+14539,1,0,1,0,0,2
+14540,1,0,1,0,0,1
+14541,2,2,3,377,0,1436
+14542,1,0,1,0,0,2
+14543,1,0,1,0,0,1
+14544,1,0,1,0,0,2
+14545,2,2,3,377,0,1430
+14546,1,0,1,0,0,2
+14547,1,0,1,0,0,2
+14548,1,0,1,0,0,2
+14549,2,2,3,377,0,1424
+14550,1,0,1,0,0,2
+14551,1,0,1,0,0,2
+14552,1,0,1,0,0,2
+14553,2,2,3,377,0,1403
+14554,1,0,1,0,0,2
+14555,1,0,1,0,0,2
+14556,1,0,1,0,0,2
+14644,2,2,3,377,0,1390
+14645,1,0,1,0,0,2
+14646,1,0,1,0,0,2
+14647,1,0,1,0,0,2
+14648,2,2,3,377,0,1367
+14649,1,0,1,0,0,2
+14650,1,0,1,0,0,1
+14651,1,0,1,0,0,2
+14652,2,2,3,377,0,1366
+14653,1,0,1,0,0,2
+14654,1,0,1,0,0,1
+14655,1,0,1,0,0,2
+14656,2,2,3,377,0,1372
+14657,1,0,1,0,0,2
+14658,1,0,1,0,0,2
+14659,1,0,1,0,0,4
+14660,2,2,3,377,0,1382
+14661,1,0,1,0,0,2
+14662,1,0,1,0,0,2
+14663,1,0,1,0,0,1
+14664,2,2,3,377,0,1397
+14665,1,0,1,0,0,2
+14666,1,0,1,0,0,2
+14667,1,0,1,0,0,1
+14668,2,2,3,377,0,1373
+14669,1,0,1,0,0,1
+14670,1,0,1,0,0,1
+14671,1,0,1,0,0,1
+14672,2,2,3,377,0,1396
+14673,1,0,1,0,0,2
+14674,1,0,1,0,0,2
+14675,1,0,1,0,0,2
+14676,2,2,3,377,0,1381
+14677,1,0,1,0,0,2
+14678,1,0,1,0,0,2
+14679,1,0,1,0,0,2
+14680,2,2,3,377,0,1378
+14681,1,0,1,0,0,2
+14682,1,0,1,0,0,2
+14683,1,0,1,0,0,2
+14684,2,2,3,377,0,1387
+14685,1,0,1,0,0,2
+14686,1,0,1,0,0,1
+14687,1,0,1,0,0,2
+14688,2,2,3,377,0,1391
+14689,1,0,1,0,0,2
+14690,1,0,1,0,0,2
+14691,1,0,1,0,0,2
+14692,2,2,3,377,0,1382
+14693,1,0,1,0,0,2
+14694,1,0,1,0,0,2
+14695,1,0,1,0,0,2
+14696,2,2,3,377,0,1399
+14697,1,0,1,0,0,2
+14698,1,0,1,0,0,2
+14699,1,0,1,0,0,2
+14700,2,2,3,377,0,1378
+14701,1,0,1,0,0,2
+14702,1,0,1,0,0,2
+14703,1,0,1,0,0,2
+14704,2,2,3,377,0,1379
+14705,1,0,1,0,0,2
+14706,1,0,1,0,0,2
+14707,1,0,1,0,0,2
+14708,2,2,3,377,0,1387
+14709,1,0,1,0,0,2
+14710,1,0,1,0,0,2
+14711,1,0,1,0,0,2
+14712,2,2,3,377,0,1376
+14713,1,0,1,0,0,2
+14714,1,0,1,0,0,2
+14715,1,0,1,0,0,1
+14716,2,2,3,377,0,1389
+14717,1,0,1,0,0,2
+14718,1,0,1,0,0,2
+14719,1,0,1,0,0,2
+14808,2,2,3,377,0,1407
+14809,1,0,1,0,0,1
+14810,1,0,1,0,0,1
+14811,1,0,1,0,0,1
+14812,2,2,3,377,0,1395
+14813,1,0,1,0,0,2
+14814,1,0,1,0,0,2
+14815,1,0,1,0,0,2
+14816,2,2,3,377,0,1458
+14817,1,0,1,0,0,5
+14818,1,0,1,0,0,2
+14819,1,0,1,0,0,2
+14820,2,2,3,377,0,1410
+14821,1,0,1,0,0,2
+14822,1,0,1,0,0,2
+14823,1,0,1,0,0,2
+14824,2,2,3,377,0,1434
+14825,1,0,1,0,0,2
+14826,1,0,1,0,0,2
+14827,1,0,1,0,0,2
+14828,2,2,3,377,0,1454
+14829,1,0,1,0,0,2
+14830,1,0,1,0,0,2
+14831,1,0,1,0,0,2
+14832,2,2,3,377,0,1414
+14833,1,0,1,0,0,2
+14834,1,0,1,0,0,2
+14835,1,0,1,0,0,2
+14836,2,2,3,377,0,1423
+14837,1,0,1,0,0,2
+14838,1,0,1,0,0,2
+14839,1,0,1,0,0,2
+14840,2,2,3,377,0,1433
+14841,1,0,1,0,0,2
+14842,1,0,1,0,0,2
+14843,1,0,1,0,0,1
+14844,2,2,3,377,0,1418
+14845,1,0,1,0,0,2
+14846,1,0,1,0,0,2
+14847,1,0,1,0,0,1
+14848,2,2,3,377,0,1413
+14849,1,0,1,0,0,2
+14850,1,0,1,0,0,2
+14851,1,0,1,0,0,2
+14852,2,2,3,377,0,1425
+14853,1,0,1,0,0,2
+14854,1,0,1,0,0,1
+14855,1,0,1,0,0,1
+14856,2,2,3,377,0,1452
+14857,1,0,1,0,0,2
+14858,1,0,1,0,0,2
+14859,1,0,1,0,0,1
+14860,2,2,3,377,0,1433
+14861,1,0,1,0,0,2
+14862,1,0,1,0,0,2
+14863,1,0,1,0,0,2
+14864,2,2,3,377,0,1427
+14865,1,0,1,0,0,1
+14866,1,0,1,0,0,1
+14867,1,0,1,0,0,2
+14868,2,2,3,377,0,1430
+14869,1,0,1,0,0,2
+14870,1,0,1,0,0,1
+14871,1,0,1,0,0,2
+14872,2,2,3,377,0,1423
+14873,1,0,1,0,0,2
+14874,1,0,1,0,0,2
+14875,1,0,1,0,0,1
+14876,2,2,3,377,0,1439
+14877,1,0,1,0,0,2
+14878,1,0,1,0,0,2
+14879,1,0,1,0,0,1
+14880,2,2,3,377,0,1412
+14881,1,0,1,0,0,2
+14882,1,0,1,0,0,2
+14883,1,0,1,0,0,2
+14973,2,2,3,377,0,1412
+14974,1,0,1,0,0,2
+14975,1,0,1,0,0,2
+14976,1,0,1,0,0,4
+14977,2,2,3,377,0,1408
+14978,1,0,1,0,0,2
+14979,1,0,1,0,0,1
+14980,1,0,1,0,0,2
+14981,2,2,3,377,0,1408
+14982,1,0,1,0,0,2
+14983,1,0,1,0,0,1
+14984,1,0,1,0,0,2
+14985,2,2,3,377,0,1444
+14986,1,0,1,0,0,2
+14987,1,0,1,0,0,2
+14988,1,0,1,0,0,2
+14989,2,2,3,377,0,1425
+14990,1,0,1,0,0,2
+14991,1,0,1,0,0,1
+14992,1,0,1,0,0,2
+14993,2,2,3,377,0,1446
+14994,1,0,1,0,0,2
+14995,1,0,1,0,0,2
+14996,1,0,1,0,0,1
+14997,2,2,3,377,0,1423
+14998,1,0,1,0,0,2
+14999,1,0,1,0,0,2
+15000,1,0,1,0,0,2
+15001,2,2,3,377,0,1439
+15002,1,0,1,0,0,2
+15003,1,0,1,0,0,1
+15004,1,0,1,0,0,2
+15005,2,2,3,377,0,1432
+15006,1,0,1,0,0,2
+15007,1,0,1,0,0,2
+15008,1,0,1,0,0,2
+15009,2,2,3,377,0,1415
+15010,1,0,1,0,0,2
+15011,1,0,1,0,0,1
+15012,1,0,1,0,0,1
+15013,2,2,3,377,0,1423
+15014,1,0,1,0,0,2
+15015,1,0,1,0,0,1
+15016,1,0,1,0,0,2
+15017,2,2,3,377,0,1411
+15018,1,0,1,0,0,2
+15019,1,0,1,0,0,2
+15020,1,0,1,0,0,1
+15021,2,2,3,377,0,1399
+15022,1,0,1,0,0,1
+15023,1,0,1,0,0,2
+15024,1,0,1,0,0,2
+15025,2,2,3,377,0,1417
+15026,1,0,1,0,0,2
+15027,1,0,1,0,0,2
+15028,1,0,1,0,0,1
+15029,2,2,3,377,0,1401
+15030,1,0,1,0,0,2
+15031,1,0,1,0,0,1
+15032,1,0,1,0,0,2
+15033,2,2,3,377,0,1416
+15034,1,0,1,0,0,2
+15035,1,0,1,0,0,2
+15036,1,0,1,0,0,2
+15037,2,2,3,377,0,1407
+15038,1,0,1,0,0,2
+15039,1,0,1,0,0,1
+15040,1,0,1,0,0,2
+15041,2,2,3,377,0,1413
+15042,1,0,1,0,0,2
+15043,1,0,1,0,0,2
+15044,1,0,1,0,0,1
+15045,2,2,3,377,0,1404
+15046,1,0,1,0,0,2
+15047,1,0,1,0,0,2
+15048,1,0,1,0,0,1
+15139,2,2,3,377,0,1403
+15140,1,0,1,0,0,2
+15141,1,0,1,0,0,2
+15142,1,0,1,0,0,2
+15143,2,2,3,377,0,1379
+15144,1,0,1,0,0,2
+15145,1,0,1,0,0,2
+15146,1,0,1,0,0,2
+15147,2,2,3,377,0,1365
+15148,1,0,1,0,0,1
+15149,1,0,1,0,0,1
+15150,1,0,1,0,0,2
+15151,2,2,3,377,0,1393
+15152,1,0,1,0,0,2
+15153,1,0,1,0,0,2
+15154,1,0,1,0,0,2
+15155,2,2,3,377,0,1384
+15156,1,0,1,0,0,1
+15157,1,0,1,0,0,1
+15158,1,0,1,0,0,2
+15159,2,2,3,377,0,1387
+15160,1,0,1,0,0,2
+15161,1,0,1,0,0,2
+15162,1,0,1,0,0,2
+15163,2,2,3,377,0,1391
+15164,1,0,1,0,0,2
+15165,1,0,1,0,0,1
+15166,1,0,1,0,0,1
+15167,2,2,3,377,0,1394
+15168,1,0,1,0,0,2
+15169,1,0,1,0,0,2
+15170,1,0,1,0,0,2
+15171,2,2,3,377,0,1396
+15172,1,0,1,0,0,2
+15173,1,0,1,0,0,2
+15174,1,0,1,0,0,2
+15175,2,2,3,377,0,1410
+15176,1,0,1,0,0,2
+15177,1,0,1,0,0,2
+15178,1,0,1,0,0,2
+15179,2,2,3,377,0,1388
+15180,1,0,1,0,0,2
+15181,1,0,1,0,0,2
+15182,1,0,1,0,0,2
+15183,2,2,3,377,0,1418
+15184,1,0,1,0,0,1
+15185,1,0,1,0,0,1
+15186,1,0,1,0,0,2
+15187,2,2,3,377,0,1362
+15188,1,0,1,0,0,2
+15189,1,0,1,0,0,2
+15190,1,0,1,0,0,1
+15191,2,2,3,377,0,1418
+15192,1,0,1,0,0,2
+15193,1,0,1,0,0,2
+15194,1,0,1,0,0,1
+15195,2,2,3,377,0,1398
+15196,1,0,1,0,0,2
+15197,1,0,1,0,0,2
+15198,1,0,1,0,0,2
+15199,2,2,3,377,0,1410
+15200,1,0,1,0,0,2
+15201,1,0,1,0,0,2
+15202,1,0,1,0,0,2
+15203,2,2,3,377,0,1393
+15204,1,0,1,0,0,2
+15205,1,0,1,0,0,2
+15206,1,0,1,0,0,1
+15207,2,2,3,377,0,1453
+15208,1,0,1,0,0,2
+15209,1,0,1,0,0,2
+15210,1,0,1,0,0,2
+15211,2,2,3,377,0,1417
+15212,1,0,1,0,0,2
+15213,1,0,1,0,0,2
+15214,1,0,1,0,0,2
+15306,2,2,3,377,0,1408
+15307,1,0,1,0,0,2
+15308,1,0,1,0,0,2
+15309,1,0,1,0,0,1
+15310,2,2,3,377,0,1379
+15311,1,0,1,0,0,2
+15312,1,0,1,0,0,2
+15313,1,0,1,0,0,2
+15314,2,2,3,377,0,1440
+15315,1,0,1,0,0,2
+15316,1,0,1,0,0,2
+15317,1,0,1,0,0,2
+15318,2,2,3,377,0,1449
+15319,1,0,1,0,0,2
+15320,1,0,1,0,0,1
+15321,1,0,1,0,0,2
+15322,2,2,3,377,0,1456
+15323,1,0,1,0,0,2
+15324,1,0,1,0,0,2
+15325,1,0,1,0,0,1
+15326,2,2,3,377,0,1429
+15327,1,0,1,0,0,2
+15328,1,0,1,0,0,2
+15329,1,0,1,0,0,1
+15330,2,2,3,377,0,1435
+15331,1,0,1,0,0,2
+15332,1,0,1,0,0,2
+15333,1,0,1,0,0,2
+15334,2,2,3,377,0,1433
+15335,1,0,1,0,0,2
+15336,1,0,1,0,0,2
+15337,1,0,1,0,0,1
+15338,2,2,3,377,0,1416
+15339,1,0,1,0,0,2
+15340,1,0,1,0,0,1
+15341,1,0,1,0,0,2
+15342,2,2,3,377,0,1422
+15343,1,0,1,0,0,3
+15344,1,0,1,0,0,1
+15345,1,0,1,0,0,2
+15346,2,2,3,377,0,1421
+15347,1,0,1,0,0,3
+15348,1,0,1,0,0,2
+15349,1,0,1,0,0,2
+15350,2,2,3,377,0,1443
+15351,1,0,1,0,0,2
+15352,1,0,1,0,0,2
+15353,1,0,1,0,0,2
+15354,2,2,3,377,0,1436
+15355,1,0,1,0,0,2
+15356,1,0,1,0,0,2
+15357,1,0,1,0,0,2
+15358,2,2,3,377,0,1424
+15359,1,0,1,0,0,2
+15360,1,0,1,0,0,1
+15361,1,0,1,0,0,2
+15362,2,2,3,377,0,1429
+15363,1,0,1,0,0,2
+15364,1,0,1,0,0,2
+15365,1,0,1,0,0,2
+15366,2,2,3,377,0,1442
+15367,1,0,1,0,0,2
+15368,1,0,1,0,0,2
+15369,1,0,1,0,0,2
+15370,2,2,3,377,0,1419
+15371,1,0,1,0,0,2
+15372,1,0,1,0,0,2
+15373,1,0,1,0,0,2
+15374,2,2,3,377,0,1438
+15375,1,0,1,0,0,2
+15376,1,0,1,0,0,2
+15377,1,0,1,0,0,2
+15378,2,2,3,377,0,1411
+15379,1,0,1,0,0,2
+15380,1,0,1,0,0,2
+15381,1,0,1,0,0,2
+15474,2,2,3,377,0,1414
+15475,1,0,1,0,0,2
+15476,1,0,1,0,0,2
+15477,1,0,1,0,0,1
+15478,2,2,3,377,0,1408
+15479,1,0,1,0,0,2
+15480,1,0,1,0,0,2
+15481,1,0,1,0,0,1
+15482,2,2,3,377,0,1419
+15483,1,0,1,0,0,2
+15484,1,0,1,0,0,2
+15485,1,0,1,0,0,2
+15486,2,2,3,377,0,1408
+15487,1,0,1,0,0,2
+15488,1,0,1,0,0,1
+15489,1,0,1,0,0,2
+15490,2,2,3,377,0,1446
+15491,1,0,1,0,0,2
+15492,1,0,1,0,0,1
+15493,1,0,1,0,0,2
+15494,2,2,3,377,0,1397
+15495,1,0,1,0,0,1
+15496,1,0,1,0,0,1
+15497,1,0,1,0,0,2
+15498,2,2,3,377,0,1390
+15499,1,0,1,0,0,2
+15500,1,0,1,0,0,2
+15501,1,0,1,0,0,2
+15502,2,2,3,377,0,1398
+15503,1,0,1,0,0,1
+15504,1,0,1,0,0,2
+15505,1,0,1,0,0,2
+15506,2,2,3,377,0,1388
+15507,1,0,1,0,0,2
+15508,1,0,1,0,0,2
+15509,1,0,1,0,0,1
+15510,2,2,3,377,0,1406
+15511,1,0,1,0,0,2
+15512,1,0,1,0,0,2
+15513,1,0,1,0,0,1
+15514,2,2,3,377,0,1393
+15515,1,0,1,0,0,2
+15516,1,0,1,0,0,2
+15517,1,0,1,0,0,2
+15518,2,2,3,377,0,1406
+15519,1,0,1,0,0,2
+15520,1,0,1,0,0,2
+15521,1,0,1,0,0,1
+15522,2,2,3,377,0,1414
+15523,1,0,1,0,0,2
+15524,1,0,1,0,0,2
+15525,1,0,1,0,0,1
+15526,2,2,3,377,0,1414
+15527,1,0,1,0,0,2
+15528,1,0,1,0,0,2
+15529,1,0,1,0,0,1
+15530,2,2,3,377,0,1414
+15531,1,0,1,0,0,2
+15532,1,0,1,0,0,2
+15533,1,0,1,0,0,2
+15534,2,2,3,377,0,1413
+15535,1,0,1,0,0,2
+15536,1,0,1,0,0,2
+15537,1,0,1,0,0,2
+15538,2,2,3,377,0,1399
+15539,1,0,1,0,0,2
+15540,1,0,1,0,0,2
+15541,1,0,1,0,0,2
+15542,2,2,3,377,0,1403
+15543,1,0,1,0,0,2
+15544,1,0,1,0,0,5
+15545,1,0,1,0,0,2
+15546,2,2,3,377,0,1414
+15547,1,0,1,0,0,2
+15548,1,0,1,0,0,2
+15549,1,0,1,0,0,2
+15643,2,2,3,377,0,1388
+15644,1,0,1,0,0,2
+15645,1,0,1,0,0,1
+15646,1,0,1,0,0,2
+15647,2,2,3,377,0,1374
+15648,1,0,1,0,0,2
+15649,1,0,1,0,0,1
+15650,1,0,1,0,0,2
+15651,2,2,3,377,0,1394
+15652,1,0,1,0,0,2
+15653,1,0,1,0,0,2
+15654,1,0,1,0,0,2
+15655,2,2,3,377,0,1404
+15656,1,0,1,0,0,2
+15657,1,0,1,0,0,2
+15658,1,0,1,0,0,1
+15659,2,2,3,377,0,1418
+15660,1,0,1,0,0,2
+15661,1,0,1,0,0,2
+15662,1,0,1,0,0,2
+15663,2,2,3,377,0,1388
+15664,1,0,1,0,0,2
+15665,1,0,1,0,0,2
+15666,1,0,1,0,0,1
+15667,2,2,3,377,0,1396
+15668,1,0,1,0,0,2
+15669,1,0,1,0,0,2
+15670,1,0,1,0,0,2
+15671,2,2,3,377,0,1406
+15672,1,0,1,0,0,2
+15673,1,0,1,0,0,2
+15674,1,0,1,0,0,2
+15675,2,2,3,377,0,1391
+15676,1,0,1,0,0,1
+15677,1,0,1,0,0,1
+15678,1,0,1,0,0,2
+15679,2,2,3,377,0,1437
+15680,1,0,1,0,0,2
+15681,1,0,1,0,0,1
+15682,1,0,1,0,0,2
+15683,2,2,3,377,0,1277
+15684,1,0,1,0,0,2
+15685,1,0,1,0,0,1
+15686,1,0,1,0,0,1
+15687,2,2,3,377,0,1395
+15688,1,0,1,0,0,1
+15689,1,0,1,0,0,1
+15690,1,0,1,0,0,2
+15691,2,2,3,377,0,1418
+15692,1,0,1,0,0,2
+15693,1,0,1,0,0,2
+15694,1,0,1,0,0,1
+15695,2,2,3,377,0,1427
+15696,1,0,1,0,0,2
+15697,1,0,1,0,0,2
+15698,1,0,1,0,0,1
+15699,2,2,3,377,0,1435
+15700,1,0,1,0,0,2
+15701,1,0,1,0,0,2
+15702,1,0,1,0,0,2
+15703,2,2,3,377,0,1433
+15704,1,0,1,0,0,2
+15705,1,0,1,0,0,2
+15706,1,0,1,0,0,2
+15707,2,2,3,377,0,1438
+15708,1,0,1,0,0,2
+15709,1,0,1,0,0,2
+15710,1,0,1,0,0,1
+15711,2,2,3,377,0,1438
+15712,1,0,1,0,0,2
+15713,1,0,1,0,0,2
+15714,1,0,1,0,0,2
+15715,2,2,3,377,0,1445
+15716,1,0,1,0,0,2
+15717,1,0,1,0,0,2
+15718,1,0,1,0,0,2
+15813,2,2,3,377,0,1413
+15814,1,0,1,0,0,2
+15815,1,0,1,0,0,1
+15816,1,0,1,0,0,1
+15817,2,2,3,377,0,1403
+15818,1,0,1,0,0,2
+15819,1,0,1,0,0,2
+15820,1,0,1,0,0,1
+15821,2,2,3,377,0,1448
+15822,1,0,1,0,0,2
+15823,1,0,1,0,0,2
+15824,1,0,1,0,0,2
+15825,2,2,3,377,0,1421
+15826,1,0,1,0,0,2
+15827,1,0,1,0,0,2
+15828,1,0,1,0,0,2
+15829,2,2,3,377,0,1443
+15830,1,0,1,0,0,1
+15831,1,0,1,0,0,1
+15832,1,0,1,0,0,2
+15833,2,2,3,377,0,1426
+15834,1,0,1,0,0,2
+15835,1,0,1,0,0,1
+15836,1,0,1,0,0,2
+15837,2,2,3,377,0,1421
+15838,1,0,1,0,0,1
+15839,1,0,1,0,0,1
+15840,1,0,1,0,0,2
+15841,2,2,3,377,0,1448
+15842,1,0,1,0,0,2
+15843,1,0,1,0,0,2
+15844,1,0,1,0,0,1
+15845,2,2,3,377,0,1393
+15846,1,0,1,0,0,1
+15847,1,0,1,0,0,1
+15848,1,0,1,0,0,2
+15849,2,2,3,377,0,1437
+15850,1,0,1,0,0,2
+15851,1,0,1,0,0,2
+15852,1,0,1,0,0,1
+15853,2,2,3,377,0,1405
+15854,1,0,1,0,0,2
+15855,1,0,1,0,0,2
+15856,1,0,1,0,0,1
+15857,2,2,3,377,0,1443
+15858,1,0,1,0,0,2
+15859,1,0,1,0,0,2
+15860,1,0,1,0,0,2
+15861,2,2,3,377,0,1408
+15862,1,0,1,0,0,2
+15863,1,0,1,0,0,2
+15864,1,0,1,0,0,2
+15865,2,2,3,377,0,1426
+15866,1,0,1,0,0,2
+15867,1,0,1,0,0,2
+15868,1,0,1,0,0,1
+15869,2,2,3,377,0,1423
+15870,1,0,1,0,0,2
+15871,1,0,1,0,0,1
+15872,1,0,1,0,0,2
+15873,2,2,3,377,0,1438
+15874,1,0,1,0,0,2
+15875,1,0,1,0,0,2
+15876,1,0,1,0,0,1
+15877,2,2,3,377,0,1431
+15878,1,0,1,0,0,2
+15879,1,0,1,0,0,2
+15880,1,0,1,0,0,2
+15881,2,2,3,377,0,1404
+15882,1,0,1,0,0,1
+15883,1,0,1,0,0,2
+15884,1,0,1,0,0,1
+15885,2,2,3,377,0,1432
+15886,1,0,1,0,0,2
+15887,1,0,1,0,0,2
+15888,1,0,1,0,0,1
+15895,4,2,6,56,0,170
+15947,1,0,1,0,0,3
+15948,1,0,1,0,0,2
+15949,1,0,1,0,0,2
+15950,2,2,3,379,4,598
+15951,2,2,3,379,4,542
+16006,3,4,8,57,,103
+16019,1,0,1,0,0,3
+16020,3,1,3,3,,21
+16034,3,4,8,57,,89
+16035,2,2,3,57,4,379
+16050,2,1,2,8,4,329
+16051,3,2,4,2,4,492
+16052,3,3,8,18,,344
+16053,2,2,3,379,4,464
+16067,4,2,6,379,0,1627
+16068,2,2,3,379,0,1325
+16082,3,2,4,379,0,1535
+16083,2,2,3,379,0,1383
+16097,3,2,4,379,0,1557
+16098,2,2,3,379,0,1398
+16113,3,4,7,1,,49
+16114,4,2,6,379,0,201
+16129,3,4,7,1,,47
+16130,4,2,6,379,0,196
+16143,1,0,1,0,0,2
+16144,2,3,4,57,,32
+16145,2,1,2,1,,3
+16146,2,2,3,57,,2
+16160,3,2,4,379,0,168
+16161,2,2,3,379,0,157
+16175,3,2,4,379,0,166
+16176,2,2,3,379,0,154
+16190,4,2,7,379,0,327
+16191,2,2,3,379,0,175
+16205,4,2,7,379,0,316
+16206,2,2,3,379,0,154
+16220,3,4,7,1,,45
+16221,4,2,6,379,0,200
+16235,3,4,7,1,,45
+16236,4,2,6,379,0,197
+16250,3,4,7,1,,44
+16251,5,2,9,379,0,711
+16265,3,4,7,1,,43
+16266,5,2,9,379,0,651
+16283,3,2,4,379,0,1415
+16284,2,1,2,2,0,8
+16285,3,2,5,57,0,1739
+16286,3,2,4,57,0,586
+16287,3,2,4,379,0,1408
+16288,2,1,2,1,0,8
+16289,3,2,5,57,0,1646
+16290,3,2,4,57,0,585
+16291,3,2,4,379,0,166
+16292,2,1,2,3,0,16
+16293,3,2,5,57,0,103
+16294,3,2,4,57,0,67
+16310,5,3,10,379,,74
+16311,4,3,8,20,,49
+16312,3,3,6,379,0,1550
+16313,2,2,3,379,0,1376
+16327,1,0,1,0,0,2
+16328,3,2,5,2,8,460
+16329,3,2,4,57,0,608
+16345,1,0,1,0,0,2
+16346,3,2,5,2,8,446
+16347,1,0,1,0,0,2
+16348,3,2,4,379,0,1388
+16349,2,1,2,2,0,9
+16350,1,0,1,0,0,2
+16351,2,1,2,20,0,175
+16352,5,3,9,5,,90
+16353,3,2,4,57,0,604
+16368,1,0,1,0,0,3
+16369,2,2,3,379,0,143
+16370,1,0,1,0,0,2
+16371,1,0,1,0,0,2
+16372,3,3,6,18,,6
+16373,2,1,2,1,,2
+16374,2,2,3,57,,3
+16375,2,2,3,57,,53
+16391,3,4,7,1,,46
+16392,3,2,5,379,,25
+16393,2,2,3,20,,6
+16394,5,3,16,20,,3
+16395,2,1,2,20,,25
+16396,3,2,5,379,,5
+16397,2,2,3,379,0,140
+16415,3,4,7,1,,47
+16416,3,2,5,379,0,1344
+16417,2,2,3,20,0,19
+16418,3,2,5,379,,20
+16419,2,2,3,20,,4
+16420,5,3,16,20,,2
+16421,2,2,3,19,,33
+16422,3,2,5,379,,5
+16423,2,2,3,379,0,143
+16439,3,4,7,1,,47
+16440,3,2,5,379,,24
+16441,2,2,3,20,,5
+16442,1,0,1,0,0,2
+16443,4,3,10,20,,2
+16444,2,1,2,20,,23
+16445,3,2,5,379,,5
+16446,2,2,3,379,0,151
+16463,3,4,7,1,,47
+16464,3,2,5,379,,35
+16465,2,2,3,20,,22
+16466,1,0,1,0,0,3
+16467,4,2,7,20,,49
+16468,1,0,1,0,0,2
+16469,4,3,14,20,,3
+16470,4,3,8,5,,6
+16471,2,1,2,20,,32
+16472,3,2,5,379,,6
+16473,2,2,3,379,0,143
+16487,1,0,1,0,0,2
+16488,4,2,7,20,,45
+16489,4,3,8,5,,3
+16490,2,1,2,20,,23
+16503,3,4,7,1,,46
+16504,2,1,2,20,,23
+16518,1,0,1,0,0,2
+16519,2,2,3,1,4,331
+16520,2,3,4,1,,8
+16539,2,2,3,379,0,143
+16540,1,0,1,1,0,3
+16541,3,2,5,379,,29
+16542,2,2,3,20,,33
+16543,1,0,1,0,0,2
+16544,1,0,1,0,0,2
+16545,2,2,3,379,0,1367
+16546,2,2,3,379,0,1241
+16547,2,2,3,379,0,1340
+16548,2,2,3,379,0,1375
+16564,3,4,7,1,,46
+16565,3,2,5,379,,24
+16566,2,2,3,20,,5
+16567,2,2,3,379,0,1428
+16568,2,2,3,379,0,1350
+16596,1,0,1,0,0,3
+16597,2,2,3,377,0,137
+16598,2,2,3,377,0,138
+16612,3,2,5,56,0,552
+16622,2,2,3,377,0,1240
+16623,1,0,1,1,0,2
+16624,1,0,1,0,0,1
+16625,2,2,3,377,0,1387
+16626,2,2,3,377,0,1318
+16627,3,2,4,56,0,331
+16628,2,2,3,377,0,1320
+16629,2,2,3,377,0,1342
+16657,1,0,1,0,0,3
+16658,1,0,1,0,0,2
+16659,2,2,3,377,0,134
+16660,2,2,3,377,0,139
+16683,2,2,3,377,0,1383
+16684,1,0,1,0,0,2
+16685,1,0,1,0,0,1
+16686,1,0,1,0,0,1
+16695,2,2,3,377,0,1413
+16696,1,0,1,0,0,1
+16697,1,0,1,0,0,1
+16698,1,0,1,0,0,1
+16706,2,2,3,377,0,1387
+16707,1,0,1,0,0,2
+16708,1,0,1,0,0,2
+16709,1,0,1,0,0,2
+16719,2,2,3,377,0,1420
+16720,1,0,1,0,0,2
+16721,1,0,1,0,0,1
+16722,1,0,1,0,0,1
+16723,1,0,1,0,0,2
+16724,1,0,1,0,0,2
+16725,1,0,1,0,0,1
+16726,2,2,3,377,0,130
+16727,2,2,3,377,0,145
+16736,2,2,3,377,0,1366
+16737,1,0,1,0,0,2
+16738,1,0,1,0,0,2
+16739,1,0,1,0,0,1
+16749,2,2,3,377,0,1345
+16750,1,0,1,0,0,2
+16751,1,0,1,0,0,1
+16752,1,0,1,0,0,1
+16763,2,2,3,377,0,1403
+16764,1,0,1,0,0,1
+16765,1,0,1,0,0,2
+16766,1,0,1,0,0,2
+16774,3,2,5,377,0,1422
+16775,2,2,3,377,0,1363
+16782,3,3,6,56,,36
+16791,3,4,7,56,,19
+16799,3,2,4,377,0,148
+16800,2,2,3,377,0,148
+16808,3,2,4,377,0,148
+16809,2,2,3,377,0,139
+16817,4,2,7,377,0,1383
+16818,2,2,3,377,0,1324
+16826,4,2,5,377,0,1324
+16827,2,2,3,377,0,1370
+16834,1,0,1,0,0,2
+16835,2,1,2,20,,3
+16836,1,0,1,0,0,4
+16837,2,1,2,20,,2
+16844,4,2,6,56,0,124
+16845,2,1,2,2,0,10
+16853,5,2,6,377,4,1965
+16854,2,2,3,377,0,1284
+16882,1,0,1,0,0,2
+16883,2,2,3,377,0,135
+16884,2,2,3,377,0,135
+16898,3,2,4,2,4,369
+16907,5,2,7,377,0,1236
+16908,2,2,3,377,0,1291
+16916,5,2,6,377,4,501
+16917,2,2,3,377,0,142
+16925,5,2,6,377,4,490
+16926,2,2,3,377,0,139
+16934,5,2,7,377,0,1622
+16935,2,2,3,377,0,1382
+16943,5,2,7,377,0,1737
+16944,2,2,3,377,0,1300
+16951,3,1,3,8,4,333
+16952,3,2,4,2,4,353
+16960,3,2,4,2,4,357
+16968,4,2,5,377,0,161
+16969,2,2,3,377,0,147
+16983,1,0,1,0,0,2
+16998,1,0,1,0,0,2
+16999,2,2,3,377,0,132
+17000,2,2,3,377,0,140
+17008,1,0,1,0,0,2
+17036,1,0,1,0,0,2
+17037,1,0,1,0,0,2
+17038,2,2,3,377,0,135
+17039,2,2,3,377,0,141
+17081,1,0,1,0,0,2
+17082,2,2,3,377,0,131
+17083,2,2,3,377,0,140
+17099,3,2,4,56,0,311
+17100,3,2,4,56,,6
+17109,3,2,4,56,0,306
+17110,3,2,4,56,,6
+17119,3,2,4,56,0,305
+17120,3,2,4,56,,9
+17127,3,1,3,8,4,346
+17155,1,0,1,0,0,2
+17156,1,0,1,0,0,2
+17157,1,0,1,0,0,2
+17158,1,0,1,0,0,2
+17159,1,0,1,0,0,2
+17160,1,0,1,0,0,2
+17161,1,0,1,0,0,2
+17162,1,0,1,0,0,1
+17163,1,0,1,0,0,2
+17164,1,0,1,0,0,2
+17165,1,0,1,0,0,2
+17166,1,0,1,0,0,2
+17167,1,0,1,0,0,4
+17168,2,2,3,377,0,155
+17169,2,2,3,377,0,140
+17346,4,2,7,377,0,1680
+17347,2,2,3,377,0,1277
+17375,1,0,1,0,0,2
+17376,1,0,1,0,0,1
+17377,1,0,1,0,0,2
+17378,1,0,1,0,0,2
+17379,2,2,3,377,0,113
+17380,2,2,3,377,0,140
+17422,2,2,3,377,0,1385
+17423,1,0,1,0,0,2
+17424,1,0,1,0,0,2
+17425,1,0,1,0,0,2
+17434,2,2,3,377,0,1381
+17435,1,0,1,0,0,2
+17436,1,0,1,0,0,2
+17437,1,0,1,0,0,1
+17445,2,2,3,377,0,1407
+17446,1,0,1,0,0,1
+17447,1,0,1,0,0,1
+17448,1,0,1,0,0,2
+17458,1,0,1,0,0,2
+17459,1,0,1,0,0,1
+17460,1,0,1,0,0,2
+17461,1,0,1,0,0,2
+17462,1,0,1,0,0,1
+17463,2,2,3,377,0,1386
+17464,1,0,1,0,0,2
+17465,1,0,1,0,0,2
+17466,1,0,1,0,0,2
+17467,1,0,1,0,0,2
+17468,1,0,1,0,0,2
+17469,1,0,1,0,0,2
+17470,2,2,3,377,0,136
+17471,2,2,3,377,0,141
+17480,2,2,3,377,0,1374
+17481,1,0,1,0,0,1
+17482,1,0,1,0,0,1
+17483,1,0,1,0,0,2
+17493,2,2,3,377,0,1349
+17494,1,0,1,0,0,2
+17495,1,0,1,0,0,2
+17496,1,0,1,0,0,1
+17507,2,2,3,377,0,1426
+17508,1,0,1,0,0,2
+17509,1,0,1,0,0,2
+17510,1,0,1,0,0,1
+17522,2,2,3,377,0,1372
+17523,1,0,1,0,0,2
+17524,1,0,1,0,0,2
+17525,1,0,1,0,0,2
+17538,2,2,3,377,0,1427
+17539,1,0,1,0,0,2
+17540,1,0,1,0,0,2
+17541,1,0,1,0,0,2
+17555,2,2,3,377,0,1362
+17556,1,0,1,0,0,2
+17557,1,0,1,0,0,2
+17558,1,0,1,0,0,1
+17573,2,2,3,377,0,1437
+17574,1,0,1,0,0,2
+17575,1,0,1,0,0,2
+17576,1,0,1,0,0,1
+17592,2,2,3,377,0,1382
+17593,1,0,1,0,0,2
+17594,1,0,1,0,0,2
+17595,1,0,1,0,0,2
+17602,2,5,6,56,,3
+17603,2,3,4,1,,2
+17604,3,2,4,56,,2
+17605,2,3,4,56,,2
+17612,2,1,2,8,0,11
+17621,3,2,5,377,0,1439
+17622,2,2,3,377,0,1372
+17630,3,2,4,377,0,1371
+17631,2,2,3,377,0,1376
+17639,3,2,4,377,0,1395
+17640,2,2,3,377,0,1387
+17668,1,0,1,0,0,2
+17669,2,2,3,377,0,153
+17670,2,2,3,377,0,138
+17684,4,5,14,56,,136
+17692,4,5,14,56,,117
+17704,2,2,3,377,0,1333
+17705,3,2,5,377,0,1632
+17706,2,2,3,18,0,145
+17707,3,2,6,56,,3
+17708,3,2,6,56,,2
+17709,3,2,6,56,,2
+17710,3,2,6,56,,2
+17719,3,2,5,377,0,1625
+17720,2,2,3,18,0,166
+17721,3,2,6,56,,3
+17722,3,2,6,56,,2
+17723,3,2,6,56,,5
+17724,3,2,6,56,,3
+17735,2,2,3,377,0,1380
+17736,4,8,17,56,,135
+17744,3,2,4,56,0,45
+17755,2,2,3,377,0,1369
+17756,4,6,13,3,0,136
+17757,4,2,5,56,0,319
+17772,2,2,3,377,0,1300
+17773,2,6,7,1,0,103
+17774,2,1,2,377,0,15
+17775,2,5,6,377,0,175
+17776,2,1,2,54,0,18
+17777,1,0,1,1,0,2
+17778,1,0,1,1,0,2
+17779,1,0,1,1,0,3
+17780,1,0,1,1,0,3
+17781,2,2,3,377,0,142
+17782,2,2,3,377,0,140
+17810,1,0,1,0,0,2
+17811,1,0,1,0,0,2
+17812,1,0,1,0,0,2
+17813,1,0,1,0,0,2
+17814,1,0,1,0,0,2
+17815,1,0,1,0,0,1
+17816,2,2,3,377,0,141
+17817,2,2,3,377,0,139
+17883,3,2,4,377,0,1627
+17884,3,2,4,377,0,1536
+17885,2,3,4,4,0,50
+17892,3,4,7,1,,46
+17920,1,0,1,0,0,2
+17921,1,0,1,0,0,2
+17922,1,0,1,0,0,2
+17923,1,0,1,0,0,2
+17924,1,0,1,0,0,6
+17925,2,2,3,377,0,139
+17926,2,2,3,377,0,136
+17978,4,9,22,56,,145
+18006,1,0,1,0,0,2
+18007,1,0,1,0,0,2
+18008,1,0,1,0,0,2
+18009,2,2,3,377,0,141
+18010,2,2,3,377,0,141
+18062,1,0,1,0,0,2
+18063,1,0,1,0,0,2
+18064,2,2,3,377,0,137
+18065,2,2,3,377,0,145
+18108,1,0,1,0,0,3
+18109,2,2,3,377,0,1421
+18110,2,2,3,377,0,1293
+18138,1,0,1,0,0,1
+18139,2,2,3,377,0,1427
+18140,2,2,3,377,0,1380
+18168,1,0,1,0,0,3
+18169,1,0,1,0,0,2
+18170,1,0,1,0,0,2
+18171,1,0,1,0,0,1
+18172,1,0,1,0,0,2
+18173,1,0,1,0,0,2
+18174,1,0,1,0,0,2
+18175,1,0,1,0,0,2
+18176,1,0,1,0,0,4
+18177,1,0,1,0,0,2
+18178,1,0,1,0,0,2
+18179,1,0,1,0,0,1
+18180,1,0,1,0,0,2
+18181,1,0,1,0,0,1
+18182,1,0,1,0,0,1
+18183,2,2,3,377,0,162
+18184,2,2,3,377,0,149
+18402,3,2,4,56,0,49
+18403,3,2,4,56,0,74
+18404,2,1,2,8,0,17
+18411,2,1,2,1,0,12
+18421,4,2,5,377,4,492
+18422,3,1,3,1,4,327
+18423,2,1,2,377,0,28
+18424,3,3,6,377,0,155
+18425,2,1,2,54,0,25
+18426,2,1,2,3,0,8
+18427,2,1,2,3,0,10
+18428,2,2,3,377,0,145
+18429,2,2,3,377,0,143
+18439,4,2,5,377,4,473
+18440,3,1,3,1,4,329
+18441,2,1,2,377,0,24
+18442,3,3,6,377,0,158
+18443,2,1,2,54,0,25
+18444,2,1,2,1,0,9
+18445,2,1,2,1,0,9
+18446,2,2,3,377,0,144
+18447,2,2,3,377,0,144
+18454,3,2,4,2,4,382
+18462,3,2,4,1,4,336
+18470,1,0,1,0,0,3
+18471,2,2,3,1,,6
+18479,4,4,9,3,0,160
+18480,2,1,2,1,0,10
+18490,2,2,3,377,0,1277
+18491,4,6,11,3,0,178
+18492,2,1,2,1,0,8
+18502,4,2,5,56,,4
+18503,4,2,5,56,,3
+18504,4,2,5,56,,5
+18505,2,1,2,20,,2
+18506,2,1,2,20,,3
+18514,4,2,5,56,0,102
+18515,3,1,3,20,3,382
+18525,2,2,3,1,0,31
+18526,2,4,5,1,0,42
+18554,1,0,1,0,0,2
+18555,1,0,1,0,0,2
+18556,1,0,1,0,0,9
+18557,1,0,1,0,0,2
+18558,1,0,1,0,0,1
+18559,1,0,1,0,0,2
+18560,1,0,1,0,0,3
+18561,2,2,3,377,0,150
+18562,2,2,3,377,0,155
+18639,3,2,4,56,0,335
+18640,3,7,14,56,,132
+18647,3,2,4,56,0,330
+18648,2,1,2,8,0,18
+18655,2,1,2,8,0,18
+18663,2,2,3,377,0,1425
+18664,1,0,1,0,0,2
+18665,1,0,1,0,0,2
+18666,1,0,1,0,0,2
+18675,2,2,3,377,0,1275
+18676,1,0,1,0,0,2
+18677,1,0,1,0,0,2
+18678,1,0,1,0,0,2
+18686,2,2,3,377,0,1412
+18687,1,0,1,0,0,2
+18688,1,0,1,0,0,2
+18689,1,0,1,0,0,2
+18699,1,0,1,0,0,2
+18700,1,0,1,0,0,1
+18701,1,0,1,0,0,1
+18702,1,0,1,0,0,2
+18703,1,0,1,0,0,2
+18704,1,0,1,0,0,1
+18705,1,0,1,0,0,2
+18706,1,0,1,0,0,2
+18707,1,0,1,0,0,1
+18708,1,0,1,0,0,2
+18709,1,0,1,0,0,3
+18710,1,0,1,0,0,2
+18711,1,0,1,0,0,2
+18712,1,0,1,0,0,2
+18713,1,0,1,0,0,2
+18714,1,0,1,0,0,1
+18715,2,2,3,377,0,1447
+18716,1,0,1,0,0,1
+18717,1,0,1,0,0,1
+18718,1,0,1,0,0,1
+18719,1,0,1,0,0,1
+18720,1,0,1,0,0,1
+18721,2,2,3,377,0,140
+18722,2,2,3,377,0,164
+18731,2,2,3,377,0,1392
+18732,1,0,1,0,0,2
+18733,1,0,1,0,0,1
+18734,1,0,1,0,0,1
+18744,2,2,3,377,0,1430
+18745,1,0,1,0,0,1
+18746,1,0,1,0,0,1
+18747,1,0,1,0,0,1
+18758,2,2,3,377,0,1409
+18759,1,0,1,0,0,2
+18760,1,0,1,0,0,2
+18761,1,0,1,0,0,1
+18773,2,2,3,377,0,1468
+18774,1,0,1,0,0,2
+18775,1,0,1,0,0,2
+18776,1,0,1,0,0,2
+18789,2,2,3,377,0,1441
+18790,1,0,1,0,0,2
+18791,1,0,1,0,0,2
+18792,1,0,1,0,0,1
+18806,2,2,3,377,0,1427
+18807,1,0,1,0,0,5
+18808,1,0,1,0,0,2
+18809,1,0,1,0,0,1
+18824,2,2,3,377,0,1455
+18825,1,0,1,0,0,2
+18826,1,0,1,0,0,2
+18827,1,0,1,0,0,2
+18843,2,2,3,377,0,1424
+18844,1,0,1,0,0,2
+18845,1,0,1,0,0,2
+18846,1,0,1,0,0,2
+18863,2,2,3,377,0,1430
+18864,1,0,1,0,0,14
+18865,1,0,1,0,0,2
+18866,1,0,1,0,0,1
+18884,2,2,3,377,0,1421
+18885,1,0,1,0,0,2
+18886,1,0,1,0,0,2
+18887,1,0,1,0,0,2
+18906,2,2,3,377,0,1398
+18907,1,0,1,0,0,2
+18908,1,0,1,0,0,2
+18909,1,0,1,0,0,2
+18929,2,2,3,377,0,1437
+18930,1,0,1,0,0,2
+18931,1,0,1,0,0,1
+18932,1,0,1,0,0,2
+18953,2,2,3,377,0,1405
+18954,1,0,1,0,0,2
+18955,1,0,1,0,0,1
+18956,1,0,1,0,0,2
+18978,2,2,3,377,0,1396
+18979,1,0,1,0,0,1
+18980,1,0,1,0,0,1
+18981,1,0,1,0,0,2
+19004,2,2,3,377,0,1398
+19005,1,0,1,0,0,2
+19006,1,0,1,0,0,1
+19007,1,0,1,0,0,2
+19031,2,2,3,377,0,1423
+19032,1,0,1,0,0,2
+19033,1,0,1,0,0,2
+19034,1,0,1,0,0,2
+19059,2,2,3,377,0,1422
+19060,1,0,1,0,0,2
+19061,1,0,1,0,0,2
+19062,1,0,1,0,0,1
+19088,2,2,3,377,0,1383
+19089,1,0,1,0,0,2
+19090,1,0,1,0,0,2
+19091,1,0,1,0,0,2
+19119,1,0,1,0,0,1
+19120,1,0,1,0,0,1
+19121,1,0,1,0,0,2
+19122,1,0,1,0,0,2
+19123,1,0,1,0,0,1
+19124,1,0,1,0,0,5
+19125,1,0,1,0,0,2
+19126,1,0,1,0,0,2
+19127,1,0,1,0,0,1
+19128,1,0,1,0,0,4
+19129,2,2,3,377,0,144
+19130,2,2,3,377,0,161
+19273,1,0,1,0,0,3
+19274,2,2,3,377,0,1330
+19275,2,2,3,377,0,1360
+19303,1,0,1,0,0,2
+19304,1,0,1,0,0,2
+19305,1,0,1,0,0,2
+19306,1,0,1,0,0,2
+19307,1,0,1,0,0,1
+19308,1,0,1,0,0,2
+19309,1,0,1,0,0,1
+19310,1,0,1,0,0,2
+19311,2,2,3,377,0,169
+19312,2,2,3,377,0,147
+19424,1,0,1,0,0,2
+19425,2,2,3,377,0,142
+19426,2,2,3,377,0,138
+19441,2,2,3,377,0,1352
+19442,1,0,1,0,0,2
+19443,1,0,1,0,0,1
+19444,1,0,1,0,0,1
+19453,2,2,3,377,0,1406
+19454,1,0,1,0,0,2
+19455,1,0,1,0,0,2
+19456,1,0,1,0,0,2
+19464,2,2,3,377,0,1420
+19465,1,0,1,0,0,2
+19466,1,0,1,0,0,2
+19467,1,0,1,0,0,1
+19477,1,0,1,0,0,1
+19478,1,0,1,0,0,1
+19479,1,0,1,0,0,1
+19480,1,0,1,0,0,2
+19481,1,0,1,0,0,1
+19482,1,0,1,0,0,1
+19483,1,0,1,0,0,1
+19484,1,0,1,0,0,1
+19485,1,0,1,0,0,1
+19486,1,0,1,0,0,1
+19487,1,0,1,0,0,2
+19488,1,0,1,0,0,1
+19489,1,0,1,0,0,1
+19490,2,2,3,377,0,1422
+19491,1,0,1,0,0,2
+19492,1,0,1,0,0,2
+19493,1,0,1,0,0,1
+19494,1,0,1,0,0,2
+19495,2,2,3,377,0,140
+19496,2,2,3,377,0,154
+19505,2,2,3,377,0,1400
+19506,1,0,1,0,0,2
+19507,1,0,1,0,0,2
+19508,1,0,1,0,0,2
+19518,2,2,3,377,0,1418
+19519,1,0,1,0,0,2
+19520,1,0,1,0,0,2
+19521,1,0,1,0,0,6
+19532,2,2,3,377,0,1433
+19533,1,0,1,0,0,1
+19534,1,0,1,0,0,1
+19535,1,0,1,0,0,1
+19547,2,2,3,377,0,1404
+19548,1,0,1,0,0,2
+19549,1,0,1,0,0,2
+19550,1,0,1,0,0,1
+19563,2,2,3,377,0,1412
+19564,1,0,1,0,0,2
+19565,1,0,1,0,0,2
+19566,1,0,1,0,0,1
+19580,2,2,3,377,0,1436
+19581,1,0,1,0,0,2
+19582,1,0,1,0,0,2
+19583,1,0,1,0,0,2
+19598,2,2,3,377,0,1451
+19599,1,0,1,0,0,2
+19600,1,0,1,0,0,2
+19601,1,0,1,0,0,2
+19617,2,2,3,377,0,1407
+19618,1,0,1,0,0,2
+19619,1,0,1,0,0,2
+19620,1,0,1,0,0,1
+19637,2,2,3,377,0,1463
+19638,1,0,1,0,0,2
+19639,1,0,1,0,0,2
+19640,1,0,1,0,0,2
+19658,2,2,3,377,0,1417
+19659,1,0,1,0,0,2
+19660,1,0,1,0,0,2
+19661,1,0,1,0,0,2
+19680,2,2,3,377,0,1422
+19681,1,0,1,0,0,2
+19682,1,0,1,0,0,2
+19683,1,0,1,0,0,1
+19703,2,2,3,377,0,1433
+19704,1,0,1,0,0,2
+19705,1,0,1,0,0,2
+19706,1,0,1,0,0,2
+19727,2,2,3,377,0,1422
+19728,1,0,1,0,0,2
+19729,1,0,1,0,0,2
+19730,1,0,1,0,0,2
+19752,2,2,3,377,0,1441
+19753,1,0,1,0,0,2
+19754,1,0,1,0,0,2
+19755,1,0,1,0,0,1
+19763,3,2,5,377,0,1448
+19764,2,2,3,377,0,1405
+19772,3,2,4,56,0,53
+19779,3,2,6,18,4,681
+19780,4,3,8,18,,304
+19789,6,2,16,377,,601
+19790,2,2,3,377,0,1351
+19798,4,2,12,11,4,897
+19806,2,2,3,1,0,70
+19813,2,2,3,56,,3
+19814,3,3,6,56,,73
+19815,3,3,6,56,,66
+19816,3,4,8,56,,56
+19824,4,2,6,377,0,1549
+19825,2,2,3,377,0,1265
+19834,1,0,1,0,0,2
+19835,2,2,3,377,0,169
+19836,2,2,3,377,0,151
+19837,5,2,7,377,4,537
+19838,2,2,3,377,0,147
+19866,1,0,1,0,0,3
+19867,1,0,1,0,0,2
+19868,1,0,1,0,0,2
+19869,1,0,1,0,0,2
+19870,1,0,1,0,0,2
+19871,1,0,1,0,0,2
+19872,1,0,1,0,0,2
+19873,1,0,1,0,0,2
+19874,1,0,1,0,0,2
+19875,1,0,1,0,0,2
+19876,1,0,1,0,0,5
+19877,1,0,1,0,0,5
+19878,1,0,1,0,0,3
+19879,1,0,1,0,0,5
+19880,1,0,1,0,0,2
+19881,1,0,1,0,0,3
+19882,2,2,3,377,0,152
+19883,2,2,3,377,0,153
+20124,5,3,10,377,4,1477
+20125,2,2,3,377,0,1321
+20133,4,2,6,377,,58
+20134,2,2,3,377,0,1351
+20142,6,3,9,377,0,253
+20143,2,2,3,377,0,153
+20150,2,2,3,377,0,1308
+20151,2,2,3,377,0,1333
Index: doc/theses/aaron_moss_PhD/phd/evaluation/per_prob/io1-per-prob.csv
===================================================================
--- doc/theses/aaron_moss_PhD/phd/evaluation/per_prob/io1-per-prob.csv	(revision 92d41a4af1542b1fcfd3bacde48933e4c8519366)
+++ doc/theses/aaron_moss_PhD/phd/evaluation/per_prob/io1-per-prob.csv	(revision 92d41a4af1542b1fcfd3bacde48933e4c8519366)
@@ -0,0 +1,230 @@
+2227,2,2,3,80,0,262
+2238,3,2,5,80,,71
+2253,2,1,2,81,,11
+2254,2,2,3,81,0,24
+2255,2,1,2,31,0,10
+2256,1,0,1,1,0,3
+2257,2,2,3,20,0,39
+2258,2,2,3,81,0,29
+2270,3,2,5,80,,58
+2285,2,1,2,81,,10
+2286,2,2,3,81,0,28
+2287,2,1,2,31,0,12
+2288,1,0,1,1,0,2
+2289,2,2,3,20,0,38
+2290,2,2,3,81,0,28
+2299,3,2,5,80,0,340
+2300,2,2,3,80,0,267
+2309,3,2,5,80,0,315
+2310,2,2,3,80,0,263
+2319,3,2,5,80,0,316
+2320,2,2,3,80,0,269
+2329,3,2,5,80,0,316
+2330,2,2,3,80,0,271
+2339,3,2,5,80,0,318
+2340,2,2,3,80,0,278
+2349,3,2,5,80,0,310
+2350,2,2,3,80,0,284
+2360,1,0,1,0,0,2
+2361,2,2,3,80,0,279
+2362,2,2,3,80,0,272
+2363,1,0,1,0,0,2
+2364,4,2,7,80,0,776
+2365,2,2,3,80,0,236
+2366,2,2,3,80,0,271
+2367,1,0,1,0,0,2
+2368,1,0,1,0,0,2
+2369,2,2,3,10,0,96
+2370,1,0,1,0,0,2
+2371,2,2,3,18,0,142
+2372,2,2,3,18,0,141
+2373,3,2,5,80,0,523
+2374,2,2,3,80,0,275
+2395,1,0,1,0,0,3
+2396,2,2,3,83,0,63
+2397,2,2,3,83,0,30
+2398,2,1,2,83,0,12
+2399,2,2,3,83,0,52
+2400,2,1,2,31,0,11
+2401,1,0,1,0,0,2
+2402,1,0,1,0,0,2
+2403,2,2,3,10,0,97
+2404,1,0,1,0,0,2
+2405,3,2,5,32,0,35
+2406,3,2,5,32,0,34
+2407,3,2,5,83,0,40
+2408,2,2,3,83,0,28
+2418,1,0,1,0,0,2
+2419,2,2,3,80,0,291
+2420,2,2,3,80,0,292
+2421,1,0,1,0,0,2
+2422,4,2,7,80,0,729
+2423,2,2,3,80,0,301
+2424,2,2,3,80,0,287
+2425,1,0,1,0,0,2
+2426,1,0,1,0,0,2
+2427,2,2,3,10,0,103
+2428,1,0,1,0,0,2
+2429,2,2,3,18,0,149
+2430,2,2,3,18,0,148
+2431,3,2,5,80,0,549
+2432,2,2,3,80,0,273
+2441,1,0,1,0,0,2
+2442,2,2,3,80,0,269
+2443,2,2,3,80,0,270
+2444,4,2,7,80,0,852
+2445,2,2,3,80,0,266
+2454,3,2,5,31,0,504
+2455,2,2,3,80,0,279
+2456,2,2,3,80,0,272
+2465,3,2,5,31,0,516
+2466,2,2,3,80,0,276
+2467,2,2,3,80,0,266
+2476,3,2,5,31,0,519
+2477,2,2,3,80,0,276
+2478,2,2,3,80,0,292
+2487,3,2,5,31,0,520
+2488,2,2,3,80,0,274
+2489,2,2,3,80,0,271
+2517,1,0,1,0,0,3
+2518,2,2,3,80,0,29
+2519,2,2,3,80,0,27
+2554,1,0,1,0,0,3
+2555,1,0,1,0,0,2
+2556,2,2,3,80,0,28
+2557,2,2,3,80,0,27
+2600,1,0,1,0,0,2
+2601,2,2,3,80,0,32
+2602,2,2,3,80,0,28
+2616,2,2,3,31,,3
+2623,2,2,3,31,,3
+2651,1,0,1,0,0,2
+2652,2,2,3,80,0,29
+2653,2,2,3,80,0,29
+2667,2,2,3,31,,3
+2674,2,2,3,31,,2
+2702,1,0,1,0,0,2
+2703,2,2,3,80,0,275
+2704,2,2,3,80,0,276
+2713,2,2,3,80,0,281
+2714,1,0,1,0,0,2
+2715,1,0,1,0,0,2
+2716,1,0,1,0,0,2
+2717,2,2,3,80,0,281
+2718,1,0,1,0,0,2
+2719,1,0,1,0,0,2
+2720,1,0,1,0,0,2
+2730,2,2,3,80,0,277
+2731,1,0,1,0,0,2
+2732,1,0,1,0,0,2
+2733,1,0,1,0,0,2
+2734,2,2,3,80,0,279
+2735,1,0,1,0,0,2
+2736,1,0,1,0,0,2
+2737,1,0,1,0,0,2
+2746,2,2,3,80,0,281
+2747,1,0,1,0,0,2
+2748,1,0,1,0,0,2
+2749,1,0,1,0,0,2
+2750,2,2,3,80,0,285
+2751,1,0,1,0,0,2
+2752,1,0,1,0,0,2
+2753,1,0,1,0,0,1
+2764,1,0,1,0,0,3
+2765,1,0,1,0,0,2
+2766,1,0,1,0,0,2
+2767,1,0,1,0,0,2
+2768,1,0,1,0,0,1
+2769,2,2,3,80,0,281
+2770,1,0,1,0,0,2
+2771,1,0,1,0,0,1
+2772,1,0,1,0,0,2
+2773,1,0,1,0,0,1
+2774,2,2,3,80,0,277
+2775,1,0,1,0,0,2
+2776,1,0,1,0,0,2
+2777,1,0,1,0,0,2
+2778,1,0,1,0,0,2
+2779,2,2,3,80,0,32
+2780,2,2,3,80,0,30
+2790,2,2,3,80,0,281
+2791,1,0,1,0,0,2
+2792,1,0,1,0,0,1
+2793,1,0,1,0,0,2
+2794,2,2,3,80,0,279
+2795,1,0,1,0,0,2
+2796,1,0,1,0,0,2
+2797,1,0,1,0,0,2
+2808,2,2,3,80,0,280
+2809,1,0,1,0,0,2
+2810,1,0,1,0,0,2
+2811,1,0,1,0,0,2
+2812,2,2,3,80,0,279
+2813,1,0,1,0,0,2
+2814,1,0,1,0,0,2
+2815,1,0,1,0,0,2
+2827,2,2,3,80,0,279
+2828,1,0,1,0,0,2
+2829,1,0,1,0,0,2
+2830,1,0,1,0,0,2
+2831,2,2,3,80,0,280
+2832,1,0,1,0,0,2
+2833,1,0,1,0,0,2
+2834,1,0,1,0,0,2
+2847,2,2,3,80,0,281
+2848,1,0,1,0,0,2
+2849,1,0,1,0,0,2
+2850,1,0,1,0,0,2
+2851,2,2,3,80,0,280
+2852,1,0,1,0,0,2
+2853,1,0,1,0,0,2
+2854,1,0,1,0,0,1
+2868,2,2,3,80,0,280
+2869,1,0,1,0,0,2
+2870,1,0,1,0,0,2
+2871,1,0,1,0,0,2
+2872,2,2,3,80,0,289
+2873,1,0,1,0,0,2
+2874,1,0,1,0,0,1
+2875,1,0,1,0,0,1
+2890,2,2,3,80,0,279
+2891,1,0,1,0,0,2
+2892,1,0,1,0,0,1
+2893,1,0,1,0,0,1
+2894,2,2,3,80,0,280
+2895,1,0,1,0,0,2
+2896,1,0,1,0,0,2
+2897,1,0,1,0,0,2
+2913,2,2,3,80,0,278
+2914,1,0,1,0,0,2
+2915,1,0,1,0,0,2
+2916,1,0,1,0,0,2
+2917,2,2,3,80,0,277
+2918,1,0,1,0,0,2
+2919,1,0,1,0,0,2
+2920,1,0,1,0,0,1
+2948,1,0,1,0,0,2
+2949,2,2,3,80,0,30
+2950,2,2,3,80,0,29
+2967,2,2,3,80,0,283
+2968,1,0,1,0,0,2
+2969,2,2,3,80,0,276
+2970,1,0,1,0,0,2
+2971,2,2,3,80,0,279
+2972,1,0,1,0,0,2
+2973,10,3,32,57,168,681480
+2974,5,2,9,57,84,66556
+2975,5,2,9,57,84,52501
+2976,7,2,13,57,126,41009
+2977,2,2,3,57,21,1136
+2978,3,2,5,57,42,2111
+2979,23,2,45,57,462,257195
+2980,3,2,5,57,42,9687
+2981,25,2,49,57,504,281080
+2982,3,2,5,57,42,10421
+2983,24,2,47,57,483,254837
+2984,3,2,5,57,42,2209
+2985,10,2,19,57,189,72904
+2986,2,2,3,57,21,1214
+2987,2,2,3,80,0,271
+2988,2,2,3,80,0,291
Index: doc/theses/aaron_moss_PhD/phd/evaluation/per_prob/io2-per-prob.csv
===================================================================
--- doc/theses/aaron_moss_PhD/phd/evaluation/per_prob/io2-per-prob.csv	(revision 92d41a4af1542b1fcfd3bacde48933e4c8519366)
+++ doc/theses/aaron_moss_PhD/phd/evaluation/per_prob/io2-per-prob.csv	(revision 92d41a4af1542b1fcfd3bacde48933e4c8519366)
@@ -0,0 +1,298 @@
+2227,2,2,3,80,0,262
+2238,3,2,5,80,,51
+2253,2,1,2,81,,10
+2254,2,2,3,81,0,23
+2255,2,1,2,31,0,9
+2256,1,0,1,1,0,2
+2257,2,2,3,20,0,47
+2258,2,2,3,81,0,28
+2270,3,2,5,80,,56
+2285,2,1,2,81,,10
+2286,2,2,3,81,0,27
+2287,2,1,2,31,0,10
+2288,1,0,1,1,0,2
+2289,2,2,3,20,0,38
+2290,2,2,3,81,0,27
+2299,3,2,5,80,0,336
+2300,2,2,3,80,0,267
+2309,3,2,5,80,0,314
+2310,2,2,3,80,0,262
+2319,3,2,5,80,0,315
+2320,2,2,3,80,0,284
+2329,3,2,5,80,0,317
+2330,2,2,3,80,0,270
+2339,3,2,5,80,0,316
+2340,2,2,3,80,0,275
+2349,3,2,5,80,0,307
+2350,2,2,3,80,0,265
+2360,1,0,1,0,0,2
+2361,2,2,3,80,0,276
+2362,2,2,3,80,0,271
+2363,1,0,1,0,0,2
+2364,4,2,7,80,0,772
+2365,2,2,3,80,0,259
+2366,2,2,3,80,0,271
+2367,1,0,1,0,0,1
+2368,1,0,1,0,0,2
+2369,2,2,3,10,0,116
+2370,1,0,1,0,0,2
+2371,2,2,3,18,0,142
+2372,2,2,3,18,0,140
+2373,3,2,5,80,0,519
+2374,2,2,3,80,0,278
+2395,1,0,1,0,0,2
+2396,2,2,3,83,0,60
+2397,2,2,3,83,0,29
+2398,2,1,2,83,0,12
+2399,2,2,3,83,0,52
+2400,2,1,2,31,0,11
+2401,1,0,1,0,0,2
+2402,1,0,1,0,0,2
+2403,2,2,3,10,0,97
+2404,1,0,1,0,0,2
+2405,3,2,5,32,0,34
+2406,3,2,5,32,0,33
+2407,3,2,5,83,0,40
+2408,2,2,3,83,0,28
+2418,1,0,1,0,0,3
+2419,2,2,3,80,0,271
+2420,2,2,3,80,0,290
+2421,1,0,1,0,0,2
+2422,4,2,7,80,0,725
+2423,2,2,3,80,0,303
+2424,2,2,3,80,0,287
+2425,1,0,1,0,0,3
+2426,1,0,1,0,0,2
+2427,2,2,3,10,0,103
+2428,1,0,1,0,0,2
+2429,2,2,3,18,0,149
+2430,2,2,3,18,0,163
+2431,3,2,5,80,0,561
+2432,2,2,3,80,0,268
+2441,1,0,1,0,0,2
+2442,2,2,3,80,0,267
+2443,2,2,3,80,0,270
+2444,4,2,7,80,0,844
+2445,2,2,3,80,0,289
+2454,3,2,5,31,0,513
+2455,2,2,3,80,0,280
+2456,2,2,3,80,0,272
+2465,3,2,5,31,0,543
+2466,2,2,3,80,0,274
+2467,2,2,3,80,0,268
+2476,3,2,5,31,0,527
+2477,2,2,3,80,0,277
+2478,2,2,3,80,0,275
+2487,3,2,5,31,0,530
+2488,2,2,3,80,0,280
+2489,2,2,3,80,0,272
+2517,1,0,1,0,0,2
+2518,2,2,3,80,0,29
+2519,2,2,3,80,0,27
+2554,1,0,1,0,0,2
+2555,1,0,1,0,0,2
+2556,2,2,3,80,0,27
+2557,2,2,3,80,0,27
+2600,1,0,1,0,0,2
+2601,2,2,3,80,0,31
+2602,2,2,3,80,0,28
+2616,2,2,3,31,,3
+2623,2,2,3,31,,2
+2651,1,0,1,0,0,2
+2652,2,2,3,80,0,28
+2653,2,2,3,80,0,28
+2667,2,2,3,31,,2
+2674,2,2,3,31,,2
+2702,1,0,1,0,0,2
+2703,2,2,3,80,0,276
+2704,2,2,3,80,0,296
+2713,2,2,3,80,0,280
+2714,1,0,1,0,0,2
+2715,1,0,1,0,0,2
+2716,1,0,1,0,0,2
+2717,2,2,3,80,0,280
+2718,1,0,1,0,0,2
+2719,1,0,1,0,0,2
+2720,1,0,1,0,0,1
+2730,2,2,3,80,0,278
+2731,1,0,1,0,0,1
+2732,1,0,1,0,0,1
+2733,1,0,1,0,0,2
+2734,2,2,3,80,0,280
+2735,1,0,1,0,0,2
+2736,1,0,1,0,0,1
+2737,1,0,1,0,0,2
+2746,2,2,3,80,0,279
+2747,1,0,1,0,0,2
+2748,1,0,1,0,0,1
+2749,1,0,1,0,0,2
+2750,2,2,3,80,0,278
+2751,1,0,1,0,0,2
+2752,1,0,1,0,0,2
+2753,1,0,1,0,0,2
+2764,1,0,1,0,0,2
+2765,1,0,1,0,0,2
+2766,1,0,1,0,0,2
+2767,1,0,1,0,0,2
+2768,1,0,1,0,0,2
+2769,2,2,3,80,0,281
+2770,1,0,1,0,0,2
+2771,1,0,1,0,0,2
+2772,1,0,1,0,0,1
+2773,1,0,1,0,0,2
+2774,2,2,3,80,0,283
+2775,1,0,1,0,0,2
+2776,1,0,1,0,0,1
+2777,1,0,1,0,0,2
+2778,1,0,1,0,0,1
+2779,2,2,3,80,0,31
+2780,2,2,3,80,0,30
+2790,2,2,3,80,0,283
+2791,1,0,1,0,0,2
+2792,1,0,1,0,0,2
+2793,1,0,1,0,0,1
+2794,2,2,3,80,0,281
+2795,1,0,1,0,0,2
+2796,1,0,1,0,0,1
+2797,1,0,1,0,0,2
+2808,2,2,3,80,0,281
+2809,1,0,1,0,0,2
+2810,1,0,1,0,0,2
+2811,1,0,1,0,0,2
+2812,2,2,3,80,0,289
+2813,1,0,1,0,0,2
+2814,1,0,1,0,0,2
+2815,1,0,1,0,0,2
+2827,2,2,3,80,0,281
+2828,1,0,1,0,0,2
+2829,1,0,1,0,0,2
+2830,1,0,1,0,0,1
+2831,2,2,3,80,0,280
+2832,1,0,1,0,0,2
+2833,1,0,1,0,0,1
+2834,1,0,1,0,0,2
+2847,2,2,3,80,0,280
+2848,1,0,1,0,0,2
+2849,1,0,1,0,0,2
+2850,1,0,1,0,0,2
+2851,2,2,3,80,0,281
+2852,1,0,1,0,0,2
+2853,1,0,1,0,0,2
+2854,1,0,1,0,0,2
+2868,2,2,3,80,0,279
+2869,1,0,1,0,0,2
+2870,1,0,1,0,0,2
+2871,1,0,1,0,0,2
+2872,2,2,3,80,0,282
+2873,1,0,1,0,0,2
+2874,1,0,1,0,0,2
+2875,1,0,1,0,0,2
+2890,2,2,3,80,0,280
+2891,1,0,1,0,0,2
+2892,1,0,1,0,0,2
+2893,1,0,1,0,0,2
+2894,2,2,3,80,0,281
+2895,1,0,1,0,0,2
+2896,1,0,1,0,0,2
+2897,1,0,1,0,0,2
+2913,2,2,3,80,0,281
+2914,1,0,1,0,0,2
+2915,1,0,1,0,0,2
+2916,1,0,1,0,0,2
+2917,2,2,3,80,0,278
+2918,1,0,1,0,0,1
+2919,1,0,1,0,0,1
+2920,1,0,1,0,0,1
+2948,1,0,1,0,0,2
+2949,2,2,3,80,0,29
+2950,2,2,3,80,0,28
+2993,2,2,3,80,0,278
+2994,1,0,1,0,0,2
+2995,1,0,1,0,0,1
+2996,2,1,2,80,0,12
+2997,2,2,3,80,0,31
+2998,2,1,2,30,0,11
+2999,1,0,1,0,0,2
+3000,3,2,5,57,42,2732
+3001,21,2,44,57,392,710582
+3002,2,2,3,57,21,30757
+3003,3,2,5,57,42,2273
+3004,26,2,51,57,,574461
+3005,2,2,3,57,21,1903
+3006,3,2,5,57,42,2295
+3007,2,2,3,80,,44
+3008,2,1,2,80,,188
+3009,2,1,2,80,,175
+3010,2,1,2,80,,175
+3011,2,1,2,80,,174
+3012,2,1,2,80,,174
+3013,2,1,2,80,,175
+3014,1,0,1,0,0,2
+3015,2,2,3,80,,48
+3016,2,1,2,80,,174
+3017,2,1,2,80,,174
+3018,2,1,2,80,,173
+3019,2,1,2,80,,174
+3020,2,1,2,80,,182
+3021,2,1,2,80,,176
+3022,1,0,1,0,0,3
+3023,4,2,7,57,35,3119
+3024,2,2,3,57,21,1145
+3025,3,2,5,57,42,2129
+3026,35,2,69,57,,514493
+3027,2,2,3,57,21,23713
+3028,3,2,5,57,42,2250
+3029,4,2,7,57,49,2969
+3030,2,2,3,2,0,12
+3031,5,2,9,57,70,4599
+3032,15,2,29,57,266,149441
+3033,2,2,3,57,21,9656
+3034,4,2,7,57,49,3106
+3035,2,2,3,2,0,13
+3036,5,2,9,57,70,4558
+3037,15,2,29,57,266,148733
+3038,2,2,3,57,21,10026
+3039,3,2,5,57,42,2390
+3040,7,2,13,57,112,64704
+3041,6,2,11,57,91,52328
+3042,10,2,19,57,161,77520
+3043,6,2,11,57,91,56979
+3044,5,2,9,57,84,55363
+3045,2,2,3,57,21,1264
+3046,3,2,5,57,42,2141
+3047,6,2,11,57,91,66731
+3048,6,2,11,57,91,53295
+3049,7,2,13,57,98,67222
+3050,6,2,11,57,91,57016
+3051,7,2,13,57,98,57259
+3052,7,2,13,57,98,57571
+3053,5,2,9,57,84,56157
+3054,2,2,3,57,21,1263
+3055,2,2,3,2,0,16
+3056,7,2,13,57,84,10467
+3057,2,2,3,2,0,30
+3058,7,2,13,57,84,7828
+3059,4,2,7,57,35,3496
+3060,2,2,3,57,21,1119
+3061,2,5,6,80,,78
+3062,2,1,2,80,,181
+3063,2,1,2,80,,177
+3064,2,1,2,80,,176
+3065,2,1,2,80,,177
+3066,1,0,1,0,0,3
+3067,1,0,1,0,0,2
+3068,1,0,1,0,0,2
+3069,1,0,1,0,0,2
+3070,3,4,7,57,,78
+3071,3,2,5,57,28,2497
+3072,2,2,3,2,0,14
+3073,3,2,5,57,28,2350
+3074,8,2,15,57,63,7910
+3075,2,2,3,2,0,17
+3076,2,2,3,2,0,12
+3077,6,2,11,57,77,40404
+3078,2,2,3,80,0,324
+3079,2,2,3,80,0,312
+3106,1,0,1,0,0,3
+3107,2,2,3,80,0,310
+3108,2,2,3,80,0,309
Index: doc/theses/aaron_moss_PhD/phd/evaluation/per_prob/kernel-per-prob.csv
===================================================================
--- doc/theses/aaron_moss_PhD/phd/evaluation/per_prob/kernel-per-prob.csv	(revision 92d41a4af1542b1fcfd3bacde48933e4c8519366)
+++ doc/theses/aaron_moss_PhD/phd/evaluation/per_prob/kernel-per-prob.csv	(revision 92d41a4af1542b1fcfd3bacde48933e4c8519366)
@@ -0,0 +1,3575 @@
+4974,2,2,3,836,0,2200
+4975,2,2,3,836,0,2390
+4976,2,2,3,836,0,2453
+4977,2,2,3,836,0,2396
+4978,2,2,3,836,0,2405
+4979,2,2,3,836,0,2570
+4980,2,2,3,836,0,2450
+4981,2,2,3,836,0,2392
+4982,2,2,3,836,0,2434
+4983,2,2,3,836,0,2369
+4984,2,2,3,836,0,2437
+4985,2,2,3,836,0,2416
+4986,2,2,3,836,0,2433
+4987,2,2,3,836,0,2396
+4988,2,2,3,836,0,2404
+4989,2,2,3,836,0,2424
+4990,2,2,3,836,0,2403
+4991,2,2,3,836,0,2410
+4992,2,2,3,836,0,2423
+4993,2,2,3,836,0,2379
+4994,2,2,3,836,0,2435
+4995,2,2,3,836,0,2427
+4996,2,2,3,836,0,2436
+4997,2,2,3,836,0,2420
+4998,2,2,3,836,0,2410
+4999,2,2,3,836,0,2404
+5000,2,2,3,836,0,2432
+5001,2,2,3,836,0,2420
+5002,2,2,3,836,0,2466
+5003,2,2,3,836,0,2397
+5004,2,2,3,836,0,2444
+5005,2,2,3,836,0,2438
+5006,2,2,3,836,0,2426
+5007,2,2,3,836,0,2421
+5008,2,2,3,836,0,2423
+5009,2,2,3,836,0,2425
+5010,2,2,3,836,0,2452
+5011,2,2,3,836,0,2420
+5012,2,2,3,836,0,2430
+5013,2,2,3,836,0,2431
+5014,2,2,3,836,0,2441
+5015,2,2,3,836,0,2467
+5016,2,2,3,836,0,2465
+5017,2,2,3,836,0,2414
+5018,2,2,3,836,0,2440
+5019,1,0,1,0,0,1
+5020,1,0,1,0,0,2
+5021,2,2,3,836,0,2416
+5022,2,2,3,836,0,2467
+5023,2,2,3,836,0,2427
+5024,2,2,3,836,0,2469
+5025,2,2,3,836,0,2426
+5026,1,0,1,0,0,2
+5027,1,0,1,0,0,2
+5028,2,2,3,836,0,2449
+5029,2,2,3,836,0,2417
+5030,2,2,3,836,0,2475
+5031,2,2,3,836,0,2420
+5032,2,2,3,836,0,2519
+5033,2,2,3,836,0,2416
+5034,2,2,3,836,0,2507
+5035,2,2,3,836,0,2436
+5036,2,2,3,836,0,2456
+5037,2,2,3,836,0,2414
+5038,2,2,3,836,0,2481
+5039,1,0,1,0,0,2
+5040,1,0,1,0,0,1
+5041,1,0,1,0,0,1
+5042,1,0,1,0,0,1
+5043,2,1,2,836,0,43
+5044,2,1,2,836,0,37
+5045,2,1,2,163,0,40
+5046,2,7,8,836,,195
+5047,1,0,1,0,0,3
+5048,1,0,1,0,0,2
+5049,1,0,1,0,0,2
+5050,1,0,1,0,0,2
+5051,1,0,1,0,0,2
+5052,1,0,1,0,0,1
+5053,2,1,2,836,0,53
+5054,2,1,2,836,0,72
+5055,2,1,2,163,0,49
+5056,2,2,3,836,0,2390
+5057,1,0,1,0,0,2
+5058,2,1,2,836,0,39
+5059,2,1,2,836,0,39
+5060,2,1,2,163,0,43
+5071,3,2,5,836,,301
+5086,2,1,2,837,,48
+5087,2,2,3,837,0,280
+5088,2,1,2,164,0,44
+5089,1,0,1,1,0,3
+5090,2,2,3,22,0,41
+5091,2,2,3,837,0,271
+5103,3,2,5,836,,304
+5118,2,1,2,837,,45
+5119,2,2,3,837,0,268
+5120,2,1,2,164,0,44
+5121,1,0,1,1,0,2
+5122,2,2,3,22,0,43
+5123,2,2,3,837,0,269
+5132,3,2,5,836,0,2585
+5133,2,2,3,836,0,2509
+5142,3,2,5,836,0,2571
+5143,2,2,3,836,0,2460
+5152,3,2,5,836,0,2510
+5153,2,2,3,836,0,2458
+5162,3,2,5,836,0,2459
+5163,2,2,3,836,0,2495
+5172,3,2,5,836,0,2469
+5173,2,2,3,836,0,2436
+5182,3,2,5,836,0,2569
+5183,2,2,3,836,0,2516
+5193,1,0,1,0,0,2
+5194,2,2,3,836,0,2493
+5195,2,2,3,836,0,2526
+5196,1,0,1,0,0,1
+5197,4,2,7,836,0,2920
+5198,2,2,3,836,0,2540
+5199,2,2,3,836,0,2481
+5200,1,0,1,0,0,1
+5201,1,0,1,0,0,2
+5202,2,2,3,10,0,82
+5203,1,0,1,0,0,1
+5204,2,2,3,19,0,150
+5205,2,2,3,19,0,168
+5206,3,2,5,836,0,2685
+5207,2,2,3,836,0,2403
+5228,1,0,1,0,0,2
+5229,2,2,3,839,0,277
+5230,2,2,3,839,0,272
+5231,2,1,2,839,0,50
+5232,2,2,3,839,0,306
+5233,2,1,2,164,0,49
+5234,1,0,1,0,0,2
+5235,1,0,1,0,0,2
+5236,2,2,3,10,0,113
+5237,1,0,1,0,0,2
+5238,3,2,5,170,0,99
+5239,3,2,5,170,0,91
+5240,3,2,5,839,0,300
+5241,2,2,3,839,0,270
+5251,1,0,1,0,0,2
+5252,2,2,3,836,0,2292
+5253,2,2,3,836,0,2444
+5254,1,0,1,0,0,2
+5255,4,2,7,836,0,2810
+5256,2,2,3,836,0,2422
+5257,2,2,3,836,0,2520
+5258,1,0,1,0,0,2
+5259,1,0,1,0,0,1
+5260,2,2,3,10,0,83
+5261,1,0,1,0,0,1
+5262,2,2,3,19,0,149
+5263,2,2,3,19,0,165
+5264,3,2,5,836,0,2610
+5265,2,2,3,836,0,2420
+5274,1,0,1,0,0,2
+5275,2,2,3,836,0,2416
+5276,2,2,3,836,0,2415
+5277,4,2,7,836,0,2929
+5278,2,2,3,836,0,2455
+5287,3,2,5,169,0,1050
+5288,2,2,3,836,0,2324
+5289,2,2,3,836,0,2399
+5298,3,2,5,169,0,1033
+5299,2,2,3,836,0,2305
+5300,2,2,3,836,0,2469
+5309,3,2,5,169,0,1041
+5310,2,2,3,836,0,2297
+5311,2,2,3,836,0,2420
+5320,3,2,5,169,0,1045
+5321,2,2,3,836,0,2351
+5322,2,2,3,836,0,2438
+5350,1,0,1,0,0,1
+5351,1,0,1,0,0,2
+5352,2,2,3,836,0,251
+5353,2,2,3,836,0,297
+5377,2,2,3,836,0,2346
+5378,1,0,1,0,0,1
+5379,1,0,1,0,0,2
+5380,1,0,1,0,0,2
+5381,2,2,3,836,0,2434
+5382,1,0,1,0,0,2
+5383,1,0,1,0,0,2
+5384,1,0,1,0,0,2
+5394,2,2,3,836,0,2470
+5395,1,0,1,0,0,2
+5396,1,0,1,0,0,1
+5397,1,0,1,0,0,1
+5398,2,2,3,836,0,2435
+5399,1,0,1,0,0,1
+5400,1,0,1,0,0,1
+5401,1,0,1,0,0,1
+5410,2,2,3,836,0,2484
+5411,1,0,1,0,0,2
+5412,1,0,1,0,0,2
+5413,1,0,1,0,0,2
+5414,2,2,3,836,0,2431
+5415,1,0,1,0,0,2
+5416,1,0,1,0,0,1
+5417,1,0,1,0,0,1
+5428,2,2,3,836,0,2477
+5429,1,0,1,0,0,2
+5430,1,0,1,0,0,2
+5431,1,0,1,0,0,2
+5432,1,0,1,0,0,2
+5433,1,0,1,0,0,1
+5434,1,0,1,0,0,1
+5435,1,0,1,0,0,1
+5436,2,2,3,836,0,2468
+5437,1,0,1,0,0,2
+5438,1,0,1,0,0,1
+5439,1,0,1,0,0,1
+5440,1,0,1,0,0,2
+5441,2,2,3,836,0,243
+5442,2,2,3,836,0,290
+5452,2,2,3,836,0,2395
+5453,1,0,1,0,0,1
+5454,1,0,1,0,0,1
+5455,1,0,1,0,0,1
+5456,2,2,3,836,0,2468
+5457,1,0,1,0,0,1
+5458,1,0,1,0,0,1
+5459,1,0,1,0,0,4
+5470,2,2,3,836,0,2510
+5471,1,0,1,0,0,2
+5472,1,0,1,0,0,1
+5473,1,0,1,0,0,1
+5474,2,2,3,836,0,2495
+5475,1,0,1,0,0,2
+5476,1,0,1,0,0,1
+5477,1,0,1,0,0,1
+5489,2,2,3,836,0,2630
+5490,1,0,1,0,0,2
+5491,1,0,1,0,0,1
+5492,1,0,1,0,0,1
+5493,2,2,3,836,0,2490
+5494,1,0,1,0,0,2
+5495,1,0,1,0,0,2
+5496,1,0,1,0,0,2
+5509,2,2,3,836,0,2458
+5510,1,0,1,0,0,2
+5511,1,0,1,0,0,1
+5512,1,0,1,0,0,2
+5513,2,2,3,836,0,2496
+5514,1,0,1,0,0,1
+5515,1,0,1,0,0,2
+5516,1,0,1,0,0,1
+5530,2,2,3,836,0,2481
+5531,1,0,1,0,0,1
+5532,1,0,1,0,0,1
+5533,1,0,1,0,0,1
+5534,2,2,3,836,0,2475
+5535,1,0,1,0,0,2
+5536,1,0,1,0,0,1
+5537,1,0,1,0,0,1
+5545,2,2,3,836,0,2512
+5546,1,0,1,0,0,1
+5547,1,0,1,0,0,2
+5548,1,0,1,0,0,2
+5557,2,2,3,836,0,2474
+5558,1,0,1,0,0,2
+5559,1,0,1,0,0,1
+5560,1,0,1,0,0,1
+5568,2,2,3,836,0,2494
+5569,1,0,1,0,0,2
+5570,1,0,1,0,0,2
+5571,1,0,1,0,0,2
+5581,2,2,3,836,0,2455
+5582,1,0,1,0,0,1
+5583,1,0,1,0,0,1
+5584,1,0,1,0,0,1
+5585,1,0,1,0,0,1
+5586,2,2,3,836,0,233
+5587,2,2,3,836,0,275
+5596,2,2,3,836,0,2391
+5597,1,0,1,0,0,2
+5598,1,0,1,0,0,2
+5599,1,0,1,0,0,2
+5613,1,0,1,0,0,2
+5628,1,0,1,0,0,1
+5629,2,2,3,836,0,247
+5630,2,2,3,836,0,280
+5638,1,0,1,0,0,2
+5666,1,0,1,0,0,2
+5667,1,0,1,0,0,3
+5668,2,2,3,836,0,281
+5669,2,2,3,836,0,263
+5712,1,0,1,0,0,3
+5713,1,0,1,0,0,2
+5714,2,2,3,836,0,267
+5715,2,2,3,836,0,274
+5758,1,0,1,0,0,2
+5759,1,0,1,0,0,8
+5760,2,2,3,836,0,266
+5761,2,2,3,836,0,262
+5804,1,0,1,0,0,2
+5805,1,0,1,0,0,5
+5806,1,0,1,0,0,2
+5807,2,2,3,836,0,266
+5808,2,2,3,836,0,274
+5860,1,0,1,0,0,3
+5861,2,2,3,836,0,2329
+5862,2,2,3,836,0,2477
+5871,2,2,3,836,0,2473
+5872,1,0,1,0,0,2
+5873,1,0,1,0,0,2
+5874,1,0,1,0,0,2
+5875,2,2,3,836,0,2481
+5876,1,0,1,0,0,2
+5877,1,0,1,0,0,2
+5878,1,0,1,0,0,2
+5888,2,2,3,836,0,2471
+5889,1,0,1,0,0,2
+5890,1,0,1,0,0,2
+5891,1,0,1,0,0,2
+5892,2,2,3,836,0,2522
+5893,1,0,1,0,0,2
+5894,1,0,1,0,0,1
+5895,1,0,1,0,0,1
+5904,2,2,3,836,0,2597
+5905,1,0,1,0,0,2
+5906,1,0,1,0,0,1
+5907,1,0,1,0,0,1
+5908,2,2,3,836,0,2539
+5909,1,0,1,0,0,2
+5910,1,0,1,0,0,2
+5911,1,0,1,0,0,2
+5922,1,0,1,0,0,2
+5923,1,0,1,0,0,2
+5924,1,0,1,0,0,1
+5925,1,0,1,0,0,2
+5926,1,0,1,0,0,1
+5927,1,0,1,0,0,2
+5928,1,0,1,0,0,1
+5929,1,0,1,0,0,1
+5930,1,0,1,0,0,2
+5931,1,0,1,0,0,1
+5932,1,0,1,0,0,2
+5933,1,0,1,0,0,1
+5934,1,0,1,0,0,2
+5935,1,0,1,0,0,2
+5936,1,0,1,0,0,1
+5937,1,0,1,0,0,1
+5938,1,0,1,0,0,1
+5939,1,0,1,0,0,1
+5940,1,0,1,0,0,2
+5941,2,2,3,836,0,2493
+5942,1,0,1,0,0,2
+5943,1,0,1,0,0,1
+5944,1,0,1,0,0,1
+5945,1,0,1,0,0,1
+5946,1,0,1,0,0,1
+5947,1,0,1,0,0,1
+5948,1,0,1,0,0,2
+5949,1,0,1,0,0,1
+5950,1,0,1,0,0,2
+5951,1,0,1,0,0,1
+5952,1,0,1,0,0,1
+5953,1,0,1,0,0,1
+5954,2,2,3,836,0,2491
+5955,1,0,1,0,0,1
+5956,1,0,1,0,0,2
+5957,1,0,1,0,0,1
+5958,1,0,1,0,0,1
+5959,2,2,3,836,0,259
+5960,2,2,3,836,0,286
+5970,2,2,3,836,0,2397
+5971,1,0,1,0,0,2
+5972,1,0,1,0,0,2
+5973,1,0,1,0,0,2
+5974,2,2,3,836,0,2512
+5975,1,0,1,0,0,1
+5976,1,0,1,0,0,4
+5977,1,0,1,0,0,2
+5988,2,2,3,836,0,2530
+5989,1,0,1,0,0,2
+5990,1,0,1,0,0,1
+5991,1,0,1,0,0,1
+5992,2,2,3,836,0,2481
+5993,1,0,1,0,0,1
+5994,1,0,1,0,0,1
+5995,1,0,1,0,0,1
+6007,2,2,3,836,0,2522
+6008,1,0,1,0,0,2
+6009,1,0,1,0,0,1
+6010,1,0,1,0,0,1
+6011,2,2,3,836,0,2475
+6012,1,0,1,0,0,2
+6013,1,0,1,0,0,1
+6014,1,0,1,0,0,1
+6027,2,2,3,836,0,2631
+6028,1,0,1,0,0,2
+6029,1,0,1,0,0,1
+6030,1,0,1,0,0,1
+6031,2,2,3,836,0,2477
+6032,1,0,1,0,0,2
+6033,1,0,1,0,0,2
+6034,1,0,1,0,0,2
+6048,2,2,3,836,0,2507
+6049,1,0,1,0,0,1
+6050,1,0,1,0,0,1
+6051,1,0,1,0,0,1
+6052,2,2,3,836,0,2492
+6053,1,0,1,0,0,2
+6054,1,0,1,0,0,1
+6055,1,0,1,0,0,1
+6070,2,2,3,836,0,2538
+6071,1,0,1,0,0,2
+6072,1,0,1,0,0,2
+6073,1,0,1,0,0,2
+6074,2,2,3,836,0,2503
+6075,1,0,1,0,0,1
+6076,1,0,1,0,0,1
+6077,1,0,1,0,0,1
+6093,2,2,3,836,0,2519
+6094,1,0,1,0,0,1
+6095,1,0,1,0,0,1
+6096,1,0,1,0,0,1
+6097,2,2,3,836,0,2480
+6098,1,0,1,0,0,1
+6099,1,0,1,0,0,7
+6100,1,0,1,0,0,1
+6117,2,2,3,836,0,2520
+6118,1,0,1,0,0,2
+6119,1,0,1,0,0,2
+6120,1,0,1,0,0,1
+6121,2,2,3,836,0,2452
+6122,1,0,1,0,0,1
+6123,1,0,1,0,0,1
+6124,1,0,1,0,0,1
+6142,2,2,3,836,0,2487
+6143,1,0,1,0,0,1
+6144,1,0,1,0,0,1
+6145,1,0,1,0,0,1
+6146,2,2,3,836,0,2463
+6147,1,0,1,0,0,2
+6148,1,0,1,0,0,2
+6149,1,0,1,0,0,1
+6168,2,2,3,836,0,2525
+6169,1,0,1,0,0,1
+6170,1,0,1,0,0,2
+6171,1,0,1,0,0,1
+6172,2,2,3,836,0,2536
+6173,1,0,1,0,0,2
+6174,1,0,1,0,0,4
+6175,1,0,1,0,0,2
+6195,2,2,3,836,0,2521
+6196,1,0,1,0,0,1
+6197,1,0,1,0,0,1
+6198,1,0,1,0,0,1
+6199,2,2,3,836,0,2542
+6200,1,0,1,0,0,2
+6201,1,0,1,0,0,1
+6202,1,0,1,0,0,1
+6223,2,2,3,836,0,2497
+6224,1,0,1,0,0,1
+6225,1,0,1,0,0,1
+6226,1,0,1,0,0,2
+6227,2,2,3,836,0,2543
+6228,1,0,1,0,0,2
+6229,1,0,1,0,0,1
+6230,1,0,1,0,0,1
+6252,2,2,3,836,0,2548
+6253,1,0,1,0,0,1
+6254,1,0,1,0,0,1
+6255,1,0,1,0,0,1
+6256,2,2,3,836,0,2503
+6257,1,0,1,0,0,1
+6258,1,0,1,0,0,1
+6259,1,0,1,0,0,2
+6282,2,2,3,836,0,2498
+6283,1,0,1,0,0,2
+6284,1,0,1,0,0,1
+6285,1,0,1,0,0,1
+6286,2,2,3,836,0,2484
+6287,1,0,1,0,0,2
+6288,1,0,1,0,0,2
+6289,1,0,1,0,0,1
+6313,2,2,3,836,0,2577
+6314,1,0,1,0,0,2
+6315,1,0,1,0,0,2
+6316,1,0,1,0,0,1
+6317,2,2,3,836,0,2566
+6318,1,0,1,0,0,2
+6319,1,0,1,0,0,1
+6320,1,0,1,0,0,1
+6345,2,2,3,836,0,2488
+6346,1,0,1,0,0,1
+6347,1,0,1,0,0,1
+6348,1,0,1,0,0,1
+6349,2,2,3,836,0,2535
+6350,1,0,1,0,0,2
+6351,1,0,1,0,0,2
+6352,1,0,1,0,0,1
+6378,2,2,3,836,0,2666
+6379,1,0,1,0,0,4
+6380,1,0,1,0,0,2
+6381,1,0,1,0,0,1
+6382,2,2,3,836,0,2553
+6383,1,0,1,0,0,2
+6384,1,0,1,0,0,2
+6385,1,0,1,0,0,2
+6412,2,2,3,836,0,2639
+6413,1,0,1,0,0,1
+6414,1,0,1,0,0,1
+6415,1,0,1,0,0,1
+6416,2,2,3,836,0,2523
+6417,1,0,1,0,0,2
+6418,1,0,1,0,0,1
+6419,1,0,1,0,0,1
+6447,2,2,3,836,0,2525
+6448,1,0,1,0,0,1
+6449,1,0,1,0,0,1
+6450,1,0,1,0,0,1
+6451,2,2,3,836,0,2521
+6452,1,0,1,0,0,2
+6453,1,0,1,0,0,1
+6454,1,0,1,0,0,1
+6483,2,2,3,836,0,2513
+6484,1,0,1,0,0,2
+6485,1,0,1,0,0,2
+6486,1,0,1,0,0,2
+6487,2,2,3,836,0,2540
+6488,1,0,1,0,0,1
+6489,1,0,1,0,0,1
+6490,1,0,1,0,0,1
+6520,2,2,3,836,0,2542
+6521,1,0,1,0,0,1
+6522,1,0,1,0,0,1
+6523,1,0,1,0,0,1
+6524,2,2,3,836,0,2528
+6525,1,0,1,0,0,2
+6526,1,0,1,0,0,2
+6527,1,0,1,0,0,1
+6558,2,2,3,836,0,2510
+6559,1,0,1,0,0,2
+6560,1,0,1,0,0,2
+6561,1,0,1,0,0,2
+6562,2,2,3,836,0,2510
+6563,1,0,1,0,0,1
+6564,1,0,1,0,0,1
+6565,1,0,1,0,0,1
+6597,2,2,3,836,0,2557
+6598,1,0,1,0,0,1
+6599,1,0,1,0,0,1
+6600,1,0,1,0,0,2
+6601,2,2,3,836,0,2508
+6602,1,0,1,0,0,2
+6603,1,0,1,0,0,2
+6604,1,0,1,0,0,1
+6637,2,2,3,836,0,2551
+6638,1,0,1,0,0,2
+6639,1,0,1,0,0,2
+6640,1,0,1,0,0,1
+6641,2,2,3,836,0,2505
+6642,1,0,1,0,0,1
+6643,1,0,1,0,0,1
+6644,1,0,1,0,0,1
+6678,2,2,3,836,0,2540
+6679,1,0,1,0,0,1
+6680,1,0,1,0,0,1
+6681,1,0,1,0,0,1
+6682,2,2,3,836,0,2514
+6683,1,0,1,0,0,1
+6684,1,0,1,0,0,1
+6685,1,0,1,0,0,1
+6720,2,2,3,836,0,2529
+6721,1,0,1,0,0,1
+6722,1,0,1,0,0,1
+6723,1,0,1,0,0,1
+6724,2,2,3,836,0,2509
+6725,1,0,1,0,0,2
+6726,1,0,1,0,0,1
+6727,1,0,1,0,0,1
+6763,2,2,3,836,0,2522
+6764,1,0,1,0,0,1
+6765,1,0,1,0,0,1
+6766,1,0,1,0,0,1
+6767,2,2,3,836,0,2507
+6768,1,0,1,0,0,1
+6769,1,0,1,0,0,1
+6770,1,0,1,0,0,2
+6807,2,2,3,836,0,2553
+6808,1,0,1,0,0,2
+6809,1,0,1,0,0,2
+6810,1,0,1,0,0,1
+6811,2,2,3,836,0,2527
+6812,1,0,1,0,0,2
+6813,1,0,1,0,0,2
+6814,1,0,1,0,0,1
+6852,2,2,3,836,0,2557
+6853,1,0,1,0,0,1
+6854,1,0,1,0,0,1
+6855,1,0,1,0,0,1
+6856,2,2,3,836,0,2529
+6857,1,0,1,0,0,1
+6858,1,0,1,0,0,1
+6859,1,0,1,0,0,2
+6887,1,0,1,0,0,1
+6888,2,2,3,836,0,2514
+6889,2,2,3,836,0,2520
+6917,1,0,1,0,0,2
+6918,2,2,3,836,0,2511
+6919,2,2,3,836,0,2580
+6947,1,0,1,0,0,2
+6948,1,0,1,0,0,2
+6949,1,0,1,0,0,2
+6950,1,0,1,0,0,1
+6951,1,0,1,0,0,1
+6952,1,0,1,0,0,1
+6953,1,0,1,0,0,1
+6954,1,0,1,0,0,2
+6955,1,0,1,0,0,2
+6956,1,0,1,0,0,2
+6957,1,0,1,0,0,1
+6958,1,0,1,0,0,1
+6959,1,0,1,0,0,1
+6960,1,0,1,0,0,2
+6961,2,2,3,836,0,258
+6962,2,2,3,836,0,296
+7179,1,0,1,0,0,3
+7180,2,2,3,836,0,2443
+7181,2,2,3,836,0,2522
+7209,1,0,1,0,0,2
+7210,1,0,1,0,0,2
+7211,2,2,3,836,0,242
+7212,2,2,3,836,0,279
+7255,1,0,1,0,0,2
+7256,2,2,3,836,0,2466
+7257,2,2,3,836,0,2499
+7285,1,0,1,0,0,2
+7286,1,0,1,0,0,2
+7287,2,2,3,836,0,241
+7288,2,2,3,836,0,276
+7317,1,0,1,0,0,2
+7332,1,0,1,0,0,2
+7333,2,2,3,836,0,297
+7334,2,2,3,836,0,269
+7342,1,0,1,0,0,2
+7356,1,0,1,0,0,2
+7371,1,0,1,0,0,2
+7372,2,2,3,836,0,296
+7373,2,2,3,836,0,276
+7381,1,0,1,0,0,3
+7395,1,0,1,0,0,2
+7410,1,0,1,0,0,4
+7411,2,2,3,836,0,288
+7412,2,2,3,836,0,276
+7420,1,0,1,0,0,3
+7434,1,0,1,0,0,1
+7449,1,0,1,0,0,2
+7450,2,2,3,836,0,289
+7451,2,2,3,836,0,270
+7459,1,0,1,0,0,2
+7473,1,0,1,0,0,2
+7488,1,0,1,0,0,2
+7489,2,2,3,836,0,281
+7490,2,2,3,836,0,277
+7498,1,0,1,0,0,3
+7512,1,0,1,0,0,2
+7527,1,0,1,0,0,2
+7528,2,2,3,836,0,270
+7529,2,2,3,836,0,274
+7537,1,0,1,0,0,2
+7551,1,0,1,0,0,2
+7566,1,0,1,0,0,2
+7567,2,2,3,836,0,290
+7568,2,2,3,836,0,275
+7576,1,0,1,0,0,2
+7590,1,0,1,0,0,5
+7605,1,0,1,0,0,2
+7606,2,2,3,836,0,272
+7607,2,2,3,836,0,287
+7615,1,0,1,0,0,2
+7629,1,0,1,0,0,2
+7644,1,0,1,0,0,5
+7645,2,2,3,836,0,274
+7646,2,2,3,836,0,272
+7654,1,0,1,0,0,2
+7668,1,0,1,0,0,2
+7683,1,0,1,0,0,2
+7684,2,2,3,836,0,297
+7685,2,2,3,836,0,273
+7693,1,0,1,0,0,2
+7707,1,0,1,0,0,2
+7722,1,0,1,0,0,2
+7723,2,2,3,836,0,273
+7724,2,2,3,836,0,295
+7732,1,0,1,0,0,2
+7746,1,0,1,0,0,1
+7761,1,0,1,0,0,2
+7762,2,2,3,836,0,291
+7763,2,2,3,836,0,269
+7771,1,0,1,0,0,2
+7785,1,0,1,0,0,5
+7800,1,0,1,0,0,2
+7801,2,2,3,836,0,274
+7802,2,2,3,836,0,294
+7810,1,0,1,0,0,2
+7824,1,0,1,0,0,2
+7839,1,0,1,0,0,2
+7840,2,2,3,836,0,268
+7841,2,2,3,836,0,271
+7849,1,0,1,0,0,3
+7877,1,0,1,0,0,2
+7878,1,0,1,0,0,1
+7879,1,0,1,0,0,2
+7880,1,0,1,0,0,5
+7881,1,0,1,0,0,2
+7882,1,0,1,0,0,2
+7883,1,0,1,0,0,2
+7884,1,0,1,0,0,2
+7885,1,0,1,0,0,2
+7886,1,0,1,0,0,1
+7887,1,0,1,0,0,2
+7888,1,0,1,0,0,1
+7889,1,0,1,0,0,2
+7890,1,0,1,0,0,1
+7891,1,0,1,0,0,5
+7892,1,0,1,0,0,2
+7893,2,2,3,836,0,269
+7894,2,2,3,836,0,262
+8049,1,0,1,0,0,2
+8050,2,2,3,836,0,2386
+8051,2,2,3,836,0,2738
+8059,2,2,3,836,0,2415
+8060,1,0,1,0,0,2
+8061,1,0,1,0,0,2
+8062,1,0,1,0,0,1
+8071,2,2,3,836,0,2501
+8072,1,0,1,0,0,1
+8073,1,0,1,0,0,1
+8074,1,0,1,0,0,2
+8082,2,2,3,836,0,2513
+8083,1,0,1,0,0,4
+8084,1,0,1,0,0,2
+8085,1,0,1,0,0,1
+8095,2,2,3,836,0,2503
+8096,1,0,1,0,0,2
+8097,1,0,1,0,0,1
+8098,1,0,1,0,0,1
+8099,1,0,1,0,0,1
+8100,2,2,3,836,0,263
+8101,2,2,3,836,0,268
+8110,2,2,3,836,0,2374
+8111,1,0,1,0,0,2
+8112,1,0,1,0,0,1
+8113,1,0,1,0,0,1
+8141,1,0,1,0,0,1
+8142,1,0,1,0,0,1
+8143,2,2,3,836,0,263
+8144,2,2,3,836,0,265
+8173,1,0,1,0,0,2
+8188,1,0,1,0,0,2
+8189,2,2,3,836,0,273
+8190,2,2,3,836,0,258
+8198,1,0,1,0,0,2
+8226,1,0,1,0,0,2
+8227,1,0,1,0,0,3
+8228,1,0,1,0,0,2
+8229,2,2,3,836,0,261
+8230,2,2,3,836,0,259
+8282,1,0,1,0,0,2
+8283,1,0,1,0,0,2
+8284,2,2,3,836,0,260
+8285,2,2,3,836,0,261
+8328,1,0,1,0,0,7
+8329,1,0,1,0,0,3
+8330,2,2,3,836,0,260
+8331,2,2,3,836,0,258
+8374,1,0,1,0,0,2
+8375,1,0,1,0,0,4
+8376,1,0,1,0,0,5
+8377,2,2,3,836,0,272
+8378,2,2,3,836,0,260
+8430,1,0,1,0,0,2
+8431,1,0,1,0,0,2
+8432,1,0,1,0,0,4
+8433,1,0,1,0,0,2
+8434,1,0,1,0,0,2
+8435,2,2,3,836,0,262
+8436,2,2,3,836,0,255
+8509,1,0,1,0,0,2
+8510,1,0,1,0,0,2
+8511,1,0,1,0,0,1
+8512,2,2,3,836,0,268
+8513,2,2,3,836,0,254
+8565,1,0,1,0,0,2
+8566,1,0,1,0,0,2
+8567,1,0,1,0,0,1
+8568,2,2,3,836,0,256
+8569,2,2,3,836,0,253
+8621,1,0,1,0,0,2
+8622,1,0,1,0,0,2
+8623,2,2,3,836,0,271
+8624,2,2,3,836,0,267
+8653,1,0,1,0,0,2
+8668,1,0,1,0,0,2
+8669,2,2,3,836,0,278
+8670,2,2,3,836,0,266
+8678,1,0,1,0,0,2
+8706,1,0,1,0,0,2
+8707,1,0,1,0,0,2
+8708,1,0,1,0,0,2
+8709,1,0,1,0,0,2
+8710,2,2,3,836,0,274
+8711,2,2,3,836,0,270
+8773,1,0,1,0,0,2
+8774,2,2,3,836,0,2388
+8775,2,2,3,836,0,2494
+8803,1,0,1,0,0,2
+8804,2,2,3,836,0,2551
+8805,2,2,3,836,0,2491
+8833,1,0,1,0,0,2
+8834,2,2,3,836,0,2508
+8835,2,2,3,836,0,2503
+8863,1,0,1,0,0,2
+8864,2,2,3,836,0,2578
+8865,2,2,3,836,0,2537
+8893,1,0,1,0,0,2
+8894,2,2,3,836,0,2523
+8895,2,2,3,836,0,2527
+8923,1,0,1,0,0,2
+8924,2,2,3,836,0,2505
+8925,2,2,3,836,0,2564
+8953,1,0,1,0,0,1
+8954,2,2,3,836,0,2546
+8955,2,2,3,836,0,2484
+8983,1,0,1,0,0,2
+8984,1,0,1,0,0,1
+8985,2,2,3,836,0,242
+8986,2,2,3,836,0,282
+9015,1,0,1,0,0,2
+9030,1,0,1,0,0,5
+9031,2,2,3,836,0,291
+9032,2,2,3,836,0,278
+9040,1,0,1,0,0,3
+9068,1,0,1,0,0,2
+9069,1,0,1,0,0,2
+9070,1,0,1,0,0,2
+9071,1,0,1,0,0,2
+9072,2,2,3,836,0,318
+9073,2,2,3,836,0,294
+9135,1,0,1,0,0,3
+9136,2,2,3,836,0,2365
+9137,2,2,3,836,0,2548
+9151,1,0,1,0,0,2
+9166,1,0,1,0,0,1
+9167,2,2,3,836,0,242
+9168,2,2,3,836,0,281
+9176,1,0,1,0,0,2
+9204,1,0,1,0,0,2
+9205,1,0,1,0,0,2
+9206,1,0,1,0,0,5
+9207,1,0,1,0,0,2
+9208,2,2,3,836,0,296
+9209,2,2,3,836,0,269
+9251,2,2,3,836,0,2364
+9252,1,0,1,0,0,1
+9253,1,0,1,0,0,2
+9254,1,0,1,0,0,1
+9263,2,2,3,836,0,2473
+9264,1,0,1,0,0,1
+9265,1,0,1,0,0,1
+9266,1,0,1,0,0,1
+9274,2,2,3,836,0,2516
+9275,1,0,1,0,0,1
+9276,1,0,1,0,0,1
+9277,1,0,1,0,0,2
+9287,1,0,1,0,0,2
+9288,1,0,1,0,0,2
+9289,1,0,1,0,0,1
+9290,1,0,1,0,0,1
+9291,2,2,3,836,0,2533
+9292,1,0,1,0,0,2
+9293,1,0,1,0,0,2
+9294,1,0,1,0,0,1
+9295,1,0,1,0,0,1
+9296,2,2,3,836,0,248
+9297,2,2,3,836,0,280
+9306,2,2,3,836,0,2421
+9307,1,0,1,0,0,2
+9308,1,0,1,0,0,1
+9309,1,0,1,0,0,1
+9319,2,2,3,836,0,2499
+9320,1,0,1,0,0,2
+9321,1,0,1,0,0,2
+9322,1,0,1,0,0,1
+9333,2,2,3,836,0,2513
+9334,1,0,1,0,0,1
+9335,1,0,1,0,0,1
+9336,1,0,1,0,0,1
+9348,2,2,3,836,0,2502
+9349,1,0,1,0,0,1
+9350,1,0,1,0,0,1
+9351,1,0,1,0,0,2
+9364,2,2,3,836,0,2520
+9365,1,0,1,0,0,2
+9366,1,0,1,0,0,2
+9367,1,0,1,0,0,1
+9375,2,2,3,836,0,2505
+9376,1,0,1,0,0,1
+9377,1,0,1,0,0,1
+9378,1,0,1,0,0,1
+9387,2,2,3,836,0,2561
+9388,1,0,1,0,0,2
+9389,1,0,1,0,0,2
+9390,1,0,1,0,0,2
+9398,2,2,3,836,0,2476
+9399,1,0,1,0,0,2
+9400,1,0,1,0,0,2
+9401,1,0,1,0,0,1
+9411,2,2,3,836,0,2564
+9412,1,0,1,0,0,2
+9413,1,0,1,0,0,1
+9414,1,0,1,0,0,2
+9415,1,0,1,0,0,1
+9416,1,0,1,0,0,1
+9417,2,2,3,836,0,247
+9418,2,2,3,836,0,270
+9427,2,2,3,836,0,2400
+9428,1,0,1,0,0,1
+9429,1,0,1,0,0,1
+9430,1,0,1,0,0,1
+9440,2,2,3,836,0,2537
+9441,1,0,1,0,0,1
+9442,1,0,1,0,0,1
+9443,1,0,1,0,0,2
+9452,2,2,3,836,0,2475
+9453,1,0,1,0,0,1
+9454,1,0,1,0,0,1
+9455,1,0,1,0,0,1
+9456,2,2,3,836,0,2535
+9457,1,0,1,0,0,1
+9458,1,0,1,0,0,1
+9459,1,0,1,0,0,1
+9469,2,2,3,836,0,2503
+9470,1,0,1,0,0,2
+9471,1,0,1,0,0,2
+9472,1,0,1,0,0,2
+9473,2,2,3,836,0,2522
+9474,1,0,1,0,0,1
+9475,1,0,1,0,0,1
+9476,1,0,1,0,0,2
+9485,2,2,3,836,0,2514
+9486,1,0,1,0,0,2
+9487,1,0,1,0,0,2
+9488,1,0,1,0,0,1
+9489,2,2,3,836,0,2524
+9490,1,0,1,0,0,2
+9491,1,0,1,0,0,2
+9492,1,0,1,0,0,1
+9503,2,2,3,836,0,2519
+9504,1,0,1,0,0,1
+9505,1,0,1,0,0,1
+9506,1,0,1,0,0,1
+9507,1,0,1,0,0,1
+9508,1,0,1,0,0,2
+9509,2,2,3,836,0,2524
+9510,1,0,1,0,0,2
+9511,1,0,1,0,0,1
+9512,1,0,1,0,0,1
+9513,1,0,1,0,0,2
+9514,2,2,3,836,0,248
+9515,2,2,3,836,0,277
+9525,2,2,3,836,0,2450
+9526,1,0,1,0,0,2
+9527,1,0,1,0,0,2
+9528,1,0,1,0,0,1
+9529,2,2,3,836,0,2535
+9530,1,0,1,0,0,1
+9531,1,0,1,0,0,1
+9532,1,0,1,0,0,1
+9543,2,2,3,836,0,2525
+9544,1,0,1,0,0,1
+9545,1,0,1,0,0,1
+9546,1,0,1,0,0,1
+9547,2,2,3,836,0,2634
+9548,1,0,1,0,0,2
+9549,1,0,1,0,0,2
+9550,1,0,1,0,0,1
+9562,2,2,3,836,0,2557
+9563,1,0,1,0,0,2
+9564,1,0,1,0,0,2
+9565,1,0,1,0,0,2
+9566,2,2,3,836,0,2560
+9567,1,0,1,0,0,1
+9568,1,0,1,0,0,1
+9569,1,0,1,0,0,1
+9577,2,2,3,836,0,2593
+9578,1,0,1,0,0,2
+9579,1,0,1,0,0,2
+9580,1,0,1,0,0,1
+9589,2,2,3,836,0,2561
+9590,1,0,1,0,0,1
+9591,1,0,1,0,0,1
+9592,1,0,1,0,0,1
+9600,2,2,3,836,0,2552
+9601,1,0,1,0,0,5
+9602,1,0,1,0,0,2
+9603,1,0,1,0,0,2
+9613,2,2,3,836,0,2560
+9614,1,0,1,0,0,2
+9615,1,0,1,0,0,1
+9616,1,0,1,0,0,1
+9617,1,0,1,0,0,2
+9618,2,2,3,836,0,246
+9619,2,2,3,836,0,276
+9628,2,2,3,836,0,2482
+9629,1,0,1,0,0,1
+9630,1,0,1,0,0,1
+9631,1,0,1,0,0,1
+9641,2,2,3,836,0,2541
+9642,1,0,1,0,0,2
+9643,1,0,1,0,0,1
+9644,1,0,1,0,0,1
+9645,2,2,3,836,0,2525
+9646,1,0,1,0,0,2
+9647,1,0,1,0,0,2
+9648,1,0,1,0,0,1
+9649,2,2,3,836,0,2555
+9650,1,0,1,0,0,2
+9651,1,0,1,0,0,2
+9652,1,0,1,0,0,2
+9663,2,2,3,836,0,2559
+9664,1,0,1,0,0,2
+9665,1,0,1,0,0,1
+9666,1,0,1,0,0,1
+9667,2,2,3,836,0,2539
+9668,1,0,1,0,0,1
+9669,1,0,1,0,0,1
+9670,1,0,1,0,0,1
+9671,2,2,3,836,0,2553
+9672,1,0,1,0,0,1
+9673,1,0,1,0,0,1
+9674,1,0,1,0,0,1
+9684,2,2,3,836,0,2559
+9685,1,0,1,0,0,2
+9686,1,0,1,0,0,2
+9687,1,0,1,0,0,2
+9688,2,2,3,836,0,2557
+9689,1,0,1,0,0,2
+9690,1,0,1,0,0,2
+9691,1,0,1,0,0,2
+9692,2,2,3,836,0,2517
+9693,1,0,1,0,0,1
+9694,1,0,1,0,0,1
+9695,1,0,1,0,0,1
+9707,1,0,1,0,0,2
+9708,1,0,1,0,0,2
+9709,1,0,1,0,0,2
+9710,1,0,1,0,0,2
+9711,1,0,1,0,0,2
+9712,1,0,1,0,0,1
+9713,1,0,1,0,0,1
+9714,1,0,1,0,0,1
+9715,2,2,3,836,0,2559
+9716,1,0,1,0,0,2
+9717,1,0,1,0,0,2
+9718,1,0,1,0,0,1
+9719,1,0,1,0,0,1
+9720,2,2,3,836,0,2518
+9721,1,0,1,0,0,2
+9722,1,0,1,0,0,1
+9723,1,0,1,0,0,1
+9724,1,0,1,0,0,1
+9725,2,2,3,836,0,2536
+9726,1,0,1,0,0,1
+9727,1,0,1,0,0,1
+9728,1,0,1,0,0,1
+9729,1,0,1,0,0,2
+9730,2,2,3,836,0,258
+9731,2,2,3,836,0,309
+9742,2,2,3,836,0,2430
+9743,1,0,1,0,0,1
+9744,1,0,1,0,0,2
+9745,1,0,1,0,0,1
+9746,2,2,3,836,0,2569
+9747,1,0,1,0,0,2
+9748,1,0,1,0,0,4
+9749,1,0,1,0,0,1
+9750,2,2,3,836,0,2524
+9751,1,0,1,0,0,2
+9752,1,0,1,0,0,1
+9753,1,0,1,0,0,2
+9765,2,2,3,836,0,2536
+9766,1,0,1,0,0,1
+9767,1,0,1,0,0,1
+9768,1,0,1,0,0,1
+9769,2,2,3,836,0,2525
+9770,1,0,1,0,0,2
+9771,1,0,1,0,0,2
+9772,1,0,1,0,0,1
+9773,2,2,3,836,0,2557
+9774,1,0,1,0,0,1
+9775,1,0,1,0,0,1
+9776,1,0,1,0,0,1
+9789,2,2,3,836,0,2547
+9790,1,0,1,0,0,1
+9791,1,0,1,0,0,1
+9792,1,0,1,0,0,1
+9793,2,2,3,836,0,2542
+9794,1,0,1,0,0,2
+9795,1,0,1,0,0,2
+9796,1,0,1,0,0,2
+9797,2,2,3,836,0,2542
+9798,1,0,1,0,0,2
+9799,1,0,1,0,0,2
+9800,1,0,1,0,0,2
+9814,2,2,3,836,0,2573
+9815,1,0,1,0,0,1
+9816,1,0,1,0,0,1
+9817,1,0,1,0,0,1
+9818,2,2,3,836,0,2564
+9819,1,0,1,0,0,2
+9820,1,0,1,0,0,2
+9821,1,0,1,0,0,1
+9822,2,2,3,836,0,2524
+9823,1,0,1,0,0,2
+9824,1,0,1,0,0,1
+9825,1,0,1,0,0,2
+9840,2,2,3,836,0,2533
+9841,1,0,1,0,0,1
+9842,1,0,1,0,0,1
+9843,1,0,1,0,0,1
+9844,2,2,3,836,0,2533
+9845,1,0,1,0,0,2
+9846,1,0,1,0,0,1
+9847,1,0,1,0,0,2
+9848,2,2,3,836,0,2534
+9849,1,0,1,0,0,2
+9850,1,0,1,0,0,1
+9851,1,0,1,0,0,2
+9867,2,2,3,836,0,2549
+9868,1,0,1,0,0,2
+9869,1,0,1,0,0,2
+9870,1,0,1,0,0,1
+9871,2,2,3,836,0,2515
+9872,1,0,1,0,0,2
+9873,1,0,1,0,0,2
+9874,1,0,1,0,0,1
+9875,2,2,3,836,0,2577
+9876,1,0,1,0,0,2
+9877,1,0,1,0,0,2
+9878,1,0,1,0,0,2
+9895,2,2,3,836,0,2569
+9896,1,0,1,0,0,1
+9897,1,0,1,0,0,1
+9898,1,0,1,0,0,1
+9899,2,2,3,836,0,2645
+9900,1,0,1,0,0,1
+9901,1,0,1,0,0,1
+9902,1,0,1,0,0,2
+9903,2,2,3,836,0,2562
+9904,1,0,1,0,0,2
+9905,1,0,1,0,0,2
+9906,1,0,1,0,0,4
+9924,2,2,3,836,0,2526
+9925,1,0,1,0,0,1
+9926,1,0,1,0,0,1
+9927,1,0,1,0,0,1
+9928,2,2,3,836,0,2548
+9929,1,0,1,0,0,1
+9930,1,0,1,0,0,1
+9931,1,0,1,0,0,1
+9932,2,2,3,836,0,2535
+9933,1,0,1,0,0,1
+9934,1,0,1,0,0,1
+9935,1,0,1,0,0,1
+9954,2,2,3,836,0,2571
+9955,1,0,1,0,0,2
+9956,1,0,1,0,0,2
+9957,1,0,1,0,0,2
+9958,2,2,3,836,0,2520
+9959,1,0,1,0,0,2
+9960,1,0,1,0,0,2
+9961,1,0,1,0,0,1
+9962,2,2,3,836,0,2556
+9963,1,0,1,0,0,1
+9964,1,0,1,0,0,1
+9965,1,0,1,0,0,2
+9985,2,2,3,836,0,2522
+9986,1,0,1,0,0,1
+9987,1,0,1,0,0,1
+9988,1,0,1,0,0,1
+9989,2,2,3,836,0,2533
+9990,1,0,1,0,0,2
+9991,1,0,1,0,0,2
+9992,1,0,1,0,0,1
+9993,2,2,3,836,0,2564
+9994,1,0,1,0,0,2
+9995,1,0,1,0,0,2
+9996,1,0,1,0,0,2
+10017,2,2,3,836,0,2537
+10018,1,0,1,0,0,1
+10019,1,0,1,0,0,1
+10020,1,0,1,0,0,2
+10021,2,2,3,836,0,2496
+10022,1,0,1,0,0,1
+10023,1,0,1,0,0,1
+10024,1,0,1,0,0,2
+10025,2,2,3,836,0,2576
+10026,1,0,1,0,0,2
+10027,1,0,1,0,0,2
+10028,1,0,1,0,0,1
+10042,1,0,1,0,0,2
+10057,1,0,1,0,0,2
+10058,2,2,3,836,0,256
+10059,2,2,3,836,0,283
+10067,1,0,1,0,0,2
+10075,2,2,3,836,0,2450
+10076,1,0,1,0,0,1
+10077,1,0,1,0,0,1
+10078,1,0,1,0,0,1
+10087,2,2,3,836,0,2550
+10088,1,0,1,0,0,2
+10089,1,0,1,0,0,2
+10090,1,0,1,0,0,1
+10098,2,2,3,836,0,2567
+10099,1,0,1,0,0,2
+10100,1,0,1,0,0,2
+10101,1,0,1,0,0,1
+10111,1,0,1,0,0,2
+10112,1,0,1,0,0,2
+10113,1,0,1,0,0,2
+10114,1,0,1,0,0,1
+10115,1,0,1,0,0,1
+10116,1,0,1,0,0,1
+10117,1,0,1,0,0,2
+10118,1,0,1,0,0,1
+10119,1,0,1,0,0,1
+10120,1,0,1,0,0,2
+10121,1,0,1,0,0,2
+10122,1,0,1,0,0,1
+10123,1,0,1,0,0,1
+10124,1,0,1,0,0,2
+10125,1,0,1,0,0,2
+10126,1,0,1,0,0,2
+10127,1,0,1,0,0,1
+10128,1,0,1,0,0,1
+10129,1,0,1,0,0,1
+10130,1,0,1,0,0,1
+10131,1,0,1,0,0,1
+10132,1,0,1,0,0,3
+10133,1,0,1,0,0,1
+10134,1,0,1,0,0,1
+10135,1,0,1,0,0,3
+10136,1,0,1,0,0,2
+10137,1,0,1,0,0,1
+10138,2,2,3,836,0,2515
+10139,1,0,1,0,0,1
+10140,1,0,1,0,0,2
+10141,1,0,1,0,0,2
+10142,1,0,1,0,0,2
+10143,2,2,3,836,0,262
+10144,2,2,3,836,0,300
+10153,2,2,3,836,0,2448
+10154,1,0,1,0,0,2
+10155,1,0,1,0,0,2
+10156,1,0,1,0,0,2
+10166,2,2,3,836,0,2552
+10167,1,0,1,0,0,2
+10168,1,0,1,0,0,2
+10169,1,0,1,0,0,1
+10180,2,2,3,836,0,2591
+10181,1,0,1,0,0,2
+10182,1,0,1,0,0,2
+10183,1,0,1,0,0,1
+10195,2,2,3,836,0,2562
+10196,1,0,1,0,0,1
+10197,1,0,1,0,0,1
+10198,1,0,1,0,0,1
+10211,2,2,3,836,0,2549
+10212,1,0,1,0,0,2
+10213,1,0,1,0,0,2
+10214,1,0,1,0,0,1
+10228,2,2,3,836,0,2553
+10229,1,0,1,0,0,2
+10230,1,0,1,0,0,2
+10231,1,0,1,0,0,2
+10246,2,2,3,836,0,2567
+10247,1,0,1,0,0,2
+10248,1,0,1,0,0,1
+10249,1,0,1,0,0,2
+10265,2,2,3,836,0,2594
+10266,1,0,1,0,0,1
+10267,1,0,1,0,0,1
+10268,1,0,1,0,0,1
+10285,2,2,3,836,0,2529
+10286,1,0,1,0,0,2
+10287,1,0,1,0,0,2
+10288,1,0,1,0,0,2
+10306,2,2,3,836,0,2570
+10307,1,0,1,0,0,1
+10308,1,0,1,0,0,1
+10309,1,0,1,0,0,1
+10328,2,2,3,836,0,2516
+10329,1,0,1,0,0,2
+10330,1,0,1,0,0,1
+10331,1,0,1,0,0,1
+10351,2,2,3,836,0,2526
+10352,1,0,1,0,0,4
+10353,1,0,1,0,0,2
+10354,1,0,1,0,0,2
+10375,2,2,3,836,0,2564
+10376,1,0,1,0,0,2
+10377,1,0,1,0,0,2
+10378,1,0,1,0,0,1
+10400,2,2,3,836,0,2591
+10401,1,0,1,0,0,1
+10402,1,0,1,0,0,1
+10403,1,0,1,0,0,1
+10426,2,2,3,836,0,2542
+10427,1,0,1,0,0,2
+10428,1,0,1,0,0,1
+10429,1,0,1,0,0,1
+10453,2,2,3,836,0,2542
+10454,1,0,1,0,0,2
+10455,1,0,1,0,0,2
+10456,1,0,1,0,0,2
+10481,2,2,3,836,0,2563
+10482,1,0,1,0,0,1
+10483,1,0,1,0,0,1
+10484,1,0,1,0,0,1
+10510,2,2,3,836,0,2540
+10511,1,0,1,0,0,2
+10512,1,0,1,0,0,2
+10513,1,0,1,0,0,2
+10540,2,2,3,836,0,2534
+10541,1,0,1,0,0,1
+10542,1,0,1,0,0,1
+10543,1,0,1,0,0,1
+10571,2,2,3,836,0,2555
+10572,1,0,1,0,0,1
+10573,1,0,1,0,0,1
+10574,1,0,1,0,0,1
+10603,2,2,3,836,0,2532
+10604,1,0,1,0,0,2
+10605,1,0,1,0,0,2
+10606,1,0,1,0,0,1
+10636,2,2,3,836,0,2556
+10637,1,0,1,0,0,2
+10638,1,0,1,0,0,1
+10639,1,0,1,0,0,1
+10670,2,2,3,836,0,2536
+10671,1,0,1,0,0,1
+10672,1,0,1,0,0,1
+10673,1,0,1,0,0,1
+10705,2,2,3,836,0,2533
+10706,1,0,1,0,0,2
+10707,1,0,1,0,0,2
+10708,1,0,1,0,0,2
+10741,2,2,3,836,0,2553
+10742,1,0,1,0,0,1
+10743,1,0,1,0,0,1
+10744,1,0,1,0,0,2
+10778,2,2,3,836,0,2510
+10779,1,0,1,0,0,2
+10780,1,0,1,0,0,2
+10781,1,0,1,0,0,1
+10815,2,2,3,836,0,2510
+10816,1,0,1,0,0,2
+10817,1,0,1,0,0,1
+10818,1,0,1,0,0,2
+10853,2,2,3,836,0,2538
+10854,1,0,1,0,0,2
+10855,1,0,1,0,0,1
+10856,1,0,1,0,0,1
+10865,2,2,3,836,0,2554
+10866,1,0,1,0,0,1
+10867,1,0,1,0,0,1
+10868,1,0,1,0,0,1
+10869,2,2,3,836,0,2536
+10870,1,0,1,0,0,1
+10871,1,0,1,0,0,1
+10872,1,0,1,0,0,1
+10882,2,2,3,836,0,2553
+10883,1,0,1,0,0,2
+10884,1,0,1,0,0,2
+10885,1,0,1,0,0,2
+10886,2,2,3,836,0,2588
+10887,1,0,1,0,0,2
+10888,1,0,1,0,0,1
+10889,1,0,1,0,0,1
+10898,2,2,3,836,0,2580
+10899,1,0,1,0,0,1
+10900,1,0,1,0,0,1
+10901,1,0,1,0,0,1
+10902,2,2,3,836,0,2568
+10903,1,0,1,0,0,2
+10904,1,0,1,0,0,2
+10905,1,0,1,0,0,2
+10916,1,0,1,0,0,2
+10917,2,2,3,836,0,2575
+10918,1,0,1,0,0,2
+10919,1,0,1,0,0,2
+10920,1,0,1,0,0,2
+10921,1,0,1,0,0,2
+10922,2,2,3,836,0,2618
+10923,1,0,1,0,0,2
+10924,1,0,1,0,0,2
+10925,1,0,1,0,0,1
+10926,1,0,1,0,0,1
+10927,2,2,3,836,0,254
+10928,2,2,3,836,0,278
+10938,2,2,3,836,0,2491
+10939,1,0,1,0,0,2
+10940,1,0,1,0,0,1
+10941,1,0,1,0,0,1
+10942,2,2,3,836,0,2551
+10943,1,0,1,0,0,1
+10944,1,0,1,0,0,1
+10945,1,0,1,0,0,1
+10956,2,2,3,836,0,2591
+10957,1,0,1,0,0,2
+10958,1,0,1,0,0,1
+10959,1,0,1,0,0,1
+10960,2,2,3,836,0,2574
+10961,1,0,1,0,0,2
+10962,1,0,1,0,0,2
+10963,1,0,1,0,0,1
+10975,2,2,3,836,0,2576
+10976,1,0,1,0,0,2
+10977,1,0,1,0,0,1
+10978,1,0,1,0,0,2
+10979,2,2,3,836,0,2577
+10980,1,0,1,0,0,1
+10981,1,0,1,0,0,1
+10982,1,0,1,0,0,1
+10990,2,2,3,836,0,2531
+10991,1,0,1,0,0,1
+10992,1,0,1,0,0,1
+10993,1,0,1,0,0,1
+11002,2,2,3,836,0,2571
+11003,1,0,1,0,0,1
+11004,1,0,1,0,0,2
+11005,1,0,1,0,0,1
+11013,2,2,3,836,0,2547
+11014,1,0,1,0,0,2
+11015,1,0,1,0,0,2
+11016,1,0,1,0,0,2
+11026,2,2,3,836,0,2562
+11027,1,0,1,0,0,1
+11028,1,0,1,0,0,1
+11029,1,0,1,0,0,1
+11030,1,0,1,0,0,1
+11031,2,2,3,836,0,257
+11032,2,2,3,836,0,315
+11041,2,2,3,836,0,2409
+11042,1,0,1,0,0,1
+11043,1,0,1,0,0,2
+11044,1,0,1,0,0,1
+11072,1,0,1,0,0,1
+11073,1,0,1,0,0,2
+11074,1,0,1,0,0,2
+11075,2,2,3,836,0,259
+11076,2,2,3,836,0,304
+11128,1,0,1,0,0,4
+11129,1,0,1,0,0,2
+11130,2,2,3,836,0,281
+11131,2,2,3,836,0,292
+11174,1,0,1,0,0,2
+11175,2,2,3,836,0,2386
+11176,2,2,3,836,0,2535
+11204,1,0,1,0,0,2
+11205,1,0,1,0,0,2
+11206,1,0,1,0,0,1
+11207,2,2,3,836,0,259
+11208,2,2,3,836,0,290
+11241,2,2,3,836,0,2437
+11242,1,0,1,0,0,2
+11243,1,0,1,0,0,2
+11244,1,0,1,0,0,2
+11245,2,2,3,836,0,2524
+11246,1,0,1,0,0,2
+11247,1,0,1,0,0,2
+11248,1,0,1,0,0,2
+11258,2,2,3,836,0,2567
+11259,1,0,1,0,0,2
+11260,1,0,1,0,0,2
+11261,1,0,1,0,0,2
+11262,2,2,3,836,0,2555
+11263,1,0,1,0,0,1
+11264,1,0,1,0,0,1
+11265,1,0,1,0,0,1
+11274,2,2,3,836,0,2569
+11275,1,0,1,0,0,2
+11276,1,0,1,0,0,1
+11277,1,0,1,0,0,2
+11278,2,2,3,836,0,2544
+11279,1,0,1,0,0,1
+11280,1,0,1,0,0,1
+11281,1,0,1,0,0,1
+11292,2,2,3,836,0,2544
+11293,1,0,1,0,0,2
+11294,1,0,1,0,0,2
+11295,1,0,1,0,0,2
+11296,1,0,1,0,0,1
+11297,1,0,1,0,0,1
+11298,2,2,3,836,0,2532
+11299,1,0,1,0,0,2
+11300,1,0,1,0,0,1
+11301,1,0,1,0,0,1
+11302,1,0,1,0,0,1
+11303,2,2,3,836,0,255
+11304,2,2,3,836,0,304
+11314,2,2,3,836,0,2425
+11315,1,0,1,0,0,1
+11316,1,0,1,0,0,1
+11317,1,0,1,0,0,1
+11318,2,2,3,836,0,2530
+11319,1,0,1,0,0,2
+11320,1,0,1,0,0,1
+11321,1,0,1,0,0,1
+11332,2,2,3,836,0,2531
+11333,1,0,1,0,0,2
+11334,1,0,1,0,0,2
+11335,1,0,1,0,0,2
+11336,2,2,3,836,0,2732
+11337,1,0,1,0,0,2
+11338,1,0,1,0,0,2
+11339,1,0,1,0,0,1
+11351,2,2,3,836,0,2567
+11352,1,0,1,0,0,2
+11353,1,0,1,0,0,1
+11354,1,0,1,0,0,2
+11355,2,2,3,836,0,2548
+11356,1,0,1,0,0,2
+11357,1,0,1,0,0,1
+11358,1,0,1,0,0,1
+11366,2,2,3,836,0,2506
+11367,1,0,1,0,0,2
+11368,1,0,1,0,0,1
+11369,1,0,1,0,0,1
+11378,2,2,3,836,0,2565
+11379,1,0,1,0,0,2
+11380,1,0,1,0,0,2
+11381,1,0,1,0,0,2
+11389,2,2,3,836,0,2614
+11390,1,0,1,0,0,2
+11391,1,0,1,0,0,2
+11392,1,0,1,0,0,2
+11402,2,2,3,836,0,2564
+11403,1,0,1,0,0,2
+11404,1,0,1,0,0,2
+11405,1,0,1,0,0,1
+11406,1,0,1,0,0,1
+11407,2,2,3,836,0,242
+11408,2,2,3,836,0,292
+11417,2,2,3,836,0,2463
+11418,1,0,1,0,0,2
+11419,1,0,1,0,0,1
+11420,1,0,1,0,0,2
+11430,2,2,3,836,0,2513
+11431,1,0,1,0,0,2
+11432,1,0,1,0,0,2
+11433,1,0,1,0,0,1
+11434,2,2,3,836,0,2549
+11435,1,0,1,0,0,2
+11436,1,0,1,0,0,2
+11437,1,0,1,0,0,1
+11438,2,2,3,836,0,2516
+11439,1,0,1,0,0,1
+11440,1,0,1,0,0,1
+11441,1,0,1,0,0,2
+11452,2,2,3,836,0,2530
+11453,1,0,1,0,0,1
+11454,1,0,1,0,0,1
+11455,1,0,1,0,0,1
+11456,2,2,3,836,0,2526
+11457,1,0,1,0,0,1
+11458,1,0,1,0,0,1
+11459,1,0,1,0,0,1
+11460,2,2,3,836,0,2536
+11461,1,0,1,0,0,1
+11462,1,0,1,0,0,1
+11463,1,0,1,0,0,1
+11473,2,2,3,836,0,2503
+11474,1,0,1,0,0,1
+11475,1,0,1,0,0,1
+11476,1,0,1,0,0,1
+11477,2,2,3,836,0,2550
+11478,1,0,1,0,0,2
+11479,1,0,1,0,0,1
+11480,1,0,1,0,0,1
+11481,2,2,3,836,0,2537
+11482,1,0,1,0,0,2
+11483,1,0,1,0,0,1
+11484,1,0,1,0,0,1
+11496,1,0,1,0,0,1
+11497,1,0,1,0,0,1
+11498,1,0,1,0,0,2
+11499,1,0,1,0,0,2
+11500,1,0,1,0,0,1
+11501,1,0,1,0,0,1
+11502,1,0,1,0,0,2
+11503,1,0,1,0,0,1
+11504,2,2,3,836,0,2540
+11505,1,0,1,0,0,2
+11506,1,0,1,0,0,1
+11507,1,0,1,0,0,1
+11508,1,0,1,0,0,1
+11509,2,2,3,836,0,2492
+11510,1,0,1,0,0,2
+11511,1,0,1,0,0,1
+11512,1,0,1,0,0,1
+11513,1,0,1,0,0,1
+11514,2,2,3,836,0,2541
+11515,1,0,1,0,0,1
+11516,1,0,1,0,0,1
+11517,1,0,1,0,0,1
+11518,1,0,1,0,0,2
+11519,2,2,3,836,0,254
+11520,2,2,3,836,0,283
+11531,2,2,3,836,0,2685
+11532,1,0,1,0,0,2
+11533,1,0,1,0,0,2
+11534,1,0,1,0,0,2
+11535,2,2,3,836,0,2552
+11536,1,0,1,0,0,2
+11537,1,0,1,0,0,2
+11538,1,0,1,0,0,2
+11539,2,2,3,836,0,2538
+11540,1,0,1,0,0,2
+11541,1,0,1,0,0,1
+11542,1,0,1,0,0,2
+11554,2,2,3,836,0,2788
+11555,1,0,1,0,0,1
+11556,1,0,1,0,0,1
+11557,1,0,1,0,0,1
+11558,2,2,3,836,0,2609
+11559,1,0,1,0,0,2
+11560,1,0,1,0,0,1
+11561,1,0,1,0,0,2
+11562,2,2,3,836,0,2541
+11563,1,0,1,0,0,2
+11564,1,0,1,0,0,1
+11565,1,0,1,0,0,2
+11578,2,2,3,836,0,2782
+11579,1,0,1,0,0,2
+11580,1,0,1,0,0,1
+11581,1,0,1,0,0,2
+11582,2,2,3,836,0,2541
+11583,1,0,1,0,0,2
+11584,1,0,1,0,0,2
+11585,1,0,1,0,0,2
+11586,2,2,3,836,0,2544
+11587,1,0,1,0,0,1
+11588,1,0,1,0,0,1
+11589,1,0,1,0,0,1
+11603,2,2,3,836,0,2578
+11604,1,0,1,0,0,1
+11605,1,0,1,0,0,1
+11606,1,0,1,0,0,1
+11607,2,2,3,836,0,2579
+11608,1,0,1,0,0,2
+11609,1,0,1,0,0,2
+11610,1,0,1,0,0,2
+11611,2,2,3,836,0,2543
+11612,1,0,1,0,0,1
+11613,1,0,1,0,0,1
+11614,1,0,1,0,0,2
+11629,2,2,3,836,0,2577
+11630,1,0,1,0,0,2
+11631,1,0,1,0,0,1
+11632,1,0,1,0,0,1
+11633,2,2,3,836,0,2549
+11634,1,0,1,0,0,1
+11635,1,0,1,0,0,1
+11636,1,0,1,0,0,1
+11637,2,2,3,836,0,2569
+11638,1,0,1,0,0,2
+11639,1,0,1,0,0,2
+11640,1,0,1,0,0,2
+11656,2,2,3,836,0,2544
+11657,1,0,1,0,0,2
+11658,1,0,1,0,0,1
+11659,1,0,1,0,0,2
+11660,2,2,3,836,0,2500
+11661,1,0,1,0,0,2
+11662,1,0,1,0,0,2
+11663,1,0,1,0,0,1
+11664,2,2,3,836,0,2568
+11665,1,0,1,0,0,1
+11666,1,0,1,0,0,1
+11667,1,0,1,0,0,1
+11684,2,2,3,836,0,2540
+11685,1,0,1,0,0,2
+11686,1,0,1,0,0,2
+11687,1,0,1,0,0,2
+11688,2,2,3,836,0,2516
+11689,1,0,1,0,0,1
+11690,1,0,1,0,0,1
+11691,1,0,1,0,0,2
+11692,2,2,3,836,0,2525
+11693,1,0,1,0,0,2
+11694,1,0,1,0,0,2
+11695,1,0,1,0,0,2
+11713,2,2,3,836,0,2546
+11714,1,0,1,0,0,2
+11715,1,0,1,0,0,1
+11716,1,0,1,0,0,2
+11717,2,2,3,836,0,2552
+11718,1,0,1,0,0,1
+11719,1,0,1,0,0,1
+11720,1,0,1,0,0,1
+11721,2,2,3,836,0,2570
+11722,1,0,1,0,0,2
+11723,1,0,1,0,0,1
+11724,1,0,1,0,0,1
+11743,2,2,3,836,0,2569
+11744,1,0,1,0,0,2
+11745,1,0,1,0,0,5
+11746,1,0,1,0,0,1
+11747,2,2,3,836,0,2528
+11748,1,0,1,0,0,2
+11749,1,0,1,0,0,1
+11750,1,0,1,0,0,1
+11751,2,2,3,836,0,2520
+11752,1,0,1,0,0,2
+11753,1,0,1,0,0,1
+11754,1,0,1,0,0,2
+11774,2,2,3,836,0,2533
+11775,1,0,1,0,0,2
+11776,1,0,1,0,0,2
+11777,1,0,1,0,0,2
+11778,2,2,3,836,0,2545
+11779,1,0,1,0,0,2
+11780,1,0,1,0,0,1
+11781,1,0,1,0,0,1
+11782,2,2,3,836,0,2532
+11783,1,0,1,0,0,2
+11784,1,0,1,0,0,2
+11785,1,0,1,0,0,2
+11806,2,2,3,836,0,2567
+11807,1,0,1,0,0,1
+11808,1,0,1,0,0,1
+11809,1,0,1,0,0,1
+11810,2,2,3,836,0,2499
+11811,1,0,1,0,0,2
+11812,1,0,1,0,0,2
+11813,1,0,1,0,0,2
+11814,2,2,3,836,0,2522
+11815,1,0,1,0,0,1
+11816,1,0,1,0,0,1
+11817,1,0,1,0,0,1
+11826,2,2,3,836,0,2514
+11827,1,0,1,0,0,2
+11828,1,0,1,0,0,1
+11829,1,0,1,0,0,2
+11830,2,2,3,836,0,2512
+11831,1,0,1,0,0,1
+11832,1,0,1,0,0,1
+11833,1,0,1,0,0,1
+11843,2,2,3,836,0,2581
+11844,1,0,1,0,0,2
+11845,1,0,1,0,0,2
+11846,1,0,1,0,0,2
+11847,2,2,3,836,0,2503
+11848,1,0,1,0,0,1
+11849,1,0,1,0,0,1
+11850,1,0,1,0,0,1
+11859,2,2,3,836,0,2546
+11860,1,0,1,0,0,2
+11861,1,0,1,0,0,2
+11862,1,0,1,0,0,2
+11863,2,2,3,836,0,2537
+11864,1,0,1,0,0,2
+11865,1,0,1,0,0,2
+11866,1,0,1,0,0,1
+11877,2,2,3,836,0,2551
+11878,1,0,1,0,0,2
+11879,1,0,1,0,0,2
+11880,1,0,1,0,0,1
+11881,1,0,1,0,0,1
+11882,1,0,1,0,0,1
+11883,2,2,3,836,0,2769
+11884,1,0,1,0,0,2
+11885,1,0,1,0,0,2
+11886,1,0,1,0,0,2
+11887,1,0,1,0,0,1
+11888,2,2,3,836,0,279
+11889,2,2,3,836,0,284
+11899,2,2,3,836,0,2440
+11900,1,0,1,0,0,2
+11901,1,0,1,0,0,2
+11902,1,0,1,0,0,1
+11903,2,2,3,836,0,2490
+11904,1,0,1,0,0,1
+11905,1,0,1,0,0,1
+11906,1,0,1,0,0,1
+11917,2,2,3,836,0,2549
+11918,1,0,1,0,0,2
+11919,1,0,1,0,0,2
+11920,1,0,1,0,0,1
+11921,2,2,3,836,0,2516
+11922,1,0,1,0,0,2
+11923,1,0,1,0,0,1
+11924,1,0,1,0,0,1
+11936,2,2,3,836,0,2546
+11937,1,0,1,0,0,2
+11938,1,0,1,0,0,1
+11939,1,0,1,0,0,1
+11940,2,2,3,836,0,2484
+11941,1,0,1,0,0,1
+11942,1,0,1,0,0,1
+11943,1,0,1,0,0,1
+11971,1,0,1,0,0,2
+11972,1,0,1,0,0,2
+11973,1,0,1,0,0,1
+11974,1,0,1,0,0,1
+11975,1,0,1,0,0,2
+11976,1,0,1,0,0,2
+11977,2,2,3,836,0,262
+11978,2,2,3,836,0,285
+12049,1,0,1,0,0,3
+12064,1,0,1,0,0,6
+12065,2,2,3,836,0,289
+12066,2,2,3,836,0,283
+12074,1,0,1,0,0,2
+12102,1,0,1,0,0,2
+12103,1,0,1,0,0,4
+12104,2,2,3,836,0,273
+12105,2,2,3,836,0,279
+12148,1,0,1,0,0,2
+12149,1,0,1,0,0,2
+12150,1,0,1,0,0,2
+12151,1,0,1,0,0,2
+12152,1,0,1,0,0,1
+12153,1,0,1,0,0,2
+12154,1,0,1,0,0,2
+12155,1,0,1,0,0,5
+12156,2,2,3,836,0,300
+12157,2,2,3,836,0,275
+12255,1,0,1,0,0,3
+12270,1,0,1,0,0,2
+12271,2,2,3,836,0,271
+12272,2,2,3,836,0,314
+12280,1,0,1,0,0,2
+12294,1,0,1,0,0,2
+12309,1,0,1,0,0,3
+12310,2,2,3,836,0,292
+12311,2,2,3,836,0,284
+12319,1,0,1,0,0,2
+12347,1,0,1,0,0,2
+12348,1,0,1,0,0,2
+12349,1,0,1,0,0,2
+12350,1,0,1,0,0,2
+12351,1,0,1,0,0,2
+12352,1,0,1,0,0,2
+12353,1,0,1,0,0,2
+12354,1,0,1,0,0,1
+12355,2,2,3,836,0,309
+12356,2,2,3,836,0,294
+12454,1,0,1,0,0,4
+12469,1,0,1,0,0,3
+12470,2,2,3,836,0,298
+12471,2,2,3,836,0,285
+12479,1,0,1,0,0,2
+12493,1,0,1,0,0,2
+12508,1,0,1,0,0,2
+12509,2,2,3,836,0,287
+12510,2,2,3,836,0,275
+12518,1,0,1,0,0,2
+12526,2,2,3,836,0,2404
+12527,1,0,1,0,0,2
+12528,1,0,1,0,0,1
+12529,1,0,1,0,0,2
+12538,2,2,3,836,0,2494
+12539,1,0,1,0,0,1
+12540,1,0,1,0,0,1
+12541,1,0,1,0,0,1
+12549,2,2,3,836,0,2517
+12550,1,0,1,0,0,2
+12551,1,0,1,0,0,2
+12552,1,0,1,0,0,1
+12562,1,0,1,0,0,1
+12563,1,0,1,0,0,1
+12564,1,0,1,0,0,1
+12565,1,0,1,0,0,2
+12566,1,0,1,0,0,2
+12567,1,0,1,0,0,1
+12568,1,0,1,0,0,1
+12569,1,0,1,0,0,1
+12570,1,0,1,0,0,2
+12571,2,2,3,836,0,2536
+12572,1,0,1,0,0,2
+12573,1,0,1,0,0,1
+12574,1,0,1,0,0,1
+12575,1,0,1,0,0,2
+12576,1,0,1,0,0,2
+12577,1,0,1,0,0,1
+12578,2,2,3,836,0,263
+12579,2,2,3,836,0,295
+12588,2,2,3,836,0,2416
+12589,1,0,1,0,0,2
+12590,1,0,1,0,0,1
+12591,1,0,1,0,0,1
+12601,2,2,3,836,0,2527
+12602,1,0,1,0,0,2
+12603,1,0,1,0,0,2
+12604,1,0,1,0,0,1
+12615,2,2,3,836,0,2560
+12616,1,0,1,0,0,2
+12617,1,0,1,0,0,1
+12618,1,0,1,0,0,1
+12630,2,2,3,836,0,2537
+12631,1,0,1,0,0,1
+12632,1,0,1,0,0,1
+12633,1,0,1,0,0,2
+12646,2,2,3,836,0,2533
+12647,1,0,1,0,0,2
+12648,1,0,1,0,0,1
+12649,1,0,1,0,0,2
+12663,2,2,3,836,0,2566
+12664,1,0,1,0,0,2
+12665,1,0,1,0,0,1
+12666,1,0,1,0,0,2
+12681,2,2,3,836,0,2529
+12682,1,0,1,0,0,5
+12683,1,0,1,0,0,2
+12684,1,0,1,0,0,1
+12700,2,2,3,836,0,2530
+12701,1,0,1,0,0,2
+12702,1,0,1,0,0,1
+12703,1,0,1,0,0,2
+12720,2,2,3,836,0,2582
+12721,1,0,1,0,0,1
+12722,1,0,1,0,0,1
+12723,1,0,1,0,0,1
+12741,2,2,3,836,0,2520
+12742,1,0,1,0,0,2
+12743,1,0,1,0,0,2
+12744,1,0,1,0,0,2
+12763,2,2,3,836,0,2534
+12764,1,0,1,0,0,1
+12765,1,0,1,0,0,1
+12766,1,0,1,0,0,1
+12786,2,2,3,836,0,2509
+12787,1,0,1,0,0,2
+12788,1,0,1,0,0,1
+12789,1,0,1,0,0,2
+12803,1,0,1,0,0,2
+12818,1,0,1,0,0,1
+12819,2,2,3,836,0,247
+12820,2,2,3,836,0,274
+12828,1,0,1,0,0,2
+12842,1,0,1,0,0,2
+12857,1,0,1,0,0,2
+12858,2,2,3,836,0,307
+12859,2,2,3,836,0,280
+12867,1,0,1,0,0,2
+12881,1,0,1,0,0,2
+12896,1,0,1,0,0,2
+12897,2,2,3,836,0,299
+12898,2,2,3,836,0,280
+12906,1,0,1,0,0,6
+12920,1,0,1,0,0,2
+12935,1,0,1,0,0,2
+12936,2,2,3,836,0,286
+12937,2,2,3,836,0,278
+12945,1,0,1,0,0,2
+12973,1,0,1,0,0,2
+12974,2,2,3,836,0,2374
+12975,2,2,3,836,0,2479
+13003,1,0,1,0,0,1
+13004,2,2,3,836,0,2489
+13005,2,2,3,836,0,2481
+13033,1,0,1,0,0,2
+13034,2,2,3,836,0,2495
+13035,2,2,3,836,0,2523
+13063,1,0,1,0,0,2
+13064,1,0,1,0,0,1
+13065,1,0,1,0,0,1
+13066,1,0,1,0,0,2
+13067,1,0,1,0,0,2
+13068,1,0,1,0,0,1
+13069,1,0,1,0,0,1
+13070,1,0,1,0,0,1
+13071,1,0,1,0,0,1
+13072,1,0,1,0,0,2
+13073,1,0,1,0,0,1
+13074,2,2,3,836,0,257
+13075,2,2,3,836,0,290
+13235,1,0,1,0,0,2
+13236,1,0,1,0,0,2
+13237,2,2,3,836,0,272
+13238,2,2,3,836,0,288
+13261,2,2,3,836,0,2356
+13262,1,0,1,0,0,2
+13263,1,0,1,0,0,2
+13264,1,0,1,0,0,1
+13273,2,2,3,836,0,2518
+13274,1,0,1,0,0,2
+13275,1,0,1,0,0,1
+13276,1,0,1,0,0,2
+13284,2,2,3,836,0,2502
+13285,1,0,1,0,0,2
+13286,1,0,1,0,0,2
+13287,1,0,1,0,0,2
+13297,2,2,3,836,0,2494
+13298,1,0,1,0,0,2
+13299,1,0,1,0,0,1
+13300,1,0,1,0,0,2
+13301,1,0,1,0,0,2
+13302,2,2,3,836,0,245
+13303,2,2,3,836,0,275
+13312,2,2,3,836,0,2441
+13313,1,0,1,0,0,2
+13314,1,0,1,0,0,1
+13315,1,0,1,0,0,2
+13343,1,0,1,0,0,1
+13344,1,0,1,0,0,1
+13345,2,2,3,836,0,247
+13346,2,2,3,836,0,285
+13389,1,0,1,0,0,2
+13390,2,2,3,836,0,2417
+13391,2,2,3,836,0,2500
+13419,1,0,1,0,0,2
+13420,1,0,1,0,0,1
+13421,2,2,3,836,0,248
+13422,2,2,3,836,0,293
+13465,1,0,1,0,0,2
+13466,2,2,3,836,0,278
+13467,2,2,3,836,0,275
+13481,2,2,3,169,,4
+13488,2,2,3,169,,3
+13516,1,0,1,0,0,2
+13517,2,2,3,836,0,309
+13518,2,2,3,836,0,296
+13532,2,2,3,169,,3
+13539,2,2,3,169,,2
+13567,1,0,1,0,0,3
+13568,2,2,3,836,0,2379
+13569,2,2,3,836,0,2535
+13577,3,2,5,836,,32
+13578,2,2,3,836,0,264
+13587,3,2,4,836,,6
+13588,2,1,2,19,,2
+13589,2,2,3,836,0,320
+13590,2,2,3,836,0,273
+13600,4,2,7,836,0,684
+13601,3,2,5,25,0,180
+13602,2,2,3,836,0,286
+13603,2,2,3,836,0,277
+13612,3,2,5,169,0,123
+13613,2,2,3,836,0,287
+13614,2,2,3,836,0,273
+13623,3,2,4,836,,5
+13624,2,1,2,19,,3
+13625,2,2,3,836,0,271
+13626,2,2,3,836,0,265
+13636,4,2,7,836,0,609
+13637,3,2,5,25,0,169
+13638,2,2,3,836,0,264
+13639,2,2,3,836,0,263
+13648,3,2,5,169,0,91
+13649,2,2,3,836,0,266
+13650,2,2,3,836,0,283
+13660,4,2,6,836,0,588
+13661,3,2,4,20,0,172
+13662,2,2,3,836,0,264
+13663,2,2,3,836,0,261
+13673,4,2,6,836,0,573
+13674,3,2,4,20,0,166
+13675,2,2,3,836,0,262
+13676,2,2,3,836,0,262
+13685,3,2,5,169,0,104
+13686,2,2,3,836,0,264
+13687,2,2,3,836,0,262
+13696,4,2,7,836,0,2881
+13697,2,2,3,836,0,2553
+13707,4,2,6,836,0,550
+13708,3,2,4,20,0,166
+13709,2,2,3,836,0,278
+13710,2,2,3,836,0,262
+13719,3,2,5,169,0,109
+13720,2,2,3,836,0,264
+13721,2,2,3,836,0,263
+13730,3,2,5,836,0,2629
+13731,2,2,3,836,0,2532
+13741,4,2,7,836,0,447
+13742,3,2,5,11,0,122
+13743,2,2,3,836,0,287
+13744,2,2,3,836,0,279
+13753,3,2,5,169,0,90
+13754,2,2,3,836,0,282
+13755,2,2,3,836,0,269
+13764,4,2,7,836,0,2677
+13765,2,2,3,836,0,2541
+13774,4,2,7,836,0,2827
+13775,2,2,3,836,0,2531
+13784,4,2,7,836,0,2784
+13785,2,2,3,836,0,2574
+13794,4,2,7,836,0,2771
+13795,2,2,3,836,0,2528
+13804,4,2,7,836,0,2792
+13805,2,2,3,836,0,2514
+13814,4,2,7,836,0,2785
+13815,2,2,3,836,0,2560
+13823,4,2,6,836,0,2823
+13824,2,2,3,836,0,2535
+13832,4,2,6,836,0,2815
+13833,2,2,3,836,0,2524
+13841,4,2,6,836,0,2749
+13842,2,2,3,836,0,2547
+13850,4,2,6,836,0,2749
+13851,2,2,3,836,0,2553
+13859,4,2,6,836,0,2786
+13860,2,2,3,836,0,2516
+13868,4,2,6,836,0,2759
+13869,2,2,3,836,0,2541
+13877,4,3,7,836,0,293
+13878,2,2,3,836,0,275
+13887,2,2,3,836,0,311
+13888,1,0,1,1,0,3
+13889,2,2,3,836,0,269
+13890,2,2,3,836,0,279
+13899,4,2,7,836,0,865
+13900,3,2,5,20,0,474
+13901,2,2,3,836,0,278
+13902,2,2,3,836,0,274
+13911,4,2,7,836,0,852
+13912,3,2,5,20,0,492
+13913,2,2,3,836,0,272
+13914,2,2,3,836,0,281
+13923,3,2,5,836,0,585
+13924,2,2,3,20,0,166
+13925,2,2,3,836,0,284
+13926,2,2,3,836,0,275
+13935,3,2,5,836,0,592
+13936,2,2,3,20,0,162
+13937,2,2,3,836,0,279
+13938,2,2,3,836,0,282
+13947,4,2,7,836,0,871
+13948,3,2,5,20,0,409
+13949,2,2,3,836,0,271
+13950,2,2,3,836,0,282
+13959,4,2,7,836,0,844
+13960,3,2,5,20,0,442
+13961,2,2,3,836,0,271
+13962,2,2,3,836,0,280
+13971,5,2,9,836,0,1066
+13972,4,2,7,20,0,741
+13973,2,2,3,836,0,269
+13974,2,2,3,836,0,267
+13983,5,2,9,836,0,1028
+13984,4,2,7,20,0,767
+13985,2,2,3,836,0,289
+13986,2,2,3,836,0,266
+13995,6,2,11,836,0,1261
+13996,5,2,9,20,0,907
+13997,2,2,3,836,0,265
+13998,2,2,3,836,0,265
+14007,6,2,11,836,0,1235
+14008,5,2,9,20,0,883
+14009,2,2,3,836,0,267
+14010,2,2,3,836,0,266
+14019,7,2,13,836,0,1513
+14020,6,2,11,20,0,1175
+14021,2,2,3,836,0,279
+14022,2,2,3,836,0,281
+14031,7,2,13,836,0,1430
+14032,6,2,11,20,0,1217
+14033,2,2,3,836,0,280
+14034,2,2,3,836,0,296
+14042,3,2,4,836,0,2298
+14043,2,2,3,836,0,2451
+14051,4,2,8,836,0,2848
+14052,2,2,3,836,0,2580
+14060,4,2,8,836,0,3026
+14061,2,2,3,836,0,2443
+14069,4,2,6,836,0,2700
+14070,2,2,3,836,0,2441
+14078,4,2,8,836,0,2931
+14079,2,2,3,836,0,2538
+14087,5,2,10,836,0,3220
+14088,2,2,3,836,0,2446
+14096,6,2,12,836,0,3304
+14097,2,2,3,836,0,2424
+14105,7,2,14,836,0,3516
+14106,2,2,3,836,0,2429
+14115,3,3,6,836,0,284
+14116,2,2,3,836,0,274
+14125,3,3,6,836,0,304
+14126,2,2,3,836,0,285
+14141,3,2,4,169,0,738
+14142,3,2,4,169,0,721
+14150,2,3,4,836,0,185
+14157,2,3,4,836,0,194
+14165,3,2,5,836,,41
+14166,2,2,3,836,0,285
+14176,4,3,12,836,0,752
+14177,3,2,5,25,0,150
+14178,3,2,5,25,0,209
+14179,2,2,3,836,0,268
+14180,2,2,3,836,0,275
+14190,4,3,12,836,0,756
+14191,3,2,5,25,0,150
+14192,3,2,5,25,0,207
+14193,2,2,3,836,0,271
+14194,2,2,3,836,0,282
+14203,3,2,5,836,0,2351
+14204,2,2,3,836,0,2443
+14213,3,2,5,836,0,2486
+14214,2,2,3,836,0,2474
+14229,3,2,4,169,0,734
+14230,3,2,4,169,0,775
+14238,2,3,4,836,0,151
+14245,2,3,4,836,0,184
+14253,3,2,5,836,,39
+14254,2,2,3,836,0,272
+14264,4,3,12,836,0,769
+14265,3,2,5,25,0,161
+14266,3,2,5,25,0,184
+14267,2,2,3,836,0,280
+14268,2,2,3,836,0,276
+14278,4,3,12,836,0,755
+14279,3,2,5,25,0,147
+14280,3,2,5,25,0,188
+14281,2,2,3,836,0,273
+14282,2,2,3,836,0,263
+14291,3,2,5,836,0,2337
+14292,2,2,3,836,0,2445
+14301,3,2,5,836,0,2485
+14302,2,2,3,836,0,2469
+14310,5,3,9,836,,3
+14311,2,2,3,836,,2
+14320,5,3,9,836,,2
+14321,3,3,6,836,,2
+14329,3,2,5,836,,35
+14330,2,2,3,836,0,271
+14338,5,2,10,169,,3
+14347,5,2,12,169,,2
+14348,2,2,3,836,0,305
+14349,2,2,3,836,0,269
+14357,4,2,8,169,,3
+14366,4,2,8,169,,3
+14367,2,2,3,836,0,275
+14368,2,2,3,836,0,263
+14378,4,2,7,836,0,600
+14379,3,2,5,25,0,179
+14380,2,2,3,836,0,269
+14381,2,2,3,836,0,264
+14390,3,2,5,836,0,283
+14391,2,2,3,836,0,267
+14400,3,2,5,169,0,104
+14401,2,2,3,836,0,262
+14402,2,2,3,836,0,269
+14412,4,2,7,836,0,677
+14413,3,2,5,25,0,146
+14414,2,2,3,836,0,263
+14415,2,2,3,836,0,255
+14425,4,2,7,836,0,598
+14426,3,2,5,25,0,190
+14427,2,2,3,836,0,262
+14428,2,2,3,836,0,257
+14437,3,2,5,169,0,92
+14438,2,2,3,836,0,259
+14439,2,2,3,836,0,257
+14448,4,2,7,836,0,2646
+14449,2,2,3,836,0,2558
+14458,4,2,7,836,0,2771
+14459,2,2,3,836,0,2532
+14468,4,2,7,836,0,2789
+14469,2,2,3,836,0,2542
+14478,4,2,7,836,0,2734
+14479,2,2,3,836,0,2568
+14488,4,2,7,836,0,2741
+14489,2,2,3,836,0,2553
+14498,4,2,7,836,0,2725
+14499,2,2,3,836,0,2586
+14508,3,2,5,836,0,256
+14509,2,2,3,836,0,271
+14518,3,2,5,836,0,299
+14519,2,2,3,836,0,271
+14528,3,2,5,836,0,292
+14529,2,2,3,836,0,270
+14537,3,2,5,169,,2
+14538,4,2,9,169,,3
+14546,3,2,5,169,,2
+14547,3,2,5,169,,2
+14555,5,2,9,836,0,3069
+14556,2,2,3,836,0,2462
+14565,3,4,7,1,,38
+14566,4,2,6,836,0,2749
+14567,2,2,3,836,0,2553
+14576,3,4,7,1,,37
+14577,5,2,7,836,0,2931
+14578,2,2,3,836,0,2500
+14606,1,0,1,0,0,2
+14607,1,0,1,0,0,2
+14608,2,2,3,836,0,254
+14609,2,2,3,836,0,293
+14633,3,2,4,836,,31
+14642,3,2,4,836,,29
+14650,2,1,2,836,0,56
+14651,2,2,3,836,0,284
+14659,4,2,5,836,,37
+14660,2,2,3,836,0,283
+14700,1,0,1,0,0,2
+14701,2,2,3,836,1,357
+14702,2,2,3,836,1,312
+14722,3,2,4,836,0,457
+14733,3,4,7,1,,48
+14734,4,2,6,169,0,355
+14735,3,2,4,169,0,141
+14747,3,2,4,836,0,313
+14748,2,1,2,3,0,11
+14749,1,0,1,0,0,2
+14750,4,2,6,169,0,213
+14751,4,2,5,169,0,318
+14752,2,2,3,836,0,277
+14753,2,2,3,836,0,273
+14793,1,0,1,0,0,2
+14794,1,0,1,0,0,2
+14795,2,2,3,836,1,314
+14796,2,2,3,836,1,309
+14827,2,2,3,836,,3
+14828,3,2,4,836,,2
+14839,3,4,7,1,,49
+14840,3,2,4,169,,3
+14841,5,2,6,169,,2
+14853,3,2,4,836,0,297
+14854,2,1,2,3,0,11
+14855,1,0,1,0,0,2
+14856,4,2,6,169,0,186
+14857,1,0,1,0,0,2
+14858,4,2,6,169,0,164
+14859,4,2,5,169,0,334
+14860,2,2,3,836,0,275
+14861,2,2,3,836,0,279
+14874,3,2,4,836,0,294
+14875,2,1,2,1,0,10
+14876,3,4,7,1,,49
+14877,4,2,6,169,0,230
+14878,1,0,1,0,0,2
+14879,2,2,3,169,,3
+14880,4,2,5,169,0,318
+14881,3,4,7,1,,46
+14882,3,4,7,1,,51
+14883,2,2,3,836,0,289
+14884,2,2,3,836,0,271
+14896,4,2,6,836,,79
+14897,2,2,3,836,0,2368
+14925,1,0,1,0,0,1
+14926,1,0,1,0,0,2
+14927,2,2,3,836,0,281
+14928,2,2,3,836,0,276
+14951,3,2,4,836,0,457
+14952,3,2,4,169,,134
+14961,3,4,7,1,,46
+14962,1,0,1,0,0,2
+14963,2,2,3,169,,21
+14964,2,2,3,169,0,764
+14965,3,2,4,169,,666
+14966,3,2,4,836,,48
+14967,2,1,2,1,,45
+14968,3,2,4,169,,695
+14969,3,2,4,169,,703
+14970,3,2,4,169,,707
+14971,3,2,4,169,,3
+14979,3,4,7,1,,46
+14980,1,0,1,0,0,2
+14981,1,0,1,0,0,2
+14982,2,2,3,169,,2
+14983,2,2,3,169,,2
+14984,2,2,3,169,0,787
+14985,2,2,3,169,0,798
+14986,2,2,3,169,0,764
+14987,2,2,3,169,0,797
+14996,4,2,6,836,,78
+14997,2,2,3,836,0,2541
+15005,3,2,4,836,0,2563
+15006,2,2,3,836,0,2558
+15014,3,2,4,836,0,2621
+15015,2,2,3,836,0,2520
+15043,1,0,1,0,0,2
+15044,2,2,3,836,0,229
+15045,2,2,3,836,0,270
+15080,1,0,1,0,0,2
+15081,2,2,3,836,0,271
+15082,2,2,3,836,0,280
+15097,2,2,3,836,0,2445
+15098,1,0,1,0,0,2
+15099,1,0,1,0,0,2
+15100,1,0,1,0,0,2
+15109,2,2,3,836,0,2534
+15110,1,0,1,0,0,2
+15111,1,0,1,0,0,2
+15112,1,0,1,0,0,2
+15120,2,2,3,836,0,2534
+15121,1,0,1,0,0,2
+15122,1,0,1,0,0,2
+15123,1,0,1,0,0,1
+15133,2,2,3,836,0,2533
+15134,1,0,1,0,0,2
+15135,1,0,1,0,0,2
+15136,1,0,1,0,0,2
+15137,1,0,1,0,0,2
+15138,2,2,3,836,0,230
+15139,2,2,3,836,0,270
+15148,2,2,3,836,0,2543
+15149,1,0,1,0,0,2
+15150,1,0,1,0,0,1
+15151,1,0,1,0,0,2
+15179,1,0,1,0,0,1
+15180,2,2,3,836,0,2536
+15181,2,2,3,836,0,2570
+15209,1,0,1,0,0,2
+15210,2,2,3,836,0,2558
+15211,2,2,3,836,0,2610
+15239,1,0,1,0,0,2
+15240,2,2,3,836,0,2712
+15241,2,2,3,836,0,2602
+15269,1,0,1,0,0,1
+15270,2,2,3,836,0,2575
+15271,2,2,3,836,0,2583
+15299,1,0,1,0,0,2
+15300,2,2,3,836,0,2567
+15301,2,2,3,836,0,2567
+15329,1,0,1,0,0,2
+15330,2,2,3,836,0,2502
+15331,2,2,3,836,0,2563
+15359,1,0,1,0,0,2
+15360,2,2,3,836,0,2529
+15361,2,2,3,836,0,2559
+15389,1,0,1,0,0,1
+15390,2,2,3,836,0,2541
+15391,2,2,3,836,0,2506
+15419,1,0,1,0,0,1
+15420,1,0,1,0,0,1
+15421,1,0,1,0,0,2
+15422,1,0,1,0,0,2
+15423,2,2,3,836,0,240
+15424,2,2,3,836,0,280
+15486,1,0,1,0,0,2
+15487,2,2,3,836,0,2428
+15488,2,2,3,836,0,2507
+15516,1,0,1,0,0,1
+15517,2,2,3,836,0,2509
+15518,2,2,3,836,0,2479
+15526,2,2,3,836,0,2542
+15527,1,0,1,0,0,2
+15528,1,0,1,0,0,2
+15529,1,0,1,0,0,2
+15538,2,2,3,836,0,2564
+15539,1,0,1,0,0,1
+15540,1,0,1,0,0,1
+15541,1,0,1,0,0,1
+15549,2,2,3,836,0,2552
+15550,1,0,1,0,0,2
+15551,1,0,1,0,0,2
+15552,1,0,1,0,0,1
+15562,2,2,3,836,0,2566
+15563,1,0,1,0,0,2
+15564,1,0,1,0,0,2
+15565,1,0,1,0,0,1
+15566,1,0,1,0,0,1
+15567,1,0,1,0,0,1
+15568,2,2,3,836,0,239
+15569,2,2,3,836,0,278
+15578,2,2,3,836,0,2494
+15579,1,0,1,0,0,2
+15580,1,0,1,0,0,2
+15581,1,0,1,0,0,1
+15591,2,2,3,836,0,2557
+15592,1,0,1,0,0,2
+15593,1,0,1,0,0,2
+15594,1,0,1,0,0,2
+15603,2,2,3,836,0,2516
+15604,1,0,1,0,0,2
+15605,1,0,1,0,0,2
+15606,1,0,1,0,0,2
+15607,2,2,3,836,0,2561
+15608,1,0,1,0,0,2
+15609,1,0,1,0,0,1
+15610,1,0,1,0,0,1
+15620,2,2,3,836,0,2573
+15621,1,0,1,0,0,2
+15622,1,0,1,0,0,2
+15623,1,0,1,0,0,1
+15624,2,2,3,836,0,2524
+15625,1,0,1,0,0,2
+15626,1,0,1,0,0,1
+15627,1,0,1,0,0,2
+15636,2,2,3,836,0,2556
+15637,1,0,1,0,0,2
+15638,1,0,1,0,0,2
+15639,1,0,1,0,0,1
+15640,2,2,3,836,0,2477
+15641,1,0,1,0,0,2
+15642,1,0,1,0,0,1
+15643,1,0,1,0,0,2
+15654,2,2,3,836,0,2513
+15655,1,0,1,0,0,2
+15656,1,0,1,0,0,1
+15657,1,0,1,0,0,2
+15658,1,0,1,0,0,4
+15659,2,2,3,836,0,2523
+15660,1,0,1,0,0,1
+15661,1,0,1,0,0,1
+15662,1,0,1,0,0,1
+15663,1,0,1,0,0,2
+15664,2,2,3,836,0,232
+15665,2,2,3,836,0,269
+15675,2,2,3,836,0,2501
+15676,1,0,1,0,0,2
+15677,1,0,1,0,0,2
+15678,1,0,1,0,0,2
+15679,2,2,3,836,0,2538
+15680,1,0,1,0,0,1
+15681,1,0,1,0,0,1
+15682,1,0,1,0,0,1
+15693,2,2,3,836,0,2604
+15694,1,0,1,0,0,2
+15695,1,0,1,0,0,2
+15696,1,0,1,0,0,2
+15697,2,2,3,836,0,2529
+15698,1,0,1,0,0,2
+15699,1,0,1,0,0,2
+15700,1,0,1,0,0,2
+15728,1,0,1,0,0,1
+15729,1,0,1,0,0,1
+15730,1,0,1,0,0,1
+15731,1,0,1,0,0,1
+15732,2,2,3,836,0,254
+15733,2,2,3,836,0,270
+15774,1,0,1,0,0,2
+15775,3,1,3,1,0,16
+15803,1,0,1,0,0,2
+15804,2,2,3,836,0,322
+15805,2,2,3,836,0,335
+15840,1,0,1,0,0,2
+15841,1,0,1,0,0,2
+15842,1,0,1,0,0,7
+15843,2,2,3,836,0,315
+15844,2,2,3,836,0,287
+15872,3,2,4,169,,8
+15882,3,2,5,836,0,2413
+15883,2,2,3,1,0,46
+15884,1,0,1,0,0,1
+15885,1,0,1,1,0,3
+15886,2,2,3,1,0,9
+15887,2,2,3,836,0,2564
+15888,2,2,3,836,0,2538
+15901,2,2,3,836,0,2525
+15902,2,2,3,836,0,2550
+15903,2,2,3,836,0,2543
+15904,1,0,1,1,0,2
+15905,2,2,3,836,0,2547
+15906,1,0,1,0,0,1
+15907,2,2,3,21,0,142
+15908,1,0,1,0,0,2
+15909,2,2,3,836,0,2576
+15910,1,0,1,0,0,1
+15911,1,0,1,0,0,1
+15912,2,2,3,21,0,143
+15913,1,0,1,0,0,1
+15914,2,2,3,21,0,183
+15915,1,0,1,0,0,3
+15916,2,2,3,169,0,804
+15917,1,0,1,1,0,3
+15918,2,2,3,1,0,11
+15945,1,0,1,0,0,3
+15946,2,2,3,836,0,2447
+15947,2,2,3,836,0,2521
+15955,1,0,1,1,0,3
+15956,4,2,5,12,,6
+15984,1,0,1,0,0,2
+15985,1,0,1,0,0,1
+15986,1,0,1,0,0,1
+15987,2,2,3,836,0,257
+15988,2,2,3,836,0,277
+16019,2,2,3,169,,3
+16020,3,2,4,1,,15
+16021,3,2,4,1,,3
+16028,3,1,3,1,,9
+16029,3,1,3,1,,4
+16036,3,4,7,1,,90
+16037,3,1,3,1,,9
+16038,1,0,1,0,0,2
+16039,3,2,5,1,,2
+16040,2,2,3,169,,2
+16041,3,1,3,1,,11
+16049,3,4,7,1,,57
+16050,3,1,3,1,,10
+16051,3,2,4,836,,23
+16052,2,1,2,20,,2
+16053,2,2,3,169,,3
+16054,3,1,3,1,,9
+16055,1,0,1,0,0,3
+16056,3,1,3,1,,3
+16084,1,0,1,0,0,3
+16085,1,0,1,0,0,2
+16086,1,0,1,0,0,1
+16087,2,2,3,836,0,318
+16088,2,2,3,836,0,267
+16140,1,0,1,0,0,3
+16141,1,0,1,0,0,2
+16142,1,0,1,0,0,2
+16143,1,0,1,0,0,2
+16144,2,2,3,836,0,307
+16145,2,2,3,836,0,299
+16186,3,2,4,836,0,300
+16187,2,2,3,836,0,297
+16194,3,2,4,836,0,286
+16195,2,2,3,836,0,285
+16202,3,2,4,836,0,285
+16203,2,2,3,836,0,283
+16231,1,0,1,0,0,2
+16232,1,0,1,0,0,2
+16233,1,0,1,0,0,2
+16234,1,0,1,0,0,2
+16235,1,0,1,0,0,2
+16236,1,0,1,0,0,1
+16237,1,0,1,0,0,2
+16238,2,2,3,836,0,277
+16239,2,2,3,836,0,271
+16337,1,0,1,0,0,2
+16338,2,2,3,836,0,2388
+16339,2,2,3,836,0,2528
+16367,1,0,1,0,0,2
+16368,1,0,1,0,0,2
+16369,1,0,1,0,0,2
+16370,1,0,1,0,0,2
+16371,1,0,1,0,0,1
+16372,1,0,1,0,0,2
+16373,2,2,3,836,0,256
+16374,2,2,3,836,0,260
+16459,1,0,1,0,0,2
+16460,1,0,1,0,0,2
+16461,2,2,3,836,0,252
+16462,2,2,3,836,0,253
+16504,1,0,1,0,0,2
+16505,1,0,1,0,0,2
+16506,1,0,1,0,0,2
+16507,1,0,1,0,0,2
+16508,1,0,1,0,0,1
+16509,1,0,1,0,0,2
+16510,1,0,1,0,0,2
+16511,2,2,3,836,0,259
+16512,2,2,3,836,0,255
+16610,1,0,1,0,0,2
+16611,1,0,1,0,0,2
+16612,2,2,3,836,0,262
+16613,2,2,3,836,0,272
+16654,1,0,1,0,0,2
+16655,1,0,1,0,0,2
+16656,2,2,3,836,0,261
+16657,2,2,3,836,0,253
+16700,1,0,1,0,0,2
+16701,1,0,1,0,0,2
+16702,1,0,1,0,0,2
+16703,1,0,1,0,0,2
+16704,1,0,1,0,0,5
+16705,1,0,1,0,0,2
+16706,1,0,1,0,0,2
+16707,1,0,1,0,0,2
+16708,2,2,3,836,0,262
+16709,2,2,3,836,0,258
+16801,3,2,4,836,0,275
+16809,2,1,2,836,,47
+16810,4,3,8,836,,150
+16811,2,2,3,836,,258
+16818,3,2,4,836,,7
+16819,3,2,4,836,,7
+16820,3,2,4,836,,283
+16830,3,2,4,836,,6
+16831,3,2,4,836,,7
+16832,3,2,4,836,,270
+16842,1,0,1,0,0,2
+16843,2,2,3,836,0,2344
+16844,2,2,3,836,0,2519
+16845,1,0,1,0,0,2
+16846,2,2,3,836,0,2491
+16847,2,2,3,836,0,2501
+16848,1,0,1,0,0,1
+16849,2,2,3,836,0,2507
+16850,2,2,3,836,0,2478
+16851,2,2,3,836,0,2491
+16852,1,0,1,0,0,4
+16853,1,0,1,0,0,1
+16854,2,1,2,20,0,238
+16855,1,0,1,0,0,2
+16856,2,2,3,836,0,2487
+16857,2,2,3,836,0,2565
+16858,2,2,3,836,0,2508
+16859,2,2,3,836,0,2533
+16867,3,2,5,169,,7
+16868,3,2,5,169,,6
+16869,3,2,5,169,,64
+16883,1,0,1,0,0,2
+16898,1,0,1,0,0,2
+16899,2,2,3,836,0,272
+16900,2,2,3,836,0,271
+16908,1,0,1,0,0,2
+16936,1,0,1,0,0,2
+16937,1,0,1,0,0,1
+16938,1,0,1,0,0,4
+16939,2,2,3,836,0,286
+16940,2,2,3,836,0,276
+16992,1,0,1,0,0,4
+16993,2,2,3,836,0,2409
+16994,2,2,3,836,0,2527
+17022,1,0,1,0,0,2
+17023,1,0,1,0,0,2
+17024,1,0,1,0,0,2
+17025,1,0,1,0,0,1
+17026,1,0,1,0,0,2
+17027,1,0,1,0,0,1
+17028,1,0,1,0,0,1
+17029,1,0,1,0,0,2
+17030,2,2,3,836,0,249
+17031,2,2,3,836,0,281
+17122,3,2,4,169,0,802
+17123,3,2,4,169,0,88
+17124,3,2,4,169,0,102
+17158,1,0,1,0,0,3
+17159,1,0,1,0,0,2
+17160,2,2,3,836,0,283
+17161,2,2,3,836,0,309
+17184,3,2,4,836,,288
+17185,2,2,3,836,0,290
+17213,1,0,1,0,0,2
+17214,1,0,1,0,0,2
+17215,2,2,3,836,0,289
+17216,2,2,3,836,0,274
+17259,1,0,1,0,0,2
+17260,1,0,1,0,0,5
+17261,1,0,1,0,0,2
+17262,1,0,1,0,0,2
+17263,1,0,1,0,0,2
+17264,1,0,1,0,0,1
+17265,1,0,1,0,0,2
+17266,1,0,1,0,0,6
+17267,1,0,1,0,0,6
+17268,1,0,1,0,0,2
+17269,1,0,1,0,0,1
+17270,1,0,1,0,0,1
+17271,2,2,3,836,0,348
+17272,2,2,3,836,0,281
+17429,3,3,5,836,0,169
+17437,2,3,4,836,0,151
+17445,3,3,5,836,0,160
+17453,2,1,2,836,,49
+17454,4,3,8,836,,168
+17455,2,2,3,836,,282
+17483,1,0,1,0,0,3
+17484,1,0,1,0,0,2
+17485,2,2,3,836,0,288
+17486,2,2,3,836,0,265
+17529,1,0,1,0,0,2
+17530,1,0,1,0,0,2
+17531,1,0,1,0,0,1
+17532,1,0,1,0,0,5
+17533,1,0,1,0,0,2
+17534,1,0,1,0,0,1
+17535,1,0,1,0,0,2
+17536,1,0,1,0,0,2
+17537,1,0,1,0,0,1
+17538,1,0,1,0,0,2
+17539,2,2,3,836,0,278
+17540,2,2,3,836,0,280
+17662,2,3,4,836,0,151
+17670,2,3,4,836,0,149
+17678,2,3,4,836,0,152
+17686,2,1,2,836,,56
+17687,4,3,8,836,,178
+17688,2,2,3,836,,284
+17695,2,4,5,836,,149
+17703,2,4,5,836,,144
+17712,2,4,5,836,0,127
+17720,2,4,5,836,,136
+17729,2,4,5,836,,138
+17736,3,2,4,836,0,270
+17737,2,1,2,1,0,6
+17738,5,7,12,3,,67
+17739,7,9,20,3,,94
+17740,4,2,5,1,0,20
+17753,3,2,4,836,0,273
+17754,2,1,2,1,0,6
+17755,3,2,4,836,0,272
+17756,2,1,2,5,0,14
+17757,1,0,1,0,0,2
+17758,5,2,9,4,0,151
+17759,3,2,4,1,2,74
+17760,1,0,1,0,0,2
+17761,5,9,16,3,,80
+17762,4,2,5,169,0,130
+17763,5,3,10,169,0,184
+17764,2,2,3,1,0,10
+17772,3,2,4,836,0,274
+17773,2,1,2,1,0,6
+17774,1,0,1,0,0,2
+17775,5,9,16,3,,75
+17776,4,2,5,169,0,130
+17777,2,2,3,1,0,10
+17805,1,0,1,0,0,2
+17806,2,2,3,836,0,2356
+17807,2,2,3,836,0,2494
+17835,1,0,1,0,0,2
+17836,1,0,1,0,0,1
+17837,2,2,3,836,0,234
+17838,2,2,3,836,0,255
+17881,1,0,1,0,0,2
+17882,1,0,1,0,0,2
+17883,1,0,1,0,0,1
+17884,2,2,3,836,0,254
+17885,2,2,3,836,0,251
+17923,1,0,1,0,0,2
+17938,1,0,1,0,0,6
+17939,2,2,3,836,0,251
+17940,2,2,3,836,0,248
+17948,1,0,1,0,0,2
+17962,1,0,1,0,0,2
+17977,1,0,1,0,0,2
+17978,2,2,3,836,0,255
+17979,2,2,3,836,0,261
+17987,1,0,1,0,0,2
+18015,1,0,1,0,0,2
+18016,1,0,1,0,0,2
+18017,2,2,3,836,0,253
+18018,2,2,3,836,0,253
+18061,1,0,1,0,0,5
+18062,1,0,1,0,0,2
+18063,2,2,3,836,0,252
+18064,2,2,3,836,0,251
+18107,1,0,1,0,0,5
+18108,1,0,1,0,0,2
+18109,2,2,3,836,0,253
+18110,2,2,3,836,0,263
+18153,1,0,1,0,0,2
+18154,1,0,1,0,0,2
+18155,1,0,1,0,0,35
+18156,1,0,1,0,0,3
+18157,1,0,1,0,0,2
+18158,1,0,1,0,0,2
+18159,1,0,1,0,0,3
+18160,2,2,3,836,0,299
+18161,2,2,3,836,0,266
+18240,2,2,3,836,0,2374
+18241,1,0,1,0,0,2
+18242,1,0,1,0,0,1
+18243,1,0,1,0,0,1
+18244,2,2,3,836,0,2535
+18245,1,0,1,0,0,1
+18246,1,0,1,0,0,1
+18247,1,0,1,0,0,1
+18257,2,2,3,836,0,2507
+18258,1,0,1,0,0,1
+18259,1,0,1,0,0,1
+18260,1,0,1,0,0,1
+18261,2,2,3,836,0,2535
+18262,1,0,1,0,0,2
+18263,1,0,1,0,0,1
+18264,1,0,1,0,0,1
+18273,2,2,3,836,0,2528
+18274,1,0,1,0,0,2
+18275,1,0,1,0,0,1
+18276,1,0,1,0,0,2
+18277,2,2,3,836,0,2524
+18278,1,0,1,0,0,1
+18279,1,0,1,0,0,1
+18280,1,0,1,0,0,1
+18291,2,2,3,836,0,2550
+18292,1,0,1,0,0,1
+18293,1,0,1,0,0,1
+18294,1,0,1,0,0,1
+18295,1,0,1,0,0,1
+18296,2,2,3,836,0,2534
+18297,1,0,1,0,0,2
+18298,1,0,1,0,0,2
+18299,1,0,1,0,0,2
+18300,1,0,1,0,0,1
+18301,1,0,1,0,0,1
+18302,1,0,1,0,0,1
+18303,1,0,1,0,0,2
+18304,2,2,3,836,0,238
+18305,2,2,3,836,0,289
+18315,2,2,3,836,0,2433
+18316,1,0,1,0,0,2
+18317,1,0,1,0,0,1
+18318,1,0,1,0,0,2
+18319,2,2,3,836,0,2553
+18320,1,0,1,0,0,2
+18321,1,0,1,0,0,1
+18322,1,0,1,0,0,2
+18333,2,2,3,836,0,2544
+18334,1,0,1,0,0,2
+18335,1,0,1,0,0,2
+18336,1,0,1,0,0,1
+18337,2,2,3,836,0,2558
+18338,1,0,1,0,0,2
+18339,1,0,1,0,0,1
+18340,1,0,1,0,0,4
+18352,2,2,3,836,0,2554
+18353,1,0,1,0,0,2
+18354,1,0,1,0,0,1
+18355,1,0,1,0,0,1
+18356,2,2,3,836,0,2522
+18357,1,0,1,0,0,2
+18358,1,0,1,0,0,2
+18359,1,0,1,0,0,2
+18372,2,2,3,836,0,2518
+18373,1,0,1,0,0,1
+18374,1,0,1,0,0,1
+18375,1,0,1,0,0,1
+18376,2,2,3,836,0,2544
+18377,1,0,1,0,0,2
+18378,1,0,1,0,0,2
+18379,1,0,1,0,0,1
+18393,2,2,3,836,0,2519
+18394,1,0,1,0,0,2
+18395,1,0,1,0,0,2
+18396,1,0,1,0,0,2
+18397,2,2,3,836,0,2515
+18398,1,0,1,0,0,2
+18399,1,0,1,0,0,1
+18400,1,0,1,0,0,1
+18407,2,2,3,836,0,244
+18408,2,2,3,836,0,273
+18416,2,2,3,836,0,273
+18417,2,2,3,836,0,273
+18426,2,2,3,836,0,299
+18427,2,2,3,836,0,268
+18435,2,2,3,836,0,268
+18436,2,2,3,836,0,270
+18444,2,2,3,836,0,279
+18445,2,2,3,836,0,288
+18454,3,3,6,836,0,2835
+18455,2,2,3,836,0,2762
+18462,2,2,3,836,0,280
+18463,2,2,3,836,0,274
+18472,2,2,3,836,0,276
+18473,1,0,1,0,0,2
+18474,2,2,3,836,0,266
+18475,2,2,3,836,0,268
+18483,2,2,3,836,0,265
+18484,2,2,3,836,0,264
+18494,2,2,3,836,0,272
+18495,1,0,1,0,0,2
+18496,2,2,3,836,0,268
+18497,2,2,3,836,0,262
+18506,2,2,3,836,0,264
+18507,2,2,3,836,0,260
+18515,2,2,3,836,0,264
+18516,2,2,3,836,0,262
+18526,2,2,3,836,0,266
+18527,1,0,1,0,0,2
+18528,2,2,3,836,0,265
+18529,2,2,3,836,0,266
+18538,2,2,3,836,0,261
+18539,2,2,3,836,0,265
+18550,1,0,1,0,0,5
+18551,2,2,3,169,0,84
+18552,2,2,3,169,0,78
+18553,2,2,3,836,0,259
+18554,2,2,3,836,0,265
+18555,2,2,3,836,0,266
+18556,2,2,3,836,0,259
+18565,2,2,3,836,0,256
+18566,2,2,3,836,0,261
+18575,2,2,3,836,0,259
+18576,2,2,3,836,0,258
+18586,2,2,3,836,0,259
+18587,2,2,3,836,0,261
+18597,2,2,3,836,0,256
+18598,2,2,3,836,0,264
+18608,2,2,3,836,0,2787
+18609,2,2,3,836,0,2348
+18619,2,2,3,836,0,2558
+18620,2,2,3,836,0,2569
+18630,3,3,6,836,0,2508
+18631,2,2,3,836,0,2507
+18641,3,3,6,836,0,2540
+18642,2,2,3,836,0,2482
+18652,3,3,6,836,0,2546
+18653,2,2,3,836,0,2510
+18663,3,3,6,836,0,2473
+18664,2,2,3,836,0,2526
+18673,3,2,5,836,0,2518
+18674,2,2,3,836,0,2516
+18683,3,2,5,836,0,2576
+18684,2,2,3,836,0,2531
+18693,3,2,5,836,0,2537
+18694,2,2,3,836,0,2561
+18702,2,2,3,836,0,2494
+18703,2,2,3,836,0,2521
+18711,2,2,3,836,0,2519
+18712,2,2,3,836,0,2547
+18720,3,3,6,836,,88
+18721,2,2,3,836,0,2755
+18729,3,3,6,836,,76
+18730,2,2,3,836,0,2485
+18738,3,3,6,836,,59
+18739,2,2,3,836,0,2522
+18747,3,3,6,836,,69
+18748,2,2,3,836,0,2515
+18756,3,2,5,836,,44
+18757,2,2,3,836,0,2532
+18765,3,2,5,836,,46
+18766,2,2,3,836,0,2534
+18774,3,2,5,836,,44
+18775,2,2,3,836,0,2571
+18783,3,2,5,836,,98
+18784,2,2,3,836,0,2475
+18792,3,2,5,836,,98
+18793,2,2,3,836,0,2479
+18801,3,2,5,836,,99
+18802,2,2,3,836,0,2504
+18811,1,0,1,0,0,1
+18812,2,4,5,169,,90
+18813,5,2,9,836,0,3178
+18814,2,2,3,836,0,2487
+18822,1,0,1,0,0,2
+18823,3,2,5,836,0,2643
+18824,2,2,3,836,0,2539
+18825,3,2,5,836,0,2611
+18826,2,2,3,836,0,2546
+18833,2,2,3,836,0,2529
+18834,2,2,3,836,0,2567
+18843,1,0,1,0,0,2
+18844,2,4,5,169,,77
+18845,5,2,9,836,0,3137
+18846,2,2,3,836,0,2412
+18854,3,2,5,836,0,2670
+18855,2,2,3,836,0,2497
+18862,2,2,3,836,0,2488
+18863,2,2,3,836,0,2512
+18871,3,2,4,836,0,2602
+18872,2,2,3,836,0,2504
+18881,3,2,5,836,0,2586
+18882,2,2,3,836,0,2528
+18889,2,2,3,836,0,2527
+18890,2,2,3,836,0,2515
+18898,3,2,4,836,0,2613
+18899,2,2,3,836,0,2505
+18908,3,2,5,836,0,2611
+18909,2,2,3,836,0,2501
+18916,2,2,3,836,0,2581
+18917,2,2,3,836,0,2534
+18925,3,2,4,836,0,2605
+18926,2,2,3,836,0,2575
+18935,3,2,5,836,0,2660
+18936,2,2,3,836,0,2557
+18944,3,2,4,836,0,3276
+18945,2,2,3,836,0,2543
+18953,3,2,4,836,0,2585
+18954,2,2,3,836,0,2486
+18962,3,2,4,836,0,2563
+18963,2,2,3,836,0,2522
+18971,3,2,4,836,0,2559
+18972,2,2,3,836,0,2570
+18980,3,2,4,836,0,2584
+18981,2,2,3,836,0,2562
+18989,3,2,4,836,0,2859
+18990,2,2,3,836,0,2592
+18998,3,2,4,836,0,2581
+18999,2,2,3,836,0,2555
+19007,3,2,4,836,0,2578
+19008,2,2,3,836,0,2570
+19016,3,2,4,836,0,2572
+19017,2,2,3,836,0,2556
+19034,3,3,6,838,0,299
+19035,2,2,3,838,0,262
+19052,3,3,6,838,0,318
+19053,2,2,3,838,0,260
+19073,4,2,7,838,0,313
+19074,2,2,3,838,0,263
+19089,2,1,2,838,0,52
+19090,2,2,3,838,0,258
+19091,2,1,2,164,0,66
+19092,1,0,1,1,0,3
+19093,2,2,3,170,0,115
+19094,2,2,3,170,0,81
+19101,2,1,2,836,,54
+19102,2,1,2,836,,2
+19103,2,1,2,836,,2
+19104,2,2,3,169,,3
+19105,2,2,3,169,,2
+19106,3,2,4,169,,3
+19107,3,2,4,169,,3
+19108,3,2,4,169,,7
+19109,2,2,3,169,,3
+19137,1,0,1,0,0,4
+19138,1,0,1,0,0,2
+19139,1,0,1,0,0,1
+19140,2,2,3,836,0,287
+19141,2,2,3,836,0,260
+19193,1,0,1,0,0,2
+19194,1,0,1,0,0,1
+19195,2,2,3,836,0,264
+19196,2,2,3,836,0,265
+19220,3,1,3,164,0,78
+19221,2,1,2,1,,6
+19249,1,0,1,0,0,3
+19250,1,0,1,0,0,5
+19251,1,0,1,0,0,3
+19252,1,0,1,0,0,2
+19253,2,2,3,836,0,306
+19254,2,2,3,836,0,282
+19296,3,2,4,836,0,318
+19324,1,0,1,0,0,6
+19325,1,0,1,0,0,2
+19326,1,0,1,0,0,2
+19327,1,0,1,0,0,2
+19328,1,0,1,0,0,2
+19329,2,2,3,836,0,293
+19330,2,2,3,836,0,300
+19383,3,2,4,836,0,307
+19411,1,0,1,0,0,3
+19412,1,0,1,0,0,2
+19413,1,0,1,0,0,2
+19414,2,2,3,836,0,284
+19415,2,2,3,836,0,275
+19446,3,2,4,169,0,109
+19447,3,2,4,169,0,778
+19454,3,1,3,2,,9
+19462,5,2,6,836,0,2727
+19463,2,2,3,836,0,2552
+19491,1,0,1,0,0,2
+19492,1,0,1,0,0,2
+19493,2,2,3,836,0,268
+19494,2,2,3,836,0,259
+19519,6,2,7,836,0,302
+19520,2,2,3,836,0,263
+19532,6,2,7,836,0,295
+19533,2,2,3,836,0,262
+19541,5,2,6,836,0,291
+19542,2,2,3,836,0,257
+19550,5,2,6,836,0,289
+19551,2,2,3,836,0,261
+19558,3,5,7,836,,215
+19566,3,5,7,836,,134
+19575,3,5,7,836,0,120
+19583,2,5,6,836,,122
+19592,2,5,6,836,,137
+19602,2,5,6,836,0,109
+19610,3,5,7,836,,134
+19619,2,5,6,836,,122
+19629,2,5,6,836,,123
+19654,1,0,1,0,0,3
+19669,1,0,1,0,0,2
+19670,2,2,3,836,0,261
+19671,2,2,3,836,0,254
+19679,1,0,1,0,0,5
+19707,1,0,1,0,0,2
+19708,1,0,1,0,0,2
+19709,1,0,1,0,0,2
+19710,1,0,1,0,0,2
+19711,1,0,1,0,0,2
+19712,1,0,1,0,0,2
+19713,2,2,3,836,0,260
+19714,2,2,3,836,0,258
+19796,1,0,1,0,0,2
+19797,1,0,1,0,0,2
+19798,2,2,3,836,0,258
+19799,2,2,3,836,0,260
+19821,2,2,3,169,,2
+19822,3,2,4,169,,2
+19829,1,0,1,0,0,2
+19830,1,0,1,1,0,3
+19831,2,1,2,1,0,8
+19832,2,1,2,1,0,8
+19839,4,1,4,1,0,17
+19846,1,0,1,1,0,3
+19847,2,1,2,1,0,6
+19848,2,1,2,1,0,6
+19876,1,0,1,0,0,3
+19877,1,0,1,0,0,2
+19878,2,2,3,836,0,295
+19879,2,2,3,836,0,267
+19922,1,0,1,0,0,2
+19923,1,0,1,0,0,2
+19924,1,0,1,0,0,1
+19925,2,2,3,836,0,280
+19926,2,2,3,836,0,270
+19972,1,0,1,0,0,2
+19973,1,0,1,0,0,2
+19974,2,2,3,836,0,292
+19975,2,2,3,836,0,286
+20003,1,0,1,0,0,2
+20004,1,0,1,0,0,2
+20005,1,0,1,0,0,2
+20006,2,2,3,836,0,271
+20007,2,2,3,836,0,269
+20059,1,0,1,0,0,2
+20060,1,0,1,0,0,2
+20061,2,2,3,836,0,273
+20062,2,2,3,836,0,271
+20105,1,0,1,0,0,2
+20106,1,0,1,0,0,4
+20107,1,0,1,0,0,2
+20108,1,0,1,0,0,2
+20109,1,0,1,0,0,2
+20110,1,0,1,0,0,2
+20111,1,0,1,0,0,2
+20112,2,2,3,836,0,280
+20113,2,2,3,836,0,273
+20191,4,2,6,169,0,106
+20192,4,2,6,169,0,109
+20193,3,2,4,1,0,67
+20194,3,2,5,169,0,790
+20195,3,2,4,169,0,90
+20196,3,2,5,169,0,108
+20197,3,2,5,169,0,130
+20205,4,2,5,169,,3
+20206,4,2,5,169,,2
+20207,4,2,5,169,,2
+20208,4,2,5,169,,3
+20209,4,2,5,169,,3
+20210,4,2,5,169,,2
+20211,2,2,3,169,,2
+20219,2,2,3,836,,2
+20220,2,2,3,169,,2
+20221,2,2,3,169,,5
+20222,2,2,3,169,,2
+20223,2,2,3,169,,3
+20231,2,2,3,836,,2
+20232,3,2,4,169,,2
+20233,2,2,3,169,,2
+20234,3,2,5,169,,3
+20235,3,2,4,169,,3
+20236,3,2,4,169,,4
+20237,2,2,3,169,,2
+20238,3,2,4,169,,3
+20239,3,2,4,169,,3
+20240,2,2,3,3,,2
+20241,3,4,6,836,,2
+20256,3,2,4,836,0,304
+20257,3,2,4,169,0,85
+20266,3,2,4,169,0,86
+20267,3,2,5,169,0,106
+20268,2,2,3,836,,2
+20269,2,2,3,169,,2
+20270,2,2,3,169,,2
+20271,2,2,3,169,,2
+20272,3,2,5,169,,3
+20273,2,1,2,836,,2
+20274,3,1,3,2,0,14
+20281,1,0,1,0,0,2
+20282,3,3,5,12,,2
+20283,3,1,3,1,0,13
+20284,2,1,2,1,,2
+20285,3,4,7,1,,53
+20286,2,2,3,1,,3
+20295,3,2,4,169,0,83
+20296,3,2,4,169,0,77
+20297,2,1,2,836,,2
+20298,2,1,2,836,,2
+20299,2,2,3,836,,2
+20300,2,2,3,836,,2
+20301,2,2,3,836,,2
+20302,2,1,2,3,0,6
+20309,2,1,2,3,0,6
+20320,3,2,4,836,0,272
+20321,2,1,2,3,0,5
+20322,3,4,7,1,,47
+20323,4,2,5,3,0,22
+20324,2,1,2,836,,45
+20325,2,2,3,836,0,256
+20326,2,1,2,163,0,43
+20327,1,0,1,1,0,3
+20328,2,2,3,836,0,283
+20329,1,0,1,0,0,3
+20330,2,2,3,836,0,2798
+20331,1,0,1,0,0,2
+20332,1,0,1,0,0,2
+20333,2,1,2,20,0,237
+20334,5,2,6,169,0,107
+20335,1,0,1,0,0,6
+20336,3,4,7,1,,44
+20337,2,2,3,1,0,12
+20338,3,4,7,1,,47
+20339,2,1,2,1,0,11
+20340,2,2,3,169,0,776
+20341,2,1,2,1,0,6
+20342,4,2,5,3,0,18
+20343,4,1,4,1,0,12
+20353,3,4,7,1,,51
+20354,5,2,6,836,0,300
+20355,4,1,4,4,0,23
+20356,4,2,5,836,0,297
+20357,3,1,3,1,0,13
+20358,5,2,6,169,0,1432
+20359,3,2,4,169,0,79
+20360,2,2,3,1,0,11
+20368,6,2,7,836,0,308
+20369,5,1,5,4,0,26
+20370,6,2,9,836,0,441
+20371,5,2,7,169,0,153
+20372,2,2,3,1,0,11
+20380,3,4,7,1,,55
+20381,1,0,1,0,,2
+20382,1,0,1,1,0,4
+20383,1,0,1,1,0,2
+20384,3,1,3,1,,8
+20385,1,0,1,1,0,2
+20386,2,1,2,1,,2
+20387,1,0,1,1,0,2
+20388,3,1,3,1,,7
+20389,2,1,2,1,,2
+20390,1,0,1,1,0,2
+20391,2,2,3,836,0,2442
+20392,1,0,1,0,0,2
+20393,1,0,1,0,0,1
+20394,2,1,2,20,0,193
+20395,4,2,5,3,,3
+20396,1,0,1,1,0,3
+20397,2,2,3,836,0,2509
+20398,1,0,1,0,0,2
+20399,1,0,1,0,0,1
+20400,2,1,2,20,0,180
+20401,4,2,5,3,,4
+20402,2,2,3,836,0,2533
+20403,1,0,1,0,0,2
+20404,1,0,1,0,0,1
+20405,2,1,2,20,0,183
+20406,3,2,4,3,,4
+20407,1,0,1,1,0,2
+20408,1,0,1,1,,2
+20409,2,1,2,2,0,7
+20420,2,2,3,836,0,277
+20421,1,0,1,0,0,2
+20422,3,2,4,169,0,93
+20423,3,2,4,169,0,127
+20424,3,2,4,169,0,118
+20425,4,3,8,169,,80
+20426,2,1,2,836,0,48
+20427,2,1,2,836,0,55
+20428,2,1,2,163,0,49
+20429,3,2,5,169,0,110
+20430,4,3,7,836,0,260
+20431,5,2,7,169,0,125
+20432,3,2,4,169,0,114
+20433,7,2,8,169,0,2359
+20434,4,1,4,3,0,15
+20435,7,2,8,169,0,2557
+20436,2,2,3,836,0,330
+20437,2,2,3,836,0,275
+20444,5,4,8,1,,232
+20453,3,2,4,836,0,283
+20454,2,1,2,1,0,7
+20455,5,2,6,836,0,316
+20456,4,1,4,4,0,22
+20457,3,4,7,1,,53
+20458,5,2,9,4,0,154
+20459,5,2,6,1,2,90
+20460,3,4,7,1,,69
+20461,4,2,5,169,0,137
+20462,5,3,10,169,0,200
+20463,4,3,8,169,0,2109
+20464,3,2,4,169,0,84
+20465,1,0,1,1,0,3
+20466,3,4,7,1,,55
+20467,5,2,9,2,0,43
+20468,4,2,5,169,0,1633
+20469,3,4,7,1,,47
+20478,3,4,7,1,,47
+20479,3,4,7,1,,47
+20480,3,4,7,1,,45
+20481,5,6,11,8,,61
+20482,1,0,1,0,0,3
+20483,2,2,3,1,,2
+20484,4,2,6,836,,24
+20485,3,2,4,27,,3
+20486,2,2,3,1,,2
+20487,2,1,2,1,,2
+20488,1,0,1,0,0,2
+20489,2,2,3,1,,2
+20490,1,0,1,0,0,2
+20491,3,1,3,3,,2
+20492,2,1,2,1,,2
+20493,3,2,4,836,,6
+20494,2,1,2,3,,1
+20495,1,0,1,0,0,2
+20496,2,1,2,1,0,7
+20497,3,4,7,1,,48
+20506,3,4,7,1,,45
+20507,2,2,3,1,,3
+20508,3,2,4,836,,6
+20509,2,1,2,1,,2
+20510,2,1,2,1,,9
+20511,3,4,7,1,,44
+20512,2,2,3,836,0,296
+20513,2,2,3,836,0,273
+20519,1,0,1,1,0,3
+20520,3,4,7,1,,49
+20521,1,0,1,1,0,5
+20522,3,4,7,1,,43
+20523,2,1,2,1,0,6
+20530,1,0,1,1,0,3
+20531,1,0,1,0,0,2
+20532,3,2,4,169,,3
+20533,3,2,4,169,,3
+20534,3,4,7,1,,45
+20535,1,0,1,1,0,3
+20536,3,4,7,1,,47
+20537,2,1,2,1,0,6
+20544,1,0,1,1,0,3
+20545,1,0,1,0,0,2
+20546,3,2,4,169,,3
+20547,3,2,4,169,,3
+20548,3,4,7,1,,47
+20549,1,0,1,1,0,3
+20550,3,4,7,1,,45
+20551,2,1,2,1,0,6
+20559,3,4,7,1,,50
+20560,1,0,1,1,0,2
+20561,1,0,1,0,0,2
+20562,3,2,4,169,,3
+20563,3,2,4,169,,2
+20564,3,2,4,169,,3
+20565,3,4,7,1,,48
+20566,1,0,1,1,0,3
+20567,3,4,7,1,,45
+20568,2,1,2,1,0,6
+20576,1,0,1,1,0,3
+20577,1,0,1,0,0,2
+20578,3,2,4,169,,3
+20579,3,2,4,169,,3
+20580,3,2,4,169,,3
+20581,3,4,7,1,,49
+20582,1,0,1,1,0,3
+20583,3,4,7,1,,43
+20584,2,1,2,1,0,6
+20594,1,0,1,1,0,3
+20595,1,0,1,0,0,2
+20596,3,2,4,169,,4
+20597,3,2,4,169,,3
+20598,3,2,4,169,,3
+20599,3,2,4,169,,2
+20600,3,2,4,169,,3
+20601,3,4,7,1,,52
+20602,1,0,1,1,0,3
+20603,3,4,7,1,,43
+20604,2,1,2,1,0,6
+20611,1,0,1,1,0,3
+20612,1,0,1,0,0,2
+20613,3,2,4,169,,3
+20614,3,2,4,169,,3
+20615,3,4,7,1,,47
+20616,1,0,1,1,0,2
+20617,3,4,7,1,,43
+20618,2,1,2,1,0,6
+20626,3,4,7,1,,44
+20627,1,0,1,0,0,2
+20628,3,3,7,169,,3
+20629,3,2,4,169,,3
+20630,3,2,4,169,,2
+20631,1,0,1,1,0,3
+20638,3,4,7,1,,48
+20639,3,2,4,836,,325
+20640,3,1,3,836,0,50
+20641,2,2,3,169,0,90
+20642,3,2,4,836,0,503
+20643,2,2,3,169,0,90
+20644,2,1,2,836,0,62
+20645,2,1,2,836,0,48
+20646,2,1,2,163,0,46
+20647,3,2,5,836,0,569
+20648,2,2,3,169,0,85
+20649,3,1,3,836,0,75
+20650,3,2,4,169,0,91
+20651,3,2,4,169,0,89
+20652,5,2,7,169,0,121
+20653,1,0,1,1,0,3
+20654,2,1,2,1,0,7
+20655,3,1,3,1,0,9
+20656,3,4,7,1,,57
+20657,2,1,2,1,0,6
+20658,3,4,7,1,,45
+20665,3,2,4,836,0,286
+20666,4,2,5,169,0,110
+20667,3,2,4,169,0,87
+20674,2,2,3,169,,3
+20675,2,2,3,169,,2
+20676,2,2,3,836,,2
+20677,2,2,3,169,,2
+20678,2,2,3,169,,2
+20679,2,2,3,169,,3
+20680,2,2,3,169,,2
+20681,3,2,4,836,,2
+20688,3,4,7,1,,49
+20689,1,0,1,1,0,3
+20690,3,4,7,1,,45
+20691,5,3,7,12,0,726
+20692,1,0,1,1,0,3
+20693,5,2,6,169,0,1470
+20694,1,0,1,1,0,2
+20695,4,1,4,163,0,43
+20696,2,1,2,163,0,52
+20697,2,1,2,163,0,46
+20698,3,1,3,163,0,59
+20699,3,1,3,163,0,49
+20706,1,0,1,0,0,2
+20707,2,2,3,1,,3
+20708,3,2,4,3,,2
+20709,3,2,4,1,,2
+20710,2,1,2,1,,2
+20711,2,1,2,2,,3
+20712,1,0,1,0,0,2
+20713,2,2,3,1,,2
+20714,3,2,4,3,,2
+20715,3,2,4,1,,2
+20716,2,1,2,1,,2
+20724,2,2,3,1,0,12
+20725,1,0,1,0,0,2
+20726,2,1,2,1,0,6
+20727,3,1,3,1,0,16
+20728,3,2,4,1,0,40
+20729,3,1,3,1,0,14
+20730,2,1,2,1,0,28
+20731,2,2,3,169,0,821
+20732,2,1,2,1,0,6
+20733,3,2,4,836,0,306
+20734,2,2,3,836,0,288
+20745,2,2,3,836,,290
+20746,1,0,1,1,0,3
+20747,1,0,1,0,0,2
+20748,6,5,11,836,,78
+20749,5,5,9,3,,46
+20750,2,2,3,1,0,31
+20751,1,0,1,0,0,2
+20752,6,5,12,169,,76
+20753,2,2,3,1,0,31
+20754,2,2,3,1,0,36
+20755,3,3,6,836,0,2968
+20756,2,3,4,1,0,33
+20757,2,2,3,1,0,29
+20764,3,3,6,836,0,3325
+20765,2,2,3,836,0,2570
+20771,2,2,3,1,0,8
+20777,2,1,2,1,0,5
+20785,2,2,3,836,0,2648
+20786,3,1,3,836,0,41
+20787,3,2,4,169,0,798
+20788,3,1,3,836,,124
+20801,2,2,3,1,,10
+20802,2,2,3,21,,5
+20803,1,0,1,0,0,3
+20804,3,2,4,1,,2
+20805,3,1,3,7,,9
+20806,2,1,2,1,,5
+20814,2,2,3,836,0,306
+20815,1,0,1,0,0,3
+20816,2,2,3,1,,9
+20817,2,2,3,21,,3
+20818,1,0,1,0,0,2
+20819,3,2,4,169,,5
+20820,2,1,2,1,,6
+20821,2,1,2,1,0,6
+20828,3,2,4,7,0,13
+20829,3,2,4,1,0,17
+20830,3,1,3,7,0,9
+20837,3,2,4,7,0,13
+20838,3,2,4,3,0,24
+20839,3,1,3,7,0,10
+20847,4,2,5,1,0,22
+20848,4,2,5,1,0,25
+20849,4,1,4,1,0,15
+20857,4,2,5,1,0,20
+20858,4,2,5,3,0,27
+20859,4,1,4,1,0,15
+20867,4,2,5,1,0,19
+20868,4,2,6,1,0,37
+20869,4,1,4,1,0,16
+20877,4,2,5,1,0,23
+20878,4,2,6,3,0,41
+20879,4,1,4,1,0,14
+20887,3,2,4,169,0,90
+20888,3,2,5,169,0,88
Index: doc/theses/aaron_moss_PhD/phd/evaluation/per_prob/math1-per-prob.csv
===================================================================
--- doc/theses/aaron_moss_PhD/phd/evaluation/per_prob/math1-per-prob.csv	(revision 92d41a4af1542b1fcfd3bacde48933e4c8519366)
+++ doc/theses/aaron_moss_PhD/phd/evaluation/per_prob/math1-per-prob.csv	(revision 92d41a4af1542b1fcfd3bacde48933e4c8519366)
@@ -0,0 +1,716 @@
+3025,2,2,3,87,0,337
+3026,2,2,3,87,0,291
+3027,2,2,3,87,0,287
+3028,2,2,3,87,0,284
+3029,2,2,3,87,0,294
+3030,2,2,3,87,0,286
+3031,2,2,3,87,0,288
+3042,3,2,5,87,,71
+3057,2,1,2,88,,13
+3058,2,2,3,88,0,34
+3059,2,1,2,32,0,13
+3060,1,0,1,1,0,2
+3061,2,2,3,20,0,37
+3062,2,2,3,88,0,33
+3074,3,2,5,87,,67
+3089,2,1,2,88,,12
+3090,2,2,3,88,0,32
+3091,2,1,2,32,0,12
+3092,1,0,1,1,0,3
+3093,2,2,3,20,0,40
+3094,2,2,3,88,0,32
+3103,3,2,5,87,0,351
+3104,2,2,3,87,0,317
+3113,3,2,5,87,0,428
+3114,2,2,3,87,0,303
+3123,3,2,5,87,0,340
+3124,2,2,3,87,0,298
+3133,3,2,5,87,0,342
+3134,2,2,3,87,0,295
+3143,3,2,5,87,0,343
+3144,2,2,3,87,0,297
+3153,3,2,5,87,0,344
+3154,2,2,3,87,0,296
+3164,1,0,1,0,0,3
+3165,2,2,3,87,0,304
+3166,2,2,3,87,0,323
+3167,1,0,1,0,0,2
+3168,4,2,7,87,0,818
+3169,2,2,3,87,0,303
+3170,2,2,3,87,0,297
+3171,1,0,1,0,0,2
+3172,1,0,1,0,0,1
+3173,2,2,3,10,0,101
+3174,1,0,1,0,0,2
+3175,2,2,3,18,0,147
+3176,2,2,3,18,0,145
+3177,3,2,5,87,0,561
+3178,2,2,3,87,0,306
+3199,1,0,1,0,0,2
+3200,2,2,3,90,0,57
+3201,2,2,3,90,0,33
+3202,2,1,2,90,0,14
+3203,2,2,3,90,0,57
+3204,2,1,2,32,0,13
+3205,1,0,1,0,0,2
+3206,1,0,1,0,0,2
+3207,2,2,3,10,0,103
+3208,1,0,1,0,0,2
+3209,3,2,5,33,0,37
+3210,3,2,5,33,0,36
+3211,3,2,5,90,0,44
+3212,2,2,3,90,0,32
+3222,1,0,1,0,0,2
+3223,2,2,3,87,0,302
+3224,2,2,3,87,0,313
+3225,1,0,1,0,0,2
+3226,4,2,7,87,0,728
+3227,2,2,3,87,0,295
+3228,2,2,3,87,0,303
+3229,1,0,1,0,0,2
+3230,1,0,1,0,0,1
+3231,2,2,3,10,0,99
+3232,1,0,1,0,0,2
+3233,2,2,3,18,0,145
+3234,2,2,3,18,0,145
+3235,3,2,5,87,0,560
+3236,2,2,3,87,0,300
+3245,1,0,1,0,0,2
+3246,2,2,3,87,0,294
+3247,2,2,3,87,0,294
+3248,4,2,7,87,0,897
+3249,2,2,3,87,0,314
+3258,3,2,5,32,0,538
+3259,2,2,3,87,0,308
+3260,2,2,3,87,0,297
+3269,3,2,5,32,0,535
+3270,2,2,3,87,0,310
+3271,2,2,3,87,0,301
+3280,3,2,5,32,0,544
+3281,2,2,3,87,0,330
+3282,2,2,3,87,0,301
+3291,3,2,5,32,0,541
+3292,2,2,3,87,0,307
+3293,2,2,3,87,0,303
+3321,1,0,1,0,0,3
+3322,2,2,3,87,0,32
+3323,2,2,3,87,0,32
+3358,1,0,1,0,0,2
+3359,1,0,1,0,0,2
+3360,2,2,3,87,0,32
+3361,2,2,3,87,0,32
+3404,1,0,1,0,0,2
+3405,2,2,3,87,0,33
+3406,2,2,3,87,0,32
+3420,2,2,3,32,,3
+3427,2,2,3,32,,2
+3455,1,0,1,0,0,2
+3456,2,2,3,87,0,33
+3457,2,2,3,87,0,32
+3471,2,2,3,32,,3
+3478,2,2,3,32,,2
+3506,1,0,1,0,0,2
+3507,2,2,3,87,0,318
+3508,2,2,3,87,0,311
+3517,2,2,3,87,0,315
+3518,1,0,1,0,0,2
+3519,1,0,1,0,0,2
+3520,1,0,1,0,0,2
+3521,2,2,3,87,0,314
+3522,1,0,1,0,0,2
+3523,1,0,1,0,0,2
+3524,1,0,1,0,0,1
+3534,2,2,3,87,0,311
+3535,1,0,1,0,0,2
+3536,1,0,1,0,0,1
+3537,1,0,1,0,0,2
+3538,2,2,3,87,0,316
+3539,1,0,1,0,0,2
+3540,1,0,1,0,0,1
+3541,1,0,1,0,0,2
+3550,2,2,3,87,0,316
+3551,1,0,1,0,0,2
+3552,1,0,1,0,0,2
+3553,1,0,1,0,0,1
+3554,2,2,3,87,0,318
+3555,1,0,1,0,0,3
+3556,1,0,1,0,0,5
+3557,1,0,1,0,0,2
+3568,1,0,1,0,0,2
+3569,1,0,1,0,0,2
+3570,1,0,1,0,0,2
+3571,1,0,1,0,0,2
+3572,1,0,1,0,0,1
+3573,2,2,3,87,0,317
+3574,1,0,1,0,0,2
+3575,1,0,1,0,0,1
+3576,1,0,1,0,0,2
+3577,1,0,1,0,0,2
+3578,2,2,3,87,0,313
+3579,1,0,1,0,0,2
+3580,1,0,1,0,0,2
+3581,1,0,1,0,0,2
+3582,1,0,1,0,0,2
+3583,2,2,3,87,0,35
+3584,2,2,3,87,0,35
+3594,2,2,3,87,0,310
+3595,1,0,1,0,0,2
+3596,1,0,1,0,0,1
+3597,1,0,1,0,0,1
+3598,2,2,3,87,0,310
+3599,1,0,1,0,0,2
+3600,1,0,1,0,0,1
+3601,1,0,1,0,0,2
+3612,2,2,3,87,0,309
+3613,1,0,1,0,0,2
+3614,1,0,1,0,0,2
+3615,1,0,1,0,0,2
+3616,2,2,3,87,0,311
+3617,1,0,1,0,0,2
+3618,1,0,1,0,0,1
+3619,1,0,1,0,0,1
+3631,2,2,3,87,0,310
+3632,1,0,1,0,0,2
+3633,1,0,1,0,0,2
+3634,1,0,1,0,0,2
+3635,2,2,3,87,0,311
+3636,1,0,1,0,0,2
+3637,1,0,1,0,0,1
+3638,1,0,1,0,0,2
+3651,2,2,3,87,0,329
+3652,1,0,1,0,0,2
+3653,1,0,1,0,0,2
+3654,1,0,1,0,0,2
+3655,2,2,3,87,0,337
+3656,1,0,1,0,0,2
+3657,1,0,1,0,0,2
+3658,1,0,1,0,0,1
+3672,2,2,3,87,0,315
+3673,1,0,1,0,0,2
+3674,1,0,1,0,0,2
+3675,1,0,1,0,0,2
+3676,2,2,3,87,0,310
+3677,1,0,1,0,0,2
+3678,1,0,1,0,0,2
+3679,1,0,1,0,0,2
+3694,2,2,3,87,0,317
+3695,1,0,1,0,0,2
+3696,1,0,1,0,0,2
+3697,1,0,1,0,0,2
+3698,2,2,3,87,0,311
+3699,1,0,1,0,0,2
+3700,1,0,1,0,0,2
+3701,1,0,1,0,0,2
+3717,2,2,3,87,0,312
+3718,1,0,1,0,0,2
+3719,1,0,1,0,0,2
+3720,1,0,1,0,0,2
+3721,2,2,3,87,0,308
+3722,1,0,1,0,0,2
+3723,1,0,1,0,0,2
+3724,1,0,1,0,0,2
+3752,1,0,1,0,0,2
+3753,2,2,3,87,0,34
+3754,2,2,3,87,0,33
+3789,1,0,1,0,0,3
+3790,2,2,3,87,0,310
+3791,2,2,3,87,0,307
+3819,1,0,1,0,0,2
+3820,2,2,3,87,0,313
+3821,2,2,3,87,0,321
+3849,1,0,1,0,0,2
+3850,1,0,1,0,0,2
+3851,1,0,1,0,0,1
+3852,1,0,1,0,0,2
+3853,1,0,1,0,0,2
+3854,2,2,3,87,0,35
+3855,2,2,3,87,0,34
+3909,3,2,5,87,0,372
+3910,2,2,3,87,0,315
+3919,3,2,5,87,0,370
+3920,2,2,3,87,0,322
+3929,3,2,5,87,0,405
+3930,2,2,3,87,0,319
+3939,3,2,5,87,0,365
+3940,2,2,3,87,0,313
+3949,3,2,5,87,0,356
+3950,2,2,3,87,0,329
+3959,3,2,5,87,0,369
+3960,2,2,3,87,0,329
+3969,3,2,5,87,0,364
+3970,2,2,3,87,0,326
+3980,3,3,6,87,0,381
+3981,2,2,3,87,0,323
+3991,3,3,6,87,0,380
+3992,2,2,3,87,0,327
+4002,2,1,2,87,,15
+4003,4,3,7,32,0,565
+4004,2,3,4,87,,61
+4005,2,2,3,87,,40
+4015,2,1,2,87,,14
+4016,4,3,7,32,0,644
+4017,2,3,4,87,,61
+4018,2,2,3,87,,39
+4028,2,1,2,87,,14
+4029,4,3,7,32,0,537
+4030,2,3,4,87,,51
+4031,2,2,3,87,,31
+4040,2,1,2,87,,13
+4041,4,2,8,32,0,802
+4042,2,3,4,87,,47
+4043,2,2,3,87,,31
+4052,2,1,2,87,,13
+4053,4,2,8,32,0,841
+4054,2,3,4,87,,40
+4055,2,2,3,87,,25
+4064,2,1,2,87,,12
+4065,4,2,8,32,0,744
+4066,2,3,4,87,,47
+4067,2,2,3,87,,32
+4077,3,3,6,87,0,389
+4078,2,2,3,87,0,306
+4088,3,3,6,87,0,364
+4089,2,2,3,87,0,299
+4098,3,2,5,87,0,349
+4099,2,2,3,87,0,301
+4108,3,2,5,87,0,342
+4109,2,2,3,87,0,297
+4117,3,2,4,87,0,309
+4118,2,2,3,87,0,301
+4126,3,2,4,87,0,304
+4127,2,2,3,87,0,297
+4135,3,2,4,87,0,333
+4136,2,2,3,87,0,301
+4144,3,2,4,87,0,323
+4145,2,2,3,87,0,304
+4153,3,2,4,87,0,330
+4154,2,2,3,87,0,298
+4162,3,2,4,87,0,322
+4163,2,2,3,87,0,300
+4171,3,2,4,87,0,322
+4172,2,2,3,87,0,301
+4180,3,2,4,87,0,330
+4181,2,2,3,87,0,302
+4189,3,2,4,87,0,333
+4190,2,2,3,87,0,296
+4198,3,2,4,87,0,328
+4199,2,2,3,87,0,300
+4207,3,2,4,87,0,323
+4208,2,2,3,87,0,301
+4217,3,2,5,87,0,349
+4218,2,2,3,87,0,306
+4227,3,2,5,87,0,348
+4228,2,2,3,87,0,297
+4237,3,2,5,87,0,347
+4238,2,2,3,87,0,303
+4247,3,2,5,87,0,355
+4248,2,2,3,87,0,306
+4257,3,2,5,87,0,346
+4258,2,2,3,87,0,301
+4266,3,2,4,87,0,332
+4267,2,2,3,87,0,305
+4275,3,2,4,87,0,326
+4276,2,2,3,87,0,299
+4284,3,2,4,87,0,328
+4285,2,2,3,87,0,304
+4293,3,2,4,87,0,326
+4294,2,2,3,87,0,301
+4302,3,2,4,87,0,333
+4303,2,2,3,87,0,301
+4311,3,2,4,87,0,325
+4312,2,2,3,87,0,308
+4320,3,2,4,87,0,352
+4321,2,2,3,87,0,309
+4329,3,2,4,87,0,340
+4330,2,2,3,87,0,324
+4338,3,2,4,87,0,347
+4339,2,2,3,87,0,313
+4347,3,2,4,87,0,343
+4348,2,2,3,87,0,321
+4356,3,2,4,87,0,357
+4357,2,2,3,87,0,316
+4365,3,2,4,87,0,349
+4366,2,2,3,87,0,325
+4374,3,2,4,87,0,348
+4375,2,2,3,87,0,322
+4383,3,2,4,87,0,350
+4384,2,2,3,87,0,326
+4392,3,2,4,87,0,347
+4393,2,2,3,87,0,317
+4401,3,2,4,87,0,347
+4402,2,2,3,87,0,321
+4410,3,2,4,87,0,346
+4411,2,2,3,87,0,315
+4419,3,2,4,87,0,344
+4420,2,2,3,87,0,315
+4428,3,2,4,87,0,344
+4429,2,2,3,87,0,313
+4437,3,2,4,87,0,340
+4438,2,2,3,87,0,314
+4446,3,2,4,87,0,347
+4447,2,2,3,87,0,317
+4455,3,2,4,87,0,340
+4456,2,2,3,87,0,320
+4465,3,2,5,87,0,396
+4466,2,2,3,87,0,332
+4475,3,2,5,87,0,373
+4476,2,2,3,87,0,318
+4484,3,2,4,87,0,351
+4485,2,2,3,87,0,312
+4493,3,2,4,87,0,340
+4494,2,2,3,87,0,328
+4502,3,2,4,87,0,356
+4503,2,2,3,87,0,325
+4511,3,2,4,87,0,357
+4512,2,2,3,87,0,326
+4520,3,2,4,87,0,353
+4521,2,2,3,87,0,321
+4529,3,2,4,87,0,346
+4530,2,2,3,87,0,337
+4538,3,2,4,87,0,353
+4539,2,2,3,87,0,310
+4547,3,2,4,87,0,349
+4548,2,2,3,87,0,323
+4556,3,2,4,87,0,341
+4557,2,2,3,87,0,325
+4565,3,2,4,87,0,350
+4566,2,2,3,87,0,313
+4574,3,2,4,87,0,363
+4575,2,2,3,87,0,325
+4583,3,2,4,87,0,353
+4584,2,2,3,87,0,316
+4592,3,2,4,87,0,356
+4593,2,2,3,87,0,327
+4601,3,2,4,87,0,337
+4602,2,2,3,87,0,324
+4610,3,2,4,87,0,343
+4611,2,2,3,87,0,312
+4619,3,2,4,87,0,362
+4620,2,2,3,87,0,318
+4628,3,2,4,87,0,353
+4629,2,2,3,87,0,315
+4637,3,2,4,87,0,355
+4638,2,2,3,87,0,321
+4646,3,2,4,87,0,347
+4647,2,2,3,87,0,319
+4655,3,2,4,87,0,347
+4656,2,2,3,87,0,316
+4664,3,2,4,87,0,357
+4665,2,2,3,87,0,327
+4673,3,2,4,87,0,351
+4674,2,2,3,87,0,316
+4682,3,2,4,87,0,344
+4683,2,2,3,87,0,321
+4691,3,2,4,87,0,347
+4692,2,2,3,87,0,312
+4700,3,2,4,87,0,349
+4701,2,2,3,87,0,325
+4709,3,2,4,87,0,350
+4710,2,2,3,87,0,331
+4718,3,2,4,87,0,338
+4719,2,2,3,87,0,316
+4727,3,2,4,87,0,361
+4728,2,2,3,87,0,322
+4736,3,2,4,87,0,352
+4737,2,2,3,87,0,321
+4745,3,2,4,87,0,352
+4746,2,2,3,87,0,320
+4755,3,2,5,87,0,389
+4756,2,2,3,87,0,325
+4765,3,2,5,87,0,370
+4766,2,2,3,87,0,328
+4775,3,2,5,87,0,395
+4776,2,2,3,87,0,317
+4785,3,2,5,87,0,394
+4786,2,2,3,87,0,317
+4795,3,2,5,87,0,359
+4796,2,2,3,87,0,313
+4804,3,2,4,87,0,341
+4805,2,2,3,87,0,312
+4813,3,2,4,87,0,335
+4814,2,2,3,87,0,308
+4822,3,2,4,87,0,335
+4823,2,2,3,87,0,327
+4831,3,2,4,87,0,338
+4832,2,2,3,87,0,311
+4840,3,2,4,87,0,338
+4841,2,2,3,87,0,313
+4849,3,2,4,87,0,343
+4850,2,2,3,87,0,313
+4858,3,2,4,87,0,336
+4859,2,2,3,87,0,310
+4867,3,2,4,87,0,340
+4868,2,2,3,87,0,311
+4876,3,2,4,87,0,335
+4877,2,2,3,87,0,315
+4885,3,2,4,87,0,341
+4886,2,2,3,87,0,308
+4894,3,2,4,87,0,338
+4895,2,2,3,87,0,313
+4903,3,2,4,87,0,339
+4904,2,2,3,87,0,306
+4912,3,2,4,87,0,335
+4913,2,2,3,87,0,308
+4921,3,2,4,87,0,340
+4922,2,2,3,87,0,313
+4930,3,2,4,87,0,340
+4931,2,2,3,87,0,317
+4939,3,2,4,87,0,341
+4940,2,2,3,87,0,315
+4948,3,2,4,87,0,335
+4949,2,2,3,87,0,310
+4957,3,2,4,87,0,337
+4958,2,2,3,87,0,309
+4966,3,2,4,87,0,338
+4967,2,2,3,87,0,311
+4975,3,2,4,87,0,336
+4976,2,2,3,87,0,313
+4984,3,2,4,87,0,343
+4985,2,2,3,87,0,319
+4993,3,2,4,87,0,337
+4994,2,2,3,87,0,310
+5002,3,2,4,87,0,335
+5003,2,2,3,87,0,310
+5011,3,2,4,87,0,332
+5012,2,2,3,87,0,307
+5020,3,2,4,87,0,340
+5021,2,2,3,87,0,310
+5029,3,2,4,87,0,339
+5030,2,2,3,87,0,315
+5038,3,2,4,87,0,337
+5039,2,2,3,87,0,327
+5047,3,2,4,87,0,337
+5048,2,2,3,87,0,310
+5056,3,2,4,87,0,338
+5057,2,2,3,87,0,309
+5065,3,2,4,87,0,337
+5066,2,2,3,87,0,311
+5074,3,2,4,87,0,340
+5075,2,2,3,87,0,318
+5083,3,2,4,87,0,337
+5084,2,2,3,87,0,314
+5092,3,2,4,87,0,339
+5093,2,2,3,87,0,346
+5101,3,2,4,87,0,361
+5102,2,2,3,87,0,315
+5110,3,2,4,87,0,348
+5111,2,2,3,87,0,336
+5119,3,2,4,87,0,348
+5120,2,2,3,87,0,331
+5129,3,2,5,87,0,362
+5130,2,2,3,87,0,333
+5139,3,2,5,87,0,351
+5140,2,2,3,87,0,325
+5149,3,2,5,87,0,355
+5150,2,2,3,87,0,326
+5158,3,2,4,87,0,348
+5159,2,2,3,87,0,335
+5167,3,2,4,87,0,341
+5168,2,2,3,87,0,329
+5176,3,2,4,87,0,348
+5177,2,2,3,87,0,334
+5185,3,2,4,87,0,348
+5186,2,2,3,87,0,328
+5194,3,2,4,87,0,350
+5195,2,2,3,87,0,336
+5203,3,2,4,87,0,351
+5204,2,2,3,87,0,326
+5212,3,2,4,87,0,350
+5213,2,2,3,87,0,331
+5221,3,2,4,87,0,349
+5222,2,2,3,87,0,327
+5230,3,2,4,87,0,349
+5231,2,2,3,87,0,335
+5239,3,2,4,87,0,341
+5240,2,2,3,87,0,330
+5248,3,2,4,87,0,346
+5249,2,2,3,87,0,320
+5257,3,2,4,87,0,389
+5258,2,2,3,87,0,321
+5266,3,2,4,87,0,342
+5267,2,2,3,87,0,318
+5275,3,2,4,87,0,345
+5276,2,2,3,87,0,316
+5284,3,2,4,87,0,372
+5285,2,2,3,87,0,324
+5293,3,2,4,87,0,341
+5294,2,2,3,87,0,324
+5302,3,2,4,87,0,345
+5303,2,2,3,87,0,313
+5311,3,2,4,87,0,341
+5312,2,2,3,87,0,324
+5320,3,2,4,87,0,343
+5321,2,2,3,87,0,323
+5329,3,2,4,87,0,349
+5330,2,2,3,87,0,327
+5338,3,2,4,87,0,345
+5339,2,2,3,87,0,325
+5347,3,2,4,87,0,344
+5348,2,2,3,87,0,330
+5356,3,2,4,87,0,363
+5357,2,2,3,87,0,327
+5365,3,2,4,87,0,347
+5366,2,2,3,87,0,328
+5374,3,2,4,87,0,341
+5375,2,2,3,87,0,327
+5383,3,2,4,87,0,365
+5384,2,2,3,87,0,336
+5392,3,2,4,87,0,344
+5393,2,2,3,87,0,312
+5401,3,2,4,87,0,336
+5402,2,2,3,87,0,316
+5410,3,2,4,87,0,381
+5411,2,2,3,87,0,314
+5419,3,2,4,87,0,340
+5420,2,2,3,87,0,315
+5428,3,2,4,87,0,341
+5429,2,2,3,87,0,312
+5437,3,2,4,87,0,339
+5438,2,2,3,87,0,309
+5446,3,2,4,87,0,343
+5447,2,2,3,87,0,314
+5455,3,2,4,87,0,342
+5456,2,2,3,87,0,328
+5465,3,2,5,87,0,367
+5466,2,2,3,87,0,316
+5475,3,2,5,87,0,357
+5476,2,2,3,87,0,311
+5485,3,2,5,87,0,345
+5486,2,2,3,87,0,314
+5495,3,2,5,87,0,340
+5496,2,2,3,87,0,316
+5505,3,2,5,87,0,370
+5506,2,2,3,87,0,314
+5515,3,2,5,87,0,376
+5516,2,2,3,87,0,309
+5525,2,1,2,87,,14
+5526,4,2,6,32,0,536
+5527,2,3,4,87,,48
+5528,2,2,3,87,,31
+5537,3,2,5,87,0,346
+5538,2,2,3,87,0,309
+5547,2,1,2,87,,14
+5548,4,2,6,32,0,584
+5549,2,3,4,87,,46
+5550,2,2,3,87,,35
+5559,2,1,2,87,,12
+5560,4,2,6,32,0,492
+5561,2,3,4,87,,46
+5562,2,2,3,87,,31
+5571,3,2,5,87,0,335
+5572,2,2,3,87,0,310
+5581,3,2,5,87,0,360
+5582,2,2,3,87,0,323
+5591,3,2,5,87,0,350
+5592,2,2,3,87,0,309
+5601,3,2,5,87,0,357
+5602,2,2,3,87,0,316
+5611,3,2,5,87,0,354
+5612,2,2,3,87,0,311
+5621,3,2,5,87,0,376
+5622,2,2,3,87,0,316
+5631,3,2,5,87,0,372
+5632,2,2,3,87,0,325
+5641,3,2,5,87,0,368
+5642,2,2,3,87,0,310
+5651,3,2,5,87,0,408
+5652,2,2,3,87,0,312
+5661,3,2,5,87,0,364
+5662,2,2,3,87,0,309
+5671,3,2,5,87,0,373
+5672,2,2,3,87,0,312
+5681,3,2,5,87,0,364
+5682,2,2,3,87,0,311
+5690,3,2,4,87,0,1127
+5691,2,2,3,87,0,280
+5699,3,2,4,87,0,338
+5700,2,2,3,87,0,307
+5708,3,2,4,87,0,333
+5709,2,2,3,87,0,309
+5717,3,2,4,87,0,333
+5718,2,2,3,87,0,307
+5726,3,2,4,87,0,331
+5727,2,2,3,87,0,307
+5735,3,2,4,87,0,334
+5736,2,2,3,87,0,307
+5744,3,2,4,87,0,331
+5745,2,2,3,87,0,306
+5753,3,2,4,87,0,329
+5754,2,2,3,87,0,310
+5762,3,2,4,87,0,325
+5763,2,2,3,87,0,337
+5780,3,3,6,89,0,71
+5781,2,2,3,89,0,33
+5798,3,3,6,89,0,66
+5799,2,2,3,89,0,30
+5819,4,2,7,89,0,82
+5820,2,2,3,89,0,30
+5835,2,1,2,89,0,13
+5836,2,2,3,89,0,31
+5837,2,1,2,32,0,12
+5838,1,0,1,1,0,3
+5839,2,2,3,33,0,24
+5840,2,2,3,33,0,24
+5865,2,1,2,90,0,13
+5866,2,2,3,90,0,57
+5867,2,1,2,32,0,11
+5868,1,0,1,0,0,2
+5869,5,2,11,90,0,84
+5870,2,2,3,90,0,30
+5891,2,1,2,90,0,12
+5892,2,2,3,90,0,55
+5893,2,1,2,32,0,11
+5894,1,0,1,0,0,2
+5895,2,1,2,90,0,12
+5896,2,2,3,90,0,54
+5897,2,1,2,32,0,11
+5898,1,0,1,0,0,2
+5899,3,3,6,90,0,63
+5900,2,2,3,90,0,30
+5931,2,1,2,90,0,13
+5932,2,2,3,90,0,54
+5933,2,1,2,32,0,11
+5934,1,0,1,0,0,2
+5935,2,1,2,90,0,12
+5936,2,2,3,90,0,53
+5937,2,1,2,32,0,13
+5938,1,0,1,0,0,1
+5939,2,1,2,90,0,12
+5940,5,3,12,90,0,95
+5941,2,1,2,32,0,12
+5942,4,3,10,21,0,59
+5943,2,1,2,90,0,13
+5944,2,2,3,90,0,54
+5945,2,1,2,32,0,12
+5946,1,0,1,0,0,2
+5947,2,1,2,90,0,11
+5948,2,2,3,90,0,54
+5949,2,1,2,32,0,11
+5950,1,0,1,0,0,2
+5951,5,2,11,90,0,77
+5952,2,2,3,90,0,30
+5965,10,2,35,57,168,188670
+5966,6,2,17,57,105,81862
+5967,4,3,7,32,0,3557
+5968,4,2,7,57,63,23471
+5969,4,3,7,32,0,1758
+5970,3,2,5,57,42,17952
+5971,4,3,7,32,0,1591
+5972,4,2,7,57,63,28275
+5973,6,2,17,57,63,10999
+5974,7,3,23,57,105,59551
+5975,7,2,20,57,105,62850
+5976,6,2,11,57,105,62786
+5977,9,2,29,57,168,145836
+5978,6,2,14,57,105,69114
+5979,6,2,14,57,105,62758
+5980,9,2,41,57,168,150285
+5981,2,2,3,87,0,506
+5982,1,0,1,0,0,3
+5983,2,2,3,87,0,300
+5984,1,0,1,0,0,2
+5985,2,2,3,4,0,64
+5986,5,2,11,57,84,57190
+5987,11,2,45,57,210,355280
+5988,2,2,3,87,0,590
+5989,2,2,3,87,0,296
Index: doc/theses/aaron_moss_PhD/phd/evaluation/per_prob/math2-per-prob.csv
===================================================================
--- doc/theses/aaron_moss_PhD/phd/evaluation/per_prob/math2-per-prob.csv	(revision 92d41a4af1542b1fcfd3bacde48933e4c8519366)
+++ doc/theses/aaron_moss_PhD/phd/evaluation/per_prob/math2-per-prob.csv	(revision 92d41a4af1542b1fcfd3bacde48933e4c8519366)
@@ -0,0 +1,710 @@
+3025,2,2,3,87,0,277
+3026,2,2,3,87,0,257
+3027,2,2,3,87,0,285
+3028,2,2,3,87,0,282
+3029,2,2,3,87,0,312
+3030,2,2,3,87,0,285
+3031,2,2,3,87,0,286
+3042,3,2,5,87,,70
+3057,2,1,2,88,,13
+3058,2,2,3,88,0,33
+3059,2,1,2,32,0,13
+3060,1,0,1,1,0,3
+3061,2,2,3,20,0,36
+3062,2,2,3,88,0,32
+3074,3,2,5,87,,66
+3089,2,1,2,88,,12
+3090,2,2,3,88,0,32
+3091,2,1,2,32,0,13
+3092,1,0,1,1,0,2
+3093,2,2,3,20,0,39
+3094,2,2,3,88,0,33
+3103,3,2,5,87,0,346
+3104,2,2,3,87,0,292
+3113,3,2,5,87,0,420
+3114,2,2,3,87,0,301
+3123,3,2,5,87,0,337
+3124,2,2,3,87,0,296
+3133,3,2,5,87,0,338
+3134,2,2,3,87,0,312
+3143,3,2,5,87,0,339
+3144,2,2,3,87,0,296
+3153,3,2,5,87,0,340
+3154,2,2,3,87,0,296
+3164,1,0,1,0,0,2
+3165,2,2,3,87,0,303
+3166,2,2,3,87,0,299
+3167,1,0,1,0,0,3
+3168,4,2,7,87,0,788
+3169,2,2,3,87,0,293
+3170,2,2,3,87,0,293
+3171,1,0,1,0,0,2
+3172,1,0,1,0,0,2
+3173,2,2,3,10,0,98
+3174,1,0,1,0,0,2
+3175,2,2,3,18,0,144
+3176,2,2,3,18,0,142
+3177,3,2,5,87,0,546
+3178,2,2,3,87,0,302
+3199,1,0,1,0,0,2
+3200,2,2,3,90,0,57
+3201,2,2,3,90,0,32
+3202,2,1,2,90,0,14
+3203,2,2,3,90,0,56
+3204,2,1,2,32,0,13
+3205,1,0,1,0,0,2
+3206,1,0,1,0,0,1
+3207,2,2,3,10,0,101
+3208,1,0,1,0,0,2
+3209,3,2,5,33,0,37
+3210,3,2,5,33,0,35
+3211,3,2,5,90,0,45
+3212,2,2,3,90,0,32
+3222,1,0,1,0,0,3
+3223,2,2,3,87,0,301
+3224,2,2,3,87,0,294
+3225,1,0,1,0,0,2
+3226,4,2,7,87,0,725
+3227,2,2,3,87,0,296
+3228,2,2,3,87,0,304
+3229,1,0,1,0,0,2
+3230,1,0,1,0,0,2
+3231,2,2,3,10,0,99
+3232,1,0,1,0,0,2
+3233,2,2,3,18,0,144
+3234,2,2,3,18,0,145
+3235,3,2,5,87,0,570
+3236,2,2,3,87,0,296
+3245,1,0,1,0,0,3
+3246,2,2,3,87,0,293
+3247,2,2,3,87,0,293
+3248,4,2,7,87,0,881
+3249,2,2,3,87,0,311
+3258,3,2,5,32,0,539
+3259,2,2,3,87,0,307
+3260,2,2,3,87,0,298
+3269,3,2,5,32,0,553
+3270,2,2,3,87,0,305
+3271,2,2,3,87,0,301
+3280,3,2,5,32,0,543
+3281,2,2,3,87,0,304
+3282,2,2,3,87,0,300
+3291,3,2,5,32,0,546
+3292,2,2,3,87,0,312
+3293,2,2,3,87,0,303
+3321,1,0,1,0,0,2
+3322,2,2,3,87,0,33
+3323,2,2,3,87,0,31
+3358,1,0,1,0,0,2
+3359,1,0,1,0,0,2
+3360,2,2,3,87,0,33
+3361,2,2,3,87,0,32
+3404,1,0,1,0,0,2
+3405,2,2,3,87,0,33
+3406,2,2,3,87,0,32
+3420,2,2,3,32,,3
+3427,2,2,3,32,,2
+3455,1,0,1,0,0,2
+3456,2,2,3,87,0,33
+3457,2,2,3,87,0,32
+3471,2,2,3,32,,2
+3478,2,2,3,32,,2
+3506,1,0,1,0,0,2
+3507,2,2,3,87,0,323
+3508,2,2,3,87,0,312
+3517,2,2,3,87,0,316
+3518,1,0,1,0,0,3
+3519,1,0,1,0,0,2
+3520,1,0,1,0,0,2
+3521,2,2,3,87,0,313
+3522,1,0,1,0,0,2
+3523,1,0,1,0,0,2
+3524,1,0,1,0,0,1
+3534,2,2,3,87,0,312
+3535,1,0,1,0,0,3
+3536,1,0,1,0,0,2
+3537,1,0,1,0,0,2
+3538,2,2,3,87,0,310
+3539,1,0,1,0,0,2
+3540,1,0,1,0,0,1
+3541,1,0,1,0,0,2
+3550,2,2,3,87,0,316
+3551,1,0,1,0,0,2
+3552,1,0,1,0,0,2
+3553,1,0,1,0,0,2
+3554,2,2,3,87,0,321
+3555,1,0,1,0,0,2
+3556,1,0,1,0,0,5
+3557,1,0,1,0,0,2
+3568,1,0,1,0,0,2
+3569,1,0,1,0,0,2
+3570,1,0,1,0,0,2
+3571,1,0,1,0,0,2
+3572,1,0,1,0,0,2
+3573,2,2,3,87,0,318
+3574,1,0,1,0,0,2
+3575,1,0,1,0,0,2
+3576,1,0,1,0,0,1
+3577,1,0,1,0,0,1
+3578,2,2,3,87,0,312
+3579,1,0,1,0,0,2
+3580,1,0,1,0,0,2
+3581,1,0,1,0,0,2
+3582,1,0,1,0,0,1
+3583,2,2,3,87,0,35
+3584,2,2,3,87,0,35
+3594,2,2,3,87,0,310
+3595,1,0,1,0,0,3
+3596,1,0,1,0,0,2
+3597,1,0,1,0,0,2
+3598,2,2,3,87,0,317
+3599,1,0,1,0,0,2
+3600,1,0,1,0,0,2
+3601,1,0,1,0,0,2
+3612,2,2,3,87,0,309
+3613,1,0,1,0,0,2
+3614,1,0,1,0,0,2
+3615,1,0,1,0,0,2
+3616,2,2,3,87,0,310
+3617,1,0,1,0,0,2
+3618,1,0,1,0,0,2
+3619,1,0,1,0,0,2
+3631,2,2,3,87,0,312
+3632,1,0,1,0,0,2
+3633,1,0,1,0,0,2
+3634,1,0,1,0,0,2
+3635,2,2,3,87,0,308
+3636,1,0,1,0,0,2
+3637,1,0,1,0,0,2
+3638,1,0,1,0,0,1
+3651,2,2,3,87,0,311
+3652,1,0,1,0,0,2
+3653,1,0,1,0,0,1
+3654,1,0,1,0,0,2
+3655,2,2,3,87,0,309
+3656,1,0,1,0,0,2
+3657,1,0,1,0,0,2
+3658,1,0,1,0,0,2
+3672,2,2,3,87,0,312
+3673,1,0,1,0,0,2
+3674,1,0,1,0,0,2
+3675,1,0,1,0,0,2
+3676,2,2,3,87,0,309
+3677,1,0,1,0,0,2
+3678,1,0,1,0,0,2
+3679,1,0,1,0,0,1
+3694,2,2,3,87,0,319
+3695,1,0,1,0,0,2
+3696,1,0,1,0,0,2
+3697,1,0,1,0,0,2
+3698,2,2,3,87,0,309
+3699,1,0,1,0,0,2
+3700,1,0,1,0,0,2
+3701,1,0,1,0,0,2
+3717,2,2,3,87,0,311
+3718,1,0,1,0,0,2
+3719,1,0,1,0,0,2
+3720,1,0,1,0,0,2
+3721,2,2,3,87,0,311
+3722,1,0,1,0,0,2
+3723,1,0,1,0,0,2
+3724,1,0,1,0,0,2
+3752,1,0,1,0,0,2
+3753,2,2,3,87,0,34
+3754,2,2,3,87,0,33
+3789,1,0,1,0,0,2
+3790,2,2,3,87,0,310
+3791,2,2,3,87,0,306
+3819,1,0,1,0,0,2
+3820,2,2,3,87,0,311
+3821,2,2,3,87,0,307
+3849,1,0,1,0,0,2
+3850,1,0,1,0,0,2
+3851,1,0,1,0,0,1
+3852,1,0,1,0,0,2
+3853,1,0,1,0,0,2
+3854,2,2,3,87,0,35
+3855,2,2,3,87,0,34
+3909,3,2,5,87,0,371
+3910,2,2,3,87,0,315
+3919,3,2,5,87,0,368
+3920,2,2,3,87,0,323
+3929,3,2,5,87,0,403
+3930,2,2,3,87,0,325
+3939,3,2,5,87,0,363
+3940,2,2,3,87,0,313
+3949,3,2,5,87,0,355
+3950,2,2,3,87,0,329
+3959,3,2,5,87,0,361
+3960,2,2,3,87,0,327
+3969,3,2,5,87,0,362
+3970,2,2,3,87,0,324
+3980,3,3,6,87,0,378
+3981,2,2,3,87,0,322
+3991,3,3,6,87,0,394
+3992,2,2,3,87,0,323
+4002,2,1,2,87,,15
+4003,4,3,7,32,0,561
+4004,2,3,4,87,,60
+4005,2,2,3,87,,39
+4015,2,1,2,87,,13
+4016,4,3,7,32,0,627
+4017,2,3,4,87,,58
+4018,2,2,3,87,,38
+4028,2,1,2,87,,14
+4029,4,3,7,32,0,527
+4030,2,3,4,87,,48
+4031,2,2,3,87,,30
+4040,2,1,2,87,,12
+4041,4,2,8,32,0,769
+4042,2,3,4,87,,44
+4043,2,2,3,87,,30
+4052,2,1,2,87,,13
+4053,4,2,8,32,0,798
+4054,2,3,4,87,,35
+4055,2,2,3,87,,37
+4064,2,1,2,87,,13
+4065,4,2,8,32,0,719
+4066,2,3,4,87,,46
+4067,2,2,3,87,,30
+4077,3,3,6,87,0,354
+4078,2,2,3,87,0,300
+4088,3,3,6,87,0,355
+4089,2,2,3,87,0,291
+4098,3,2,5,87,0,339
+4099,2,2,3,87,0,296
+4108,3,2,5,87,0,333
+4109,2,2,3,87,0,298
+4117,3,2,4,87,0,304
+4118,2,2,3,87,0,295
+4126,3,2,4,87,0,297
+4127,2,2,3,87,0,291
+4135,3,2,4,87,0,320
+4136,2,2,3,87,0,295
+4144,3,2,4,87,0,316
+4145,2,2,3,87,0,297
+4153,3,2,4,87,0,319
+4154,2,2,3,87,0,292
+4162,3,2,4,87,0,316
+4163,2,2,3,87,0,294
+4171,3,2,4,87,0,321
+4172,2,2,3,87,0,296
+4180,3,2,4,87,0,322
+4181,2,2,3,87,0,294
+4189,3,2,4,87,0,315
+4190,2,2,3,87,0,290
+4198,3,2,4,87,0,319
+4199,2,2,3,87,0,295
+4207,3,2,4,87,0,319
+4208,2,2,3,87,0,294
+4217,3,2,5,87,0,342
+4218,2,2,3,87,0,300
+4227,3,2,5,87,0,347
+4228,2,2,3,87,0,293
+4237,3,2,5,87,0,339
+4238,2,2,3,87,0,297
+4247,3,2,5,87,0,339
+4248,2,2,3,87,0,300
+4257,3,2,5,87,0,338
+4258,2,2,3,87,0,296
+4266,3,2,4,87,0,324
+4267,2,2,3,87,0,298
+4275,3,2,4,87,0,318
+4276,2,2,3,87,0,296
+4284,3,2,4,87,0,321
+4285,2,2,3,87,0,304
+4293,3,2,4,87,0,319
+4294,2,2,3,87,0,297
+4302,3,2,4,87,0,320
+4303,2,2,3,87,0,294
+4311,3,2,4,87,0,317
+4312,2,2,3,87,0,302
+4320,3,2,4,87,0,348
+4321,2,2,3,87,0,304
+4329,3,2,4,87,0,333
+4330,2,2,3,87,0,318
+4338,3,2,4,87,0,339
+4339,2,2,3,87,0,313
+4347,3,2,4,87,0,337
+4348,2,2,3,87,0,316
+4356,3,2,4,87,0,336
+4357,2,2,3,87,0,310
+4365,3,2,4,87,0,340
+4366,2,2,3,87,0,317
+4374,3,2,4,87,0,339
+4375,2,2,3,87,0,318
+4383,3,2,4,87,0,340
+4384,2,2,3,87,0,319
+4392,3,2,4,87,0,338
+4393,2,2,3,87,0,319
+4401,3,2,4,87,0,340
+4402,2,2,3,87,0,316
+4410,3,2,4,87,0,337
+4411,2,2,3,87,0,306
+4419,3,2,4,87,0,337
+4420,2,2,3,87,0,307
+4428,3,2,4,87,0,334
+4429,2,2,3,87,0,307
+4437,3,2,4,87,0,330
+4438,2,2,3,87,0,307
+4446,3,2,4,87,0,337
+4447,2,2,3,87,0,310
+4455,3,2,4,87,0,331
+4456,2,2,3,87,0,311
+4465,3,2,5,87,0,385
+4466,2,2,3,87,0,325
+4475,3,2,5,87,0,363
+4476,2,2,3,87,0,312
+4484,3,2,4,87,0,343
+4485,2,2,3,87,0,303
+4493,3,2,4,87,0,331
+4494,2,2,3,87,0,321
+4502,3,2,4,87,0,354
+4503,2,2,3,87,0,319
+4511,3,2,4,87,0,338
+4512,2,2,3,87,0,318
+4520,3,2,4,87,0,344
+4521,2,2,3,87,0,313
+4529,3,2,4,87,0,337
+4530,2,2,3,87,0,332
+4538,3,2,4,87,0,348
+4539,2,2,3,87,0,305
+4547,3,2,4,87,0,342
+4548,2,2,3,87,0,318
+4556,3,2,4,87,0,343
+4557,2,2,3,87,0,318
+4565,3,2,4,87,0,337
+4566,2,2,3,87,0,306
+4574,3,2,4,87,0,356
+4575,2,2,3,87,0,319
+4583,3,2,4,87,0,347
+4584,2,2,3,87,0,313
+4592,3,2,4,87,0,350
+4593,2,2,3,87,0,327
+4601,3,2,4,87,0,330
+4602,2,2,3,87,0,317
+4610,3,2,4,87,0,347
+4611,2,2,3,87,0,308
+4619,3,2,4,87,0,354
+4620,2,2,3,87,0,311
+4628,3,2,4,87,0,345
+4629,2,2,3,87,0,310
+4637,3,2,4,87,0,348
+4638,2,2,3,87,0,315
+4646,3,2,4,87,0,340
+4647,2,2,3,87,0,313
+4655,3,2,4,87,0,340
+4656,2,2,3,87,0,317
+4664,3,2,4,87,0,348
+4665,2,2,3,87,0,313
+4673,3,2,4,87,0,342
+4674,2,2,3,87,0,309
+4682,3,2,4,87,0,336
+4683,2,2,3,87,0,316
+4691,3,2,4,87,0,339
+4692,2,2,3,87,0,312
+4700,3,2,4,87,0,339
+4701,2,2,3,87,0,320
+4709,3,2,4,87,0,342
+4710,2,2,3,87,0,333
+4718,3,2,4,87,0,335
+4719,2,2,3,87,0,310
+4727,3,2,4,87,0,355
+4728,2,2,3,87,0,315
+4736,3,2,4,87,0,343
+4737,2,2,3,87,0,315
+4745,3,2,4,87,0,346
+4746,2,2,3,87,0,316
+4755,3,2,5,87,0,378
+4756,2,2,3,87,0,321
+4765,3,2,5,87,0,362
+4766,2,2,3,87,0,338
+4775,3,2,5,87,0,377
+4776,2,2,3,87,0,311
+4785,3,2,5,87,0,385
+4786,2,2,3,87,0,312
+4795,3,2,5,87,0,350
+4796,2,2,3,87,0,307
+4804,3,2,4,87,0,334
+4805,2,2,3,87,0,305
+4813,3,2,4,87,0,327
+4814,2,2,3,87,0,304
+4822,3,2,4,87,0,334
+4823,2,2,3,87,0,306
+4831,3,2,4,87,0,329
+4832,2,2,3,87,0,304
+4840,3,2,4,87,0,331
+4841,2,2,3,87,0,305
+4849,3,2,4,87,0,335
+4850,2,2,3,87,0,308
+4858,3,2,4,87,0,329
+4859,2,2,3,87,0,303
+4867,3,2,4,87,0,333
+4868,2,2,3,87,0,307
+4876,3,2,4,87,0,334
+4877,2,2,3,87,0,302
+4885,3,2,4,87,0,333
+4886,2,2,3,87,0,302
+4894,3,2,4,87,0,332
+4895,2,2,3,87,0,306
+4903,3,2,4,87,0,333
+4904,2,2,3,87,0,302
+4912,3,2,4,87,0,328
+4913,2,2,3,87,0,302
+4921,3,2,4,87,0,332
+4922,2,2,3,87,0,306
+4930,3,2,4,87,0,339
+4931,2,2,3,87,0,305
+4939,3,2,4,87,0,334
+4940,2,2,3,87,0,309
+4948,3,2,4,87,0,329
+4949,2,2,3,87,0,305
+4957,3,2,4,87,0,329
+4958,2,2,3,87,0,304
+4966,3,2,4,87,0,330
+4967,2,2,3,87,0,305
+4975,3,2,4,87,0,329
+4976,2,2,3,87,0,308
+4984,3,2,4,87,0,336
+4985,2,2,3,87,0,313
+4993,3,2,4,87,0,330
+4994,2,2,3,87,0,303
+5002,3,2,4,87,0,328
+5003,2,2,3,87,0,303
+5011,3,2,4,87,0,326
+5012,2,2,3,87,0,302
+5020,3,2,4,87,0,330
+5021,2,2,3,87,0,305
+5029,3,2,4,87,0,330
+5030,2,2,3,87,0,308
+5038,3,2,4,87,0,331
+5039,2,2,3,87,0,313
+5047,3,2,4,87,0,329
+5048,2,2,3,87,0,304
+5056,3,2,4,87,0,329
+5057,2,2,3,87,0,303
+5065,3,2,4,87,0,330
+5066,2,2,3,87,0,305
+5074,3,2,4,87,0,334
+5075,2,2,3,87,0,313
+5083,3,2,4,87,0,330
+5084,2,2,3,87,0,307
+5092,3,2,4,87,0,331
+5093,2,2,3,87,0,328
+5101,3,2,4,87,0,354
+5102,2,2,3,87,0,309
+5110,3,2,4,87,0,339
+5111,2,2,3,87,0,324
+5119,3,2,4,87,0,339
+5120,2,2,3,87,0,324
+5129,3,2,5,87,0,354
+5130,2,2,3,87,0,327
+5139,3,2,5,87,0,344
+5140,2,2,3,87,0,318
+5149,3,2,5,87,0,349
+5150,2,2,3,87,0,319
+5158,3,2,4,87,0,341
+5159,2,2,3,87,0,328
+5167,3,2,4,87,0,335
+5168,2,2,3,87,0,323
+5176,3,2,4,87,0,339
+5177,2,2,3,87,0,327
+5185,3,2,4,87,0,340
+5186,2,2,3,87,0,322
+5194,3,2,4,87,0,342
+5195,2,2,3,87,0,322
+5203,3,2,4,87,0,351
+5204,2,2,3,87,0,320
+5212,3,2,4,87,0,342
+5213,2,2,3,87,0,323
+5221,3,2,4,87,0,342
+5222,2,2,3,87,0,321
+5230,3,2,4,87,0,339
+5231,2,2,3,87,0,331
+5239,3,2,4,87,0,335
+5240,2,2,3,87,0,324
+5248,3,2,4,87,0,340
+5249,2,2,3,87,0,309
+5257,3,2,4,87,0,385
+5258,2,2,3,87,0,320
+5266,3,2,4,87,0,337
+5267,2,2,3,87,0,311
+5275,3,2,4,87,0,336
+5276,2,2,3,87,0,307
+5284,3,2,4,87,0,362
+5285,2,2,3,87,0,317
+5293,3,2,4,87,0,333
+5294,2,2,3,87,0,311
+5302,3,2,4,87,0,329
+5303,2,2,3,87,0,317
+5311,3,2,4,87,0,332
+5312,2,2,3,87,0,317
+5320,3,2,4,87,0,336
+5321,2,2,3,87,0,316
+5329,3,2,4,87,0,341
+5330,2,2,3,87,0,322
+5338,3,2,4,87,0,338
+5339,2,2,3,87,0,325
+5347,3,2,4,87,0,336
+5348,2,2,3,87,0,324
+5356,3,2,4,87,0,342
+5357,2,2,3,87,0,331
+5365,3,2,4,87,0,340
+5366,2,2,3,87,0,318
+5374,3,2,4,87,0,332
+5375,2,2,3,87,0,320
+5383,3,2,4,87,0,358
+5384,2,2,3,87,0,329
+5392,3,2,4,87,0,335
+5393,2,2,3,87,0,306
+5401,3,2,4,87,0,328
+5402,2,2,3,87,0,303
+5410,3,2,4,87,0,373
+5411,2,2,3,87,0,312
+5419,3,2,4,87,0,334
+5420,2,2,3,87,0,308
+5428,3,2,4,87,0,335
+5429,2,2,3,87,0,306
+5437,3,2,4,87,0,330
+5438,2,2,3,87,0,302
+5446,3,2,4,87,0,334
+5447,2,2,3,87,0,307
+5455,3,2,4,87,0,328
+5456,2,2,3,87,0,306
+5465,3,2,5,87,0,358
+5466,2,2,3,87,0,313
+5475,3,2,5,87,0,350
+5476,2,2,3,87,0,304
+5485,3,2,5,87,0,336
+5486,2,2,3,87,0,309
+5495,3,2,5,87,0,333
+5496,2,2,3,87,0,309
+5505,3,2,5,87,0,360
+5506,2,2,3,87,0,309
+5515,3,2,5,87,0,353
+5516,2,2,3,87,0,304
+5525,2,1,2,87,,13
+5526,4,2,6,32,0,523
+5527,2,3,4,87,,46
+5528,2,2,3,87,,31
+5537,3,2,5,87,0,334
+5538,2,2,3,87,0,307
+5547,2,1,2,87,,13
+5548,4,2,6,32,0,563
+5549,2,3,4,87,,46
+5550,2,2,3,87,,31
+5559,2,1,2,87,,12
+5560,4,2,6,32,0,493
+5561,2,3,4,87,,46
+5562,2,2,3,87,,31
+5571,3,2,5,87,0,335
+5572,2,2,3,87,0,311
+5581,3,2,5,87,0,354
+5582,2,2,3,87,0,321
+5591,3,2,5,87,0,356
+5592,2,2,3,87,0,310
+5601,3,2,5,87,0,357
+5602,2,2,3,87,0,317
+5611,3,2,5,87,0,355
+5612,2,2,3,87,0,311
+5621,3,2,5,87,0,375
+5622,2,2,3,87,0,314
+5631,3,2,5,87,0,371
+5632,2,2,3,87,0,307
+5641,3,2,5,87,0,365
+5642,2,2,3,87,0,311
+5651,3,2,5,87,0,404
+5652,2,2,3,87,0,313
+5661,3,2,5,87,0,363
+5662,2,2,3,87,0,308
+5671,3,2,5,87,0,371
+5672,2,2,3,87,0,312
+5681,3,2,5,87,0,364
+5682,2,2,3,87,0,310
+5690,3,2,4,87,0,1109
+5691,2,2,3,87,0,284
+5699,3,2,4,87,0,336
+5700,2,2,3,87,0,313
+5708,3,2,4,87,0,336
+5709,2,2,3,87,0,310
+5717,3,2,4,87,0,332
+5718,2,2,3,87,0,308
+5726,3,2,4,87,0,331
+5727,2,2,3,87,0,309
+5735,3,2,4,87,0,328
+5736,2,2,3,87,0,308
+5744,3,2,4,87,0,333
+5745,2,2,3,87,0,314
+5753,3,2,4,87,0,332
+5754,2,2,3,87,0,310
+5762,3,2,4,87,0,327
+5763,2,2,3,87,0,338
+5780,3,3,6,89,0,72
+5781,2,2,3,89,0,32
+5798,3,3,6,89,0,67
+5799,2,2,3,89,0,31
+5819,4,2,7,89,0,82
+5820,2,2,3,89,0,31
+5835,2,1,2,89,0,13
+5836,2,2,3,89,0,32
+5837,2,1,2,32,0,12
+5838,1,0,1,1,0,2
+5839,2,2,3,33,0,25
+5840,2,2,3,33,0,24
+5865,2,1,2,90,0,13
+5866,2,2,3,90,0,57
+5867,2,1,2,32,0,12
+5868,1,0,1,0,0,2
+5869,5,2,11,90,0,85
+5870,2,2,3,90,0,31
+5891,2,1,2,90,0,13
+5892,2,2,3,90,0,54
+5893,2,1,2,32,0,12
+5894,1,0,1,0,0,2
+5895,2,1,2,90,0,13
+5896,2,2,3,90,0,53
+5897,2,1,2,32,0,12
+5898,1,0,1,0,0,2
+5899,3,3,6,90,0,64
+5900,2,2,3,90,0,31
+5931,2,1,2,90,0,13
+5932,2,2,3,90,0,55
+5933,2,1,2,32,0,12
+5934,1,0,1,0,0,2
+5935,2,1,2,90,0,12
+5936,2,2,3,90,0,54
+5937,2,1,2,32,0,11
+5938,1,0,1,0,0,2
+5939,2,1,2,90,0,12
+5940,5,3,12,90,0,94
+5941,2,1,2,32,0,12
+5942,4,3,10,21,0,60
+5943,2,1,2,90,0,13
+5944,2,2,3,90,0,55
+5945,2,1,2,32,0,12
+5946,1,0,1,0,0,2
+5947,2,1,2,90,0,12
+5948,2,2,3,90,0,53
+5949,2,1,2,32,0,12
+5950,1,0,1,0,0,2
+5951,5,2,11,90,0,78
+5952,2,2,3,90,0,30
+5962,9,2,29,57,168,191307
+5963,6,2,14,57,105,67414
+5964,6,2,14,57,105,62791
+5965,6,2,14,57,105,62104
+5966,6,2,14,57,105,62195
+5967,6,2,14,57,105,64828
+5968,9,2,29,57,168,147883
+5969,6,2,14,57,105,68338
+5970,7,2,20,57,105,63250
+5971,9,2,29,57,168,146247
+5972,9,2,29,57,168,150856
+5973,9,2,29,57,168,151983
+5974,9,2,29,57,168,150701
+5975,9,2,29,57,168,150660
+5976,9,2,29,57,168,152987
+5977,5,2,15,57,84,55545
+5978,6,2,17,57,105,62451
+5979,2,2,3,87,0,362
+5980,2,2,3,87,0,304
Index: doc/theses/aaron_moss_PhD/phd/evaluation/per_prob/math3-per-prob.csv
===================================================================
--- doc/theses/aaron_moss_PhD/phd/evaluation/per_prob/math3-per-prob.csv	(revision 92d41a4af1542b1fcfd3bacde48933e4c8519366)
+++ doc/theses/aaron_moss_PhD/phd/evaluation/per_prob/math3-per-prob.csv	(revision 92d41a4af1542b1fcfd3bacde48933e4c8519366)
@@ -0,0 +1,709 @@
+3025,2,2,3,87,0,274
+3026,2,2,3,87,0,255
+3027,2,2,3,87,0,292
+3028,2,2,3,87,0,292
+3029,2,2,3,87,0,308
+3030,2,2,3,87,0,297
+3031,2,2,3,87,0,288
+3042,3,2,5,87,,76
+3057,2,1,2,88,,12
+3058,2,2,3,88,0,31
+3059,2,1,2,32,0,12
+3060,1,0,1,1,0,2
+3061,2,2,3,20,0,35
+3062,2,2,3,88,0,31
+3074,3,2,5,87,,63
+3089,2,1,2,88,,10
+3090,2,2,3,88,0,30
+3091,2,1,2,32,0,11
+3092,1,0,1,1,0,2
+3093,2,2,3,20,0,38
+3094,2,2,3,88,0,30
+3103,3,2,5,87,0,338
+3104,2,2,3,87,0,288
+3113,3,2,5,87,0,421
+3114,2,2,3,87,0,298
+3123,3,2,5,87,0,333
+3124,2,2,3,87,0,291
+3133,3,2,5,87,0,332
+3134,2,2,3,87,0,289
+3143,3,2,5,87,0,335
+3144,2,2,3,87,0,292
+3153,3,2,5,87,0,336
+3154,2,2,3,87,0,290
+3164,1,0,1,0,0,2
+3165,2,2,3,87,0,297
+3166,2,2,3,87,0,293
+3167,1,0,1,0,0,2
+3168,4,2,7,87,0,800
+3169,2,2,3,87,0,265
+3170,2,2,3,87,0,291
+3171,1,0,1,0,0,2
+3172,1,0,1,0,0,1
+3173,2,2,3,10,0,97
+3174,1,0,1,0,0,2
+3175,2,2,3,18,0,141
+3176,2,2,3,18,0,140
+3177,3,2,5,87,0,563
+3178,2,2,3,87,0,300
+3199,1,0,1,0,0,2
+3200,2,2,3,90,0,55
+3201,2,2,3,90,0,30
+3202,2,1,2,90,0,12
+3203,2,2,3,90,0,53
+3204,2,1,2,32,0,11
+3205,1,0,1,0,0,2
+3206,1,0,1,0,0,2
+3207,2,2,3,10,0,100
+3208,1,0,1,0,0,2
+3209,3,2,5,33,0,35
+3210,3,2,5,33,0,33
+3211,3,2,5,90,0,41
+3212,2,2,3,90,0,30
+3222,1,0,1,0,0,2
+3223,2,2,3,87,0,295
+3224,2,2,3,87,0,290
+3225,1,0,1,0,0,2
+3226,4,2,7,87,0,726
+3227,2,2,3,87,0,285
+3228,2,2,3,87,0,298
+3229,1,0,1,0,0,2
+3230,1,0,1,0,0,2
+3231,2,2,3,10,0,97
+3232,1,0,1,0,0,2
+3233,2,2,3,18,0,141
+3234,2,2,3,18,0,141
+3235,3,2,5,87,0,592
+3236,2,2,3,87,0,298
+3245,1,0,1,0,0,2
+3246,2,2,3,87,0,289
+3247,2,2,3,87,0,290
+3248,4,2,7,87,0,918
+3249,2,2,3,87,0,336
+3258,3,2,5,32,0,531
+3259,2,2,3,87,0,309
+3260,2,2,3,87,0,294
+3269,3,2,5,32,0,550
+3270,2,2,3,87,0,299
+3271,2,2,3,87,0,294
+3280,3,2,5,32,0,528
+3281,2,2,3,87,0,298
+3282,2,2,3,87,0,293
+3291,3,2,5,32,0,526
+3292,2,2,3,87,0,301
+3293,2,2,3,87,0,297
+3321,1,0,1,0,0,2
+3322,2,2,3,87,0,30
+3323,2,2,3,87,0,30
+3358,1,0,1,0,0,2
+3359,1,0,1,0,0,2
+3360,2,2,3,87,0,30
+3361,2,2,3,87,0,29
+3404,1,0,1,0,0,2
+3405,2,2,3,87,0,30
+3406,2,2,3,87,0,29
+3420,2,2,3,32,,2
+3427,2,2,3,32,,2
+3455,1,0,1,0,0,2
+3456,2,2,3,87,0,30
+3457,2,2,3,87,0,30
+3471,2,2,3,32,,2
+3478,2,2,3,32,,2
+3506,1,0,1,0,0,2
+3507,2,2,3,87,0,310
+3508,2,2,3,87,0,314
+3517,2,2,3,87,0,326
+3518,1,0,1,0,0,2
+3519,1,0,1,0,0,2
+3520,1,0,1,0,0,2
+3521,2,2,3,87,0,321
+3522,1,0,1,0,0,2
+3523,1,0,1,0,0,2
+3524,1,0,1,0,0,1
+3534,2,2,3,87,0,322
+3535,1,0,1,0,0,2
+3536,1,0,1,0,0,2
+3537,1,0,1,0,0,1
+3538,2,2,3,87,0,314
+3539,1,0,1,0,0,2
+3540,1,0,1,0,0,2
+3541,1,0,1,0,0,1
+3550,2,2,3,87,0,324
+3551,1,0,1,0,0,2
+3552,1,0,1,0,0,1
+3553,1,0,1,0,0,2
+3554,2,2,3,87,0,309
+3555,1,0,1,0,0,2
+3556,1,0,1,0,0,6
+3557,1,0,1,0,0,2
+3568,1,0,1,0,0,2
+3569,1,0,1,0,0,2
+3570,1,0,1,0,0,2
+3571,1,0,1,0,0,1
+3572,1,0,1,0,0,1
+3573,2,2,3,87,0,309
+3574,1,0,1,0,0,2
+3575,1,0,1,0,0,2
+3576,1,0,1,0,0,2
+3577,1,0,1,0,0,2
+3578,2,2,3,87,0,304
+3579,1,0,1,0,0,2
+3580,1,0,1,0,0,1
+3581,1,0,1,0,0,1
+3582,1,0,1,0,0,1
+3583,2,2,3,87,0,33
+3584,2,2,3,87,0,33
+3594,2,2,3,87,0,304
+3595,1,0,1,0,0,2
+3596,1,0,1,0,0,2
+3597,1,0,1,0,0,1
+3598,2,2,3,87,0,301
+3599,1,0,1,0,0,2
+3600,1,0,1,0,0,2
+3601,1,0,1,0,0,1
+3612,2,2,3,87,0,310
+3613,1,0,1,0,0,2
+3614,1,0,1,0,0,2
+3615,1,0,1,0,0,2
+3616,2,2,3,87,0,304
+3617,1,0,1,0,0,2
+3618,1,0,1,0,0,1
+3619,1,0,1,0,0,1
+3631,2,2,3,87,0,302
+3632,1,0,1,0,0,2
+3633,1,0,1,0,0,1
+3634,1,0,1,0,0,1
+3635,2,2,3,87,0,302
+3636,1,0,1,0,0,2
+3637,1,0,1,0,0,2
+3638,1,0,1,0,0,2
+3651,2,2,3,87,0,304
+3652,1,0,1,0,0,2
+3653,1,0,1,0,0,2
+3654,1,0,1,0,0,2
+3655,2,2,3,87,0,301
+3656,1,0,1,0,0,2
+3657,1,0,1,0,0,2
+3658,1,0,1,0,0,2
+3672,2,2,3,87,0,305
+3673,1,0,1,0,0,1
+3674,1,0,1,0,0,1
+3675,1,0,1,0,0,2
+3676,2,2,3,87,0,311
+3677,1,0,1,0,0,2
+3678,1,0,1,0,0,2
+3679,1,0,1,0,0,2
+3694,2,2,3,87,0,322
+3695,1,0,1,0,0,2
+3696,1,0,1,0,0,2
+3697,1,0,1,0,0,1
+3698,2,2,3,87,0,316
+3699,1,0,1,0,0,1
+3700,1,0,1,0,0,1
+3701,1,0,1,0,0,1
+3717,2,2,3,87,0,309
+3718,1,0,1,0,0,2
+3719,1,0,1,0,0,1
+3720,1,0,1,0,0,1
+3721,2,2,3,87,0,317
+3722,1,0,1,0,0,2
+3723,1,0,1,0,0,2
+3724,1,0,1,0,0,1
+3752,1,0,1,0,0,2
+3753,2,2,3,87,0,36
+3754,2,2,3,87,0,36
+3789,1,0,1,0,0,2
+3790,2,2,3,87,0,302
+3791,2,2,3,87,0,299
+3819,1,0,1,0,0,2
+3820,2,2,3,87,0,304
+3821,2,2,3,87,0,300
+3849,1,0,1,0,0,2
+3850,1,0,1,0,0,2
+3851,1,0,1,0,0,2
+3852,1,0,1,0,0,2
+3853,1,0,1,0,0,2
+3854,2,2,3,87,0,32
+3855,2,2,3,87,0,32
+3909,3,2,5,87,0,362
+3910,2,2,3,87,0,307
+3919,3,2,5,87,0,357
+3920,2,2,3,87,0,313
+3929,3,2,5,87,0,392
+3930,2,2,3,87,0,310
+3939,3,2,5,87,0,367
+3940,2,2,3,87,0,305
+3949,3,2,5,87,0,345
+3950,2,2,3,87,0,320
+3959,3,2,5,87,0,351
+3960,2,2,3,87,0,347
+3969,3,2,5,87,0,360
+3970,2,2,3,87,0,332
+3980,3,3,6,87,0,375
+3981,2,2,3,87,0,315
+3991,3,3,6,87,0,370
+3992,2,2,3,87,0,318
+4002,2,1,2,87,,13
+4003,4,3,7,32,0,553
+4004,2,3,4,87,,59
+4005,2,2,3,87,,35
+4015,2,1,2,87,,13
+4016,4,3,7,32,0,607
+4017,2,3,4,87,,58
+4018,2,2,3,87,,36
+4028,2,1,2,87,,12
+4029,4,3,7,32,0,518
+4030,2,3,4,87,,46
+4031,2,2,3,87,,29
+4040,2,1,2,87,,12
+4041,4,2,8,32,0,769
+4042,2,3,4,87,,44
+4043,2,2,3,87,,29
+4052,2,1,2,87,,12
+4053,4,2,8,32,0,806
+4054,2,3,4,87,,45
+4055,2,2,3,87,,29
+4064,2,1,2,87,,11
+4065,4,2,8,32,0,728
+4066,2,3,4,87,,46
+4067,2,2,3,87,,30
+4077,3,3,6,87,0,351
+4078,2,2,3,87,0,297
+4088,3,3,6,87,0,353
+4089,2,2,3,87,0,289
+4098,3,2,5,87,0,336
+4099,2,2,3,87,0,292
+4108,3,2,5,87,0,330
+4109,2,2,3,87,0,288
+4117,3,2,4,87,0,300
+4118,2,2,3,87,0,299
+4126,3,2,4,87,0,297
+4127,2,2,3,87,0,314
+4135,3,2,4,87,0,323
+4136,2,2,3,87,0,298
+4144,3,2,4,87,0,319
+4145,2,2,3,87,0,299
+4153,3,2,4,87,0,322
+4154,2,2,3,87,0,296
+4162,3,2,4,87,0,320
+4163,2,2,3,87,0,297
+4171,3,2,4,87,0,317
+4172,2,2,3,87,0,298
+4180,3,2,4,87,0,332
+4181,2,2,3,87,0,300
+4189,3,2,4,87,0,319
+4190,2,2,3,87,0,292
+4198,3,2,4,87,0,323
+4199,2,2,3,87,0,298
+4207,3,2,4,87,0,319
+4208,2,2,3,87,0,297
+4217,3,2,5,87,0,343
+4218,2,2,3,87,0,297
+4227,3,2,5,87,0,336
+4228,2,2,3,87,0,290
+4237,3,2,5,87,0,345
+4238,2,2,3,87,0,295
+4247,3,2,5,87,0,355
+4248,2,2,3,87,0,302
+4257,3,2,5,87,0,340
+4258,2,2,3,87,0,297
+4266,3,2,4,87,0,327
+4267,2,2,3,87,0,297
+4275,3,2,4,87,0,315
+4276,2,2,3,87,0,293
+4284,3,2,4,87,0,318
+4285,2,2,3,87,0,297
+4293,3,2,4,87,0,323
+4294,2,2,3,87,0,294
+4302,3,2,4,87,0,317
+4303,2,2,3,87,0,294
+4311,3,2,4,87,0,314
+4312,2,2,3,87,0,300
+4320,3,2,4,87,0,342
+4321,2,2,3,87,0,300
+4329,3,2,4,87,0,330
+4330,2,2,3,87,0,321
+4338,3,2,4,87,0,336
+4339,2,2,3,87,0,305
+4347,3,2,4,87,0,334
+4348,2,2,3,87,0,353
+4356,3,2,4,87,0,334
+4357,2,2,3,87,0,309
+4365,3,2,4,87,0,337
+4366,2,2,3,87,0,315
+4374,3,2,4,87,0,338
+4375,2,2,3,87,0,314
+4383,3,2,4,87,0,338
+4384,2,2,3,87,0,317
+4392,3,2,4,87,0,336
+4393,2,2,3,87,0,307
+4401,3,2,4,87,0,344
+4402,2,2,3,87,0,314
+4410,3,2,4,87,0,343
+4411,2,2,3,87,0,310
+4419,3,2,4,87,0,334
+4420,2,2,3,87,0,305
+4428,3,2,4,87,0,332
+4429,2,2,3,87,0,303
+4437,3,2,4,87,0,329
+4438,2,2,3,87,0,306
+4446,3,2,4,87,0,335
+4447,2,2,3,87,0,309
+4455,3,2,4,87,0,335
+4456,2,2,3,87,0,305
+4465,3,2,5,87,0,384
+4466,2,2,3,87,0,323
+4475,3,2,5,87,0,361
+4476,2,2,3,87,0,309
+4484,3,2,4,87,0,341
+4485,2,2,3,87,0,303
+4493,3,2,4,87,0,329
+4494,2,2,3,87,0,320
+4502,3,2,4,87,0,346
+4503,2,2,3,87,0,317
+4511,3,2,4,87,0,349
+4512,2,2,3,87,0,319
+4520,3,2,4,87,0,356
+4521,2,2,3,87,0,316
+4529,3,2,4,87,0,338
+4530,2,2,3,87,0,334
+4538,3,2,4,87,0,348
+4539,2,2,3,87,0,307
+4547,3,2,4,87,0,345
+4548,2,2,3,87,0,321
+4556,3,2,4,87,0,337
+4557,2,2,3,87,0,322
+4565,3,2,4,87,0,345
+4566,2,2,3,87,0,310
+4574,3,2,4,87,0,359
+4575,2,2,3,87,0,322
+4583,3,2,4,87,0,349
+4584,2,2,3,87,0,315
+4592,3,2,4,87,0,353
+4593,2,2,3,87,0,324
+4601,3,2,4,87,0,333
+4602,2,2,3,87,0,320
+4610,3,2,4,87,0,338
+4611,2,2,3,87,0,317
+4619,3,2,4,87,0,357
+4620,2,2,3,87,0,317
+4628,3,2,4,87,0,348
+4629,2,2,3,87,0,312
+4637,3,2,4,87,0,371
+4638,2,2,3,87,0,313
+4646,3,2,4,87,0,337
+4647,2,2,3,87,0,310
+4655,3,2,4,87,0,338
+4656,2,2,3,87,0,317
+4664,3,2,4,87,0,351
+4665,2,2,3,87,0,326
+4673,3,2,4,87,0,342
+4674,2,2,3,87,0,308
+4682,3,2,4,87,0,333
+4683,2,2,3,87,0,313
+4691,3,2,4,87,0,337
+4692,2,2,3,87,0,305
+4700,3,2,4,87,0,337
+4701,2,2,3,87,0,317
+4709,3,2,4,87,0,341
+4710,2,2,3,87,0,323
+4718,3,2,4,87,0,330
+4719,2,2,3,87,0,314
+4727,3,2,4,87,0,353
+4728,2,2,3,87,0,313
+4736,3,2,4,87,0,342
+4737,2,2,3,87,0,313
+4745,3,2,4,87,0,344
+4746,2,2,3,87,0,314
+4755,3,2,5,87,0,377
+4756,2,2,3,87,0,319
+4765,3,2,5,87,0,360
+4766,2,2,3,87,0,322
+4775,3,2,5,87,0,385
+4776,2,2,3,87,0,312
+4785,3,2,5,87,0,389
+4786,2,2,3,87,0,318
+4795,3,2,5,87,0,351
+4796,2,2,3,87,0,304
+4804,3,2,4,87,0,330
+4805,2,2,3,87,0,303
+4813,3,2,4,87,0,324
+4814,2,2,3,87,0,302
+4822,3,2,4,87,0,325
+4823,2,2,3,87,0,304
+4831,3,2,4,87,0,343
+4832,2,2,3,87,0,302
+4840,3,2,4,87,0,329
+4841,2,2,3,87,0,306
+4849,3,2,4,87,0,332
+4850,2,2,3,87,0,305
+4858,3,2,4,87,0,326
+4859,2,2,3,87,0,301
+4867,3,2,4,87,0,351
+4868,2,2,3,87,0,314
+4876,3,2,4,87,0,331
+4877,2,2,3,87,0,315
+4885,3,2,4,87,0,350
+4886,2,2,3,87,0,314
+4894,3,2,4,87,0,332
+4895,2,2,3,87,0,318
+4903,3,2,4,87,0,336
+4904,2,2,3,87,0,314
+4912,3,2,4,87,0,331
+4913,2,2,3,87,0,318
+4921,3,2,4,87,0,336
+4922,2,2,3,87,0,314
+4930,3,2,4,87,0,335
+4931,2,2,3,87,0,319
+4939,3,2,4,87,0,343
+4940,2,2,3,87,0,316
+4948,3,2,4,87,0,330
+4949,2,2,3,87,0,319
+4957,3,2,4,87,0,334
+4958,2,2,3,87,0,317
+4966,3,2,4,87,0,334
+4967,2,2,3,87,0,303
+4975,3,2,4,87,0,327
+4976,2,2,3,87,0,306
+4984,3,2,4,87,0,334
+4985,2,2,3,87,0,304
+4993,3,2,4,87,0,336
+4994,2,2,3,87,0,302
+5002,3,2,4,87,0,326
+5003,2,2,3,87,0,301
+5011,3,2,4,87,0,324
+5012,2,2,3,87,0,300
+5020,3,2,4,87,0,327
+5021,2,2,3,87,0,303
+5029,3,2,4,87,0,327
+5030,2,2,3,87,0,306
+5038,3,2,4,87,0,328
+5039,2,2,3,87,0,302
+5047,3,2,4,87,0,340
+5048,2,2,3,87,0,302
+5056,3,2,4,87,0,338
+5057,2,2,3,87,0,305
+5065,3,2,4,87,0,327
+5066,2,2,3,87,0,302
+5074,3,2,4,87,0,331
+5075,2,2,3,87,0,312
+5083,3,2,4,87,0,327
+5084,2,2,3,87,0,306
+5092,3,2,4,87,0,328
+5093,2,2,3,87,0,320
+5101,3,2,4,87,0,368
+5102,2,2,3,87,0,308
+5110,3,2,4,87,0,353
+5111,2,2,3,87,0,334
+5119,3,2,4,87,0,343
+5120,2,2,3,87,0,336
+5129,3,2,5,87,0,357
+5130,2,2,3,87,0,333
+5139,3,2,5,87,0,349
+5140,2,2,3,87,0,333
+5149,3,2,5,87,0,339
+5150,2,2,3,87,0,323
+5158,3,2,4,87,0,338
+5159,2,2,3,87,0,327
+5167,3,2,4,87,0,332
+5168,2,2,3,87,0,336
+5176,3,2,4,87,0,342
+5177,2,2,3,87,0,324
+5185,3,2,4,87,0,339
+5186,2,2,3,87,0,321
+5194,3,2,4,87,0,341
+5195,2,2,3,87,0,320
+5203,3,2,4,87,0,341
+5204,2,2,3,87,0,325
+5212,3,2,4,87,0,341
+5213,2,2,3,87,0,321
+5221,3,2,4,87,0,341
+5222,2,2,3,87,0,320
+5230,3,2,4,87,0,337
+5231,2,2,3,87,0,328
+5239,3,2,4,87,0,332
+5240,2,2,3,87,0,322
+5248,3,2,4,87,0,337
+5249,2,2,3,87,0,308
+5257,3,2,4,87,0,379
+5258,2,2,3,87,0,325
+5266,3,2,4,87,0,333
+5267,2,2,3,87,0,310
+5275,3,2,4,87,0,354
+5276,2,2,3,87,0,312
+5284,3,2,4,87,0,372
+5285,2,2,3,87,0,319
+5293,3,2,4,87,0,341
+5294,2,2,3,87,0,315
+5302,3,2,4,87,0,341
+5303,2,2,3,87,0,310
+5311,3,2,4,87,0,359
+5312,2,2,3,87,0,321
+5320,3,2,4,87,0,348
+5321,2,2,3,87,0,320
+5329,3,2,4,87,0,356
+5330,2,2,3,87,0,324
+5338,3,2,4,87,0,355
+5339,2,2,3,87,0,322
+5347,3,2,4,87,0,350
+5348,2,2,3,87,0,329
+5356,3,2,4,87,0,354
+5357,2,2,3,87,0,325
+5365,3,2,4,87,0,358
+5366,2,2,3,87,0,323
+5374,3,2,4,87,0,345
+5375,2,2,3,87,0,321
+5383,3,2,4,87,0,362
+5384,2,2,3,87,0,331
+5392,3,2,4,87,0,348
+5393,2,2,3,87,0,308
+5401,3,2,4,87,0,339
+5402,2,2,3,87,0,301
+5410,3,2,4,87,0,375
+5411,2,2,3,87,0,311
+5419,3,2,4,87,0,331
+5420,2,2,3,87,0,306
+5428,3,2,4,87,0,332
+5429,2,2,3,87,0,303
+5437,3,2,4,87,0,329
+5438,2,2,3,87,0,300
+5446,3,2,4,87,0,331
+5447,2,2,3,87,0,304
+5455,3,2,4,87,0,326
+5456,2,2,3,87,0,304
+5465,3,2,5,87,0,362
+5466,2,2,3,87,0,319
+5475,3,2,5,87,0,347
+5476,2,2,3,87,0,302
+5485,3,2,5,87,0,332
+5486,2,2,3,87,0,306
+5495,3,2,5,87,0,331
+5496,2,2,3,87,0,307
+5505,3,2,5,87,0,359
+5506,2,2,3,87,0,306
+5515,3,2,5,87,0,351
+5516,2,2,3,87,0,302
+5525,2,1,2,87,,13
+5526,4,2,6,32,0,511
+5527,2,3,4,87,,50
+5528,2,2,3,87,,30
+5537,3,2,5,87,0,334
+5538,2,2,3,87,0,303
+5547,2,1,2,87,,11
+5548,4,2,6,32,0,561
+5549,2,3,4,87,,46
+5550,2,2,3,87,,30
+5559,2,1,2,87,,12
+5560,4,2,6,32,0,487
+5561,2,3,4,87,,45
+5562,2,2,3,87,,30
+5571,3,2,5,87,0,331
+5572,2,2,3,87,0,309
+5581,3,2,5,87,0,353
+5582,2,2,3,87,0,317
+5591,3,2,5,87,0,347
+5592,2,2,3,87,0,312
+5601,3,2,5,87,0,353
+5602,2,2,3,87,0,335
+5611,3,2,5,87,0,357
+5612,2,2,3,87,0,311
+5621,3,2,5,87,0,376
+5622,2,2,3,87,0,316
+5631,3,2,5,87,0,374
+5632,2,2,3,87,0,308
+5641,3,2,5,87,0,367
+5642,2,2,3,87,0,312
+5651,3,2,5,87,0,410
+5652,2,2,3,87,0,312
+5661,3,2,5,87,0,366
+5662,2,2,3,87,0,312
+5671,3,2,5,87,0,374
+5672,2,2,3,87,0,315
+5681,3,2,5,87,0,361
+5682,2,2,3,87,0,308
+5690,3,2,4,87,0,1114
+5691,2,2,3,87,0,273
+5699,3,2,4,87,0,348
+5700,2,2,3,87,0,311
+5708,3,2,4,87,0,338
+5709,2,2,3,87,0,313
+5717,3,2,4,87,0,336
+5718,2,2,3,87,0,312
+5726,3,2,4,87,0,334
+5727,2,2,3,87,0,311
+5735,3,2,4,87,0,333
+5736,2,2,3,87,0,311
+5744,3,2,4,87,0,335
+5745,2,2,3,87,0,311
+5753,3,2,4,87,0,341
+5754,2,2,3,87,0,316
+5762,3,2,4,87,0,326
+5763,2,2,3,87,0,337
+5780,3,3,6,89,0,70
+5781,2,2,3,89,0,33
+5798,3,3,6,89,0,66
+5799,2,2,3,89,0,30
+5819,4,2,7,89,0,80
+5820,2,2,3,89,0,30
+5835,2,1,2,89,0,12
+5836,2,2,3,89,0,31
+5837,2,1,2,32,0,12
+5838,1,0,1,1,0,2
+5839,2,2,3,33,0,24
+5840,2,2,3,33,0,23
+5865,2,1,2,90,0,12
+5866,2,2,3,90,0,56
+5867,2,1,2,32,0,11
+5868,1,0,1,0,0,2
+5869,5,2,11,90,0,82
+5870,2,2,3,90,0,29
+5891,2,1,2,90,0,12
+5892,2,2,3,90,0,54
+5893,2,1,2,32,0,11
+5894,1,0,1,0,0,2
+5895,2,1,2,90,0,11
+5896,2,2,3,90,0,53
+5897,2,1,2,32,0,11
+5898,1,0,1,0,0,2
+5899,3,3,6,90,0,62
+5900,2,2,3,90,0,30
+5931,2,1,2,90,0,13
+5932,2,2,3,90,0,53
+5933,2,1,2,32,0,11
+5934,1,0,1,0,0,2
+5935,2,1,2,90,0,11
+5936,2,2,3,90,0,54
+5937,2,1,2,32,0,11
+5938,1,0,1,0,0,2
+5939,2,1,2,90,0,12
+5940,5,3,12,90,0,91
+5941,2,1,2,32,0,12
+5942,4,3,10,21,0,58
+5943,2,1,2,90,0,12
+5944,2,2,3,90,0,54
+5945,2,1,2,32,0,11
+5946,1,0,1,0,0,2
+5947,2,1,2,90,0,11
+5948,2,2,3,90,0,52
+5949,2,1,2,32,0,10
+5950,1,0,1,0,0,2
+5951,5,2,11,90,0,74
+5952,2,2,3,90,0,29
+5963,9,2,29,57,168,189879
+5964,9,2,29,57,168,183352
+5965,9,2,29,57,168,151826
+5966,9,2,29,57,168,154333
+5967,9,2,29,57,168,150787
+5968,9,2,29,57,168,152641
+5969,6,2,14,57,105,67766
+5970,6,2,14,57,105,62129
+5971,6,2,14,57,105,62694
+5972,4,2,6,32,0,3835
+5973,4,2,7,57,63,23712
+5974,4,2,6,32,0,1755
+5975,3,2,5,57,42,18221
+5976,4,2,6,32,0,1674
+5977,4,2,7,57,63,29495
+5978,6,2,14,57,105,60311
+5979,2,2,3,87,0,355
+5980,2,2,3,87,0,341
Index: doc/theses/aaron_moss_PhD/phd/evaluation/per_prob/math4-per-prob.csv
===================================================================
--- doc/theses/aaron_moss_PhD/phd/evaluation/per_prob/math4-per-prob.csv	(revision 92d41a4af1542b1fcfd3bacde48933e4c8519366)
+++ doc/theses/aaron_moss_PhD/phd/evaluation/per_prob/math4-per-prob.csv	(revision 92d41a4af1542b1fcfd3bacde48933e4c8519366)
@@ -0,0 +1,726 @@
+3025,2,2,3,87,0,287
+3026,2,2,3,87,0,257
+3027,2,2,3,87,0,286
+3028,2,2,3,87,0,288
+3029,2,2,3,87,0,294
+3030,2,2,3,87,0,307
+3031,2,2,3,87,0,290
+3042,3,2,5,87,,74
+3057,2,1,2,88,,14
+3058,2,2,3,88,0,34
+3059,2,1,2,32,0,14
+3060,1,0,1,1,0,2
+3061,2,2,3,20,0,38
+3062,2,2,3,88,0,33
+3074,3,2,5,87,,68
+3089,2,1,2,88,,12
+3090,2,2,3,88,0,32
+3091,2,1,2,32,0,13
+3092,1,0,1,1,0,2
+3093,2,2,3,20,0,41
+3094,2,2,3,88,0,33
+3103,3,2,5,87,0,353
+3104,2,2,3,87,0,299
+3113,3,2,5,87,0,433
+3114,2,2,3,87,0,306
+3123,3,2,5,87,0,345
+3124,2,2,3,87,0,300
+3133,3,2,5,87,0,346
+3134,2,2,3,87,0,298
+3143,3,2,5,87,0,348
+3144,2,2,3,87,0,300
+3153,3,2,5,87,0,347
+3154,2,2,3,87,0,305
+3164,1,0,1,0,0,2
+3165,2,2,3,87,0,309
+3166,2,2,3,87,0,301
+3167,1,0,1,0,0,2
+3168,4,2,7,87,0,810
+3169,2,2,3,87,0,271
+3170,2,2,3,87,0,298
+3171,1,0,1,0,0,3
+3172,1,0,1,0,0,2
+3173,2,2,3,10,0,101
+3174,1,0,1,0,0,2
+3175,2,2,3,18,0,148
+3176,2,2,3,18,0,145
+3177,3,2,5,87,0,574
+3178,2,2,3,87,0,302
+3199,1,0,1,0,0,2
+3200,2,2,3,90,0,57
+3201,2,2,3,90,0,32
+3202,2,1,2,90,0,13
+3203,2,2,3,90,0,56
+3204,2,1,2,32,0,12
+3205,1,0,1,0,0,2
+3206,1,0,1,0,0,2
+3207,2,2,3,10,0,102
+3208,1,0,1,0,0,3
+3209,3,2,5,33,0,38
+3210,3,2,5,33,0,36
+3211,3,2,5,90,0,44
+3212,2,2,3,90,0,33
+3222,1,0,1,0,0,3
+3223,2,2,3,87,0,300
+3224,2,2,3,87,0,296
+3225,1,0,1,0,0,2
+3226,4,2,7,87,0,729
+3227,2,2,3,87,0,295
+3228,2,2,3,87,0,304
+3229,1,0,1,0,0,2
+3230,1,0,1,0,0,2
+3231,2,2,3,10,0,101
+3232,1,0,1,0,0,2
+3233,2,2,3,18,0,145
+3234,2,2,3,18,0,146
+3235,3,2,5,87,0,583
+3236,2,2,3,87,0,297
+3245,1,0,1,0,0,2
+3246,2,2,3,87,0,295
+3247,2,2,3,87,0,295
+3248,4,2,7,87,0,893
+3249,2,2,3,87,0,309
+3258,3,2,5,32,0,544
+3259,2,2,3,87,0,310
+3260,2,2,3,87,0,298
+3269,3,2,5,32,0,559
+3270,2,2,3,87,0,310
+3271,2,2,3,87,0,302
+3280,3,2,5,32,0,549
+3281,2,2,3,87,0,306
+3282,2,2,3,87,0,302
+3291,3,2,5,32,0,549
+3292,2,2,3,87,0,309
+3293,2,2,3,87,0,306
+3321,1,0,1,0,0,2
+3322,2,2,3,87,0,32
+3323,2,2,3,87,0,31
+3358,1,0,1,0,0,3
+3359,1,0,1,0,0,2
+3360,2,2,3,87,0,33
+3361,2,2,3,87,0,32
+3404,1,0,1,0,0,2
+3405,2,2,3,87,0,32
+3406,2,2,3,87,0,31
+3420,2,2,3,32,,3
+3427,2,2,3,32,,2
+3455,1,0,1,0,0,2
+3456,2,2,3,87,0,31
+3457,2,2,3,87,0,31
+3471,2,2,3,32,,3
+3478,2,2,3,32,,2
+3506,1,0,1,0,0,3
+3507,2,2,3,87,0,331
+3508,2,2,3,87,0,308
+3517,2,2,3,87,0,310
+3518,1,0,1,0,0,2
+3519,1,0,1,0,0,2
+3520,1,0,1,0,0,1
+3521,2,2,3,87,0,310
+3522,1,0,1,0,0,2
+3523,1,0,1,0,0,2
+3524,1,0,1,0,0,2
+3534,2,2,3,87,0,307
+3535,1,0,1,0,0,2
+3536,1,0,1,0,0,2
+3537,1,0,1,0,0,2
+3538,2,2,3,87,0,306
+3539,1,0,1,0,0,2
+3540,1,0,1,0,0,2
+3541,1,0,1,0,0,2
+3550,2,2,3,87,0,311
+3551,1,0,1,0,0,2
+3552,1,0,1,0,0,2
+3553,1,0,1,0,0,2
+3554,2,2,3,87,0,311
+3555,1,0,1,0,0,2
+3556,1,0,1,0,0,5
+3557,1,0,1,0,0,2
+3568,1,0,1,0,0,2
+3569,1,0,1,0,0,2
+3570,1,0,1,0,0,2
+3571,1,0,1,0,0,2
+3572,1,0,1,0,0,2
+3573,2,2,3,87,0,312
+3574,1,0,1,0,0,2
+3575,1,0,1,0,0,2
+3576,1,0,1,0,0,2
+3577,1,0,1,0,0,2
+3578,2,2,3,87,0,309
+3579,1,0,1,0,0,1
+3580,1,0,1,0,0,1
+3581,1,0,1,0,0,1
+3582,1,0,1,0,0,1
+3583,2,2,3,87,0,35
+3584,2,2,3,87,0,34
+3594,2,2,3,87,0,306
+3595,1,0,1,0,0,2
+3596,1,0,1,0,0,2
+3597,1,0,1,0,0,1
+3598,2,2,3,87,0,320
+3599,1,0,1,0,0,2
+3600,1,0,1,0,0,1
+3601,1,0,1,0,0,2
+3612,2,2,3,87,0,307
+3613,1,0,1,0,0,2
+3614,1,0,1,0,0,1
+3615,1,0,1,0,0,1
+3616,2,2,3,87,0,308
+3617,1,0,1,0,0,2
+3618,1,0,1,0,0,2
+3619,1,0,1,0,0,2
+3631,2,2,3,87,0,308
+3632,1,0,1,0,0,2
+3633,1,0,1,0,0,1
+3634,1,0,1,0,0,1
+3635,2,2,3,87,0,308
+3636,1,0,1,0,0,2
+3637,1,0,1,0,0,2
+3638,1,0,1,0,0,2
+3651,2,2,3,87,0,308
+3652,1,0,1,0,0,2
+3653,1,0,1,0,0,2
+3654,1,0,1,0,0,2
+3655,2,2,3,87,0,305
+3656,1,0,1,0,0,2
+3657,1,0,1,0,0,1
+3658,1,0,1,0,0,1
+3672,2,2,3,87,0,309
+3673,1,0,1,0,0,2
+3674,1,0,1,0,0,2
+3675,1,0,1,0,0,2
+3676,2,2,3,87,0,306
+3677,1,0,1,0,0,1
+3678,1,0,1,0,0,1
+3679,1,0,1,0,0,2
+3694,2,2,3,87,0,315
+3695,1,0,1,0,0,2
+3696,1,0,1,0,0,2
+3697,1,0,1,0,0,2
+3698,2,2,3,87,0,307
+3699,1,0,1,0,0,2
+3700,1,0,1,0,0,2
+3701,1,0,1,0,0,2
+3717,2,2,3,87,0,307
+3718,1,0,1,0,0,2
+3719,1,0,1,0,0,1
+3720,1,0,1,0,0,2
+3721,2,2,3,87,0,314
+3722,1,0,1,0,0,2
+3723,1,0,1,0,0,2
+3724,1,0,1,0,0,1
+3752,1,0,1,0,0,2
+3753,2,2,3,87,0,34
+3754,2,2,3,87,0,33
+3789,1,0,1,0,0,2
+3790,2,2,3,87,0,304
+3791,2,2,3,87,0,304
+3819,1,0,1,0,0,2
+3820,2,2,3,87,0,308
+3821,2,2,3,87,0,304
+3849,1,0,1,0,0,2
+3850,1,0,1,0,0,2
+3851,1,0,1,0,0,1
+3852,1,0,1,0,0,1
+3853,1,0,1,0,0,2
+3854,2,2,3,87,0,34
+3855,2,2,3,87,0,33
+3909,3,2,5,87,0,366
+3910,2,2,3,87,0,309
+3919,3,2,5,87,0,361
+3920,2,2,3,87,0,318
+3929,3,2,5,87,0,396
+3930,2,2,3,87,0,315
+3939,3,2,5,87,0,363
+3940,2,2,3,87,0,306
+3949,3,2,5,87,0,352
+3950,2,2,3,87,0,324
+3959,3,2,5,87,0,356
+3960,2,2,3,87,0,322
+3969,3,2,5,87,0,356
+3970,2,2,3,87,0,320
+3980,3,3,6,87,0,372
+3981,2,2,3,87,0,316
+3991,3,3,6,87,0,373
+3992,2,2,3,87,0,325
+4002,2,1,2,87,,14
+4003,4,3,7,32,0,554
+4004,2,3,4,87,,59
+4005,2,2,3,87,,40
+4015,2,1,2,87,,12
+4016,4,3,7,32,0,622
+4017,2,3,4,87,,59
+4018,2,2,3,87,,37
+4028,2,1,2,87,,13
+4029,4,3,7,32,0,526
+4030,2,3,4,87,,48
+4031,2,2,3,87,,30
+4040,2,1,2,87,,12
+4041,4,2,8,32,0,777
+4042,2,3,4,87,,45
+4043,2,2,3,87,,30
+4052,2,1,2,87,,13
+4053,4,2,8,32,0,806
+4054,2,3,4,87,,37
+4055,2,2,3,87,,34
+4064,2,1,2,87,,12
+4065,4,2,8,32,0,727
+4066,2,3,4,87,,47
+4067,2,2,3,87,,30
+4077,3,3,6,87,0,354
+4078,2,2,3,87,0,301
+4088,3,3,6,87,0,354
+4089,2,2,3,87,0,291
+4098,3,2,5,87,0,339
+4099,2,2,3,87,0,297
+4108,3,2,5,87,0,333
+4109,2,2,3,87,0,290
+4117,3,2,4,87,0,309
+4118,2,2,3,87,0,296
+4126,3,2,4,87,0,297
+4127,2,2,3,87,0,292
+4135,3,2,4,87,0,319
+4136,2,2,3,87,0,294
+4144,3,2,4,87,0,315
+4145,2,2,3,87,0,296
+4153,3,2,4,87,0,318
+4154,2,2,3,87,0,292
+4162,3,2,4,87,0,317
+4163,2,2,3,87,0,294
+4171,3,2,4,87,0,315
+4172,2,2,3,87,0,300
+4180,3,2,4,87,0,323
+4181,2,2,3,87,0,297
+4189,3,2,4,87,0,315
+4190,2,2,3,87,0,291
+4198,3,2,4,87,0,319
+4199,2,2,3,87,0,294
+4207,3,2,4,87,0,315
+4208,2,2,3,87,0,295
+4217,3,2,5,87,0,340
+4218,2,2,3,87,0,300
+4227,3,2,5,87,0,338
+4228,2,2,3,87,0,300
+4237,3,2,5,87,0,340
+4238,2,2,3,87,0,296
+4247,3,2,5,87,0,341
+4248,2,2,3,87,0,300
+4257,3,2,5,87,0,337
+4258,2,2,3,87,0,295
+4266,3,2,4,87,0,325
+4267,2,2,3,87,0,299
+4275,3,2,4,87,0,317
+4276,2,2,3,87,0,295
+4284,3,2,4,87,0,322
+4285,2,2,3,87,0,296
+4293,3,2,4,87,0,333
+4294,2,2,3,87,0,295
+4302,3,2,4,87,0,319
+4303,2,2,3,87,0,295
+4311,3,2,4,87,0,317
+4312,2,2,3,87,0,303
+4320,3,2,4,87,0,346
+4321,2,2,3,87,0,303
+4329,3,2,4,87,0,333
+4330,2,2,3,87,0,316
+4338,3,2,4,87,0,339
+4339,2,2,3,87,0,306
+4347,3,2,4,87,0,342
+4348,2,2,3,87,0,314
+4356,3,2,4,87,0,334
+4357,2,2,3,87,0,309
+4365,3,2,4,87,0,339
+4366,2,2,3,87,0,316
+4374,3,2,4,87,0,338
+4375,2,2,3,87,0,315
+4383,3,2,4,87,0,340
+4384,2,2,3,87,0,317
+4392,3,2,4,87,0,337
+4393,2,2,3,87,0,308
+4401,3,2,4,87,0,346
+4402,2,2,3,87,0,314
+4410,3,2,4,87,0,335
+4411,2,2,3,87,0,310
+4419,3,2,4,87,0,336
+4420,2,2,3,87,0,307
+4428,3,2,4,87,0,333
+4429,2,2,3,87,0,305
+4437,3,2,4,87,0,330
+4438,2,2,3,87,0,307
+4446,3,2,4,87,0,337
+4447,2,2,3,87,0,309
+4455,3,2,4,87,0,339
+4456,2,2,3,87,0,307
+4465,3,2,5,87,0,385
+4466,2,2,3,87,0,325
+4475,3,2,5,87,0,363
+4476,2,2,3,87,0,311
+4484,3,2,4,87,0,343
+4485,2,2,3,87,0,304
+4493,3,2,4,87,0,331
+4494,2,2,3,87,0,321
+4502,3,2,4,87,0,347
+4503,2,2,3,87,0,325
+4511,3,2,4,87,0,339
+4512,2,2,3,87,0,318
+4520,3,2,4,87,0,344
+4521,2,2,3,87,0,312
+4529,3,2,4,87,0,335
+4530,2,2,3,87,0,331
+4538,3,2,4,87,0,345
+4539,2,2,3,87,0,305
+4547,3,2,4,87,0,341
+4548,2,2,3,87,0,318
+4556,3,2,4,87,0,334
+4557,2,2,3,87,0,333
+4565,3,2,4,87,0,337
+4566,2,2,3,87,0,305
+4574,3,2,4,87,0,355
+4575,2,2,3,87,0,318
+4583,3,2,4,87,0,345
+4584,2,2,3,87,0,311
+4592,3,2,4,87,0,350
+4593,2,2,3,87,0,321
+4601,3,2,4,87,0,329
+4602,2,2,3,87,0,317
+4610,3,2,4,87,0,332
+4611,2,2,3,87,0,314
+4619,3,2,4,87,0,354
+4620,2,2,3,87,0,311
+4628,3,2,4,87,0,346
+4629,2,2,3,87,0,309
+4637,3,2,4,87,0,347
+4638,2,2,3,87,0,314
+4646,3,2,4,87,0,341
+4647,2,2,3,87,0,312
+4655,3,2,4,87,0,340
+4656,2,2,3,87,0,310
+4664,3,2,4,87,0,354
+4665,2,2,3,87,0,317
+4673,3,2,4,87,0,342
+4674,2,2,3,87,0,309
+4682,3,2,4,87,0,337
+4683,2,2,3,87,0,314
+4691,3,2,4,87,0,339
+4692,2,2,3,87,0,306
+4700,3,2,4,87,0,339
+4701,2,2,3,87,0,319
+4709,3,2,4,87,0,342
+4710,2,2,3,87,0,324
+4718,3,2,4,87,0,340
+4719,2,2,3,87,0,309
+4727,3,2,4,87,0,354
+4728,2,2,3,87,0,315
+4736,3,2,4,87,0,344
+4737,2,2,3,87,0,316
+4745,3,2,4,87,0,346
+4746,2,2,3,87,0,313
+4755,3,2,5,87,0,378
+4756,2,2,3,87,0,319
+4765,3,2,5,87,0,363
+4766,2,2,3,87,0,323
+4775,3,2,5,87,0,381
+4776,2,2,3,87,0,309
+4785,3,2,5,87,0,385
+4786,2,2,3,87,0,310
+4795,3,2,5,87,0,350
+4796,2,2,3,87,0,305
+4804,3,2,4,87,0,333
+4805,2,2,3,87,0,305
+4813,3,2,4,87,0,327
+4814,2,2,3,87,0,303
+4822,3,2,4,87,0,328
+4823,2,2,3,87,0,310
+4831,3,2,4,87,0,328
+4832,2,2,3,87,0,303
+4840,3,2,4,87,0,330
+4841,2,2,3,87,0,306
+4849,3,2,4,87,0,334
+4850,2,2,3,87,0,306
+4858,3,2,4,87,0,327
+4859,2,2,3,87,0,302
+4867,3,2,4,87,0,332
+4868,2,2,3,87,0,305
+4876,3,2,4,87,0,327
+4877,2,2,3,87,0,302
+4885,3,2,4,87,0,353
+4886,2,2,3,87,0,301
+4894,3,2,4,87,0,331
+4895,2,2,3,87,0,307
+4903,3,2,4,87,0,333
+4904,2,2,3,87,0,302
+4912,3,2,4,87,0,327
+4913,2,2,3,87,0,303
+4921,3,2,4,87,0,337
+4922,2,2,3,87,0,307
+4930,3,2,4,87,0,332
+4931,2,2,3,87,0,305
+4939,3,2,4,87,0,354
+4940,2,2,3,87,0,309
+4948,3,2,4,87,0,329
+4949,2,2,3,87,0,306
+4957,3,2,4,87,0,331
+4958,2,2,3,87,0,304
+4966,3,2,4,87,0,330
+4967,2,2,3,87,0,304
+4975,3,2,4,87,0,329
+4976,2,2,3,87,0,306
+4984,3,2,4,87,0,336
+4985,2,2,3,87,0,307
+4993,3,2,4,87,0,353
+4994,2,2,3,87,0,303
+5002,3,2,4,87,0,327
+5003,2,2,3,87,0,304
+5011,3,2,4,87,0,325
+5012,2,2,3,87,0,302
+5020,3,2,4,87,0,329
+5021,2,2,3,87,0,304
+5029,3,2,4,87,0,331
+5030,2,2,3,87,0,307
+5038,3,2,4,87,0,330
+5039,2,2,3,87,0,305
+5047,3,2,4,87,0,353
+5048,2,2,3,87,0,303
+5056,3,2,4,87,0,330
+5057,2,2,3,87,0,303
+5065,3,2,4,87,0,329
+5066,2,2,3,87,0,304
+5074,3,2,4,87,0,333
+5075,2,2,3,87,0,312
+5083,3,2,4,87,0,334
+5084,2,2,3,87,0,308
+5092,3,2,4,87,0,330
+5093,2,2,3,87,0,322
+5101,3,2,4,87,0,380
+5102,2,2,3,87,0,308
+5110,3,2,4,87,0,340
+5111,2,2,3,87,0,322
+5119,3,2,4,87,0,340
+5120,2,2,3,87,0,325
+5129,3,2,5,87,0,354
+5130,2,2,3,87,0,326
+5139,3,2,5,87,0,344
+5140,2,2,3,87,0,322
+5149,3,2,5,87,0,341
+5150,2,2,3,87,0,339
+5158,3,2,4,87,0,340
+5159,2,2,3,87,0,327
+5167,3,2,4,87,0,333
+5168,2,2,3,87,0,321
+5176,3,2,4,87,0,338
+5177,2,2,3,87,0,327
+5185,3,2,4,87,0,341
+5186,2,2,3,87,0,322
+5194,3,2,4,87,0,342
+5195,2,2,3,87,0,321
+5203,3,2,4,87,0,342
+5204,2,2,3,87,0,342
+5212,3,2,4,87,0,343
+5213,2,2,3,87,0,323
+5221,3,2,4,87,0,341
+5222,2,2,3,87,0,323
+5230,3,2,4,87,0,339
+5231,2,2,3,87,0,330
+5239,3,2,4,87,0,334
+5240,2,2,3,87,0,324
+5248,3,2,4,87,0,339
+5249,2,2,3,87,0,310
+5257,3,2,4,87,0,399
+5258,2,2,3,87,0,316
+5266,3,2,4,87,0,334
+5267,2,2,3,87,0,310
+5275,3,2,4,87,0,336
+5276,2,2,3,87,0,306
+5284,3,2,4,87,0,360
+5285,2,2,3,87,0,315
+5293,3,2,4,87,0,333
+5294,2,2,3,87,0,311
+5302,3,2,4,87,0,328
+5303,2,2,3,87,0,308
+5311,3,2,4,87,0,351
+5312,2,2,3,87,0,317
+5320,3,2,4,87,0,335
+5321,2,2,3,87,0,316
+5329,3,2,4,87,0,342
+5330,2,2,3,87,0,320
+5338,3,2,4,87,0,338
+5339,2,2,3,87,0,319
+5347,3,2,4,87,0,335
+5348,2,2,3,87,0,323
+5356,3,2,4,87,0,342
+5357,2,2,3,87,0,322
+5365,3,2,4,87,0,361
+5366,2,2,3,87,0,321
+5374,3,2,4,87,0,336
+5375,2,2,3,87,0,320
+5383,3,2,4,87,0,359
+5384,2,2,3,87,0,329
+5392,3,2,4,87,0,336
+5393,2,2,3,87,0,305
+5401,3,2,4,87,0,327
+5402,2,2,3,87,0,303
+5410,3,2,4,87,0,371
+5411,2,2,3,87,0,307
+5419,3,2,4,87,0,349
+5420,2,2,3,87,0,307
+5428,3,2,4,87,0,333
+5429,2,2,3,87,0,306
+5437,3,2,4,87,0,329
+5438,2,2,3,87,0,303
+5446,3,2,4,87,0,334
+5447,2,2,3,87,0,306
+5455,3,2,4,87,0,329
+5456,2,2,3,87,0,306
+5465,3,2,5,87,0,358
+5466,2,2,3,87,0,315
+5475,3,2,5,87,0,367
+5476,2,2,3,87,0,304
+5485,3,2,5,87,0,334
+5486,2,2,3,87,0,308
+5495,3,2,5,87,0,334
+5496,2,2,3,87,0,310
+5505,3,2,5,87,0,363
+5506,2,2,3,87,0,309
+5515,3,2,5,87,0,354
+5516,2,2,3,87,0,303
+5525,2,1,2,87,,12
+5526,4,2,6,32,0,521
+5527,2,3,4,87,,45
+5528,2,2,3,87,,47
+5537,3,2,5,87,0,336
+5538,2,2,3,87,0,302
+5547,2,1,2,87,,12
+5548,4,2,6,32,0,570
+5549,2,3,4,87,,46
+5550,2,2,3,87,,30
+5559,2,1,2,87,,12
+5560,4,2,6,32,0,493
+5561,2,3,4,87,,46
+5562,2,2,3,87,,31
+5571,3,2,5,87,0,333
+5572,2,2,3,87,0,310
+5581,3,2,5,87,0,354
+5582,2,2,3,87,0,318
+5591,3,2,5,87,0,350
+5592,2,2,3,87,0,316
+5601,3,2,5,87,0,358
+5602,2,2,3,87,0,316
+5611,3,2,5,87,0,355
+5612,2,2,3,87,0,310
+5621,3,2,5,87,0,375
+5622,2,2,3,87,0,314
+5631,3,2,5,87,0,370
+5632,2,2,3,87,0,312
+5641,3,2,5,87,0,367
+5642,2,2,3,87,0,310
+5651,3,2,5,87,0,409
+5652,2,2,3,87,0,311
+5661,3,2,5,87,0,365
+5662,2,2,3,87,0,309
+5671,3,2,5,87,0,372
+5672,2,2,3,87,0,313
+5681,3,2,5,87,0,366
+5682,2,2,3,87,0,309
+5690,3,2,4,87,0,1127
+5691,2,2,3,87,0,270
+5699,3,2,4,87,0,345
+5700,2,2,3,87,0,309
+5708,3,2,4,87,0,337
+5709,2,2,3,87,0,312
+5717,3,2,4,87,0,333
+5718,2,2,3,87,0,309
+5726,3,2,4,87,0,333
+5727,2,2,3,87,0,309
+5735,3,2,4,87,0,330
+5736,2,2,3,87,0,308
+5744,3,2,4,87,0,333
+5745,2,2,3,87,0,309
+5753,3,2,4,87,0,345
+5754,2,2,3,87,0,311
+5762,3,2,4,87,0,328
+5763,2,2,3,87,0,339
+5780,3,3,6,89,0,72
+5781,2,2,3,89,0,33
+5798,3,3,6,89,0,67
+5799,2,2,3,89,0,30
+5819,4,2,7,89,0,83
+5820,2,2,3,89,0,31
+5835,2,1,2,89,0,13
+5836,2,2,3,89,0,32
+5837,2,1,2,32,0,11
+5838,1,0,1,1,0,3
+5839,2,2,3,33,0,26
+5840,2,2,3,33,0,24
+5865,2,1,2,90,0,12
+5866,2,2,3,90,0,57
+5867,2,1,2,32,0,12
+5868,1,0,1,0,0,2
+5869,5,2,11,90,0,85
+5870,2,2,3,90,0,31
+5891,2,1,2,90,0,12
+5892,2,2,3,90,0,55
+5893,2,1,2,32,0,11
+5894,1,0,1,0,0,2
+5895,2,1,2,90,0,12
+5896,2,2,3,90,0,54
+5897,2,1,2,32,0,11
+5898,1,0,1,0,0,2
+5899,3,3,6,90,0,63
+5900,2,2,3,90,0,30
+5931,2,1,2,90,0,13
+5932,2,2,3,90,0,54
+5933,2,1,2,32,0,12
+5934,1,0,1,0,0,2
+5935,2,1,2,90,0,12
+5936,2,2,3,90,0,54
+5937,2,1,2,32,0,12
+5938,1,0,1,0,0,2
+5939,2,1,2,90,0,12
+5940,5,3,12,90,0,93
+5941,2,1,2,32,0,12
+5942,4,3,10,21,0,59
+5943,2,1,2,90,0,12
+5944,2,2,3,90,0,54
+5945,2,1,2,32,0,12
+5946,1,0,1,0,0,2
+5947,2,1,2,90,0,12
+5948,2,2,3,90,0,54
+5949,2,1,2,32,0,12
+5950,1,0,1,0,0,2
+5951,5,2,11,90,0,77
+5952,2,2,3,90,0,30
+5966,6,2,14,57,105,78366
+5967,6,2,14,57,105,76139
+5968,6,2,14,57,105,62421
+5969,6,2,11,57,105,62754
+5970,6,2,11,57,105,62673
+5971,6,2,11,57,105,62107
+5972,6,2,14,57,105,62398
+5973,6,2,14,57,105,62529
+5974,6,2,14,57,105,61857
+5975,6,2,11,57,105,62353
+5976,6,2,11,57,105,62245
+5977,6,2,11,57,105,62801
+5978,6,2,14,57,105,62273
+5979,6,2,14,57,105,63451
+5980,7,2,20,57,105,62973
+5981,4,2,6,32,0,4094
+5982,4,2,7,57,63,26327
+5983,4,2,6,32,0,1869
+5984,3,2,5,57,42,20821
+5985,4,2,6,32,0,1734
+5986,4,2,7,57,63,31054
+5987,6,2,17,57,105,55593
+5988,4,2,6,32,0,4074
+5989,4,2,7,57,63,23879
+5990,4,2,6,32,0,1918
+5991,3,2,5,57,42,18584
+5992,4,2,6,32,0,1771
+5993,4,2,7,57,63,28973
+5994,6,2,14,57,63,7685
+5995,6,2,17,57,105,59982
+5996,6,2,17,57,105,57868
+5997,6,2,17,57,105,58198
+5998,6,2,17,57,105,59158
+5999,2,2,3,87,0,370
+6000,2,2,3,87,0,312
Index: doc/theses/aaron_moss_PhD/phd/evaluation/per_prob/minmax-per-prob.csv
===================================================================
--- doc/theses/aaron_moss_PhD/phd/evaluation/per_prob/minmax-per-prob.csv	(revision 92d41a4af1542b1fcfd3bacde48933e4c8519366)
+++ doc/theses/aaron_moss_PhD/phd/evaluation/per_prob/minmax-per-prob.csv	(revision 92d41a4af1542b1fcfd3bacde48933e4c8519366)
@@ -0,0 +1,741 @@
+2707,2,2,3,205,0,557
+2718,3,2,5,205,,76
+2733,2,1,2,206,,13
+2734,2,2,3,206,0,62
+2735,2,1,2,58,0,16
+2736,1,0,1,1,0,2
+2737,2,2,3,20,0,34
+2738,2,2,3,206,0,59
+2750,3,2,5,205,,90
+2765,2,1,2,206,,15
+2766,2,2,3,206,0,58
+2767,2,1,2,58,0,16
+2768,1,0,1,1,0,2
+2769,2,2,3,20,0,37
+2770,2,2,3,206,0,58
+2779,3,2,5,205,0,690
+2780,2,2,3,205,0,612
+2789,3,2,5,205,0,674
+2790,2,2,3,205,0,626
+2799,3,2,5,205,0,667
+2800,2,2,3,205,0,628
+2809,3,2,5,205,0,663
+2810,2,2,3,205,0,669
+2819,3,2,5,205,0,664
+2820,2,2,3,205,0,618
+2829,3,2,5,205,0,665
+2830,2,2,3,205,0,638
+2840,1,0,1,0,0,3
+2841,2,2,3,205,0,643
+2842,2,2,3,205,0,671
+2843,1,0,1,0,0,2
+2844,4,2,7,205,0,1088
+2845,2,2,3,205,0,603
+2846,2,2,3,205,0,629
+2847,1,0,1,0,0,2
+2848,1,0,1,0,0,1
+2849,2,2,3,10,0,94
+2850,1,0,1,0,0,2
+2851,2,2,3,18,0,141
+2852,2,2,3,18,0,140
+2853,3,2,5,205,0,862
+2854,2,2,3,205,0,607
+2875,1,0,1,0,0,2
+2876,2,2,3,208,0,83
+2877,2,2,3,208,0,58
+2878,2,1,2,208,0,17
+2879,2,2,3,208,0,80
+2880,2,1,2,58,0,16
+2881,1,0,1,0,0,2
+2882,1,0,1,0,0,1
+2883,2,2,3,10,0,98
+2884,1,0,1,0,0,2
+2885,3,2,5,59,0,44
+2886,3,2,5,59,0,42
+2887,3,2,5,208,0,71
+2888,2,2,3,208,0,59
+2898,1,0,1,0,0,2
+2899,2,2,3,205,0,641
+2900,2,2,3,205,0,620
+2901,1,0,1,0,0,2
+2902,4,2,7,205,0,1044
+2903,2,2,3,205,0,616
+2904,2,2,3,205,0,650
+2905,1,0,1,0,0,2
+2906,1,0,1,0,0,2
+2907,2,2,3,10,0,97
+2908,1,0,1,0,0,1
+2909,2,2,3,18,0,141
+2910,2,2,3,18,0,142
+2911,3,2,5,205,0,863
+2912,2,2,3,205,0,602
+2921,1,0,1,0,0,2
+2922,2,2,3,205,0,625
+2923,2,2,3,205,0,645
+2924,4,2,7,205,0,1146
+2925,2,2,3,205,0,631
+2934,3,2,5,58,0,626
+2935,2,2,3,205,0,643
+2936,2,2,3,205,0,647
+2945,3,2,5,58,0,619
+2946,2,2,3,205,0,639
+2947,2,2,3,205,0,634
+2956,3,2,5,58,0,632
+2957,2,2,3,205,0,631
+2958,2,2,3,205,0,662
+2967,3,2,5,58,0,634
+2968,2,2,3,205,0,665
+2969,2,2,3,205,0,651
+2997,1,0,1,0,0,6
+2998,2,2,3,205,0,59
+2999,2,2,3,205,0,59
+3034,1,0,1,0,0,2
+3035,1,0,1,0,0,2
+3036,2,2,3,205,0,59
+3037,2,2,3,205,0,58
+3080,1,0,1,0,0,2
+3081,2,2,3,205,0,59
+3082,2,2,3,205,0,58
+3096,2,2,3,58,,3
+3103,2,2,3,58,,3
+3131,1,0,1,0,0,3
+3132,2,2,3,205,0,59
+3133,2,2,3,205,0,59
+3147,2,2,3,58,,2
+3154,2,2,3,58,,3
+3182,1,0,1,0,0,2
+3183,2,2,3,205,0,656
+3184,2,2,3,205,0,687
+3193,2,2,3,205,0,666
+3194,1,0,1,0,0,2
+3195,1,0,1,0,0,1
+3196,1,0,1,0,0,1
+3197,2,2,3,205,0,659
+3198,1,0,1,0,0,2
+3199,1,0,1,0,0,2
+3200,1,0,1,0,0,1
+3210,2,2,3,205,0,659
+3211,1,0,1,0,0,2
+3212,1,0,1,0,0,2
+3213,1,0,1,0,0,2
+3214,2,2,3,205,0,670
+3215,1,0,1,0,0,2
+3216,1,0,1,0,0,2
+3217,1,0,1,0,0,1
+3226,2,2,3,205,0,673
+3227,1,0,1,0,0,2
+3228,1,0,1,0,0,2
+3229,1,0,1,0,0,1
+3230,2,2,3,205,0,688
+3231,1,0,1,0,0,2
+3232,1,0,1,0,0,2
+3233,1,0,1,0,0,1
+3244,1,0,1,0,0,2
+3245,1,0,1,0,0,2
+3246,1,0,1,0,0,2
+3247,1,0,1,0,0,2
+3248,1,0,1,0,0,2
+3249,2,2,3,205,0,670
+3250,1,0,1,0,0,2
+3251,1,0,1,0,0,2
+3252,1,0,1,0,0,2
+3253,1,0,1,0,0,2
+3254,2,2,3,205,0,658
+3255,1,0,1,0,0,2
+3256,1,0,1,0,0,2
+3257,1,0,1,0,0,1
+3258,1,0,1,0,0,1
+3259,2,2,3,205,0,62
+3260,2,2,3,205,0,62
+3270,2,2,3,205,0,663
+3271,1,0,1,0,0,2
+3272,1,0,1,0,0,2
+3273,1,0,1,0,0,9
+3274,2,2,3,205,0,638
+3275,1,0,1,0,0,2
+3276,1,0,1,0,0,2
+3277,1,0,1,0,0,2
+3288,2,2,3,205,0,672
+3289,1,0,1,0,0,2
+3290,1,0,1,0,0,1
+3291,1,0,1,0,0,1
+3292,2,2,3,205,0,663
+3293,1,0,1,0,0,5
+3294,1,0,1,0,0,1
+3295,1,0,1,0,0,2
+3307,2,2,3,205,0,656
+3308,1,0,1,0,0,2
+3309,1,0,1,0,0,1
+3310,1,0,1,0,0,2
+3311,2,2,3,205,0,667
+3312,1,0,1,0,0,2
+3313,1,0,1,0,0,2
+3314,1,0,1,0,0,1
+3327,2,2,3,205,0,660
+3328,1,0,1,0,0,2
+3329,1,0,1,0,0,1
+3330,1,0,1,0,0,2
+3331,2,2,3,205,0,661
+3332,1,0,1,0,0,2
+3333,1,0,1,0,0,1
+3334,1,0,1,0,0,2
+3348,2,2,3,205,0,665
+3349,1,0,1,0,0,5
+3350,1,0,1,0,0,2
+3351,1,0,1,0,0,2
+3352,2,2,3,205,0,661
+3353,1,0,1,0,0,2
+3354,1,0,1,0,0,2
+3355,1,0,1,0,0,2
+3370,2,2,3,205,0,651
+3371,1,0,1,0,0,2
+3372,1,0,1,0,0,1
+3373,1,0,1,0,0,2
+3374,2,2,3,205,0,654
+3375,1,0,1,0,0,2
+3376,1,0,1,0,0,2
+3377,1,0,1,0,0,2
+3393,2,2,3,205,0,651
+3394,1,0,1,0,0,2
+3395,1,0,1,0,0,2
+3396,1,0,1,0,0,2
+3397,2,2,3,205,0,659
+3398,1,0,1,0,0,2
+3399,1,0,1,0,0,2
+3400,1,0,1,0,0,2
+3428,1,0,1,0,0,2
+3429,2,2,3,205,0,60
+3430,2,2,3,205,0,66
+3465,1,0,1,0,0,2
+3466,2,2,3,205,0,666
+3467,2,2,3,205,0,631
+3475,2,2,3,205,0,662
+3476,1,0,1,0,0,2
+3477,1,0,1,0,0,2
+3478,1,0,1,0,0,2
+3487,2,2,3,205,0,673
+3488,1,0,1,0,0,2
+3489,1,0,1,0,0,1
+3490,1,0,1,0,0,2
+3498,2,2,3,205,0,658
+3499,1,0,1,0,0,2
+3500,1,0,1,0,0,2
+3501,1,0,1,0,0,2
+3511,2,2,3,205,0,670
+3512,1,0,1,0,0,2
+3513,1,0,1,0,0,2
+3514,1,0,1,0,0,2
+3515,1,0,1,0,0,1
+3516,2,2,3,205,0,60
+3517,2,2,3,205,0,59
+3526,2,2,3,205,0,659
+3527,1,0,1,0,0,2
+3528,1,0,1,0,0,9
+3529,1,0,1,0,0,1
+3537,3,2,4,205,0,698
+3538,2,2,3,205,0,683
+3546,3,2,4,205,0,708
+3547,2,2,3,205,0,675
+3575,1,0,1,0,0,2
+3576,1,0,1,0,0,2
+3577,2,2,3,205,0,63
+3578,2,2,3,205,0,70
+3621,1,0,1,0,0,3
+3622,1,0,1,0,0,2
+3623,1,0,1,0,0,2
+3624,2,2,3,205,0,62
+3625,2,2,3,205,0,60
+3663,1,0,1,0,0,2
+3678,1,0,1,0,0,2
+3679,2,2,3,205,0,61
+3680,2,2,3,205,0,60
+3688,1,0,1,0,0,2
+3702,1,0,1,0,0,2
+3717,1,0,1,0,0,2
+3718,2,2,3,205,0,60
+3719,2,2,3,205,0,60
+3727,1,0,1,0,0,5
+3755,1,0,1,0,0,2
+3756,1,0,1,0,0,2
+3757,2,2,3,205,0,62
+3758,2,2,3,205,0,59
+3801,1,0,1,0,0,3
+3802,1,0,1,0,0,5
+3803,2,2,3,205,0,60
+3804,2,2,3,205,0,58
+3847,1,0,1,0,0,2
+3848,1,0,1,0,0,1
+3849,2,2,3,205,0,64
+3850,2,2,3,205,0,60
+3873,2,2,3,205,0,672
+3874,1,0,1,0,0,2
+3875,1,0,1,0,0,2
+3876,1,0,1,0,0,2
+3885,2,2,3,205,0,681
+3886,1,0,1,0,0,2
+3887,1,0,1,0,0,2
+3888,1,0,1,0,0,2
+3896,2,2,3,205,0,660
+3897,1,0,1,0,0,2
+3898,1,0,1,0,0,1
+3899,1,0,1,0,0,1
+3909,2,2,3,205,0,678
+3910,1,0,1,0,0,2
+3911,1,0,1,0,0,2
+3912,1,0,1,0,0,2
+3913,1,0,1,0,0,1
+3914,2,2,3,205,0,64
+3915,2,2,3,205,0,58
+3924,2,2,3,205,0,669
+3925,1,0,1,0,0,2
+3926,1,0,1,0,0,2
+3927,1,0,1,0,0,2
+3955,1,0,1,0,0,2
+3956,1,0,1,0,0,1
+3957,2,2,3,205,0,61
+3958,2,2,3,205,0,62
+4001,1,0,1,0,0,2
+4002,1,0,1,0,0,2
+4003,2,2,3,205,0,58
+4004,2,2,3,205,0,59
+4027,2,2,3,205,0,690
+4028,1,0,1,0,0,2
+4029,1,0,1,0,0,2
+4030,1,0,1,0,0,2
+4039,2,2,3,205,0,679
+4040,1,0,1,0,0,2
+4041,1,0,1,0,0,1
+4042,1,0,1,0,0,1
+4050,2,2,3,205,0,674
+4051,1,0,1,0,0,2
+4052,1,0,1,0,0,2
+4053,1,0,1,0,0,2
+4063,2,2,3,205,0,681
+4064,1,0,1,0,0,2
+4065,1,0,1,0,0,2
+4066,1,0,1,0,0,2
+4067,1,0,1,0,0,2
+4068,2,2,3,205,0,60
+4069,2,2,3,205,0,63
+4078,2,2,3,205,0,690
+4079,1,0,1,0,0,1
+4080,1,0,1,0,0,1
+4081,1,0,1,0,0,1
+4095,1,0,1,0,0,1
+4110,1,0,1,0,0,2
+4111,2,2,3,205,0,60
+4112,2,2,3,205,0,58
+4120,1,0,1,0,0,2
+4148,1,0,1,0,0,2
+4149,1,0,1,0,0,2
+4150,2,2,3,205,0,60
+4151,2,2,3,205,0,59
+4194,1,0,1,0,0,2
+4195,1,0,1,0,0,5
+4196,1,0,1,0,0,1
+4197,1,0,1,0,0,1
+4198,1,0,1,0,0,2
+4199,1,0,1,0,0,2
+4200,1,0,1,0,0,2
+4201,1,0,1,0,0,2
+4202,2,2,3,205,0,61
+4203,2,2,3,205,0,62
+4301,1,0,1,0,0,3
+4316,1,0,1,0,0,2
+4317,2,2,3,205,0,69
+4318,2,2,3,205,0,62
+4326,1,0,1,0,0,3
+4340,1,0,1,0,0,2
+4355,1,0,1,0,0,2
+4356,2,2,3,205,0,62
+4357,2,2,3,205,0,61
+4365,1,0,1,0,0,2
+4393,1,0,1,0,0,2
+4394,1,0,1,0,0,2
+4395,1,0,1,0,0,2
+4396,1,0,1,0,0,1
+4397,1,0,1,0,0,2
+4398,1,0,1,0,0,2
+4399,1,0,1,0,0,5
+4400,1,0,1,0,0,1
+4401,2,2,3,205,0,62
+4402,2,2,3,205,0,62
+4500,1,0,1,0,0,3
+4515,1,0,1,0,0,2
+4516,2,2,3,205,0,63
+4517,2,2,3,205,0,59
+4525,1,0,1,0,0,2
+4539,1,0,1,0,0,2
+4554,1,0,1,0,0,2
+4555,2,2,3,205,0,64
+4556,2,2,3,205,0,59
+4564,1,0,1,0,0,2
+4572,2,2,3,205,0,668
+4573,1,0,1,0,0,2
+4574,1,0,1,0,0,2
+4575,1,0,1,0,0,2
+4584,2,2,3,205,0,678
+4585,1,0,1,0,0,1
+4586,1,0,1,0,0,1
+4587,1,0,1,0,0,1
+4595,2,2,3,205,0,658
+4596,1,0,1,0,0,2
+4597,1,0,1,0,0,2
+4598,1,0,1,0,0,1
+4608,1,0,1,0,0,2
+4609,1,0,1,0,0,2
+4610,1,0,1,0,0,2
+4611,1,0,1,0,0,2
+4612,1,0,1,0,0,2
+4613,1,0,1,0,0,2
+4614,1,0,1,0,0,2
+4615,1,0,1,0,0,2
+4616,1,0,1,0,0,2
+4617,2,2,3,205,0,674
+4618,1,0,1,0,0,2
+4619,1,0,1,0,0,1
+4620,1,0,1,0,0,1
+4621,1,0,1,0,0,1
+4622,1,0,1,0,0,2
+4623,1,0,1,0,0,2
+4624,2,2,3,205,0,51
+4625,2,2,3,205,0,52
+4634,2,2,3,205,0,669
+4635,1,0,1,0,0,2
+4636,1,0,1,0,0,2
+4637,1,0,1,0,0,1
+4647,2,2,3,205,0,671
+4648,1,0,1,0,0,2
+4649,1,0,1,0,0,1
+4650,1,0,1,0,0,2
+4661,2,2,3,205,0,669
+4662,1,0,1,0,0,2
+4663,1,0,1,0,0,2
+4664,1,0,1,0,0,1
+4676,2,2,3,205,0,670
+4677,1,0,1,0,0,2
+4678,1,0,1,0,0,1
+4679,1,0,1,0,0,1
+4692,2,2,3,205,0,671
+4693,1,0,1,0,0,2
+4694,1,0,1,0,0,2
+4695,1,0,1,0,0,1
+4709,2,2,3,205,0,685
+4710,1,0,1,0,0,1
+4711,1,0,1,0,0,1
+4712,1,0,1,0,0,1
+4727,2,2,3,205,0,687
+4728,1,0,1,0,0,5
+4729,1,0,1,0,0,2
+4730,1,0,1,0,0,2
+4746,2,2,3,205,0,676
+4747,1,0,1,0,0,1
+4748,1,0,1,0,0,1
+4749,1,0,1,0,0,2
+4766,2,2,3,205,0,692
+4767,1,0,1,0,0,2
+4768,1,0,1,0,0,1
+4769,1,0,1,0,0,2
+4787,2,2,3,205,0,688
+4788,1,0,1,0,0,2
+4789,1,0,1,0,0,2
+4790,1,0,1,0,0,2
+4809,2,2,3,205,0,681
+4810,1,0,1,0,0,2
+4811,1,0,1,0,0,2
+4812,1,0,1,0,0,1
+4832,2,2,3,205,0,681
+4833,1,0,1,0,0,2
+4834,1,0,1,0,0,2
+4835,1,0,1,0,0,2
+4849,1,0,1,0,0,2
+4864,1,0,1,0,0,2
+4865,2,2,3,205,0,61
+4866,2,2,3,205,0,58
+4874,1,0,1,0,0,2
+4888,1,0,1,0,0,2
+4903,1,0,1,0,0,2
+4904,2,2,3,205,0,59
+4905,2,2,3,205,0,58
+4913,1,0,1,0,0,3
+4927,1,0,1,0,0,2
+4942,1,0,1,0,0,2
+4943,2,2,3,205,0,59
+4944,2,2,3,205,0,58
+4952,1,0,1,0,0,5
+4966,1,0,1,0,0,2
+4981,1,0,1,0,0,2
+4982,2,2,3,205,0,59
+4983,2,2,3,205,0,62
+4991,1,0,1,0,0,2
+5019,1,0,1,0,0,5
+5020,1,0,1,0,0,2
+5021,1,0,1,0,0,2
+5022,1,0,1,0,0,2
+5023,1,0,1,0,0,2
+5024,1,0,1,0,0,2
+5025,1,0,1,0,0,2
+5026,2,2,3,205,0,61
+5027,2,2,3,205,0,60
+5106,2,2,3,205,0,696
+5107,1,0,1,0,0,2
+5108,1,0,1,0,0,2
+5109,1,0,1,0,0,2
+5110,2,2,3,205,0,677
+5111,1,0,1,0,0,2
+5112,1,0,1,0,0,2
+5113,1,0,1,0,0,2
+5123,2,2,3,205,0,672
+5124,1,0,1,0,0,4
+5125,1,0,1,0,0,2
+5126,1,0,1,0,0,1
+5127,2,2,3,205,0,687
+5128,1,0,1,0,0,2
+5129,1,0,1,0,0,1
+5130,1,0,1,0,0,1
+5139,2,2,3,205,0,644
+5140,1,0,1,0,0,2
+5141,1,0,1,0,0,2
+5142,1,0,1,0,0,2
+5143,2,2,3,205,0,696
+5144,1,0,1,0,0,2
+5145,1,0,1,0,0,2
+5146,1,0,1,0,0,1
+5157,2,2,3,205,0,684
+5158,1,0,1,0,0,2
+5159,1,0,1,0,0,2
+5160,1,0,1,0,0,1
+5161,1,0,1,0,0,2
+5162,2,2,3,205,0,684
+5163,1,0,1,0,0,2
+5164,1,0,1,0,0,2
+5165,1,0,1,0,0,2
+5166,1,0,1,0,0,2
+5167,1,0,1,0,0,2
+5168,1,0,1,0,0,1
+5169,1,0,1,0,0,2
+5170,2,2,3,205,0,64
+5171,2,2,3,205,0,62
+5181,2,2,3,205,0,658
+5182,1,0,1,0,0,2
+5183,1,0,1,0,0,2
+5184,1,0,1,0,0,2
+5185,2,2,3,205,0,681
+5186,1,0,1,0,0,2
+5187,1,0,1,0,0,2
+5188,1,0,1,0,0,1
+5199,2,2,3,205,0,666
+5200,1,0,1,0,0,1
+5201,1,0,1,0,0,1
+5202,1,0,1,0,0,2
+5203,2,2,3,205,0,693
+5204,1,0,1,0,0,2
+5205,1,0,1,0,0,2
+5206,1,0,1,0,0,1
+5218,2,2,3,205,0,680
+5219,1,0,1,0,0,2
+5220,1,0,1,0,0,2
+5221,1,0,1,0,0,2
+5222,2,2,3,205,0,672
+5223,1,0,1,0,0,2
+5224,1,0,1,0,0,2
+5225,1,0,1,0,0,1
+5238,2,2,3,205,0,654
+5239,1,0,1,0,0,2
+5240,1,0,1,0,0,2
+5241,1,0,1,0,0,2
+5242,2,2,3,205,0,673
+5243,1,0,1,0,0,2
+5244,1,0,1,0,0,2
+5245,1,0,1,0,0,2
+5259,2,2,3,205,0,665
+5260,1,0,1,0,0,2
+5261,1,0,1,0,0,2
+5262,1,0,1,0,0,2
+5263,2,2,3,205,0,671
+5264,1,0,1,0,0,1
+5265,1,0,1,0,0,2
+5266,1,0,1,0,0,1
+5273,2,2,3,205,0,69
+5274,2,2,3,205,0,65
+5282,2,2,3,205,0,70
+5283,2,2,3,205,0,65
+5292,2,2,3,205,0,66
+5293,2,2,3,205,0,69
+5301,2,2,3,205,0,66
+5302,2,2,3,205,0,65
+5310,2,2,3,205,0,65
+5311,2,2,3,205,0,68
+5320,3,3,6,205,0,709
+5321,2,2,3,205,0,656
+5328,2,2,3,205,0,65
+5329,2,2,3,205,0,64
+5338,2,2,3,205,0,66
+5339,1,0,1,0,0,2
+5340,2,2,3,205,0,64
+5341,2,2,3,205,0,64
+5349,2,2,3,205,0,64
+5350,2,2,3,205,0,67
+5360,2,2,3,205,0,66
+5361,1,0,1,0,0,2
+5362,2,2,3,205,0,65
+5363,2,2,3,205,0,63
+5372,2,2,3,205,0,64
+5373,2,2,3,205,0,64
+5381,2,2,3,205,0,64
+5382,2,2,3,205,0,65
+5392,2,2,3,205,0,71
+5393,1,0,1,0,0,2
+5394,2,2,3,205,0,64
+5395,2,2,3,205,0,70
+5404,2,2,3,205,0,66
+5405,2,2,3,205,0,65
+5416,1,0,1,0,0,3
+5417,2,2,3,58,0,42
+5418,2,2,3,58,0,37
+5419,2,2,3,205,0,66
+5420,2,2,3,205,0,64
+5421,2,2,3,205,0,65
+5422,2,2,3,205,0,65
+5431,2,2,3,205,0,64
+5432,2,2,3,205,0,68
+5441,2,2,3,205,0,65
+5442,2,2,3,205,0,65
+5452,2,2,3,205,0,68
+5453,2,2,3,205,0,64
+5463,2,2,3,205,0,65
+5464,2,2,3,205,0,65
+5474,2,2,3,205,0,686
+5475,2,2,3,205,0,682
+5485,2,2,3,205,0,656
+5486,2,2,3,205,0,673
+5496,3,3,6,205,0,715
+5497,2,2,3,205,0,675
+5507,3,3,6,205,0,707
+5508,2,2,3,205,0,678
+5518,3,3,6,205,0,706
+5519,2,2,3,205,0,692
+5529,3,3,6,205,0,710
+5530,2,2,3,205,0,666
+5539,3,2,5,205,0,669
+5540,2,2,3,205,0,663
+5549,3,2,5,205,0,673
+5550,2,2,3,205,0,685
+5559,3,2,5,205,0,680
+5560,2,2,3,205,0,675
+5568,2,2,3,205,0,686
+5569,2,2,3,205,0,692
+5577,2,2,3,205,0,681
+5578,2,2,3,205,0,682
+5586,3,3,6,205,,78
+5587,2,2,3,205,0,670
+5595,3,3,6,205,,75
+5596,2,2,3,205,0,676
+5604,3,3,6,205,,75
+5605,2,2,3,205,0,679
+5613,3,3,6,205,,76
+5614,2,2,3,205,0,673
+5622,3,2,5,205,,62
+5623,2,2,3,205,0,681
+5631,3,2,5,205,,53
+5632,2,2,3,205,0,663
+5640,3,2,5,205,,55
+5641,2,2,3,205,0,666
+5649,3,2,5,205,,109
+5650,2,2,3,205,0,690
+5658,3,2,5,205,,105
+5659,2,2,3,205,0,670
+5667,3,2,5,205,,100
+5668,2,2,3,205,0,673
+5677,1,0,1,0,0,2
+5678,2,4,5,58,,93
+5679,5,2,9,205,0,1451
+5680,2,2,3,205,0,682
+5688,1,0,1,0,0,2
+5689,3,2,5,205,0,772
+5690,2,2,3,205,0,690
+5691,3,2,5,205,0,769
+5692,2,2,3,205,0,679
+5699,2,2,3,205,0,681
+5700,2,2,3,205,0,679
+5709,1,0,1,0,0,2
+5710,2,4,5,58,,75
+5711,5,2,9,205,0,1237
+5712,2,2,3,205,0,608
+5720,3,2,5,205,0,774
+5721,2,2,3,205,0,643
+5728,2,2,3,205,0,634
+5729,2,2,3,205,0,634
+5737,3,2,4,205,0,708
+5738,2,2,3,205,0,636
+5747,3,2,5,205,0,726
+5748,2,2,3,205,0,635
+5755,2,2,3,205,0,646
+5756,2,2,3,205,0,638
+5764,3,2,4,205,0,712
+5765,2,2,3,205,0,645
+5774,3,2,5,205,0,745
+5775,2,2,3,205,0,654
+5782,2,2,3,205,0,650
+5783,2,2,3,205,0,667
+5791,3,2,4,205,0,713
+5792,2,2,3,205,0,637
+5801,3,2,5,205,0,744
+5802,2,2,3,205,0,649
+5810,3,2,4,205,0,1402
+5811,2,2,3,205,0,640
+5819,3,2,4,205,0,680
+5820,2,2,3,205,0,662
+5828,3,2,4,205,0,673
+5829,2,2,3,205,0,647
+5837,3,2,4,205,0,679
+5838,2,2,3,205,0,653
+5846,3,2,4,205,0,671
+5847,2,2,3,205,0,654
+5855,3,2,4,205,0,677
+5856,2,2,3,205,0,665
+5864,3,2,4,205,0,671
+5865,2,2,3,205,0,646
+5873,3,2,4,205,0,675
+5874,2,2,3,205,0,653
+5882,3,2,4,205,0,674
+5883,2,2,3,205,0,661
+5900,3,3,6,207,0,94
+5901,2,2,3,207,0,58
+5918,3,3,6,207,0,93
+5919,2,2,3,207,0,58
+5939,4,2,7,207,0,107
+5940,2,2,3,207,0,62
+5955,2,1,2,207,0,17
+5956,2,2,3,207,0,58
+5957,2,1,2,58,0,16
+5958,1,0,1,1,0,3
+5959,2,2,3,59,0,31
+5960,2,2,3,59,0,32
+5969,8,2,17,57,152,85286
+5970,7,2,15,57,131,52816
+5971,7,2,15,57,131,51016
+5972,7,2,15,57,131,44675
+5973,7,2,15,57,131,42407
+5974,7,2,15,57,131,41533
+5975,7,2,15,57,131,41008
+5976,7,2,15,57,131,41119
+5977,7,2,15,57,131,41184
+5978,7,2,15,57,131,41506
+5979,2,2,3,57,21,2831
+5980,8,2,17,57,152,64050
+5981,7,2,15,57,131,43331
+5982,7,2,15,57,131,41802
+5983,7,2,15,57,131,42325
+5984,7,2,15,57,131,42082
+5985,7,2,15,57,131,41917
+5986,7,2,15,57,131,42045
+5987,7,2,15,57,131,42216
+5988,7,2,15,57,131,42212
+5989,7,2,15,57,131,42601
+5990,2,2,3,205,0,724
+5991,2,2,3,205,0,671
+5999,3,2,5,205,0,925
+6000,2,2,3,205,0,685
+6009,3,2,5,205,0,924
+6010,2,2,3,205,0,690
Index: doc/theses/aaron_moss_PhD/phd/evaluation/per_prob/preemption-per-prob.csv
===================================================================
--- doc/theses/aaron_moss_PhD/phd/evaluation/per_prob/preemption-per-prob.csv	(revision 92d41a4af1542b1fcfd3bacde48933e4c8519366)
+++ doc/theses/aaron_moss_PhD/phd/evaluation/per_prob/preemption-per-prob.csv	(revision 92d41a4af1542b1fcfd3bacde48933e4c8519366)
@@ -0,0 +1,3216 @@
+4735,1,0,1,0,0,13
+4736,1,0,1,0,0,2
+4737,2,2,3,734,0,2212
+4738,2,2,3,734,0,2179
+4739,2,2,3,734,0,2177
+4740,2,2,3,734,0,2170
+4741,2,2,3,734,0,2171
+4742,2,2,3,734,0,2154
+4743,2,2,3,734,0,2198
+4744,2,2,3,734,0,2144
+4745,2,2,3,734,0,2174
+4746,2,2,3,734,0,2193
+4747,2,2,3,734,0,2184
+4748,2,2,3,734,0,2179
+4749,2,2,3,734,0,2177
+4750,2,2,3,734,0,2195
+4751,2,2,3,734,0,2176
+4752,2,2,3,734,0,2184
+4753,2,2,3,734,0,2184
+4754,2,2,3,734,0,2199
+4755,2,2,3,734,0,2205
+4756,2,2,3,734,0,2189
+4757,2,2,3,734,0,2204
+4758,2,2,3,734,0,2219
+4759,2,2,3,734,0,2205
+4760,2,2,3,734,0,2185
+4761,2,2,3,734,0,2212
+4762,2,2,3,734,0,2205
+4763,1,0,1,0,0,2
+4764,1,0,1,0,0,2
+4765,2,2,3,734,0,2222
+4766,2,2,3,734,0,2210
+4767,1,0,1,0,0,2
+4768,2,2,3,734,0,2198
+4769,2,2,3,734,0,2195
+4770,2,2,3,734,0,256
+4771,1,0,1,0,0,2
+4782,3,2,5,734,,268
+4797,2,1,2,735,,44
+4798,2,2,3,735,0,240
+4799,2,1,2,144,0,42
+4800,1,0,1,1,0,2
+4801,2,2,3,22,0,44
+4802,2,2,3,735,0,236
+4814,3,2,5,734,,266
+4829,2,1,2,735,,42
+4830,2,2,3,735,0,239
+4831,2,1,2,144,0,41
+4832,1,0,1,1,0,2
+4833,2,2,3,22,0,39
+4834,2,2,3,735,0,234
+4843,3,2,5,734,0,2099
+4844,2,2,3,734,0,2131
+4853,3,2,5,734,0,2247
+4854,2,2,3,734,0,2167
+4863,3,2,5,734,0,2277
+4864,2,2,3,734,0,2162
+4873,3,2,5,734,0,2234
+4874,2,2,3,734,0,2188
+4883,3,2,5,734,0,2248
+4884,2,2,3,734,0,2154
+4893,3,2,5,734,0,2212
+4894,2,2,3,734,0,2132
+4904,1,0,1,0,0,1
+4905,2,2,3,734,0,2254
+4906,2,2,3,734,0,2196
+4907,1,0,1,0,0,1
+4908,4,2,7,734,0,2664
+4909,2,2,3,734,0,2192
+4910,2,2,3,734,0,2282
+4911,1,0,1,0,0,2
+4912,1,0,1,0,0,2
+4913,2,2,3,10,0,82
+4914,1,0,1,0,0,1
+4915,2,2,3,19,0,151
+4916,2,2,3,19,0,152
+4917,3,2,5,734,0,2395
+4918,2,2,3,734,0,2181
+4939,1,0,1,0,0,2
+4940,2,2,3,737,0,237
+4941,2,2,3,737,0,229
+4942,2,1,2,737,0,44
+4943,2,2,3,737,0,253
+4944,2,1,2,144,0,41
+4945,1,0,1,0,0,2
+4946,1,0,1,0,0,1
+4947,2,2,3,10,0,99
+4948,1,0,1,0,0,2
+4949,3,2,5,150,0,83
+4950,3,2,5,150,0,79
+4951,3,2,5,737,0,243
+4952,2,2,3,737,0,229
+4962,1,0,1,0,0,2
+4963,2,2,3,734,0,2069
+4964,2,2,3,734,0,2167
+4965,1,0,1,0,0,1
+4966,4,2,7,734,0,2564
+4967,2,2,3,734,0,2170
+4968,2,2,3,734,0,2155
+4969,1,0,1,0,0,2
+4970,1,0,1,0,0,1
+4971,2,2,3,10,0,76
+4972,1,0,1,0,0,2
+4973,2,2,3,19,0,141
+4974,2,2,3,19,0,142
+4975,3,2,5,734,0,2347
+4976,2,2,3,734,0,2173
+4985,1,0,1,0,0,2
+4986,2,2,3,734,0,2172
+4987,2,2,3,734,0,2174
+4988,4,2,7,734,0,2650
+4989,2,2,3,734,0,2173
+4998,3,2,5,149,0,966
+4999,2,2,3,734,0,2120
+5000,2,2,3,734,0,2209
+5009,3,2,5,149,0,970
+5010,2,2,3,734,0,2096
+5011,2,2,3,734,0,2163
+5020,3,2,5,149,0,965
+5021,2,2,3,734,0,2105
+5022,2,2,3,734,0,2278
+5031,3,2,5,149,0,964
+5032,2,2,3,734,0,2053
+5033,2,2,3,734,0,2157
+5041,2,2,3,734,0,2160
+5042,1,0,1,0,0,1
+5043,1,0,1,0,0,2
+5044,1,0,1,0,0,2
+5053,2,2,3,734,0,2169
+5054,1,0,1,0,0,2
+5055,1,0,1,0,0,1
+5056,1,0,1,0,0,1
+5064,2,2,3,734,0,2162
+5065,1,0,1,0,0,2
+5066,1,0,1,0,0,2
+5067,1,0,1,0,0,2
+5077,2,2,3,734,0,2189
+5078,1,0,1,0,0,1
+5079,1,0,1,0,0,2
+5080,1,0,1,0,0,2
+5081,1,0,1,0,0,2
+5082,2,2,3,734,0,214
+5083,2,2,3,734,0,232
+5092,2,2,3,734,0,2146
+5093,1,0,1,0,0,2
+5094,1,0,1,0,0,1
+5095,1,0,1,0,0,1
+5123,1,0,1,0,0,1
+5124,1,0,1,0,0,2
+5125,2,2,3,734,0,219
+5126,2,2,3,734,0,232
+5169,1,0,1,0,0,2
+5170,1,0,1,0,0,1
+5171,1,0,1,0,0,2
+5172,1,0,1,0,0,1
+5173,1,0,1,0,0,2
+5174,1,0,1,0,0,2
+5175,1,0,1,0,0,2
+5176,1,0,1,0,0,1
+5177,1,0,1,0,0,2
+5178,1,0,1,0,0,2
+5179,1,0,1,0,0,2
+5180,2,2,3,734,0,239
+5181,2,2,3,734,0,237
+5341,1,0,1,0,0,2
+5342,1,0,1,0,0,2
+5343,2,2,3,734,0,234
+5344,2,2,3,734,0,237
+5368,2,2,3,734,0,2096
+5369,1,0,1,0,0,1
+5370,1,0,1,0,0,1
+5371,1,0,1,0,0,1
+5372,2,2,3,734,0,2195
+5373,1,0,1,0,0,2
+5374,1,0,1,0,0,1
+5375,1,0,1,0,0,1
+5385,2,2,3,734,0,2249
+5386,1,0,1,0,0,1
+5387,1,0,1,0,0,1
+5388,1,0,1,0,0,1
+5389,2,2,3,734,0,2198
+5390,1,0,1,0,0,2
+5391,1,0,1,0,0,2
+5392,1,0,1,0,0,2
+5401,2,2,3,734,0,2241
+5402,1,0,1,0,0,2
+5403,1,0,1,0,0,2
+5404,1,0,1,0,0,2
+5405,2,2,3,734,0,2218
+5406,1,0,1,0,0,2
+5407,1,0,1,0,0,2
+5408,1,0,1,0,0,2
+5419,2,2,3,734,0,2228
+5420,1,0,1,0,0,2
+5421,1,0,1,0,0,1
+5422,1,0,1,0,0,1
+5423,1,0,1,0,0,2
+5424,1,0,1,0,0,2
+5425,1,0,1,0,0,1
+5426,1,0,1,0,0,1
+5427,2,2,3,734,0,2219
+5428,1,0,1,0,0,2
+5429,1,0,1,0,0,2
+5430,1,0,1,0,0,1
+5431,1,0,1,0,0,2
+5432,2,2,3,734,0,209
+5433,2,2,3,734,0,234
+5443,2,2,3,734,0,2161
+5444,1,0,1,0,0,2
+5445,1,0,1,0,0,2
+5446,1,0,1,0,0,2
+5447,2,2,3,734,0,2200
+5448,1,0,1,0,0,2
+5449,1,0,1,0,0,1
+5450,1,0,1,0,0,1
+5461,2,2,3,734,0,2217
+5462,1,0,1,0,0,2
+5463,1,0,1,0,0,2
+5464,1,0,1,0,0,2
+5465,2,2,3,734,0,2205
+5466,1,0,1,0,0,1
+5467,1,0,1,0,0,1
+5468,1,0,1,0,0,1
+5480,2,2,3,734,0,2244
+5481,1,0,1,0,0,2
+5482,1,0,1,0,0,1
+5483,1,0,1,0,0,2
+5484,2,2,3,734,0,2178
+5485,1,0,1,0,0,1
+5486,1,0,1,0,0,1
+5487,1,0,1,0,0,1
+5500,2,2,3,734,0,2232
+5501,1,0,1,0,0,2
+5502,1,0,1,0,0,1
+5503,1,0,1,0,0,1
+5504,2,2,3,734,0,2180
+5505,1,0,1,0,0,2
+5506,1,0,1,0,0,1
+5507,1,0,1,0,0,1
+5521,2,2,3,734,0,2223
+5522,1,0,1,0,0,2
+5523,1,0,1,0,0,2
+5524,1,0,1,0,0,2
+5525,2,2,3,734,0,2204
+5526,1,0,1,0,0,2
+5527,1,0,1,0,0,2
+5528,1,0,1,0,0,2
+5556,1,0,1,0,0,1
+5557,1,0,1,0,0,1
+5558,2,2,3,734,0,214
+5559,2,2,3,734,0,235
+5582,2,2,3,734,0,2155
+5583,1,0,1,0,0,2
+5584,1,0,1,0,0,2
+5585,1,0,1,0,0,2
+5594,2,2,3,734,0,2196
+5595,1,0,1,0,0,1
+5596,1,0,1,0,0,1
+5597,1,0,1,0,0,1
+5605,2,2,3,734,0,2234
+5606,1,0,1,0,0,1
+5607,1,0,1,0,0,1
+5608,1,0,1,0,0,1
+5618,2,2,3,734,0,2213
+5619,1,0,1,0,0,1
+5620,1,0,1,0,0,1
+5621,1,0,1,0,0,1
+5622,1,0,1,0,0,1
+5623,2,2,3,734,0,212
+5624,2,2,3,734,0,234
+5633,2,2,3,734,0,2175
+5634,1,0,1,0,0,2
+5635,1,0,1,0,0,1
+5636,1,0,1,0,0,1
+5644,2,2,3,734,0,2175
+5645,1,0,1,0,0,1
+5646,1,0,1,0,0,1
+5647,1,0,1,0,0,1
+5656,2,2,3,734,0,2220
+5657,1,0,1,0,0,1
+5658,1,0,1,0,0,2
+5659,1,0,1,0,0,2
+5667,2,2,3,734,0,2196
+5668,1,0,1,0,0,2
+5669,1,0,1,0,0,1
+5670,1,0,1,0,0,2
+5680,2,2,3,734,0,2226
+5681,1,0,1,0,0,1
+5682,1,0,1,0,0,1
+5683,1,0,1,0,0,1
+5684,1,0,1,0,0,1
+5685,2,2,3,734,0,216
+5686,2,2,3,734,0,237
+5695,2,2,3,734,0,2108
+5696,1,0,1,0,0,2
+5697,1,0,1,0,0,1
+5698,1,0,1,0,0,2
+5726,1,0,1,0,0,2
+5727,1,0,1,0,0,2
+5728,2,2,3,734,0,217
+5729,2,2,3,734,0,233
+5772,1,0,1,0,0,3
+5773,2,2,3,734,0,2126
+5774,2,2,3,734,0,2201
+5802,1,0,1,0,0,2
+5803,1,0,1,0,0,4
+5804,2,2,3,734,0,217
+5805,2,2,3,734,0,236
+5848,1,0,1,0,0,2
+5849,2,2,3,734,0,234
+5850,2,2,3,734,0,233
+5864,2,2,3,149,,2
+5871,2,2,3,149,,2
+5899,1,0,1,0,0,2
+5900,2,2,3,734,0,234
+5901,2,2,3,734,0,232
+5915,2,2,3,149,,3
+5922,2,2,3,149,,2
+5950,1,0,1,0,0,2
+5951,2,2,3,734,0,2068
+5952,2,2,3,734,0,2175
+5960,3,2,5,734,,30
+5961,2,2,3,734,0,211
+5970,3,2,4,734,,6
+5971,2,1,2,19,,2
+5972,2,2,3,734,0,231
+5973,2,2,3,734,0,231
+5983,4,2,7,734,0,621
+5984,3,2,5,25,0,220
+5985,2,2,3,734,0,238
+5986,2,2,3,734,0,240
+5995,3,2,5,149,0,89
+5996,2,2,3,734,0,240
+5997,2,2,3,734,0,238
+6006,3,2,4,734,,6
+6007,2,1,2,19,,2
+6008,2,2,3,734,0,236
+6009,2,2,3,734,0,232
+6019,4,2,7,734,0,575
+6020,3,2,5,25,0,217
+6021,2,2,3,734,0,237
+6022,2,2,3,734,0,234
+6031,3,2,5,149,0,85
+6032,2,2,3,734,0,236
+6033,2,2,3,734,0,232
+6043,4,2,6,734,0,561
+6044,3,2,4,20,0,193
+6045,2,2,3,734,0,238
+6046,2,2,3,734,0,233
+6056,4,2,6,734,0,542
+6057,3,2,4,20,0,176
+6058,2,2,3,734,0,237
+6059,2,2,3,734,0,234
+6068,3,2,5,149,0,99
+6069,2,2,3,734,0,240
+6070,2,2,3,734,0,238
+6079,4,2,7,734,0,2734
+6080,2,2,3,734,0,2083
+6090,4,2,6,734,0,548
+6091,3,2,4,20,0,154
+6092,2,2,3,734,0,235
+6093,2,2,3,734,0,230
+6102,3,2,5,149,0,104
+6103,2,2,3,734,0,234
+6104,2,2,3,734,0,230
+6113,3,2,5,734,0,2318
+6114,2,2,3,734,0,2143
+6124,4,2,7,734,0,401
+6125,3,2,5,11,0,108
+6126,2,2,3,734,0,233
+6127,2,2,3,734,0,229
+6136,3,2,5,149,0,76
+6137,2,2,3,734,0,231
+6138,2,2,3,734,0,233
+6147,4,2,7,734,0,2382
+6148,2,2,3,734,0,2144
+6157,4,2,7,734,0,2428
+6158,2,2,3,734,0,2229
+6167,4,2,7,734,0,2435
+6168,2,2,3,734,0,2230
+6177,4,2,7,734,0,2454
+6178,2,2,3,734,0,2241
+6187,4,2,7,734,0,2468
+6188,2,2,3,734,0,2245
+6197,4,2,7,734,0,2469
+6198,2,2,3,734,0,2249
+6206,4,2,6,734,0,2528
+6207,2,2,3,734,0,2209
+6215,4,2,6,734,0,2449
+6216,2,2,3,734,0,2261
+6224,4,2,6,734,0,2446
+6225,2,2,3,734,0,2257
+6233,4,2,6,734,0,2457
+6234,2,2,3,734,0,2265
+6242,4,2,6,734,0,2478
+6243,2,2,3,734,0,2237
+6251,4,2,6,734,0,2433
+6252,2,2,3,734,0,2265
+6260,4,3,7,734,0,252
+6261,2,2,3,734,0,231
+6270,2,2,3,734,0,263
+6271,1,0,1,1,0,3
+6272,2,2,3,734,0,232
+6273,2,2,3,734,0,232
+6282,4,2,7,734,0,834
+6283,3,2,5,20,0,465
+6284,2,2,3,734,0,235
+6285,2,2,3,734,0,231
+6294,4,2,7,734,0,801
+6295,3,2,5,20,0,468
+6296,2,2,3,734,0,234
+6297,2,2,3,734,0,234
+6306,3,2,5,734,0,544
+6307,2,2,3,20,0,163
+6308,2,2,3,734,0,232
+6309,2,2,3,734,0,231
+6318,3,2,5,734,0,535
+6319,2,2,3,20,0,166
+6320,2,2,3,734,0,237
+6321,2,2,3,734,0,233
+6330,4,2,7,734,0,842
+6331,3,2,5,20,0,510
+6332,2,2,3,734,0,237
+6333,2,2,3,734,0,232
+6342,4,2,7,734,0,808
+6343,3,2,5,20,0,465
+6344,2,2,3,734,0,235
+6345,2,2,3,734,0,233
+6354,5,2,9,734,0,1054
+6355,4,2,7,20,0,734
+6356,2,2,3,734,0,235
+6357,2,2,3,734,0,235
+6366,5,2,9,734,0,995
+6367,4,2,7,20,0,740
+6368,2,2,3,734,0,237
+6369,2,2,3,734,0,239
+6378,6,2,11,734,0,1231
+6379,5,2,9,20,0,879
+6380,2,2,3,734,0,234
+6381,2,2,3,734,0,231
+6390,6,2,11,734,0,1192
+6391,5,2,9,20,0,897
+6392,2,2,3,734,0,234
+6393,2,2,3,734,0,235
+6402,7,2,13,734,0,1454
+6403,6,2,11,20,0,1161
+6404,2,2,3,734,0,233
+6405,2,2,3,734,0,232
+6414,7,2,13,734,0,1403
+6415,6,2,11,20,0,1168
+6416,2,2,3,734,0,232
+6417,2,2,3,734,0,231
+6425,3,2,4,734,0,2045
+6426,2,2,3,734,0,2181
+6434,4,2,8,734,0,2637
+6435,2,2,3,734,0,2292
+6443,4,2,8,734,0,2701
+6444,2,2,3,734,0,2212
+6452,4,2,6,734,0,2424
+6453,2,2,3,734,0,2200
+6461,4,2,8,734,0,2620
+6462,2,2,3,734,0,2245
+6470,5,2,10,734,0,2949
+6471,2,2,3,734,0,2201
+6479,6,2,12,734,0,3084
+6480,2,2,3,734,0,2205
+6488,7,2,14,734,0,3267
+6489,2,2,3,734,0,2279
+6498,3,3,6,734,0,253
+6499,2,2,3,734,0,237
+6508,3,3,6,734,0,296
+6509,2,2,3,734,0,238
+6524,3,2,4,149,0,691
+6525,3,2,4,149,0,673
+6533,2,3,4,734,0,168
+6540,2,3,4,734,0,166
+6548,3,2,5,734,,39
+6549,2,2,3,734,0,236
+6559,4,3,12,734,0,781
+6560,3,2,5,25,0,151
+6561,3,2,5,25,0,192
+6562,2,2,3,734,0,254
+6563,2,2,3,734,0,236
+6573,4,3,12,734,0,750
+6574,3,2,5,25,0,150
+6575,3,2,5,25,0,193
+6576,2,2,3,734,0,240
+6577,2,2,3,734,0,233
+6586,3,2,5,734,0,2119
+6587,2,2,3,734,0,2254
+6596,3,2,5,734,0,2296
+6597,2,2,3,734,0,2250
+6612,3,2,4,149,0,673
+6613,3,2,4,149,0,706
+6621,2,3,4,734,0,172
+6628,2,3,4,734,0,166
+6636,3,2,5,734,,39
+6637,2,2,3,734,0,238
+6647,4,3,12,734,0,776
+6648,3,2,5,25,0,180
+6649,3,2,5,25,0,183
+6650,2,2,3,734,0,238
+6651,2,2,3,734,0,236
+6661,4,3,12,734,0,751
+6662,3,2,5,25,0,156
+6663,3,2,5,25,0,198
+6664,2,2,3,734,0,255
+6665,2,2,3,734,0,236
+6674,3,2,5,734,0,2131
+6675,2,2,3,734,0,2287
+6684,3,2,5,734,0,2309
+6685,2,2,3,734,0,2275
+6693,5,3,9,734,,2
+6694,2,2,3,734,,2
+6703,5,3,9,734,,2
+6704,3,3,6,734,,1
+6712,3,2,5,734,,34
+6713,2,2,3,734,0,233
+6721,5,2,10,149,,3
+6730,5,2,12,149,,3
+6731,2,2,3,734,0,240
+6732,2,2,3,734,0,232
+6740,4,2,8,149,,3
+6749,4,2,8,149,,2
+6750,2,2,3,734,0,240
+6751,2,2,3,734,0,233
+6761,4,2,7,734,0,591
+6762,3,2,5,25,0,189
+6763,2,2,3,734,0,231
+6764,2,2,3,734,0,234
+6773,3,2,5,734,0,249
+6774,2,2,3,734,0,231
+6783,3,2,5,149,0,84
+6784,2,2,3,734,0,231
+6785,2,2,3,734,0,229
+6795,4,2,7,734,0,576
+6796,3,2,5,25,0,193
+6797,2,2,3,734,0,231
+6798,2,2,3,734,0,229
+6808,4,2,7,734,0,590
+6809,3,2,5,25,0,189
+6810,2,2,3,734,0,231
+6811,2,2,3,734,0,232
+6820,3,2,5,149,0,87
+6821,2,2,3,734,0,241
+6822,2,2,3,734,0,233
+6831,4,2,7,734,0,2413
+6832,2,2,3,734,0,2234
+6841,4,2,7,734,0,2543
+6842,2,2,3,734,0,2278
+6851,4,2,7,734,0,2442
+6852,2,2,3,734,0,2255
+6861,4,2,7,734,0,2483
+6862,2,2,3,734,0,2228
+6871,4,2,7,734,0,2499
+6872,2,2,3,734,0,2277
+6881,4,2,7,734,0,2443
+6882,2,2,3,734,0,2266
+6891,3,2,5,734,0,226
+6892,2,2,3,734,0,240
+6901,3,2,5,734,0,261
+6902,2,2,3,734,0,241
+6911,3,2,5,734,0,249
+6912,2,2,3,734,0,239
+6920,3,2,5,149,,3
+6921,4,2,9,149,,2
+6929,3,2,5,149,,2
+6930,3,2,5,149,,2
+6944,1,0,1,0,0,3
+6959,1,0,1,0,0,3
+6960,2,2,3,734,0,233
+6961,2,2,3,734,0,232
+6969,1,0,1,0,0,2
+6997,1,0,1,0,0,2
+6998,1,0,1,0,0,2
+6999,1,0,1,0,0,2
+7000,1,0,1,0,0,2
+7001,1,0,1,0,0,1
+7002,1,0,1,0,0,2
+7003,2,2,3,734,0,237
+7004,2,2,3,734,0,237
+7086,1,0,1,0,0,2
+7087,1,0,1,0,0,2
+7088,2,2,3,734,0,237
+7089,2,2,3,734,0,233
+7111,2,2,3,149,,3
+7112,3,2,4,149,,2
+7120,5,2,9,734,0,2713
+7121,2,2,3,734,0,2184
+7130,3,4,7,1,,35
+7131,4,2,6,734,0,2447
+7132,2,2,3,734,0,2342
+7141,3,4,7,1,,37
+7142,5,2,7,734,0,2621
+7143,2,2,3,734,0,2274
+7171,1,0,1,0,0,1
+7172,1,0,1,0,0,2
+7173,2,2,3,734,0,213
+7174,2,2,3,734,0,237
+7217,1,0,1,0,0,2
+7218,1,0,1,0,0,2
+7219,2,2,3,734,0,242
+7220,2,2,3,734,0,253
+7244,3,2,4,734,,25
+7253,3,2,4,734,,25
+7261,2,1,2,734,0,50
+7262,2,2,3,734,0,239
+7270,4,2,5,734,,32
+7271,2,2,3,734,0,244
+7311,1,0,1,0,0,2
+7312,2,2,3,734,1,309
+7313,2,2,3,734,1,274
+7333,3,2,4,734,0,413
+7344,3,4,7,1,,47
+7345,4,2,6,149,0,303
+7346,3,2,4,149,0,125
+7358,3,2,4,734,0,260
+7359,2,1,2,2,0,10
+7360,1,0,1,0,0,2
+7361,4,2,6,149,0,173
+7362,4,2,5,149,0,288
+7363,2,2,3,734,0,242
+7364,2,2,3,734,0,238
+7404,1,0,1,0,0,2
+7405,1,0,1,0,0,2
+7406,2,2,3,734,1,350
+7407,2,2,3,734,1,275
+7438,2,2,3,734,,2
+7439,3,2,4,734,,2
+7450,3,4,7,1,,48
+7451,3,2,4,149,,3
+7452,5,2,6,149,,2
+7464,3,2,4,734,0,263
+7465,2,1,2,3,0,12
+7466,1,0,1,0,0,2
+7467,4,2,6,149,0,180
+7468,1,0,1,0,0,6
+7469,4,2,6,149,0,156
+7470,4,2,5,149,0,307
+7471,2,2,3,734,0,254
+7472,2,2,3,734,0,247
+7485,3,2,4,734,0,269
+7486,2,1,2,1,0,10
+7487,3,4,7,1,,48
+7488,4,2,6,149,0,183
+7489,1,0,1,0,0,2
+7490,2,2,3,149,,3
+7491,4,2,5,149,0,302
+7492,3,4,7,1,,48
+7493,3,4,7,1,,47
+7494,2,2,3,734,0,249
+7495,2,2,3,734,0,245
+7507,4,2,6,734,,81
+7508,2,2,3,734,0,2104
+7536,1,0,1,0,0,2
+7537,1,0,1,0,0,1
+7538,2,2,3,734,0,283
+7539,2,2,3,734,0,252
+7562,3,2,4,734,0,424
+7563,3,2,4,149,,125
+7572,3,4,7,1,,49
+7573,1,0,1,0,0,3
+7574,2,2,3,149,,21
+7575,2,2,3,149,0,714
+7576,3,2,4,149,,588
+7577,3,2,4,734,,49
+7578,2,1,2,1,,45
+7579,3,2,4,149,,619
+7580,3,2,4,149,,626
+7581,3,2,4,149,,615
+7582,3,2,4,149,,2
+7590,3,4,7,1,,48
+7591,1,0,1,0,0,2
+7592,1,0,1,0,0,2
+7593,2,2,3,149,,2
+7594,2,2,3,149,,2
+7595,2,2,3,149,0,695
+7596,2,2,3,149,0,691
+7597,2,2,3,149,0,695
+7598,2,2,3,149,0,692
+7607,4,2,6,734,,82
+7608,2,2,3,734,0,2145
+7622,1,0,1,0,0,2
+7637,1,0,1,0,0,2
+7638,2,2,3,734,0,214
+7639,2,2,3,734,0,228
+7647,1,0,1,0,0,2
+7675,1,0,1,0,0,2
+7676,1,0,1,0,0,2
+7677,2,2,3,734,0,230
+7678,2,2,3,734,0,230
+7721,1,0,1,0,0,2
+7722,1,0,1,0,0,2
+7723,2,2,3,734,0,232
+7724,2,2,3,734,0,237
+7767,1,0,1,0,0,3
+7768,1,0,1,0,0,2
+7769,2,2,3,734,0,231
+7770,2,2,3,734,0,231
+7813,1,0,1,0,0,2
+7814,1,0,1,0,0,2
+7815,1,0,1,0,0,2
+7816,2,2,3,734,0,229
+7817,2,2,3,734,0,233
+7869,1,0,1,0,0,2
+7870,2,2,3,734,0,2088
+7871,2,2,3,734,0,2244
+7880,2,2,3,734,0,2242
+7881,1,0,1,0,0,2
+7882,1,0,1,0,0,1
+7883,1,0,1,0,0,1
+7884,2,2,3,734,0,2264
+7885,1,0,1,0,0,2
+7886,1,0,1,0,0,2
+7887,1,0,1,0,0,2
+7897,2,2,3,734,0,2224
+7898,1,0,1,0,0,2
+7899,1,0,1,0,0,2
+7900,1,0,1,0,0,1
+7901,2,2,3,734,0,2254
+7902,1,0,1,0,0,2
+7903,1,0,1,0,0,2
+7904,1,0,1,0,0,2
+7913,2,2,3,734,0,2188
+7914,1,0,1,0,0,2
+7915,1,0,1,0,0,2
+7916,1,0,1,0,0,1
+7917,2,2,3,734,0,2273
+7918,1,0,1,0,0,2
+7919,1,0,1,0,0,2
+7920,1,0,1,0,0,1
+7931,1,0,1,0,0,2
+7932,1,0,1,0,0,2
+7933,1,0,1,0,0,1
+7934,1,0,1,0,0,2
+7935,1,0,1,0,0,1
+7936,1,0,1,0,0,2
+7937,1,0,1,0,0,1
+7938,1,0,1,0,0,2
+7939,1,0,1,0,0,1
+7940,1,0,1,0,0,1
+7941,1,0,1,0,0,1
+7942,1,0,1,0,0,1
+7943,1,0,1,0,0,2
+7944,1,0,1,0,0,2
+7945,1,0,1,0,0,1
+7946,1,0,1,0,0,1
+7947,1,0,1,0,0,1
+7948,1,0,1,0,0,1
+7949,1,0,1,0,0,2
+7950,2,2,3,734,0,2224
+7951,1,0,1,0,0,2
+7952,1,0,1,0,0,2
+7953,1,0,1,0,0,1
+7954,1,0,1,0,0,1
+7955,1,0,1,0,0,2
+7956,1,0,1,0,0,2
+7957,1,0,1,0,0,1
+7958,1,0,1,0,0,2
+7959,1,0,1,0,0,1
+7960,1,0,1,0,0,2
+7961,1,0,1,0,0,1
+7962,1,0,1,0,0,1
+7963,2,2,3,734,0,2266
+7964,1,0,1,0,0,2
+7965,1,0,1,0,0,2
+7966,1,0,1,0,0,1
+7967,1,0,1,0,0,1
+7968,2,2,3,734,0,218
+7969,2,2,3,734,0,241
+7979,2,2,3,734,0,2161
+7980,1,0,1,0,0,1
+7981,1,0,1,0,0,1
+7982,1,0,1,0,0,3
+7983,2,2,3,734,0,2278
+7984,1,0,1,0,0,2
+7985,1,0,1,0,0,2
+7986,1,0,1,0,0,2
+7997,2,2,3,734,0,2279
+7998,1,0,1,0,0,2
+7999,1,0,1,0,0,1
+8000,1,0,1,0,0,2
+8001,2,2,3,734,0,2269
+8002,1,0,1,0,0,1
+8003,1,0,1,0,0,1
+8004,1,0,1,0,0,2
+8016,2,2,3,734,0,2314
+8017,1,0,1,0,0,2
+8018,1,0,1,0,0,2
+8019,1,0,1,0,0,1
+8020,2,2,3,734,0,2286
+8021,1,0,1,0,0,1
+8022,1,0,1,0,0,1
+8023,1,0,1,0,0,1
+8036,2,2,3,734,0,2247
+8037,1,0,1,0,0,2
+8038,1,0,1,0,0,2
+8039,1,0,1,0,0,2
+8040,2,2,3,734,0,2295
+8041,1,0,1,0,0,2
+8042,1,0,1,0,0,2
+8043,1,0,1,0,0,1
+8057,2,2,3,734,0,2269
+8058,1,0,1,0,0,2
+8059,1,0,1,0,0,1
+8060,1,0,1,0,0,2
+8061,2,2,3,734,0,2296
+8062,1,0,1,0,0,2
+8063,1,0,1,0,0,1
+8064,1,0,1,0,0,1
+8079,2,2,3,734,0,2271
+8080,1,0,1,0,0,1
+8081,1,0,1,0,0,1
+8082,1,0,1,0,0,1
+8083,2,2,3,734,0,2291
+8084,1,0,1,0,0,2
+8085,1,0,1,0,0,2
+8086,1,0,1,0,0,2
+8102,2,2,3,734,0,2327
+8103,1,0,1,0,0,2
+8104,1,0,1,0,0,2
+8105,1,0,1,0,0,2
+8106,2,2,3,734,0,2297
+8107,1,0,1,0,0,1
+8108,1,0,1,0,0,1
+8109,1,0,1,0,0,1
+8126,2,2,3,734,0,2298
+8127,1,0,1,0,0,1
+8128,1,0,1,0,0,1
+8129,1,0,1,0,0,1
+8130,2,2,3,734,0,2258
+8131,1,0,1,0,0,1
+8132,1,0,1,0,0,1
+8133,1,0,1,0,0,1
+8151,2,2,3,734,0,2301
+8152,1,0,1,0,0,1
+8153,1,0,1,0,0,1
+8154,1,0,1,0,0,1
+8155,2,2,3,734,0,2269
+8156,1,0,1,0,0,1
+8157,1,0,1,0,0,1
+8158,1,0,1,0,0,1
+8177,2,2,3,734,0,2308
+8178,1,0,1,0,0,2
+8179,1,0,1,0,0,2
+8180,1,0,1,0,0,2
+8181,2,2,3,734,0,2266
+8182,1,0,1,0,0,2
+8183,1,0,1,0,0,2
+8184,1,0,1,0,0,2
+8204,2,2,3,734,0,2284
+8205,1,0,1,0,0,1
+8206,1,0,1,0,0,1
+8207,1,0,1,0,0,1
+8208,2,2,3,734,0,2284
+8209,1,0,1,0,0,2
+8210,1,0,1,0,0,2
+8211,1,0,1,0,0,2
+8232,2,2,3,734,0,2282
+8233,1,0,1,0,0,2
+8234,1,0,1,0,0,2
+8235,1,0,1,0,0,2
+8236,2,2,3,734,0,2244
+8237,1,0,1,0,0,1
+8238,1,0,1,0,0,1
+8239,1,0,1,0,0,1
+8261,2,2,3,734,0,2250
+8262,1,0,1,0,0,2
+8263,1,0,1,0,0,2
+8264,1,0,1,0,0,1
+8265,2,2,3,734,0,2234
+8266,1,0,1,0,0,1
+8267,1,0,1,0,0,1
+8268,1,0,1,0,0,2
+8291,2,2,3,734,0,2353
+8292,1,0,1,0,0,2
+8293,1,0,1,0,0,1
+8294,1,0,1,0,0,2
+8295,2,2,3,734,0,2215
+8296,1,0,1,0,0,2
+8297,1,0,1,0,0,1
+8298,1,0,1,0,0,2
+8322,2,2,3,734,0,2279
+8323,1,0,1,0,0,1
+8324,1,0,1,0,0,1
+8325,1,0,1,0,0,1
+8326,2,2,3,734,0,2226
+8327,1,0,1,0,0,1
+8328,1,0,1,0,0,1
+8329,1,0,1,0,0,2
+8354,2,2,3,734,0,2308
+8355,1,0,1,0,0,2
+8356,1,0,1,0,0,2
+8357,1,0,1,0,0,2
+8358,2,2,3,734,0,2192
+8359,1,0,1,0,0,1
+8360,1,0,1,0,0,1
+8361,1,0,1,0,0,1
+8387,2,2,3,734,0,2303
+8388,1,0,1,0,0,2
+8389,1,0,1,0,0,1
+8390,1,0,1,0,0,2
+8391,2,2,3,734,0,2246
+8392,1,0,1,0,0,2
+8393,1,0,1,0,0,1
+8394,1,0,1,0,0,2
+8421,2,2,3,734,0,2274
+8422,1,0,1,0,0,2
+8423,1,0,1,0,0,1
+8424,1,0,1,0,0,1
+8425,2,2,3,734,0,2217
+8426,1,0,1,0,0,1
+8427,1,0,1,0,0,1
+8428,1,0,1,0,0,1
+8456,2,2,3,734,0,2259
+8457,1,0,1,0,0,1
+8458,1,0,1,0,0,1
+8459,1,0,1,0,0,1
+8460,2,2,3,734,0,2217
+8461,1,0,1,0,0,2
+8462,1,0,1,0,0,2
+8463,1,0,1,0,0,2
+8492,2,2,3,734,0,2245
+8493,1,0,1,0,0,2
+8494,1,0,1,0,0,1
+8495,1,0,1,0,0,1
+8496,2,2,3,734,0,2291
+8497,1,0,1,0,0,2
+8498,1,0,1,0,0,2
+8499,1,0,1,0,0,1
+8529,2,2,3,734,0,2270
+8530,1,0,1,0,0,2
+8531,1,0,1,0,0,1
+8532,1,0,1,0,0,1
+8533,2,2,3,734,0,2275
+8534,1,0,1,0,0,2
+8535,1,0,1,0,0,2
+8536,1,0,1,0,0,1
+8567,2,2,3,734,0,2287
+8568,1,0,1,0,0,2
+8569,1,0,1,0,0,2
+8570,1,0,1,0,0,2
+8571,2,2,3,734,0,2270
+8572,1,0,1,0,0,1
+8573,1,0,1,0,0,1
+8574,1,0,1,0,0,1
+8606,2,2,3,734,0,2305
+8607,1,0,1,0,0,2
+8608,1,0,1,0,0,1
+8609,1,0,1,0,0,1
+8610,2,2,3,734,0,2264
+8611,1,0,1,0,0,2
+8612,1,0,1,0,0,2
+8613,1,0,1,0,0,1
+8646,2,2,3,734,0,2282
+8647,1,0,1,0,0,2
+8648,1,0,1,0,0,2
+8649,1,0,1,0,0,1
+8650,2,2,3,734,0,2258
+8651,1,0,1,0,0,2
+8652,1,0,1,0,0,2
+8653,1,0,1,0,0,2
+8687,2,2,3,734,0,2302
+8688,1,0,1,0,0,2
+8689,1,0,1,0,0,2
+8690,1,0,1,0,0,2
+8691,2,2,3,734,0,2262
+8692,1,0,1,0,0,2
+8693,1,0,1,0,0,1
+8694,1,0,1,0,0,2
+8729,2,2,3,734,0,2294
+8730,1,0,1,0,0,1
+8731,1,0,1,0,0,1
+8732,1,0,1,0,0,1
+8733,2,2,3,734,0,2279
+8734,1,0,1,0,0,1
+8735,1,0,1,0,0,1
+8736,1,0,1,0,0,1
+8772,2,2,3,734,0,2283
+8773,1,0,1,0,0,2
+8774,1,0,1,0,0,1
+8775,1,0,1,0,0,2
+8776,2,2,3,734,0,2293
+8777,1,0,1,0,0,2
+8778,1,0,1,0,0,2
+8779,1,0,1,0,0,1
+8816,2,2,3,734,0,2280
+8817,1,0,1,0,0,1
+8818,1,0,1,0,0,1
+8819,1,0,1,0,0,1
+8820,2,2,3,734,0,2283
+8821,1,0,1,0,0,2
+8822,1,0,1,0,0,2
+8823,1,0,1,0,0,2
+8861,2,2,3,734,0,2324
+8862,1,0,1,0,0,2
+8863,1,0,1,0,0,1
+8864,1,0,1,0,0,2
+8865,2,2,3,734,0,2286
+8866,1,0,1,0,0,2
+8867,1,0,1,0,0,2
+8868,1,0,1,0,0,2
+8876,3,2,4,734,0,2310
+8877,2,2,3,734,0,2273
+8885,3,2,4,734,0,2302
+8886,2,2,3,734,0,2315
+8914,1,0,1,0,0,2
+8915,2,2,3,734,0,216
+8916,2,2,3,734,0,237
+8951,1,0,1,0,0,2
+8952,2,2,3,734,0,238
+8953,2,2,3,734,0,236
+8968,2,2,3,734,0,2200
+8969,1,0,1,0,0,1
+8970,1,0,1,0,0,1
+8971,1,0,1,0,0,1
+8980,2,2,3,734,0,2263
+8981,1,0,1,0,0,2
+8982,1,0,1,0,0,1
+8983,1,0,1,0,0,4
+8991,2,2,3,734,0,2297
+8992,1,0,1,0,0,2
+8993,1,0,1,0,0,2
+8994,1,0,1,0,0,1
+9004,2,2,3,734,0,2242
+9005,1,0,1,0,0,2
+9006,1,0,1,0,0,1
+9007,1,0,1,0,0,1
+9008,1,0,1,0,0,1
+9009,2,2,3,734,0,207
+9010,2,2,3,734,0,241
+9019,2,2,3,734,0,2210
+9020,1,0,1,0,0,2
+9021,1,0,1,0,0,2
+9022,1,0,1,0,0,1
+9036,1,0,1,0,0,2
+9051,1,0,1,0,0,2
+9052,2,2,3,734,0,211
+9053,2,2,3,734,0,233
+9061,1,0,1,0,0,2
+9089,1,0,1,0,0,2
+9090,1,0,1,0,0,2
+9091,2,2,3,734,0,236
+9092,2,2,3,734,0,234
+9135,1,0,1,0,0,3
+9136,1,0,1,0,0,2
+9137,1,0,1,0,0,2
+9138,1,0,1,0,0,2
+9139,1,0,1,0,0,1
+9140,1,0,1,0,0,5
+9141,1,0,1,0,0,2
+9142,1,0,1,0,0,2
+9143,2,2,3,734,0,234
+9144,2,2,3,734,0,233
+9242,1,0,1,0,0,2
+9257,1,0,1,0,0,6
+9258,2,2,3,734,0,233
+9259,2,2,3,734,0,229
+9267,1,0,1,0,0,2
+9281,1,0,1,0,0,2
+9296,1,0,1,0,0,2
+9297,2,2,3,734,0,235
+9298,2,2,3,734,0,231
+9306,1,0,1,0,0,3
+9334,1,0,1,0,0,2
+9335,1,0,1,0,0,2
+9336,1,0,1,0,0,2
+9337,1,0,1,0,0,2
+9338,1,0,1,0,0,2
+9339,1,0,1,0,0,2
+9340,1,0,1,0,0,5
+9341,1,0,1,0,0,2
+9342,2,2,3,734,0,239
+9343,2,2,3,734,0,232
+9441,1,0,1,0,0,2
+9456,1,0,1,0,0,3
+9457,2,2,3,734,0,239
+9458,2,2,3,734,0,231
+9466,1,0,1,0,0,7
+9480,1,0,1,0,0,2
+9495,1,0,1,0,0,2
+9496,2,2,3,734,0,236
+9497,2,2,3,734,0,229
+9505,1,0,1,0,0,2
+9513,2,2,3,734,0,2119
+9514,1,0,1,0,0,1
+9515,1,0,1,0,0,1
+9516,1,0,1,0,0,1
+9525,2,2,3,734,0,2239
+9526,1,0,1,0,0,1
+9527,1,0,1,0,0,1
+9528,1,0,1,0,0,1
+9536,2,2,3,734,0,2231
+9537,1,0,1,0,0,2
+9538,1,0,1,0,0,1
+9539,1,0,1,0,0,2
+9549,1,0,1,0,0,1
+9550,1,0,1,0,0,1
+9551,1,0,1,0,0,1
+9552,1,0,1,0,0,1
+9553,1,0,1,0,0,2
+9554,1,0,1,0,0,2
+9555,1,0,1,0,0,1
+9556,1,0,1,0,0,1
+9557,1,0,1,0,0,1
+9558,2,2,3,734,0,2308
+9559,1,0,1,0,0,2
+9560,1,0,1,0,0,1
+9561,1,0,1,0,0,1
+9562,1,0,1,0,0,2
+9563,1,0,1,0,0,2
+9564,1,0,1,0,0,1
+9565,2,2,3,734,0,247
+9566,2,2,3,734,0,246
+9575,2,2,3,734,0,2194
+9576,1,0,1,0,0,1
+9577,1,0,1,0,0,1
+9578,1,0,1,0,0,1
+9588,2,2,3,734,0,2275
+9589,1,0,1,0,0,1
+9590,1,0,1,0,0,1
+9591,1,0,1,0,0,1
+9602,2,2,3,734,0,2292
+9603,1,0,1,0,0,2
+9604,1,0,1,0,0,2
+9605,1,0,1,0,0,2
+9617,2,2,3,734,0,2323
+9618,1,0,1,0,0,2
+9619,1,0,1,0,0,1
+9620,1,0,1,0,0,1
+9633,2,2,3,734,0,2294
+9634,1,0,1,0,0,1
+9635,1,0,1,0,0,1
+9636,1,0,1,0,0,1
+9650,2,2,3,734,0,2265
+9651,1,0,1,0,0,2
+9652,1,0,1,0,0,1
+9653,1,0,1,0,0,2
+9668,2,2,3,734,0,2334
+9669,1,0,1,0,0,1
+9670,1,0,1,0,0,1
+9671,1,0,1,0,0,2
+9687,2,2,3,734,0,2263
+9688,1,0,1,0,0,1
+9689,1,0,1,0,0,1
+9690,1,0,1,0,0,1
+9707,2,2,3,734,0,2293
+9708,1,0,1,0,0,1
+9709,1,0,1,0,0,1
+9710,1,0,1,0,0,1
+9728,2,2,3,734,0,2289
+9729,1,0,1,0,0,2
+9730,1,0,1,0,0,1
+9731,1,0,1,0,0,1
+9750,2,2,3,734,0,2304
+9751,1,0,1,0,0,1
+9752,1,0,1,0,0,1
+9753,1,0,1,0,0,1
+9773,2,2,3,734,0,2352
+9774,1,0,1,0,0,1
+9775,1,0,1,0,0,1
+9776,1,0,1,0,0,1
+9790,1,0,1,0,0,1
+9805,1,0,1,0,0,1
+9806,2,2,3,734,0,218
+9807,2,2,3,734,0,236
+9815,1,0,1,0,0,2
+9829,1,0,1,0,0,2
+9844,1,0,1,0,0,2
+9845,2,2,3,734,0,259
+9846,2,2,3,734,0,264
+9854,1,0,1,0,0,2
+9868,1,0,1,0,0,2
+9883,1,0,1,0,0,2
+9884,2,2,3,734,0,275
+9885,2,2,3,734,0,280
+9893,1,0,1,0,0,2
+9907,1,0,1,0,0,2
+9922,1,0,1,0,0,2
+9923,2,2,3,734,0,280
+9924,2,2,3,734,0,279
+9932,1,0,1,0,0,2
+9960,1,0,1,0,0,2
+9961,2,2,3,734,0,2100
+9962,2,2,3,734,0,2268
+9990,1,0,1,0,0,2
+9991,2,2,3,734,0,2253
+9992,2,2,3,734,0,2255
+10020,1,0,1,0,0,1
+10021,2,2,3,734,0,2277
+10022,2,2,3,734,0,2294
+10050,1,0,1,0,0,1
+10051,2,2,3,734,0,2281
+10052,2,2,3,734,0,2296
+10080,1,0,1,0,0,1
+10081,2,2,3,734,0,2276
+10082,2,2,3,734,0,2309
+10110,1,0,1,0,0,2
+10111,2,2,3,734,0,2257
+10112,2,2,3,734,0,2279
+10140,1,0,1,0,0,1
+10141,2,2,3,734,0,2316
+10142,2,2,3,734,0,2274
+10170,1,0,1,0,0,2
+10171,2,2,3,734,0,2294
+10172,2,2,3,734,0,2261
+10200,1,0,1,0,0,2
+10201,1,0,1,0,0,1
+10202,1,0,1,0,0,1
+10203,1,0,1,0,0,1
+10204,2,2,3,734,0,224
+10205,2,2,3,734,0,251
+10267,1,0,1,0,0,2
+10268,2,2,3,734,0,2143
+10269,2,2,3,734,0,2300
+10297,1,0,1,0,0,1
+10298,2,2,3,734,0,2231
+10299,2,2,3,734,0,2265
+10307,2,2,3,734,0,2255
+10308,1,0,1,0,0,2
+10309,1,0,1,0,0,2
+10310,1,0,1,0,0,2
+10319,2,2,3,734,0,2274
+10320,1,0,1,0,0,2
+10321,1,0,1,0,0,1
+10322,1,0,1,0,0,2
+10330,2,2,3,734,0,2259
+10331,1,0,1,0,0,2
+10332,1,0,1,0,0,1
+10333,1,0,1,0,0,2
+10343,2,2,3,734,0,2263
+10344,1,0,1,0,0,1
+10345,1,0,1,0,0,1
+10346,1,0,1,0,0,1
+10347,1,0,1,0,0,1
+10348,1,0,1,0,0,1
+10349,2,2,3,734,0,209
+10350,2,2,3,734,0,237
+10359,2,2,3,734,0,2146
+10360,1,0,1,0,0,2
+10361,1,0,1,0,0,1
+10362,1,0,1,0,0,1
+10372,2,2,3,734,0,2257
+10373,1,0,1,0,0,2
+10374,1,0,1,0,0,2
+10375,1,0,1,0,0,1
+10384,2,2,3,734,0,2272
+10385,1,0,1,0,0,1
+10386,1,0,1,0,0,1
+10387,1,0,1,0,0,1
+10388,2,2,3,734,0,2258
+10389,1,0,1,0,0,1
+10390,1,0,1,0,0,1
+10391,1,0,1,0,0,1
+10401,2,2,3,734,0,2271
+10402,1,0,1,0,0,2
+10403,1,0,1,0,0,2
+10404,1,0,1,0,0,2
+10405,2,2,3,734,0,2237
+10406,1,0,1,0,0,2
+10407,1,0,1,0,0,1
+10408,1,0,1,0,0,1
+10417,2,2,3,734,0,2302
+10418,1,0,1,0,0,1
+10419,1,0,1,0,0,1
+10420,1,0,1,0,0,1
+10421,2,2,3,734,0,2241
+10422,1,0,1,0,0,1
+10423,1,0,1,0,0,1
+10424,1,0,1,0,0,1
+10435,2,2,3,734,0,2285
+10436,1,0,1,0,0,1
+10437,1,0,1,0,0,1
+10438,1,0,1,0,0,1
+10439,1,0,1,0,0,1
+10440,2,2,3,734,0,2234
+10441,1,0,1,0,0,2
+10442,1,0,1,0,0,1
+10443,1,0,1,0,0,2
+10444,1,0,1,0,0,2
+10445,2,2,3,734,0,212
+10446,2,2,3,734,0,236
+10456,2,2,3,734,0,2233
+10457,1,0,1,0,0,2
+10458,1,0,1,0,0,2
+10459,1,0,1,0,0,2
+10460,2,2,3,734,0,2216
+10461,1,0,1,0,0,2
+10462,1,0,1,0,0,2
+10463,1,0,1,0,0,2
+10474,2,2,3,734,0,2303
+10475,1,0,1,0,0,2
+10476,1,0,1,0,0,1
+10477,1,0,1,0,0,2
+10478,2,2,3,734,0,2222
+10479,1,0,1,0,0,1
+10480,1,0,1,0,0,1
+10481,1,0,1,0,0,2
+10509,1,0,1,0,0,1
+10510,1,0,1,0,0,1
+10511,1,0,1,0,0,1
+10512,1,0,1,0,0,1
+10513,2,2,3,734,0,216
+10514,2,2,3,734,0,234
+10555,1,0,1,0,0,2
+10556,3,1,3,1,0,16
+10584,1,0,1,0,0,2
+10585,2,2,3,734,0,249
+10586,2,2,3,734,0,239
+10621,1,0,1,0,0,2
+10622,1,0,1,0,0,2
+10623,1,0,1,0,0,2
+10624,2,2,3,734,0,241
+10625,2,2,3,734,0,242
+10653,3,2,4,149,,7
+10663,3,2,5,734,0,2198
+10664,2,2,3,1,0,48
+10665,1,0,1,0,0,1
+10666,1,0,1,1,0,3
+10667,2,2,3,1,0,8
+10668,2,2,3,734,0,2285
+10669,2,2,3,734,0,2244
+10682,2,2,3,734,0,2278
+10683,2,2,3,734,0,2258
+10684,2,2,3,734,0,2284
+10685,1,0,1,1,0,2
+10686,2,2,3,734,0,2313
+10687,1,0,1,0,0,2
+10688,2,2,3,21,0,146
+10689,1,0,1,0,0,1
+10690,2,2,3,734,0,2259
+10691,1,0,1,0,0,2
+10692,1,0,1,0,0,2
+10693,2,2,3,21,0,145
+10694,1,0,1,0,0,1
+10695,2,2,3,21,0,178
+10696,1,0,1,0,0,2
+10697,2,2,3,149,0,710
+10698,1,0,1,1,0,3
+10699,2,2,3,1,0,11
+10726,1,0,1,0,0,2
+10727,2,2,3,734,0,2106
+10728,2,2,3,734,0,2269
+10736,1,0,1,1,0,2
+10737,4,2,5,12,,6
+10765,1,0,1,0,0,2
+10766,1,0,1,0,0,1
+10767,1,0,1,0,0,1
+10768,2,2,3,734,0,228
+10769,2,2,3,734,0,244
+10800,2,2,3,149,,2
+10801,3,2,4,1,,10
+10802,3,2,4,1,,3
+10809,3,1,3,1,,8
+10810,3,1,3,1,,2
+10817,3,4,7,1,,70
+10818,3,1,3,1,,10
+10819,1,0,1,0,0,2
+10820,3,2,5,1,,3
+10821,2,2,3,149,,2
+10822,3,1,3,1,,8
+10830,3,4,7,1,,58
+10831,3,1,3,1,,9
+10832,3,2,4,734,,22
+10833,2,1,2,20,,2
+10834,2,2,3,149,,2
+10835,3,1,3,1,,9
+10836,1,0,1,0,0,2
+10837,3,1,3,1,,3
+10865,1,0,1,0,0,3
+10866,1,0,1,0,0,2
+10867,1,0,1,0,0,1
+10868,2,2,3,734,0,261
+10869,2,2,3,734,0,268
+10921,1,0,1,0,0,2
+10922,1,0,1,0,0,2
+10923,1,0,1,0,0,2
+10924,1,0,1,0,0,2
+10925,2,2,3,734,0,276
+10926,2,2,3,734,0,264
+10967,3,2,4,734,0,269
+10968,2,2,3,734,0,265
+10975,3,2,4,734,0,272
+10976,2,2,3,734,0,260
+10983,3,2,4,734,0,265
+10984,2,2,3,734,0,259
+11012,1,0,1,0,0,6
+11013,1,0,1,0,0,2
+11014,1,0,1,0,0,2
+11015,1,0,1,0,0,2
+11016,1,0,1,0,0,2
+11017,1,0,1,0,0,2
+11018,1,0,1,0,0,2
+11019,2,2,3,734,0,256
+11020,2,2,3,734,0,255
+11118,1,0,1,0,0,2
+11119,2,2,3,734,0,2093
+11120,2,2,3,734,0,2253
+11148,1,0,1,0,0,2
+11149,1,0,1,0,0,2
+11150,1,0,1,0,0,2
+11151,1,0,1,0,0,1
+11152,1,0,1,0,0,1
+11153,1,0,1,0,0,1
+11154,2,2,3,734,0,247
+11155,2,2,3,734,0,274
+11240,1,0,1,0,0,2
+11241,1,0,1,0,0,2
+11242,2,2,3,734,0,248
+11243,2,2,3,734,0,240
+11285,1,0,1,0,0,2
+11286,1,0,1,0,0,1
+11287,1,0,1,0,0,2
+11288,1,0,1,0,0,2
+11289,1,0,1,0,0,2
+11290,1,0,1,0,0,5
+11291,1,0,1,0,0,1
+11292,2,2,3,734,0,260
+11293,2,2,3,734,0,252
+11391,1,0,1,0,0,3
+11392,1,0,1,0,0,2
+11393,2,2,3,734,0,263
+11394,2,2,3,734,0,242
+11435,1,0,1,0,0,2
+11436,1,0,1,0,0,2
+11437,2,2,3,734,0,239
+11438,2,2,3,734,0,237
+11481,1,0,1,0,0,2
+11482,1,0,1,0,0,2
+11483,1,0,1,0,0,2
+11484,1,0,1,0,0,2
+11485,1,0,1,0,0,2
+11486,1,0,1,0,0,1
+11487,1,0,1,0,0,7
+11488,1,0,1,0,0,2
+11489,2,2,3,734,0,243
+11490,2,2,3,734,0,241
+11582,3,2,4,734,0,253
+11590,2,1,2,734,,43
+11591,4,3,8,734,,141
+11592,2,2,3,734,,234
+11599,3,2,4,734,,7
+11600,3,2,4,734,,6
+11601,3,2,4,734,,258
+11611,3,2,4,734,,7
+11612,3,2,4,734,,7
+11613,3,2,4,734,,236
+11623,1,0,1,0,0,3
+11624,2,2,3,734,0,2088
+11625,2,2,3,734,0,2250
+11626,1,0,1,0,0,2
+11627,2,2,3,734,0,2231
+11628,2,2,3,734,0,2227
+11629,1,0,1,0,0,2
+11630,2,2,3,734,0,2249
+11631,2,2,3,734,0,2234
+11632,2,2,3,734,0,2265
+11633,1,0,1,0,0,2
+11634,1,0,1,0,0,1
+11635,2,1,2,20,0,187
+11636,1,0,1,0,0,2
+11637,2,2,3,734,0,2220
+11638,2,2,3,734,0,2251
+11639,2,2,3,734,0,2247
+11640,2,2,3,734,0,2198
+11648,3,2,5,149,,7
+11649,3,2,5,149,,9
+11650,3,2,5,149,,58
+11664,1,0,1,0,0,2
+11679,1,0,1,0,0,2
+11680,2,2,3,734,0,245
+11681,2,2,3,734,0,237
+11689,1,0,1,0,0,2
+11717,1,0,1,0,0,2
+11718,1,0,1,0,0,2
+11719,1,0,1,0,0,2
+11720,2,2,3,734,0,237
+11721,2,2,3,734,0,238
+11773,1,0,1,0,0,3
+11774,2,2,3,734,0,2156
+11775,2,2,3,734,0,2272
+11803,1,0,1,0,0,2
+11804,1,0,1,0,0,1
+11805,1,0,1,0,0,1
+11806,1,0,1,0,0,1
+11807,1,0,1,0,0,1
+11808,1,0,1,0,0,2
+11809,1,0,1,0,0,1
+11810,1,0,1,0,0,1
+11811,2,2,3,734,0,228
+11812,2,2,3,734,0,244
+11903,3,2,4,149,0,719
+11904,3,2,4,149,0,109
+11905,3,2,4,149,0,96
+11939,1,0,1,0,0,2
+11940,1,0,1,0,0,2
+11941,2,2,3,734,0,248
+11942,2,2,3,734,0,251
+11965,3,2,4,734,,279
+11966,2,2,3,734,0,257
+11994,1,0,1,0,0,3
+11995,1,0,1,0,0,2
+11996,2,2,3,734,0,257
+11997,2,2,3,734,0,255
+12040,1,0,1,0,0,3
+12041,1,0,1,0,0,2
+12042,1,0,1,0,0,2
+12043,1,0,1,0,0,2
+12044,1,0,1,0,0,2
+12045,1,0,1,0,0,1
+12046,1,0,1,0,0,2
+12047,1,0,1,0,0,2
+12048,1,0,1,0,0,2
+12049,1,0,1,0,0,5
+12050,1,0,1,0,0,1
+12051,1,0,1,0,0,1
+12052,2,2,3,734,0,258
+12053,2,2,3,734,0,273
+12210,3,3,5,734,0,160
+12218,2,3,4,734,0,141
+12226,3,3,5,734,0,155
+12234,2,1,2,734,,51
+12235,4,3,8,734,,163
+12236,2,2,3,734,,261
+12264,1,0,1,0,0,3
+12265,1,0,1,0,0,2
+12266,2,2,3,734,0,267
+12267,2,2,3,734,0,264
+12310,1,0,1,0,0,2
+12311,1,0,1,0,0,2
+12312,1,0,1,0,0,1
+12313,1,0,1,0,0,2
+12314,1,0,1,0,0,1
+12315,1,0,1,0,0,2
+12316,1,0,1,0,0,5
+12317,1,0,1,0,0,2
+12318,1,0,1,0,0,2
+12319,1,0,1,0,0,2
+12320,2,2,3,734,0,269
+12321,2,2,3,734,0,277
+12443,2,3,4,734,0,140
+12451,2,3,4,734,0,140
+12459,2,3,4,734,0,148
+12467,2,1,2,734,,46
+12468,4,3,8,734,,161
+12469,2,2,3,734,,256
+12476,2,4,5,734,,143
+12484,2,4,5,734,,132
+12493,2,4,5,734,0,118
+12501,2,4,5,734,,129
+12510,2,4,5,734,,140
+12517,3,2,4,734,0,264
+12518,2,1,2,1,0,6
+12519,5,7,12,3,,69
+12520,7,9,20,3,,98
+12521,4,2,5,1,0,21
+12534,3,2,4,734,0,280
+12535,2,1,2,1,0,7
+12536,3,2,4,734,0,275
+12537,2,1,2,5,0,15
+12538,1,0,1,0,0,2
+12539,5,2,9,3,0,154
+12540,3,2,4,1,2,75
+12541,1,0,1,0,0,2
+12542,5,9,16,3,,76
+12543,4,2,5,149,0,121
+12544,5,3,10,149,0,187
+12545,2,2,3,1,0,10
+12553,3,2,4,734,0,257
+12554,2,1,2,1,0,6
+12555,1,0,1,0,0,2
+12556,5,9,16,3,,78
+12557,4,2,5,149,0,118
+12558,2,2,3,1,0,10
+12586,1,0,1,0,0,2
+12587,2,2,3,734,0,2141
+12588,2,2,3,734,0,2259
+12616,1,0,1,0,0,2
+12617,1,0,1,0,0,1
+12618,2,2,3,734,0,217
+12619,2,2,3,734,0,237
+12662,1,0,1,0,0,3
+12663,1,0,1,0,0,2
+12664,1,0,1,0,0,2
+12665,2,2,3,734,0,239
+12666,2,2,3,734,0,237
+12704,1,0,1,0,0,2
+12719,1,0,1,0,0,2
+12720,2,2,3,734,0,236
+12721,2,2,3,734,0,234
+12729,1,0,1,0,0,6
+12743,1,0,1,0,0,2
+12758,1,0,1,0,0,2
+12759,2,2,3,734,0,235
+12760,2,2,3,734,0,234
+12768,1,0,1,0,0,2
+12796,1,0,1,0,0,5
+12797,1,0,1,0,0,2
+12798,2,2,3,734,0,235
+12799,2,2,3,734,0,235
+12842,1,0,1,0,0,2
+12843,1,0,1,0,0,2
+12844,2,2,3,734,0,250
+12845,2,2,3,734,0,239
+12888,1,0,1,0,0,5
+12889,1,0,1,0,0,2
+12890,2,2,3,734,0,235
+12891,2,2,3,734,0,242
+12934,1,0,1,0,0,2
+12935,1,0,1,0,0,2
+12936,1,0,1,0,0,2
+12937,1,0,1,0,0,2
+12938,1,0,1,0,0,2
+12939,1,0,1,0,0,1
+12940,1,0,1,0,0,4
+12941,2,2,3,734,0,239
+12942,2,2,3,734,0,237
+13021,2,2,3,734,0,2125
+13022,1,0,1,0,0,2
+13023,1,0,1,0,0,2
+13024,1,0,1,0,0,2
+13025,2,2,3,734,0,2236
+13026,1,0,1,0,0,1
+13027,1,0,1,0,0,1
+13028,1,0,1,0,0,1
+13038,2,2,3,734,0,2289
+13039,1,0,1,0,0,2
+13040,1,0,1,0,0,2
+13041,1,0,1,0,0,2
+13042,2,2,3,734,0,2279
+13043,1,0,1,0,0,2
+13044,1,0,1,0,0,2
+13045,1,0,1,0,0,2
+13054,2,2,3,734,0,2286
+13055,1,0,1,0,0,2
+13056,1,0,1,0,0,2
+13057,1,0,1,0,0,1
+13058,2,2,3,734,0,2293
+13059,1,0,1,0,0,2
+13060,1,0,1,0,0,1
+13061,1,0,1,0,0,2
+13072,2,2,3,734,0,2308
+13073,1,0,1,0,0,2
+13074,1,0,1,0,0,1
+13075,1,0,1,0,0,1
+13076,1,0,1,0,0,1
+13077,2,2,3,734,0,2282
+13078,1,0,1,0,0,2
+13079,1,0,1,0,0,2
+13080,1,0,1,0,0,2
+13081,1,0,1,0,0,1
+13082,1,0,1,0,0,1
+13083,1,0,1,0,0,1
+13084,1,0,1,0,0,2
+13085,2,2,3,734,0,229
+13086,2,2,3,734,0,244
+13096,2,2,3,734,0,2214
+13097,1,0,1,0,0,2
+13098,1,0,1,0,0,1
+13099,1,0,1,0,0,1
+13100,2,2,3,734,0,2294
+13101,1,0,1,0,0,2
+13102,1,0,1,0,0,1
+13103,1,0,1,0,0,1
+13114,2,2,3,734,0,2307
+13115,1,0,1,0,0,2
+13116,1,0,1,0,0,2
+13117,1,0,1,0,0,2
+13118,2,2,3,734,0,2271
+13119,1,0,1,0,0,1
+13120,1,0,1,0,0,1
+13121,1,0,1,0,0,1
+13133,2,2,3,734,0,2302
+13134,1,0,1,0,0,1
+13135,1,0,1,0,0,1
+13136,1,0,1,0,0,1
+13137,2,2,3,734,0,2289
+13138,1,0,1,0,0,2
+13139,1,0,1,0,0,1
+13140,1,0,1,0,0,1
+13153,2,2,3,734,0,2271
+13154,1,0,1,0,0,1
+13155,1,0,1,0,0,1
+13156,1,0,1,0,0,1
+13157,2,2,3,734,0,2261
+13158,1,0,1,0,0,1
+13159,1,0,1,0,0,1
+13160,1,0,1,0,0,1
+13174,2,2,3,734,0,2281
+13175,1,0,1,0,0,2
+13176,1,0,1,0,0,1
+13177,1,0,1,0,0,2
+13178,2,2,3,734,0,2246
+13179,1,0,1,0,0,1
+13180,1,0,1,0,0,1
+13181,1,0,1,0,0,1
+13188,2,2,3,734,0,229
+13189,2,2,3,734,0,255
+13197,2,2,3,734,0,261
+13198,2,2,3,734,0,276
+13207,2,2,3,734,0,255
+13208,2,2,3,734,0,258
+13216,2,2,3,734,0,254
+13217,2,2,3,734,0,273
+13225,2,2,3,734,0,258
+13226,2,2,3,734,0,276
+13235,3,3,6,734,0,2513
+13236,2,2,3,734,0,2484
+13243,2,2,3,734,0,247
+13244,2,2,3,734,0,250
+13253,2,2,3,734,0,254
+13254,1,0,1,0,0,2
+13255,2,2,3,734,0,247
+13256,2,2,3,734,0,245
+13264,2,2,3,734,0,247
+13265,2,2,3,734,0,243
+13275,2,2,3,734,0,264
+13276,1,0,1,0,0,2
+13277,2,2,3,734,0,252
+13278,2,2,3,734,0,254
+13287,2,2,3,734,0,261
+13288,2,2,3,734,0,261
+13296,2,2,3,734,0,265
+13297,2,2,3,734,0,259
+13307,2,2,3,734,0,262
+13308,1,0,1,0,0,2
+13309,2,2,3,734,0,259
+13310,2,2,3,734,0,260
+13319,2,2,3,734,0,266
+13320,2,2,3,734,0,257
+13331,1,0,1,0,0,2
+13332,2,2,3,149,0,78
+13333,2,2,3,149,0,81
+13334,2,2,3,734,0,281
+13335,2,2,3,734,0,265
+13336,2,2,3,734,0,262
+13337,2,2,3,734,0,261
+13346,2,2,3,734,0,258
+13347,2,2,3,734,0,258
+13356,2,2,3,734,0,263
+13357,2,2,3,734,0,257
+13367,2,2,3,734,0,247
+13368,2,2,3,734,0,248
+13378,2,2,3,734,0,248
+13379,2,2,3,734,0,243
+13389,2,2,3,734,0,2116
+13390,2,2,3,734,0,2245
+13400,2,2,3,734,0,2235
+13401,2,2,3,734,0,2262
+13411,3,3,6,734,0,2257
+13412,2,2,3,734,0,2249
+13422,3,3,6,734,0,2271
+13423,2,2,3,734,0,2273
+13433,3,3,6,734,0,2268
+13434,2,2,3,734,0,2232
+13444,3,3,6,734,0,2290
+13445,2,2,3,734,0,2267
+13454,3,2,5,734,0,2251
+13455,2,2,3,734,0,2225
+13464,3,2,5,734,0,2266
+13465,2,2,3,734,0,2263
+13474,3,2,5,734,0,2263
+13475,2,2,3,734,0,2284
+13483,2,2,3,734,0,2234
+13484,2,2,3,734,0,2262
+13492,2,2,3,734,0,2244
+13493,2,2,3,734,0,2257
+13501,3,3,6,734,,58
+13502,2,2,3,734,0,2243
+13510,3,3,6,734,,48
+13511,2,2,3,734,0,2249
+13519,3,3,6,734,,50
+13520,2,2,3,734,0,2268
+13528,3,3,6,734,,58
+13529,2,2,3,734,0,2217
+13537,3,2,5,734,,37
+13538,2,2,3,734,0,2190
+13546,3,2,5,734,,36
+13547,2,2,3,734,0,2232
+13555,3,2,5,734,,37
+13556,2,2,3,734,0,2224
+13564,3,2,5,734,,76
+13565,2,2,3,734,0,2218
+13573,3,2,5,734,,77
+13574,2,2,3,734,0,2261
+13582,3,2,5,734,,74
+13583,2,2,3,734,0,2224
+13592,1,0,1,0,0,2
+13593,2,4,5,149,,65
+13594,5,2,9,734,0,2957
+13595,2,2,3,734,0,2133
+13603,1,0,1,0,0,2
+13604,3,2,5,734,0,2249
+13605,2,2,3,734,0,2152
+13606,3,2,5,734,0,2236
+13607,2,2,3,734,0,2159
+13614,2,2,3,734,0,2172
+13615,2,2,3,734,0,2175
+13624,1,0,1,0,0,2
+13625,2,4,5,149,,57
+13626,5,2,9,734,0,2770
+13627,2,2,3,734,0,2243
+13635,3,2,5,734,0,2402
+13636,2,2,3,734,0,2305
+13643,2,2,3,734,0,2256
+13644,2,2,3,734,0,2261
+13652,3,2,4,734,0,2293
+13653,2,2,3,734,0,2255
+13662,3,2,5,734,0,2352
+13663,2,2,3,734,0,2234
+13670,2,2,3,734,0,2288
+13671,2,2,3,734,0,2277
+13679,3,2,4,734,0,2288
+13680,2,2,3,734,0,2284
+13689,3,2,5,734,0,2366
+13690,2,2,3,734,0,2285
+13697,2,2,3,734,0,2244
+13698,2,2,3,734,0,2284
+13706,3,2,4,734,0,2315
+13707,2,2,3,734,0,2311
+13716,3,2,5,734,0,2382
+13717,2,2,3,734,0,2299
+13725,3,2,4,734,0,2938
+13726,2,2,3,734,0,2256
+13734,3,2,4,734,0,2284
+13735,2,2,3,734,0,2259
+13743,3,2,4,734,0,2340
+13744,2,2,3,734,0,2285
+13752,3,2,4,734,0,2257
+13753,2,2,3,734,0,2239
+13761,3,2,4,734,0,2302
+13762,2,2,3,734,0,2281
+13770,3,2,4,734,0,2311
+13771,2,2,3,734,0,2292
+13779,3,2,4,734,0,2282
+13780,2,2,3,734,0,2250
+13788,3,2,4,734,0,2316
+13789,2,2,3,734,0,2291
+13797,3,2,4,734,0,2286
+13798,2,2,3,734,0,2251
+13815,3,3,6,736,0,253
+13816,2,2,3,736,0,242
+13833,3,3,6,736,0,270
+13834,2,2,3,736,0,242
+13854,4,2,7,736,0,279
+13855,2,2,3,736,0,238
+13870,2,1,2,736,0,44
+13871,2,2,3,736,0,243
+13872,2,1,2,144,0,42
+13873,1,0,1,1,0,3
+13874,2,2,3,150,0,71
+13875,2,2,3,150,0,70
+13882,2,1,2,734,,46
+13883,2,1,2,734,,3
+13884,2,1,2,734,,2
+13885,2,2,3,149,,3
+13886,2,2,3,149,,2
+13887,3,2,4,149,,3
+13888,3,2,4,149,,2
+13889,3,2,4,149,,2
+13890,2,2,3,149,,2
+13918,1,0,1,0,0,3
+13919,1,0,1,0,0,2
+13920,1,0,1,0,0,2
+13921,2,2,3,734,0,246
+13922,2,2,3,734,0,248
+13974,1,0,1,0,0,2
+13975,1,0,1,0,0,2
+13976,2,2,3,734,0,243
+13977,2,2,3,734,0,249
+14001,3,1,3,144,0,66
+14002,2,1,2,1,,5
+14030,1,0,1,0,0,2
+14031,1,0,1,0,0,1
+14032,1,0,1,0,0,2
+14033,1,0,1,0,0,2
+14034,2,2,3,734,0,243
+14035,2,2,3,734,0,243
+14077,3,2,4,734,0,253
+14105,1,0,1,0,0,3
+14106,1,0,1,0,0,2
+14107,1,0,1,0,0,2
+14108,1,0,1,0,0,2
+14109,1,0,1,0,0,1
+14110,2,2,3,734,0,246
+14111,2,2,3,734,0,243
+14164,3,2,4,734,0,253
+14192,1,0,1,0,0,3
+14193,1,0,1,0,0,2
+14194,1,0,1,0,0,2
+14195,2,2,3,734,0,244
+14196,2,2,3,734,0,242
+14227,3,2,4,149,0,102
+14228,3,2,4,149,0,696
+14235,3,1,3,2,,9
+14243,5,2,6,734,0,2452
+14244,2,2,3,734,0,2250
+14272,1,0,1,0,0,2
+14273,1,0,1,0,0,1
+14274,2,2,3,734,0,228
+14275,2,2,3,734,0,253
+14300,6,2,7,734,0,296
+14301,2,2,3,734,0,248
+14313,6,2,7,734,0,291
+14314,2,2,3,734,0,244
+14322,5,2,6,734,0,278
+14323,2,2,3,734,0,252
+14331,5,2,6,734,0,287
+14332,2,2,3,734,0,252
+14339,3,5,7,734,,124
+14347,3,5,7,734,,122
+14356,3,5,7,734,0,110
+14364,2,5,6,734,,113
+14373,2,5,6,734,,113
+14383,2,5,6,734,0,101
+14391,3,5,7,734,,131
+14400,2,5,6,734,,114
+14410,2,5,6,734,,114
+14428,1,0,1,0,0,3
+14429,1,0,1,1,0,3
+14430,2,1,2,1,0,7
+14431,2,1,2,1,0,6
+14438,4,1,4,1,0,16
+14445,1,0,1,1,0,3
+14446,2,1,2,1,0,7
+14447,2,1,2,1,0,7
+14475,1,0,1,0,0,2
+14476,1,0,1,0,0,5
+14477,2,2,3,734,0,245
+14478,2,2,3,734,0,246
+14521,1,0,1,0,0,2
+14522,1,0,1,0,0,2
+14523,1,0,1,0,0,2
+14524,2,2,3,734,0,271
+14525,2,2,3,734,0,241
+14571,1,0,1,0,0,3
+14572,1,0,1,0,0,2
+14573,2,2,3,734,0,240
+14574,2,2,3,734,0,240
+14602,1,0,1,0,0,2
+14603,2,2,3,734,0,2491
+14604,2,2,3,734,0,2115
+14632,1,0,1,0,0,2
+14633,2,2,3,734,0,2310
+14634,2,2,3,734,0,2282
+14662,1,0,1,0,0,2
+14663,2,2,3,734,0,2276
+14664,2,2,3,734,0,2275
+14678,1,0,1,0,0,2
+14693,1,0,1,0,0,2
+14694,2,2,3,734,0,219
+14695,2,2,3,734,0,243
+14703,1,0,1,0,0,2
+14731,1,0,1,0,0,2
+14732,1,0,1,0,0,2
+14733,1,0,1,0,0,1
+14734,2,2,3,734,0,244
+14735,2,2,3,734,0,262
+14787,1,0,1,0,0,3
+14788,1,0,1,0,0,2
+14789,2,2,3,734,0,254
+14790,2,2,3,734,0,268
+14833,1,0,1,0,0,3
+14834,1,0,1,0,0,2
+14835,2,2,3,734,0,259
+14836,2,2,3,734,0,257
+14879,1,0,1,0,0,8
+14880,1,0,1,0,0,2
+14881,1,0,1,0,0,2
+14882,2,2,3,734,0,257
+14883,2,2,3,734,0,255
+14935,1,0,1,0,0,6
+14936,1,0,1,0,0,2
+14937,1,0,1,0,0,1
+14938,1,0,1,0,0,2
+14939,1,0,1,0,0,1
+14940,2,2,3,734,0,258
+14941,2,2,3,734,0,256
+15014,1,0,1,0,0,2
+15015,1,0,1,0,0,2
+15016,1,0,1,0,0,2
+15017,2,2,3,734,0,256
+15018,2,2,3,734,0,266
+15070,1,0,1,0,0,2
+15071,1,0,1,0,0,2
+15072,1,0,1,0,0,1
+15073,2,2,3,734,0,262
+15074,2,2,3,734,0,253
+15126,1,0,1,0,0,2
+15127,1,0,1,0,0,2
+15128,2,2,3,734,0,254
+15129,2,2,3,734,0,259
+15158,1,0,1,0,0,3
+15173,1,0,1,0,0,3
+15174,2,2,3,734,0,258
+15175,2,2,3,734,0,258
+15183,1,0,1,0,0,2
+15211,1,0,1,0,0,5
+15212,1,0,1,0,0,2
+15213,1,0,1,0,0,2
+15214,1,0,1,0,0,1
+15215,2,2,3,734,0,260
+15216,2,2,3,734,0,272
+15278,1,0,1,0,0,2
+15279,2,2,3,734,0,2467
+15280,2,2,3,734,0,2148
+15308,1,0,1,0,0,1
+15309,2,2,3,734,0,2265
+15310,2,2,3,734,0,2250
+15338,1,0,1,0,0,2
+15339,2,2,3,734,0,2239
+15340,2,2,3,734,0,2270
+15368,1,0,1,0,0,2
+15369,2,2,3,734,0,2252
+15370,2,2,3,734,0,2280
+15398,1,0,1,0,0,1
+15399,2,2,3,734,0,2267
+15400,2,2,3,734,0,2314
+15428,1,0,1,0,0,1
+15429,2,2,3,734,0,2290
+15430,2,2,3,734,0,2255
+15458,1,0,1,0,0,2
+15459,2,2,3,734,0,2258
+15460,2,2,3,734,0,2261
+15488,1,0,1,0,0,2
+15489,1,0,1,0,0,1
+15490,2,2,3,734,0,236
+15491,2,2,3,734,0,257
+15520,1,0,1,0,0,3
+15535,1,0,1,0,0,2
+15536,2,2,3,734,0,243
+15537,2,2,3,734,0,239
+15545,1,0,1,0,0,3
+15573,1,0,1,0,0,2
+15574,1,0,1,0,0,2
+15575,1,0,1,0,0,2
+15576,1,0,1,0,0,2
+15577,2,2,3,734,0,268
+15578,2,2,3,734,0,256
+15640,1,0,1,0,0,2
+15641,2,2,3,734,0,2149
+15642,2,2,3,734,0,2282
+15656,1,0,1,0,0,2
+15671,1,0,1,0,0,1
+15672,2,2,3,734,0,224
+15673,2,2,3,734,0,243
+15681,1,0,1,0,0,2
+15709,1,0,1,0,0,2
+15710,1,0,1,0,0,2
+15711,1,0,1,0,0,2
+15712,1,0,1,0,0,2
+15713,2,2,3,734,0,239
+15714,2,2,3,734,0,238
+15756,2,2,3,734,0,2108
+15757,1,0,1,0,0,1
+15758,1,0,1,0,0,2
+15759,1,0,1,0,0,1
+15768,2,2,3,734,0,2259
+15769,1,0,1,0,0,2
+15770,1,0,1,0,0,2
+15771,1,0,1,0,0,2
+15779,2,2,3,734,0,2255
+15780,1,0,1,0,0,1
+15781,1,0,1,0,0,1
+15782,1,0,1,0,0,1
+15792,1,0,1,0,0,2
+15793,1,0,1,0,0,2
+15794,1,0,1,0,0,1
+15795,1,0,1,0,0,1
+15796,2,2,3,734,0,2302
+15797,1,0,1,0,0,2
+15798,1,0,1,0,0,2
+15799,1,0,1,0,0,1
+15800,1,0,1,0,0,1
+15801,2,2,3,734,0,216
+15802,2,2,3,734,0,242
+15811,2,2,3,734,0,2175
+15812,1,0,1,0,0,2
+15813,1,0,1,0,0,1
+15814,1,0,1,0,0,2
+15824,2,2,3,734,0,2259
+15825,1,0,1,0,0,1
+15826,1,0,1,0,0,1
+15827,1,0,1,0,0,1
+15838,2,2,3,734,0,2243
+15839,1,0,1,0,0,2
+15840,1,0,1,0,0,1
+15841,1,0,1,0,0,1
+15853,2,2,3,734,0,2272
+15854,1,0,1,0,0,2
+15855,1,0,1,0,0,2
+15856,1,0,1,0,0,2
+15869,2,2,3,734,0,2214
+15870,1,0,1,0,0,1
+15871,1,0,1,0,0,1
+15872,1,0,1,0,0,2
+15880,2,2,3,734,0,2256
+15881,1,0,1,0,0,2
+15882,1,0,1,0,0,2
+15883,1,0,1,0,0,2
+15892,2,2,3,734,0,2295
+15893,1,0,1,0,0,2
+15894,1,0,1,0,0,2
+15895,1,0,1,0,0,2
+15903,2,2,3,734,0,2224
+15904,1,0,1,0,0,2
+15905,1,0,1,0,0,1
+15906,1,0,1,0,0,2
+15916,2,2,3,734,0,2296
+15917,1,0,1,0,0,2
+15918,1,0,1,0,0,1
+15919,1,0,1,0,0,1
+15920,1,0,1,0,0,2
+15921,1,0,1,0,0,1
+15922,2,2,3,734,0,223
+15923,2,2,3,734,0,246
+15932,2,2,3,734,0,2146
+15933,1,0,1,0,0,1
+15934,1,0,1,0,0,1
+15935,1,0,1,0,0,1
+15945,2,2,3,734,0,2280
+15946,1,0,1,0,0,1
+15947,1,0,1,0,0,1
+15948,1,0,1,0,0,1
+15957,2,2,3,734,0,2192
+15958,1,0,1,0,0,1
+15959,1,0,1,0,0,1
+15960,1,0,1,0,0,1
+15961,2,2,3,734,0,2273
+15962,1,0,1,0,0,2
+15963,1,0,1,0,0,2
+15964,1,0,1,0,0,1
+15974,2,2,3,734,0,2230
+15975,1,0,1,0,0,2
+15976,1,0,1,0,0,2
+15977,1,0,1,0,0,2
+15978,2,2,3,734,0,2259
+15979,1,0,1,0,0,2
+15980,1,0,1,0,0,2
+15981,1,0,1,0,0,2
+15990,2,2,3,734,0,2264
+15991,1,0,1,0,0,2
+15992,1,0,1,0,0,1
+15993,1,0,1,0,0,1
+15994,2,2,3,734,0,2279
+15995,1,0,1,0,0,2
+15996,1,0,1,0,0,2
+15997,1,0,1,0,0,2
+16008,2,2,3,734,0,2293
+16009,1,0,1,0,0,2
+16010,1,0,1,0,0,2
+16011,1,0,1,0,0,1
+16012,1,0,1,0,0,1
+16013,1,0,1,0,0,1
+16014,2,2,3,734,0,2254
+16015,1,0,1,0,0,2
+16016,1,0,1,0,0,2
+16017,1,0,1,0,0,2
+16018,1,0,1,0,0,1
+16019,2,2,3,734,0,221
+16020,2,2,3,734,0,242
+16030,2,2,3,734,0,2223
+16031,1,0,1,0,0,2
+16032,1,0,1,0,0,2
+16033,1,0,1,0,0,2
+16034,2,2,3,734,0,2320
+16035,1,0,1,0,0,1
+16036,1,0,1,0,0,1
+16037,1,0,1,0,0,1
+16048,2,2,3,734,0,2289
+16049,1,0,1,0,0,2
+16050,1,0,1,0,0,1
+16051,1,0,1,0,0,2
+16052,2,2,3,734,0,2300
+16053,1,0,1,0,0,1
+16054,1,0,1,0,0,1
+16055,1,0,1,0,0,1
+16067,2,2,3,734,0,2300
+16068,1,0,1,0,0,1
+16069,1,0,1,0,0,1
+16070,1,0,1,0,0,1
+16071,2,2,3,734,0,2299
+16072,1,0,1,0,0,2
+16073,1,0,1,0,0,2
+16074,1,0,1,0,0,2
+16082,2,2,3,734,0,2299
+16083,1,0,1,0,0,2
+16084,1,0,1,0,0,2
+16085,1,0,1,0,0,2
+16094,2,2,3,734,0,2297
+16095,1,0,1,0,0,2
+16096,1,0,1,0,0,1
+16097,1,0,1,0,0,1
+16105,2,2,3,734,0,2301
+16106,1,0,1,0,0,2
+16107,1,0,1,0,0,2
+16108,1,0,1,0,0,2
+16118,2,2,3,734,0,2287
+16119,1,0,1,0,0,2
+16120,1,0,1,0,0,2
+16121,1,0,1,0,0,1
+16122,1,0,1,0,0,1
+16123,2,2,3,734,0,222
+16124,2,2,3,734,0,268
+16133,2,2,3,734,0,2216
+16134,1,0,1,0,0,1
+16135,1,0,1,0,0,1
+16136,1,0,1,0,0,1
+16146,2,2,3,734,0,2298
+16147,1,0,1,0,0,1
+16148,1,0,1,0,0,1
+16149,1,0,1,0,0,1
+16150,2,2,3,734,0,2288
+16151,1,0,1,0,0,1
+16152,1,0,1,0,0,2
+16153,1,0,1,0,0,1
+16154,2,2,3,734,0,2267
+16155,1,0,1,0,0,2
+16156,1,0,1,0,0,2
+16157,1,0,1,0,0,2
+16168,2,2,3,734,0,2259
+16169,1,0,1,0,0,2
+16170,1,0,1,0,0,2
+16171,1,0,1,0,0,2
+16172,2,2,3,734,0,2281
+16173,1,0,1,0,0,2
+16174,1,0,1,0,0,2
+16175,1,0,1,0,0,2
+16176,2,2,3,734,0,2296
+16177,1,0,1,0,0,2
+16178,1,0,1,0,0,2
+16179,1,0,1,0,0,2
+16189,2,2,3,734,0,2247
+16190,1,0,1,0,0,1
+16191,1,0,1,0,0,1
+16192,1,0,1,0,0,1
+16193,2,2,3,734,0,2263
+16194,1,0,1,0,0,2
+16195,1,0,1,0,0,2
+16196,1,0,1,0,0,2
+16197,2,2,3,734,0,2276
+16198,1,0,1,0,0,1
+16199,1,0,1,0,0,1
+16200,1,0,1,0,0,1
+16212,1,0,1,0,0,2
+16213,1,0,1,0,0,2
+16214,1,0,1,0,0,2
+16215,1,0,1,0,0,1
+16216,1,0,1,0,0,1
+16217,1,0,1,0,0,1
+16218,1,0,1,0,0,1
+16219,1,0,1,0,0,1
+16220,2,2,3,734,0,2281
+16221,1,0,1,0,0,2
+16222,1,0,1,0,0,1
+16223,1,0,1,0,0,2
+16224,1,0,1,0,0,1
+16225,2,2,3,734,0,2243
+16226,1,0,1,0,0,2
+16227,1,0,1,0,0,2
+16228,1,0,1,0,0,2
+16229,1,0,1,0,0,2
+16230,2,2,3,734,0,2272
+16231,1,0,1,0,0,2
+16232,1,0,1,0,0,2
+16233,1,0,1,0,0,1
+16234,1,0,1,0,0,1
+16235,2,2,3,734,0,232
+16236,2,2,3,734,0,246
+16247,2,2,3,734,0,2171
+16248,1,0,1,0,0,2
+16249,1,0,1,0,0,2
+16250,1,0,1,0,0,2
+16251,2,2,3,734,0,2209
+16252,1,0,1,0,0,2
+16253,1,0,1,0,0,1
+16254,1,0,1,0,0,2
+16255,2,2,3,734,0,2260
+16256,1,0,1,0,0,2
+16257,1,0,1,0,0,2
+16258,1,0,1,0,0,1
+16270,2,2,3,734,0,2231
+16271,1,0,1,0,0,1
+16272,1,0,1,0,0,1
+16273,1,0,1,0,0,1
+16274,2,2,3,734,0,2261
+16275,1,0,1,0,0,1
+16276,1,0,1,0,0,1
+16277,1,0,1,0,0,1
+16278,2,2,3,734,0,2203
+16279,1,0,1,0,0,2
+16280,1,0,1,0,0,1
+16281,1,0,1,0,0,2
+16294,2,2,3,734,0,2274
+16295,1,0,1,0,0,2
+16296,1,0,1,0,0,1
+16297,1,0,1,0,0,2
+16298,2,2,3,734,0,2233
+16299,1,0,1,0,0,1
+16300,1,0,1,0,0,1
+16301,1,0,1,0,0,1
+16302,2,2,3,734,0,2233
+16303,1,0,1,0,0,1
+16304,1,0,1,0,0,1
+16305,1,0,1,0,0,1
+16319,2,2,3,734,0,2246
+16320,1,0,1,0,0,2
+16321,1,0,1,0,0,2
+16322,1,0,1,0,0,1
+16323,2,2,3,734,0,2225
+16324,1,0,1,0,0,1
+16325,1,0,1,0,0,1
+16326,1,0,1,0,0,1
+16327,2,2,3,734,0,2260
+16328,1,0,1,0,0,1
+16329,1,0,1,0,0,1
+16330,1,0,1,0,0,1
+16345,2,2,3,734,0,2295
+16346,1,0,1,0,0,2
+16347,1,0,1,0,0,1
+16348,1,0,1,0,0,2
+16349,2,2,3,734,0,2236
+16350,1,0,1,0,0,2
+16351,1,0,1,0,0,2
+16352,1,0,1,0,0,2
+16353,2,2,3,734,0,2268
+16354,1,0,1,0,0,1
+16355,1,0,1,0,0,1
+16356,1,0,1,0,0,1
+16372,2,2,3,734,0,2229
+16373,1,0,1,0,0,1
+16374,1,0,1,0,0,1
+16375,1,0,1,0,0,1
+16376,2,2,3,734,0,2279
+16377,1,0,1,0,0,2
+16378,1,0,1,0,0,1
+16379,1,0,1,0,0,2
+16380,2,2,3,734,0,2267
+16381,1,0,1,0,0,2
+16382,1,0,1,0,0,1
+16383,1,0,1,0,0,1
+16400,2,2,3,734,0,2279
+16401,1,0,1,0,0,4
+16402,1,0,1,0,0,1
+16403,1,0,1,0,0,1
+16404,2,2,3,734,0,2250
+16405,1,0,1,0,0,1
+16406,1,0,1,0,0,1
+16407,1,0,1,0,0,1
+16408,2,2,3,734,0,2294
+16409,1,0,1,0,0,1
+16410,1,0,1,0,0,1
+16411,1,0,1,0,0,1
+16429,2,2,3,734,0,2266
+16430,1,0,1,0,0,2
+16431,1,0,1,0,0,1
+16432,1,0,1,0,0,1
+16433,2,2,3,734,0,2279
+16434,1,0,1,0,0,2
+16435,1,0,1,0,0,2
+16436,1,0,1,0,0,2
+16437,2,2,3,734,0,2273
+16438,1,0,1,0,0,2
+16439,1,0,1,0,0,2
+16440,1,0,1,0,0,2
+16459,2,2,3,734,0,2326
+16460,1,0,1,0,0,2
+16461,1,0,1,0,0,1
+16462,1,0,1,0,0,1
+16463,2,2,3,734,0,2304
+16464,1,0,1,0,0,2
+16465,1,0,1,0,0,2
+16466,1,0,1,0,0,2
+16467,2,2,3,734,0,2302
+16468,1,0,1,0,0,1
+16469,1,0,1,0,0,1
+16470,1,0,1,0,0,1
+16490,2,2,3,734,0,2319
+16491,1,0,1,0,0,1
+16492,1,0,1,0,0,1
+16493,1,0,1,0,0,1
+16494,2,2,3,734,0,2327
+16495,1,0,1,0,0,2
+16496,1,0,1,0,0,2
+16497,1,0,1,0,0,1
+16498,2,2,3,734,0,2338
+16499,1,0,1,0,0,1
+16500,1,0,1,0,0,1
+16501,1,0,1,0,0,2
+16522,2,2,3,734,0,2282
+16523,1,0,1,0,0,2
+16524,1,0,1,0,0,2
+16525,1,0,1,0,0,1
+16526,2,2,3,734,0,2254
+16527,1,0,1,0,0,1
+16528,1,0,1,0,0,1
+16529,1,0,1,0,0,1
+16530,2,2,3,734,0,2283
+16531,1,0,1,0,0,2
+16532,1,0,1,0,0,1
+16533,1,0,1,0,0,1
+16547,1,0,1,0,0,2
+16562,1,0,1,0,0,2
+16563,2,2,3,734,0,225
+16564,2,2,3,734,0,243
+16572,1,0,1,0,0,2
+16580,2,2,3,734,0,2218
+16581,1,0,1,0,0,2
+16582,1,0,1,0,0,1
+16583,1,0,1,0,0,2
+16592,2,2,3,734,0,2292
+16593,1,0,1,0,0,2
+16594,1,0,1,0,0,2
+16595,1,0,1,0,0,2
+16603,2,2,3,734,0,2296
+16604,1,0,1,0,0,2
+16605,1,0,1,0,0,1
+16606,1,0,1,0,0,1
+16616,1,0,1,0,0,2
+16617,1,0,1,0,0,1
+16618,1,0,1,0,0,2
+16619,1,0,1,0,0,2
+16620,1,0,1,0,0,1
+16621,1,0,1,0,0,1
+16622,1,0,1,0,0,1
+16623,1,0,1,0,0,1
+16624,1,0,1,0,0,2
+16625,1,0,1,0,0,2
+16626,1,0,1,0,0,2
+16627,1,0,1,0,0,2
+16628,1,0,1,0,0,2
+16629,1,0,1,0,0,2
+16630,1,0,1,0,0,2
+16631,1,0,1,0,0,1
+16632,1,0,1,0,0,1
+16633,1,0,1,0,0,2
+16634,1,0,1,0,0,2
+16635,1,0,1,0,0,4
+16636,1,0,1,0,0,4
+16637,1,0,1,0,0,1
+16638,1,0,1,0,0,1
+16639,1,0,1,0,0,1
+16640,1,0,1,0,0,2
+16641,1,0,1,0,0,2
+16642,1,0,1,0,0,2
+16643,2,2,3,734,0,2272
+16644,1,0,1,0,0,2
+16645,1,0,1,0,0,1
+16646,1,0,1,0,0,1
+16647,1,0,1,0,0,1
+16648,2,2,3,734,0,242
+16649,2,2,3,734,0,253
+16658,2,2,3,734,0,2188
+16659,1,0,1,0,0,2
+16660,1,0,1,0,0,2
+16661,1,0,1,0,0,1
+16671,2,2,3,734,0,2264
+16672,1,0,1,0,0,1
+16673,1,0,1,0,0,1
+16674,1,0,1,0,0,1
+16685,2,2,3,734,0,2290
+16686,1,0,1,0,0,1
+16687,1,0,1,0,0,1
+16688,1,0,1,0,0,1
+16700,2,2,3,734,0,2292
+16701,1,0,1,0,0,2
+16702,1,0,1,0,0,2
+16703,1,0,1,0,0,1
+16716,2,2,3,734,0,2276
+16717,1,0,1,0,0,2
+16718,1,0,1,0,0,1
+16719,1,0,1,0,0,1
+16733,2,2,3,734,0,2287
+16734,1,0,1,0,0,2
+16735,1,0,1,0,0,1
+16736,1,0,1,0,0,2
+16751,2,2,3,734,0,2306
+16752,1,0,1,0,0,2
+16753,1,0,1,0,0,1
+16754,1,0,1,0,0,2
+16770,2,2,3,734,0,2289
+16771,1,0,1,0,0,1
+16772,1,0,1,0,0,1
+16773,1,0,1,0,0,1
+16790,2,2,3,734,0,2322
+16791,1,0,1,0,0,2
+16792,1,0,1,0,0,1
+16793,1,0,1,0,0,1
+16811,2,2,3,734,0,2259
+16812,1,0,1,0,0,2
+16813,1,0,1,0,0,2
+16814,1,0,1,0,0,1
+16833,2,2,3,734,0,2294
+16834,1,0,1,0,0,1
+16835,1,0,1,0,0,1
+16836,1,0,1,0,0,1
+16856,2,2,3,734,0,2271
+16857,1,0,1,0,0,1
+16858,1,0,1,0,0,1
+16859,1,0,1,0,0,1
+16880,2,2,3,734,0,2262
+16881,1,0,1,0,0,2
+16882,1,0,1,0,0,2
+16883,1,0,1,0,0,1
+16905,2,2,3,734,0,2250
+16906,1,0,1,0,0,1
+16907,1,0,1,0,0,1
+16908,1,0,1,0,0,1
+16931,2,2,3,734,0,2294
+16932,1,0,1,0,0,2
+16933,1,0,1,0,0,2
+16934,1,0,1,0,0,1
+16958,2,2,3,734,0,2267
+16959,1,0,1,0,0,1
+16960,1,0,1,0,0,1
+16961,1,0,1,0,0,1
+16986,2,2,3,734,0,2265
+16987,1,0,1,0,0,1
+16988,1,0,1,0,0,1
+16989,1,0,1,0,0,1
+17015,2,2,3,734,0,2260
+17016,1,0,1,0,0,2
+17017,1,0,1,0,0,2
+17018,1,0,1,0,0,2
+17045,2,2,3,734,0,2283
+17046,1,0,1,0,0,2
+17047,1,0,1,0,0,2
+17048,1,0,1,0,0,2
+17076,2,2,3,734,0,2280
+17077,1,0,1,0,0,2
+17078,1,0,1,0,0,2
+17079,1,0,1,0,0,2
+17108,2,2,3,734,0,2280
+17109,1,0,1,0,0,1
+17110,1,0,1,0,0,2
+17111,1,0,1,0,0,1
+17141,2,2,3,734,0,2255
+17142,1,0,1,0,0,2
+17143,1,0,1,0,0,1
+17144,1,0,1,0,0,2
+17175,2,2,3,734,0,2291
+17176,1,0,1,0,0,2
+17177,1,0,1,0,0,1
+17178,1,0,1,0,0,2
+17210,2,2,3,734,0,2328
+17211,1,0,1,0,0,2
+17212,1,0,1,0,0,2
+17213,1,0,1,0,0,2
+17246,2,2,3,734,0,2274
+17247,1,0,1,0,0,1
+17248,1,0,1,0,0,1
+17249,1,0,1,0,0,1
+17283,2,2,3,734,0,2279
+17284,1,0,1,0,0,2
+17285,1,0,1,0,0,1
+17286,1,0,1,0,0,2
+17320,2,2,3,734,0,2332
+17321,1,0,1,0,0,1
+17322,1,0,1,0,0,1
+17323,1,0,1,0,0,1
+17358,2,2,3,734,0,2304
+17359,1,0,1,0,0,1
+17360,1,0,1,0,0,1
+17361,1,0,1,0,0,1
+17370,2,2,3,734,0,2290
+17371,1,0,1,0,0,1
+17372,1,0,1,0,0,1
+17373,1,0,1,0,0,1
+17374,2,2,3,734,0,2278
+17375,1,0,1,0,0,2
+17376,1,0,1,0,0,2
+17377,1,0,1,0,0,1
+17387,2,2,3,734,0,2294
+17388,1,0,1,0,0,2
+17389,1,0,1,0,0,1
+17390,1,0,1,0,0,2
+17391,2,2,3,734,0,2280
+17392,1,0,1,0,0,2
+17393,1,0,1,0,0,2
+17394,1,0,1,0,0,2
+17403,2,2,3,734,0,2326
+17404,1,0,1,0,0,2
+17405,1,0,1,0,0,1
+17406,1,0,1,0,0,2
+17407,2,2,3,734,0,2301
+17408,1,0,1,0,0,2
+17409,1,0,1,0,0,1
+17410,1,0,1,0,0,2
+17421,1,0,1,0,0,2
+17422,2,2,3,734,0,2321
+17423,1,0,1,0,0,2
+17424,1,0,1,0,0,2
+17425,1,0,1,0,0,2
+17426,1,0,1,0,0,1
+17427,2,2,3,734,0,2320
+17428,1,0,1,0,0,1
+17429,1,0,1,0,0,5
+17430,1,0,1,0,0,1
+17431,1,0,1,0,0,1
+17432,2,2,3,734,0,225
+17433,2,2,3,734,0,245
+17443,2,2,3,734,0,2203
+17444,1,0,1,0,0,1
+17445,1,0,1,0,0,1
+17446,1,0,1,0,0,1
+17447,2,2,3,734,0,2257
+17448,1,0,1,0,0,2
+17449,1,0,1,0,0,2
+17450,1,0,1,0,0,1
+17461,2,2,3,734,0,2265
+17462,1,0,1,0,0,2
+17463,1,0,1,0,0,1
+17464,1,0,1,0,0,1
+17465,2,2,3,734,0,2281
+17466,1,0,1,0,0,1
+17467,1,0,1,0,0,1
+17468,1,0,1,0,0,1
+17480,2,2,3,734,0,2319
+17481,1,0,1,0,0,2
+17482,1,0,1,0,0,2
+17483,1,0,1,0,0,2
+17484,2,2,3,734,0,2275
+17485,1,0,1,0,0,1
+17486,1,0,1,0,0,1
+17487,1,0,1,0,0,1
+17495,2,2,3,734,0,2306
+17496,1,0,1,0,0,1
+17497,1,0,1,0,0,2
+17498,1,0,1,0,0,1
+17507,2,2,3,734,0,2313
+17508,1,0,1,0,0,1
+17509,1,0,1,0,0,1
+17510,1,0,1,0,0,1
+17518,2,2,3,734,0,2313
+17519,1,0,1,0,0,1
+17520,1,0,1,0,0,1
+17521,1,0,1,0,0,1
+17531,2,2,3,734,0,2336
+17532,1,0,1,0,0,2
+17533,1,0,1,0,0,2
+17534,1,0,1,0,0,1
+17535,1,0,1,0,0,1
+17536,2,2,3,734,0,222
+17537,2,2,3,734,0,243
+17546,2,2,3,734,0,2203
+17547,1,0,1,0,0,2
+17548,1,0,1,0,0,2
+17549,1,0,1,0,0,2
+17577,1,0,1,0,0,1
+17578,1,0,1,0,0,1
+17579,1,0,1,0,0,2
+17580,2,2,3,734,0,232
+17581,2,2,3,734,0,255
+17633,1,0,1,0,0,2
+17634,1,0,1,0,0,2
+17635,2,2,3,734,0,267
+17636,2,2,3,734,0,250
+17679,1,0,1,0,0,3
+17680,2,2,3,734,0,2143
+17681,2,2,3,734,0,2252
+17709,1,0,1,0,0,2
+17710,1,0,1,0,0,2
+17711,1,0,1,0,0,2
+17712,2,2,3,734,0,224
+17713,2,2,3,734,0,239
+17765,1,0,1,0,0,7
+17766,2,2,3,734,0,2133
+17767,2,2,3,734,0,2250
+17776,2,2,3,734,0,2200
+17777,1,0,1,0,0,1
+17778,1,0,1,0,0,1
+17779,1,0,1,0,0,1
+17780,2,2,3,734,0,2272
+17781,1,0,1,0,0,2
+17782,1,0,1,0,0,1
+17783,1,0,1,0,0,1
+17793,2,2,3,734,0,2210
+17794,1,0,1,0,0,1
+17795,1,0,1,0,0,1
+17796,1,0,1,0,0,2
+17797,2,2,3,734,0,2237
+17798,1,0,1,0,0,2
+17799,1,0,1,0,0,1
+17800,1,0,1,0,0,1
+17809,2,2,3,734,0,2227
+17810,1,0,1,0,0,1
+17811,1,0,1,0,0,1
+17812,1,0,1,0,0,1
+17813,2,2,3,734,0,2249
+17814,1,0,1,0,0,2
+17815,1,0,1,0,0,1
+17816,1,0,1,0,0,1
+17827,2,2,3,734,0,2235
+17828,1,0,1,0,0,2
+17829,1,0,1,0,0,2
+17830,1,0,1,0,0,2
+17831,1,0,1,0,0,2
+17832,1,0,1,0,0,1
+17833,2,2,3,734,0,2254
+17834,1,0,1,0,0,2
+17835,1,0,1,0,0,2
+17836,1,0,1,0,0,1
+17837,1,0,1,0,0,1
+17838,2,2,3,734,0,218
+17839,2,2,3,734,0,247
+17849,2,2,3,734,0,2158
+17850,1,0,1,0,0,2
+17851,1,0,1,0,0,2
+17852,1,0,1,0,0,2
+17853,2,2,3,734,0,2258
+17854,1,0,1,0,0,1
+17855,1,0,1,0,0,1
+17856,1,0,1,0,0,1
+17867,2,2,3,734,0,2236
+17868,1,0,1,0,0,2
+17869,1,0,1,0,0,2
+17870,1,0,1,0,0,2
+17871,2,2,3,734,0,2229
+17872,1,0,1,0,0,2
+17873,1,0,1,0,0,1
+17874,1,0,1,0,0,2
+17886,2,2,3,734,0,2254
+17887,1,0,1,0,0,1
+17888,1,0,1,0,0,1
+17889,1,0,1,0,0,1
+17890,2,2,3,734,0,2250
+17891,1,0,1,0,0,2
+17892,1,0,1,0,0,2
+17893,1,0,1,0,0,2
+17901,2,2,3,734,0,2236
+17902,1,0,1,0,0,2
+17903,1,0,1,0,0,2
+17904,1,0,1,0,0,1
+17913,2,2,3,734,0,2291
+17914,1,0,1,0,0,1
+17915,1,0,1,0,0,1
+17916,1,0,1,0,0,1
+17924,2,2,3,734,0,2236
+17925,1,0,1,0,0,1
+17926,1,0,1,0,0,1
+17927,1,0,1,0,0,1
+17937,2,2,3,734,0,2270
+17938,1,0,1,0,0,1
+17939,1,0,1,0,0,2
+17940,1,0,1,0,0,1
+17941,1,0,1,0,0,2
+17942,2,2,3,734,0,225
+17943,2,2,3,734,0,240
+17952,2,2,3,734,0,2177
+17953,1,0,1,0,0,1
+17954,1,0,1,0,0,1
+17955,1,0,1,0,0,1
+17965,2,2,3,734,0,2254
+17966,1,0,1,0,0,1
+17967,1,0,1,0,0,1
+17968,1,0,1,0,0,1
+17969,2,2,3,734,0,2234
+17970,1,0,1,0,0,1
+17971,1,0,1,0,0,1
+17972,1,0,1,0,0,1
+17973,2,2,3,734,0,2292
+17974,1,0,1,0,0,1
+17975,1,0,1,0,0,1
+17976,1,0,1,0,0,1
+17987,2,2,3,734,0,2268
+17988,1,0,1,0,0,2
+17989,1,0,1,0,0,2
+17990,1,0,1,0,0,1
+17991,2,2,3,734,0,2293
+17992,1,0,1,0,0,2
+17993,1,0,1,0,0,2
+17994,1,0,1,0,0,1
+17995,2,2,3,734,0,2300
+17996,1,0,1,0,0,2
+17997,1,0,1,0,0,2
+17998,1,0,1,0,0,2
+18008,2,2,3,734,0,2292
+18009,1,0,1,0,0,2
+18010,1,0,1,0,0,2
+18011,1,0,1,0,0,2
+18012,2,2,3,734,0,2305
+18013,1,0,1,0,0,2
+18014,1,0,1,0,0,2
+18015,1,0,1,0,0,1
+18016,2,2,3,734,0,2301
+18017,1,0,1,0,0,2
+18018,1,0,1,0,0,2
+18019,1,0,1,0,0,2
+18031,1,0,1,0,0,1
+18032,1,0,1,0,0,1
+18033,1,0,1,0,0,1
+18034,1,0,1,0,0,1
+18035,1,0,1,0,0,2
+18036,1,0,1,0,0,2
+18037,1,0,1,0,0,2
+18038,1,0,1,0,0,2
+18039,2,2,3,734,0,2297
+18040,1,0,1,0,0,2
+18041,1,0,1,0,0,2
+18042,1,0,1,0,0,1
+18043,1,0,1,0,0,2
+18044,2,2,3,734,0,2298
+18045,1,0,1,0,0,2
+18046,1,0,1,0,0,2
+18047,1,0,1,0,0,2
+18048,1,0,1,0,0,2
+18049,2,2,3,734,0,2283
+18050,1,0,1,0,0,2
+18051,1,0,1,0,0,1
+18052,1,0,1,0,0,1
+18053,1,0,1,0,0,1
+18054,2,2,3,734,0,236
+18055,2,2,3,734,0,270
+18066,2,2,3,734,0,2165
+18067,1,0,1,0,0,2
+18068,1,0,1,0,0,2
+18069,1,0,1,0,0,2
+18070,2,2,3,734,0,2276
+18071,1,0,1,0,0,1
+18072,1,0,1,0,0,1
+18073,1,0,1,0,0,1
+18074,2,2,3,734,0,2292
+18075,1,0,1,0,0,2
+18076,1,0,1,0,0,1
+18077,1,0,1,0,0,4
+18089,2,2,3,734,0,2283
+18090,1,0,1,0,0,1
+18091,1,0,1,0,0,1
+18092,1,0,1,0,0,2
+18093,2,2,3,734,0,2307
+18094,1,0,1,0,0,1
+18095,1,0,1,0,0,1
+18096,1,0,1,0,0,1
+18097,2,2,3,734,0,2279
+18098,1,0,1,0,0,1
+18099,1,0,1,0,0,1
+18100,1,0,1,0,0,2
+18113,2,2,3,734,0,2285
+18114,1,0,1,0,0,2
+18115,1,0,1,0,0,1
+18116,1,0,1,0,0,1
+18117,2,2,3,734,0,2329
+18118,1,0,1,0,0,2
+18119,1,0,1,0,0,1
+18120,1,0,1,0,0,1
+18121,2,2,3,734,0,2261
+18122,1,0,1,0,0,2
+18123,1,0,1,0,0,2
+18124,1,0,1,0,0,2
+18138,2,2,3,734,0,2279
+18139,1,0,1,0,0,2
+18140,1,0,1,0,0,1
+18141,1,0,1,0,0,1
+18142,2,2,3,734,0,2290
+18143,1,0,1,0,0,2
+18144,1,0,1,0,0,2
+18145,1,0,1,0,0,2
+18146,2,2,3,734,0,2295
+18147,1,0,1,0,0,2
+18148,1,0,1,0,0,1
+18149,1,0,1,0,0,1
+18164,2,2,3,734,0,2304
+18165,1,0,1,0,0,2
+18166,1,0,1,0,0,2
+18167,1,0,1,0,0,1
+18168,2,2,3,734,0,2279
+18169,1,0,1,0,0,1
+18170,1,0,1,0,0,1
+18171,1,0,1,0,0,1
+18172,2,2,3,734,0,2288
+18173,1,0,1,0,0,1
+18174,1,0,1,0,0,1
+18175,1,0,1,0,0,1
+18191,2,2,3,734,0,2328
+18192,1,0,1,0,0,2
+18193,1,0,1,0,0,1
+18194,1,0,1,0,0,1
+18195,2,2,3,734,0,2277
+18196,1,0,1,0,0,1
+18197,1,0,1,0,0,2
+18198,1,0,1,0,0,2
+18199,2,2,3,734,0,2269
+18200,1,0,1,0,0,2
+18201,1,0,1,0,0,2
+18202,1,0,1,0,0,2
+18219,2,2,3,734,0,2290
+18220,1,0,1,0,0,1
+18221,1,0,1,0,0,1
+18222,1,0,1,0,0,1
+18223,2,2,3,734,0,2255
+18224,1,0,1,0,0,1
+18225,1,0,1,0,0,1
+18226,1,0,1,0,0,2
+18227,2,2,3,734,0,2243
+18228,1,0,1,0,0,1
+18229,1,0,1,0,0,1
+18230,1,0,1,0,0,1
+18248,2,2,3,734,0,2258
+18249,1,0,1,0,0,2
+18250,1,0,1,0,0,3
+18251,1,0,1,0,0,1
+18252,2,2,3,734,0,2230
+18253,1,0,1,0,0,1
+18254,1,0,1,0,0,1
+18255,1,0,1,0,0,1
+18256,2,2,3,734,0,2233
+18257,1,0,1,0,0,1
+18258,1,0,1,0,0,1
+18259,1,0,1,0,0,1
+18278,2,2,3,734,0,2236
+18279,1,0,1,0,0,2
+18280,1,0,1,0,0,2
+18281,1,0,1,0,0,1
+18282,2,2,3,734,0,2245
+18283,1,0,1,0,0,2
+18284,1,0,1,0,0,2
+18285,1,0,1,0,0,1
+18286,2,2,3,734,0,2232
+18287,1,0,1,0,0,1
+18288,1,0,1,0,0,1
+18289,1,0,1,0,0,2
+18309,2,2,3,734,0,2254
+18310,1,0,1,0,0,1
+18311,1,0,1,0,0,1
+18312,1,0,1,0,0,1
+18313,2,2,3,734,0,2254
+18314,1,0,1,0,0,1
+18315,1,0,1,0,0,1
+18316,1,0,1,0,0,1
+18317,2,2,3,734,0,2245
+18318,1,0,1,0,0,2
+18319,1,0,1,0,0,1
+18320,1,0,1,0,0,2
+18341,2,2,3,734,0,2243
+18342,1,0,1,0,0,2
+18343,1,0,1,0,0,1
+18344,1,0,1,0,0,2
+18345,2,2,3,734,0,2240
+18346,1,0,1,0,0,2
+18347,1,0,1,0,0,2
+18348,1,0,1,0,0,1
+18349,2,2,3,734,0,2248
+18350,1,0,1,0,0,2
+18351,1,0,1,0,0,2
+18352,1,0,1,0,0,1
+18361,2,2,3,734,0,2209
+18362,1,0,1,0,0,2
+18363,1,0,1,0,0,1
+18364,1,0,1,0,0,1
+18365,2,2,3,734,0,2279
+18366,1,0,1,0,0,1
+18367,1,0,1,0,0,2
+18368,1,0,1,0,0,2
+18378,2,2,3,734,0,2255
+18379,1,0,1,0,0,1
+18380,1,0,1,0,0,1
+18381,1,0,1,0,0,1
+18382,2,2,3,734,0,2265
+18383,1,0,1,0,0,2
+18384,1,0,1,0,0,2
+18385,1,0,1,0,0,2
+18394,2,2,3,734,0,2267
+18395,1,0,1,0,0,2
+18396,1,0,1,0,0,1
+18397,1,0,1,0,0,1
+18398,2,2,3,734,0,2302
+18399,1,0,1,0,0,2
+18400,1,0,1,0,0,1
+18401,1,0,1,0,0,2
+18412,2,2,3,734,0,2262
+18413,1,0,1,0,0,2
+18414,1,0,1,0,0,2
+18415,1,0,1,0,0,2
+18416,1,0,1,0,0,2
+18417,1,0,1,0,0,2
+18418,2,2,3,734,0,2256
+18419,1,0,1,0,0,2
+18420,1,0,1,0,0,2
+18421,1,0,1,0,0,2
+18422,1,0,1,0,0,1
+18423,2,2,3,734,0,225
+18424,2,2,3,734,0,243
+18434,2,2,3,734,0,2177
+18435,1,0,1,0,0,1
+18436,1,0,1,0,0,1
+18437,1,0,1,0,0,1
+18438,2,2,3,734,0,2245
+18439,1,0,1,0,0,1
+18440,1,0,1,0,0,1
+18441,1,0,1,0,0,1
+18452,2,2,3,734,0,2295
+18453,1,0,1,0,0,2
+18454,1,0,1,0,0,2
+18455,1,0,1,0,0,1
+18456,2,2,3,734,0,2287
+18457,1,0,1,0,0,1
+18458,1,0,1,0,0,1
+18459,1,0,1,0,0,1
+18471,2,2,3,734,0,2313
+18472,1,0,1,0,0,2
+18473,1,0,1,0,0,1
+18474,1,0,1,0,0,1
+18475,2,2,3,734,0,2312
+18476,1,0,1,0,0,1
+18477,1,0,1,0,0,1
+18478,1,0,1,0,0,1
+18506,1,0,1,0,0,1
+18507,1,0,1,0,0,2
+18508,1,0,1,0,0,2
+18509,1,0,1,0,0,1
+18510,1,0,1,0,0,2
+18511,1,0,1,0,0,2
+18512,2,2,3,734,0,232
+18513,2,2,3,734,0,245
+18580,4,2,5,149,,84
+18581,3,2,4,149,0,705
+18582,1,0,1,0,0,2
+18583,2,1,2,1,0,32
+18591,4,2,5,149,,72
+18592,3,2,4,149,0,714
+18593,4,1,4,1,0,19
+18594,1,0,1,0,0,2
+18595,2,1,2,1,0,33
+18602,3,2,4,734,0,284
+18603,2,2,3,734,0,263
+18610,2,1,2,734,,3
+18611,2,1,2,734,,46
+18639,1,0,1,0,0,3
+18640,2,2,3,734,0,2157
+18641,2,2,3,734,0,2225
+18650,1,0,1,0,0,2
+18651,2,2,3,734,0,244
+18652,2,2,3,734,0,250
+18653,1,0,1,0,0,2
+18654,2,2,3,734,0,272
+18655,2,2,3,734,0,259
+18656,3,2,4,734,0,260
+18657,2,2,3,734,0,247
+18669,2,2,3,734,0,297
+18670,1,0,1,0,0,2
+18671,5,2,6,734,0,311
+18672,4,1,4,1,0,20
+18673,2,1,2,734,0,50
+18674,2,2,3,734,0,281
+18675,2,1,2,143,0,42
+18676,1,0,1,1,0,3
+18677,1,0,1,0,0,2
+18678,1,0,1,0,0,2
+18679,4,1,4,3,,17
+18680,4,1,4,2,,13
+18681,2,1,2,734,0,50
+18682,4,2,5,734,0,299
+18683,2,1,2,143,0,42
+18684,3,1,3,1,0,14
+18685,1,0,1,0,0,2
+18686,4,2,7,149,0,140
+18687,2,2,3,1,0,11
+18688,4,2,5,149,0,1385
+18689,1,0,1,0,0,2
+18690,2,1,2,734,0,44
+18691,7,2,9,734,0,324
+18692,2,1,2,143,0,40
+18693,6,2,7,25,0,52
+18694,2,1,2,734,0,43
+18695,4,2,6,734,0,304
+18696,2,1,2,143,0,40
+18697,3,2,4,2,0,51
+18698,2,1,2,1,0,7
+18707,4,2,5,734,0,367
+18708,3,1,3,1,0,13
+18709,1,0,1,0,0,2
+18710,4,2,7,149,0,140
+18711,4,2,5,149,0,120
+18712,2,1,2,2,0,10
+18713,1,0,1,0,0,2
+18714,2,1,2,2,0,13
+18715,4,2,5,149,0,162
+18716,4,2,5,149,0,161
+18717,1,0,1,0,0,2
+18718,2,1,2,2,0,10
+18719,4,2,7,149,0,138
+18720,4,2,5,149,0,118
+18721,2,1,2,2,0,9
+18728,1,0,1,0,0,2
+18729,3,3,5,12,,3
+18730,2,1,2,1,0,31
+18731,3,2,5,734,,21
+18732,2,2,3,25,,3
+18733,2,2,3,149,,2
+18734,3,4,7,1,,49
+18744,3,2,4,734,0,265
+18745,2,1,2,1,0,6
+18746,3,2,4,734,0,250
+18747,2,1,2,1,0,6
+18748,1,0,1,0,0,2
+18749,2,2,3,734,,23
+18750,1,0,1,0,,1
+18751,2,2,3,21,,2
+18752,3,4,7,1,,44
+18753,1,0,1,0,0,3
+18754,3,3,5,12,,4
+18755,2,1,2,1,0,25
+18756,1,0,1,0,0,2
+18757,4,2,5,149,0,1376
+18758,2,1,2,7,0,8
+18759,4,2,5,149,0,121
+18766,4,2,5,734,0,2519
+18767,3,1,3,2,0,9
+18768,4,2,5,21,0,168
+18769,3,6,9,1,,66
+18770,1,0,1,0,0,2
+18771,5,3,7,12,0,561
+18772,2,1,2,1,0,25
+18780,3,1,3,1,0,13
+18781,3,2,4,1,0,36
+18782,1,0,1,0,0,2
+18783,2,1,2,2,0,6
+18791,3,1,3,1,0,12
+18792,3,2,4,1,0,34
+18793,1,0,1,0,0,1
+18794,2,1,2,2,0,6
+18802,2,2,3,734,0,274
+18803,1,0,1,1,0,2
+18804,4,3,6,1,0,65
+18818,3,2,5,734,0,2488
+18819,2,2,3,1,0,45
+18820,5,2,7,149,0,1491
+18821,2,2,3,734,0,2280
+18822,2,2,3,734,0,2257
+18828,4,2,5,149,0,696
+18829,4,2,5,149,0,702
+18830,2,2,3,149,0,84
+18831,3,1,3,734,0,66
+18832,3,3,6,10,0,217
+18833,2,1,2,2,0,30
+18834,3,4,6,1,,203
+18842,3,1,3,1,0,13
+18843,3,3,5,1,,55
+18844,2,2,3,734,0,264
+18845,1,0,1,0,0,2
+18846,2,3,4,1,0,47
+18847,2,2,3,1,,44
+18856,2,1,2,734,0,43
+18857,2,2,3,734,0,280
+18858,2,1,2,143,0,45
+18859,1,0,1,0,0,2
+18860,3,4,7,734,0,130
+18861,3,2,4,149,0,82
+18862,5,2,8,149,0,147
+18863,7,2,9,3,0,40
+18870,1,0,1,1,0,4
+18871,3,2,5,3,0,47
+18880,2,2,3,149,0,83
+18881,1,0,1,0,0,2
+18882,6,1,6,2,0,23
+18883,1,0,1,1,0,2
+18884,1,0,1,1,0,2
+18885,3,4,7,1,,47
+18886,7,2,8,2,,42
+18887,1,0,1,0,0,2
+18888,4,2,5,149,0,696
+18889,1,0,1,0,0,2
+18890,2,1,2,2,0,7
+18891,4,2,5,149,0,687
+18892,3,1,3,7,0,10
+18904,3,1,3,1,0,13
+18905,1,0,1,0,0,2
+18906,2,1,2,2,0,6
+18907,3,1,3,1,0,11
+18908,3,2,4,1,0,36
+18909,1,0,1,0,0,2
+18910,4,2,7,734,0,2735
+18911,3,2,5,1,0,26
+18912,1,0,1,0,0,2
+18913,3,2,4,734,0,2095
+18914,2,1,2,1,0,8
+18915,1,0,1,1,0,2
+18916,1,0,1,0,0,2
+18917,1,0,1,0,0,2
+18918,1,0,1,0,0,1
+18919,2,1,2,2,0,5
+18920,2,2,3,2,,32
+18921,7,8,16,2,,138
+18922,2,1,2,1,0,6
+18923,1,0,1,1,0,3
+18924,1,0,1,1,0,2
+18925,4,2,5,6,0,24
+18926,1,0,1,1,0,3
+18927,4,1,4,6,0,19
+18928,1,0,1,1,0,3
+18929,2,2,3,734,0,285
+18930,2,2,3,734,0,251
+18939,4,2,5,734,0,2146
+18940,3,1,3,2,0,8
+18941,1,0,1,0,0,4
+18942,2,1,2,2,0,7
+18943,4,3,7,149,,82
+18944,1,0,1,0,0,2
+18945,2,2,3,2,,24
+18946,4,2,6,149,0,836
+18947,1,0,1,0,0,2
+18948,2,2,3,2,,23
+18949,1,0,1,0,0,2
+18950,2,1,2,2,0,6
+18951,4,2,6,149,0,851
+18952,1,0,1,0,0,2
+18953,2,2,3,2,,21
+18954,1,0,1,0,0,2
+18955,2,1,2,2,0,4
+18956,4,2,6,149,0,857
+18957,1,0,1,0,0,2
+18958,2,2,3,2,,24
+18959,1,0,1,0,0,2
+18960,2,1,2,2,0,6
+18967,5,2,6,734,0,2360
+18968,2,2,3,734,0,2156
Index: doc/theses/aaron_moss_PhD/phd/evaluation/per_prob/rational-per-prob.csv
===================================================================
--- doc/theses/aaron_moss_PhD/phd/evaluation/per_prob/rational-per-prob.csv	(revision 92d41a4af1542b1fcfd3bacde48933e4c8519366)
+++ doc/theses/aaron_moss_PhD/phd/evaluation/per_prob/rational-per-prob.csv	(revision 92d41a4af1542b1fcfd3bacde48933e4c8519366)
@@ -0,0 +1,882 @@
+2869,2,2,3,214,0,773
+2880,3,2,5,214,,149
+2895,2,1,2,215,,45
+2896,2,2,3,215,0,149
+2897,2,1,2,59,0,31
+2898,1,0,1,1,0,3
+2899,2,2,3,20,0,45
+2900,2,2,3,215,0,154
+2912,3,2,5,214,,193
+2927,2,1,2,215,,40
+2928,2,2,3,215,0,146
+2929,2,1,2,59,0,36
+2930,1,0,1,1,0,3
+2931,2,2,3,20,0,39
+2932,2,2,3,215,0,142
+2941,3,2,5,214,0,869
+2942,2,2,3,214,0,851
+2951,3,2,5,214,0,879
+2952,2,2,3,214,0,871
+2961,3,2,5,214,0,884
+2962,2,2,3,214,0,853
+2971,3,2,5,214,0,877
+2972,2,2,3,214,0,852
+2981,3,2,5,214,0,901
+2982,2,2,3,214,0,863
+2991,3,2,5,214,0,880
+2992,2,2,3,214,0,840
+3002,1,0,1,0,0,3
+3003,2,2,3,214,0,873
+3004,2,2,3,214,0,852
+3005,1,0,1,0,0,2
+3006,4,2,7,214,0,1550
+3007,2,2,3,214,0,840
+3008,2,2,3,214,0,874
+3009,1,0,1,0,0,2
+3010,1,0,1,0,0,1
+3011,2,2,3,10,0,103
+3012,1,0,1,0,0,3
+3013,2,2,3,18,0,156
+3014,2,2,3,18,0,154
+3015,3,2,5,214,0,1449
+3016,2,2,3,214,0,836
+3037,1,0,1,0,0,2
+3038,2,2,3,217,0,171
+3039,2,2,3,217,0,144
+3040,2,1,2,217,0,48
+3041,2,2,3,217,0,171
+3042,2,1,2,59,0,34
+3043,1,0,1,0,0,2
+3044,1,0,1,0,0,2
+3045,2,2,3,10,0,105
+3046,1,0,1,0,0,2
+3047,3,2,5,61,0,120
+3048,3,2,5,61,0,98
+3049,3,2,5,217,0,197
+3050,2,2,3,217,0,145
+3060,1,0,1,0,0,3
+3061,2,2,3,214,0,860
+3062,2,2,3,214,0,851
+3063,1,0,1,0,0,2
+3064,4,2,7,214,0,1487
+3065,2,2,3,214,0,902
+3066,2,2,3,214,0,879
+3067,1,0,1,0,0,1
+3068,1,0,1,0,0,1
+3069,2,2,3,10,0,105
+3070,1,0,1,0,0,3
+3071,2,2,3,18,0,172
+3072,2,2,3,18,0,147
+3073,3,2,5,214,0,1456
+3074,2,2,3,214,0,885
+3083,1,0,1,0,0,2
+3084,2,2,3,214,0,867
+3085,2,2,3,214,0,885
+3086,4,2,7,214,0,1780
+3087,2,2,3,214,0,883
+3096,3,2,5,60,0,674
+3097,2,2,3,214,0,888
+3098,2,2,3,214,0,870
+3107,3,2,5,60,0,692
+3108,2,2,3,214,0,879
+3109,2,2,3,214,0,889
+3118,3,2,5,60,0,678
+3119,2,2,3,214,0,879
+3120,2,2,3,214,0,891
+3129,3,2,5,60,0,679
+3130,2,2,3,214,0,887
+3131,2,2,3,214,0,893
+3159,1,0,1,0,0,2
+3160,2,2,3,214,0,144
+3161,2,2,3,214,0,139
+3196,1,0,1,0,0,2
+3197,1,0,1,0,0,2
+3198,2,2,3,214,0,142
+3199,2,2,3,214,0,142
+3242,1,0,1,0,0,2
+3243,2,2,3,214,0,144
+3244,2,2,3,214,0,142
+3258,2,2,3,60,,17
+3265,2,2,3,60,,9
+3293,1,0,1,0,0,4
+3294,2,2,3,214,0,153
+3295,2,2,3,214,0,158
+3309,2,2,3,60,,6
+3316,2,2,3,60,,6
+3504,1,0,1,0,0,3
+3505,1,0,1,0,0,2
+3506,2,2,3,217,22,9895
+3507,2,2,3,217,22,9453
+3630,1,0,1,0,0,2
+3631,2,2,3,214,0,1006
+3632,2,2,3,214,0,893
+3640,2,2,3,214,0,873
+3641,1,0,1,0,0,2
+3642,1,0,1,0,0,1
+3643,1,0,1,0,0,1
+3652,2,2,3,214,0,909
+3653,1,0,1,0,0,2
+3654,1,0,1,0,0,2
+3655,1,0,1,0,0,2
+3663,2,2,3,214,0,880
+3664,1,0,1,0,0,2
+3665,1,0,1,0,0,1
+3666,1,0,1,0,0,2
+3676,2,2,3,214,0,891
+3677,1,0,1,0,0,2
+3678,1,0,1,0,0,2
+3679,1,0,1,0,0,2
+3680,1,0,1,0,0,1
+3681,2,2,3,214,0,147
+3682,2,2,3,214,0,148
+3691,2,2,3,214,0,866
+3692,1,0,1,0,0,2
+3693,1,0,1,0,0,2
+3694,1,0,1,0,0,1
+3702,3,2,4,214,0,903
+3703,2,2,3,214,0,887
+3711,3,2,4,214,0,932
+3712,2,2,3,214,0,890
+3740,1,0,1,0,0,2
+3741,1,0,1,0,0,1
+3742,2,2,3,214,0,149
+3743,2,2,3,214,0,151
+3786,1,0,1,0,0,2
+3787,1,0,1,0,0,1
+3788,1,0,1,0,0,1
+3789,2,2,3,214,0,145
+3790,2,2,3,214,0,151
+3828,1,0,1,0,0,3
+3843,1,0,1,0,0,2
+3844,2,2,3,214,0,166
+3845,2,2,3,214,0,148
+3853,1,0,1,0,0,4
+3867,1,0,1,0,0,3
+3882,1,0,1,0,0,3
+3883,2,2,3,214,0,149
+3884,2,2,3,214,0,147
+3892,1,0,1,0,0,2
+3920,1,0,1,0,0,2
+3921,1,0,1,0,0,1
+3922,2,2,3,214,0,147
+3923,2,2,3,214,0,146
+3966,1,0,1,0,0,2
+3967,1,0,1,0,0,1
+3968,2,2,3,214,0,150
+3969,2,2,3,214,0,149
+4012,1,0,1,0,0,2
+4013,1,0,1,0,0,2
+4014,2,2,3,214,0,156
+4015,2,2,3,214,0,141
+4038,2,2,3,214,0,854
+4039,1,0,1,0,0,2
+4040,1,0,1,0,0,1
+4041,1,0,1,0,0,2
+4050,2,2,3,214,0,870
+4051,1,0,1,0,0,2
+4052,1,0,1,0,0,1
+4053,1,0,1,0,0,2
+4061,2,2,3,214,0,901
+4062,1,0,1,0,0,2
+4063,1,0,1,0,0,2
+4064,1,0,1,0,0,1
+4074,2,2,3,214,0,898
+4075,1,0,1,0,0,2
+4076,1,0,1,0,0,2
+4077,1,0,1,0,0,1
+4078,1,0,1,0,0,1
+4079,2,2,3,214,0,141
+4080,2,2,3,214,0,139
+4089,2,2,3,214,0,872
+4090,1,0,1,0,0,2
+4091,1,0,1,0,0,2
+4092,1,0,1,0,0,1
+4120,1,0,1,0,0,1
+4121,1,0,1,0,0,1
+4122,2,2,3,214,0,116
+4123,2,2,3,214,0,145
+4166,1,0,1,0,0,3
+4167,1,0,1,0,0,2
+4168,2,2,3,214,0,140
+4169,2,2,3,214,0,138
+4192,2,2,3,214,0,893
+4193,1,0,1,0,0,1
+4194,1,0,1,0,0,2
+4195,1,0,1,0,0,2
+4204,2,2,3,214,0,891
+4205,1,0,1,0,0,2
+4206,1,0,1,0,0,1
+4207,1,0,1,0,0,2
+4215,2,2,3,214,0,893
+4216,1,0,1,0,0,1
+4217,1,0,1,0,0,1
+4218,1,0,1,0,0,1
+4228,2,2,3,214,0,889
+4229,1,0,1,0,0,2
+4230,1,0,1,0,0,2
+4231,1,0,1,0,0,1
+4232,1,0,1,0,0,2
+4233,2,2,3,214,0,140
+4234,2,2,3,214,0,138
+4243,2,2,3,214,0,869
+4244,1,0,1,0,0,2
+4245,1,0,1,0,0,2
+4246,1,0,1,0,0,2
+4260,1,0,1,0,0,2
+4275,1,0,1,0,0,1
+4276,2,2,3,214,0,118
+4277,2,2,3,214,0,148
+4285,1,0,1,0,0,2
+4313,1,0,1,0,0,2
+4314,1,0,1,0,0,1
+4315,2,2,3,214,0,142
+4316,2,2,3,214,0,139
+4359,1,0,1,0,0,3
+4360,1,0,1,0,0,2
+4361,1,0,1,0,0,2
+4362,1,0,1,0,0,1
+4363,1,0,1,0,0,3
+4364,1,0,1,0,0,2
+4365,1,0,1,0,0,2
+4366,1,0,1,0,0,3
+4367,2,2,3,214,0,150
+4368,2,2,3,214,0,149
+4466,1,0,1,0,0,3
+4481,1,0,1,0,0,2
+4482,2,2,3,214,0,150
+4483,2,2,3,214,0,148
+4491,1,0,1,0,0,2
+4505,1,0,1,0,0,2
+4520,1,0,1,0,0,3
+4521,2,2,3,214,0,148
+4522,2,2,3,214,0,140
+4530,1,0,1,0,0,2
+4558,1,0,1,0,0,2
+4559,1,0,1,0,0,2
+4560,1,0,1,0,0,2
+4561,1,0,1,0,0,1
+4562,1,0,1,0,0,2
+4563,1,0,1,0,0,3
+4564,1,0,1,0,0,3
+4565,1,0,1,0,0,2
+4566,2,2,3,214,0,148
+4567,2,2,3,214,0,145
+4665,1,0,1,0,0,3
+4680,1,0,1,0,0,2
+4681,2,2,3,214,0,140
+4682,2,2,3,214,0,139
+4690,1,0,1,0,0,2
+4704,1,0,1,0,0,2
+4719,1,0,1,0,0,3
+4720,2,2,3,214,0,139
+4721,2,2,3,214,0,139
+4729,1,0,1,0,0,2
+4737,2,2,3,214,0,921
+4738,1,0,1,0,0,2
+4739,1,0,1,0,0,1
+4740,1,0,1,0,0,1
+4749,2,2,3,214,0,864
+4750,1,0,1,0,0,2
+4751,1,0,1,0,0,2
+4752,1,0,1,0,0,2
+4760,2,2,3,214,0,890
+4761,1,0,1,0,0,3
+4762,1,0,1,0,0,2
+4763,1,0,1,0,0,1
+4773,1,0,1,0,0,1
+4774,1,0,1,0,0,1
+4775,1,0,1,0,0,2
+4776,1,0,1,0,0,2
+4777,1,0,1,0,0,7
+4778,1,0,1,0,0,2
+4779,1,0,1,0,0,2
+4780,1,0,1,0,0,2
+4781,1,0,1,0,0,2
+4782,2,2,3,214,0,876
+4783,1,0,1,0,0,1
+4784,1,0,1,0,0,1
+4785,1,0,1,0,0,1
+4786,1,0,1,0,0,2
+4787,1,0,1,0,0,1
+4788,1,0,1,0,0,1
+4789,2,2,3,214,0,145
+4790,2,2,3,214,0,143
+4799,2,2,3,214,0,904
+4800,1,0,1,0,0,2
+4801,1,0,1,0,0,2
+4802,1,0,1,0,0,2
+4812,2,2,3,214,0,899
+4813,1,0,1,0,0,2
+4814,1,0,1,0,0,2
+4815,1,0,1,0,0,1
+4826,2,2,3,214,0,870
+4827,1,0,1,0,0,1
+4828,1,0,1,0,0,1
+4829,1,0,1,0,0,1
+4841,2,2,3,214,0,904
+4842,1,0,1,0,0,2
+4843,1,0,1,0,0,1
+4844,1,0,1,0,0,2
+4857,2,2,3,214,0,896
+4858,1,0,1,0,0,1
+4859,1,0,1,0,0,1
+4860,1,0,1,0,0,1
+4874,2,2,3,214,0,904
+4875,1,0,1,0,0,2
+4876,1,0,1,0,0,2
+4877,1,0,1,0,0,1
+4892,2,2,3,214,0,889
+4893,1,0,1,0,0,2
+4894,1,0,1,0,0,2
+4895,1,0,1,0,0,2
+4911,2,2,3,214,0,896
+4912,1,0,1,0,0,2
+4913,1,0,1,0,0,2
+4914,1,0,1,0,0,1
+4931,2,2,3,214,0,882
+4932,1,0,1,0,0,2
+4933,1,0,1,0,0,2
+4934,1,0,1,0,0,2
+4952,2,2,3,214,0,906
+4953,1,0,1,0,0,3
+4954,1,0,1,0,0,1
+4955,1,0,1,0,0,2
+4974,2,2,3,214,0,896
+4975,1,0,1,0,0,2
+4976,1,0,1,0,0,2
+4977,1,0,1,0,0,2
+4997,2,2,3,214,0,903
+4998,1,0,1,0,0,2
+4999,1,0,1,0,0,1
+5000,1,0,1,0,0,2
+5014,1,0,1,0,0,2
+5029,1,0,1,0,0,2
+5030,2,2,3,214,0,141
+5031,2,2,3,214,0,142
+5039,1,0,1,0,0,2
+5053,1,0,1,0,0,6
+5068,1,0,1,0,0,3
+5069,2,2,3,214,0,148
+5070,2,2,3,214,0,147
+5078,1,0,1,0,0,4
+5092,1,0,1,0,0,3
+5107,1,0,1,0,0,2
+5108,2,2,3,214,0,147
+5109,2,2,3,214,0,140
+5117,1,0,1,0,0,2
+5131,1,0,1,0,0,2
+5146,1,0,1,0,0,2
+5147,2,2,3,214,0,148
+5148,2,2,3,214,0,139
+5156,1,0,1,0,0,2
+5184,1,0,1,0,0,2
+5185,1,0,1,0,0,1
+5186,1,0,1,0,0,2
+5187,1,0,1,0,0,2
+5188,1,0,1,0,0,2
+5189,1,0,1,0,0,3
+5190,1,0,1,0,0,3
+5191,2,2,3,214,0,146
+5192,2,2,3,214,0,149
+5271,2,2,3,214,0,887
+5272,1,0,1,0,0,2
+5273,1,0,1,0,0,2
+5274,1,0,1,0,0,3
+5275,2,2,3,214,0,894
+5276,1,0,1,0,0,2
+5277,1,0,1,0,0,1
+5278,1,0,1,0,0,2
+5288,2,2,3,214,0,884
+5289,1,0,1,0,0,2
+5290,1,0,1,0,0,2
+5291,1,0,1,0,0,1
+5292,2,2,3,214,0,911
+5293,1,0,1,0,0,2
+5294,1,0,1,0,0,2
+5295,1,0,1,0,0,1
+5304,2,2,3,214,0,898
+5305,1,0,1,0,0,2
+5306,1,0,1,0,0,2
+5307,1,0,1,0,0,2
+5308,2,2,3,214,0,896
+5309,1,0,1,0,0,2
+5310,1,0,1,0,0,2
+5311,1,0,1,0,0,1
+5322,2,2,3,214,0,906
+5323,1,0,1,0,0,1
+5324,1,0,1,0,0,1
+5325,1,0,1,0,0,1
+5326,1,0,1,0,0,1
+5327,2,2,3,214,0,893
+5328,1,0,1,0,0,2
+5329,1,0,1,0,0,1
+5330,1,0,1,0,0,2
+5331,1,0,1,0,0,2
+5332,1,0,1,0,0,1
+5333,1,0,1,0,0,2
+5334,1,0,1,0,0,2
+5335,2,2,3,214,0,159
+5336,2,2,3,214,0,154
+5346,2,2,3,214,0,860
+5347,1,0,1,0,0,2
+5348,1,0,1,0,0,2
+5349,1,0,1,0,0,1
+5350,2,2,3,214,0,894
+5351,1,0,1,0,0,2
+5352,1,0,1,0,0,2
+5353,1,0,1,0,0,1
+5364,2,2,3,214,0,930
+5365,1,0,1,0,0,1
+5366,1,0,1,0,0,1
+5367,1,0,1,0,0,1
+5368,2,2,3,214,0,901
+5369,1,0,1,0,0,2
+5370,1,0,1,0,0,2
+5371,1,0,1,0,0,1
+5383,2,2,3,214,0,898
+5384,1,0,1,0,0,1
+5385,1,0,1,0,0,1
+5386,1,0,1,0,0,1
+5387,2,2,3,214,0,904
+5388,1,0,1,0,0,2
+5389,1,0,1,0,0,2
+5390,1,0,1,0,0,1
+5403,2,2,3,214,0,908
+5404,1,0,1,0,0,2
+5405,1,0,1,0,0,1
+5406,1,0,1,0,0,2
+5407,2,2,3,214,0,896
+5408,1,0,1,0,0,2
+5409,1,0,1,0,0,2
+5410,1,0,1,0,0,2
+5424,2,2,3,214,0,929
+5425,1,0,1,0,0,2
+5426,1,0,1,0,0,2
+5427,1,0,1,0,0,2
+5428,2,2,3,214,0,902
+5429,1,0,1,0,0,2
+5430,1,0,1,0,0,2
+5431,1,0,1,0,0,1
+5438,2,2,3,214,0,156
+5439,2,2,3,214,0,155
+5447,2,2,3,214,0,154
+5448,2,2,3,214,0,155
+5457,2,2,3,214,0,154
+5458,2,2,3,214,0,153
+5466,2,2,3,214,0,153
+5467,2,2,3,214,0,153
+5475,2,2,3,214,0,151
+5476,2,2,3,214,0,152
+5485,3,3,6,214,0,907
+5486,2,2,3,214,0,890
+5493,2,2,3,214,0,155
+5494,2,2,3,214,0,154
+5503,2,2,3,214,0,153
+5504,1,0,1,0,0,2
+5505,2,2,3,214,0,156
+5506,2,2,3,214,0,155
+5514,2,2,3,214,0,155
+5515,2,2,3,214,0,151
+5525,2,2,3,214,0,151
+5526,1,0,1,0,0,2
+5527,2,2,3,214,0,149
+5528,2,2,3,214,0,145
+5537,2,2,3,214,0,144
+5538,2,2,3,214,0,144
+5546,2,2,3,214,0,145
+5547,2,2,3,214,0,144
+5557,2,2,3,214,0,145
+5558,1,0,1,0,0,6
+5559,2,2,3,214,0,150
+5560,2,2,3,214,0,144
+5569,2,2,3,214,0,143
+5570,2,2,3,214,0,142
+5581,1,0,1,0,0,2
+5582,2,2,3,60,0,67
+5583,2,2,3,60,0,66
+5584,2,2,3,214,0,146
+5585,2,2,3,214,0,146
+5586,2,2,3,214,0,147
+5587,2,2,3,214,0,143
+5596,2,2,3,214,0,144
+5597,2,2,3,214,0,143
+5606,2,2,3,214,0,144
+5607,2,2,3,214,0,144
+5617,2,2,3,214,0,144
+5618,2,2,3,214,0,143
+5628,2,2,3,214,0,146
+5629,2,2,3,214,0,144
+5639,2,2,3,214,0,885
+5640,2,2,3,214,0,893
+5650,2,2,3,214,0,855
+5651,2,2,3,214,0,881
+5661,3,3,6,214,0,913
+5662,2,2,3,214,0,881
+5672,3,3,6,214,0,913
+5673,2,2,3,214,0,883
+5683,3,3,6,214,0,911
+5684,2,2,3,214,0,886
+5694,3,3,6,214,0,929
+5695,2,2,3,214,0,876
+5704,3,2,5,214,0,905
+5705,2,2,3,214,0,871
+5714,3,2,5,214,0,910
+5715,2,2,3,214,0,884
+5724,3,2,5,214,0,900
+5725,2,2,3,214,0,880
+5733,2,2,3,214,0,889
+5734,2,2,3,214,0,877
+5742,2,2,3,214,0,892
+5743,2,2,3,214,0,876
+5751,3,3,6,214,,73
+5752,2,2,3,214,0,866
+5760,3,3,6,214,,50
+5761,2,2,3,214,0,898
+5769,3,3,6,214,,66
+5770,2,2,3,214,0,879
+5778,3,3,6,214,,50
+5779,2,2,3,214,0,893
+5787,3,2,5,214,,48
+5788,2,2,3,214,0,882
+5796,3,2,5,214,,40
+5797,2,2,3,214,0,895
+5805,3,2,5,214,,47
+5806,2,2,3,214,0,879
+5814,3,2,5,214,,90
+5815,2,2,3,214,0,876
+5823,3,2,5,214,,94
+5824,2,2,3,214,0,880
+5832,3,2,5,214,,89
+5833,2,2,3,214,0,882
+5842,1,0,1,0,0,2
+5843,2,4,5,60,,78
+5844,5,2,9,214,0,2347
+5845,2,2,3,214,0,873
+5853,1,0,1,0,0,2
+5854,3,2,5,214,0,960
+5855,2,2,3,214,0,889
+5856,3,2,5,214,0,977
+5857,2,2,3,214,0,898
+5864,2,2,3,214,0,907
+5865,2,2,3,214,0,891
+5874,1,0,1,0,0,2
+5875,2,4,5,60,,78
+5876,5,2,9,214,0,2356
+5877,2,2,3,214,0,883
+5885,3,2,5,214,0,1340
+5886,2,2,3,214,0,874
+5893,2,2,3,214,0,893
+5894,2,2,3,214,0,886
+5902,3,2,4,214,0,945
+5903,2,2,3,214,0,893
+5912,3,2,5,214,0,978
+5913,2,2,3,214,0,908
+5920,2,2,3,214,0,894
+5921,2,2,3,214,0,881
+5929,3,2,4,214,0,949
+5930,2,2,3,214,0,892
+5939,3,2,5,214,0,967
+5940,2,2,3,214,0,888
+5947,2,2,3,214,0,900
+5948,2,2,3,214,0,887
+5956,3,2,4,214,0,958
+5957,2,2,3,214,0,897
+5966,3,2,5,214,0,989
+5967,2,2,3,214,0,905
+5975,3,2,4,214,0,4241
+5976,2,2,3,214,0,914
+5984,3,2,4,214,0,903
+5985,2,2,3,214,0,903
+5993,3,2,4,214,0,906
+5994,2,2,3,214,0,892
+6002,3,2,4,214,0,899
+6003,2,2,3,214,0,884
+6011,3,2,4,214,0,910
+6012,2,2,3,214,0,907
+6020,3,2,4,214,0,920
+6021,2,2,3,214,0,893
+6029,3,2,4,214,0,905
+6030,2,2,3,214,0,885
+6038,3,2,4,214,0,933
+6039,2,2,3,214,0,905
+6047,3,2,4,214,0,916
+6048,2,2,3,214,0,890
+6065,3,3,6,216,0,180
+6066,2,2,3,216,0,140
+6083,3,3,6,216,0,177
+6084,2,2,3,216,0,138
+6104,4,2,7,216,0,185
+6105,2,2,3,216,0,137
+6120,2,1,2,216,0,42
+6121,2,2,3,216,0,136
+6122,2,1,2,59,0,27
+6123,1,0,1,1,0,2
+6124,2,2,3,61,0,62
+6125,2,2,3,61,0,71
+6153,1,0,1,0,0,3
+6154,2,2,3,214,0,911
+6155,2,2,3,214,0,909
+6164,2,2,3,214,0,911
+6165,1,0,1,0,0,2
+6166,1,0,1,0,0,2
+6167,1,0,1,0,0,2
+6168,2,2,3,214,0,880
+6169,1,0,1,0,0,1
+6170,1,0,1,0,0,1
+6171,1,0,1,0,0,1
+6181,2,2,3,214,0,949
+6182,1,0,1,0,0,2
+6183,1,0,1,0,0,2
+6184,1,0,1,0,0,2
+6185,2,2,3,214,0,909
+6186,1,0,1,0,0,2
+6187,1,0,1,0,0,1
+6188,1,0,1,0,0,1
+6197,2,2,3,214,0,906
+6198,1,0,1,0,0,2
+6199,1,0,1,0,0,1
+6200,1,0,1,0,0,2
+6201,2,2,3,214,0,918
+6202,1,0,1,0,0,5
+6203,1,0,1,0,0,2
+6204,1,0,1,0,0,1
+6215,1,0,1,0,0,1
+6216,1,0,1,0,0,1
+6217,1,0,1,0,0,1
+6218,1,0,1,0,0,1
+6219,1,0,1,0,0,2
+6220,2,2,3,214,0,958
+6221,1,0,1,0,0,2
+6222,1,0,1,0,0,2
+6223,1,0,1,0,0,1
+6224,1,0,1,0,0,2
+6225,2,2,3,214,0,892
+6226,1,0,1,0,0,2
+6227,1,0,1,0,0,2
+6228,1,0,1,0,0,2
+6229,1,0,1,0,0,1
+6230,2,2,3,214,0,148
+6231,2,2,3,214,0,161
+6241,2,2,3,214,0,918
+6242,1,0,1,0,0,2
+6243,1,0,1,0,0,4
+6244,1,0,1,0,0,1
+6245,2,2,3,214,0,948
+6246,1,0,1,0,0,2
+6247,1,0,1,0,0,2
+6248,1,0,1,0,0,1
+6259,2,2,3,214,0,892
+6260,1,0,1,0,0,1
+6261,1,0,1,0,0,1
+6262,1,0,1,0,0,1
+6263,2,2,3,214,0,902
+6264,1,0,1,0,0,2
+6265,1,0,1,0,0,1
+6266,1,0,1,0,0,2
+6278,2,2,3,214,0,888
+6279,1,0,1,0,0,1
+6280,1,0,1,0,0,1
+6281,1,0,1,0,0,1
+6282,2,2,3,214,0,905
+6283,1,0,1,0,0,2
+6284,1,0,1,0,0,2
+6285,1,0,1,0,0,2
+6298,2,2,3,214,0,912
+6299,1,0,1,0,0,2
+6300,1,0,1,0,0,1
+6301,1,0,1,0,0,1
+6302,2,2,3,214,0,879
+6303,1,0,1,0,0,2
+6304,1,0,1,0,0,2
+6305,1,0,1,0,0,2
+6319,2,2,3,214,0,884
+6320,1,0,1,0,0,2
+6321,1,0,1,0,0,2
+6322,1,0,1,0,0,1
+6323,2,2,3,214,0,907
+6324,1,0,1,0,0,2
+6325,1,0,1,0,0,1
+6326,1,0,1,0,0,2
+6341,2,2,3,214,0,887
+6342,1,0,1,0,0,1
+6343,1,0,1,0,0,1
+6344,1,0,1,0,0,1
+6345,2,2,3,214,0,906
+6346,1,0,1,0,0,2
+6347,1,0,1,0,0,1
+6348,1,0,1,0,0,2
+6364,2,2,3,214,0,898
+6365,1,0,1,0,0,2
+6366,1,0,1,0,0,1
+6367,1,0,1,0,0,1
+6368,2,2,3,214,0,905
+6369,1,0,1,0,0,3
+6370,1,0,1,0,0,2
+6371,1,0,1,0,0,1
+6399,1,0,1,0,0,6
+6400,2,2,3,214,0,157
+6401,2,2,3,214,0,147
+6415,2,2,3,60,0,360
+6422,2,2,3,60,0,364
+6429,2,2,3,60,0,362
+6437,2,2,3,214,0,866
+6438,2,2,3,214,0,875
+6446,2,2,3,214,0,906
+6447,2,2,3,214,0,906
+6477,3,2,5,59,42,2371
+6478,2,1,2,214,,18815
+6479,2,2,3,214,22,9804
+6480,2,1,2,58,22,9556
+6481,1,0,1,0,0,2
+6482,2,1,2,214,,18339
+6483,2,2,3,214,22,9956
+6484,2,1,2,58,22,9521
+6485,1,0,1,0,0,2
+6486,2,1,2,214,,18480
+6487,2,1,2,214,,19728
+6488,2,1,2,58,22,9731
+6489,5,2,9,59,160,285285
+6490,2,1,2,214,,20381
+6491,2,3,4,214,,18938
+6492,2,1,2,58,22,9599
+6493,1,0,1,0,0,3
+6494,1,0,1,0,0,1
+6495,2,2,3,60,22,9645
+6496,2,1,2,214,,18670
+6497,2,3,4,214,,19130
+6498,2,1,2,58,22,9800
+6499,1,0,1,0,0,2
+6500,1,0,1,0,0,1
+6501,2,2,3,60,22,9685
+6502,4,2,7,59,116,214855
+6503,2,1,2,214,,19675
+6504,3,3,6,214,,19838
+6505,2,1,2,58,22,9752
+6506,2,1,2,20,0,406
+6507,2,1,2,20,0,407
+6508,2,2,3,60,22,9391
+6509,2,1,2,214,,18989
+6510,3,3,5,214,,19759
+6511,2,1,2,58,22,9752
+6512,1,0,1,0,0,2
+6513,2,1,2,20,0,415
+6514,2,2,3,60,22,9664
+6515,4,2,7,59,116,214008
+6516,2,1,2,214,,19776
+6517,3,3,5,214,,19598
+6518,2,1,2,58,22,9870
+6519,2,1,2,20,0,389
+6520,1,0,1,0,0,2
+6521,2,2,3,60,22,9802
+6522,2,1,2,214,,18773
+6523,2,3,4,214,,18948
+6524,2,1,2,58,22,9989
+6525,1,0,1,0,0,2
+6526,1,0,1,0,0,2
+6527,2,2,3,60,22,9866
+6528,4,2,7,59,116,209686
+6529,3,2,5,59,42,2324
+6530,2,1,2,214,,20139
+6531,3,2,4,214,22,10672
+6532,2,1,2,58,22,9987
+6533,2,1,2,20,0,436
+6534,2,2,3,60,22,9526
+6535,2,1,2,214,,19068
+6536,3,3,5,214,,19535
+6537,2,1,2,58,22,9666
+6538,2,1,2,20,0,420
+6539,1,0,1,0,0,2
+6540,2,2,3,60,22,9789
+6541,4,2,7,59,116,212071
+6542,4,2,7,59,64,49726
+6543,4,2,7,59,64,47714
+6544,4,2,7,59,64,47637
+6545,4,2,7,59,64,47797
+6546,4,2,7,59,64,47845
+6547,3,2,5,59,42,2385
+6548,4,2,7,59,116,200283
+6549,4,2,7,59,50,34605
+6550,4,2,7,59,50,34939
+6551,4,2,7,59,50,35196
+6552,4,2,7,59,50,35439
+6553,3,2,5,59,42,2491
+6554,2,1,2,214,,19667
+6555,2,3,4,214,,19317
+6556,2,1,2,58,22,9987
+6557,1,0,1,0,0,3
+6558,1,0,1,0,0,1
+6559,2,2,3,60,22,9794
+6560,4,2,6,59,65,48335
+6561,2,1,2,214,,19587
+6562,2,3,4,214,,19526
+6563,2,1,2,58,22,10047
+6564,1,0,1,0,0,3
+6565,1,0,1,0,0,1
+6566,2,2,3,60,22,10043
+6567,4,2,6,59,65,49109
+6568,2,1,2,214,,19922
+6569,2,3,4,214,,19678
+6570,2,1,2,58,22,9999
+6571,1,0,1,0,0,2
+6572,1,0,1,0,0,2
+6573,2,2,3,60,22,9827
+6574,4,2,6,59,65,48287
+6575,4,2,7,59,52,35566
+6576,4,2,7,59,52,36182
+6577,4,2,7,59,52,35635
+6578,3,2,5,59,42,2502
+6579,2,1,2,214,0,821
+6580,2,1,2,214,0,835
+6581,2,1,2,58,0,540
+6582,2,1,2,214,0,837
+6583,2,1,2,214,0,826
+6584,2,1,2,58,0,555
+6585,3,2,5,59,42,2319
+6586,2,1,2,214,,19811
+6587,2,3,4,214,,19740
+6588,2,1,2,58,22,9933
+6589,1,0,1,0,0,3
+6590,1,0,1,0,0,1
+6591,2,1,2,214,,19166
+6592,2,2,3,214,22,10130
+6593,2,1,2,58,22,9890
+6594,1,0,1,0,0,2
+6595,4,2,7,59,50,35326
+6596,4,2,7,59,64,48725
+6597,5,2,11,59,159,293322
+6598,6,2,12,59,159,294245
+6599,2,1,2,214,,20766
+6600,2,3,4,214,,19344
+6601,2,1,2,58,22,9939
+6602,1,0,1,0,0,2
+6603,1,0,1,0,0,2
+6604,3,2,5,59,72,148220
+6605,5,2,11,59,159,309615
+6606,2,1,2,214,,21546
+6607,2,3,4,214,,19977
+6608,2,1,2,58,22,10060
+6609,1,0,1,0,0,3
+6610,1,0,1,16,,10
+6611,2,1,2,214,,19291
+6612,2,3,4,214,,19973
+6613,2,1,2,58,22,10002
+6614,1,0,1,0,0,2
+6615,1,0,1,16,,10
+6616,3,2,5,60,44,12284
+6617,3,2,5,59,72,145047
+6618,2,1,2,214,,20897
+6619,2,3,4,214,,20364
+6620,2,1,2,58,22,10124
+6621,1,0,1,0,0,2
+6622,1,0,1,16,,10
+6623,2,1,2,214,,19309
+6624,2,3,4,214,,19685
+6625,2,1,2,58,22,10099
+6626,1,0,1,0,0,2
+6627,1,0,1,16,,11
+6628,3,2,5,60,44,12406
+6629,3,2,5,59,72,142101
+6630,3,2,5,59,93,105514
+6631,4,2,7,59,116,203230
+6632,2,2,3,214,0,2555
+6633,2,2,3,214,0,930
Index: doc/theses/aaron_moss_PhD/phd/evaluation/per_prob/searchsort-per-prob.csv
===================================================================
--- doc/theses/aaron_moss_PhD/phd/evaluation/per_prob/searchsort-per-prob.csv	(revision 92d41a4af1542b1fcfd3bacde48933e4c8519366)
+++ doc/theses/aaron_moss_PhD/phd/evaluation/per_prob/searchsort-per-prob.csv	(revision 92d41a4af1542b1fcfd3bacde48933e4c8519366)
@@ -0,0 +1,893 @@
+2708,2,2,3,205,0,560
+2719,3,2,5,205,,87
+2734,2,1,2,206,,15
+2735,2,2,3,206,0,68
+2736,2,1,2,58,0,17
+2737,1,0,1,1,0,2
+2738,2,2,3,20,0,37
+2739,2,2,3,206,0,60
+2751,3,2,5,205,,97
+2766,2,1,2,206,,18
+2767,2,2,3,206,0,82
+2768,2,1,2,58,0,17
+2769,1,0,1,1,0,2
+2770,2,2,3,20,0,46
+2771,2,2,3,206,0,84
+2780,3,2,5,205,0,708
+2781,2,2,3,205,0,627
+2790,3,2,5,205,0,688
+2791,2,2,3,205,0,634
+2800,3,2,5,205,0,679
+2801,2,2,3,205,0,643
+2810,3,2,5,205,0,709
+2811,2,2,3,205,0,653
+2820,3,2,5,205,0,684
+2821,2,2,3,205,0,640
+2830,3,2,5,205,0,698
+2831,2,2,3,205,0,633
+2841,1,0,1,0,0,2
+2842,2,2,3,205,0,687
+2843,2,2,3,205,0,647
+2844,1,0,1,0,0,2
+2845,4,2,7,205,0,1181
+2846,2,2,3,205,0,636
+2847,2,2,3,205,0,638
+2848,1,0,1,0,0,2
+2849,1,0,1,0,0,2
+2850,2,2,3,10,0,99
+2851,1,0,1,0,0,2
+2852,2,2,3,18,0,146
+2853,2,2,3,18,0,146
+2854,3,2,5,205,0,881
+2855,2,2,3,205,0,620
+2876,1,0,1,0,0,2
+2877,2,2,3,208,0,87
+2878,2,2,3,208,0,61
+2879,2,1,2,208,0,18
+2880,2,2,3,208,0,88
+2881,2,1,2,58,0,17
+2882,1,0,1,0,0,2
+2883,1,0,1,0,0,2
+2884,2,2,3,10,0,101
+2885,1,0,1,0,0,2
+2886,3,2,5,59,0,46
+2887,3,2,5,59,0,45
+2888,3,2,5,208,0,75
+2889,2,2,3,208,0,61
+2899,1,0,1,0,0,2
+2900,2,2,3,205,0,654
+2901,2,2,3,205,0,629
+2902,1,0,1,0,0,2
+2903,4,2,7,205,0,1080
+2904,2,2,3,205,0,631
+2905,2,2,3,205,0,656
+2906,1,0,1,0,0,2
+2907,1,0,1,0,0,1
+2908,2,2,3,10,0,105
+2909,1,0,1,0,0,2
+2910,2,2,3,18,0,154
+2911,2,2,3,18,0,149
+2912,3,2,5,205,0,929
+2913,2,2,3,205,0,660
+2922,1,0,1,0,0,2
+2923,2,2,3,205,0,645
+2924,2,2,3,205,0,662
+2925,4,2,7,205,0,1186
+2926,2,2,3,205,0,669
+2935,3,2,5,58,0,655
+2936,2,2,3,205,0,684
+2937,2,2,3,205,0,657
+2946,3,2,5,58,0,651
+2947,2,2,3,205,0,666
+2948,2,2,3,205,0,665
+2957,3,2,5,58,0,649
+2958,2,2,3,205,0,676
+2959,2,2,3,205,0,657
+2968,3,2,5,58,0,652
+2969,2,2,3,205,0,652
+2970,2,2,3,205,0,673
+2998,1,0,1,0,0,6
+2999,2,2,3,205,0,67
+3000,2,2,3,205,0,66
+3035,1,0,1,0,0,2
+3036,1,0,1,0,0,2
+3037,2,2,3,205,0,77
+3038,2,2,3,205,0,61
+3081,1,0,1,0,0,2
+3082,2,2,3,205,0,63
+3083,2,2,3,205,0,61
+3097,2,2,3,58,,3
+3104,2,2,3,58,,2
+3132,1,0,1,0,0,3
+3133,2,2,3,205,0,67
+3134,2,2,3,205,0,60
+3148,2,2,3,58,,2
+3155,2,2,3,58,,2
+3183,1,0,1,0,0,2
+3184,2,2,3,205,0,663
+3185,2,2,3,205,0,664
+3194,2,2,3,205,0,666
+3195,1,0,1,0,0,2
+3196,1,0,1,0,0,2
+3197,1,0,1,0,0,1
+3198,2,2,3,205,0,666
+3199,1,0,1,0,0,2
+3200,1,0,1,0,0,2
+3201,1,0,1,0,0,2
+3211,2,2,3,205,0,663
+3212,1,0,1,0,0,3
+3213,1,0,1,0,0,2
+3214,1,0,1,0,0,2
+3215,2,2,3,205,0,679
+3216,1,0,1,0,0,2
+3217,1,0,1,0,0,2
+3218,1,0,1,0,0,2
+3227,2,2,3,205,0,676
+3228,1,0,1,0,0,2
+3229,1,0,1,0,0,2
+3230,1,0,1,0,0,2
+3231,2,2,3,205,0,666
+3232,1,0,1,0,0,3
+3233,1,0,1,0,0,2
+3234,1,0,1,0,0,2
+3245,1,0,1,0,0,2
+3246,1,0,1,0,0,2
+3247,1,0,1,0,0,2
+3248,1,0,1,0,0,2
+3249,1,0,1,0,0,2
+3250,2,2,3,205,0,673
+3251,1,0,1,0,0,2
+3252,1,0,1,0,0,2
+3253,1,0,1,0,0,2
+3254,1,0,1,0,0,2
+3255,2,2,3,205,0,690
+3256,1,0,1,0,0,2
+3257,1,0,1,0,0,2
+3258,1,0,1,0,0,2
+3259,1,0,1,0,0,2
+3260,2,2,3,205,0,63
+3261,2,2,3,205,0,62
+3271,2,2,3,205,0,671
+3272,1,0,1,0,0,2
+3273,1,0,1,0,0,17
+3274,1,0,1,0,0,2
+3275,2,2,3,205,0,667
+3276,1,0,1,0,0,1
+3277,1,0,1,0,0,1
+3278,1,0,1,0,0,2
+3289,2,2,3,205,0,671
+3290,1,0,1,0,0,2
+3291,1,0,1,0,0,2
+3292,1,0,1,0,0,2
+3293,2,2,3,205,0,660
+3294,1,0,1,0,0,5
+3295,1,0,1,0,0,2
+3296,1,0,1,0,0,2
+3308,2,2,3,205,0,662
+3309,1,0,1,0,0,2
+3310,1,0,1,0,0,2
+3311,1,0,1,0,0,2
+3312,2,2,3,205,0,662
+3313,1,0,1,0,0,2
+3314,1,0,1,0,0,2
+3315,1,0,1,0,0,2
+3328,2,2,3,205,0,682
+3329,1,0,1,0,0,2
+3330,1,0,1,0,0,2
+3331,1,0,1,0,0,2
+3332,2,2,3,205,0,649
+3333,1,0,1,0,0,2
+3334,1,0,1,0,0,2
+3335,1,0,1,0,0,2
+3349,2,2,3,205,0,682
+3350,1,0,1,0,0,2
+3351,1,0,1,0,0,2
+3352,1,0,1,0,0,2
+3353,2,2,3,205,0,664
+3354,1,0,1,0,0,2
+3355,1,0,1,0,0,2
+3356,1,0,1,0,0,2
+3371,2,2,3,205,0,667
+3372,1,0,1,0,0,2
+3373,1,0,1,0,0,2
+3374,1,0,1,0,0,2
+3375,2,2,3,205,0,667
+3376,1,0,1,0,0,2
+3377,1,0,1,0,0,2
+3378,1,0,1,0,0,2
+3394,2,2,3,205,0,674
+3395,1,0,1,0,0,2
+3396,1,0,1,0,0,2
+3397,1,0,1,0,0,1
+3398,2,2,3,205,0,664
+3399,1,0,1,0,0,2
+3400,1,0,1,0,0,1
+3401,1,0,1,0,0,1
+3429,1,0,1,0,0,2
+3430,2,2,3,205,0,60
+3431,2,2,3,205,0,63
+3466,1,0,1,0,0,2
+3467,2,2,3,205,0,685
+3468,2,2,3,205,0,653
+3476,2,2,3,205,0,690
+3477,1,0,1,0,0,2
+3478,1,0,1,0,0,2
+3479,1,0,1,0,0,2
+3488,2,2,3,205,0,655
+3489,1,0,1,0,0,2
+3490,1,0,1,0,0,1
+3491,1,0,1,0,0,2
+3499,2,2,3,205,0,681
+3500,1,0,1,0,0,2
+3501,1,0,1,0,0,1
+3502,1,0,1,0,0,2
+3512,2,2,3,205,0,663
+3513,1,0,1,0,0,2
+3514,1,0,1,0,0,2
+3515,1,0,1,0,0,2
+3516,1,0,1,0,0,2
+3517,2,2,3,205,0,59
+3518,2,2,3,205,0,59
+3527,2,2,3,205,0,680
+3528,1,0,1,0,0,1
+3529,1,0,1,0,0,2
+3530,1,0,1,0,0,1
+3538,3,2,4,205,0,721
+3539,2,2,3,205,0,692
+3547,3,2,4,205,0,740
+3548,2,2,3,205,0,663
+3576,1,0,1,0,0,2
+3577,1,0,1,0,0,2
+3578,2,2,3,205,0,62
+3579,2,2,3,205,0,77
+3622,1,0,1,0,0,3
+3623,1,0,1,0,0,2
+3624,1,0,1,0,0,2
+3625,2,2,3,205,0,61
+3626,2,2,3,205,0,60
+3664,1,0,1,0,0,2
+3679,1,0,1,0,0,2
+3680,2,2,3,205,0,59
+3681,2,2,3,205,0,58
+3689,1,0,1,0,0,2
+3703,1,0,1,0,0,2
+3718,1,0,1,0,0,2
+3719,2,2,3,205,0,63
+3720,2,2,3,205,0,58
+3728,1,0,1,0,0,2
+3756,1,0,1,0,0,2
+3757,1,0,1,0,0,2
+3758,2,2,3,205,0,60
+3759,2,2,3,205,0,59
+3802,1,0,1,0,0,2
+3803,1,0,1,0,0,2
+3804,2,2,3,205,0,59
+3805,2,2,3,205,0,57
+3848,1,0,1,0,0,3
+3849,1,0,1,0,0,4
+3850,2,2,3,205,0,59
+3851,2,2,3,205,0,57
+3874,2,2,3,205,0,675
+3875,1,0,1,0,0,2
+3876,1,0,1,0,0,1
+3877,1,0,1,0,0,1
+3886,2,2,3,205,0,674
+3887,1,0,1,0,0,2
+3888,1,0,1,0,0,1
+3889,1,0,1,0,0,1
+3897,2,2,3,205,0,682
+3898,1,0,1,0,0,2
+3899,1,0,1,0,0,1
+3900,1,0,1,0,0,1
+3910,2,2,3,205,0,662
+3911,1,0,1,0,0,1
+3912,1,0,1,0,0,1
+3913,1,0,1,0,0,1
+3914,1,0,1,0,0,2
+3915,2,2,3,205,0,60
+3916,2,2,3,205,0,59
+3925,2,2,3,205,0,687
+3926,1,0,1,0,0,2
+3927,1,0,1,0,0,2
+3928,1,0,1,0,0,2
+3956,1,0,1,0,0,2
+3957,1,0,1,0,0,1
+3958,2,2,3,205,0,65
+3959,2,2,3,205,0,47
+4002,1,0,1,0,0,2
+4003,1,0,1,0,0,2
+4004,2,2,3,205,0,63
+4005,2,2,3,205,0,65
+4028,2,2,3,205,0,666
+4029,1,0,1,0,0,2
+4030,1,0,1,0,0,2
+4031,1,0,1,0,0,1
+4040,2,2,3,205,0,709
+4041,1,0,1,0,0,2
+4042,1,0,1,0,0,2
+4043,1,0,1,0,0,2
+4051,2,2,3,205,0,686
+4052,1,0,1,0,0,2
+4053,1,0,1,0,0,1
+4054,1,0,1,0,0,1
+4064,2,2,3,205,0,685
+4065,1,0,1,0,0,2
+4066,1,0,1,0,0,2
+4067,1,0,1,0,0,2
+4068,1,0,1,0,0,2
+4069,2,2,3,205,0,58
+4070,2,2,3,205,0,48
+4079,2,2,3,205,0,688
+4080,1,0,1,0,0,2
+4081,1,0,1,0,0,2
+4082,1,0,1,0,0,2
+4096,1,0,1,0,0,2
+4111,1,0,1,0,0,2
+4112,2,2,3,205,0,59
+4113,2,2,3,205,0,61
+4121,1,0,1,0,0,2
+4149,1,0,1,0,0,2
+4150,1,0,1,0,0,2
+4151,2,2,3,205,0,73
+4152,2,2,3,205,0,64
+4195,1,0,1,0,0,6
+4196,1,0,1,0,0,2
+4197,1,0,1,0,0,1
+4198,1,0,1,0,0,2
+4199,1,0,1,0,0,2
+4200,1,0,1,0,0,2
+4201,1,0,1,0,0,2
+4202,1,0,1,0,0,2
+4203,2,2,3,205,0,61
+4204,2,2,3,205,0,64
+4302,1,0,1,0,0,2
+4317,1,0,1,0,0,5
+4318,2,2,3,205,0,63
+4319,2,2,3,205,0,61
+4327,1,0,1,0,0,2
+4341,1,0,1,0,0,1
+4356,1,0,1,0,0,2
+4357,2,2,3,205,0,61
+4358,2,2,3,205,0,60
+4366,1,0,1,0,0,3
+4394,1,0,1,0,0,2
+4395,1,0,1,0,0,2
+4396,1,0,1,0,0,2
+4397,1,0,1,0,0,1
+4398,1,0,1,0,0,1
+4399,1,0,1,0,0,4
+4400,1,0,1,0,0,2
+4401,1,0,1,0,0,1
+4402,2,2,3,205,0,65
+4403,2,2,3,205,0,60
+4501,1,0,1,0,0,2
+4516,1,0,1,0,0,7
+4517,2,2,3,205,0,59
+4518,2,2,3,205,0,64
+4526,1,0,1,0,0,3
+4540,1,0,1,0,0,2
+4555,1,0,1,0,0,2
+4556,2,2,3,205,0,61
+4557,2,2,3,205,0,57
+4565,1,0,1,0,0,2
+4573,2,2,3,205,0,662
+4574,1,0,1,0,0,2
+4575,1,0,1,0,0,2
+4576,1,0,1,0,0,1
+4585,2,2,3,205,0,663
+4586,1,0,1,0,0,2
+4587,1,0,1,0,0,1
+4588,1,0,1,0,0,1
+4596,2,2,3,205,0,661
+4597,1,0,1,0,0,2
+4598,1,0,1,0,0,1
+4599,1,0,1,0,0,1
+4609,1,0,1,0,0,2
+4610,1,0,1,0,0,2
+4611,1,0,1,0,0,2
+4612,1,0,1,0,0,2
+4613,1,0,1,0,0,1
+4614,1,0,1,0,0,1
+4615,1,0,1,0,0,2
+4616,1,0,1,0,0,1
+4617,1,0,1,0,0,1
+4618,2,2,3,205,0,666
+4619,1,0,1,0,0,2
+4620,1,0,1,0,0,1
+4621,1,0,1,0,0,1
+4622,1,0,1,0,0,2
+4623,1,0,1,0,0,2
+4624,1,0,1,0,0,2
+4625,2,2,3,205,0,62
+4626,2,2,3,205,0,62
+4635,2,2,3,205,0,673
+4636,1,0,1,0,0,2
+4637,1,0,1,0,0,2
+4638,1,0,1,0,0,2
+4648,2,2,3,205,0,688
+4649,1,0,1,0,0,2
+4650,1,0,1,0,0,2
+4651,1,0,1,0,0,1
+4662,2,2,3,205,0,679
+4663,1,0,1,0,0,2
+4664,1,0,1,0,0,1
+4665,1,0,1,0,0,1
+4677,2,2,3,205,0,680
+4678,1,0,1,0,0,2
+4679,1,0,1,0,0,2
+4680,1,0,1,0,0,2
+4693,2,2,3,205,0,681
+4694,1,0,1,0,0,2
+4695,1,0,1,0,0,2
+4696,1,0,1,0,0,1
+4710,2,2,3,205,0,691
+4711,1,0,1,0,0,2
+4712,1,0,1,0,0,1
+4713,1,0,1,0,0,1
+4728,2,2,3,205,0,702
+4729,1,0,1,0,0,2
+4730,1,0,1,0,0,2
+4731,1,0,1,0,0,2
+4747,2,2,3,205,0,690
+4748,1,0,1,0,0,2
+4749,1,0,1,0,0,1
+4750,1,0,1,0,0,1
+4767,2,2,3,205,0,674
+4768,1,0,1,0,0,1
+4769,1,0,1,0,0,1
+4770,1,0,1,0,0,1
+4788,2,2,3,205,0,671
+4789,1,0,1,0,0,2
+4790,1,0,1,0,0,2
+4791,1,0,1,0,0,1
+4810,2,2,3,205,0,691
+4811,1,0,1,0,0,2
+4812,1,0,1,0,0,2
+4813,1,0,1,0,0,1
+4833,2,2,3,205,0,693
+4834,1,0,1,0,0,2
+4835,1,0,1,0,0,1
+4836,1,0,1,0,0,1
+4850,1,0,1,0,0,2
+4865,1,0,1,0,0,2
+4866,2,2,3,205,0,62
+4867,2,2,3,205,0,63
+4875,1,0,1,0,0,2
+4889,1,0,1,0,0,2
+4904,1,0,1,0,0,2
+4905,2,2,3,205,0,62
+4906,2,2,3,205,0,68
+4914,1,0,1,0,0,2
+4928,1,0,1,0,0,3
+4943,1,0,1,0,0,2
+4944,2,2,3,205,0,57
+4945,2,2,3,205,0,58
+4953,1,0,1,0,0,5
+4967,1,0,1,0,0,2
+4982,1,0,1,0,0,2
+4983,2,2,3,205,0,62
+4984,2,2,3,205,0,61
+4992,1,0,1,0,0,2
+5020,1,0,1,0,0,5
+5021,1,0,1,0,0,2
+5022,1,0,1,0,0,2
+5023,1,0,1,0,0,2
+5024,1,0,1,0,0,1
+5025,1,0,1,0,0,1
+5026,1,0,1,0,0,2
+5027,2,2,3,205,0,59
+5028,2,2,3,205,0,59
+5107,2,2,3,205,0,675
+5108,1,0,1,0,0,1
+5109,1,0,1,0,0,1
+5110,1,0,1,0,0,1
+5111,2,2,3,205,0,668
+5112,1,0,1,0,0,2
+5113,1,0,1,0,0,2
+5114,1,0,1,0,0,2
+5124,2,2,3,205,0,684
+5125,1,0,1,0,0,1
+5126,1,0,1,0,0,2
+5127,1,0,1,0,0,2
+5128,2,2,3,205,0,672
+5129,1,0,1,0,0,2
+5130,1,0,1,0,0,1
+5131,1,0,1,0,0,2
+5140,2,2,3,205,0,694
+5141,1,0,1,0,0,2
+5142,1,0,1,0,0,2
+5143,1,0,1,0,0,2
+5144,2,2,3,205,0,690
+5145,1,0,1,0,0,2
+5146,1,0,1,0,0,2
+5147,1,0,1,0,0,2
+5158,2,2,3,205,0,689
+5159,1,0,1,0,0,2
+5160,1,0,1,0,0,1
+5161,1,0,1,0,0,2
+5162,1,0,1,0,0,2
+5163,2,2,3,205,0,675
+5164,1,0,1,0,0,2
+5165,1,0,1,0,0,2
+5166,1,0,1,0,0,2
+5167,1,0,1,0,0,2
+5168,1,0,1,0,0,2
+5169,1,0,1,0,0,2
+5170,1,0,1,0,0,2
+5171,2,2,3,205,0,69
+5172,2,2,3,205,0,68
+5182,2,2,3,205,0,684
+5183,1,0,1,0,0,2
+5184,1,0,1,0,0,2
+5185,1,0,1,0,0,1
+5186,2,2,3,205,0,688
+5187,1,0,1,0,0,2
+5188,1,0,1,0,0,2
+5189,1,0,1,0,0,2
+5200,2,2,3,205,0,698
+5201,1,0,1,0,0,2
+5202,1,0,1,0,0,2
+5203,1,0,1,0,0,1
+5204,2,2,3,205,0,683
+5205,1,0,1,0,0,2
+5206,1,0,1,0,0,2
+5207,1,0,1,0,0,2
+5219,2,2,3,205,0,696
+5220,1,0,1,0,0,2
+5221,1,0,1,0,0,1
+5222,1,0,1,0,0,1
+5223,2,2,3,205,0,673
+5224,1,0,1,0,0,2
+5225,1,0,1,0,0,2
+5226,1,0,1,0,0,2
+5239,2,2,3,205,0,698
+5240,1,0,1,0,0,2
+5241,1,0,1,0,0,2
+5242,1,0,1,0,0,2
+5243,2,2,3,205,0,690
+5244,1,0,1,0,0,2
+5245,1,0,1,0,0,1
+5246,1,0,1,0,0,2
+5260,2,2,3,205,0,666
+5261,1,0,1,0,0,2
+5262,1,0,1,0,0,2
+5263,1,0,1,0,0,2
+5264,2,2,3,205,0,679
+5265,1,0,1,0,0,1
+5266,1,0,1,0,0,2
+5267,1,0,1,0,0,2
+5274,2,2,3,205,0,69
+5275,2,2,3,205,0,65
+5283,2,2,3,205,0,70
+5284,2,2,3,205,0,71
+5293,2,2,3,205,0,65
+5294,2,2,3,205,0,67
+5302,2,2,3,205,0,64
+5303,2,2,3,205,0,63
+5311,2,2,3,205,0,65
+5312,2,2,3,205,0,67
+5321,3,3,6,205,0,710
+5322,2,2,3,205,0,667
+5329,2,2,3,205,0,69
+5330,2,2,3,205,0,76
+5339,2,2,3,205,0,66
+5340,1,0,1,0,0,2
+5341,2,2,3,205,0,64
+5342,2,2,3,205,0,67
+5350,2,2,3,205,0,64
+5351,2,2,3,205,0,64
+5361,2,2,3,205,0,65
+5362,1,0,1,0,0,2
+5363,2,2,3,205,0,63
+5364,2,2,3,205,0,63
+5373,2,2,3,205,0,63
+5374,2,2,3,205,0,63
+5382,2,2,3,205,0,64
+5383,2,2,3,205,0,67
+5393,2,2,3,205,0,64
+5394,1,0,1,0,0,2
+5395,2,2,3,205,0,65
+5396,2,2,3,205,0,63
+5405,2,2,3,205,0,64
+5406,2,2,3,205,0,70
+5417,1,0,1,0,0,2
+5418,2,2,3,58,0,39
+5419,2,2,3,58,0,37
+5420,2,2,3,205,0,67
+5421,2,2,3,205,0,63
+5422,2,2,3,205,0,64
+5423,2,2,3,205,0,63
+5432,2,2,3,205,0,66
+5433,2,2,3,205,0,63
+5442,2,2,3,205,0,64
+5443,2,2,3,205,0,63
+5453,2,2,3,205,0,68
+5454,2,2,3,205,0,63
+5464,2,2,3,205,0,65
+5465,2,2,3,205,0,63
+5475,2,2,3,205,0,714
+5476,2,2,3,205,0,679
+5486,2,2,3,205,0,681
+5487,2,2,3,205,0,679
+5497,3,3,6,205,0,716
+5498,2,2,3,205,0,664
+5508,3,3,6,205,0,734
+5509,2,2,3,205,0,680
+5519,3,3,6,205,0,697
+5520,2,2,3,205,0,678
+5530,3,3,6,205,0,718
+5531,2,2,3,205,0,674
+5540,3,2,5,205,0,683
+5541,2,2,3,205,0,690
+5550,3,2,5,205,0,684
+5551,2,2,3,205,0,680
+5560,3,2,5,205,0,704
+5561,2,2,3,205,0,683
+5569,2,2,3,205,0,686
+5570,2,2,3,205,0,713
+5578,2,2,3,205,0,688
+5579,2,2,3,205,0,691
+5587,3,3,6,205,,90
+5588,2,2,3,205,0,680
+5596,3,3,6,205,,73
+5597,2,2,3,205,0,707
+5605,3,3,6,205,,77
+5606,2,2,3,205,0,683
+5614,3,3,6,205,,70
+5615,2,2,3,205,0,685
+5623,3,2,5,205,,51
+5624,2,2,3,205,0,665
+5632,3,2,5,205,,55
+5633,2,2,3,205,0,678
+5641,3,2,5,205,,57
+5642,2,2,3,205,0,681
+5650,3,2,5,205,,108
+5651,2,2,3,205,0,691
+5659,3,2,5,205,,84
+5660,2,2,3,205,0,670
+5668,3,2,5,205,,109
+5669,2,2,3,205,0,671
+5678,1,0,1,0,0,2
+5679,2,4,5,58,,97
+5680,5,2,9,205,0,1471
+5681,2,2,3,205,0,670
+5689,1,0,1,0,0,2
+5690,3,2,5,205,0,783
+5691,2,2,3,205,0,681
+5692,3,2,5,205,0,803
+5693,2,2,3,205,0,684
+5700,2,2,3,205,0,708
+5701,2,2,3,205,0,693
+5710,1,0,1,0,0,2
+5711,2,4,5,58,,80
+5712,5,2,9,205,0,1249
+5713,2,2,3,205,0,608
+5721,3,2,5,205,0,788
+5722,2,2,3,205,0,665
+5729,2,2,3,205,0,645
+5730,2,2,3,205,0,654
+5738,3,2,4,205,0,709
+5739,2,2,3,205,0,634
+5748,3,2,5,205,0,760
+5749,2,2,3,205,0,637
+5756,2,2,3,205,0,656
+5757,2,2,3,205,0,638
+5765,3,2,4,205,0,709
+5766,2,2,3,205,0,635
+5775,3,2,5,205,0,769
+5776,2,2,3,205,0,673
+5783,2,2,3,205,0,659
+5784,2,2,3,205,0,641
+5792,3,2,4,205,0,727
+5793,2,2,3,205,0,647
+5802,3,2,5,205,0,764
+5803,2,2,3,205,0,663
+5811,3,2,4,205,0,1554
+5812,2,2,3,205,0,630
+5820,3,2,4,205,0,688
+5821,2,2,3,205,0,665
+5829,3,2,4,205,0,685
+5830,2,2,3,205,0,660
+5838,3,2,4,205,0,676
+5839,2,2,3,205,0,655
+5847,3,2,4,205,0,684
+5848,2,2,3,205,0,652
+5856,3,2,4,205,0,712
+5857,2,2,3,205,0,647
+5865,3,2,4,205,0,686
+5866,2,2,3,205,0,649
+5874,3,2,4,205,0,697
+5875,2,2,3,205,0,654
+5883,3,2,4,205,0,694
+5884,2,2,3,205,0,651
+5901,3,3,6,207,0,94
+5902,2,2,3,207,0,57
+5919,3,3,6,207,0,111
+5920,2,2,3,207,0,58
+5940,4,2,7,207,0,105
+5941,2,2,3,207,0,60
+5956,2,1,2,207,0,16
+5957,2,2,3,207,0,57
+5958,2,1,2,58,0,16
+5959,1,0,1,1,0,2
+5960,2,2,3,59,0,32
+5961,2,2,3,59,0,30
+5970,4,3,10,205,0,1352
+5971,2,2,3,205,0,682
+6000,2,2,3,209,0,705
+6001,1,0,1,0,0,2
+6002,1,0,1,0,0,2
+6003,2,2,3,209,0,700
+6004,1,0,1,0,0,2
+6005,1,0,1,0,0,2
+6006,2,2,3,19,0,157
+6007,3,2,7,59,0,374
+6008,4,2,7,58,42,2981
+6009,3,2,5,58,42,2166
+6010,2,2,3,2,5,248
+6011,2,2,3,209,0,706
+6012,1,0,1,0,0,2
+6013,1,0,1,0,0,1
+6014,2,2,3,19,0,159
+6015,4,2,7,58,42,2638
+6016,2,2,3,58,21,1116
+6017,2,2,3,209,0,704
+6018,1,0,1,0,0,2
+6019,1,0,1,0,0,2
+6020,2,2,3,19,0,161
+6021,3,2,5,209,0,945
+6022,2,2,3,20,0,154
+6023,4,5,9,209,,345
+6024,3,5,7,5,,205
+6025,5,2,10,58,63,111782
+6026,2,2,3,58,21,1347
+6027,2,2,3,209,0,720
+6028,1,0,1,0,0,2
+6029,1,0,1,0,0,2
+6030,2,2,3,19,0,167
+6031,4,3,8,209,5,7199
+6032,3,3,6,20,5,12057
+6033,6,2,12,58,63,104472
+6034,2,2,3,58,21,1274
+6035,2,2,3,209,0,729
+6036,1,0,1,0,0,2
+6037,1,0,1,0,0,2
+6038,2,2,3,19,0,165
+6039,4,3,8,209,,14159
+6040,3,3,6,20,5,11637
+6041,6,2,13,58,84,41329
+6042,3,2,5,58,42,3631
+6043,2,2,3,209,0,697
+6044,1,0,1,0,0,3
+6045,1,0,1,0,0,2
+6046,2,2,3,19,0,165
+6047,3,2,7,59,0,422
+6048,4,2,7,58,42,2669
+6049,2,2,3,58,21,1098
+6050,2,2,3,2,5,260
+6051,2,2,3,209,0,685
+6052,1,0,1,0,0,2
+6053,1,0,1,0,0,2
+6054,2,2,3,19,0,142
+6055,4,2,7,58,42,2776
+6056,2,2,3,58,21,1148
+6057,2,2,3,209,0,711
+6058,1,0,1,0,0,2
+6059,1,0,1,0,0,2
+6060,2,2,3,19,0,170
+6061,4,3,8,209,5,2463
+6062,3,3,6,20,5,11705
+6063,6,2,12,58,63,101155
+6064,2,2,3,58,21,1343
+6065,2,2,3,209,0,733
+6066,1,0,1,0,0,2
+6067,1,0,1,0,0,2
+6068,2,2,3,19,0,167
+6069,4,3,8,209,,14469
+6070,3,3,6,20,5,11829
+6071,6,2,13,58,84,40904
+6072,3,2,5,58,42,2044
+6073,1,0,1,0,0,2
+6074,2,2,3,209,0,681
+6075,1,0,1,0,0,3
+6076,1,0,1,0,0,2
+6077,2,2,3,19,0,166
+6078,4,2,9,59,0,705
+6079,4,2,7,58,42,2695
+6080,2,2,3,58,21,1083
+6081,2,2,3,2,5,267
+6082,2,2,3,209,0,702
+6083,1,0,1,0,0,2
+6084,1,0,1,0,0,1
+6085,2,2,3,19,0,131
+6086,4,2,7,58,42,2739
+6087,2,2,3,58,21,1102
+6088,2,2,3,209,0,704
+6089,1,0,1,0,0,2
+6090,1,0,1,0,0,1
+6091,2,2,3,19,0,166
+6092,5,3,10,209,5,3551
+6093,4,3,8,20,5,1471
+6094,7,2,14,58,63,101620
+6095,2,2,3,58,21,1374
+6096,2,2,3,209,0,727
+6097,1,0,1,0,0,2
+6098,1,0,1,0,0,2
+6099,2,2,3,19,0,173
+6100,5,3,10,209,5,7585
+6101,4,3,8,20,5,1499
+6102,7,2,15,58,84,42568
+6103,3,2,5,58,42,2135
+6104,1,0,1,0,0,2
+6105,2,2,3,209,0,720
+6106,1,0,1,0,0,2
+6107,1,0,1,0,0,1
+6108,2,2,3,19,0,164
+6109,4,2,8,59,0,916
+6110,4,2,10,59,0,1203
+6111,4,2,7,58,21,2262
+6112,2,2,3,58,21,1107
+6113,2,2,3,2,5,268
+6114,2,2,3,209,0,700
+6115,1,0,1,0,0,2
+6116,1,0,1,0,0,2
+6117,2,2,3,19,0,149
+6118,4,2,7,58,21,2384
+6119,2,2,3,58,21,1117
+6120,2,2,3,209,0,706
+6121,1,0,1,0,0,2
+6122,1,0,1,0,0,4
+6123,2,2,3,19,0,175
+6124,4,3,10,209,0,973
+6125,2,2,3,20,0,164
+6126,3,2,5,20,0,472
+6127,3,3,6,209,5,882
+6128,2,3,4,5,5,280
+6129,5,2,10,58,42,72179
+6130,2,2,3,58,21,1313
+6131,2,2,3,209,0,731
+6132,1,0,1,0,0,2
+6133,1,0,1,0,0,2
+6134,2,2,3,19,0,172
+6135,4,3,10,209,0,955
+6136,2,2,3,20,0,135
+6137,3,2,5,20,0,457
+6138,3,3,6,209,5,1133
+6139,2,3,4,5,5,286
+6140,5,2,11,58,42,23527
+6141,3,2,5,58,42,2153
+6142,2,2,3,209,0,698
+6143,1,0,1,0,0,2
+6144,1,0,1,0,0,2
+6145,2,2,3,19,0,171
+6146,4,2,7,58,21,2279
+6147,2,2,3,58,21,1111
+6148,2,2,3,209,0,719
+6149,1,0,1,0,0,2
+6150,1,0,1,0,0,2
+6151,2,2,3,19,0,176
+6152,5,3,10,209,10,3138
+6153,4,3,8,20,10,1681
+6154,7,2,14,58,63,101603
+6155,2,2,3,58,21,1348
+6156,2,2,3,209,0,738
+6157,1,0,1,0,0,2
+6158,1,0,1,0,0,2
+6159,2,2,3,19,0,177
+6160,5,3,10,209,10,8130
+6161,4,3,8,20,10,1753
+6162,7,2,15,58,63,41408
+6163,3,2,5,58,42,2119
+6164,2,2,3,209,0,688
+6165,2,2,3,209,0,690
+6173,3,2,5,209,0,971
+6174,2,2,3,209,0,707
+6202,1,0,1,0,0,2
+6203,1,0,1,0,0,1
+6204,2,2,3,209,0,65
+6205,2,2,3,209,0,65
+6229,3,2,5,209,0,759
+6230,2,2,3,209,0,706
+6239,6,2,11,209,63,42491
+6247,3,2,4,209,0,722
+6248,2,2,3,209,0,662
Index: doc/theses/aaron_moss_PhD/phd/evaluation/per_prob/swap-per-prob.csv
===================================================================
--- doc/theses/aaron_moss_PhD/phd/evaluation/per_prob/swap-per-prob.csv	(revision 92d41a4af1542b1fcfd3bacde48933e4c8519366)
+++ doc/theses/aaron_moss_PhD/phd/evaluation/per_prob/swap-per-prob.csv	(revision 92d41a4af1542b1fcfd3bacde48933e4c8519366)
@@ -0,0 +1,821 @@
+2707,2,2,3,205,0,558
+2718,3,2,5,205,,81
+2733,2,1,2,206,,14
+2734,2,2,3,206,0,69
+2735,2,1,2,58,0,18
+2736,1,0,1,1,0,2
+2737,2,2,3,20,0,38
+2738,2,2,3,206,0,63
+2750,3,2,5,205,,101
+2765,2,1,2,206,,15
+2766,2,2,3,206,0,59
+2767,2,1,2,58,0,16
+2768,1,0,1,1,0,3
+2769,2,2,3,20,0,40
+2770,2,2,3,206,0,59
+2779,3,2,5,205,0,699
+2780,2,2,3,205,0,613
+2789,3,2,5,205,0,678
+2790,2,2,3,205,0,627
+2799,3,2,5,205,0,674
+2800,2,2,3,205,0,631
+2809,3,2,5,205,0,690
+2810,2,2,3,205,0,645
+2819,3,2,5,205,0,677
+2820,2,2,3,205,0,616
+2829,3,2,5,205,0,679
+2830,2,2,3,205,0,635
+2840,1,0,1,0,0,2
+2841,2,2,3,205,0,668
+2842,2,2,3,205,0,646
+2843,1,0,1,0,0,3
+2844,4,2,7,205,0,1164
+2845,2,2,3,205,0,636
+2846,2,2,3,205,0,634
+2847,1,0,1,0,0,2
+2848,1,0,1,0,0,1
+2849,2,2,3,10,0,97
+2850,1,0,1,0,0,2
+2851,2,2,3,18,0,144
+2852,2,2,3,18,0,141
+2853,3,2,5,205,0,867
+2854,2,2,3,205,0,612
+2875,1,0,1,0,0,2
+2876,2,2,3,208,0,83
+2877,2,2,3,208,0,58
+2878,2,1,2,208,0,18
+2879,2,2,3,208,0,82
+2880,2,1,2,58,0,17
+2881,1,0,1,0,0,1
+2882,1,0,1,0,0,2
+2883,2,2,3,10,0,101
+2884,1,0,1,0,0,2
+2885,3,2,5,59,0,44
+2886,3,2,5,59,0,43
+2887,3,2,5,208,0,71
+2888,2,2,3,208,0,59
+2898,1,0,1,0,0,3
+2899,2,2,3,205,0,646
+2900,2,2,3,205,0,639
+2901,1,0,1,0,0,2
+2902,4,2,7,205,0,1040
+2903,2,2,3,205,0,617
+2904,2,2,3,205,0,655
+2905,1,0,1,0,0,2
+2906,1,0,1,0,0,2
+2907,2,2,3,10,0,102
+2908,1,0,1,0,0,2
+2909,2,2,3,18,0,149
+2910,2,2,3,18,0,146
+2911,3,2,5,205,0,918
+2912,2,2,3,205,0,641
+2921,1,0,1,0,0,2
+2922,2,2,3,205,0,629
+2923,2,2,3,205,0,638
+2924,4,2,7,205,0,1207
+2925,2,2,3,205,0,638
+2934,3,2,5,58,0,643
+2935,2,2,3,205,0,661
+2936,2,2,3,205,0,634
+2945,3,2,5,58,0,637
+2946,2,2,3,205,0,646
+2947,2,2,3,205,0,645
+2956,3,2,5,58,0,644
+2957,2,2,3,205,0,664
+2958,2,2,3,205,0,651
+2967,3,2,5,58,0,647
+2968,2,2,3,205,0,669
+2969,2,2,3,205,0,655
+2997,1,0,1,0,0,6
+2998,2,2,3,205,0,60
+2999,2,2,3,205,0,60
+3034,1,0,1,0,0,2
+3035,1,0,1,0,0,2
+3036,2,2,3,205,0,59
+3037,2,2,3,205,0,59
+3080,1,0,1,0,0,2
+3081,2,2,3,205,0,59
+3082,2,2,3,205,0,59
+3096,2,2,3,58,,3
+3103,2,2,3,58,,3
+3131,1,0,1,0,0,2
+3132,2,2,3,205,0,60
+3133,2,2,3,205,0,60
+3147,2,2,3,58,,2
+3154,2,2,3,58,,2
+3182,1,0,1,0,0,2
+3183,2,2,3,205,0,667
+3184,2,2,3,205,0,670
+3193,2,2,3,205,0,667
+3194,1,0,1,0,0,2
+3195,1,0,1,0,0,2
+3196,1,0,1,0,0,2
+3197,2,2,3,205,0,664
+3198,1,0,1,0,0,2
+3199,1,0,1,0,0,9
+3200,1,0,1,0,0,1
+3210,2,2,3,205,0,639
+3211,1,0,1,0,0,2
+3212,1,0,1,0,0,2
+3213,1,0,1,0,0,2
+3214,2,2,3,205,0,678
+3215,1,0,1,0,0,2
+3216,1,0,1,0,0,2
+3217,1,0,1,0,0,2
+3226,2,2,3,205,0,685
+3227,1,0,1,0,0,2
+3228,1,0,1,0,0,2
+3229,1,0,1,0,0,2
+3230,2,2,3,205,0,671
+3231,1,0,1,0,0,2
+3232,1,0,1,0,0,2
+3233,1,0,1,0,0,2
+3244,1,0,1,0,0,2
+3245,1,0,1,0,0,2
+3246,1,0,1,0,0,2
+3247,1,0,1,0,0,1
+3248,1,0,1,0,0,2
+3249,2,2,3,205,0,675
+3250,1,0,1,0,0,2
+3251,1,0,1,0,0,2
+3252,1,0,1,0,0,1
+3253,1,0,1,0,0,1
+3254,2,2,3,205,0,663
+3255,1,0,1,0,0,2
+3256,1,0,1,0,0,2
+3257,1,0,1,0,0,2
+3258,1,0,1,0,0,2
+3259,2,2,3,205,0,63
+3260,2,2,3,205,0,62
+3270,2,2,3,205,0,667
+3271,1,0,1,0,0,2
+3272,1,0,1,0,0,2
+3273,1,0,1,0,0,2
+3274,2,2,3,205,0,659
+3275,1,0,1,0,0,2
+3276,1,0,1,0,0,2
+3277,1,0,1,0,0,1
+3288,2,2,3,205,0,663
+3289,1,0,1,0,0,2
+3290,1,0,1,0,0,2
+3291,1,0,1,0,0,2
+3292,2,2,3,205,0,668
+3293,1,0,1,0,0,5
+3294,1,0,1,0,0,2
+3295,1,0,1,0,0,1
+3307,2,2,3,205,0,659
+3308,1,0,1,0,0,2
+3309,1,0,1,0,0,4
+3310,1,0,1,0,0,2
+3311,2,2,3,205,0,670
+3312,1,0,1,0,0,2
+3313,1,0,1,0,0,1
+3314,1,0,1,0,0,2
+3327,2,2,3,205,0,663
+3328,1,0,1,0,0,2
+3329,1,0,1,0,0,2
+3330,1,0,1,0,0,2
+3331,2,2,3,205,0,679
+3332,1,0,1,0,0,2
+3333,1,0,1,0,0,1
+3334,1,0,1,0,0,2
+3348,2,2,3,205,0,660
+3349,1,0,1,0,0,2
+3350,1,0,1,0,0,1
+3351,1,0,1,0,0,4
+3352,2,2,3,205,0,668
+3353,1,0,1,0,0,2
+3354,1,0,1,0,0,2
+3355,1,0,1,0,0,2
+3370,2,2,3,205,0,657
+3371,1,0,1,0,0,2
+3372,1,0,1,0,0,2
+3373,1,0,1,0,0,2
+3374,2,2,3,205,0,658
+3375,1,0,1,0,0,2
+3376,1,0,1,0,0,1
+3377,1,0,1,0,0,2
+3393,2,2,3,205,0,660
+3394,1,0,1,0,0,2
+3395,1,0,1,0,0,1
+3396,1,0,1,0,0,1
+3397,2,2,3,205,0,669
+3398,1,0,1,0,0,2
+3399,1,0,1,0,0,2
+3400,1,0,1,0,0,2
+3428,1,0,1,0,0,2
+3429,2,2,3,205,0,61
+3430,2,2,3,205,0,61
+3465,1,0,1,0,0,2
+3466,2,2,3,205,0,667
+3467,2,2,3,205,0,640
+3475,2,2,3,205,0,665
+3476,1,0,1,0,0,1
+3477,1,0,1,0,0,2
+3478,1,0,1,0,0,1
+3487,2,2,3,205,0,676
+3488,1,0,1,0,0,1
+3489,1,0,1,0,0,2
+3490,1,0,1,0,0,1
+3498,2,2,3,205,0,670
+3499,1,0,1,0,0,2
+3500,1,0,1,0,0,2
+3501,1,0,1,0,0,2
+3511,2,2,3,205,0,667
+3512,1,0,1,0,0,2
+3513,1,0,1,0,0,2
+3514,1,0,1,0,0,2
+3515,1,0,1,0,0,2
+3516,2,2,3,205,0,60
+3517,2,2,3,205,0,59
+3526,2,2,3,205,0,666
+3527,1,0,1,0,0,2
+3528,1,0,1,0,0,2
+3529,1,0,1,0,0,9
+3537,3,2,4,205,0,698
+3538,2,2,3,205,0,690
+3546,3,2,4,205,0,708
+3547,2,2,3,205,0,686
+3575,1,0,1,0,0,2
+3576,1,0,1,0,0,2
+3577,2,2,3,205,0,62
+3578,2,2,3,205,0,63
+3621,1,0,1,0,0,2
+3622,1,0,1,0,0,2
+3623,1,0,1,0,0,2
+3624,2,2,3,205,0,62
+3625,2,2,3,205,0,60
+3663,1,0,1,0,0,2
+3678,1,0,1,0,0,2
+3679,2,2,3,205,0,60
+3680,2,2,3,205,0,60
+3688,1,0,1,0,0,2
+3702,1,0,1,0,0,2
+3717,1,0,1,0,0,2
+3718,2,2,3,205,0,60
+3719,2,2,3,205,0,60
+3727,1,0,1,0,0,5
+3755,1,0,1,0,0,2
+3756,1,0,1,0,0,2
+3757,2,2,3,205,0,61
+3758,2,2,3,205,0,60
+3801,1,0,1,0,0,2
+3802,1,0,1,0,0,5
+3803,2,2,3,205,0,60
+3804,2,2,3,205,0,60
+3847,1,0,1,0,0,2
+3848,1,0,1,0,0,2
+3849,2,2,3,205,0,62
+3850,2,2,3,205,0,60
+3873,2,2,3,205,0,675
+3874,1,0,1,0,0,2
+3875,1,0,1,0,0,2
+3876,1,0,1,0,0,2
+3885,2,2,3,205,0,690
+3886,1,0,1,0,0,2
+3887,1,0,1,0,0,1
+3888,1,0,1,0,0,2
+3896,2,2,3,205,0,665
+3897,1,0,1,0,0,2
+3898,1,0,1,0,0,2
+3899,1,0,1,0,0,2
+3909,2,2,3,205,0,680
+3910,1,0,1,0,0,2
+3911,1,0,1,0,0,2
+3912,1,0,1,0,0,2
+3913,1,0,1,0,0,2
+3914,2,2,3,205,0,62
+3915,2,2,3,205,0,59
+3924,2,2,3,205,0,673
+3925,1,0,1,0,0,2
+3926,1,0,1,0,0,2
+3927,1,0,1,0,0,2
+3955,1,0,1,0,0,2
+3956,1,0,1,0,0,1
+3957,2,2,3,205,0,60
+3958,2,2,3,205,0,63
+4001,1,0,1,0,0,3
+4002,1,0,1,0,0,2
+4003,2,2,3,205,0,59
+4004,2,2,3,205,0,60
+4027,2,2,3,205,0,686
+4028,1,0,1,0,0,2
+4029,1,0,1,0,0,2
+4030,1,0,1,0,0,1
+4039,2,2,3,205,0,687
+4040,1,0,1,0,0,2
+4041,1,0,1,0,0,2
+4042,1,0,1,0,0,2
+4050,2,2,3,205,0,686
+4051,1,0,1,0,0,2
+4052,1,0,1,0,0,2
+4053,1,0,1,0,0,2
+4063,2,2,3,205,0,680
+4064,1,0,1,0,0,2
+4065,1,0,1,0,0,1
+4066,1,0,1,0,0,1
+4067,1,0,1,0,0,2
+4068,2,2,3,205,0,60
+4069,2,2,3,205,0,63
+4078,2,2,3,205,0,696
+4079,1,0,1,0,0,1
+4080,1,0,1,0,0,1
+4081,1,0,1,0,0,1
+4095,1,0,1,0,0,1
+4110,1,0,1,0,0,1
+4111,2,2,3,205,0,47
+4112,2,2,3,205,0,47
+4120,1,0,1,0,0,2
+4148,1,0,1,0,0,2
+4149,1,0,1,0,0,2
+4150,2,2,3,205,0,61
+4151,2,2,3,205,0,60
+4194,1,0,1,0,0,2
+4195,1,0,1,0,0,7
+4196,1,0,1,0,0,2
+4197,1,0,1,0,0,2
+4198,1,0,1,0,0,2
+4199,1,0,1,0,0,2
+4200,1,0,1,0,0,2
+4201,1,0,1,0,0,2
+4202,2,2,3,205,0,63
+4203,2,2,3,205,0,61
+4301,1,0,1,0,0,3
+4316,1,0,1,0,0,2
+4317,2,2,3,205,0,67
+4318,2,2,3,205,0,62
+4326,1,0,1,0,0,3
+4340,1,0,1,0,0,2
+4355,1,0,1,0,0,2
+4356,2,2,3,205,0,62
+4357,2,2,3,205,0,62
+4365,1,0,1,0,0,2
+4393,1,0,1,0,0,2
+4394,1,0,1,0,0,2
+4395,1,0,1,0,0,1
+4396,1,0,1,0,0,2
+4397,1,0,1,0,0,2
+4398,1,0,1,0,0,2
+4399,1,0,1,0,0,5
+4400,1,0,1,0,0,2
+4401,2,2,3,205,0,62
+4402,2,2,3,205,0,62
+4500,1,0,1,0,0,2
+4515,1,0,1,0,0,2
+4516,2,2,3,205,0,64
+4517,2,2,3,205,0,59
+4525,1,0,1,0,0,2
+4539,1,0,1,0,0,2
+4554,1,0,1,0,0,2
+4555,2,2,3,205,0,64
+4556,2,2,3,205,0,60
+4564,1,0,1,0,0,2
+4572,2,2,3,205,0,680
+4573,1,0,1,0,0,2
+4574,1,0,1,0,0,2
+4575,1,0,1,0,0,2
+4584,2,2,3,205,0,665
+4585,1,0,1,0,0,2
+4586,1,0,1,0,0,2
+4587,1,0,1,0,0,2
+4595,2,2,3,205,0,665
+4596,1,0,1,0,0,2
+4597,1,0,1,0,0,2
+4598,1,0,1,0,0,2
+4608,1,0,1,0,0,2
+4609,1,0,1,0,0,2
+4610,1,0,1,0,0,2
+4611,1,0,1,0,0,1
+4612,1,0,1,0,0,1
+4613,1,0,1,0,0,1
+4614,1,0,1,0,0,2
+4615,1,0,1,0,0,2
+4616,1,0,1,0,0,2
+4617,2,2,3,205,0,675
+4618,1,0,1,0,0,2
+4619,1,0,1,0,0,1
+4620,1,0,1,0,0,1
+4621,1,0,1,0,0,1
+4622,1,0,1,0,0,2
+4623,1,0,1,0,0,2
+4624,2,2,3,205,0,63
+4625,2,2,3,205,0,62
+4634,2,2,3,205,0,673
+4635,1,0,1,0,0,2
+4636,1,0,1,0,0,2
+4637,1,0,1,0,0,2
+4647,2,2,3,205,0,651
+4648,1,0,1,0,0,2
+4649,1,0,1,0,0,2
+4650,1,0,1,0,0,2
+4661,2,2,3,205,0,669
+4662,1,0,1,0,0,1
+4663,1,0,1,0,0,4
+4664,1,0,1,0,0,2
+4676,2,2,3,205,0,672
+4677,1,0,1,0,0,2
+4678,1,0,1,0,0,2
+4679,1,0,1,0,0,2
+4692,2,2,3,205,0,676
+4693,1,0,1,0,0,2
+4694,1,0,1,0,0,2
+4695,1,0,1,0,0,1
+4709,2,2,3,205,0,681
+4710,1,0,1,0,0,2
+4711,1,0,1,0,0,2
+4712,1,0,1,0,0,2
+4727,2,2,3,205,0,695
+4728,1,0,1,0,0,5
+4729,1,0,1,0,0,1
+4730,1,0,1,0,0,1
+4746,2,2,3,205,0,676
+4747,1,0,1,0,0,2
+4748,1,0,1,0,0,2
+4749,1,0,1,0,0,2
+4766,2,2,3,205,0,687
+4767,1,0,1,0,0,2
+4768,1,0,1,0,0,2
+4769,1,0,1,0,0,2
+4787,2,2,3,205,0,687
+4788,1,0,1,0,0,2
+4789,1,0,1,0,0,1
+4790,1,0,1,0,0,1
+4809,2,2,3,205,0,686
+4810,1,0,1,0,0,2
+4811,1,0,1,0,0,2
+4812,1,0,1,0,0,2
+4832,2,2,3,205,0,681
+4833,1,0,1,0,0,1
+4834,1,0,1,0,0,2
+4835,1,0,1,0,0,1
+4849,1,0,1,0,0,2
+4864,1,0,1,0,0,2
+4865,2,2,3,205,0,59
+4866,2,2,3,205,0,59
+4874,1,0,1,0,0,2
+4888,1,0,1,0,0,2
+4903,1,0,1,0,0,2
+4904,2,2,3,205,0,60
+4905,2,2,3,205,0,59
+4913,1,0,1,0,0,2
+4927,1,0,1,0,0,3
+4942,1,0,1,0,0,2
+4943,2,2,3,205,0,59
+4944,2,2,3,205,0,58
+4952,1,0,1,0,0,5
+4966,1,0,1,0,0,2
+4981,1,0,1,0,0,2
+4982,2,2,3,205,0,64
+4983,2,2,3,205,0,63
+4991,1,0,1,0,0,2
+5019,1,0,1,0,0,5
+5020,1,0,1,0,0,2
+5021,1,0,1,0,0,2
+5022,1,0,1,0,0,2
+5023,1,0,1,0,0,1
+5024,1,0,1,0,0,2
+5025,1,0,1,0,0,2
+5026,2,2,3,205,0,61
+5027,2,2,3,205,0,60
+5106,2,2,3,205,0,677
+5107,1,0,1,0,0,1
+5108,1,0,1,0,0,1
+5109,1,0,1,0,0,1
+5110,2,2,3,205,0,676
+5111,1,0,1,0,0,2
+5112,1,0,1,0,0,2
+5113,1,0,1,0,0,2
+5123,2,2,3,205,0,675
+5124,1,0,1,0,0,5
+5125,1,0,1,0,0,2
+5126,1,0,1,0,0,2
+5127,2,2,3,205,0,689
+5128,1,0,1,0,0,2
+5129,1,0,1,0,0,2
+5130,1,0,1,0,0,2
+5139,2,2,3,205,0,671
+5140,1,0,1,0,0,2
+5141,1,0,1,0,0,2
+5142,1,0,1,0,0,2
+5143,2,2,3,205,0,705
+5144,1,0,1,0,0,2
+5145,1,0,1,0,0,1
+5146,1,0,1,0,0,2
+5157,2,2,3,205,0,676
+5158,1,0,1,0,0,1
+5159,1,0,1,0,0,2
+5160,1,0,1,0,0,1
+5161,1,0,1,0,0,1
+5162,2,2,3,205,0,686
+5163,1,0,1,0,0,2
+5164,1,0,1,0,0,2
+5165,1,0,1,0,0,2
+5166,1,0,1,0,0,2
+5167,1,0,1,0,0,2
+5168,1,0,1,0,0,2
+5169,1,0,1,0,0,2
+5170,2,2,3,205,0,65
+5171,2,2,3,205,0,60
+5181,2,2,3,205,0,663
+5182,1,0,1,0,0,2
+5183,1,0,1,0,0,4
+5184,1,0,1,0,0,1
+5185,2,2,3,205,0,688
+5186,1,0,1,0,0,2
+5187,1,0,1,0,0,2
+5188,1,0,1,0,0,2
+5199,2,2,3,205,0,683
+5200,1,0,1,0,0,2
+5201,1,0,1,0,0,2
+5202,1,0,1,0,0,2
+5203,2,2,3,205,0,686
+5204,1,0,1,0,0,2
+5205,1,0,1,0,0,2
+5206,1,0,1,0,0,2
+5218,2,2,3,205,0,690
+5219,1,0,1,0,0,2
+5220,1,0,1,0,0,1
+5221,1,0,1,0,0,1
+5222,2,2,3,205,0,649
+5223,1,0,1,0,0,2
+5224,1,0,1,0,0,2
+5225,1,0,1,0,0,2
+5238,2,2,3,205,0,680
+5239,1,0,1,0,0,2
+5240,1,0,1,0,0,2
+5241,1,0,1,0,0,2
+5242,2,2,3,205,0,679
+5243,1,0,1,0,0,2
+5244,1,0,1,0,0,2
+5245,1,0,1,0,0,2
+5259,2,2,3,205,0,686
+5260,1,0,1,0,0,2
+5261,1,0,1,0,0,2
+5262,1,0,1,0,0,2
+5263,2,2,3,205,0,673
+5264,1,0,1,0,0,2
+5265,1,0,1,0,0,2
+5266,1,0,1,0,0,2
+5273,2,2,3,205,0,71
+5274,2,2,3,205,0,67
+5282,2,2,3,205,0,66
+5283,2,2,3,205,0,66
+5292,2,2,3,205,0,67
+5293,2,2,3,205,0,68
+5301,2,2,3,205,0,65
+5302,2,2,3,205,0,66
+5310,2,2,3,205,0,65
+5311,2,2,3,205,0,70
+5320,3,3,6,205,0,716
+5321,2,2,3,205,0,662
+5328,2,2,3,205,0,66
+5329,2,2,3,205,0,65
+5338,2,2,3,205,0,66
+5339,1,0,1,0,0,2
+5340,2,2,3,205,0,64
+5341,2,2,3,205,0,65
+5349,2,2,3,205,0,65
+5350,2,2,3,205,0,68
+5360,2,2,3,205,0,67
+5361,1,0,1,0,0,2
+5362,2,2,3,205,0,65
+5363,2,2,3,205,0,64
+5372,2,2,3,205,0,64
+5373,2,2,3,205,0,64
+5381,2,2,3,205,0,64
+5382,2,2,3,205,0,65
+5392,2,2,3,205,0,71
+5393,1,0,1,0,0,2
+5394,2,2,3,205,0,65
+5395,2,2,3,205,0,64
+5404,2,2,3,205,0,65
+5405,2,2,3,205,0,64
+5416,1,0,1,0,0,2
+5417,2,2,3,58,0,42
+5418,2,2,3,58,0,38
+5419,2,2,3,205,0,67
+5420,2,2,3,205,0,65
+5421,2,2,3,205,0,65
+5422,2,2,3,205,0,64
+5431,2,2,3,205,0,64
+5432,2,2,3,205,0,68
+5441,2,2,3,205,0,65
+5442,2,2,3,205,0,65
+5452,2,2,3,205,0,68
+5453,2,2,3,205,0,64
+5463,2,2,3,205,0,65
+5464,2,2,3,205,0,65
+5474,2,2,3,205,0,691
+5475,2,2,3,205,0,679
+5485,2,2,3,205,0,667
+5486,2,2,3,205,0,678
+5496,3,3,6,205,0,685
+5497,2,2,3,205,0,676
+5507,3,3,6,205,0,709
+5508,2,2,3,205,0,680
+5518,3,3,6,205,0,718
+5519,2,2,3,205,0,684
+5529,3,3,6,205,0,712
+5530,2,2,3,205,0,664
+5539,3,2,5,205,0,674
+5540,2,2,3,205,0,665
+5549,3,2,5,205,0,678
+5550,2,2,3,205,0,675
+5559,3,2,5,205,0,686
+5560,2,2,3,205,0,675
+5568,2,2,3,205,0,694
+5569,2,2,3,205,0,697
+5577,2,2,3,205,0,683
+5578,2,2,3,205,0,671
+5586,3,3,6,205,,81
+5587,2,2,3,205,0,672
+5595,3,3,6,205,,71
+5596,2,2,3,205,0,679
+5604,3,3,6,205,,61
+5605,2,2,3,205,0,672
+5613,3,3,6,205,,89
+5614,2,2,3,205,0,677
+5622,3,2,5,205,,62
+5623,2,2,3,205,0,665
+5631,3,2,5,205,,53
+5632,2,2,3,205,0,668
+5640,3,2,5,205,,58
+5641,2,2,3,205,0,668
+5649,3,2,5,205,,108
+5650,2,2,3,205,0,694
+5658,3,2,5,205,,109
+5659,2,2,3,205,0,679
+5667,3,2,5,205,,102
+5668,2,2,3,205,0,667
+5677,1,0,1,0,0,2
+5678,2,4,5,58,,95
+5679,5,2,9,205,0,1453
+5680,2,2,3,205,0,659
+5688,1,0,1,0,0,2
+5689,3,2,5,205,0,781
+5690,2,2,3,205,0,674
+5691,3,2,5,205,0,771
+5692,2,2,3,205,0,671
+5699,2,2,3,205,0,679
+5700,2,2,3,205,0,687
+5709,1,0,1,0,0,3
+5710,2,4,5,58,,76
+5711,5,2,9,205,0,1244
+5712,2,2,3,205,0,588
+5720,3,2,5,205,0,775
+5721,2,2,3,205,0,646
+5728,2,2,3,205,0,642
+5729,2,2,3,205,0,638
+5737,3,2,4,205,0,699
+5738,2,2,3,205,0,636
+5747,3,2,5,205,0,725
+5748,2,2,3,205,0,640
+5755,2,2,3,205,0,649
+5756,2,2,3,205,0,642
+5764,3,2,4,205,0,701
+5765,2,2,3,205,0,646
+5774,3,2,5,205,0,745
+5775,2,2,3,205,0,657
+5782,2,2,3,205,0,668
+5783,2,2,3,205,0,660
+5791,3,2,4,205,0,716
+5792,2,2,3,205,0,645
+5801,3,2,5,205,0,745
+5802,2,2,3,205,0,653
+5810,3,2,4,205,0,1437
+5811,2,2,3,205,0,617
+5819,3,2,4,205,0,682
+5820,2,2,3,205,0,659
+5828,3,2,4,205,0,672
+5829,2,2,3,205,0,663
+5837,3,2,4,205,0,667
+5838,2,2,3,205,0,656
+5846,3,2,4,205,0,669
+5847,2,2,3,205,0,657
+5855,3,2,4,205,0,677
+5856,2,2,3,205,0,676
+5864,3,2,4,205,0,666
+5865,2,2,3,205,0,647
+5873,3,2,4,205,0,675
+5874,2,2,3,205,0,659
+5882,3,2,4,205,0,681
+5883,2,2,3,205,0,667
+5900,3,3,6,207,0,93
+5901,2,2,3,207,0,58
+5918,3,3,6,207,0,92
+5919,2,2,3,207,0,58
+5939,4,2,7,207,0,109
+5940,2,2,3,207,0,61
+5955,2,1,2,207,0,17
+5956,2,2,3,207,0,59
+5957,2,1,2,58,0,16
+5958,1,0,1,1,0,2
+5959,2,2,3,59,0,32
+5960,2,2,3,59,0,32
+6004,2,2,3,209,0,651
+6005,1,0,1,0,0,2
+6006,2,2,3,209,0,661
+6007,1,0,1,0,0,2
+6008,6,2,11,58,105,73730
+6009,2,2,3,1,4,3668
+6010,6,2,11,58,105,81183
+6011,3,2,4,209,0,986
+6012,2,1,2,18,0,75
+6013,3,2,4,209,0,882
+6014,2,1,2,18,0,61
+6015,5,2,9,58,84,41959
+6016,2,2,3,1,4,2148
+6017,5,2,9,58,84,53931
+6018,2,2,3,209,0,748
+6019,1,0,1,0,0,2
+6020,2,2,3,209,0,694
+6021,1,0,1,0,0,2
+6022,5,2,9,58,84,40443
+6023,2,2,3,1,4,2162
+6024,5,2,9,58,84,54788
+6025,3,2,4,209,0,959
+6026,2,1,2,18,0,77
+6027,3,2,4,209,0,885
+6028,2,1,2,18,0,74
+6029,5,2,9,58,84,40563
+6030,2,2,3,1,4,2209
+6031,5,2,9,58,84,54746
+6032,2,2,3,209,0,744
+6033,1,0,1,0,0,2
+6034,2,2,3,209,0,679
+6035,1,0,1,0,0,2
+6036,5,2,9,58,84,40133
+6037,2,2,3,1,4,2221
+6038,5,2,9,58,84,54044
+6039,3,2,4,209,0,937
+6040,2,1,2,18,0,74
+6041,3,2,4,209,0,893
+6042,2,1,2,18,0,62
+6043,5,2,9,58,84,40270
+6044,2,2,3,1,4,2164
+6045,5,2,9,58,84,54859
+6046,2,2,3,209,0,730
+6047,1,0,1,0,0,2
+6048,2,2,3,209,0,676
+6049,1,0,1,0,0,2
+6050,5,2,9,58,84,40716
+6051,2,2,3,1,4,2272
+6052,5,2,9,58,84,54568
+6053,2,2,3,209,0,743
+6054,1,0,1,0,0,2
+6055,2,2,3,209,0,699
+6056,1,0,1,0,0,2
+6057,5,2,9,58,84,40771
+6058,2,2,3,1,4,2242
+6059,5,2,9,58,84,54924
+6060,2,2,3,209,0,741
+6061,1,0,1,0,0,2
+6062,2,2,3,209,0,686
+6063,1,0,1,0,0,2
+6064,5,2,9,58,84,40886
+6065,2,2,3,1,4,2345
+6066,5,2,9,58,84,55145
+6067,2,2,3,209,0,737
+6068,1,0,1,0,0,2
+6069,2,2,3,209,0,670
+6070,1,0,1,0,0,2
+6071,5,2,9,58,84,40732
+6072,2,2,3,1,4,2380
+6073,5,2,9,58,84,55103
+6074,3,2,5,209,0,1037
+6075,2,2,3,20,0,163
+6076,3,2,5,209,0,937
+6077,2,2,3,20,0,151
+6078,5,2,9,58,84,41043
+6079,2,2,3,1,4,2403
+6080,5,2,9,58,84,55310
+6081,3,2,5,209,0,1029
+6082,2,2,3,20,0,163
+6083,3,2,5,209,0,933
+6084,2,2,3,20,0,152
+6085,5,2,9,58,84,41243
+6086,2,2,3,1,4,2452
+6087,5,2,9,58,84,55127
+6088,3,2,5,209,0,1048
+6089,2,2,3,20,0,161
+6090,3,2,5,209,0,914
+6091,2,2,3,20,0,149
+6092,5,2,9,58,84,41515
+6093,2,2,3,1,4,2482
+6094,5,2,9,58,84,55761
+6095,2,3,4,209,0,144
+6096,1,0,1,0,0,2
+6097,1,0,1,0,0,2
+6098,2,3,4,209,0,67
+6099,1,0,1,0,0,2
+6100,1,0,1,0,0,2
+6101,6,2,11,58,63,8581
+6102,2,2,3,1,4,366
+6103,6,2,11,58,63,13391
+6104,2,2,3,209,0,699
+6105,2,2,3,209,0,680
+6132,1,0,1,0,0,3
+6133,1,0,1,0,0,3
+6134,2,2,3,209,0,68
+6135,2,2,3,209,0,61
+6159,5,2,9,209,42,22092
Index: doc/theses/aaron_moss_PhD/phd/evaluation/time-by-max-assns.tsv
===================================================================
--- doc/theses/aaron_moss_PhD/phd/evaluation/time-by-max-assns.tsv	(revision 92d41a4af1542b1fcfd3bacde48933e4c8519366)
+++ doc/theses/aaron_moss_PhD/phd/evaluation/time-by-max-assns.tsv	(revision 92d41a4af1542b1fcfd3bacde48933e4c8519366)
@@ -0,0 +1,132 @@
+i	test	algos completed	avg. assns/decl	max assns/decl	avg. max expr. depth	max. expr depth	bu-imm-bas	bu-imm-iti	bu-imm-per	co-imm-bas	co-imm-iti	co-imm-per	td-imm-bas	td-imm-iti	bu-def-bas	bu-def-iti	bu-def-per	co-def-bas	co-def-iti	co-def-per	td-def-bas	td-def-iti	bu-tec-bas	bu-tec-iti	bu-tec-per	co-tec-bas	co-tec-iti	co-tec-per	td-tec-bas	td-tec-iti
+84	stdincludes	24	0.002	6	0.36	4	1.37	2.44	0.82	11.87	22.11	9.01	8.80	10.05	1.09	2.23	0.77	11.11	21.48	8.68	0.64	0.98	1.15	2.21	0.78	11.86	21.23	8.70	0.64	0.94
+113	interpose-stdlib	24	0.002	6	0.37	5	1.04	1.76	0.61	9.38	17.32	6.91	7.57	8.50	0.77	1.59	0.56	8.53	17.04	6.46	0.40	0.57	0.82	1.58	0.56	9.14	16.60	6.61	0.41	0.56
+110	debug-stdlib	24	0.003	6	0.39	3	0.35	0.48	0.18	2.79	4.80	1.99	4.19	4.59	0.20	0.39	0.14	2.38	4.54	1.78	0.15	0.20	0.24	0.39	0.14	2.56	4.46	1.95	0.15	0.20
+107	assert-stdlib	24	0.005	6	0.42	3	0.14	0.16	0.07	0.90	1.37	0.65	2.21	2.35	0.06	0.12	0.04	0.72	1.26	0.57	0.08	0.11	0.06	0.12	0.05	0.75	1.25	0.64	0.09	0.11
+117	limits-stdlib	21	0.005	6	1.07	3	0.16	0.24	0.10	1.37	2.25	1.06	1.87		0.12	0.22	0.08	1.18	2.08	0.97	0.47		0.12	0.22	0.08	1.21	2.06	1.01	0.48	
+125	startup-stdlib	24	0.005	6	0.88	3	0.07	0.07	0.03	0.44	0.62	0.31	1.40	1.42	0.02	0.04	0.02	0.31	0.53	0.25	0.07	0.08	0.02	0.04	0.02	0.32	0.52	0.27	0.07	0.09
+19	declarationSpecifier	24	0.005	6	0.89	3	0.12	0.11	0.04	0.80	1.14	0.48	2.60	2.70	0.03	0.06	0.02	0.50	0.93	0.38	0.07	0.10	0.03	0.06	0.02	0.54	0.92	0.40	0.07	0.09
+5	attributes	24	0.006	6	0.84	3	0.08	0.08	0.03	0.45	0.63	0.30	1.73	1.74	0.02	0.04	0.02	0.30	0.53	0.24	0.07	0.08	0.02	0.04	0.02	0.32	0.51	0.25	0.07	0.08
+20	designations	15	0.006	6	0.62	3	0.10	0.10	0.04				1.91	1.96	0.03	0.06	0.02				0.07	0.09	0.04	0.07	0.02				0.07	0.09
+52	limits	24	0.006	6	0.80	3	0.13	0.20	0.08	0.88	1.38	0.66	1.46	1.42	0.09	0.17	0.06	0.77	1.30	0.61	0.12	0.19	0.10	0.17	0.06	0.77	1.24	0.66	0.13	0.19
+36	functions	24	0.006	6	1.00	3	0.06	0.06	0.03	0.38	0.53	0.25	1.43	1.43	0.02	0.04	0.01	0.26	0.44	0.20	0.07	0.09	0.02	0.04	0.01	0.27	0.43	0.22	0.06	0.09
+76	references	24	0.006	6	0.99	4	0.09	0.10	0.05	0.66	0.87	0.49	1.57	1.56	0.04	0.06	0.03	0.51	0.79	0.44	0.08	0.10	0.04	0.06	0.04	0.53	0.76	0.45	0.08	0.10
+100	variableDeclarator	24	0.006	6	0.60	3	0.06	0.06	0.03	0.38	0.51	0.25	1.40	1.34	0.02	0.04	0.01	0.25	0.44	0.20	0.06	0.09	0.02	0.04	0.01	0.27	0.43	0.22	0.07	0.09
+37	gccExtensions	24	0.006	6	0.97	3	0.07	0.07	0.03	0.47	0.60	0.34	1.52	1.47	0.02	0.04	0.01	0.36	0.53	0.30	0.08	0.10	0.02	0.04	0.02	0.38	0.52	0.31	0.08	0.10
+50	KRfunctions	24	0.006	6	1.08	3	0.07	0.06	0.03	0.50	0.72	0.36	1.42	1.44	0.02	0.04	0.01	0.39	0.60	0.32	0.07	0.08	0.02	0.03	0.01	0.40	0.61	0.32	0.07	0.08
+60	memberCtors	24	0.006	6	1.09	3	0.08	0.08	0.03	0.46	0.62	0.30	1.56	1.59	0.02	0.04	0.02	0.32	0.54	0.24	0.07	0.09	0.02	0.04	0.02	0.33	0.51	0.26	0.07	0.09
+43	identFuncDeclarator	24	0.006	6	0.59	3	0.06	0.06	0.03	0.37	0.50	0.25	1.38	1.34	0.02	0.03	0.01	0.25	0.41	0.20	0.07	0.08	0.02	0.03	0.01	0.26	0.42	0.22	0.07	0.08
+94	tupleMember	24	0.006	6	1.00	4	0.07	0.07	0.03	0.72	0.89	0.58	1.57	1.56	0.02	0.04	0.02	0.61	0.82	0.53	0.10	0.14	0.02	0.04	0.02	0.62	0.81	0.55	0.10	0.15
+28	extension	24	0.006	6	0.94	3	0.08	0.07	0.03	0.52	0.66	0.37	1.54	1.53	0.03	0.04	0.02	0.40	0.57	0.30	0.08	0.10	0.02	0.04	0.02	0.39	0.56	0.33	0.08	0.10
+47	init_once	24	0.006	6	0.82	5	0.13	0.12	0.06	0.69	0.85	0.42	1.77	1.70	0.03	0.06	0.02	0.38	0.64	0.31	0.10	0.11	0.04	0.05	0.02	0.39	0.63	0.32	0.10	0.12
+93	tupleFunction	15	0.006	6	0.98	3	0.07	0.07	0.03				1.46	1.43	0.02	0.04	0.02				0.07	0.09	0.02	0.04	0.02				0.07	0.09
+66	operators	24	0.006	6	1.06	3	0.06	0.07	0.03	0.45	0.61	0.30	1.43	1.43	0.02	0.04	0.01	0.32	0.55	0.26	0.07	0.10	0.02	0.04	0.02	0.33	0.52	0.28	0.07	0.09
+26	enum	24	0.006	6	1.03	3	0.06	0.06	0.03	0.39	0.53	0.26	1.38	1.34	0.02	0.04	0.01	0.26	0.46	0.22	0.07	0.08	0.02	0.04	0.01	0.27	0.44	0.24	0.06	0.08
+80	self-assignment	24	0.006	6	1.04	3	0.06	0.07	0.03	0.43	0.56	0.28	1.48	1.50	0.02	0.04	0.01	0.28	0.48	0.23	0.07	0.09	0.02	0.04	0.02	0.30	0.49	0.24	0.06	0.09
+87	switch	24	0.007	6	0.72	3	0.06	0.07	0.03	0.44	0.62	0.31	1.39	1.36	0.02	0.04	0.02	0.33	0.53	0.25	0.07	0.09	0.02	0.04	0.02	0.33	0.52	0.28	0.07	0.08
+88	sync	24	0.007	6	1.68	3	0.17	0.27	0.11	12.86	23.53	10.28	1.61	1.64	0.13	0.24	0.09	12.75	22.91	10.20	0.28	0.38	0.13	0.23	0.10	13.41	23.56	10.11	0.28	0.37
+16	counter	24	0.007	6	1.08	3	0.07	0.07	0.03	0.41	0.54	0.26	1.42	1.44	0.02	0.04	0.01	0.26	0.44	0.22	0.07	0.09	0.02	0.03	0.01	0.27	0.43	0.22	0.07	0.09
+3	array	24	0.007	6	1.01	3	0.06	0.06	0.03	0.38	0.52	0.27	1.39	1.34	0.02	0.03	0.01	0.25	0.43	0.21	0.07	0.09	0.02	0.03	0.01	0.27	0.43	0.22	0.06	0.08
+27	expression	24	0.007	6	1.04	3	0.07	0.07	0.03	0.44	0.62	0.30	1.45	1.37	0.02	0.04	0.02	0.32	0.54	0.26	0.07	0.09	0.02	0.04	0.02	0.33	0.52	0.27	0.07	0.09
+98	typeof	24	0.007	6	1.03	3	0.06	0.06	0.03	0.36	0.50	0.24	1.39	1.33	0.02	0.04	0.01	0.25	0.43	0.20	0.07	0.08	0.02	0.03	0.01	0.26	0.41	0.21	0.06	0.08
+51	labelledExit	24	0.007	6	0.81	3	0.06	0.07	0.03	0.43	0.61	0.30	1.38	1.35	0.02	0.04	0.02	0.31	0.53	0.25	0.07	0.08	0.02	0.04	0.02	0.33	0.52	0.27	0.07	0.08
+12	cast	24	0.007	6	1.03	3	0.06	0.06	0.03	0.38	0.51	0.24	1.38	1.34	0.02	0.03	0.01	0.26	0.42	0.20	0.07	0.09	0.02	0.03	0.01	0.26	0.41	0.22	0.07	0.09
+92	tupleCast	24	0.007	6	1.05	3	0.06	0.06	0.02	0.38	0.51	0.25	1.29	1.28	0.02	0.03	0.01	0.26	0.42	0.20	0.07	0.09	0.02	0.03	0.01	0.26	0.42	0.22	0.06	0.09
+11	castError	24	0.007	6	1.04	3	0.06	0.06	0.03	0.38	0.52	0.26	1.39	1.34	0.02	0.04	0.01	0.26	0.43	0.21	0.07	0.09	0.02	0.03	0.01	0.26	0.42	0.23	0.07	0.08
+97	typedefRedef	24	0.007	6	1.07	3	0.06	0.06	0.03	0.37	0.50	0.24	1.39	1.32	0.02	0.04	0.01	0.26	0.42	0.20	0.06	0.08	0.02	0.04	0.01	0.26	0.41	0.21	0.06	0.08
+102	voidPtr	24	0.007	6	1.02	3	0.06	0.06	0.03	0.38	0.50	0.25	1.37	1.35	0.02	0.04	0.01	0.25	0.42	0.20	0.06	0.08	0.02	0.03	0.01	0.26	0.40	0.22	0.06	0.08
+29	fallthrough	24	0.007	6	0.91	3	0.06	0.06	0.03	0.37	0.52	0.25	1.39	1.35	0.02	0.04	0.01	0.25	0.44	0.20	0.07	0.09	0.02	0.03	0.01	0.26	0.42	0.22	0.07	0.08
+45	identParamDeclarator	24	0.007	6	1.07	3	0.06	0.06	0.02	0.37	0.52	0.26	1.38	1.34	0.02	0.04	0.01	0.25	0.44	0.20	0.07	0.09	0.02	0.03	0.01	0.27	0.42	0.22	0.07	0.08
+65	numericConstants	24	0.007	6	0.74	3	0.06	0.06	0.03	0.36	0.50	0.25	1.40	1.34	0.02	0.04	0.01	0.25	0.42	0.21	0.06	0.08	0.02	0.03	0.01	0.26	0.41	0.22	0.07	0.09
+13	completeTypeError	24	0.008	6	1.05	3	0.07	0.06	0.03	0.38	0.52	0.27	1.38	1.39	0.02	0.03	0.01	0.25	0.42	0.20	0.07	0.09	0.02	0.03	0.01	0.26	0.42	0.22	0.07	0.08
+131	imgui	15	0.013	6	0.35	5	3.27	6.84	2.19				16.64	16.19	3.05	6.48	2.16				8.30	6.76	3.09	6.45	2.21				8.34	6.74
+64	nested-types	24	0.015	6	1.01	3	0.07	0.07	0.03	0.59	0.74	0.44	1.98	1.86	0.02	0.04	0.02	0.42	0.62	0.37	0.07	0.09	0.02	0.03	0.02	0.44	0.62	0.38	0.07	0.09
+105	with-statement	24	0.017	6	0.97	3	0.08	0.07	0.04	0.58	0.73	0.42	1.98	1.88	0.02	0.04	0.02	0.42	0.63	0.36	0.07	0.09	0.02	0.04	0.02	0.44	0.62	0.37	0.07	0.09
+38	genericUnion	24	0.018	6	1.04	4	0.08	0.07	0.04	0.57	0.71	0.43	1.86	1.74	0.02	0.04	0.02	0.40	0.60	0.34	0.07	0.09	0.02	0.04	0.02	0.42	0.59	0.38	0.07	0.09
+82	simpleGenericTriple	24	0.021	6	0.98	3	0.08	0.08	0.04	0.78	0.99	0.69	2.34	2.12	0.03	0.05	0.02	0.64	0.88	0.60	0.09	0.10	0.03	0.04	0.02	0.64	0.87	0.63	0.09	0.10
+17	ctor-autogen	24	0.023	6	0.84	3	0.14	0.12	0.06	1.08	1.31	0.83	2.78	2.77	0.05	0.06	0.02	0.80	1.13	0.74	0.10	0.12	0.05	0.06	0.03	0.84	1.12	0.75	0.09	0.12
+118	maybe-stdlib	24	0.031	6	1.17	3	0.08	0.08	0.04	0.72	0.89	0.55	1.90	1.83	0.03	0.05	0.02	0.58	0.77	0.50	0.08	0.10	0.04	0.04	0.02	0.59	0.76	0.52	0.08	0.10
+59	maybe	24	0.035	6	1.06	3	0.08	0.09	0.04	0.73	0.90	0.60	2.05	1.98	0.04	0.05	0.02	0.56	0.77	0.52	0.10	0.11	0.04	0.05	0.02	0.57	0.75	0.50	0.10	0.11
+108	common-stdlib	24	0.015	7	0.56	3	0.25	0.28	0.10	1.63	2.59	1.11	3.82	4.14	0.10	0.18	0.07	1.26	2.33	0.94	0.10	0.12	0.10	0.18	0.07	1.29	2.30	1.04	0.10	0.13
+77	result	24	0.072	8	1.01	3	0.12	0.10	0.06	1.06	1.22	0.89	2.30	2.16	0.05	0.06	0.03	0.85	1.06	0.77	0.11	0.13	0.06	0.06	0.03	0.84	1.04	0.81	0.11	0.12
+124	result-stdlib	24	0.073	8	1.22	3	0.11	0.10	0.06	1.16	1.31	1.01	2.25	2.15	0.05	0.06	0.03	0.98	1.16	0.87	0.10	0.11	0.05	0.05	0.03	0.97	1.12	0.88	0.10	0.12
+95	tuplePolymorphism	22	0.014	9	0.93	3	0.07	0.08	0.03	0.58	0.78	0.43	1.52	1.56	0.02		0.02	0.45	0.69	0.38	0.07	0.09	0.03		0.02	0.48	0.70	0.41	0.07	0.10
+116	kernel-stdlib	9	0.020	10	0.70	6	3.34	6.02	1.98						2.58	5.37	1.88						2.92	5.37	1.91					
+122	preemption-stdlib	18	0.021	10	0.66	6	2.78	5.02	1.66	32.19	55.31	25.87			2.22	4.68	1.60	30.75	53.38	25.61			2.27	4.42	1.61	31.40	53.12	25.04		
+112	heap-stdlib	15	0.025	10	0.65	7	1.09	1.64	0.58				9.66	11.16	0.71	1.39	0.50				1.15	1.63	0.80	1.39	0.50				1.16	1.62
+109	coroutine-stdlib	18	0.026	10	0.81	6	1.52	2.66	0.88	17.79	29.22	14.26			1.11	2.24	0.81	16.46	28.13	14.32			1.18	2.26	0.80	16.78	28.08	13.85		
+106	alarm-stdlib	18	0.027	10	0.84	6	1.55	2.61	0.86	17.73	29.27	14.13			1.10	2.21	0.80	16.34	28.05	13.48			1.16	2.20	0.79	16.78	27.97	13.66		
+69	preempt	18	0.028	10	0.79	6	1.40	2.49	0.81	17.14	28.17	13.72			1.06	2.13	0.73	15.81	27.05	13.23			1.16	2.10	0.75	16.14	26.76	13.20		
+119	monitor-stdlib	18	0.028	10	1.02	6	2.23	3.65	1.21	21.00	34.14	16.70			1.32	2.62	0.95	19.08	32.21	15.77			1.35	2.62	0.96	19.61	32.46	16.05		
+127	thread-stdlib	18	0.028	10	0.81	6	1.56	2.68	0.89	17.86	29.44	14.44			1.14	2.30	0.82	16.69	28.43	13.82			1.24	2.26	0.83	16.86	28.13	13.83		
+126	stdlib-stdlib	24	0.028	10	0.62	4	0.65	0.94	0.34	5.36	9.42	4.01	6.66	7.63	0.43	0.81	0.30	4.86	9.11	3.88	1.15	1.68	0.49	0.80	0.30	4.93	8.87	3.78	1.18	1.64
+41	heap	24	0.031	10	0.70	6	1.28	2.20	0.74	15.39	25.18	12.37	11.78	13.60	0.93	1.88	0.66	14.14	23.75	11.84	1.39	2.07	1.00	1.84	0.66	14.38	23.84	11.87	1.40	2.01
+120	mutex-stdlib	18	0.032	10	0.93	6	1.65	2.93	0.96	19.25	31.00	15.65			1.18	2.33	0.86	17.86	29.66	15.05			1.20	2.28	0.86	18.33	29.81	15.24		
+96	tupleVariadic	24	0.047	10	0.76	4	0.34	0.43	0.17	2.94	4.60	2.25	4.72	5.20	0.16	0.30	0.11	2.56	4.28	2.08	0.70	0.99	0.18	0.30	0.12	2.76	4.28	2.12	0.72	1.00
+129	vector-stdlib	24	0.095	10	0.82	6	0.44	0.49	0.21	5.20	6.92	4.32	5.82	6.18	2.16	0.59	0.31	7.37	6.87	4.34	0.71	1.01	2.19	0.58	0.32	7.42	6.80	4.34	0.74	1.02
+6	avl_test	24	0.100	10	0.71	4	2.50	1.54	0.70	4.83	6.32	3.38	7.86	7.43	0.24	0.35	0.14	3.25	5.06	2.78	0.74	1.08	0.23	0.34	0.14	3.28	5.01	2.78	0.74	0.99
+121	pair-stdlib	24	0.054	11	1.10	3	0.08	0.08	0.04	0.76	0.94	0.64	2.29	2.09	0.03	0.04	0.02	0.60	0.83	0.55	0.07	0.09	0.02	0.04	0.02	0.61	0.82	0.56	0.08	0.09
+68	polymorphism	21	0.021	12	0.99	3			0.41	1.75	1.43	0.69	36.87	31.84	0.08		0.04	0.52	0.80	0.42	0.39	0.29	0.08	0.08	0.04	0.54	0.81	0.44	0.38	0.29
+115	iterator-stdlib	24	0.018	13	1.04	3	0.06	0.06	0.03	0.37	0.48	0.24	1.35	1.34	0.02	0.04	0.01	0.25	0.41	0.20	0.07	0.09	0.02	0.03	0.01	0.25	0.39	0.21	0.06	0.08
+32	forall	15	0.196	15	0.99	3	60.88	37.88	27.72	55.92		33.84			0.59	0.36	0.26				3.61	2.12	0.43	0.33	0.23				3.36	1.92
+130	glm	23	0.206	19	1.43	5	2.32	1.64	1.00	11.09	12.74	9.01	581.81		1.80	1.17	0.69	9.82	11.68	8.21	7.12	3.45	1.30	1.08	0.67	9.30	11.54	8.30	5.70	3.10
+103	wait	18	0.146	35	0.78	6	1.68	2.88	0.97	19.30	31.99	15.48			1.20	2.40	0.84	17.85	30.83	14.80			1.22	2.37	0.92	18.31	30.56	14.89		
+21	disjoint	18	0.147	35	0.78	6	2.28	2.99	1.10	20.99	32.77	16.28			1.23	2.46	0.86	18.42	30.99	15.62			1.25	2.44	0.88	18.93	31.17	15.50		
+8	block	18	0.147	35	0.79	7	1.79	2.90	0.99	21.16	32.70	16.21			1.25	2.46	0.86	18.60	31.06	15.58			1.34	2.40	0.89	18.78	31.18	15.41		
+15	coroutineYield	18	0.150	35	0.76	6	1.59	2.72	0.90	18.60	30.32	14.87			1.14	2.33	0.81	17.15	29.10	14.34			1.16	2.30	0.82	17.60	29.24	14.34		
+18	datingService	22	0.155	35	0.63	7	1.34	2.26	0.77	15.95	25.94	12.86			0.96	1.96	0.69	14.68	24.85	12.44	1.41	2.04	0.97	1.96	0.70	15.41	24.87	12.28	1.40	1.95
+9	boundedBufferEXT	18	0.161	35	0.63	6	1.85	2.43	0.91	18.47	27.92	14.68			1.01	2.01	0.73	16.42	26.65	13.93			1.12	1.98	0.74	16.63	26.54	14.04		
+10	boundedBufferINT	18	0.162	35	0.63	6	1.86	2.45	0.92	18.52	28.08	14.83			1.03	2.03	0.74	16.52	26.69	14.16			1.06	1.99	0.74	16.76	26.59	14.22		
+83	statement	9	0.166	35	0.67	6	12.22	4.57	2.46						1.52	2.25	0.95						1.32	2.20	0.95					
+7	barge	18	0.166	35	0.64	6	1.56	2.25	0.81	15.83	25.04	12.50			0.94	1.87	0.66	14.08	23.70	11.70			0.96	1.85	0.67	14.39	23.87	11.80		
+71	quickSort	18	0.166	35	0.64	6	1.62	2.24	0.85	16.68	26.62	13.41			1.01	1.86	0.68	15.22	25.33	13.04			0.99	1.88	0.69	15.40	25.21	12.88		
+75	recurse	18	0.166	35	0.64	6	1.60	2.37	0.86	15.97	25.56	12.86			0.99	1.91	0.68	14.41	24.37	12.19			1.03	1.89	0.70	14.82	24.23	12.18		
+104	when	18	0.166	35	0.64	6	4.31	3.01	1.46	22.07	27.72	15.34			1.09	1.94	0.75	16.27	25.72	13.99			1.07	1.92	0.76	16.56	25.56	13.84		
+63	multi-monitor	9	0.168	35	0.63	6	9.02	4.11	2.28						1.02	1.87	0.67						1.04	1.80	0.68					
+62	monitor	18	0.168	35	0.62	6	1.44	2.17	0.79	15.02	23.82	11.88			0.91	1.78	0.63	13.47	22.57	11.47			0.99	1.76	0.65	13.73	22.57	11.33		
+89	thread	18	0.168	35	0.63	6	2.24	2.42	0.94	16.81	24.65	12.67			0.95	1.79	0.65	14.08	23.27	11.98			1.04	1.79	0.67	14.62	23.11	11.94		
+58	matrixSum	18	0.168	35	0.62	6	1.45	2.18	0.78	15.13	24.42	11.94			0.91	1.83	0.64	13.62	22.76	11.39			1.01	1.78	0.64	13.91	22.78	11.40		
+24	dtor	18	0.168	35	0.62	6	1.34	2.16	0.74	14.73	23.76	11.81			0.94	1.80	0.64	13.50	22.59	11.60			0.95	1.76	0.65	13.80	22.70	11.28		
+70	prodcons	15	0.170	35	0.62	6	3.14	2.26	1.05	103.80		46.33			0.86	1.54	0.59	41.53		43.00			0.88	1.50	0.59	41.04		42.18		
+25	else	18	0.179	35	0.58	4	3.81	2.54	1.32	20.86	23.70	13.66			0.87	1.55	0.64	14.18	21.48	12.28			0.88	1.53	0.64	14.20	21.53	12.37		
+114	iostream-stdlib	9	0.182	35	0.59	3	0.23	0.24	0.12						0.10	0.17	0.07						0.11	0.16	0.07					
+67	pingpong	18	0.184	35	0.55	6	0.66	1.02	0.36	7.66	12.08	6.14			0.44	0.87	0.31	6.98	11.44	6.07			0.48	0.84	0.32	7.11	11.41	5.91		
+31	fmtLines	18	0.185	35	0.55	6	0.70	1.04	0.38	7.75	11.99	6.17			0.46	0.85	0.31	6.93	11.36	5.86			0.45	0.84	0.31	7.12	11.38	5.87		
+78	runningTotal	18	0.185	35	0.55	6	3.71	1.90	1.14	41.03	27.42	21.82			0.50	0.89	0.34	15.90	19.76	15.90			0.51	0.88	0.36	15.87	19.56	15.44		
+30	fibonacci	18	0.185	35	0.55	6	3.70	1.89	1.09	41.47	27.54	21.79			0.50	0.87	0.34	16.03	19.51	15.25			0.56	0.86	0.33	15.89	19.44	15.25		
+111	fstream-stdlib	24	0.206	35	0.46	3	0.42	0.62	0.23	3.72	6.70	2.62	4.71	5.15	0.27	0.55	0.19	3.22	6.15	2.44	0.19	0.26	0.31	0.52	0.20	3.42	6.09	2.49	0.19	0.26
+2	alloc	24	0.226	35	0.65	5	0.58	0.84	0.30	5.35	8.86	3.73	6.48	7.04	0.37	0.73	0.26	4.52	8.41	3.52	0.80	1.17	0.40	0.72	0.26	4.65	8.26	3.56	0.80	1.12
+128	time-stdlib	9	0.233	35	0.87	6	0.80	0.66	0.35						0.27	0.48	0.20						0.27	0.46	0.20					
+40	gmp	9	0.256	35	1.25	9	7.18	2.08	1.56						0.98	0.71	0.48						0.62	0.64	0.44					
+57	math4	9	0.256	35	1.33	6	263.83	50.37	38.46						4.12	2.28	1.60						3.56	2.11	1.54					
+54	math1	8	0.256	35	1.29	10		47.88	32.34						3.94	1.98	1.52						3.22	1.76	1.46					
+56	math3	9	0.257	35	1.29	8	366.77	51.41	34.29						4.10	1.95	1.45						3.39	1.80	1.38					
+55	math2	9	0.257	35	1.32	8	514.78	71.97	47.42						5.73	2.63	2.04						4.74	2.38	1.92					
+73	random	18	0.259	35	0.67	4	4.28	1.74	1.40	11.44	9.89	6.63			0.53	0.59	0.34	5.06	7.45	4.32			0.50	0.57	0.33	5.07	7.30	4.28		
+14	complex	9	0.273	35	0.45	7	6.69	1.15	0.76						0.34	0.27	0.17						0.24	0.25	0.16					
+23	dtor-early-exit	18	0.285	35	0.69	4	4.52	1.66	1.18	12.31	9.55	6.54			0.59	0.60	0.33	5.85	7.77	5.12			0.48	0.53	0.31	5.64	7.58	5.06		
+86	swap	9	0.286	35	0.77	5	189.91	41.81	34.77						3.49	2.16	1.49						3.07	1.99	1.54					
+79	searchsort	9	0.286	35	0.79	6	118.20	27.14	23.12						1.93	1.45	1.14						1.84	1.44	1.16					
+22	div	7	0.287	35	0.64	5	0.51		0.24						0.26		0.16						0.26	0.40	0.16					
+85	sum	9	0.288	35	0.76	9	25.84		3.76			362.14			23.79	4.95	3.74						1.15	0.89	0.61					
+4	ato	18	0.289	35	0.76	4	5.78	2.33	1.92	37.44	20.30	18.00			0.76	0.70	0.44	13.36	14.42	12.63			0.59	0.63	0.42	12.89	14.18	12.67		
+61	minmax	9	0.289	35	0.77	7	121.62	24.73	20.00						3.10	1.60	1.12						2.24	1.35	1.04					
+1	abs	9	0.290	35	0.68	6	19.00	4.22	3.55						0.90	0.74	0.65						0.68	0.69	0.64					
+90	time	9	0.290	35	1.08	9	17.38	3.81	2.96						0.90	0.63	0.40						0.58	0.55	0.37					
+35	function-operator	22	0.300	35	0.69	5	0.92	0.88	0.46	7.26	9.68	5.90			0.47	0.66	0.32	6.34	9.28	5.68	43.45	24.98	0.49	0.65	0.32	6.38	9.18	5.68	44.13	24.39
+99	user_literals	18	0.347	35	0.77	5	2.67	0.84	0.69	6.57	4.10	3.32			0.26	0.22	0.15	2.74	3.13	2.56			0.21	0.20	0.14	2.65	3.02	2.47		
+39	globals	18	0.360	35	0.81	4	3.78	1.04	0.88	9.45	5.01	4.38			0.26	0.19	0.15	3.34	3.52	3.26			0.20	0.17	0.14	3.25	3.48	3.16		
+72	quoted_keyword	18	0.364	35	0.68	6	0.28	0.18	0.11	1.10	1.27	0.72			0.06	0.08	0.03	0.64	1.04	0.54			0.06	0.08	0.04	0.66	1.01	0.53		
+33	forctrl	9	0.369	35	0.73	5	15.40	3.36	2.58						0.34	0.25	0.15						0.32	0.25	0.16					
+81	shortCircuit	18	0.374	35	0.70	3	0.29	0.17	0.11	1.05	1.24	0.66			0.06	0.08	0.04	0.62	0.99	0.49			0.06	0.08	0.04	0.63	0.98	0.50		
+49	io2	6	0.376	35	1.39	34									11.35	3.73	3.22						7.99	3.08	2.86					
+46	ifwhileCtl	18	0.377	35	0.70	3	0.26	0.16	0.12	0.90	1.20	0.60			0.12	0.10	0.06	0.69	1.06	0.53			0.09	0.10	0.06	0.65	1.04	0.52		
+91	tupleAssign	9	0.377	35	0.90	12	53.22	6.62	4.63						2.35	0.72	0.59						0.68	0.38	0.41					
+53	literals	18	0.380	35	0.61	3	2.89	0.91	0.71	7.08	3.78	3.32			0.24	0.24	0.15	2.56	2.75	2.43			0.20	0.22	0.14	2.47	2.68	2.44		
+34	fstream_test	9	0.381	35	0.75	11	20.12	3.94	2.85						0.82	0.31	0.22						0.29	0.20	0.17					
+48	io1	3	0.381	35	1.09	24																	2.11	1.14	1.75					
+42	hello	18	0.381	35	0.72	3	0.24	0.15	0.10	0.80	1.02	0.52			0.10	0.10	0.06	0.58	0.87	0.44			0.08	0.08	0.05	0.55	0.86	0.44		
+44	identity	18	0.382	35	0.81	5	7.14	1.89	1.85	16.70	7.09	7.08			0.49	0.31	0.43	5.26	4.81	5.23			0.39	0.29	0.41	4.96	4.73	5.20		
+101	vector	16	0.406	35	1.08	7	30.70	4.14	2.74	528.78	165.96	173.38			1.88	0.69	0.62	598.19		613.50			0.80	0.48	0.53	587.72		601.29		
+123	rational-stdlib	17	0.340	44	0.78	5	3.46		2.22	13.74	13.61	10.39			1.45	1.05	0.90	10.39	12.16	8.52			1.39	1.05	0.89	9.70	11.71	8.51		
+74	rational	9	0.432	44	0.74	5				40.37	24.91	23.88											10.58	2.97	5.09	22.88	17.00	16.47		
Index: doc/theses/aaron_moss_PhD/phd/evaluation/time-by-max-depth.tsv
===================================================================
--- doc/theses/aaron_moss_PhD/phd/evaluation/time-by-max-depth.tsv	(revision 92d41a4af1542b1fcfd3bacde48933e4c8519366)
+++ doc/theses/aaron_moss_PhD/phd/evaluation/time-by-max-depth.tsv	(revision 92d41a4af1542b1fcfd3bacde48933e4c8519366)
@@ -0,0 +1,132 @@
+i	test	algos completed	avg. assns/decl	avg. max expr. depth	max. expr depth	bu-imm-bas	bu-imm-iti	bu-imm-per	co-imm-bas	co-imm-iti	co-imm-per	td-imm-bas	td-imm-iti	bu-def-bas	bu-def-iti	bu-def-per	co-def-bas	co-def-iti	co-def-per	td-def-bas	td-def-iti	bu-tec-bas	bu-tec-iti	bu-tec-per	co-tec-bas	co-tec-iti	co-tec-per	td-tec-bas	td-tec-iti
+110	debug-stdlib	24	0.003	0.39	3	0.35	0.48	0.18	2.79	4.80	1.99	4.19	4.59	0.20	0.39	0.14	2.38	4.54	1.78	0.15	0.20	0.24	0.39	0.14	2.56	4.46	1.95	0.15	0.20
+107	assert-stdlib	24	0.005	0.42	3	0.14	0.16	0.07	0.90	1.37	0.65	2.21	2.35	0.06	0.12	0.04	0.72	1.26	0.57	0.08	0.11	0.06	0.12	0.05	0.75	1.25	0.64	0.09	0.11
+111	fstream-stdlib	24	0.206	0.46	3	0.42	0.62	0.23	3.72	6.70	2.62	4.71	5.15	0.27	0.55	0.19	3.22	6.15	2.44	0.19	0.26	0.31	0.52	0.20	3.42	6.09	2.49	0.19	0.26
+108	common-stdlib	24	0.015	0.56	3	0.25	0.28	0.10	1.63	2.59	1.11	3.82	4.14	0.10	0.18	0.07	1.26	2.33	0.94	0.10	0.12	0.10	0.18	0.07	1.29	2.30	1.04	0.10	0.13
+114	iostream-stdlib	9	0.182	0.59	3	0.23	0.24	0.12						0.10	0.17	0.07						0.11	0.16	0.07					
+43	identFuncDeclarator	24	0.006	0.59	3	0.06	0.06	0.03	0.37	0.50	0.25	1.38	1.34	0.02	0.03	0.01	0.25	0.41	0.20	0.07	0.08	0.02	0.03	0.01	0.26	0.42	0.22	0.07	0.08
+100	variableDeclarator	24	0.006	0.60	3	0.06	0.06	0.03	0.38	0.51	0.25	1.40	1.34	0.02	0.04	0.01	0.25	0.44	0.20	0.06	0.09	0.02	0.04	0.01	0.27	0.43	0.22	0.07	0.09
+53	literals	18	0.380	0.61	3	2.89	0.91	0.71	7.08	3.78	3.32			0.24	0.24	0.15	2.56	2.75	2.43			0.20	0.22	0.14	2.47	2.68	2.44		
+20	designations	15	0.006	0.62	3	0.10	0.10	0.04				1.91	1.96	0.03	0.06	0.02				0.07	0.09	0.04	0.07	0.02				0.07	0.09
+81	shortCircuit	18	0.374	0.70	3	0.29	0.17	0.11	1.05	1.24	0.66			0.06	0.08	0.04	0.62	0.99	0.49			0.06	0.08	0.04	0.63	0.98	0.50		
+46	ifwhileCtl	18	0.377	0.70	3	0.26	0.16	0.12	0.90	1.20	0.60			0.12	0.10	0.06	0.69	1.06	0.53			0.09	0.10	0.06	0.65	1.04	0.52		
+42	hello	18	0.381	0.72	3	0.24	0.15	0.10	0.80	1.02	0.52			0.10	0.10	0.06	0.58	0.87	0.44			0.08	0.08	0.05	0.55	0.86	0.44		
+87	switch	24	0.007	0.72	3	0.06	0.07	0.03	0.44	0.62	0.31	1.39	1.36	0.02	0.04	0.02	0.33	0.53	0.25	0.07	0.09	0.02	0.04	0.02	0.33	0.52	0.28	0.07	0.08
+65	numericConstants	24	0.007	0.74	3	0.06	0.06	0.03	0.36	0.50	0.25	1.40	1.34	0.02	0.04	0.01	0.25	0.42	0.21	0.06	0.08	0.02	0.03	0.01	0.26	0.41	0.22	0.07	0.09
+52	limits	24	0.006	0.80	3	0.13	0.20	0.08	0.88	1.38	0.66	1.46	1.42	0.09	0.17	0.06	0.77	1.30	0.61	0.12	0.19	0.10	0.17	0.06	0.77	1.24	0.66	0.13	0.19
+51	labelledExit	24	0.007	0.81	3	0.06	0.07	0.03	0.43	0.61	0.30	1.38	1.35	0.02	0.04	0.02	0.31	0.53	0.25	0.07	0.08	0.02	0.04	0.02	0.33	0.52	0.27	0.07	0.08
+17	ctor-autogen	24	0.023	0.84	3	0.14	0.12	0.06	1.08	1.31	0.83	2.78	2.77	0.05	0.06	0.02	0.80	1.13	0.74	0.10	0.12	0.05	0.06	0.03	0.84	1.12	0.75	0.09	0.12
+5	attributes	24	0.006	0.84	3	0.08	0.08	0.03	0.45	0.63	0.30	1.73	1.74	0.02	0.04	0.02	0.30	0.53	0.24	0.07	0.08	0.02	0.04	0.02	0.32	0.51	0.25	0.07	0.08
+125	startup-stdlib	24	0.005	0.88	3	0.07	0.07	0.03	0.44	0.62	0.31	1.40	1.42	0.02	0.04	0.02	0.31	0.53	0.25	0.07	0.08	0.02	0.04	0.02	0.32	0.52	0.27	0.07	0.09
+19	declarationSpecifier	24	0.005	0.89	3	0.12	0.11	0.04	0.80	1.14	0.48	2.60	2.70	0.03	0.06	0.02	0.50	0.93	0.38	0.07	0.10	0.03	0.06	0.02	0.54	0.92	0.40	0.07	0.09
+29	fallthrough	24	0.007	0.91	3	0.06	0.06	0.03	0.37	0.52	0.25	1.39	1.35	0.02	0.04	0.01	0.25	0.44	0.20	0.07	0.09	0.02	0.03	0.01	0.26	0.42	0.22	0.07	0.08
+95	tuplePolymorphism	22	0.014	0.93	3	0.07	0.08	0.03	0.58	0.78	0.43	1.52	1.56	0.02		0.02	0.45	0.69	0.38	0.07	0.09	0.03		0.02	0.48	0.70	0.41	0.07	0.10
+28	extension	24	0.006	0.94	3	0.08	0.07	0.03	0.52	0.66	0.37	1.54	1.53	0.03	0.04	0.02	0.40	0.57	0.30	0.08	0.10	0.02	0.04	0.02	0.39	0.56	0.33	0.08	0.10
+37	gccExtensions	24	0.006	0.97	3	0.07	0.07	0.03	0.47	0.60	0.34	1.52	1.47	0.02	0.04	0.01	0.36	0.53	0.30	0.08	0.10	0.02	0.04	0.02	0.38	0.52	0.31	0.08	0.10
+105	with-statement	24	0.017	0.97	3	0.08	0.07	0.04	0.58	0.73	0.42	1.98	1.88	0.02	0.04	0.02	0.42	0.63	0.36	0.07	0.09	0.02	0.04	0.02	0.44	0.62	0.37	0.07	0.09
+82	simpleGenericTriple	24	0.021	0.98	3	0.08	0.08	0.04	0.78	0.99	0.69	2.34	2.12	0.03	0.05	0.02	0.64	0.88	0.60	0.09	0.10	0.03	0.04	0.02	0.64	0.87	0.63	0.09	0.10
+93	tupleFunction	15	0.006	0.98	3	0.07	0.07	0.03				1.46	1.43	0.02	0.04	0.02				0.07	0.09	0.02	0.04	0.02				0.07	0.09
+68	polymorphism	21	0.021	0.99	3			0.41	1.75	1.43	0.69	36.87	31.84	0.08		0.04	0.52	0.80	0.42	0.39	0.29	0.08	0.08	0.04	0.54	0.81	0.44	0.38	0.29
+32	forall	15	0.196	0.99	3	60.88	37.88	27.72	55.92		33.84			0.59	0.36	0.26				3.61	2.12	0.43	0.33	0.23				3.36	1.92
+36	functions	24	0.006	1.00	3	0.06	0.06	0.03	0.38	0.53	0.25	1.43	1.43	0.02	0.04	0.01	0.26	0.44	0.20	0.07	0.09	0.02	0.04	0.01	0.27	0.43	0.22	0.06	0.09
+77	result	24	0.072	1.01	3	0.12	0.10	0.06	1.06	1.22	0.89	2.30	2.16	0.05	0.06	0.03	0.85	1.06	0.77	0.11	0.13	0.06	0.06	0.03	0.84	1.04	0.81	0.11	0.12
+64	nested-types	24	0.015	1.01	3	0.07	0.07	0.03	0.59	0.74	0.44	1.98	1.86	0.02	0.04	0.02	0.42	0.62	0.37	0.07	0.09	0.02	0.03	0.02	0.44	0.62	0.38	0.07	0.09
+3	array	24	0.007	1.01	3	0.06	0.06	0.03	0.38	0.52	0.27	1.39	1.34	0.02	0.03	0.01	0.25	0.43	0.21	0.07	0.09	0.02	0.03	0.01	0.27	0.43	0.22	0.06	0.08
+102	voidPtr	24	0.007	1.02	3	0.06	0.06	0.03	0.38	0.50	0.25	1.37	1.35	0.02	0.04	0.01	0.25	0.42	0.20	0.06	0.08	0.02	0.03	0.01	0.26	0.40	0.22	0.06	0.08
+26	enum	24	0.006	1.03	3	0.06	0.06	0.03	0.39	0.53	0.26	1.38	1.34	0.02	0.04	0.01	0.26	0.46	0.22	0.07	0.08	0.02	0.04	0.01	0.27	0.44	0.24	0.06	0.08
+12	cast	24	0.007	1.03	3	0.06	0.06	0.03	0.38	0.51	0.24	1.38	1.34	0.02	0.03	0.01	0.26	0.42	0.20	0.07	0.09	0.02	0.03	0.01	0.26	0.41	0.22	0.07	0.09
+98	typeof	24	0.007	1.03	3	0.06	0.06	0.03	0.36	0.50	0.24	1.39	1.33	0.02	0.04	0.01	0.25	0.43	0.20	0.07	0.08	0.02	0.03	0.01	0.26	0.41	0.21	0.06	0.08
+80	self-assignment	24	0.006	1.04	3	0.06	0.07	0.03	0.43	0.56	0.28	1.48	1.50	0.02	0.04	0.01	0.28	0.48	0.23	0.07	0.09	0.02	0.04	0.02	0.30	0.49	0.24	0.06	0.09
+115	iterator-stdlib	24	0.018	1.04	3	0.06	0.06	0.03	0.37	0.48	0.24	1.35	1.34	0.02	0.04	0.01	0.25	0.41	0.20	0.07	0.09	0.02	0.03	0.01	0.25	0.39	0.21	0.06	0.08
+11	castError	24	0.007	1.04	3	0.06	0.06	0.03	0.38	0.52	0.26	1.39	1.34	0.02	0.04	0.01	0.26	0.43	0.21	0.07	0.09	0.02	0.03	0.01	0.26	0.42	0.23	0.07	0.08
+27	expression	24	0.007	1.04	3	0.07	0.07	0.03	0.44	0.62	0.30	1.45	1.37	0.02	0.04	0.02	0.32	0.54	0.26	0.07	0.09	0.02	0.04	0.02	0.33	0.52	0.27	0.07	0.09
+92	tupleCast	24	0.007	1.05	3	0.06	0.06	0.02	0.38	0.51	0.25	1.29	1.28	0.02	0.03	0.01	0.26	0.42	0.20	0.07	0.09	0.02	0.03	0.01	0.26	0.42	0.22	0.06	0.09
+13	completeTypeError	24	0.008	1.05	3	0.07	0.06	0.03	0.38	0.52	0.27	1.38	1.39	0.02	0.03	0.01	0.25	0.42	0.20	0.07	0.09	0.02	0.03	0.01	0.26	0.42	0.22	0.07	0.08
+66	operators	24	0.006	1.06	3	0.06	0.07	0.03	0.45	0.61	0.30	1.43	1.43	0.02	0.04	0.01	0.32	0.55	0.26	0.07	0.10	0.02	0.04	0.02	0.33	0.52	0.28	0.07	0.09
+59	maybe	24	0.035	1.06	3	0.08	0.09	0.04	0.73	0.90	0.60	2.05	1.98	0.04	0.05	0.02	0.56	0.77	0.52	0.10	0.11	0.04	0.05	0.02	0.57	0.75	0.50	0.10	0.11
+45	identParamDeclarator	24	0.007	1.07	3	0.06	0.06	0.02	0.37	0.52	0.26	1.38	1.34	0.02	0.04	0.01	0.25	0.44	0.20	0.07	0.09	0.02	0.03	0.01	0.27	0.42	0.22	0.07	0.08
+97	typedefRedef	24	0.007	1.07	3	0.06	0.06	0.03	0.37	0.50	0.24	1.39	1.32	0.02	0.04	0.01	0.26	0.42	0.20	0.06	0.08	0.02	0.04	0.01	0.26	0.41	0.21	0.06	0.08
+117	limits-stdlib	21	0.005	1.07	3	0.16	0.24	0.10	1.37	2.25	1.06	1.87		0.12	0.22	0.08	1.18	2.08	0.97	0.47		0.12	0.22	0.08	1.21	2.06	1.01	0.48	
+50	KRfunctions	24	0.006	1.08	3	0.07	0.06	0.03	0.50	0.72	0.36	1.42	1.44	0.02	0.04	0.01	0.39	0.60	0.32	0.07	0.08	0.02	0.03	0.01	0.40	0.61	0.32	0.07	0.08
+16	counter	24	0.007	1.08	3	0.07	0.07	0.03	0.41	0.54	0.26	1.42	1.44	0.02	0.04	0.01	0.26	0.44	0.22	0.07	0.09	0.02	0.03	0.01	0.27	0.43	0.22	0.07	0.09
+60	memberCtors	24	0.006	1.09	3	0.08	0.08	0.03	0.46	0.62	0.30	1.56	1.59	0.02	0.04	0.02	0.32	0.54	0.24	0.07	0.09	0.02	0.04	0.02	0.33	0.51	0.26	0.07	0.09
+121	pair-stdlib	24	0.054	1.10	3	0.08	0.08	0.04	0.76	0.94	0.64	2.29	2.09	0.03	0.04	0.02	0.60	0.83	0.55	0.07	0.09	0.02	0.04	0.02	0.61	0.82	0.56	0.08	0.09
+118	maybe-stdlib	24	0.031	1.17	3	0.08	0.08	0.04	0.72	0.89	0.55	1.90	1.83	0.03	0.05	0.02	0.58	0.77	0.50	0.08	0.10	0.04	0.04	0.02	0.59	0.76	0.52	0.08	0.10
+124	result-stdlib	24	0.073	1.22	3	0.11	0.10	0.06	1.16	1.31	1.01	2.25	2.15	0.05	0.06	0.03	0.98	1.16	0.87	0.10	0.11	0.05	0.05	0.03	0.97	1.12	0.88	0.10	0.12
+88	sync	24	0.007	1.68	3	0.17	0.27	0.11	12.86	23.53	10.28	1.61	1.64	0.13	0.24	0.09	12.75	22.91	10.20	0.28	0.38	0.13	0.23	0.10	13.41	23.56	10.11	0.28	0.37
+84	stdincludes	24	0.002	0.36	4	1.37	2.44	0.82	11.87	22.11	9.01	8.80	10.05	1.09	2.23	0.77	11.11	21.48	8.68	0.64	0.98	1.15	2.21	0.78	11.86	21.23	8.70	0.64	0.94
+25	else	18	0.179	0.58	4	3.81	2.54	1.32	20.86	23.70	13.66			0.87	1.55	0.64	14.18	21.48	12.28			0.88	1.53	0.64	14.20	21.53	12.37		
+126	stdlib-stdlib	24	0.028	0.62	4	0.65	0.94	0.34	5.36	9.42	4.01	6.66	7.63	0.43	0.81	0.30	4.86	9.11	3.88	1.15	1.68	0.49	0.80	0.30	4.93	8.87	3.78	1.18	1.64
+73	random	18	0.259	0.67	4	4.28	1.74	1.40	11.44	9.89	6.63			0.53	0.59	0.34	5.06	7.45	4.32			0.50	0.57	0.33	5.07	7.30	4.28		
+23	dtor-early-exit	18	0.285	0.69	4	4.52	1.66	1.18	12.31	9.55	6.54			0.59	0.60	0.33	5.85	7.77	5.12			0.48	0.53	0.31	5.64	7.58	5.06		
+6	avl_test	24	0.100	0.71	4	2.50	1.54	0.70	4.83	6.32	3.38	7.86	7.43	0.24	0.35	0.14	3.25	5.06	2.78	0.74	1.08	0.23	0.34	0.14	3.28	5.01	2.78	0.74	0.99
+4	ato	18	0.289	0.76	4	5.78	2.33	1.92	37.44	20.30	18.00			0.76	0.70	0.44	13.36	14.42	12.63			0.59	0.63	0.42	12.89	14.18	12.67		
+96	tupleVariadic	24	0.047	0.76	4	0.34	0.43	0.17	2.94	4.60	2.25	4.72	5.20	0.16	0.30	0.11	2.56	4.28	2.08	0.70	0.99	0.18	0.30	0.12	2.76	4.28	2.12	0.72	1.00
+39	globals	18	0.360	0.81	4	3.78	1.04	0.88	9.45	5.01	4.38			0.26	0.19	0.15	3.34	3.52	3.26			0.20	0.17	0.14	3.25	3.48	3.16		
+76	references	24	0.006	0.99	4	0.09	0.10	0.05	0.66	0.87	0.49	1.57	1.56	0.04	0.06	0.03	0.51	0.79	0.44	0.08	0.10	0.04	0.06	0.04	0.53	0.76	0.45	0.08	0.10
+94	tupleMember	24	0.006	1.00	4	0.07	0.07	0.03	0.72	0.89	0.58	1.57	1.56	0.02	0.04	0.02	0.61	0.82	0.53	0.10	0.14	0.02	0.04	0.02	0.62	0.81	0.55	0.10	0.15
+38	genericUnion	24	0.018	1.04	4	0.08	0.07	0.04	0.57	0.71	0.43	1.86	1.74	0.02	0.04	0.02	0.40	0.60	0.34	0.07	0.09	0.02	0.04	0.02	0.42	0.59	0.38	0.07	0.09
+131	imgui	15	0.013	0.35	5	3.27	6.84	2.19				16.64	16.19	3.05	6.48	2.16				8.30	6.76	3.09	6.45	2.21				8.34	6.74
+113	interpose-stdlib	24	0.002	0.37	5	1.04	1.76	0.61	9.38	17.32	6.91	7.57	8.50	0.77	1.59	0.56	8.53	17.04	6.46	0.40	0.57	0.82	1.58	0.56	9.14	16.60	6.61	0.41	0.56
+22	div	7	0.287	0.64	5	0.51		0.24						0.26		0.16						0.26	0.40	0.16					
+2	alloc	24	0.226	0.65	5	0.58	0.84	0.30	5.35	8.86	3.73	6.48	7.04	0.37	0.73	0.26	4.52	8.41	3.52	0.80	1.17	0.40	0.72	0.26	4.65	8.26	3.56	0.80	1.12
+35	function-operator	22	0.300	0.69	5	0.92	0.88	0.46	7.26	9.68	5.90			0.47	0.66	0.32	6.34	9.28	5.68	43.45	24.98	0.49	0.65	0.32	6.38	9.18	5.68	44.13	24.39
+33	forctrl	9	0.369	0.73	5	15.40	3.36	2.58						0.34	0.25	0.15						0.32	0.25	0.16					
+74	rational	9	0.432	0.74	5				40.37	24.91	23.88											10.58	2.97	5.09	22.88	17.00	16.47		
+86	swap	9	0.286	0.77	5	189.91	41.81	34.77						3.49	2.16	1.49						3.07	1.99	1.54					
+99	user_literals	18	0.347	0.77	5	2.67	0.84	0.69	6.57	4.10	3.32			0.26	0.22	0.15	2.74	3.13	2.56			0.21	0.20	0.14	2.65	3.02	2.47		
+123	rational-stdlib	17	0.340	0.78	5	3.46		2.22	13.74	13.61	10.39			1.45	1.05	0.90	10.39	12.16	8.52			1.39	1.05	0.89	9.70	11.71	8.51		
+44	identity	18	0.382	0.81	5	7.14	1.89	1.85	16.70	7.09	7.08			0.49	0.31	0.43	5.26	4.81	5.23			0.39	0.29	0.41	4.96	4.73	5.20		
+47	init_once	24	0.006	0.82	5	0.13	0.12	0.06	0.69	0.85	0.42	1.77	1.70	0.03	0.06	0.02	0.38	0.64	0.31	0.10	0.11	0.04	0.05	0.02	0.39	0.63	0.32	0.10	0.12
+130	glm	23	0.206	1.43	5	2.32	1.64	1.00	11.09	12.74	9.01	581.81		1.80	1.17	0.69	9.82	11.68	8.21	7.12	3.45	1.30	1.08	0.67	9.30	11.54	8.30	5.70	3.10
+31	fmtLines	18	0.185	0.55	6	0.70	1.04	0.38	7.75	11.99	6.17			0.46	0.85	0.31	6.93	11.36	5.86			0.45	0.84	0.31	7.12	11.38	5.87		
+78	runningTotal	18	0.185	0.55	6	3.71	1.90	1.14	41.03	27.42	21.82			0.50	0.89	0.34	15.90	19.76	15.90			0.51	0.88	0.36	15.87	19.56	15.44		
+30	fibonacci	18	0.185	0.55	6	3.70	1.89	1.09	41.47	27.54	21.79			0.50	0.87	0.34	16.03	19.51	15.25			0.56	0.86	0.33	15.89	19.44	15.25		
+67	pingpong	18	0.184	0.55	6	0.66	1.02	0.36	7.66	12.08	6.14			0.44	0.87	0.31	6.98	11.44	6.07			0.48	0.84	0.32	7.11	11.41	5.91		
+58	matrixSum	18	0.168	0.62	6	1.45	2.18	0.78	15.13	24.42	11.94			0.91	1.83	0.64	13.62	22.76	11.39			1.01	1.78	0.64	13.91	22.78	11.40		
+70	prodcons	15	0.170	0.62	6	3.14	2.26	1.05	103.80		46.33			0.86	1.54	0.59	41.53		43.00			0.88	1.50	0.59	41.04		42.18		
+24	dtor	18	0.168	0.62	6	1.34	2.16	0.74	14.73	23.76	11.81			0.94	1.80	0.64	13.50	22.59	11.60			0.95	1.76	0.65	13.80	22.70	11.28		
+62	monitor	18	0.168	0.62	6	1.44	2.17	0.79	15.02	23.82	11.88			0.91	1.78	0.63	13.47	22.57	11.47			0.99	1.76	0.65	13.73	22.57	11.33		
+63	multi-monitor	9	0.168	0.63	6	9.02	4.11	2.28						1.02	1.87	0.67						1.04	1.80	0.68					
+89	thread	18	0.168	0.63	6	2.24	2.42	0.94	16.81	24.65	12.67			0.95	1.79	0.65	14.08	23.27	11.98			1.04	1.79	0.67	14.62	23.11	11.94		
+10	boundedBufferINT	18	0.162	0.63	6	1.86	2.45	0.92	18.52	28.08	14.83			1.03	2.03	0.74	16.52	26.69	14.16			1.06	1.99	0.74	16.76	26.59	14.22		
+9	boundedBufferEXT	18	0.161	0.63	6	1.85	2.43	0.91	18.47	27.92	14.68			1.01	2.01	0.73	16.42	26.65	13.93			1.12	1.98	0.74	16.63	26.54	14.04		
+104	when	18	0.166	0.64	6	4.31	3.01	1.46	22.07	27.72	15.34			1.09	1.94	0.75	16.27	25.72	13.99			1.07	1.92	0.76	16.56	25.56	13.84		
+75	recurse	18	0.166	0.64	6	1.60	2.37	0.86	15.97	25.56	12.86			0.99	1.91	0.68	14.41	24.37	12.19			1.03	1.89	0.70	14.82	24.23	12.18		
+71	quickSort	18	0.166	0.64	6	1.62	2.24	0.85	16.68	26.62	13.41			1.01	1.86	0.68	15.22	25.33	13.04			0.99	1.88	0.69	15.40	25.21	12.88		
+7	barge	18	0.166	0.64	6	1.56	2.25	0.81	15.83	25.04	12.50			0.94	1.87	0.66	14.08	23.70	11.70			0.96	1.85	0.67	14.39	23.87	11.80		
+122	preemption-stdlib	18	0.021	0.66	6	2.78	5.02	1.66	32.19	55.31	25.87			2.22	4.68	1.60	30.75	53.38	25.61			2.27	4.42	1.61	31.40	53.12	25.04		
+83	statement	9	0.166	0.67	6	12.22	4.57	2.46						1.52	2.25	0.95						1.32	2.20	0.95					
+72	quoted_keyword	18	0.364	0.68	6	0.28	0.18	0.11	1.10	1.27	0.72			0.06	0.08	0.03	0.64	1.04	0.54			0.06	0.08	0.04	0.66	1.01	0.53		
+1	abs	9	0.290	0.68	6	19.00	4.22	3.55						0.90	0.74	0.65						0.68	0.69	0.64					
+41	heap	24	0.031	0.70	6	1.28	2.20	0.74	15.39	25.18	12.37	11.78	13.60	0.93	1.88	0.66	14.14	23.75	11.84	1.39	2.07	1.00	1.84	0.66	14.38	23.84	11.87	1.40	2.01
+116	kernel-stdlib	9	0.020	0.70	6	3.34	6.02	1.98						2.58	5.37	1.88						2.92	5.37	1.91					
+15	coroutineYield	18	0.150	0.76	6	1.59	2.72	0.90	18.60	30.32	14.87			1.14	2.33	0.81	17.15	29.10	14.34			1.16	2.30	0.82	17.60	29.24	14.34		
+103	wait	18	0.146	0.78	6	1.68	2.88	0.97	19.30	31.99	15.48			1.20	2.40	0.84	17.85	30.83	14.80			1.22	2.37	0.92	18.31	30.56	14.89		
+21	disjoint	18	0.147	0.78	6	2.28	2.99	1.10	20.99	32.77	16.28			1.23	2.46	0.86	18.42	30.99	15.62			1.25	2.44	0.88	18.93	31.17	15.50		
+79	searchsort	9	0.286	0.79	6	118.20	27.14	23.12						1.93	1.45	1.14						1.84	1.44	1.16					
+69	preempt	18	0.028	0.79	6	1.40	2.49	0.81	17.14	28.17	13.72			1.06	2.13	0.73	15.81	27.05	13.23			1.16	2.10	0.75	16.14	26.76	13.20		
+127	thread-stdlib	18	0.028	0.81	6	1.56	2.68	0.89	17.86	29.44	14.44			1.14	2.30	0.82	16.69	28.43	13.82			1.24	2.26	0.83	16.86	28.13	13.83		
+109	coroutine-stdlib	18	0.026	0.81	6	1.52	2.66	0.88	17.79	29.22	14.26			1.11	2.24	0.81	16.46	28.13	14.32			1.18	2.26	0.80	16.78	28.08	13.85		
+129	vector-stdlib	24	0.095	0.82	6	0.44	0.49	0.21	5.20	6.92	4.32	5.82	6.18	2.16	0.59	0.31	7.37	6.87	4.34	0.71	1.01	2.19	0.58	0.32	7.42	6.80	4.34	0.74	1.02
+106	alarm-stdlib	18	0.027	0.84	6	1.55	2.61	0.86	17.73	29.27	14.13			1.10	2.21	0.80	16.34	28.05	13.48			1.16	2.20	0.79	16.78	27.97	13.66		
+128	time-stdlib	9	0.233	0.87	6	0.80	0.66	0.35						0.27	0.48	0.20						0.27	0.46	0.20					
+120	mutex-stdlib	18	0.032	0.93	6	1.65	2.93	0.96	19.25	31.00	15.65			1.18	2.33	0.86	17.86	29.66	15.05			1.20	2.28	0.86	18.33	29.81	15.24		
+119	monitor-stdlib	18	0.028	1.02	6	2.23	3.65	1.21	21.00	34.14	16.70			1.32	2.62	0.95	19.08	32.21	15.77			1.35	2.62	0.96	19.61	32.46	16.05		
+57	math4	9	0.256	1.33	6	263.83	50.37	38.46						4.12	2.28	1.60						3.56	2.11	1.54					
+14	complex	9	0.273	0.45	7	6.69	1.15	0.76						0.34	0.27	0.17						0.24	0.25	0.16					
+18	datingService	22	0.155	0.63	7	1.34	2.26	0.77	15.95	25.94	12.86			0.96	1.96	0.69	14.68	24.85	12.44	1.41	2.04	0.97	1.96	0.70	15.41	24.87	12.28	1.40	1.95
+112	heap-stdlib	15	0.025	0.65	7	1.09	1.64	0.58				9.66	11.16	0.71	1.39	0.50				1.15	1.63	0.80	1.39	0.50				1.16	1.62
+61	minmax	9	0.289	0.77	7	121.62	24.73	20.00						3.10	1.60	1.12						2.24	1.35	1.04					
+8	block	18	0.147	0.79	7	1.79	2.90	0.99	21.16	32.70	16.21			1.25	2.46	0.86	18.60	31.06	15.58			1.34	2.40	0.89	18.78	31.18	15.41		
+101	vector	16	0.406	1.08	7	30.70	4.14	2.74	528.78	165.96	173.38			1.88	0.69	0.62	598.19		613.50			0.80	0.48	0.53	587.72		601.29		
+56	math3	9	0.257	1.29	8	366.77	51.41	34.29						4.10	1.95	1.45						3.39	1.80	1.38					
+55	math2	9	0.257	1.32	8	514.78	71.97	47.42						5.73	2.63	2.04						4.74	2.38	1.92					
+85	sum	9	0.288	0.76	9	25.84		3.76			362.14			23.79	4.95	3.74						1.15	0.89	0.61					
+90	time	9	0.290	1.08	9	17.38	3.81	2.96						0.90	0.63	0.40						0.58	0.55	0.37					
+40	gmp	9	0.256	1.25	9	7.18	2.08	1.56						0.98	0.71	0.48						0.62	0.64	0.44					
+54	math1	8	0.256	1.29	10		47.88	32.34						3.94	1.98	1.52						3.22	1.76	1.46					
+34	fstream_test	9	0.381	0.75	11	20.12	3.94	2.85						0.82	0.31	0.22						0.29	0.20	0.17					
+91	tupleAssign	9	0.377	0.90	12	53.22	6.62	4.63						2.35	0.72	0.59						0.68	0.38	0.41					
+48	io1	3	0.381	1.09	24																	2.11	1.14	1.75					
+49	io2	6	0.376	1.39	34									11.35	3.73	3.22						7.99	3.08	2.86					
Index: doc/theses/aaron_moss_PhD/phd/experiments.tex
===================================================================
--- doc/theses/aaron_moss_PhD/phd/experiments.tex	(revision 92d41a4af1542b1fcfd3bacde48933e4c8519366)
+++ doc/theses/aaron_moss_PhD/phd/experiments.tex	(revision 92d41a4af1542b1fcfd3bacde48933e4c8519366)
@@ -0,0 +1,259 @@
+\chapter{Experiments}
+\label{expr-chap}
+
+I implemented a prototype system to test the practical effectiveness of the various algorithms described in Chapters~\ref{resolution-chap} and~\ref{env-chap}. 
+This prototype system implements the expression resolution pass of the \CFA{} compiler, \CFACC{}, with a simplified version of the \CFA{} type system and a parser to read in problem instances, and is published online under a permissive licence\footnote{\url{https://github.com/cforall/resolv-proto}}. 
+The resolver prototype allows for quicker iteration on algorithms due to its simpler language model and lack of a requirement to generate runnable code, yet captures enough of the nuances of \CFA{} to have predictive power for the runtime performance of algorithmic variants in \CFACC{} itself. 
+
+\CFACC{} can generate realistic test inputs for the resolver prototype from equivalent \CFA{} code; 
+the generated test inputs currently comprise all \CFA{} code currently extant, $9,000$ lines drawn primarily from the standard library and compiler test suite. 
+\CFACC{} is also instrumented to produce a number of code metrics. 
+These metrics were used to construct synthetic test inputs during development of the resolver prototype; these synthetic inputs provided useful design guidance, but the performance results presented in this chapter are based on the more realistic directly-generated inputs.
+
+% There are three sources of problem instances for the resolver prototype. 
+% The first is small, hand-written tests designed to test the expressive power and correctness of the prototype. 
+% These tests are valuable for regression testing, but not time-consuming enough to be useful performance tests. 
+% The second sort of problem instances are procedurally generated according to a set of parameters (distributions of polymorphic versus monomorphic functions, number of function arguments, number of types, \etc{}); the procedural problem generator can be used to explore the behaviour of an algorithm with respect to certain sorts of problem instances by varying the input parameters. 
+% I have implemented a flagged \CFACC{} pass which outputs information which can be used to initialize the procedural generator's parameters to realistic values. 
+% The final sort of problem instances are derived from actual \CFA{} code. 
+% The prototype has a rich enough representation of \CFA{} that actual instances of expression resolution can be expressed with good fidelity, and I have implemented a compiler pass for \CFACC{} which can generate instances from \CFA{} code. 
+% Since at this juncture all development in \CFA{} is done by our research team, I have tested the prototype system on all \CFA{} code currently extant, primarily the standard library and compiler test suite.
+
+\section{Resolver Prototype Features} \label{rp-features-sec}
+
+The resolver prototype can express most of the \CFA{} features described in Chapter~\ref{cfa-chap}. 
+It supports both monomorphic and polymorphic functions, with type assertions for polymorphic functions. 
+Traits are not explicitly represented, but \CFACC{} inlines traits before the resolver pass, so this is a faithful representation of the existing compiler. 
+The prototype system supports variable declarations as well as function declarations, and has a lexical-scoping scheme and \CFA{}-like overloading rules. 
+
+The type system of the resolver prototype also captures key aspects of the \CFA{} type system. 
+\emph{Concrete types} represent the built-in arithmetic types of \CFA{}, along with the implicit conversions among them. 
+Each concrete type is represented by an integer identifier, and the conversion cost from $x$ to $y$ is $|y-x|$, a safe conversion if $y > x$, or an unsafe conversion if $y < x$. 
+This scheme is markedly simpler than the graph of conversion costs in \CFA{} (Figure~\ref{safe-conv-fig}), but captures the essentials of the design. 
+For simplicity, !zero_t! and !one_t!, the types of !0! and !1!, are represented by the type corresponding to !int!.
+\emph{Named types} are analogues to \CFA{} aggregates, such as structs and unions; aggregate fields are encoded as unary functions from the struct type to the field type, with the function named based on the field name. 
+Named types also support type parameters, and as such can represent generic types as well. 
+Generic named types are used to represent the built-in parameterized types of \CFA{} as well; !T*! is encoded as \texttt{\#\$ptr<T>}. 
+\CFA{} arrays are also represented as pointers, to simulate array-to-pointer decay, while top-level reference types are replaced by their referent to simulate the variety of reference conversions. 
+\emph{Function types} have first-class representation in the prototype as well; \CFA{} function function pointers are represented as variables with the appropriate function type, though \CFA{} polymorphic function pointers cannot be represented, as the prototype system function type does not store information about type assertions.
+\emph{Void} and \emph{tuple types} are also supported in the prototype, to express the multiple-return-value functions in \CFA{}, though varargs functions and !ttype! tuple-typed type variables are absent from the prototype system.
+The prototype system also does not represent type qualifiers (\eg{} !const!, !volatile!), so all such qualifiers are stripped during conversion to the prototype system. 
+
+The resolver prototype supports three sorts of expressions in its input language. 
+The simplest are \emph{value expressions}, which are expressions declared to be a certain type; these implement literal expressions in \CFA{}, and, already being typed, are passed through the resolver unchanged.
+The second sort, \emph{name expressions}, represent a variable expression in \CFA{}; these contain the name of a variable or function, and are matched to an appropriate declaration overloading that name. 
+The third input expression, the \emph{function expression}, represents a call to a function, with a name and zero or more argument subexpressions. 
+As is usual in \CFA{}, operators are represented as function calls; however, as mentioned above, the prototype system represents field access expressions !a.f! as function expressions as well. 
+
+The main area for future expansion in the design of the resolver prototype is conversions. 
+Cast expressions are implemented in the output language of the resolver, but cannot be expressed in the input. 
+The only implicit conversions supported are among the arithmetic-like concrete types, which captures most, but not all, of \CFA{}'s built-in implicit conversions\footnote{Notable absences include \lstinline{void*} to other pointer types, or \lstinline{0} to pointer types.}. 
+Future work should include a way to express implicit (and possibly explicit) conversions in the input language, with an investigation of the most efficient way to handle implicit conversions, and potentially a design for user-defined conversions.
+
+\section{Resolver Prototype Design}
+
+As discussed above, for speed of development the resolver prototype works over a simplified version of the \CFA{} type system. 
+The build system for the resolver prototype uses a number of conditional compilation flags to switch among algorithm variants while retaining maximally shared code. 
+A distinct executable name is also generated for each algorithmic variant so that distinct variants can be more easily tested against each other.
+
+The primary architectural difference between the resolver prototype and \CFACC{} is that the prototype system uses a simple mark-and-sweep garbage collector for memory management, while \CFACC{} uses a manual memory-management approach. 
+This architectural difference affects the mutation patterns used by both systems: \CFACC{} frequently makes deep clones of multi-node object graphs to ensure that there is a single ``owner'' for each object which can safely delete it later; the prototype system, by contrast, relies on its garbage collector to handle ownership, and can often copy pointers rather than cloning objects. 
+The resolver prototype thus only needs to clone nodes which it modifies, and can share un-modified children between clones; the tree mutator abstraction in the prototype is designed to take advantage of this property. 
+The key design decision enabling this is that all child nodes are held by !const! pointer, and thus cannot be mutated once they have been stored in a parent node.
+With minimal programming discipline, it can thus be ensured that any expression is either mutable or shared, but never both; the Dotty research compiler for Scala takes a similar architectural approach \cite{Dotty-github}.
+
+Given the significantly better performance results from the resolver prototype than \CFACC{} and profiling data showing that memory allocation is a large component of \CFACC{} runtime, I attempted to port this garbage collector to \CFACC{}, but without success.
+The GC could be used for memory management with few changes to the code-base, but without a substantial re-write to enforce the same ``!const! children'' discipline, \CFACC{} could not take advantage of the potential to share sub-objects; without sharing of sub-objects the GC variant of \CFACC{} must do all the same allocations and deletions and garbage-collector overhead degraded performance unacceptably (though it did fix some known memory leaks introduced by failures of the existing manual memory-management scheme).
+
+Another minor architectural difference between the prototype system and \CFACC{} is that \CFACC{} makes extensive use of the pointer-based !std::list!, !std::set!, and !std::map! data structures, while the prototype uses the array-based !std::vector! and the hash-based !unordered_! variants of !set! and !map! instead. 
+Porting the prototype to use the pointer-based data structures resulted in modest performance regressions, whereas preliminary results from porting \CFACC{} to use !std::vector! over !std::list! also showed performance regressions, in some cases significant.
+The relative performance impact of this architectural difference is unclear, and thus excluded from consideration.
+
+The final difference between \CFACC{} and the resolver prototype is that, as an experiment in language usability, the prototype performs resolution-based rather than unification-based assertion satisfaction, as discussed in Section~\ref{resn-conclusion-sec}. 
+This change enables coding patterns not available in \CFACC{}, \eg{} a more flexible approach to type assertion satisfaction and better handling of functions returning polymorphic type variables that do not exist in the parameter list. 
+The experimental results in Section~\ref{proto-exp-sec} indicate that this choice is not a barrier to a performant resolver.
+% \TODO{test performance; shouldn't be too hard to change \texttt{resolveAssertions} to use unification}
+
+\section{Prototype Experiments} \label{proto-exp-sec}
+
+The primary performance experiments for this thesis are conducted using the resolver prototype on problem instances generated from actual \CFA{} code using the method described in Section~\ref{rp-features-sec}. 
+The prototype is compiled in 24 variants over 3 variables, with variants identified by the hyphen-separated concatenation of their short codes, \eg{} \textsc{bu-imm-bas} for bottom-up traversal, immediate assertion satisfaction, basic type environment. 
+The variables and their values are as follows:
+
+\begin{description}
+	\item[Traversal direction] The order in which arguments are matched with parameters, as discussed in Section~\ref{arg-parm-matching-sec}.
+	\begin{description}
+		\item[Bottom-up] (\textsc{bu}) Baker-style bottom-up pass, searching for function candidates based on the available argument interpretations.
+		\item[Combined] (\textsc{co}) Bilson-style bottom-up pass, where argument interpretations are combined into a single interpretation for each set of options.
+		\item[Top-down] (\textsc{td}) Cormack-style top-down pass, searching for argument interpretations based on function candidate parameter types. The \textsc{td-*} variants of the resolver prototype implement a caching system to avoid re-computation of the same argument interpretation with the same type.
+	\end{description}
+	\item[Assertion satisfaction] The algorithm for finding satisfying declarations for type assertions, as discussed in Section~\ref{assn-sat-sec}.
+	\begin{description}
+		\item[Immediate] (\textsc{imm}) All assertions are checked for satisfaction immediately upon generating a candidate interpretation. The techniques discussed in Section~\ref{assn-sat-sec} for environment combination and level-by-level consideration of recursive assertions are applied here.
+		\item[Deferred] (\textsc{def}) As in \textsc{imm}, but only checks minimal-cost top-level interpretations after all top-level interpretations have been generated.
+		\item[Deferred Cached] (\textsc{dca}) As in \textsc{def}, but uses the caching optimization discussed in Section~\ref{assn-sat-sec}.
+	\end{description}
+	\item[Type Environment] The type environment data structure used, as discussed in Chapter~\ref{env-chap}.
+	\begin{description}
+		\item[Basic] (\textsc{bas}) Bilson-style type environment with hash-based equivalence class storage, as discussed in Section~\ref{naive-env-sec}.
+		\item[Incremental Inheritance] (\textsc{inc}) Incremental-inheritance variant sharing unmodified common parent information among environments, as discussed in Section~\ref{inc-env-sec}.
+		\item[Persistent union-find] (\textsc{per}) Union-find-based environment, using the persistent variant discussed in Section~\ref{env-persistent-union-find} for backtracking and combination. This variant requires that all pairs of type arguments used as arguments to $combine$ descent from a common root environment; this requirement is incompatible with the caching used in the top-down traversal direction, and thus no \textsc{td-*-per} algorithms are tested.
+	\end{description}
+\end{description}
+
+To test the various algorithms, the resolver prototype is compiled using \texttt{g++} 6.5.0 with each of the 24 valid combinations of variables\footnote{Namely, all combinations except \textsc{td-*-per}.}, and then timed running each of the \CFA{}-derived test inputs. 
+Terminal output is suppressed for all tests to avoid confounding factors in the timing results, and all tests are run three times in series, with the median result reported in all cases.
+The medians are representative data points; considering test cases that took at least 0.2~s to run, the average run was within 2\% of the reported median runtime, and no run diverged by more than 20\% of median runtime or 5.5~s. 
+The memory results are even more consistent, with no run exceeding 2\% difference from median in peak resident set size, and 93\% of tests recording identical peak memory usage within the 1~KB granularity of the measurement software. 
+All tests were run on a machine with 128~GB of RAM and 64 cores running at 2.2~GHz.
+
+\begin{figure}
+	\centering
+	\input{tests-completed}
+	\caption[Tests completed for each algorithmic variant]{Number of tests completed for each algorithmic variant} \label{tests-completed-fig}
+\end{figure}
+
+As a matter of experimental practicality, test runs that exceeded 8~GB of peak resident memory usage are excluded from the data set. 
+This restriction is justifiable by real-world use, as a compiler that is merely slow may be accommodated with patience, but one that uses in excess of 8~GB of RAM may be impossible to run on many currently deployed computer systems. 
+8~GB of RAM is not typical of the memory usage of the best-peforming two variants, \textsc{bu-dca-bas} and \textsc{bu-dca-per}, which were able to run all 131 test inputs to completion  with maximum memory usage of 70~MB and 78~MB, respectively. 
+However, this threshold did eliminate a significant number of algorithm-test variants, with the worst-performing variant, \textsc{td-imm-inc}, only completing 62 test inputs within the memory bound. 
+Full results for tests completed by algorithm variant are presented in Figure~\ref{tests-completed-fig}. 
+As can be seen from these results, traversal direction is clearly the dominant variable in memory usage, with the \textsc{bu-*} variants performing better than the \textsc{co-*} variants, which in turn out-perform the \textsc{td-*} variants. 
+
+To provide a more holistic view of performance, I have considered the results from the 56 test inputs that all algorithms are able to complete within the memory bound. 
+Limiting consideration to these algorithms provides an apples-to-apples comparison among algorithms, as the excluded inputs are harder instances, which take more time and memory for the algorithms that are able to solve them. 
+Figures~\ref{avg-peak-mem-fig} and~\ref{avg-runtime-fig} show the mean peak memory and runtime, respectively, of each algorithm over the inputs in this data set.
+These averages are not themselves meaningful, but do enable an overall comparison of relative performance of the different variants.
+Selecting only these 56 ``easy'' test inputs does bias the average values downward, but has little effect on the relative trends; similar trends can be seen in the graphs of the \textsc{bu-*} algorithms over the 124 (of 131) test inputs that all complete, which have been omitted to save space.
+
+\begin{figure}
+\centering
+\input{avg-peak-mem}
+\caption[Average peak memory for each algorithmic variant]{Average peak resident set size for each algorithmic variant over the 56 test inputs all variants complete.} \label{avg-peak-mem-fig}
+\end{figure}
+
+\begin{figure}
+\centering
+\input{avg-runtime}
+\caption[Average runtime for each algorithmic variant]{Average runtime for each algorithmic variant over the 56 test inputs all variants complete.} \label{avg-runtime-fig}
+\end{figure}
+
+% \begin{figure}
+% \centering
+% \input{bu-peak-mem}
+% \caption[Average peak memory for each \textsc{bu-*} variant]{Average peak resident set size for each \textsc{bu-*} variant over the 124 test inputs all \textsc{bu-*} variants complete.} \label{bu-peak-mem-fig}
+% \end{figure}
+
+% \begin{figure}
+% \centering
+% \input{bu-runtime}
+% \caption[Average runtime for each \textsc{bu-*} variant]{Average runtime for each \textsc{bu-*} variant over the 124 test inputs all \textsc{bu-*} variants complete.} \label{bu-runtime-fig}
+% \end{figure}
+
+It can be seen from these results that that the top-down, immediate assertion-satisfaction (\textsc{td-imm-*}) variants are particularly inefficient, as they check a significant number of assertions without filtering to determine if the arguments can be made to fit. 
+It is also clear that the bottom-up (\textsc{bu}) traversal order is better than both top-down (\textsc{td}) and the Bilson-style bottom-up-combined (\textsc{co}) orders. 
+While the advantage of \textsc{bu} over \textsc{co} is clear, in that it performs less redundant work if a prefix of a combination fails, the advantage of \textsc{bu} over \textsc{td} provides an answer for an open question from Baker \cite{Baker82}.
+I believe that bottom-up is superior because it must only handle each subexpression once to form a list of candidate interpretations, whereas the top-down approach may do similar work repeatedly to resolve a subexpression with a variety of different types, a shortcoming that cannot be fully addressed by the memoization scheme employed in the \textsc{td} algorithm.
+
+With regard to assertion satisfaction, immediate (\textsc{imm}) satisfaction is an inferior solution, though there is little performance difference between deferred (\textsc{def}) and deferred-cached (\textsc{dca}) for instances that both can complete; particularly notable is that the \textsc{dca} caching-scheme does not have a noticeable impact on peak memory usage. 
+Since the \textsc{dca} algorithm can solve some particularly hard instances that \textsc{def} cannot, it is the recommended approach.
+
+The incremental-inheritance (\textsc{inc}) type environment also often uses upwards of double the memory required by the other variants, in addition to being consistently slower on these easy tests; aside from \textsc{bu-imm-bas} performing worse than \textsc{bu-imm-inc} on average when larger tests are considered, these results hold for the other variants. 
+It is apparent from these results that any efficiencies from the inheritance mechanism are insufficient to pay for the added complexity of the data structure.
+Aside from that, the persistent union-find (\textsc{per}) type environment generally performs better than the basic (\textsc{bas}) environment, with similar peak memory usage and an average speedup factor of nearly 2, though the requirements of the \textsc{per} environment for automatic garbage collection and a shared history for combination make retrofitting it into older code difficult.
+
+\section{Instance Difficulty} \label{instance-expr-sec}
+
+To characterize the difficulty of expression-resolution problem instances, the test suites must be explored at a finer granularity. 
+As discussed in Section~\ref{resn-analysis-sec}, a single top-level expression is the fundamental problem instance for resolution, yet the test inputs discussed above are composed of thousands of top-level expressions, like the actual source code they are derived from. 
+To pull out the effects of these individual problems, the resolver prototype is instrumented to time resolution for each expression, and also to report some relevant properties of the expression. 
+This instrumented resolver is then run on a set of difficult test instances; to limit the data collection task, these runs are restricted to the best-performing \textsc{bu-dca-per} algorithm and test inputs taking more than 1~s to complete. 
+
+The 13 test inputs thus selected contain 20632 top-level expressions among them, which are separated into order-of-magnitude bins by runtime in Figure~\ref{per-prob-histo-fig}.
+As can be seen from this figure, overall runtime is dominated by a few particularly difficult problem instances --- the 60\% of expressions that resolve in under 0.1~ms collectively take less time to resolve than any of the 0.2\% of expressions that take at least 100~ms to resolve. 
+On the other hand, the 46 expressions in that 0.2\% take 38\% of the overall time in this difficult test suite, while the 201 expressions that take between 10 and 100~ms to resolve consume another 30\%. 
+
+\begin{figure}
+	\centering
+	\input{per-prob-histo}
+	\caption[Histogram of top-level expressions]{Histogram of top-level expression resolution runtime, binned by order-of-magnitude. The left series counts the expressions in each bin according to the left axis, while the right series reports the summed runtime of resolution for all expressions in that bin. Note that both y-axes are log-scaled.} \label{per-prob-histo-fig}
+\end{figure}
+
+Since the top centile of expression-resolution instances requires approximately two-thirds of the resolver's time, optimizing the resolver for specific hard problem instances has proven to be an effective technique for reducing overall runtime. 
+The data indicates that the number of assertions necessary to resolve has the greatest effect on runtime, as seen in 
+Figure~\ref{per-prob-assns-fig}. 
+However, since the number of assertions required is only known once resolution is finished, the most-promising pre-resolution metric of difficulty is the nesting depth of the expression; as seen in Figure~\ref{per-prob-depth-fig}, expressions of depth $> 10$ in this data-set are uniformly difficult. 
+Figure~\ref{per-prob-subs-fig} presents a similar pattern for number of subexpressions, though given that the expensive tail of problem instances occurs at approximately twice the depth values, it is reasonable to believe that the difficult expressions in question are deeply-nested invocations of binary functions rather than wider but shallowly-nested expressions.
+
+% TODO statistics to tease out difficulty? Is ANOVA the right keyword?
+% TODO maybe metrics to sum number of poly-overloads invoked
+
+\begin{figure}
+\centering
+\input{per-prob-assns}
+\caption[Top-level expression resolution time by number of assertions resolved.]{Top-level expression resolution time by number of assertions resolved. Source input file for each expression listed in legend; note log scales on both axes.} \label{per-prob-assns-fig}
+\end{figure}
+
+\begin{figure}
+\centering
+\input{per-prob-depth}
+\caption[Top-level expression resolution time by maximum nesting depth of expression.]{Top-level expression resolution time by maximum nesting depth of expression. Note log scales on both axes.} \label{per-prob-depth-fig}
+\end{figure}
+
+\begin{figure}
+\centering
+\input{per-prob-subs}
+\caption[Top-level expression resolution time by number of subexpressions.]{Top-level expression resolution time by number of subexpressions. Note log scales on both axes.} \label{per-prob-subs-fig}
+\end{figure}
+	
+
+\section{\CFA{} Results} \label{cfa-results-sec}
+
+I have integrated most of the algorithmic techniques discussed in this chapter into \CFACC{}. 
+This integration took place over a period of months while \CFACC{} was under active development on a number of other fronts, so it is not possible to completely isolate the effects of the algorithmic changes, but I believe the algorithmic changes to have had the most-significant effects on performance over the study period. 
+To generate this data, representative commits from the \texttt{git} history of the project were checked out and compiled, then run on the same machine used for the resolver prototype experiments discussed in Section~\ref{proto-exp-sec}. 
+To negate the effects of changes to the \CFA{} standard library on the timing results, 55 test files from the test suite of the oldest \CFA{} variant are compiled with the \texttt{-E} flag to inline their library dependencies, and these inlined files are used to test the remaining \CFACC{} versions. 
+
+I performed two rounds of modification to \CFACC{}; the first round moved from Bilson's original combined-bottom-up algorithm to an un-combined bottom-up algorithm, denoted \textsc{cfa-co} and \textsc{cfa-bu}, respectively. 
+A top-down algorithm was not attempted in \CFACC{} due to its poor performance in the prototype.
+The second round of modifications addressed assertion satisfaction, taking Bilson's original \textsc{cfa-imm} algorithm, and iteratively modifying it, first to use the deferred approach \textsc{cfa-def}, then caching those results in the \textsc{cfa-dca} algorithm. 
+The new environment data structures discussed in Section~\ref{proto-exp-sec} have not been successfully merged into \CFACC{} due to their dependencies on the garbage-collection framework in the prototype; I spent several months modifying \CFACC{} to use similar garbage collection, but due to \CFACC{} not being designed to use such memory management the performance of the modified compiler was non-viable. 
+It is possible that the persistent union-find environment could be modified to use a reference-counted pointer internally without changing the entire memory-management framework of \CFACC{}, but such an attempt is left to future work.
+
+As can be seen in Figures~\ref{cfa-time-fig} and~\ref{cfa-mem-fig}, the time and peak memory results for these five versions of \CFACC{} show that assertion resolution dominates total resolution cost, with the \textsc{cfa-def} and \textsc{cfa-dca} variants running consistently faster than the others on more expensive test cases; no difference can be seen between these two algorithms' performance, but which agrees with the prototype experiments in Section~\ref{proto-exp-sec}. 
+The results from \CFACC{} for \textsc{cfa-co} \textit{vs.}\ \textsc{cfa-bu} do not mirror those from the prototype; I conjecture this is mostly due to the different memory-management schemes and sorts of data required to run type unification and assertion satisfaction calculations, as \CFACC{} performance has proven to be particularly sensitive to the amount of heap allocation performed. 
+This data also shows a noticeable regression in compiler performance in the eleven months between \textsc{cfa-bu} and \textsc{cfa-imm}, which use the same resolution algorithms; this regression is not due to expression resolution, as no integration work happened in this time, but I am unable to ascertain its actual cause.
+It should also be noted with regard to the peak memory results in Figure~\ref{cfa-mem-fig} that the peak memory usage does not always occur during the resolution phase of the compiler. 
+
+\begin{figure}
+\centering
+\input{cfa-time}
+\caption[\CFACC{} runtime against \textsc{cfa-co} baseline.]{\CFACC{} runtime against \textsc{cfa-co} baseline. Note log scales on both axes.} \label{cfa-time-fig}
+\end{figure}
+
+\begin{figure}
+\centering
+\input{cfa-mem}
+\caption[\CFACC{} peak memory usage against \textsc{cfa-co} baseline runtime.]{\CFACC{} peak memory usage against \textsc{cfa-co} baseline runtime. Note log scales on both axes.} \label{cfa-mem-fig}
+\end{figure}
+
+% use Jenkins daily build logs to rebuild speedup graph with more data
+% https://cforall.uwaterloo.ca/jenkins/job/Cforall/job/master/7089/consoleText
+% - near top of file: Compiler: Architecture: etc.
+%   - if it doesn't have true for Run Benchmark, less info
+% - toward bottom, full test results
+% - be aware of machine change: grep for Ruby, Python
+% some data you collected personally for imm vs. def vs. dca variants in resolv-proto/logs/rp-bu-tec_vs_cfacc.ods
+
+% look back at Resolution Algorithms section for threads to tie up "does the algorithm look like this?"
+
+\section{Conclusion}
+
+As can be seen from the prototype results, per-expression benchmarks, and \CFACC{}, the dominant factor in the cost of \CFA{} expression resolution is assertion satisfaction. 
+Reducing the total number of assertions satisfied, as in the deferred satisfaction algorithm, is consistently effective at reducing runtime, and caching results of these satisfaction problem instances has shown promise in the prototype system. 
+The results presented here also demonstrate that a bottom-up approach to expression resolution is superior to top-down, settling an open question from Baker~\cite{Baker82}.
+The persistent union-find type environment introduced in Chapter~\ref{env-chap} has also been demonstrated to be a modest performance improvement on the na\"{\i}ve approach.
+
+Given the consistently strong performance of the \textsc{bu-dca-imm} and \textsc{bu-dca-per} variants of the resolver prototype, the results in this chapter demonstrate that it is possible to develop a \CFA{} compiler with acceptable runtime performance for widespread use, an important and previously unaddressed consideration for the practical viability of the language. 
+However, the less-marked improvement in Section~\ref{cfa-results-sec} from retrofitting these algorithmic changes onto the existing compiler leave the actual development of a performant \CFA{} compiler to future work. 
+Characterization and elimination of the performance deficits in the existing \CFACC{} has proven difficult, though runtime is generally dominated by the expression resolution phase; as such, building a new \CFA{} compiler based on the resolver prototype contributed by this work may prove to be an effective strategy.
Index: doc/theses/aaron_moss_PhD/phd/frontpgs.tex
===================================================================
--- doc/theses/aaron_moss_PhD/phd/frontpgs.tex	(revision 114bde658eed1edf31cde78bd21584a1ced7df2e)
+++ doc/theses/aaron_moss_PhD/phd/frontpgs.tex	(revision 92d41a4af1542b1fcfd3bacde48933e4c8519366)
@@ -62,11 +62,12 @@
 	\bigskip
 	
-% 	\noindent
-%   \begin{tabbing}
-%   Internal-External Member: \=  \kill % using longest text to define tab length
-%   External Examiner: \>  Bruce Bruce \\ 
-%   \> Professor, Dept. of Philosophy of Zoology, University of Wallamaloo \\
-%   \end{tabbing} 
-% 	\bigskip
+	\noindent
+  \begin{tabbing}
+  Internal-External Member: \=  \kill % using longest text to define tab length
+  External Examiner: \>  Doug Lea \\ 
+  \> Professor, Computer Science Department, \\
+  \> State Univesity of New York at Oswego \\
+  \end{tabbing} 
+	\bigskip
 	
 	\noindent
@@ -74,5 +75,6 @@
   Internal-External Member: \=  \kill % using longest text to define tab length
   Supervisor: \> Peter Buhr \\
-  \> Professor, School of Computer Science, University of Waterloo \\
+  \> Associate Professor, School of Computer Science, \\ 
+  \> University of Waterloo \\
   \end{tabbing}
 	\bigskip
@@ -81,18 +83,22 @@
   \begin{tabbing}
   Internal-External Member: \=  \kill % using longest text to define tab length
-  Internal Members: \> Gregor Richards \\
-  \> Professor, School of Computer Science, University of Waterloo \\
-  \> Ond\v{r}ej Lhot\a'ak \\
-  \> Professor, School of Computer Science, University of Waterloo \\
+  Internal Members: \> Ond\v{r}ej Lhot\a'ak \\
+  \> Associate Professor, School of Computer Science, \\
+  \>University of Waterloo \\
+  \\
+  \> Gregor Richards \\
+  \> Assistant Professor, School of Computer Science, \\
+  \> University of Waterloo \\
   \end{tabbing}
-% 	\bigskip
-	
-% 	\noindent
-%   \begin{tabbing}
-%   Internal-External Member: \=  \kill % using longest text to define tab length
-%   Internal-External Member: \> Deepa Thotta \\
-%   \> Professor, Dept. of Philosophy, University of Waterloo \\
-%   \end{tabbing}
-% 	\bigskip
+	\bigskip
+	
+	\noindent
+  \begin{tabbing}
+  Internal-External Member: \=  \kill % using longest text to define tab length
+  Internal-External Member: \> Werner Dietl \\
+  \> Assistant Professor, Electrical and Computer Engineering, \\
+  \> University of Waterloo \\
+  \end{tabbing}
+%	\bigskip
 	
 % 	\noindent
@@ -124,5 +130,14 @@
 \begin{center}\textbf{Abstract}\end{center}
 
-This is the abstract.
+	The C programming language has been an important software development tool for decades.
+	\CFA{} is a new programming language designed with strong backwards-compatibility to take advantage of widely distributed C programming expertise and the large deployed base of C code, paired with modern language features to improve developer productivity. 
+	
+	This thesis presents a number of improvements to \CFA{}. 
+	The author has developed one major new language feature, generic types, in a way that integrates naturally with both the existing polymorphism features of \CFA{} and the translation-unit-based encapsulation model of C. 
+	This thesis also presents a number of smaller refinements to the \CFA{} overload resolution rules, each of which improves the expressivity or intuitive nature of the language. 
+	
+	This thesis also includes a number of practical improvements to \CFA{} compilation performance, focused on the expression resolution pass, which is the main bottleneck. 
+	These include better algorithms for argument-parameter matching and type assertion satisfaction, as well as a new type-environment data-structure based on a novel variant of union-find. 
+	The compilation performance improvements have all been experimentally validated with a new prototype system that encapsulates the key aspects of the \CFA{} language; this prototype is a promising basis for future research and a technical contribution of this work.
 
 \cleardoublepage
@@ -131,8 +146,18 @@
 % -------------------------------
 
-% \begin{center}\textbf{Acknowledgements}\end{center}
-
-% I would like to thank all the little people who made this thesis possible.
-% \cleardoublepage
+\begin{center}\textbf{Acknowledgements}\end{center}
+
+Though a doctoral thesis is an individual project, I could not have completed it without the help and support of many members of my community. 
+This thesis would not exist in the form it does without the mentorship of my advisor, Peter Buhr, who has ably led the \CFA{} team while giving me both the advantage of his decades of experience and the freedom to follow my own interests. 
+
+My work on \CFA{} does not exist in a vaccuum, and it has been a pleasure and a privilege to collaborate with the members of the \CFA{} team: Andrew Beach, Richard Bilson, Michael Brooks, Bryan Chan, Thierry Delisle, Glen Ditchfield, Brice Dobry, Rob Schluntz, and others.
+I gratefully acknowledge the financial support of the National Science and Engineering Council of Canada and Huawei Ltd.\ for this project.
+I would also like to thank of my thesis committee, Werner Dietl, Doug Lea, Ond\v{r}ej Lhot\a'ak, and Gregor Richards, for the time and effort they have invested in providing constructive feedback to refine this work.
+I am indebted to Peter van Beek and Ian Munro for their algorithmic expertise and willingness to share their time with me. 
+I have far too many colleagues in the Programming Languages Group and School of Computer Science to name, but I deeply appreciate their camaradarie; specifically with regard to the production of this thesis, I would like to thank Nathan Fish for recommending my writing soundtrack, and Sharon Choy for her unfailing supply of encouraging rabbit animations.
+
+Finally, to all my friends and family who have supported me and made Kitchener-Waterloo home these past seven years, thank you, I could not have done it without you; most especially, Christina Moss, you are the best of wives and best of women, your support has kept me going through the ups and downs of research, and your partnership is key to all my successes.
+
+\cleardoublepage
 
 % D E D I C A T I O N
@@ -141,5 +166,6 @@
 % \begin{center}\textbf{Dedication}\end{center}
 
-% This is dedicated to the one I love.
+% To Christina, who has spent too many hours politely listening to me work out the technical minutiae of this thesis, I love you, and I won't make you read it.
+
 % \cleardoublepage
 
Index: doc/theses/aaron_moss_PhD/phd/generic-bench.tex
===================================================================
--- doc/theses/aaron_moss_PhD/phd/generic-bench.tex	(revision 92d41a4af1542b1fcfd3bacde48933e4c8519366)
+++ doc/theses/aaron_moss_PhD/phd/generic-bench.tex	(revision 92d41a4af1542b1fcfd3bacde48933e4c8519366)
@@ -0,0 +1,216 @@
+\chapter{Generic Stack Benchmarks} \label{generic-bench-app}
+
+Throughout, !/***/! designates a counted redundant type annotation; code reformatted slightly for brevity.
+
+\section{C}
+
+\begin{cfa}
+typedef struct node {
+	void * value;
+	struct node * next;
+} node;
+typedef struct stack {
+	struct node * head;
+} stack;
+void copy_stack( stack * s, const stack * t, void * (*copy)( const void * ) ) {
+	node ** cr = &s->head;
+	for (node * nx = t->head; nx; nx = nx->next) {
+		*cr = malloc( sizeof(node) ); /***/
+		(*cr)->value = copy( nx->value );
+		cr = &(*cr)->next;
+	}
+	*cr = NULL;
+}
+void clear_stack( stack * s, void (* free_el)( void * ) ) {
+	for ( node * nx = s->head; nx; ) {
+		node * cr = nx;
+		nx = cr->next;
+		free_el( cr->value );
+		free( cr );
+	}
+	s->head = NULL;
+}
+stack new_stack() {
+	return (stack){ NULL }; /***/
+}
+stack * assign_stack( stack * s, const stack * t, void * (*copy_el)( const void * ),
+				void (*free_el)( void * ) ) {
+	if ( s->head == t->head ) return s;
+	clear_stack( s, free_el ); /***/
+	copy_stack( s, t, copy_el ); /***/
+	return s;
+}
+_Bool stack_empty( const stack * s ) {
+	return s->head == NULL;
+}
+void push_stack( stack * s, void * v ) {
+	node * n = malloc( sizeof(node) ); /***/
+	*n = (node){ v, s->head }; /***/
+	s->head = n;
+}
+void * pop_stack( stack * s ) {
+	node * n = s->head;
+	s->head = n->next;
+	void * v = n->value;
+	free( n );
+	return v;
+}
+\end{cfa}
+
+\section{\CFA{}}
+
+\begin{cfa}
+forall( otype T ) {
+	struct node {
+		T value;
+		node(T) * next;
+	};
+	struct stack { node(T) * head; };
+	void ?{}( stack(T) & s, stack(T) t ) { // copy
+		node(T) ** cr = &s.head;
+		for ( node(T) * nx = t.head; nx; nx = nx->next ) {
+			*cr = alloc();
+			((*cr)->value){ nx->value };
+			cr = &(*cr)->next;
+		}
+		*cr = 0;
+	}
+	void clear( stack(T) & s ) with( s ) {
+		for ( node(T) * nx = head; nx; ) {
+			node(T) * cr = nx;
+			nx = cr->next;
+			^(*cr){};
+			free( cr );
+		}
+		head = 0;
+	}
+	void ?{}( stack(T) & s ) { (s.head){ 0 }; }
+	void ^?{}( stack(T) & s) { clear( s ); }
+	stack(T) ?=?( stack(T) & s, stack(T) t ) {
+		if ( s.head == t.head ) return s;
+		clear( s );
+		s{ t };
+		return s;
+	}
+	_Bool empty( const stack(T) & s ) {
+		return s.head == 0;
+	}
+	void push( stack(T) & s, T value ) with( s ) {
+		node(T) * n = alloc();
+		(*n){ value, head };
+		head = n;
+	}
+	T pop( stack(T) & s ) with( s ) {
+		node(T) * n = head;
+		head = n->next;
+		T v = n->value;
+		^(*n){};
+		free( n );
+		return v;
+	}
+}
+\end{cfa}
+
+\section{\CC{}}
+
+\begin{cfa}
+template<typename T> struct stack {
+	struct node {
+		T value;
+		node * next;
+		node( const T & v, node * n = nullptr ) :
+			value( v ), next( n ) {}
+	};
+	node * head;
+	void copy( const stack<T> & o ) {
+		node ** cr = &head;
+		for ( node * nx = o.head; nx; nx = nx->next ) {
+			*cr = new node{ nx->value }; /***/
+			cr = &(*cr)->next;
+		}
+		*cr = nullptr;
+	}
+	void clear() {
+		for ( node * nx = head; nx; ) {
+			node * cr = nx;
+			nx = cr->next;
+			delete cr;
+		}
+		head = nullptr;
+	}
+	stack() : head( nullptr ) {}
+	stack( const stack<T> & o ) { copy( o ); }
+	~stack() { clear(); }
+	stack & operator=( const stack<T> & o ) {
+		if ( this == &o ) return *this;
+		clear();
+		copy( o );
+		return *this;
+	}
+	bool empty() const {
+		return head == nullptr;
+	}
+	void push( const T & value ) {
+		head = new node{ value, head };  /***/
+	}
+	T pop() {
+		node * n = head;
+		head = n->next;
+		T v = std::move( n->value );
+		delete n;
+		return v;
+	}
+};
+\end{cfa}
+
+\section{\CCV{}}
+
+\begin{cfa}
+struct stack {
+	struct node {
+		ptr<object> value;
+		node * next;
+		node( const object & v, node * n = nullptr ) :
+				value( v.new_copy() ), next( n ) {}
+	};
+	node * head;
+	void copy( const stack & o ) {
+		node ** cr = &head;
+		for ( node * nx = o.head; nx; nx = nx->next ) {
+			*cr = new node{ *nx->value }; /***/
+			cr = &(*cr)->next;
+		}
+		*cr = nullptr;
+	}
+	void clear() {
+		for ( node * nx = head; nx; ) {
+			node * cr = nx;
+			nx = cr->next;
+			delete cr;
+		}
+		head = nullptr;
+	}
+	stack() : head( nullptr ) {}
+	stack( const stack & o ) { copy( o ); }
+	~stack() { clear(); }
+	stack & operator=( const stack & o ) {
+		if ( this == &o ) return *this;
+		clear();
+		copy( o );
+		return *this;
+	}
+	bool empty() const {
+		return head == nullptr;
+	}
+	void push( const object & value ) {
+		head = new node{ value, head }; /***/
+	}
+	ptr<object> pop() {
+		node * n = head;
+		head = n->next;
+		ptr<object> v = std::move( n->value );
+		delete n;
+		return v;
+	}
+};
+\end{cfa}
Index: doc/theses/aaron_moss_PhD/phd/generic-types.tex
===================================================================
--- doc/theses/aaron_moss_PhD/phd/generic-types.tex	(revision 114bde658eed1edf31cde78bd21584a1ced7df2e)
+++ doc/theses/aaron_moss_PhD/phd/generic-types.tex	(revision 92d41a4af1542b1fcfd3bacde48933e4c8519366)
@@ -7,11 +7,14 @@
 While this approach is flexible and supports integration with the C type checker and tooling, it is also tedious and error prone, especially for more complex data structures. 
 A second approach is to use !void*!-based polymorphism, \eg{} the C standard library functions !bsearch! and !qsort!, which allow for the reuse of common functionality. 
-However, basing all polymorphism on !void*! eliminates the type checker's ability to ensure that argument types are properly matched, often requiring a number of extra function parameters, pointer indirection, and dynamic allocation that is otherwise not needed. 
+However, basing all polymorphism on !void*! eliminates the type checker's ability to ensure that argument types are properly matched, often requiring a number of extra function parameters, pointer indirection, and dynamic allocation that is otherwise unnecessary. 
 A third approach to generic code is to use preprocessor macros, which does allow the generated code to be both generic and type checked, but errors in such code may be difficult to locate and debug. 
 Furthermore, writing and using preprocessor macros is unnatural and inflexible.
-Figure~\ref{bespoke-generic-fig} demonstrates the bespoke approach for a simple linked list with !insert! and !head! operations, while Figure~\ref{void-generic-fig} and Figure~\ref{macro-generic-fig} show the same example using !void*!- and !#define!-based polymorphism, respectively.
+Figure~\ref{bespoke-generic-fig} demonstrates the bespoke approach for a simple linked list with !insert! and !head! operations, while Figure~\ref{void-generic-fig} and Figure~\ref{macro-generic-fig} show the same example using !void*! and !#define!-based polymorphism, respectively.
 
 \begin{figure}
 	\begin{cfa}
+		#include <stdlib.h> $\C{// for malloc}$
+		#include <stdio.h>  $\C{// for printf}$
+
 		struct int_list { int value; struct int_list* next; };
 
@@ -55,4 +58,7 @@
 \begin{figure}
 	\begin{cfa}
+		#include <stdlib.h> $\C{// for malloc}$
+		#include <stdio.h>  $\C{// for printf}$
+
 		// single code implementation
 
@@ -96,4 +102,7 @@
 \begin{figure}
 	\begin{cfa}
+		#include <stdlib.h> $\C{// for malloc}$
+		#include <stdio.h>  $\C{// for printf}$
+
 		$\C[\textwidth]{// code is nested in macros}$
 
@@ -138,8 +147,11 @@
 \CFA{} generic types integrate efficiently and naturally with the existing polymorphic functions in \CFA{}, while retaining backward compatibility with C in layout and support for separate compilation. 
 A generic type can be declared in \CFA{} by placing a !forall! specifier on a !struct! or !union! declaration, and instantiated using a parenthesized list of types after the generic name. 
-An example comparable to the C polymorphism examples in Figures~\ref{bespoke-generic-fig}, \ref{void-generic-fig}, and \ref{macro-generic-fig} can be seen in Figure~\ref{cfa-generic-fig} \TODO{test this code}.
+An example comparable to the C polymorphism examples in Figures~\ref{bespoke-generic-fig}, \ref{void-generic-fig}, and \ref{macro-generic-fig} can be seen in Figure~\ref{cfa-generic-fig}.
 
 \begin{figure}
 	\begin{cfa}
+		#include <stdlib.hfa> $\C{// for alloc}$
+		#include <stdio.h>  $\C{// for printf}$
+
 		forall(otype T) struct list { T value; list(T)* next; };
 
@@ -173,25 +185,25 @@
 \section{Design}
 
-Though a number of languages have some implementation of generic types, backward compatibility with both C and existing \CFA{} polymorphism presented some unique design constraints for this project. 
-The guiding principle was to maintain an unsurprising language model for C programmers without compromising runtime efficiency. 
-A key insight for this design was that C already possesses a handful of built-in generic types (\emph{compound types} in the language of the standard\cit{}), notably pointer (!T*!) and array (!T[]!), and that user-definable generics should act similarly.
+Though a number of languages have some implementation of generic types, backward compatibility with both C and existing \CFA{} polymorphism present some unique design constraints for \CFA{} generics. 
+The guiding principle is to maintain an unsurprising language model for C programmers without compromising runtime efficiency. 
+A key insight for this design is that C already possesses a handful of built-in generic types (\emph{derived types} in the language of the standard \cite[\S{}6.2.5]{C11}), notably pointer (!T*!) and array (!T[]!), and that user-definable generics should act similarly.
 
 \subsection{Related Work}
 
-One approach to the design of generic types is that taken by \CC{} templates\cite{C++}. 
+One approach to the design of generic types is that taken by \CC{} templates \cite{C++}. 
 The template approach is closely related to the macro-expansion approach to C polymorphism demonstrated in Figure~\ref{macro-generic-fig}, but where the macro-expansion syntax has been given first-class language support. 
 Template expansion has the benefit of generating code with near-optimal runtime efficiency, as distinct optimizations can be applied for each instantiation of the template. 
-On the other hand, template expansion can also lead to significant code bloat, exponential in the worst case\cit{}, and the costs of increased instruction cache pressure at runtime and wasted developer time when compiling cannot be discounted. 
+On the other hand, template expansion can also lead to significant code bloat, exponential in the worst case \cite{Haberman16}, and the costs of increased compilation time and instruction cache pressure cannot be ignored. 
 The most significant restriction of the \CC{} template model is that it breaks separate compilation and C's translation-unit-based encapsulation mechanisms. 
-Because a \CC{} template is not actually code, but rather a sort of ``recipe'' to generate code, template code must be visible at its call site to be used. 
-Furthermore, \CC{} template code cannot be type-checked without instantiating it, a time consuming process with no hope of improvement until \CC{} concepts\cite{C++Concepts} are standardized in \CCtwenty{}.
-C code, by contrast, only needs a !struct! or function declaration to call that function or use (by-pointer) values of that type, a desirable property to maintain for \CFA{}.
-
-Java\cite{Java8} has another prominent implementation for generic types, introduced in Java~5 and based on a significantly different approach than \CC{}. 
+Because a \CC{} template is not actually code, but rather a ``recipe'' to generate code, template code must be visible at its call site to be used. 
+Furthermore, \CC{} template code cannot be type-checked without instantiating it, a time consuming process with no hope of improvement until \CC{} concepts \cite{C++Concepts} are standardized in \CCtwenty{}.
+C code, by contrast, only needs a function declaration to call that function or a !struct! declaration to use (by-pointer) values of that type, desirable properties to maintain in \CFA{}.
+
+Java \cite{Java8} has another prominent implementation for generic types, introduced in Java~5 and based on a significantly different approach than \CC{}. 
 The Java approach has much more in common with the !void*!-polymorphism shown in Figure~\ref{void-generic-fig}; since in Java nearly all data is stored by reference, the Java approach to polymorphic data is to store pointers to arbitrary data and insert type-checked implicit casts at compile-time. 
 This process of \emph{type erasure} has the benefit of allowing a single instantiation of polymorphic code, but relies heavily on Java's object model and garbage collector. 
 To use this model, a more C-like language such as \CFA{} would be required to dynamically allocate internal storage for variables, track their lifetime, and properly clean them up afterward. 
 
-Cyclone\cite{Grossman06} is another language extending C, and also provides capabilities for polymorphic functions and existential types, similar to \CFA{}'s !forall! functions and generic types. 
+Cyclone \cite{Grossman06} extends C and also provides capabilities for polymorphic functions and existential types which are similar to \CFA{}'s !forall! functions and generic types. 
 Cyclone existential types can include function pointers in a construct similar to a virtual function table, but these pointers must be explicitly initialized at some point in the code, which is tedious and error-prone compared to \CFA{}'s implicit assertion satisfaction. 
 Furthermore, Cyclone's polymorphic functions and types are restricted to abstraction over types with the same layout and calling convention as !void*!, \ie{} only pointer types and !int!. 
@@ -200,43 +212,44 @@
 
 Many other languages include some form of generic types. 
-As a brief survey, ML\cite{ML} was the first language to support parameteric polymorphism, but unlike \CFA{} does not support the use of assertions and traits to constrain type arguments. 
-Haskell\cite{Haskell10} combines ML-style polymorphism with the notion of type classes, similar to \CFA{} traits, but requiring an explicit association with their implementing types, unlike \CFA{}. 
-Objective-C\cite{obj-c-book} is an extension to C which has had some industrial success; however, it did not support type-checked generics until recently\cite{xcode7}, and it's garbage-collected, message-passing object-oriented model is a radical departure from C.
-Go\cite{Go}, and Rust\cite{Rust} are modern compiled languages with abstraction features similar to \CFA{} traits, \emph{interfaces} in Go and \emph{traits} in Rust. 
-Go has implicit interface implementation and uses a ``fat pointer'' construct to pass polymorphic objects to functions, similar in principle to \CFA{}'s implicit forall paramters. 
+As a brief survey, ML \cite{ML} was the first language to support parametric polymorphism, but unlike \CFA{} does not support the use of assertions and traits to constrain type arguments. 
+Haskell \cite{Haskell10} combines ML-style polymorphism with the notion of type classes, similar to \CFA{} traits, but requiring an explicit association with their implementing types, unlike \CFA{}. 
+Objective-C \cite{obj-c-book} is an extension to C which has had some industrial success; however, it did not support type-checked generics until recently \cite{xcode7}, and its garbage-collected, message-passing object-oriented model is a radical departure from C.
+Go \cite{Go}, and Rust \cite{Rust} are modern compiled languages with abstraction features similar to \CFA{} traits: \emph{interfaces} in Go and \emph{traits} in Rust. 
+Go has implicit interface implementation and uses a ``fat pointer'' construct to pass polymorphic objects to functions, similar in principle to \CFA{}'s implicit forall parameters. 
 Go does not, however, allow user code to define generic types, restricting Go programmers to the small set of generic types defined by the compiler. 
-Rust has powerful abstractions for generic programming, including explicit implemenation of traits and options for both separately-compiled virtual dispatch and template-instantiated static dispatch in functions. 
+Rust has powerful abstractions for generic programming, including explicit implementation of traits and options for both separately-compiled virtual dispatch and template-instantiated static dispatch in functions. 
 On the other hand, the safety guarantees of Rust's \emph{lifetime} abstraction and borrow checker impose a distinctly idiosyncratic programming style and steep learning curve; \CFA{}, with its more modest safety features, allows direct ports of C code while maintaining the idiomatic style of the original source. 
 
 \subsection{\CFA{} Generics}
 
-The generic types design in \CFA{} draws inspiration from both \CC{} and Java generics, capturing the better aspects of each. 
-Like \CC{} template types, generic !struct!s and !union!s in \CFA{} have macro-expanded storage layouts, but, like Java generics, \CFA{} generic types can be used with separately-compiled polymorphic functions without requiring either the type or function definition to be visible to the other. 
+The generic types design in \CFA{} draws inspiration from both \CC{} and Java generics, capturing useful aspects of each. 
+Like \CC{} template types, generic !struct! and !union! types in \CFA{} have macro-expanded storage layouts, but, like Java generics, \CFA{} generic types can be used with separately-compiled polymorphic functions without requiring either the type or function definition to be visible to the other. 
 The fact that the storage layout of any instantiation of a \CFA{} generic type is identical to that of the monomorphic type produced by simple macro replacement of the generic type parameters is important to provide consistent and predictable runtime performance, and to not impose any undue abstraction penalty on generic code. 
-As an example, consider the following generic type and function \TODO{test this}:
-
+As an example, consider the following generic type and function:
+
+% TODO whatever the bug is with initializer-expressions not working, it affects this
 \begin{cfa}
 forall( otype R, otype S ) struct pair { R first; S second; };
 
 pair(const char*, int) with_len( const char* s ) {
-	return (pair(const char*), int){ s, strlen(s) };
+	return (pair(const char*, int)){ s, strlen(s) };
 }
 \end{cfa}
 
 In this example, !with_len! is defined at the same scope as !pair!, but it could be called from any context that can see the definition of !pair! and a declaration of !with_len!. 
-If its return type was !pair(const char*, int)*!, callers of !with_len! would only need the declaration !forall(otype R, otype S) struct pair! to call it, in accordance with the usual C rules for opaque types.
-
-!with_len! is itself a monomorphic function, returning a type that is structurally identical to !struct { const char* first; int second; }!, and as such could be called from C given an appropriate redeclaration and demangling flags. 
-However, the definition of !with_len! depends on a polymorphic function call to the !pair! constructor, which only needs to be written once (in this case, implicitly by the compiler according to the usual \CFA{} constructor generation\cite{Moss18}) and can be re-used for a wide variety of !pair! instantiations. 
-Since the parameters to this polymorphic constructor call are all statically known, compiler inlining can eliminate any runtime overhead of this polymorphic call. 
+If its return type were !pair(const char*, int)*!, callers of !with_len! would only need the declaration !forall(otype R, otype S) struct pair! to call it, in accordance with the usual C rules for opaque types.
+
+!with_len! is itself a monomorphic function, returning a type that is structurally identical to !struct { const char* first; int second; }!, and as such could be called from C given appropriate re-declarations and demangling flags. 
+However, the definition of !with_len! depends on a polymorphic function call to the !pair! constructor, which only needs to be written once (in this case, implicitly by the compiler according to the usual \CFA{} constructor generation \cite{Schluntz17}) and can be re-used for a wide variety of !pair! instantiations. 
+Since the parameters to this polymorphic constructor call are all statically known, compiler inlining can in principle eliminate any runtime overhead of this polymorphic call. 
 
 \CFA{} deliberately does not support \CC{}-style partial specializations of generic types. 
-A particularly infamous example in the \CC{} standard library is !vector<bool>!, which is represented as a bitstring rather than the array representation of the other !vector! instantiations. 
+A particularly infamous example in the \CC{} standard library is !vector<bool>!, which is represented as a bit-string rather than the array representation of the other !vector! instantiations. 
 Complications from this inconsistency (chiefly the fact that a single bit is not addressable, unlike an array element) make the \CC{} !vector! unpleasant to use in generic contexts due to the break in its public interface. 
-Rather than attempting to plug leaks in the template specialization abstraction with a detailed method interface, \CFA{} takes the more principled position that two types with an unrelated data layout are in fact unrelated types, and should be handled with different code. 
-Of course, to the degree that distinct types are similar enough to share an interface, the \CFA{} !trait! system allows one to be defined, and objects of types implementing that !trait! to be operated on in the same polymorphic functions. 
+Rather than attempting to plug leaks in the template specialization abstraction with a detailed method interface, \CFA{} takes the more consistent position that two types with an unrelated data layout are in fact unrelated types, and should be handled with different code. 
+Of course, to the degree that distinct types are similar enough to share an interface, the \CFA{} !trait! system allows such an interface to be defined, and objects of types implementing that !trait! to be operated on using the same polymorphic functions. 
 
 Since \CFA{} polymorphic functions can operate over polymorphic generic types, functions over such types can be partially or completely specialized using the usual overload selection rules. 
-As an example, the !with_len! function above could be an optimization of the following more general function:
+As an example, the following generalization of !with_len! is a semantically-equivalent function which works for any type that has a !len! function declared, making use of both the ad-hoc (overloading) and parametric (!forall!) polymorphism features of \CFA{}:
 
 \begin{cfa}
@@ -247,5 +260,5 @@
 \end{cfa}
 
-\CFA{} generic types also support the type constraints from !forall! functions. 
+\CFA{} generic types also support type constraints, as in !forall! functions. 
 For example, the following declaration of a sorted set type ensures that the set key implements equality and relational comparison:
 
@@ -254,27 +267,29 @@
 \end{cfa}
 
-These constraints are implemented by applying equivalent constraints to the compiler-generated constructors for this type.
+These constraints are enforced by applying equivalent constraints to the compiler-generated constructors for this type.
 
 \section{Implementation} \label{generic-impl-sec}
 
-The ability to use generic types in polymorphic contexts means that the \CFA{} implementation in \CFACC{} must support a mechanism for accessing fields of generic types dynamically at runtime. 
-While \CFACC{} could in principle use this same mechanism for accessing fields of all generic types, such an approach would throw away compiler knowledge of static types and impose an unnecessary runtime cost, limiting the utility of the generic type design. 
-Instead, my design for generic type support in \CFACC{} distinguishes between \emph{concrete} generic types that have a fixed memory layout regardless of type parameters and \emph{dynamic} generic types that may vary in memory layout depending on their type parameters.
+The ability to use generic types in polymorphic contexts means that the \CFA{} implementation must support a mechanism for accessing fields of generic types dynamically. 
+While \CFACC{} could in principle use this same mechanism for accessing fields of generic types in monomorphic contexts as well, such an approach would throw away compiler knowledge of static types and impose an unnecessary runtime cost. 
+Instead, my design for generic types in \CFACC{} distinguishes between \emph{concrete} generic types that have a fixed memory layout regardless of type parameters and \emph{dynamic} generic types that may vary in memory layout depending on their type parameters.
+
 A \emph{dtype-static} type has polymorphic parameters but is still concrete. 
-Polymorphic pointers are an example of dtype-static types; given some type variable !T!, T is a polymorphic type, but !T*! has a fixed size and can therefore be represented by a !void*! in code generation. 
+Polymorphic pointers are an example of dtype-static types; given some type variable !T!, !T! is a polymorphic type, but !T*! has a fixed size and can therefore be represented by a !void*! in code generation. 
 In particular, generic types where all parameters are un-!sized! (\ie{} they do not conform to the built-in !sized! trait because the compiler does not know their size and alignment) are always concrete, as there is no possibility for their layout to vary based on type parameters of unknown size and alignment. 
 More precisely, a type is concrete if and only if all of its !sized! type parameters are concrete, and a concrete type is dtype-static if any of its type parameters are (possibly recursively) polymorphic. 
-To illustrate, the following code using the !pair! type from above \TODO{test this} has each use of !pair! commented with its class:
-
+To illustrate, the following code using the !pair! type from above has each use of !pair! commented with its class:
+
+% TODO constructor bugs here too
 \begin{cfa}
 //dynamic, layout varies based on T
-forall(otype T) T value( pair(const char*, T) p ) { return p.second; }
+forall(otype T) T value$\(_1\)$( pair(const char*, T) p ) { return p.second; }
 
 // dtype-static, F* and T* are concrete but recursively polymorphic
-forall(dtype F, otype T) T value( pair(F*, T*) ) { return *p.second; }
+forall(dtype F, otype T) T value$\(_2\)$( pair(F*, T*) ) { return *p.second; }
 
 pair(const char*, int) p = {"magic", 42}; $\C[2.5in]{// concrete}$
 int i = value(p);
-pair(void*, int*) q = {0, &p.second}; $\C[2.5in]{// concrete}$
+pair(void*, int*) q = {0, &i}; $\C[2.5in]{// concrete}$
 i = value(q);
 double d = 1.0;
@@ -285,9 +300,9 @@
 \subsection{Concrete Generic Types}
 
-The \CFACC{} translator template expands concrete generic types into new structure types, affording maximal inlining. 
+The \CFACC{} translator template-expands concrete generic types into new structure types, affording maximal inlining. 
 To enable interoperation among equivalent instantiations of a generic type, \CFACC{} saves the set of instantiations currently in scope and reuses the generated structure declarations where appropriate. 
 In particular, tuple types are implemented as a single compiler-generated generic type definition per tuple arity, and can be instantiated and reused according to the usual rules for generic types. 
 A function declaration that accepts or returns a concrete generic type produces a declaration for the instantiated structure in the same scope, which all callers may reuse. 
-As an example, the concrete instantiation for !pair(const char*, int)! is\footnote{This omits the field name mangling performed by \CFACC{} for overloading purposes.\label{mangle-foot}}
+As an example, the concrete instantiation for !pair(const char*, int)! is\footnote{Field name mangling for overloading purposes is omitted.\label{mangle-foot}}:
 
 \begin{cfa}
@@ -296,5 +311,5 @@
 
 A concrete generic type with dtype-static parameters is also expanded to a structure type, but this type is used for all matching instantiations. 
-In the example above, the !pair(F*, T*)! parameter to !value! is such a type; its expansion is below\footref{mangle-foot}, and it is used as the type of the variables !q! and !r! as well, with casts for member access where appropriate.
+In the example above, the !pair(F*, T*)! parameter to !value! is such a type; its expansion is below\footref{mangle-foot}, and it is used as the type of the variables !q! and !r! as well, with casts for member access where appropriate:
 
 \begin{cfa}
@@ -308,9 +323,9 @@
 The design for generic types presented here adds an \emph{offset array} containing structure-member offsets for dynamic generic !struct! types. 
 A dynamic generic !union! needs no such offset array, as all members are at offset 0, but size and alignment are still necessary. 
-Access to members of a dynamic structure is provided at runtime via base displacement addressing the structure pointer and the member offset (similar to the !offsetof! macro), moving a compile-time offset calculation to runtime. 
-
-the offset arrays are statically generated where possible. 
+Access to members of a dynamic structure is provided at runtime via base-displacement addressing of the structure pointer and the member offset (similar to the !offsetof! macro), moving a compile-time offset calculation to runtime. 
+
+The offset arrays are statically generated where possible. 
 If a dynamic generic type is passed or returned by value from a polymorphic function, \CFACC{} can safely assume that the generic type is complete (\ie{} has a known layout) at any call site, and the offset array is passed from the caller; if the generic type is concrete at the call site, the elements of this offset array can even be statically generated using the C !offsetof! macro. 
-As an example, the body of the second !value! function above is implemented as 
+As an example, the body of !value!$_2$ above is implemented as: 
 
 \begin{cfa}
@@ -319,5 +334,5 @@
 
 Here, !_assign_T! is passed in as an implicit parameter from !otype T! and takes two !T*! (!void*! in the generated code), a destination and a source, and !_retval! is the pointer to a caller-allocated buffer for the return value, the usual \CFA{} method to handle dynamically-sized return types. 
-!_offsetof_pair! is the offset array passed into !value!; this array is generated at the call site as
+!_offsetof_pair! is the offset array passed into !value!; this array is statically generated at the call site as:
 
 \begin{cfa}
@@ -330,10 +345,10 @@
 For instance, modularity is generally provided in C by including an opaque forward declaration of a structure and associated accessor and mutator functions in a header file, with the actual implementations in a separately-compiled \texttt{.c} file. 
 \CFA{} supports this pattern for generic types, implying that the caller of a polymorphic function may not know the actual layout or size of a dynamic generic type and only holds it by pointer. 
-\CFACC{} automatically generates \emph{layout functions} for cases where the size, alignment, and offset array of a generic struct cannot be passed into a function from that functions's caller. 
+\CFACC{} automatically generates \emph{layout functions} for cases where the size, alignment, and offset array of a generic struct cannot be passed into a function from that function's caller. 
 These layout functions take as arguments pointers to size and alignment variables and a caller-allocated array of member offsets, as well as the size and alignment of all !sized! parameters to the generic structure. 
-Un!sized! parameters not passed because they are forbidden from being used in a context that affects layout by C's usual rules about incomplete types. 
-Similarly, the layout function can only safely be called from a context where the generic type definition is visible, because otherwise the caller will not know how large to allocate the array of member offsets. 
-
-The C standard does not specify a memory layout for structs, but the POSIX ABI for x86\cit{} does; this memory layout is common for C implementations, but is a platform-specific issue for porting \CFA{}. 
+Un-!sized! parameters are not passed because they are forbidden from being used in a context that affects layout by C's usual rules about incomplete types. 
+Similarly, the layout function can only safely be called from a context where the generic type definition is visible, because otherwise the caller does not know how large to allocate the array of member offsets. 
+
+The C standard does not specify a memory layout for structs, but the POSIX ABI for x86 \cite{POSIX08} does; this memory layout is common for C implementations, but is a platform-specific issue for porting \CFA{}. 
 This algorithm, sketched below in pseudo-\CFA{}, is a straightforward mapping of consecutive fields into the first properly-aligned offset in the !struct! layout; layout functions for !union! types omit the offset array and simply calculate the maximum size and alignment over all union variants. 
 Since \CFACC{} generates a distinct layout function for each type, constant-folding and loop unrolling are applied.
@@ -342,5 +357,4 @@
 forall(dtype T1, dtype T2, ... | sized(T1) | sized(T2) | ...)
 void layout(size_t* size, size_t* align, size_t* offsets) {
-	// initialize values
 	*size = 0; *align = 1;
 	// set up members
@@ -360,13 +374,13 @@
 \end{cfa}
 
-Results of layout function calls are cached so that they are only computed once per type per function. 
-Layout functions also allow generic types to be used in a function definition without reflecting them in the function signature, an important implemenation-hiding constraint of the design. 
+Results of layout-function calls are cached so that they are only computed once per type per function. 
+Layout functions also allow generic types to be used in a function definition without reflecting them in the function signature, an important implementation-hiding constraint of the design. 
 For instance, a function that strips duplicate values from an unsorted !list(T)! likely has a reference to the list as its only explicit parameter, but uses some sort of !set(T)! internally to test for duplicate values. 
 This function could acquire the layout for !set(T)! by calling its layout function, providing as an argument the layout of !T! implicitly passed into that function.
 
-Whether a type is concrete, dtype-static, or dynamic is decided solely on the basis of the type arguments and !forall! clause type paramters. 
-This design allows opaque forward declarations of generic types, \eg{} !forall(otype T) struct Box;! like in C, all uses of $Box(T)$ can be separately compiled, and callers from other translation units know the proper calling conventions to use. 
-In an alternate design where the definition of a structure type is included in deciding whether a generic type is dynamic or concrete, some further types may be recognized as dtype-static --- \eg{} !Box! could be defined with a body !{ T* p; }!, and would thus not depend on !T! for its layout. 
-However, the existence of an !otype! parameter !T! means that !Box! \emph{could} depend on !T! for its layout if this definition is not visible, and we judged preserving separate compilation (and the associated C compatibility) in the implemented design to be an acceptable trade-off.
+Whether a type is concrete, dtype-static, or dynamic is decided solely on the basis of the type arguments and !forall! clause type parameters. 
+This design allows opaque forward declarations of generic types, \eg{} !forall(otype T) struct Box;! like in C, all uses of !Box(T)! can be separately compiled, and callers from other translation units know the proper calling conventions. 
+In an alternate design, where the definition of a structure type is included in deciding whether a generic type is dynamic or concrete, some further types may be recognized as dtype-static --- \eg{} !Box! could be defined with a body !{ T* p; }!, and would thus not depend on !T! for its layout. 
+However, the existence of an !otype! parameter !T! means that !Box! \emph{could} depend on !T! for its layout if this definition is not visible, and preserving separate compilation (and the associated C compatibility) is a more important design metric.
 
 \subsection{Applications of Dtype-static Types} \label{dtype-static-sec}
@@ -387,5 +401,5 @@
 Another useful pattern enabled by reused dtype-static type instantiations is zero-cost \emph{tag structures}. 
 Sometimes, information is only used for type checking and can be omitted at runtime. 
-In the example below, !scalar! is a dtype-static type; hence, all uses have a single structure definition containing !unsigned long! and can share the same implementations of common functions like !?+?!. 
+In the example below, !scalar! is a dtype-static type; hence, all uses have a single structure definition containing !unsigned long! and can share the same implementations of common functions, like !?+?!. 
 These implementations may even be separately compiled, unlike \CC{} template functions.
 However, the \CFA{} type checker ensures matching types are used by all calls to !?+?!, preventing nonsensical computations like adding a length to a volume.
@@ -408,11 +422,12 @@
 \section{Performance Experiments} \label{generic-performance-sec}
 
-To validate the practicality of this generic type design I have conducted microbenchmark-based tests against a number of comparable code designs in C and \CC{}, first published in \cite{Moss18}. 
-Since all these languages are compiled with the same compiler backend and share a subset essentially comprising standard C, maximal-performance benchmarks should show little runtime variance, differing only in length and clarity of source code. 
+To validate the practicality of this generic type design, microbenchmark-based tests were conducted against a number of comparable code designs in C and \CC{}, first published in \cite{Moss18}. 
+Since all these languages are all C-based and compiled with the same compiler backend, maximal-performance benchmarks should show little runtime variance, differing only in length and clarity of source code. 
 A more illustrative comparison measures the costs of idiomatic usage of each language's features. 
-The code below shows the \CFA{} benchmark tests for a generic stack based on a singly-linked list; the test suite is equivalent for the other other languages. 
+The code below shows the \CFA{} benchmark tests for a generic stack based on a singly-linked list; the test suite is equivalent for the other other languages, code for which is included in Appendix~\ref{generic-bench-app}. 
 The experiment uses element types !int! and !pair(short, char)! and pushes $N = 40M$ elements on a generic stack, copies the stack, clears one of the stacks, and finds the maximum value in the other stack.
 
 \begin{cfa}
+#define N 4000000
 int main() {
 	int max = 0, val = 42;
@@ -435,5 +450,5 @@
 \end{cfa}
 
-The four versions of the benchmark implemented are C with !void*!-based polymorphism, \CFA{} with parameteric polymorphism, \CC{} with templates, and \CC{} using only class inheritance for polymorphism, denoted \CCV{}. 
+The four versions of the benchmark implemented are C with !void*!-based polymorphism, \CFA{} with parametric polymorphism, \CC{} with templates, and \CC{} using only class inheritance for polymorphism, denoted \CCV{}. 
 The \CCV{} variant illustrates an alternative object-oriented idiom where all objects inherit from a base !object! class, mimicking a Java-like interface; in particular, runtime checks are necessary to safely downcast objects. 
 The most notable difference among the implementations is the memory layout of generic types: \CFA{} and \CC{} inline the stack and pair elements into corresponding list and pair nodes, while C and \CCV{} lack such capability and, instead, must store generic objects via pointers to separately allocated objects. 
@@ -449,5 +464,5 @@
 \centering
 \input{generic-timing}
-\caption{Benchmark timing results (smaller is better)} \label{generic-eval-fig}
+\caption[Benchmark timing results]{Benchmark timing results (smaller is better)} \label{generic-eval-fig}
 \end{figure}
 
@@ -475,5 +490,5 @@
 Use of these standard library types has minimal impact on the performance benchmarks, but shrinks the \CFA{} and \CC{} code to 39 and 42 lines, respectively. 
 The difference between the \CFA{} and \CC{} line counts is primarily declaration duplication to implement separate compilation; a header-only \CFA{} library is similar in length to the \CC{} version. 
-On the other hand, due to the language shortcomings mentioned at the beginning of the chapter, C does not have a generic collections library in its standard distribution, resulting in frequent reimplementation of such collection types by C programmers. 
+On the other hand, due to the language shortcomings mentioned at the beginning of the chapter, C does not have a generic collections library in its standard distribution, resulting in frequent re-implementation of such collection types by C programmers. 
 \CCV{} does not use the \CC{} standard template library by construction, and, in fact, includes the definition of !object! and wrapper classes for !char!, !short!, and !int! in its line count, which inflates this count somewhat, as an actual object-oriented language would include these in the standard library. 
 I justify the given line count by noting that many object-oriented languages do not allow implementing new interfaces on library types without subclassing or wrapper types, which may be similarly verbose. 
@@ -481,5 +496,5 @@
 Line count is a fairly rough measure of code complexity; another important factor is how much type information the programmer must specify manually, especially where that information is not type-checked. 
 Such unchecked type information produces a heavier documentation burden and increased potential for runtime bugs and is much less common in \CFA{} than C, with its manually specified function pointer arguments and format codes, or \CCV{}, with its extensive use of un-type-checked downcasts, \eg{} !object! to !integer! when popping a stack. 
-To quantify this manual typing, the ``redundant type annotations'' line in Table~\ref{generic-eval-table} counts the number of lines on which the known type of a variable is respecified, either as a format specifier, explicit downcast, type-specific function, or by name in a !sizeof!, !struct! literal, or !new! expression. 
+To quantify this manual typing, the ``redundant type annotations'' line in Table~\ref{generic-eval-table} counts the number of lines on which the known type of a variable is re-specified, either as a format specifier, explicit downcast, type-specific function, or by name in a !sizeof!, !struct! literal, or !new! expression. 
 The \CC{} benchmark uses two redundant type annotations to create new stack nodes, whereas the C and \CCV{} benchmarks have several such annotations spread throughout their code. 
 The \CFA{} benchmark is able to eliminate \emph{all} redundant type annotations through use of the return-type polymorphic !alloc! function in the \CFA{} standard library. 
@@ -487,23 +502,42 @@
 \section{Future Work}
 
-The generic types design presented here is already sufficiently expressive to implement a variety of useful library types. 
+The generic types presented here are already sufficiently expressive to implement a variety of useful library types. 
 However, some other features based on this design could further improve \CFA{}. 
 
 The most pressing addition is the ability to have non-type generic parameters. 
-C already supports fixed-length array types, \eg{} !int[10]!; these types are essentially generic types with unsigned integer parameters, and allowing \CFA{} users the capability to build similar types is a requested feature. 
-More exotically, the ability to have these non-type parameters depend on dynamic runtime values rather than static compile-time constants opens up interesting opportunities for type-checking problematic code patterns. 
-For example, if a collection iterator was parameterized over the pointer to the collection it was drawn from, then a sufficiently powerful static analysis pass could ensure that that iterator was only used for that collection, eliminating one source of hard-to-find bugs. 
-
-The implementation mechanisms behind this generic types design can also be used to add new features to \CFA{}. 
-One such potential feature would be to add \emph{field assertions} to the existing function and variable assertions on polymorphic type variables. 
+C already supports fixed-length array types, \eg{} !int[10]!; these types are essentially generic types with unsigned integer parameters (\ie{} array dimension), and allowing \CFA{} users the capability to build similar types is a requested feature. 
+% More exotically, the ability to have these non-type parameters depend on dynamic runtime values rather than static compile-time constants opens up interesting opportunities for type-checking problematic code patterns. 
+% For example, if a collection iterator was parameterized over the pointer to the collection it was drawn from, then a sufficiently powerful static analysis pass could ensure that that iterator was only used for that collection, eliminating one source of hard-to-find bugs. 
+
+The implementation mechanisms behind generic types can also be used to add new features to \CFA{}. 
+One such potential feature is \emph{field assertions}, an addition to the existing function and variable assertions on polymorphic type variables. 
+These assertions could be specified using this proposed syntax:
+
+\begin{cfa}
+trait hasXY(dtype T) {
+	int T.x;  $\C{// T has a field x of type int}$
+	int T.y;  $\C{// T has a field y of type int}$
+};
+\end{cfa}
+
 Implementation of these field assertions would be based on the same code that supports member access by dynamic offset calculation for dynamic generic types. 
 Simulating field access can already be done more flexibly in \CFA{} by declaring a trait containing an accessor function to be called from polymorphic code, but these accessor functions impose some overhead both to write and call, and directly providing field access via an implicit offset parameter would be both more concise and more efficient. 
-Of course, there are language design trade-offs to such an approach, notably that providing the two similar features of field and function assertions would impose a burden of choice on programmers writing traits, with field assertions more efficient, but function assertions more general; given this open design question we have deferred a decision on field assertions until we have more experience using \CFA{}.
-If field assertions are included in the language, a natural extension would be to provide a structural inheritance mechanism for every !struct! type that simply turns the list of !struct! fields into a list of field assertions, allowing monomorphic functions over that type to be generalized to polymorphic functions over other similar types with added or reordered fields.
-\CFA{} could also support a packed or otherwise size-optimized representation for generic types based on a similar mechanism --- the layout function would need to be re-written, but nothing in the use of the offset arrays implies that the field offsets need be monotonically increasing.
+Of course, there are language design trade-offs to such an approach, notably that providing the two similar features of field and function assertions would impose a burden of choice on programmers writing traits, with field assertions more efficient, but function assertions more general; given this open design question a decision on field assertions is deferred until \CFA{} is more mature.
+
+If field assertions are included in the language, a natural extension would be to provide a structural inheritance mechanism for every !struct! type that simply turns the list of !struct! fields into a list of field assertions, allowing monomorphic functions over that type to be generalized to polymorphic functions over other similar types with added or reordered fields, for example:
+
+\begin{cfa}
+struct point { int x, y; };  $\C{// traitof(point) is equivalent to hasXY above}$
+struct coloured_point { int x, y; enum { RED, BLACK } colour };
+
+// works for both point and coloured_point
+forall(dtype T | traitof(point)(T) )
+double hypot( T& p ) { return sqrt( p.x*p.x + p.y*p.y ); }
+\end{cfa}
+
+\CFA{} could also support a packed or otherwise size-optimized representation for generic types based on a similar mechanism --- nothing in the use of the offset arrays implies that the field offsets need to be monotonically increasing.
 
 With respect to the broader \CFA{} polymorphism design, the experimental results in Section~\ref{generic-performance-sec} demonstrate that though the runtime impact of \CFA{}'s dynamic virtual dispatch is low, it is not as low as the static dispatch of \CC{} template inlining. 
-However, rather than subject all \CFA{} users to the compile-time costs of ubiquitous template expansion, we are considering more targeted mechanisms for performance-sensitive code. 
-Two promising approaches are are an !inline! annotation at polymorphic function call sites to create a template specialization of the function (provided the code is visible) or placing a different !inline! annotation on polymorphic function definitions to instantiate a specialized version of the function for some set of types. 
-These approaches are not mutually exclusive and allow performance optimizations to be applied only when necessary, without suffering global code bloat. 
-In general, the \CFA{} team believes that separate compilation works well with loaded hardware caches by producing smaller code, which may offset the benefit of larger inlined code. 
+However, rather than subject all \CFA{} users to the compile-time costs of ubiquitous template expansion, it is better to target performance-sensitive code more precisely. 
+Two promising approaches are an !inline! annotation at polymorphic function call sites to create a template specialization of the function (provided the code is visible) or placing a different !inline! annotation on polymorphic function definitions to instantiate a specialized version of the function for some set of types. 
+These approaches are complementary and allow performance optimizations to be applied only when necessary, without suffering global code bloat. 
Index: doc/theses/aaron_moss_PhD/phd/introduction.tex
===================================================================
--- doc/theses/aaron_moss_PhD/phd/introduction.tex	(revision 114bde658eed1edf31cde78bd21584a1ced7df2e)
+++ doc/theses/aaron_moss_PhD/phd/introduction.tex	(revision 92d41a4af1542b1fcfd3bacde48933e4c8519366)
@@ -2,5 +2,5 @@
 
 The C programming language has had a wide-ranging impact on the design of software and programming languages. 
-In the 30 years since its first standardization, it has consistently been one of the most popular programming languages, with millions of lines of C code still in active use, and tens of thousands of trained programmers producing it. The TIOBE index\cite{TIOBE} tracks popularity of programming languages over time, and C has never dropped below second place:
+In the 30 years since its first standardization, it has consistently been one of the most popular programming languages, with billions of lines of C code still in active use, and tens of thousands of trained programmers producing it. The TIOBE index\cite{TIOBE} tracks popularity of programming languages over time, and C has never dropped below second place:
 
 \begin{table}[h]
@@ -18,19 +18,24 @@
 \end{table}
 
-The impact of C on programming language design is also obvious from Table~\ref{tiobe-table}; with the exception of Python, all of the top five languages use C-like syntax and procedural control structures. 
-\CC{} is even a largely backwards-compatible extension of C, with development dating back nearly as far as C itself. 
-Though its lasting popularity and wide impact on programming language design point to the continued relevance of C, they also highlight the widespread desire of programmers for languages with more expressive power and programmer-friendly features; accommodating both low-impact maintenance of legacy C code and low-effort development of the software of the future is a difficult task for a single programming language.
+The impact of C on programming language design is also obvious from Table~\ref{tiobe-table}; with the exception of Python, all of the top five languages use C-like syntax and control structures. 
+\CC{} is even a largely backwards-compatible extension of C. 
+Though its lasting popularity and wide impact on programming language design point to the continued relevance of C, there is also widespread desire of programmers for languages with more expressive power and programmer-friendly features; accommodating both maintenance of legacy C code and development of the software of the future is a difficult task for a single programming language.
 
-\CFA{}\footnote{Pronounced ``C-for-all'', and written \CFA{} or \CFL{}.} is an evolutionary modernization of the C programming language which aims to fulfill both these ends well. 
+\CFA{}\footnote{Pronounced ``C-for-all'', and written \CFA{} or \CFL{}.} is an evolutionary modernization of the C programming language that aims to fulfill both these ends well. 
 \CFA{} both fixes existing design problems and adds multiple new features to C, including name overloading, user-defined operators, parametric-polymorphic routines, and type constructors and destructors, among others. 
 The new features make \CFA{} more powerful and expressive than C, while maintaining strong backward-compatibility with both C code and the procedural paradigm expected by C programmers. 
+Unlike other popular C extensions like \CC{} and Objective-C, \CFA{} adds modern features to C without imposing an object-oriented paradigm to use them.
 However, these new features do impose a compile-time cost, particularly in the expression resolver, which must evaluate the typing rules of a significantly more complex type-system.
 
 This thesis is focused on making \CFA{} a more powerful and expressive language, both by adding new features to the \CFA{} type system and ensuring that both added and existing features can be efficiently implemented in \CFACC{}, the \CFA{} reference compiler. 
-Particular contributions of this work include design and implementation of 
-parametric-polymorphic (``generic'') types in a manner compatible with the existing polymorphism design of \CFA{} (Chapter~\ref{generic-chap}), a type environment data structure based on a novel variant of the union-find algorithm (Chapter~\ref{env-chap}), and a new expression resolution algorithm designed to quickly locate the optimal declarations for a \CFA{} expression (Chapter~\ref{resolution-chap}). 
-This expression resolution algorithm was designed with the aid of a purpose-built prototype system which encapsulates the essential aspects of the \CFA{} type system without incurring the technical debt of the existing system or the friction-inducing necessity of maintaining a working compiler; the goal of this prototype system was to discover effective heuristics to avoid performing unnecessary work in the process of locating the optimal \CFA{} expression resolution.
+Particular contributions of this work include:
+\begin{itemize}
+\item design and implementation of parametric-polymorphic (``generic'') types in a manner compatible with the existing polymorphism design of \CFA{} (Chapter~\ref{generic-chap}),
+\item a new expression resolution algorithm designed to quickly locate the optimal declarations for a \CFA{} expression (Chapter~\ref{resolution-chap}),
+\item a type environment data structure based on a novel variant of the union-find algorithm (Chapter~\ref{env-chap}),
+\item and as a technical contribution, a prototype system for compiler algorithm development which encapsulates the essential aspects of the \CFA{} type system without incurring the technical debt of the existing system or the friction-inducing necessity of maintaining a working compiler (Chapter~\ref{expr-chap}).
+\end{itemize}
 
-Though the direction and validation of this work was fairly narrowly focused on the \CFA{} programming language, the tools used and results obtained should be of interest to a wider compiler and programming language design community. 
-In particular, with the addition of \emph{concepts} in \CCtwenty{}, conforming \CC{} compilers must support a model of type assertions very similar to that in \CFA{}, and the algorithmic techniques used in the expression resolution algorithm presented here may prove useful. 
-Type environments are also widely modelled in compiler implementations, particularly of functional languages, though also increasingly commonly in other languages (such as Rust) which perform type inference; the type environment presented here may be useful to those language implementers.
+Though the direction and validation of this work is fairly narrowly focused on the \CFA{} programming language, the tools used and results obtained should be of interest to a wider compiler and programming language design community. 
+In particular, with the addition of \emph{concepts} in \CCtwenty{} \cite{C++Concepts}, conforming \CC{} compilers must support a model of type assertions very similar to that in \CFA{}, and the algorithmic techniques used here may prove useful. 
+Type environments are also widely modelled in compiler implementations, particularly for functional languages, though also increasingly commonly for other languages (such as Rust) which perform type inference; the type environment presented here may be useful to those language implementers.
Index: doc/theses/aaron_moss_PhD/phd/macros.tex
===================================================================
--- doc/theses/aaron_moss_PhD/phd/macros.tex	(revision 114bde658eed1edf31cde78bd21584a1ced7df2e)
+++ doc/theses/aaron_moss_PhD/phd/macros.tex	(revision 92d41a4af1542b1fcfd3bacde48933e4c8519366)
@@ -15,8 +15,8 @@
 \newcommand{\Csharp}{C\raisebox{-0.7ex}{\Large$^\sharp$}} % C# symbolic name
 
-\newcommand{\ie}{\textit{i.e.}}
-\newcommand{\eg}{\textit{e.g.}}
-\newcommand{\etc}{\textit{etc.}}
-\newcommand{\etal}{\textit{et~al.}}
+\newcommand{\ie}{\textit{i.e.}\@}
+\newcommand{\eg}{\textit{e.g.}\@}
+\newcommand{\etc}{\textit{etc.}\@}
+\newcommand{\etal}{\textit{et~al.}\@}
 
 \newcommand{\myset}[1]{\left\{#1\right\}}
Index: doc/theses/aaron_moss_PhD/phd/resolution-heuristics.tex
===================================================================
--- doc/theses/aaron_moss_PhD/phd/resolution-heuristics.tex	(revision 114bde658eed1edf31cde78bd21584a1ced7df2e)
+++ doc/theses/aaron_moss_PhD/phd/resolution-heuristics.tex	(revision 92d41a4af1542b1fcfd3bacde48933e4c8519366)
@@ -1,15 +1,391 @@
-\chapter{Resolution Heuristics}
+\chapter{Resolution Algorithms}
 \label{resolution-chap}
 
+% consider using "satisfaction" throughout when talking about assertions
+% "valid" instead of "feasible" interpretations
+
 The main task of the \CFACC{} type-checker is \emph{expression resolution}, determining which declarations the identifiers in each expression correspond to. 
-Resolution is a straightforward task in C, as each declaration has a unique identifier, but in \CFA{} the name overloading features discussed in Section~\ref{overloading-sec} generate multiple candidate declarations for each identifier.
-I refer to a given matching between identifiers and declarations in an expression as an \emph{interpretation}; an interpretation also includes information about polymorphic type bindings and implicit casts to support the \CFA{} features discussed in Sections~\ref{poly-func-sec} and~\ref{implicit-conv-sec}, each of which increase the proportion of feasible candidate interpretations. 
-To choose between feasible interpretations, \CFA{} defines a \emph{conversion cost} to rank interpretations; the expression resolution problem is thus to find the unique minimal-cost interpretation for an expression, reporting an error if no such interpretation exists.
-
-\section{Conversion Cost}
-
-
-
-% Discuss changes to cost model, as promised in Ch. 2
-
-% Mention relevance of work to C++20 concepts
+Resolution is a straightforward task in C, as no declarations share identifiers, but in \CFA{} the name overloading features discussed in Section~\ref{overloading-sec} generate multiple candidate declarations for each identifier.
+A given matching between identifiers and declarations in an expression is an \emph{interpretation}; an interpretation also includes information about polymorphic type bindings and implicit casts to support the \CFA{} features discussed in Sections~\ref{poly-func-sec} and~\ref{implicit-conv-sec}, each of which increase the number of valid candidate interpretations. 
+To choose among valid interpretations, a \emph{conversion cost} is used to rank interpretations. 
+Hence, the expression resolution problem is to find the unique minimal-cost interpretation for an expression, reporting an error if no such interpretation exists.
+
+\section{Expression Resolution}
+
+\subsection{Type Unification}
+
+The polymorphism features of \CFA{} require binding of concrete types to polymorphic type variables. 
+Briefly, \CFACC{} keeps a mapping from type variables to the concrete types they are bound to as an auxiliary data structure during expression resolution; Chapter~\ref{env-chap} describes this \emph{environment} data structure in more detail. 
+A \emph{unification} algorithm is used to simultaneously check two types for equivalence with respect to the substitutions in an environment and update that environment. 
+Essentially, unification recursively traverses the structure of both types, checking them for equivalence, and when it encounters a type variable, it replaces it with the concrete type it is bound to; if the type variable has not yet been bound, the unification algorithm assigns the equivalent type as the bound type of the variable, after performing various consistency checks. 
+Ditchfield~\cite{Ditchfield92} and Bilson~\cite{Bilson03} describe the semantics of \CFA{} unification in more detail.
+
+\subsection{Conversion Cost} \label{conv-cost-sec}
+
+C does not have an explicit cost model for implicit conversions, but the ``usual arithmetic conversions'' \cite[\S{}6.3.1.8]{C11} used to decide which arithmetic operators to use define one implicitly. 
+The only context in which C has name overloading is the arithmetic operators, and the usual arithmetic conversions define a \emph{common type} for mixed-type arguments to binary arithmetic operators. 
+Since for backward-compatibility purposes the conversion costs of \CFA{} must produce an equivalent result to these common type rules, it is appropriate to summarize \cite[\S{}6.3.1.8]{C11} here:
+
+\begin{itemize}
+\item If either operand is a floating-point type, the common type is the size of the largest floating-point type. If either operand is !_Complex!, the common type is also !_Complex!.
+\item If both operands are of integral type, the common type has the same size\footnote{Technically, the C standard defines a notion of \emph{rank} in \cite[\S{}6.3.1.1]{C11}, a distinct value for each \lstinline{signed} and \lstinline{unsigned} pair; integral types of the same size thus may have distinct ranks. For instance, though \lstinline{int} and \lstinline{long} may have the same size, \lstinline{long} always has greater rank. The standard-defined types are declared to have greater rank than any types of the same size added as compiler extensions.} as the larger type.
+\item If the operands have opposite signedness, the common type is !signed! if the !signed! operand is strictly larger, or !unsigned! otherwise. If the operands have the same signedness, the common type shares it.
+\end{itemize}
+
+Beginning with the work of Bilson~\cite{Bilson03}, \CFA{} defines a \emph{conversion cost} for each function call in a way that generalizes C's conversion rules. 
+Loosely defined, the conversion cost counts the implicit conversions utilized by an interpretation. 
+With more specificity, the cost is a lexicographically-ordered tuple, where each element corresponds to a particular kind of conversion. 
+In Bilson's design, conversion cost is a 3-tuple, $(unsafe, poly, safe)$, where $unsafe$ is the count of unsafe (narrowing) conversions, $poly$ is the count of polymorphic type bindings, and $safe$ is the sum of the degree of safe (widening) conversions. 
+Degree of safe conversion is calculated as path weight in a directed graph of safe conversions between types; Bilson's version and the current version of this graph are in Figures~\ref{bilson-conv-fig} and~\ref{extended-conv-fig}, respectively. 
+The safe conversion graph is designed such that the common type $c$ of two types $u$ and $v$ is compatible with the C standard definitions from \cite[\S{}6.3.1.8]{C11} and can be calculated as the unique type minimizing the sum of the path weights of $\overrightarrow{uc}$ and $\overrightarrow{vc}$.
+The following example lists the cost in the Bilson model of calling each of the following functions with two !int! parameters:
+
+\begin{cfa}
+void f$\(_1\)$(char, long); $\C{// (1,0,1)}$
+void f$\(_2\)$(short, long); $\C{// (1,0,1)}$
+forall(otype T) void f$\(_3\)$(T, long); $\C{// (0,1,1)}$
+void f$\(_4\)$(long, long); $\C{// (0,0,2)}$
+void f$\(_5\)$(int, unsigned long); $\C{// (0,0,2)}$
+void f$\(_6\)$(int, long); $\C{// (0,0,1)}$
+\end{cfa}
+
+Note that safe and unsafe conversions are handled differently; \CFA{} counts distance of safe conversions (\eg{} !int! to !long! is cheaper than !int! to !unsigned long!), while only counting the number of unsafe conversions (\eg{} !int! to !char! and !int! to !short! both have unsafe cost 1, as in !f!$_1$ and !f!$_2$ above). 
+These costs are summed over the parameters in a call; in the example above, the cost of the two !int! to !long! conversions for !f!$_4$ sum equal to the one !int! to !unsigned long! conversion for !f!$_5$.
+
+\begin{figure}
+	\centering
+	\begin{subfigure}[h]{3in}
+		\includegraphics{figures/bilson-conv-graph}
+		\caption{Bilson} \label{bilson-conv-fig}
+	\end{subfigure}~\begin{subfigure}[h]{3in}
+		\includegraphics{figures/extended-conv-graph}
+		\caption{Extended} \label{extended-conv-fig}
+	\end{subfigure}
+	% \includegraphics{figures/safe-conv-graph}
+	\caption[Safe conversion graphs.]{Safe conversion graphs. In both graphs, plain arcs have cost $safe = 1, sign = 0$ while dashed sign-conversion arcs have cost $safe = 1, sign = 1$. As per \cite[\S{}6.3.1.8]{C11}, types promote to types of the same signedness with greater rank, from \lstinline{signed} to \lstinline{unsigned} with the same rank, and from \lstinline{unsigned} to \lstinline{signed} with greater size. The arc from \lstinline{unsigned long} to \lstinline{long long} (highlighted in red in \ref{bilson-conv-fig}) is deliberately omitted in \ref{extended-conv-fig}, as on the presented system \lstinline{sizeof(long) == sizeof(long long)}.}
+	\label{safe-conv-fig}
+\end{figure}
+
+As part of adding reference types to \CFA{} (see Section~\ref{type-features-sec}), Schluntz added a new $reference$ element to the cost tuple, which counts the number of implicit reference-to-rvalue conversions performed so that candidate interpretations can be distinguished by how closely they match the nesting of reference types; since references are meant to act almost indistinguishably from lvalues, this $reference$ element is the least significant in the lexicographic comparison of cost tuples.
+
+I also refined the \CFA{} cost model as part of this thesis work. 
+Bilson's \CFA{} cost model includes the cost of polymorphic type bindings from a function's type assertions in the $poly$ element of the cost tuple; this has the effect of making more-constrained functions more expensive than less-constrained functions, as in the following example, based on differing iterator types:
+
+\begin{cfa}
+forall(dtype T | { T& ++?(T&); }) T& advance$\(1\)$(T& i, int n);
+forall(dtype T | { T& ++?(T&); T& ?+=?(T&, int)}) T& advance$\(2\)$(T& i, int n);
+\end{cfa}
+
+In resolving a call to !advance!, the binding to the !T&! parameter in the assertions is added to the $poly$ cost in Bilson's model.
+However, type assertions actually make a function \emph{less} polymorphic, and as such functions with more type assertions should be preferred in type resolution.
+In the example above, if the meaning of !advance! is ``increment !i! !n! times'', !advance!$_1$ requires an !n!-iteration loop, while !advance!$_2$ can be implemented more efficiently with the !?+=?! operator; as such, !advance!$_2$ should be chosen over !advance!$_1$ whenever its added constraint can be satisfied.
+Accordingly, a $specialization$ element is now included in the \CFA{} cost tuple, the values of which are always negative. 
+Each type assertion subtracts 1 from $specialization$, so that more-constrained functions cost less, and thus are chosen over less-constrained functions, all else being equal.
+A more sophisticated design would define a partial order over sets of type assertions by set inclusion (\ie{} one function would only cost less than another if it had a strict superset of assertions,  rather than just more total assertions), but I did not judge the added complexity of computing and testing this order to be worth the gain in specificity.
+
+I also incorporated an unimplemented aspect of Ditchfield's earlier cost model.
+In the example below, adapted from \cite[p.89]{Ditchfield92}, Bilson's cost model only distinguished between the first two cases by accounting extra cost for the extra set of !otype! parameters, which, as discussed above, is not a desirable solution:
+
+\begin{cfa}
+forall(otype T, otype U) void f$\(_1\)$(T, U);  $\C[3.25in]{// polymorphic}$
+forall(otype T) void f$\(_2\)$(T, T);  $\C[3.25in]{// less polymorphic}$
+forall(otype T) void f$\(_3\)$(T, int);  $\C[3.25in]{// even less polymorphic}$
+forall(otype T) void f$\(_4\)$(T*, int); $\C[3.25in]{// least polymorphic}$
+\end{cfa}
+
+The new cost model accounts for the fact that functions with more polymorphic variables are less constrained by introducing a $var$ cost element that counts the number of type variables on a candidate function. 
+In the example above, !f!$_1$ has $var = 2$, while the others have $var = 1$. 
+The new cost model also accounts for a nuance unhandled by Ditchfield or Bilson, in that it makes the more specific !f!$_4$ cheaper than the more generic !f!$_3$; !f!$_4$ is presumably somewhat optimized for handling pointers, but the prior \CFA{} cost model could not account for the more specific binding, as it simply counted the number of polymorphic unifications. 
+
+In the modified model, each level of constraint on a polymorphic type in the parameter list results in a decrement of the $specialization$ cost element, which is shared with the count of assertions due to their common nature as constraints on polymorphic type bindings. 
+Thus, all else equal, if both a binding to !T! and a binding to !T*! are available, the model chooses the more specific !T*! binding with $specialization = -1$.
+This process is recursive, such that !T**! has $specialization = -2$. 
+This calculation works similarly for generic types, \eg{} !box(T)! also has specialization cost $-1$. 
+For multi-argument generic types, the least-specialized polymorphic parameter sets the specialization cost, \eg{} the specialization cost of !pair(T, S*)! is $-1$ (from !T!) rather than $-2$ (from !S!).
+Specialization cost is not counted on the return type list; since $specialization$ is a property of the function declaration, a lower specialization cost prioritizes one declaration over another. 
+User programmers can choose between functions with varying parameter lists by adjusting the arguments, but the same is not true in general of varying return types\footnote{In particular, as described in Section~\ref{expr-cost-sec}, cast expressions take the cheapest valid and convertable interpretation of the argument expression, and expressions are resolved as a cast to \lstinline{void}. As a result of this, including return types in the $specialization$ cost means that a function with return type \lstinline{T*} for some polymorphic type \lstinline{T} would \emph{always} be chosen over a function with the same parameter types returning \lstinline{void}, even for \lstinline{void} contexts, an unacceptably counter-intuitive result.}, so the return types are omitted from the $specialization$ element.
+Since both $vars$ and $specialization$ are properties of the declaration rather than any particular interpretation, they are prioritized less than the interpretation-specific conversion costs from Bilson's original 3-tuple. 
+
+A final refinement I have made to the \CFA{} cost model is with regard to choosing among arithmetic conversions. 
+The C standard \cite[\S{}6.3.1.8]{C11} states that the common type of !int! and !unsigned int! is !unsigned int! and that the common type of !int! and !long! is !long!, but does not provide guidance for making a choice among conversions. 
+Bilson's \CFACC{} uses conversion costs based off Figure~\ref{bilson-conv-fig}. 
+However, Bilson's design results in inconsistent and somewhat surprising costs, with conversion to the next-larger same-sign type generally (but not always) double the cost of conversion to the !unsigned! type of the same size.
+In the redesign, for consistency with the approach of the usual arithmetic conversions, which select a common type primarily based on size, but secondarily on sign, arcs in the new graph are annotated with whether they represent a sign change, and such sign changes are summed in a new $sign$ cost element that lexicographically succeeds $safe$. 
+This means that sign conversions are approximately the same cost as widening conversions, but slightly more expensive (as opposed to less expensive in Bilson's graph), so maintaining the same signedness is consistently favoured. 
+
+With these modifications, the current \CFA{} cost tuple is as follows:
+
+\begin{equation*}
+	(unsafe, poly, safe, sign, vars, specialization, reference)
+\end{equation*}
+
+\subsection{Expression Cost} \label{expr-cost-sec}
+
+The mapping from \CFA{} expressions to cost tuples is described by Bilson in \cite{Bilson03}, and remains effectively unchanged modulo the refinements to the cost tuple described above. 
+Nonetheless, some salient details are repeated here for the sake of completeness. 
+
+On a theoretical level, the resolver treats most expressions as if they were function calls.
+Operators in \CFA{} (both those existing in C and added features like constructors) are all modelled as function calls. 
+In terms of the core argument-parameter matching algorithm, overloaded variables are handled the same as zero-argument function calls, aside from a different pool of candidate declarations and setup for different code generation. 
+Similarly, an aggregate member expression !a.m! can be modelled as a unary function !m! that takes one argument of the aggregate type.
+Literals do not require sophisticated resolution, as in C the syntactic form of each implies their result types (!42! is !int!, !"hello"! is !char*!, \etc{}), though struct literals (\eg{} !(S){ 1, 2, 3 }! for some struct !S!) require resolution of the implied constructor call.
+
+Since most expressions can be treated as function calls, nested function calls are the primary component of complexity in expression resolution. 
+Each function call has an \emph{identifier} that must match the name of the corresponding declaration, and a possibly-empty list of \emph{arguments}. 
+These arguments may be function call expressions themselves, producing a tree of function-call expressions to resolve, where the leaf expressions are generally nullary functions, variable expressions, or literals. 
+A single instance of expression resolution consists of matching declarations to all the identifiers in the expression tree of a top-level expression, along with inserting any conversions and satisfying all assertions necessary for that matching. 
+The cost of a function-call expression is the sum of the conversion costs of each argument type to the corresponding parameter and the total cost of each subexpression, recursively calculated. 
+\CFA{} expression resolution must produce either the unique lowest-cost interpretation of the top-level expression, or an appropriate error message if none exists. 
+The cost model of \CFA{} precludes a greedy bottom-up resolution pass, as constraints and costs introduced by calls higher in the expression tree can change the interpretation of those lower in the tree, as in the following example:
+
+\begin{cfa}
+void f(int);
+double g$\(_1\)$(int);
+int g$\(_2\)$(long);
+
+f( g(42) );
+\end{cfa}
+
+Considered independently, !g!$_1$!(42)! is the cheapest interpretation of !g(42)!, with cost $(0,0,0,0,0,0)$ since the argument type is an exact match. 
+However, in context, an unsafe conversion is required to downcast the return type of !g!$_1$ to an !int! suitable for !f!, for a total cost of $(1,0,0,0,0,0)$ for !f( g!$_1$!(42) )!. 
+If !g!$_2$ is chosen, on the other hand, there is a safe upcast from the !int! type of !42! to !long!, but no cast on the return of !g!$_2$, for a total cost of $(0,0,1,0,0,0)$ for !f( g!$_2$!(42) )!; as this is cheaper, !g!$_2$ is chosen.
+Due to this design, all valid interpretations of subexpressions must in general be propagated to the top of the expression tree before any can be eliminated, a lazy form of expression resolution, as opposed to the eager expression resolution allowed by C, where each expression can be resolved given only the resolution of its immediate subexpressions.
+
+If there are no valid interpretations of the top-level expression, expression resolution fails and must produce an appropriate error message. 
+If any subexpression has no valid interpretations, the process can be short-circuited and the error produced at that time. 
+If there are multiple valid interpretations of a top-level expression, ties are broken based on the conversion cost, calculated as above. 
+If there are multiple minimal-cost valid interpretations of a top-level expression, that expression is said to be \emph{ambiguous}, and an error must be produced. 
+Multiple minimal-cost interpretations of a subexpression do not necessarily imply an ambiguous top-level expression, however, as the subexpression interpretations may be disambiguated based on their return type or by selecting a more-expensive interpretation of that subexpression to reduce the overall expression cost, as in the example above.
+
+The \CFA{} resolver uses type assertions to filter out otherwise-valid subexpression interpretations. 
+An interpretation can only be selected if all the type assertions in the !forall! clause on the corresponding declaration can be satisfied with a unique minimal-cost set of satisfying declarations. 
+Type assertion satisfaction is tested by performing type unification on the type of the assertion and the type of the declaration satisfying the assertion. 
+That is, a declaration that satisfies a type assertion must have the same name and type as the assertion after applying the substitutions in the type environment. 
+Assertion-satisfying declarations may be polymorphic functions with assertions of their own that must be satisfied recursively. 
+This recursive assertion satisfaction has the potential to introduce infinite loops into the type resolution algorithm, a situation which \CFACC{} avoids by imposing a hard limit on the depth of recursive assertion satisfaction (currently 4); this approach is also taken by \CC{} to prevent infinite recursion in template expansion, and has proven to be effective and not unduly restrictive of the expressive power of \CFA{}. 
+
+Cast expressions must be treated somewhat differently than functions for backwards compatibility purposes with C. 
+In C, cast expressions can serve two purposes, \emph{conversion} (\eg{} !(int)3.14!), which semantically converts a value to another value in a different type with a different bit representation, or \emph{coercion} (\eg{} !void* p; (int*)p;!), which assigns a different type to the same bit value. 
+C provides a set of built-in conversions and coercions, and user programmers are able to force a coercion over a conversion if desired by casting pointers. 
+The overloading features in \CFA{} introduce a third cast semantic, \emph{ascription} (\eg{} !int x; double x; (int)x;!), which selects the overload that most-closely matches the cast type. 
+However, since ascription does not exist in C due to the lack of overloadable identifiers, if a cast argument has an unambiguous interpretation as a conversion argument then it must be interpreted as such, even if the ascription interpretation would have a lower overall cost.
+This is demonstrated in the following example, adapted from the C standard library:
+
+\begin{cfa}
+unsigned long long x;
+(unsigned)(x >> 32);
+\end{cfa}
+
+In C semantics, this example is unambiguously upcasting !32! to !unsigned long long!, performing the shift, then downcasting the result to !unsigned!, at total cost $(1,0,3,1,0,0,0)$. 
+If ascription were allowed to be a first-class interpretation of a cast expression, it would be cheaper to select the !unsigned! interpretation of !?>>?! by downcasting !x! to !unsigned! and upcasting !32! to !unsigned!, at a total cost of $(1,0,1,1,0,0,0)$. 
+However, this break from C semantics is not backwards compatibile, so to maintain C compatibility, the \CFA{} resolver selects the lowest-cost interpretation of the cast argument for which a conversion or coercion to the target type exists (upcasting to !unsigned long long! in the example above, due to the lack of unsafe downcasts), using the cost of the conversion itself only as a tie-breaker. 
+For example, in !int x; double x; (int)x;!, both declarations have zero-cost interpretations as !x!, but the !int x! interpretation is cheaper to cast to !int!, and is thus selected. 
+Thus, in contrast to the lazy resolution of nested function-call expressions discussed above, where final interpretations for each subexpression are not chosen until the top-level expression is reached, cast expressions introduce eager resolution of their argument subexpressions, as if that argument was itself a top-level expression.
+
+\section{Resolution Algorithms}
+
+\CFA{} expression resolution is not, in general, polynomial in the size of the input expression, as shown in Section~\ref{resn-analysis-sec}. 
+While this theoretical result is daunting, its implications can be mitigated in practice.
+\CFACC{} does not solve one instance of expression resolution in the course of compiling a program, but rather thousands; therefore, if the worst case of expression resolution is sufficiently rare, worst-case instances can be amortized by more-common easy instances for an acceptable overall runtime, as shown in Section~\ref{instance-expr-sec}. 
+Secondly, while a programmer \emph{can} deliberately generate a program designed for inefficient compilation\footnote{See for instance \cite{Haberman16}, which generates arbitrarily large \CC{} template expansions from a fixed-size source file.}, source code tends to follow common patterns. 
+Programmers generally do not want to run the full compiler algorithm in their heads, and as such keep mental shortcuts in the form of language idioms. 
+If the compiler can be tuned to handle idiomatic code more efficiently, then the reduction in runtime for idiomatic (but otherwise difficult) resolution instances can make a significant difference in total compiler runtime. 
+
+\subsection{Worst-case Analysis} \label{resn-analysis-sec}
+
+Expression resolution has a number of components that contribute to its runtime, including argument-parameter type unification, recursive traversal of the expression tree, and satisfaction of type assertions. 
+
+If the bound type for a type variable can be looked up or mutated in constant time (as asserted in Table~\ref{env-bounds-table}), then the runtime of the unification algorithm to match an argument to a parameter is usually proportional to the complexity of the types being unified. 
+In C, complexity of type representation is bounded by the most-complex type explicitly written in a declaration, effectively a small constant; in \CFA{}, however, polymorphism can generate more-complex types: 
+
+\begin{cfa}
+	forall(otype T) pair(T) wrap(T x, T y);
+
+	wrap(wrap(wrap(1, 2), wrap(3, 4)), wrap(wrap(5, 6), wrap(7, 8)));
+\end{cfa}
+
+To resolve the outermost !wrap!, the resolver must check that !pair(pair(int))! unifies with itself, but at three levels of nesting, !pair(pair(int))! is more complex than either !pair(T)! or !T!, the types in the declaration of !wrap!. 
+Accordingly, the cost of a single argument-parameter unification is $O(d)$, where $d$ is the depth of the expression tree, and the cost of argument-parameter unification for a single candidate for a given function call expression is $O(pd)$, where $p$ is the number of parameters. 
+This bound does not, however, account for the higher costs of unifying two polymorphic type variables, which may in the worst case result in a recursive unification of all type variables in the expression (as discussed in Chapter~\ref{env-chap}). 
+Since this recursive unification reduces the number of type variables, it may happen at most once, for an added $O(p^d)$ cost for a top-level expression with $O(p^d)$ type variables.
+
+Implicit conversions are also checked in argument-parameter matching, but the cost of checking for the existence of an implicit conversion is again proportional to the complexity of the type, $O(d)$. 
+Polymorphism also introduces a potential expense here; for a monomorphic function there is only one potential implicit conversion from argument type to parameter type, while if the parameter type is an unbound polymorphic type-variable then any implicit conversion from the argument type could potentially be considered a valid binding for that type variable. 
+\CFA{}, however, requires exact matches for the bound type of polymorphic parameters, removing this problem. 
+An interesting question for future work is whether loosening this requirement incurs a significant compiler runtime cost in practice; preliminary results from the prototype system described in Chapter~\ref{expr-chap} suggest it does not.
+
+Considering the recursive traversal of the expression tree, polymorphism again greatly expands the worst-case runtime. 
+Let $i$ be the number of candidate declarations for each function call; if all of these candidates are monomorphic, then there are no more than $i$ unambiguous interpretations of the subexpression rooted at that function call. 
+Ambiguous minimal-cost subexpression interpretations may also be collapsed into a single \emph{ambiguous interpretation}, as the presence of such a subexpression interpretation in the final solution is an error condition.
+One safe pruning operation during expression resolution is to discard all subexpression interpretations with greater-than-minimal cost for their return type, as such interpretations cannot beat the minimal-cost interpretation with their return type for the overall optimal solution. 
+As such, with no polymorphism, each declaration can generate no more than one minimal-cost interpretation with its return type, so the number of possible subexpression interpretations is $O(i)$ (note that in C, which lacks overloading, $i \leq 1$). 
+With polymorphism, however, a single declaration (like !wrap! above) can have many concrete return types after type variable substitution, and could in principle have a different concrete return type for each combination of argument interpretations. 
+Calculated recursively, the bound on the total number of candidate interpretations is $O(i^{p^d})$, each with a distinct type.
+
+Given these calculations of number of subexpression interpretations and matching costs, the upper bound on runtime for generating candidates for a single subexpression $d$ levels up from the leaves is $O( i^{p^d} \cdot pd )$. 
+Since there are $O(p^d)$ subexpressions in a single top-level expression, the total worst-case cost of argument-parameter matching with the overloading and polymorphism features of \CFA{} is $O( i^{p^d} \cdot pd \cdot p^d )$. 
+Since the size of the expression is $O(p^d)$, letting $n = p^d$ this simplifies to $O(i^n \cdot n^2)$
+
+This bound does not yet account for the cost of assertion satisfaction, however. 
+\CFA{} uses type unification on the assertion type and the candidate declaration type to test assertion satisfaction; this unification calculation has cost proportional to the complexity of the declaration type after substitution of bound type variables; as discussed above, this cost is $O(d)$. 
+If there are $O(a)$ type assertions on each declaration, there are $O(i)$ candidates to satisfy each assertion, for a total of $O(ai)$ candidates to check for each declaration. 
+However, each assertion candidate may generate another $O(a)$ assertions, recursively until the assertion recursion limit $r$ is reached, for a total cost of $O((ai)^r \cdot d)$. 
+Now, $a$ and $i$ are properties of the set of declarations in scope, while $r$ is defined by the language spec, so $(ai)^r$ is essentially a constant for purposes of expression resolution, albeit a very large one. 
+It is not uncommon in \CFA{} to have functions with dozens of assertions, and common function names (\eg{} !?{}!, the constructor) can have hundreds of overloads.
+
+It is clear that assertion satisfaction costs can be very large, and in fact a method for heuristically reducing these costs is one of the key contributions of this thesis, but it should be noted that the worst-case analysis is a particularly poor match for actual code in the case of assertions. 
+It is reasonable to assume that most code compiles without errors, as an actively-developed project is compiled many times, generally with relatively few new errors introduced between compiles. 
+However, the worst-case bound for assertion satisfaction is based on recursive assertion satisfaction calls exceeding the limit, which is an error case.
+In practice, then, the depth of recursive assertion satisfaction should be bounded by a small constant for error-free code, which accounts for the vast majority of problem instances.
+
+Similarly, uses of polymorphism like those that generate the $O(d)$ bound on unification or the $O(i^{p^d})$ bound on number of candidates are rare, but not completely absent. 
+This analysis points to type unification, argument-parameter matching, and assertion satisfaction as potentially costly elements of expression resolution, and thus profitable targets for algorithmic investigation. 
+Type unification is discussed in Chapter~\ref{env-chap}, while the other aspects are covered below.
+
+\subsection{Argument-Parameter Matching} \label{arg-parm-matching-sec}
+
+Pruning possible interpretations as early as possible is one way to reduce the real-world cost of expression resolution, provided that a sufficient proportion of interpretations are pruned to pay for the cost of the pruning algorithm. 
+One opportunity for interpretation pruning is by the argument-parameter type matching, but the literature provides no clear answers on whether candidate functions should be chosen according to their available arguments, or whether argument resolution should be driven by the available function candidates. 
+For programming languages without implicit conversions, argument-parameter matching is essentially the entirety of the expression resolution problem, and is generally referred to as ``overload resolution'' in the literature.
+All expression-resolution algorithms form a DAG of interpretations, some explicitly, some implicitly; in this DAG, arcs point from function-call interpretations to argument interpretations, as in Figure~\ref{res-dag-fig}
+
+\begin{figure}[h]
+	\centering
+	\begin{subfigure}[h]{3in}
+	\begin{cfa}
+	char *p$\(_1\)$;
+	int *p$\(_2\)$;
+	
+	char *f$\(_1\)$(char*, int*);
+	double *f$\(_2\)$(int*, int*);
+	
+	f$\(_A\)$( f$\(_B\)$( p$\(_A\)$, p$\(_B\)$ ), p$\(_C\)$ );
+	\end{cfa}
+	\end{subfigure}~\begin{subfigure}[h]{2.5in}
+	\includegraphics{figures/resolution-dag}
+	\end{subfigure}
+	\caption[Resolution DAG for a simple expression.]{Resolution DAG for a simple expression, annotated with explanatory subscripts. Functions that do not have a valid argument matching are covered with an \textsf{X}.} \label{res-dag-fig}
+\end{figure}
+
+Note that some interpretations may be part of more than one super-interpretation, as with the !p!$_2$ interpretation of !p!$_B$, while some valid subexpression interpretations, like the !f!$_2$ interpretation of !f!$_B$, are not used in any interpretation of their superexpression.
+
+Overload resolution was first seriously considered in the development of compilers for the Ada programming language, with different algorithms making various numbers of passes over the expression DAG, these passes being either top-down or bottom-up. 
+Baker's algorithm~\cite{Baker82} takes a single pass from the leaves of the expression tree up, pre-computing argument candidates at each step. 
+For each candidate function, Baker attempts to match argument types to parameter types in sequence, failing if any parameter cannot be matched. 
+
+Bilson~\cite{Bilson03} similarly pre-computes argument-candidates in a single bottom-up pass in the original \CFACC{}, but then explicitly enumerates all possible argument combinations for a multi-parameter function. 
+These argument combinations are matched to the parameter types of the candidate function as a unit rather than individual arguments. 
+Bilson's approach is less efficient than Baker's, as the same argument may be compared to the same parameter many times, but does allow a more straightforward handling of polymorphic type-binding and tuple-typed expressions.
+
+Unlike Baker and Bilson, Cormack's algorithm~\cite{Cormack81} requests argument candidates that match the type of each parameter of each candidate function, in a single pass from the top-level expression down; memoization of these requests is presented as an optimization. 
+As presented, this algorithm requires the parameter to have a known type, which is a poor fit for polymorphic type parameters in \CFA{}. 
+Cormack's algorithm can be modified to request argument interpretations of \emph{any} type when provided an unbound parameter type, but this eliminates any pruning gains that could be provided by the algorithm.
+
+Ganzinger and Ripken~\cite{Ganzinger80} propose an approach (later refined by Pennello~\etal{}~\cite{Pennello80}) that uses a top-down filtering pass followed by a bottom-up filtering pass to reduce the number of candidate interpretations; they prove that a small number of such iterations is sufficient to converge to a solution for the overload resolution problem in the Ada programming language. 
+Persch~\etal{}~\cite{PW:overload} developed a similar two-pass approach where the bottom-up pass is followed by the top-down pass. 
+These approaches differ from Baker, Bilson, or Cormack in that they take multiple passes over the expression tree to yield a solution by applying filtering heuristics to all expression nodes. 
+This approach of filtering out invalid types is unsuited to \CFA{} expression resolution, however, due to the presence of polymorphic functions and implicit conversions. 
+
+Baker~\cite{Baker82} left empirical comparison of different overload resolution algorithms to future work; Bilson~\cite{Bilson03} described an extension of Baker's algorithm to handle implicit conversions and polymorphism, but did not further explore the space of algorithmic approaches to handle both overloaded names and implicit conversions. 
+This thesis closes that gap in the literature by performing performance comparisons of both top-down and bottom-up expression resolution algorithms, with results reported in Chapter~\ref{expr-chap}.
+
+\subsection{Assertion Satisfaction} \label{assn-sat-sec}
+
+The assertion satisfaction algorithm designed by Bilson~\cite{Bilson03} for the original \CFACC{} is the most-relevant prior work to this project. 
+Before accepting any subexpression candidate, Bilson first checks that that candidate's assertions can all be resolved; this is necessary due to Bilson's addition of assertion satisfaction costs to candidate costs (discussed in Section~\ref{conv-cost-sec}). 
+If this subexpression interpretation ends up not being used in the final resolution, than the (sometimes substantial) work of checking its assertions ends up wasted. 
+Bilson's assertion checking function recurses on two lists, !need! and !newNeed!, the current declaration's assertion set and those implied by the assertion-satisfying declarations, respectively, as detailed in the pseudo-code below (ancillary aspects of the algorithm are omitted for clarity): 
+
+\begin{cfa}
+List(List(Declaration)) checkAssertions( 
+		List(Assertion) need, List(Assertion) newNeed, List(Declaration) have,
+		Environment env ) {
+	if ( is_empty(need) ) {
+		if ( is_empty( newNeed ) ) return { have };
+		else return checkAssertions( newNeed, {}, have, env );
+	}
+
+	Assertion a = head(need);
+	Type adjType = substitute( a.type, env );
+	List(Declaration) candidates = decls_matching( a.name );
+	List(List(Declaration)) alternatives = {}
+	for ( Declaration c : candidates ) {
+		Environment newEnv = env;
+		if ( unify( adjType, c.type, newEnv ) ) {
+			append( alternatives, 
+				checkAssertions( 
+					tail(need), append(newNeed, c.need), append(have, c), newEnv ) );
+		}
+	}
+	return alternatives;
+}
+\end{cfa}
+
+One shortcoming of this approach is that if an earlier assertion has multiple valid candidates, later assertions may be checked many times due to the structure of the recursion. 
+Satisfying declarations for assertions are not completely independent of each other, since the unification process may produce new type bindings in the environment, and these bindings may not be compatible between independently-checked assertions. 
+Nonetheless, with the environment data-structures discussed in Chapter~\ref{env-chap}, I have found it more efficient to produce a list of possibly-satisfying declarations for each assertion once, then check their respective environments for mutual compatibility when combining lists of assertions together. 
+
+Another improvement I have made to the assertion resolution scheme in \CFACC{} is to consider all assertion-satisfying combinations at one level of recursion before attempting to recursively satisfy any !newNeed! assertions. 
+Monomorphic functions are cheaper than polymorphic functions for assertion satisfaction because they are an exact match for the environment-adjusted assertion type, whereas polymorphic functions require an extra type binding. 
+Thus, if there is any mutually-compatible set of assertion-satisfying declarations that does not include any polymorphic functions (and associated recursive assertions), then the optimal set of assertions does not require any recursive !newNeed! satisfaction. 
+More generally, due to the \CFA{} cost-model changes I introduced in Section~\ref{conv-cost-sec}, the conversion cost of an assertion-satisfying declaration is no longer dependent on the conversion cost of its own assertions. 
+As such, all sets of mutually-compatible assertion-satisfying declarations can be sorted by their summed conversion costs, and the recursive !newNeed! satisfaction pass is required only to check the feasibility of the minimal-cost sets.
+This optimization significantly reduces wasted work relative to Bilson's approach, as well as avoiding generation of deeply-recursive assertion sets, for a significant performance improvement relative to Bilson's \CFACC{}.
+
+Making the conversion cost of an interpretation independent of the cost of satisfying its assertions has further benefits. 
+Bilson's algorithm checks assertions for all subexpression interpretations immediately, including those that are not ultimately used; I have developed a \emph{deferred} variant of assertion checking that waits until a top-level interpretation has been generated to check any assertions. 
+If the assertions of the minimal-cost top-level interpretation cannot be satisfied then the next-most-minimal-cost interpretation's assertions are checked, and so forth until a minimal-cost satisfiable interpretation (or ambiguous set thereof) is found, or no top-level interpretations are found to have satisfiable assertions. 
+In the common case where the code actually does compile, this saves the work of checking assertions for ultimately-rejected interpretations, though it does rule out some pruning opportunities for subinterpretations with unsatisfiable assertions or which are more expensive than a minimal-cost polymorphic function with the same return type. 
+The experimental results in Chapter~\ref{expr-chap} indicate that this is a worthwhile trade-off. 
+
+Optimizing assertion satisfaction for common idioms has also proved effective in \CFA{}; the code below is an unexceptional print statement derived from the \CFA{} test suite that nonetheless is a very difficult instance of expression resolution:
+
+\begin{cfa}
+sout | "one" | 1 | "two" | 2 | "three" | 3 | "four" | 4 | "five" | 5 | "six" | 6
+	| "seven" | 7 | "eight" | 8 | "nine" | 9 | "ten" | 10 | "end" | nl | nl;
+\end{cfa}
+
+The first thing that makes this expression so difficult is that it is 23 levels deep; Section~\ref{resn-analysis-sec} indicates that the worst-case bounds on expression resolution are exponential in expression depth. 
+Secondly, the !?|?! operator is significantly overloaded in \CFA{} --- there are 74 such operators in the \CFA{} standard library, and while 9 are arithmetic operators inherited from C, the rest are polymorphic I/O operators that look similar to:
+
+\begin{cfa}
+forall( dtype ostype | ostream( ostype ) )
+ostype& ?|? ( ostype&, int );
+\end{cfa}
+
+Note that !ostream! is a trait with 25 type assertions, and that the output operators for the other arithmetic types are also valid for the !int!-type parameters due to implicit conversions. 
+On this instance, deferred assertion satisfaction saves wasted work checking assertions on the wrong output operators, but does nothing about the 23 repeated checks of the 25 assertions to determine that !ofstream! (the type of !sout!) satisfies !ostream!.
+
+To solve this problem, I have developed a \emph{cached} variant of assertion checking. 
+During the course of checking the assertions of a single top-level expression, the results are cached for each assertion checked. 
+The search key for this cache is the assertion declaration with its type variables substituted according to the type environment to distinguish satisfaction of the same assertion for different types. 
+This adjusted assertion declaration is then run through the \CFA{} name-mangling algorithm to produce an equivalent string-type key. 
+
+The assertion satisfaction aspect of \CFA{} expression resolution bears some similarity to satisfiability problems from logic, and as such other languages with similar trait and assertion mechanisms make use of logic-program solvers in their compilers. 
+For instance, Matsakis~\cite{Matsakis17} and the Rust team have developed a PROLOG-based engine to check satisfaction of Rust traits.
+The combination of the assertion satisfaction elements of the problem with the conversion-cost model of \CFA{} makes this logic-solver approach difficult to apply in \CFACC{}, however. 
+Expressing assertion resolution as a satisfiability problem ignores the cost optimization aspect, which is necessary to decide among what are often many possible satisfying assignments of declarations to assertions. 
+On the other hand, the deeply-recursive nature of the satisfiability problem makes it difficult to adapt to optimizing solver approaches such as linear programming. 
+To maintain a well-defined programming language, any optimization algorithm used must provide an exact (rather than approximate) solution; this constraint also rules out a whole class of approximately-optimal generalized solvers. 
+As such, I opted to continue Bilson's approach of designing a bespoke solver for \CFA{} assertion satisfaction, rather than attempting to re-express the problem in some more general formalism. 
+
+\section{Conclusion \& Future Work} \label{resn-conclusion-sec}
+
+As the results in Chapter~\ref{expr-chap} show, the algorithmic approaches I have developed for \CFA{} expression resolution are sufficient to build a practically-performant \CFA{} compiler. 
+This work may also be of use to other compiler construction projects, notably to members of the \CC{} community as they implement the new Concepts \cite{C++Concepts} standard, which includes type assertions similar to those used in \CFA{}, as well as the C-derived implicit conversion system already present in \CC{}.
+
+I have experimented with using expression resolution rather than type unification to check assertion satisfaction; this variant of the expression resolution problem should be investigated further in future work. 
+This approach is more flexible than type unification, allowing for conversions to be applied to functions to satisfy assertions. 
+Anecdotally, this flexibility matches user-programmer expectations better, as small type differences (\eg{} the presence or absence of a reference type, or the usual conversion from !int! to !long!) no longer break assertion satisfaction. 
+Practically, the resolver prototype discussed in Chapter~\ref{expr-chap} uses this model of assertion satisfaction, with no apparent deficit in performance; the generated expressions that are resolved to satisfy the assertions are easier than the general case because they never have nested subexpressions, which eliminates much of the theoretical differences between unification and resolution. 
+The main challenge to implement this approach in \CFACC{} is applying the implicit conversions generated by the resolution process in the code-generation for the thunk functions that \CFACC{} uses to pass type assertions to their requesting functions with the proper signatures.
+
+Though performance of the existing algorithms is promising, some further optimizations do present themselves. 
+The refined cost model discussed in Section~\ref{conv-cost-sec} is more expressive, but requires more than twice as many fields; it may be fruitful to investigate more tightly-packed in-memory representations of the cost-tuple, as well as comparison operations that require fewer instructions than a full lexicographic comparison. 
+Integer or vector operations on a more-packed representation may prove effective, though dealing with the negative-valued $specialization$ field may require some effort.
+
+Parallelization of various phases of expression resolution may also be useful. 
+The algorithmic variants I have introduced for both argument-parameter matching and assertion satisfaction are essentially divide-and-conquer algorithms, which solve subproblem instances for each argument or assertion, respectively, then check mutual compatibility of the solutions. 
+While the checks for mutual compatibility are naturally more serial, there may be some benefit to parallel resolution of the subproblem instances. 
+
+The resolver prototype built for this project and described in Chapter~\ref{expr-chap} would be a suitable vehicle for many of these further experiments, and thus a technical contribution of continuing utility. 
Index: doc/theses/aaron_moss_PhD/phd/thesis.tex
===================================================================
--- doc/theses/aaron_moss_PhD/phd/thesis.tex	(revision 114bde658eed1edf31cde78bd21584a1ced7df2e)
+++ doc/theses/aaron_moss_PhD/phd/thesis.tex	(revision 92d41a4af1542b1fcfd3bacde48933e4c8519366)
@@ -28,4 +28,7 @@
 
 \usepackage{footmisc} % for double refs to the same footnote
+
+\usepackage{caption} % for subfigure
+\usepackage{subcaption}
 
 % Hyperlinks make it very easy to navigate an electronic document.
@@ -129,4 +132,5 @@
 \input{resolution-heuristics}
 \input{type-environment}
+\input{experiments}
 \input{conclusion}
 
@@ -156,3 +160,8 @@
 % \nocite{*}
 
+% APPENDICIES
+% -----------
+\appendix
+\input{generic-bench}
+
 \end{document}
Index: doc/theses/aaron_moss_PhD/phd/type-environment.tex
===================================================================
--- doc/theses/aaron_moss_PhD/phd/type-environment.tex	(revision 114bde658eed1edf31cde78bd21584a1ced7df2e)
+++ doc/theses/aaron_moss_PhD/phd/type-environment.tex	(revision 92d41a4af1542b1fcfd3bacde48933e4c8519366)
@@ -4,12 +4,14 @@
 One key data structure for expression resolution is the \emph{type environment}. 
 As discussed in Chapter~\ref{resolution-chap}, being able to efficiently determine which type variables are bound to which concrete types or whether two type environments are compatible is a core requirement of the resolution algorithm. 
-Furthermore, expression resolution involves a search through many related possible solutions, so being able to re-use shared subsets of type environment data and to switch between environments quickly is desirable for performance. 
-In this chapter I discuss and empirically compare a number of type environment data structure variants, including some novel variations on the union-find\cite{Galler64} data structure introduced in this thesis.
+Furthermore, expression resolution involves a search through many related possible solutions, so the ability to re-use shared subsets of type-environment data and to switch between environments quickly is desirable for performance. 
+In this chapter, I discuss a number of type-environment data-structure variants, including some novel variations on the union-find \cite{Galler64} data structure introduced in this thesis. 
+Chapter~\ref{expr-chap} contains empirical comparisons of the performance of these data structures when integrated into the resolution algorithm.
 
 \section{Definitions} \label{env-defn-sec}
 
 For purposes of this chapter, a \emph{type environment} $T$ is a set of \emph{type classes} $\myset{T_1, T_2, \cdots, T_{|T|}}$. 
-Each type class $T_i$ contains a set of \emph{type variables} $\myset{v_{i,1}, v_{i,2}, \cdots, v_{i,|T_i|}}$; note that the sets of variables contained in two distinct classes in the same environment must be disjoint. 
-Each individual type class $T_i$ may also be associated with a \emph{bound}, $b_i$; this bound contains the \emph{bound type} which the variables in the type class are replaced with, but also includes other information in \CFACC{}, including whether type conversions are permissible on the bound type and what sort of type variables are contained in the class (data types, function types, or variadic tuples). 
+Each type class $T_i$ contains a set of \emph{type variables} $\myset{v_{i,1}, v_{i,2}, \cdots, v_{i,|T_i|}}$. 
+Since the type classes represent an equivalence relation over the type variables the sets of variables contained in two distinct classes in the same environment must be disjoint. 
+Each individual type class $T_i$ may also be associated with a \emph{bound}, $b_i$; this bound contains the \emph{bound type} that the variables in the type class are replaced with, but also includes other information in \CFACC{}, including whether type conversions are permissible on the bound type and what sort of type variables are contained in the class (data types, function types, or variadic tuples). 
 
 \begin{table}
@@ -18,44 +20,47 @@
 \centering
 \begin{tabular}{r@{\hskip 0.25em}ll}
-	$find(T, v_{i,j})$ & $\rightarrow T_i | \bot$		& Locate class for variable		\\
+	\hline
+	$find(T, v_{i,j})$ & $\rightarrow T_i~|~\mathsf{fail}$		& Locate class for variable		\\
 	$report(T_i)$ & $\rightarrow \{ v_{i,j} \cdots \}$	& List variables for class		\\
-	$bound(T_i)$ & $\rightarrow b_i | \bot$				& Get bound for class			\\
-	$insert(v_{i,1})$ &									& New single-variable class		\\
+	$bound(T_i)$ & $\rightarrow b_i~|~\mathsf{fail}$				& Get bound for class			\\
+	$insert(T, v_{i,1})$ &								& New single-variable class		\\
 	$add(T_i, v_{i,j})$ &								& Add variable to class			\\
 	$bind(T_i, b_i)$ &									& Set or update class bound		\\
-	$unify(T, T_i, T_j)$ & $\rightarrow \top | \bot$	& Combine two type classes		\\
+	\hline
+	$unify(T, T_i, T_j)$ & $\rightarrow \mathsf{pass}~|~\mathsf{fail}$	& Combine two type classes		\\
 	$split(T, T_i)$ & $\rightarrow T'$					& Revert the last $unify$ operation on $T_i$		\\
-	$combine(T, T')$ & $\rightarrow \top | \bot$		& Merge two environments		\\
+	$combine(T, T')$ & $\rightarrow \mathsf{pass}~|~\mathsf{fail}$		& Merge two environments		\\
 	$save(T)$ & $\rightarrow H$							& Get handle for current state	\\
-	$backtrack(T, H)$ &									& Return to handle state
+	$backtrack(T, H)$ &									& Return to handle state		\\
+	\hline 
 \end{tabular}
 \end{table}
 
 Given this basic structure, type environments in \CFACC{} need to support eleven basic operations, summarized in Table~\ref{env-op-table}. 
-The first seven operations are straightforward queries and updates on these data structures: 
-The lookup operation $find(T, v_{i,j})$ produces $T_i$, the type class in $T$ which contains variable $v_{i,j}$, or an invalid sentinel value for no such class. 
+The first six operations are straightforward queries and updates on these data structures: 
+The lookup operation $find(T, v_{i,j})$ produces $T_i$, the type class in $T$ that contains variable $v_{i,j}$, or an invalid sentinel value for no such class. 
 The other two query operations act on type classes, where $report(T_i)$ produces the set $\myset{v_{i,1}, v_{i,2}, \cdots, v_{i,|T_i|}}$ of all type variables in a class $T_i$ and $bound(T_i)$ produces the bound $b_i$ of that class, or a sentinel indicating no bound is set. 
 
-The update operation $insert(T, v_{i,1})$ creates a new type class $T_i$ in $T$ that contains only the variable $v_{i,1}$ and no bound; due to the disjointness property $v_{i,1}$ cannot belong to any other type class in $T$. 
+The update operation $insert(T, v_{i,1})$ creates a new type class $T_i$ in $T$ that contains only the variable $v_{i,1}$ and no bound; due to the disjointness property, $v_{i,1}$ cannot belong to any other type class in $T$. 
 The $add(T_i, v_{i,j})$ operation adds a new type variable $v_{i,j}$ to class $T_i$; again, $v_{i,j}$ cannot exist elsewhere in $T$.
 $bind(T_i, b_i)$ mutates the bound for a type class, setting or updating the current bound. 
 
-The $unify$ operation is the fundamental non-trivial operation a type environment data structure must support. 
+The $unify$ operation is the fundamental non-trivial operation a type-environment data-structure must support. 
 $unify(T, T_i, T_j)$ merges a type class $T_j$ into another $T_i$, producing a failure result and leaving $T$ in an invalid state if this merge fails. 
 It is always possible to unify the type variables of both classes by simply taking the union of both sets; given the disjointness property, no checks for set containment are required, and the variable sets can simply be concatenated if supported by the underlying data structure. 
-$unify$ depends on an internal $unifyBound$ operation which may fail. 
-In \CFACC{}, $unifyBound(b_i, b_j) \rightarrow b'_i|\bot$ checks that the type classes contain the same sort of variable, takes the tighter of the two conversion permissions, and checks if the bound types can be unified. 
+$unify$ depends on an internal $unifyBound$ operation, which may fail. 
+In \CFACC{}, $unifyBound(b_i, b_j) \rightarrow b'_i~|~\mathsf{fail}$ checks that the type classes contain the same sort of variable, takes the tighter of the two conversion permissions, and checks if the bound types can be unified. 
 If the bound types cannot be unified (\eg{} !struct A! with !int*!), then $unifyBound$ fails, while other combinations of bound types may result in recursive calls. 
-For instance, unifying !R*! with !S*! for type variables !R! and !S! will result in a call to $unify(T, find($!R!$), find($!S!$))$, while unifying !R*! with !int*! will result in a call to $unifyBound$ on !int! and the bound type of the class containing !R!.
+For instance, unifying !R*! with !S*! for type variables !R! and !S! results in a call to $unify(T, find($!R!$), find($!S!$))$, while unifying !R*! with !int*! results in a call to $unifyBound$ on !int! and the bound type of the class containing !R!.
 As such, a call to $unify(T, T_i, T_j)$ may touch every type class in $T$, not just $T_i$ and $T_j$, collapsing the entirety of $T$ into a single type class in extreme cases. 
 For more information on \CFA{} unification, see \cite{Bilson03}.
-The inverse of $unify$ is $split(T, T_i)$, which produces a new environment $T'$ which is the same as $T$ except that $T_i$ has been replaced by two classes corresponding to the arguments to the previous call to $unify$ on $T_i$. 
-If there has been no call to $unify$ on $T_i$ (\ie{} $T_i$ is a single-element class) $T_i$ is absent in $T'$.
-
-Given the nature of the expression resolution problem as backtracking search, caching and concurrency are both useful tools to decrease runtime. 
+The inverse of $unify$ is $split(T, T_i)$, which produces a new environment $T'$ that is the same as $T$ except that $T_i$ has been replaced by two classes corresponding to the arguments to the previous call to $unify$ on $T_i$. 
+If there is no prior call to $unify$ on $T_i$ (\ie{} $T_i$ is a single-element class) $T_i$ is absent in $T'$.
+
+Given the nature of the expression resolution problem as a backtracking search, caching and concurrency are both useful tools to decrease runtime. 
 However, both of these approaches may produce multiple distinct descendants of the same initial type environment, which have possibly been mutated in incompatible ways. 
-As such, to effectively employ either concurrency or caching, the type environment data structure must support an efficient method to check if two type environments are compatible and merge them if so. 
-$combine(T,T')$ attempts to merge an environment $T'$ into another environment $T$, producing $\top$ if successful or leaving $T$ in an invalid state and producing $\bot$ otherwise. 
-The invalid state of $T$ on failure is not important, given that a combination failure will result in the resolution algorithm backtracking to a different environment. 
+As such, to effectively employ either caching or concurrency, the type environment data structure must support an efficient method to check if two type environments are compatible and merge them if so. 
+$combine(T,T')$ attempts to merge an environment $T'$ into another environment $T$, producing $\mathsf{pass}$ if successful or leaving $T$ in an invalid state and producing $\mathsf{fail}$ otherwise. 
+The invalid state of $T$ on failure is not important, given that a combination failure results in the resolution algorithm backtracking to a different environment. 
 $combine$ proceeds by calls to $insert$, $add$, and $unify$ as needed, and can be roughly thought of as calling $unify$ on every pair of classes in $T$ that have variables $v'_{i,j}$ and $v'_{i,k}$ in the same class $T'_i$ in $T'$. 
 Like $unify$, $combine$ can always find a mutually-consistent partition of type variables into classes (in the extreme case, all type variables from $T$ and $T'$ in a single type class), but may fail due to inconsistent bounds on merged type classes. 
@@ -64,41 +69,41 @@
 The set of mutations to a type environment across the execution of the resolution algorithm produce an implicit tree of related environments, and the backtracking search typically focuses only on one leaf of the tree at once, or at most a small number of closely-related nodes as arguments to $combine$.
 As such, the ability to save and restore particular type environment states is useful, and supported by the $save(T) \rightarrow H$ and $backtrack(T, H)$ operations, which produce a handle for the current environment state and mutate an environment back to a previous state, respectively. 
-These operations can be naively implemented by a deep copy of $T$ into $H$ and vice versa, but have more efficient implementations in persistency-aware data structures.
-
-\section{Approaches}
-
-\subsection{Na\"{\i}ve}
-
-The type environment data structure used in Bilson's\cite{Bilson03} original implementation of \CFACC{} is a straightforward translation of the definitions in Section~\ref{env-defn-sec} to \CC{} code; a !TypeEnvironment! contains a list of !EqvClass! type equivalence classes, each of which contains the type bound information and a tree-based sorted set of type variables. 
+These operations can be naively implemented by a deep copy of $T$ into $H$ and vice versa, but have more efficient implementations in persistency-aware data structures such as the persistent union-find introduced in Section~\ref{env-persistent-union-find}.
+
+\section{Approaches} \label{env-approaches-sec}
+
+\subsection{Na\"{\i}ve} \label{naive-env-sec}
+
+The type environment data structure used in Bilson's~\cite{Bilson03} original implementation of \CFACC{} is a straightforward translation of the definitions in Section~\ref{env-defn-sec} to \CC{} code; a !TypeEnvironment! contains a list of !EqvClass! type equivalence classes, each of which contains the type bound information and a tree-based sorted set of type variables. 
 This approach has the benefit of being easy to understand and not imposing life-cycle or inheritance constraints on its use, but, as can be seen in Table~\ref{env-bounds-table}, does not support many of the desired operations with any particular efficiency.
-Some variations on this structure may improve performance somewhat; for instance, replacing the !EqvClass! variable storage with a hash-based set would reduce search and update times from $O(\log n)$ to amortized $O(1)$, while adding an index for the type variables in the entire environment would remove the need to check each type class individually to maintain the disjointness property. 
+Some variations on this structure may improve performance somewhat; for instance, replacing the !EqvClass! variable storage with a hash-based set reduces search and update times from $O(\log n)$ to amortized $O(1)$, while adding an index for the type variables in the entire environment removes the need to check each type class individually to maintain the disjointness property. 
 These improvements do not change the fundamental issues with this data structure, however.
 
-\subsection{Incremental Inheritance}
-
-One more invasive modification to this data structure which I investigated is to support swifter combinations of closely-related environments in the backtracking tree by storing a reference to a \emph{parent} environment within each environment, and having that environment only store type classes which have been modified with respect to the parent. 
+\subsection{Incremental Inheritance} \label{inc-env-sec}
+
+One more invasive modification to this data structure that I investigated is to support swifter combinations of closely-related environments in the backtracking tree by storing a reference to a \emph{parent} environment within each environment, and having that environment only store type classes that have been modified with respect to the parent. 
 This approach provides constant-time copying of environments, as a new environment simply consists of an empty list of type classes and a reference to its (logically identical) parent; since many type environments are no different than their parent, this speeds backtracking in this common case. 
-Since all mutations made to a child environment are by definition compatible with the parent environment, two descendants of a common ancestor environment can be combined by iteratively combining the changes made in one environment then that environment's parent until the common ancestor is reached, again re-using storage and reducing computation in many cases. 
-
-For this environment I also employed a lazily-generated index of type variables to their containing class, which could be in either the current environment or an ancestor. 
-Any mutation of a type class in an ancestor environment would cause that class to be copied into the current environment before mutation, as well as added to the index, ensuring that all local changes to the type environment are listed in its index.
+Since all mutations made to a child environment are by definition compatible with the parent environment, two descendants of a common ancestor environment can be combined by iteratively combining the changes made in one environment, then that environment's parent, until the common ancestor is reached, again re-using storage and reducing computation in many cases. 
+
+For this environment, I also employed a lazily-generated index of type variables to their containing class, which could be in either the current environment or an ancestor. 
+Any mutation of a type class in an ancestor environment causes that class to be copied into the current environment before mutation, as well as added to the index, ensuring all local changes to the type environment are listed in its index.
 However, not adding type variables to the index until lookup or mutation preserves the constant-time environment copy operation in the common case in which the copy is not mutated from its parent during its life-cycle.
 
-This approach imposes some performance penalty on $combine$ if related environments are not properly linked together, as the entire environment needs to be combined rather than just the diff, but is correct as long as the ``null parent'' base case is properly handled. 
+This approach imposes some performance penalty on $combine$ if related environments are not properly linked together, as the entire environment needs to be combined rather than just the difference, but is correct as long as the ``null parent'' base-case is properly handled. 
 The life-cycle issues are somewhat more complex, as many environments may descend from a common parent, and all of these need their parent to stay alive for purposes of lookup. 
-These issues can be solved by ``flattening'' parent nodes into their children before the parents leave scope, but given the tree structure of the inheritance graph it is more straightforward to store the parent nodes in reference-counted or otherwise automatically garbage-collected heap storage.
+These issues can be solved by ``flattening'' parent nodes into their children before the parent's scope ends, but given the tree structure of the inheritance graph it is more straightforward to store the parent nodes in reference-counted or otherwise automatically garbage-collected heap storage.
 
 \subsection{Union-Find} \label{env-union-find-approach}
 
-Given the nature of the classes of type variables as disjoint sets, another natural approach to implementing a type environment is the union-find disjoint set data structure\cite{Galler64}. 
+Given the nature of the classes of type variables as disjoint sets, another natural approach to implementing a type environment is the union-find disjoint-set data-structure~\cite{Galler64}. 
 Union-find efficiently implements two operations over a partition of a collection of elements into disjoint sets; $find(x)$ locates the \emph{representative} of $x$, the element which canonically names its set, while $union(r, s)$ merges two sets represented by $r$ and $s$, respectively. 
 The union-find data structure is based on providing each element with a reference to its parent element, such that the root of a tree of elements is the representative of the set of elements contained in the tree. 
 $find$ is then implemented by a search up to the parent, generally combined with a \emph{path compression} step that links nodes more directly to their ancestors to speed up subsequent searches. 
 $union$ involves making the representative of one set a child of the representative of the other, generally employing a rank- or size-based heuristic to ensure that the tree remains somewhat balanced. 
-If both path compression and a balancing heuristic are employed, both $union$ and $find$ run in amortized $O(\alpha(n))$ worst-case time; this bound by the inverse Ackermann function is a small constant for all practical values of $n$.
+If both path compression and a balancing heuristic are employed, both $union$ and $find$ run in amortized $O(\alpha(n))$ worst-case time; this inverse Ackermann bound is a small constant for all practical values of $n$ \cite{Tarjan75}.
 
 The union-find $find$ and $union$ operations have obvious applicability to the $find$ and $unify$ type environment operations in Table~\ref{env-op-table}, but the union-find data structure must be augmented to fully implement the type environment operations. 
-In particular, the type class bound cannot be easily included in the union-find data structure, as the requirement to make it the class representative breaks the balancing properties of $union$, and requires too-close integration of the type environment $unifyBound$ internal operation. 
-This issue can be solved by including a side map from class representatives to the type class bound. 
+In particular, the type-class bound cannot be easily included in the union-find data structure, as the requirement to make it the class representative breaks the balancing properties of $union$, and requires too-close integration of the type environment $unifyBound$ internal operation. 
+This issue can be solved by including a side map from class representatives to the type-class bound. 
 If placeholder values are inserted in this map for type classes without bounds than this also has the useful property that the key set of the map provides an easily obtainable list of all the class representatives, a list which cannot be derived from the union-find data structure without a linear search for class representatives through all elements.
 
@@ -107,8 +112,6 @@
 Another type environment operation not supported directly by the union-find data structure is $report$, which lists the type variables in a given class, and similarly $split$, which reverts a $unify$ operation. 
 Since the union-find data structure stores only links from children to parents and not vice-versa, there is no way to reconstruct a class from one of its elements without a linear search over the entire data structure, with $find$ called on each element to check its membership in the class. 
-The situation is even worse for the $split$ operation, which would require extra information to maintain the order that each child was added to its parent node. 
-Unfortunately, the literature\cite{Tarjan84,Galil91,Patwary10} on union-find does not present a way to keep references to children without breaking the asymptotic time bounds of the algorithm; I have discovered a method to do so which, despite its simplicity, seems to be novel.
-
-\TODO{port figure from slideshow}
+The situation is even worse for the $split$ operation, which requires extra information to maintain the order that each child is added to its parent node. 
+Unfortunately, the literature \cite{Tarjan84,Galil91,Patwary10} on union-find does not present a way to keep references to children without breaking the asymptotic time bounds of the algorithm; I have discovered a method to do so, which, despite its simplicity, seems to be novel.
 
 The core idea of this ``union-find with classes'' data structure and algorithm is to keep the members of each class stored in a circularly-linked list. 
@@ -117,7 +120,14 @@
 In my version, the list data structure does not affect the layout of the union-find tree, maintaining the same asymptotic bounds as union-find. 
 In more detail, each element is given a !next! pointer to another element in the same class; this !next! pointer initially points to the element itself. 
-When two classes are unified, the !next! pointers of the representatives of those classes are swapped, splicing the two circularly-linked lists together. 
+When two classes are unified, the !next! pointers of the representatives of those classes are swapped, splicing the two circularly-linked lists together as illustrated in Figure~\ref{union-find-classes-fig}. 
 Importantly, though this approach requires an extra pointer per element, it does maintain the linear space bound of union-find, and because it only requires updating the two root nodes in $union$ it does not asymptotically increase runtime either. 
 The basic approach is compatible with all path-compression techniques, and allows the members of any class to be retrieved in time linear in the size of the class simply by following the !next! pointers from any element. 
+
+\begin{figure}
+	\centering
+	\includegraphics{figures/union-find-with-classes}
+	\caption[Union operation for union-find with classes.]{Union operation for union-find with classes. Solid lines indicate parent pointers, dashed lines are \lstinline{next} pointers.}
+	\label{union-find-classes-fig}
+\end{figure}
 
 If the path-compression optimization is abandoned, union-find with classes also encodes a reversible history of all the $union$ operations applied to a given class. 
@@ -127,5 +137,5 @@
 
 \begin{theorem} \label{env-reverse-thm}
-The !next! pointer of a class representative in the union-find with classes algorithm without path compression points to a leaf from the most-recently-added subtree. 
+The !next! pointer of a class representative in the union-find with classes algorithm, without path compression, points to a leaf from the most-recently-added subtree. 
 \end{theorem}
 
@@ -133,5 +143,5 @@
 	By induction on the height of the tree. \\
 	\emph{Base case:} A height 1 tree by definition includes only a single item. In such a case, the representative's !next! pointer points to itself by construction, and the representative is the most-recently-added (and only) leaf in the tree. \\
-	\emph{Inductive case:} By construction, a tree $T$ of height greater than 1 has children of the root (representative) node that were representative nodes of classes merged by $union$. By definition, the most-recently-added subtree $T'$ has a smaller height than $T$, thus by the inductive hypothesis before the most-recent $union$ operation the !next! pointer of the root of $T'$ pointed to one of the leaf nodes of $T'$; by construction the !next! pointer of the root of $T$ points to this leaf after the $union$ operation.
+	\emph{Inductive case:} By construction, a tree $T$ of height greater than 1 has children of the root (representative) node that were representative nodes of classes merged by $union$. By definition, the most-recently-added subtree $T'$ has a smaller height than $T$, thus by the inductive hypothesis before the most-recent $union$ operation, the !next! pointer of the root of $T'$ pointed to one of the leaf nodes of $T'$; by construction the !next! pointer of the root of $T$ points to this leaf after the $union$ operation.
 \end{proof}
 
@@ -139,48 +149,58 @@
 
 \subsection{Persistent Union-Find}
-
-Given the backtracking nature of the resolution algorithm discussed in Section~\ref{env-defn-sec}, the abilities to quickly switch between related versions of a type environment and to de-duplicate shared data between environments are both assets to performance. 
+\label{env-persistent-union-find}
+
+Given the backtracking nature of the resolution algorithm discussed in Section~\ref{env-defn-sec}, the abilities to quickly switch between related versions of a type environment and to de-duplicate shared data among environments are both assets to performance. 
 Conchon and Filli\^{a}tre~\cite{Conchon07} present a persistent union-find data structure based on the persistent array of Baker~\cite{Baker78,Baker91}.
 
-\TODO{port figure from slideshow}
-
-In Baker's persistent array, an array reference contains either a pointer to the array or a pointer to an \emph{edit node}; these edit nodes contain an array index, the value in that index, and another array reference pointing either to the array or a different edit node. 
-In this manner, a tree of edits is formed, rooted at the actual array. 
-Read from the actual array at the root can be performed in constant time, as with a non-persistent array. 
+In Baker's persistent array, an \emph{array reference} contains either a pointer to the array or a pointer to an \emph{edit node}; these edit nodes contain an array index, the value in that index, and another array reference pointing either to the array or a different edit node. 
+By construction, these array references always point to a node more like the actual array, forming a tree of edits rooted at the actual array.
+Reads from the actual array at the root can be performed in constant time, as with a non-persistent array. 
 The persistent array can be mutated in constant time by directly modifying the underlying array, then replacing its array reference with an edit node containing the mutated index, the previous value at that index, and a reference to the mutated array. If the current array reference is not the root, mutation consists simply of constructing a new edit node encoding the change and referring to the current array reference.  
-The mutation algorithm at the root is in some sense a special case of the key operation on persistent arrays, $reroot$.
-
+
+The mutation algorithm at the root is a special case of the key operation on persistent arrays, $reroot$.
 A rerooting operation takes any array reference and makes it the root node of the array. 
-This is accomplished by tracing the path from some edit node to the root node of the array (always the underlying array), recursively applying the edits to the underlying array and replacing each edit node's successor with the inverse edit. 
+This operation is accomplished by tracing the path from some edit node to actual array at the root node, recursively applying the edits to the underlying array and replacing each edit node's successor with the inverse edit. 
 In this way, any previous state of the persistent array can be restored in time proportional to the number of edits to the current state of the array. 
-While $reroot$ does maintain the same value mapping in every version of the persistent array, the internal mutations it performs means that it is not thread-safe, and must be used behind a lock in a concurrent context. 
+While $reroot$ does maintain the same value mapping in every version of the persistent array, the internal mutations it performs break thread-safety, and thus it must be used behind a lock in a concurrent context. 
 Also, the root node with the actual array may in principle be anywhere in the tree, and does not provide information to report its leaf nodes, so some form of automatic garbage collection is generally required for the data structure. 
 Since the graph of edit nodes is tree-structured, reference counting approaches suffice for garbage collection; Conchon and Filli\^{a}tre~\cite{Conchon07} also observe that if the only $reroot$ operations are for backtracking then the tail of inverse edit nodes may be elided, suggesting the possibility of stack-based memory management. 
 
 While Conchon and Filli\^{a}tre~\cite{Conchon07} implement their persistent union-find data structure over a universe of integer elements in the fixed range $[1,N]$, the type environment problem needs more flexibility. 
-In particular, an arbitrary number of type variables must be added to the environment. 
-As such, a persistent hash table is a more suitable structure than a persistent array, providing the same expected asymptotic time bounds while allowing a dynamic number of elements. 
-Besides replacing the underlying array with a hash table, the other major change in this approach is to replace the two types of array references, !Array! and !Edit!, with four node types, !Table!,  !Edit!, !Add!, and !Remove!, where !Add! adds a new key-value pair, !Remove! removes a key, and !Edit! mutates an existing key-value pair.
-In this variant of \CFACC{}, this persistent hash table is used as the side map discussed in Section~\ref{env-union-find-approach} for class bounds.
+In particular, an arbitrary number of type variables may be added to the environment. 
+As such, a persistent hash table is a more suitable structure than a persistent array, providing the same expected asymptotic time bounds, while allowing a dynamic number of elements. 
+Besides replacing the underlying array with a hash table, the other major change in this approach is to replace the two types of array references, !Array! and !Edit!, with four node types, !Table!,  !Edit!, !Add!, and !Remove!, where !Add! adds a new key-value pair, !Remove! removes a key-value pair, and !Edit! mutates an existing key-value pair.
+In this variant of \CFACC{}, this persistent hash-table is used as the side map discussed in Section~\ref{env-union-find-approach} for class bounds.
 The actual union-find data structure is slightly modified from this approach, with a !Base! node containing the root union-find data structure, !Add! nodes adding new elements, !AddTo! nodes defining the union of two type classes, and !Remove! and !RemoveFrom! nodes as inverses of the previous two elements, for purposes of maintaining the edit list. 
-Making !AddTo! and !RemoveFrom! single nodes shortens the edit path for improved performance, while also providing semantic information missing from the raw array updates in Conchon and Filli\^{a}tre's data structure. 
-The single-node approach, does, however, break under most path-compression algorithms; !RemoveFrom! can be applied to the underlying data structure using the ``leaf of last union'' approach discussed in in Section~\ref{env-union-find-classes-approach}; this was judged an acceptable trade-off for the added semantic information and shortened paths.
-
-Maintaining explicit information on $union$ operations in the persistent union-find edit tree in the form of !AddTo! and !RemoveFrom! nodes exposes a new option for combining type environments. 
+Figure~\ref{persistent-union-find-fig} demonstrates the structure of a simple example. 
+Making !AddTo! and !RemoveFrom! single nodes provides semantic information missing from the raw array updates in Conchon and Filli\^{a}tre's data structure. 
+!RemoveFrom! is implemented using the ``leaf of last union'' approach discussed in Section~\ref{env-union-find-classes-approach}; this does, however, preclude the use of path-compression algorithms in this persistent union-find data structure. 
+
+\begin{figure}
+	\centering
+	\includegraphics{figures/persistent-union-find}
+	\caption[Persistent union-find data structure.]{Persistent union-find data structure. Shows the edit nodes to reverse back to an empty structure.}
+	\label{persistent-union-find-fig}
+\end{figure}
+
+This added semantic information on $union$ operations in the persistent union-find edit tree exposes a new option for combining type environments. 
 If the type environments are part of the same edit tree, one environment $T'$ can be combined with another $T$ by only testing the edits on the path from $T'$ to $T$ in both the persistent union-find data structure describing the classes and the persistent hash table containing the class bounds. 
-This is generally more efficient than testing the compatibility of all type classes in $T'$, as only those that are actually different than those in $T$ must be considered.
+This approach is generally more efficient than testing the compatibility of all type classes in $T'$, as only those that are actually different than those in $T$ must be considered.
+However, the improved performance comes at the cost of some flexibility, as the edit-tree link must be maintained between any two environments to be combined under this algorithm.
 
 The procedure for $combine(T, T')$ based on edit paths is as follows: 
 The shared edit trees for classes and bindings are rerooted at $T$, and the path from $T'$ to $T$ is followed to create a list of actual edits. 
 By tracking the state of each element, redundant changes such as an !Edit! followed by an !Edit! can be reduced to their form in $T'$ by dropping the later (more like $T$) !Edit! for the same key; !Add! and !Remove! cancel similarly. 
-This procedure is repeated for both the class edit tree and the binding edit tree.
-When the list of net changes to the environment has been produced, the additive changes are applied to $T$. 
-For example, if a type class exists in $T'$ but not $T$, the corresponding !Add! edit will be applied to $T$, but in the reverse situation the !Remove! edit will not be applied to $T$, as the intention is to produce a new environment representing the union of the two sets of type classes; similarly, !AddTo! edits are applied to unify type-classes in $T$ that are united in $T'$, but !RemoveFrom! edits that split type classes are not. 
-The new environment, $T''$ can always be constructed with a consistent partitioning of type variables; in the extreme case, all variables from both $T$ and $T'$ will be united in a single type class in $T''$. 
-Where $combine$ can fail is in unifying the bound types; if any class in $T'$ has a class bound which does not unify with the merged class in $T''$ than $combine$ fails.
-
-\section{Analysis}
-
-In this section I present asymptotic analyses of the various approaches to a type environment data structure discussed in the previous section. 
+This procedure is repeated for both the class edit-tree and the binding edit-tree.
+When the list of net changes to the environment is produced, the additive changes are applied to $T$. 
+For example, if a type class exists in $T'$ but not $T$, the corresponding !Add! edit is applied to $T$, but in the reverse situation the !Remove! edit is not applied to $T$, as the intention is to produce a new environment representing the union of the two sets of type classes; similarly, !AddTo! edits are applied to unify type-classes in $T$ that are united in $T'$, but !RemoveFrom! edits that split type classes are not. 
+A new environment, $T''$, can always be constructed with a consistent partitioning of type variables; in the extreme case, all variables from both $T$ and $T'$ are united in a single type class in $T''$. 
+$combine$ can fail to unify the bound types; if any class in $T'$ has a class bound that does not unify with the merged class in $T''$, then $combine$ fails.
+
+\section{Analysis} \label{env-analysis-sec}
+
+In this section, I present asymptotic analyses of the various approaches to the type environment data structure discussed in the previous section. 
+My results are summarized in Table~\ref{env-bounds-table}; in all cases, $n$ is the number of type classes, $m$ is the maximum size of a type class, and $p$ the number of edits between two environments or one environment and the empty environment. 
+$u(n)$ captures the recursive cost of class unification, which is kept separate so that the $O(n)$ number of recursive class unifications can be distinguished from the direct cost of each recursive step. 
 
 \begin{table}
@@ -190,20 +210,75 @@
 \begin{tabular}{rllll}
 	\hline
-				& \textbf{Na\"{\i}ve}	& \textbf{Incremental}	& \textbf{Union-Find}		& \textbf{U-F with Classes}		\\
-	\hline
-	$find$		& $O(n)$				& $O(p)$				& $O(\alpha(m))$			& $O(\log m)$					\\
-	$report$	& $O(m)$				& $O(m)$				& $O(n \log m)$				& $O(m)$						\\
-	$bound$		& $O(1)$				& $O(1)$				& $O(1)$					& $O(1)$						\\
-	$insert$	& $O(1)$				& $O(1)$				& $O(1)$					& $O(1)$						\\
-	$add$		& $O(1)$				& $O(1)$				& $O(1)$					& $O(1)$						\\
-	$bind$		& $O(1)$				& $O(1)$				& $O(1)$					& $O(1)$						\\
-	$unify$ 	& $O(m + u(n))$			& $O(m + u(n))$			& $O(\log m + u(n))$		& $O(\log m + u(n))$			\\
-	$split$		& ---					& ---					& ---						& $O(\log m)$					\\
-	$combine$	& $O(nm \cdot u(n))$	& $O(pm \cdot u(n))$	& $O(n \log m \cdot u(n))$	& $O(p \log m \cdot u(n))$		\\
-	$save$		& $O(nm)$				& $O(1)$				& $O(nm)$					& $O(1)$						\\
-	$backtrack$	& $O(nm)$				& $O(pm)$				& $O(nm)$					& $O(p)$						\\
+				& \textbf{Na\"{\i}ve} & \textbf{Incremental} & \textbf{Union-Find} & \textbf{Persistent U-F} \\
+	\hline
+	$find$		& $O(n)$			& $O(p)$			& $O(\alpha(m))$	& $O(\log m)$		\\
+	$report$	& $O(m)$			& $O(m)$			& $O(nm\alpha(m))$	& $O(m)$			\\
+	$bound$		& $O(1)$			& $O(1)$			& $O(1)$			& $O(1)$			\\
+	$insert$	& $O(1)$			& $O(1)$			& $O(1)$			& $O(1)$			\\
+	$add$		& $O(1)$			& $O(m)$			& $O(1)$			& $O(1)$			\\
+	$bind$		& $O(1)$			& $O(1)$			& $O(1)$			& $O(1)$			\\
+	$unify$ 	& $O(m + u(n))$		& $O(m + u(n))$		& $O(1 + u(n))$		& $O(1 + u(n))$		\\
+	$split$		& ---				& ---				& ---				& $O(\log m)$		\\
+	$combine$	& $O(n^2m $			& $O(p^2m $			& $O(nm\alpha(m) $	& $O(p \log m $		\\
+				& $~~~+ nu(n))$		& $~~~+ pu(n))$		& $~~~+ nu(n))$		& $~~~+ pu(n))$		\\
+	$save$		& $O(nm)$			& $O(1)$			& $O(nm)$			& $O(1)$			\\
+	$backtrack$	& $O(nm)$			& $O(pm)$			& $O(nm)$			& $O(p)$			\\
 	\hline
 \end{tabular}
 \end{table}
 
-% Future work: design multi-threaded version of C&F persistent map --- core idea is some sort of thread-boundary edit node
+\subsection{Na\"{\i}ve and Incremental} 
+\label{naive-incremental-analysis}
+
+The na\"{\i}ve type environment data structure does not have an environment-wide index for type variables, but does have an index for each type class, assumed to be hash-based here. 
+As a result, every class's index must be consulted for a $find$ operation, at an overall cost of $O(n)$. 
+The incremental variant builds an overall hash-based index as it is queried, but may need to recursively check its parent environments if its local index does not contain a type variable, and may have as many parents as times it has been modified, for cost $O(p)$. 
+It should be noted that subsequent queries for the same variable execute in constant time.
+
+Since both na\"{\i}ve and incremental variants store complete type classes, the cost of a $report$ operation is simply the time needed to output the contained variables, $O(m)$.
+Since the type classes store their bounds, $bound$ and $bind$ are both $O(1)$ given a type class. 
+Once a $find$ operation has already been performed to verify that a type variable does not exist in the environment, the data structures for both these variants support adding new type classes (the $insert$ operation) in $O(1)$. 
+Adding a variable to a type class (the $add$ operation) can be done in $O(1)$ for the na\"{\i}ve implementation, but the incremental implementation may need to copy the edited type class from a parent at cost $O(m)$.
+
+The linear storage of type classes in both variants also leads to $O(m)$ time for the variable-merging step in $unify$, plus the usual $u(n)$ recursion term for $unifyBound$. 
+The na\"{\i}ve $combine$ operation must traverse each of the classes of one environment, merging in any class of the other environment that shares a type variable. 
+Since there are at most $n$ classes to unify, the unification cost is $O(nm + nu(n))$, while traversal and $find$ costs to locate classes to merge total $O(n^2m)$, for an overall cost of $O(n^2m + nu(n))$. 
+The incremental $combine$ operation works similarly, but only needs to consider classes modified in either environment with respect to the common ancestor of both environments, allowing the $n$ cost terms to be substituted for $p$, for an overall cost of $O(p^m + pu(n))$.
+Neither variant supports the $split$ operation to undo a $unify$.
+
+The na\"{\i}ve environment does nothing to support $save$ and $backtrack$, so these operations must be implemented by making a deep copy of the environment on $save$, then a destructive overwrite on $backtrack$, each at a cost of $O(nm)$. 
+The incremental environment supports $O(1)$ $save$ by simply setting aside a reference to the current environment, then proceeding with a new, empty environment with the former environment as a parent. 
+$backtrack$ to a parent environment may involve destroying all the intermediate environments if this backtrack removes the last reference to the backtracked-from environment; this cost is $O(pm)$.
+
+\subsection{Union-Find}
+
+The union-find data structure is designed to support $find$ efficiently, and thus for any variant, the cost is simply the distance up the tree to the representative element. 
+For basic union-find, this is amortized to the inverse Ackermann function, $O(\alpha(m))$, essentially a small constant, though the loss of path compression in persistent union-find raises this cost to $O(\log m)$. 
+Basic union-find is not designed to support the $report$ operation, however, so it must be simulated by checking the representative of every type variable, at cost $O(nm\alpha(m))$. 
+Persistent union-find, on the other hand, uses the ``with classes'' extension to union-find described in Section~\ref{env-union-find-classes-approach} to run $report$ in $O(m)$ time.
+
+All union-find environment variants described here use a secondary hash table to map from class representatives to bindings, and as such can perform $bound$ and $bind$ in $O(1)$, given the representative.
+$insert$ is also a $O(1)$ operation for both basic and persistent union-find. 
+Since $add$ simply involves attaching a new child to the class root, it is also a $O(1)$ operation for all union-find environment variants.
+
+Union-find is also designed to support $unify$ in constant time, and as such, given class representatives, the variable-merging cost of $unify$ for both variants is $O(1)$ to make one representative the child of the other, plus the $O(u(n))$ term for $unifyBound$. 
+Basic union-find does not support $split$, but persistent union-find can accomplish it using the mechanism described in Section~\ref{env-union-find-classes-approach} in $O(\log m)$, the cost of traversing up to the root of a class from a leaf without path compression.
+$combine$ on the basic union-find data structure works similarly to the data structures discussed above in Section~\ref{naive-incremental-analysis}, with a $O(nu(n))$ term for the $O(n)$ underlying $unify$ operations, and a $O(n\alpha(m))$ term to find the classes which need unification by checking the class representatives of each corresponding type variable in both environments for equality.
+Persistent union-find uses a different approach for $combine$, discussed in Section~\ref{env-persistent-union-find}. 
+Discounting recursive $unify$ operations included in the $u(n)$ $unifyBound$ term, there may be at most $O(p)$ $unify$ operations performed, at cost $O(pu(n))$. 
+Each of the $O(p)$ steps on the edit path can be processed in the $O(\log m)$ time it takes to find the current representative of the modified type class, for a total runtime of $O(p \log m + pu(n))$.
+
+In terms of backtracking operations, the basic union-find data structure only supports deep copies, for $O(nm)$ cost for both $save$ and $backtrack$. 
+Persistent union-find, as the name suggests, is more optimized, with $O(1)$ cost to $save$ a backtrack-capable reference to the current environment state, and $O(p)$ cost to revert to that state (possibly destroying no-longer-used edit nodes along the path).
+
+\section{Conclusion \& Future Work}
+
+This chapter presents the type environment abstract data type, some type-environment data-structures optimized for workloads encountered in the expression resolution problem, and asymptotic analysis of each data structure. 
+Chapter~\ref{expr-chap} provides experimental performance results for a representative set of these approaches. 
+One contribution of this thesis is the union-find with classes data structure for efficient retrieval of union-find class members, along with a related algorithm for reversing the history of $union$ operations in this data structure. 
+This reversible history contributes to the second novel contribution of this chapter, a type environment data structure based off the persistent union-find data structure of Conchon and Filli\^{a}tre~\cite{Conchon07}. 
+This persistent union-find environment uses the $split$ operation introduced in union-find with classes and the edit history of the persistent data structure to support an environment-combining algorithm that only considers the edits between the environments to be merged. 
+
+This persistent union-find data structure is efficient, but not thread-safe; as suggested in Section~\ref{resn-conclusion-sec}, it may be valuable to parallelize the \CFA{} expression resolver. 
+However, allowing multiple threads concurrent access to the persistent data structure is likely to result in ``reroot thrashing'', as different threads reroot the data structure to their own versions of interest. 
+This contention could be mitigated by partitioning the data structure into separate subtrees for each thread, with each subtree having its own root node, and the boundaries among them implemented with a lock-equipped !ThreadBoundary! edit node.
Index: libcfa/prelude/builtins.c
===================================================================
--- libcfa/prelude/builtins.c	(revision 114bde658eed1edf31cde78bd21584a1ced7df2e)
+++ libcfa/prelude/builtins.c	(revision 92d41a4af1542b1fcfd3bacde48933e4c8519366)
@@ -10,6 +10,6 @@
 // Created On       : Fri Jul 21 16:21:03 2017
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Sun Aug  5 21:40:38 2018
-// Update Count     : 20
+// Last Modified On : Sun Mar 10 10:52:50 2019
+// Update Count     : 31
 //
 
@@ -26,15 +26,19 @@
 // increment/decrement unification
 
-static inline forall( dtype T | { T& ?+=?( T&, one_t ); } )
-T& ++? ( T& x ) { return x += 1; }
+static inline forall( dtype T | { T & ?+=?( T &, one_t ); } )
+T & ++? ( T & x ) { return x += 1; }
 
-static inline forall( dtype T | sized(T) | { void ?{}( T&, T ); void ^?{}( T& ); T& ?+=?( T&, one_t ); } )
-T& ?++ ( T& x ) { T tmp = x; x += 1; return tmp; }
+static inline forall( dtype T | sized(T) | { void ?{}( T &, T ); void ^?{}( T & ); T & ?+=?( T &, one_t ); } )
+T & ?++ ( T & x ) { T tmp = x; x += 1; return tmp; }
 
-static inline forall( dtype T | { T& ?-=?( T&, one_t ); } )
-T& --? ( T& x ) { return x -= 1; }
+static inline forall( dtype T | { T & ?-=?( T &, one_t ); } )
+T & --? ( T & x ) { return x -= 1; }
 
-static inline forall( dtype T | sized(T) | { void ?{}( T&, T ); void ^?{}( T& ); T& ?-=?( T&, one_t ); } )
-T& ?-- ( T& x ) { T tmp = x; x -= 1; return tmp; }
+static inline forall( dtype T | sized(T) | { void ?{}( T &, T ); void ^?{}( T & ); T & ?-=?( T &, one_t ); } )
+T & ?-- ( T & x ) { T tmp = x; x -= 1; return tmp; }
+
+// universal typed pointer constant
+
+static inline forall( dtype T ) T * intptr( uintptr_t addr ) { return (T *)addr; }
 
 // exponentiation operator implementation
Index: libcfa/prelude/prelude-gen.cc
===================================================================
--- libcfa/prelude/prelude-gen.cc	(revision 114bde658eed1edf31cde78bd21584a1ced7df2e)
+++ libcfa/prelude/prelude-gen.cc	(revision 92d41a4af1542b1fcfd3bacde48933e4c8519366)
@@ -10,6 +10,6 @@
 // Created On       : Sat Feb 16 08:44:58 2019
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Mon Feb 18 09:47:33 2019
-// Update Count     : 22
+// Last Modified On : Tue Mar 19 08:19:35 2019
+// Update Count     : 28
 // 
 
@@ -208,7 +208,7 @@
 		cout << "void ?{} (" << type << " &);" << endl;
 		cout << "void ?{} (" << type << " &, " << type << ");" << endl;
-		cout << type << "  ?=? (" << type << " &, " << type << ")";
+		cout << type << " ?=? (" << type << " &, " << type << ")";
 		if ( do_volatile ) {
-			cout << ",  ?=?(volatile " << type << " &, " << type << ")";
+			cout << ", ?=?(volatile " << type << " &, " << type << ")";
 		}
 		cout << ";" << endl;
@@ -217,5 +217,7 @@
 
 	otype("zero_t");
+	cout << endl;
 	otype("one_t");
+	cout << endl;
 	otype("_Bool", true);
 	cout << endl;
@@ -225,4 +227,5 @@
 		cout << "void ?{}(" << type.name << " &, " << type.name << ");" << endl;
 		cout << "void ?{}(" << type.name << " &, zero_t);" << endl;
+		cout << "void ?{}(" << type.name << " &, one_t);" << endl;
 		cout << "void ^?{}(" << type.name << " &);" << endl;
 		cout << endl;
@@ -287,6 +290,6 @@
 	cout << "forall(ftype FT) FT *			?=?( FT *	   &, zero_t );" << endl;
 	cout << "forall(ftype FT) FT *			?=?( FT * volatile &, zero_t );" << endl;
-	cout << "forall( ftype FT ) void	?{}( FT *	   & );" << endl;
-	cout << "forall( ftype FT ) void	^?{}( FT *	   & );" << endl;
+	cout << "forall(ftype FT) void	?{}( FT *	   & );" << endl;
+	cout << "forall(ftype FT) void	^?{}( FT *	   & );" << endl;
 	cout << endl;
 
@@ -295,11 +298,10 @@
 	cout << "///////////////////////" << endl;
 
-	cout << "forall( ftype FT ) FT *			?=?( FT *&, FT * );" << endl;
-	cout << "forall( ftype FT ) FT *			?=?( FT * volatile &, FT * );" << endl;
-	cout << "forall( ftype FT ) int !?( FT * );" << endl;
-	cout << "forall( ftype FT ) signed int ?==?( FT *, FT * );" << endl;
-	cout << "forall( ftype FT ) signed int ?!=?( FT *, FT * );" << endl;
-	cout << "forall( ftype FT ) FT &		 *?( FT * );" << endl;
-
+	cout << "forall(ftype FT) FT *			?=?( FT *&, FT * );" << endl;
+	cout << "forall(ftype FT) FT *			?=?( FT * volatile &, FT * );" << endl;
+	cout << "forall(ftype FT) int !?( FT * );" << endl;
+	cout << "forall(ftype FT) signed int ?==?( FT *, FT * );" << endl;
+	cout << "forall(ftype FT) signed int ?!=?( FT *, FT * );" << endl;
+	cout << "forall(ftype FT) FT &		 *?( FT * );" << endl;
 
 	for (auto op : pointerOperators) {
Index: libcfa/src/concurrency/coroutine.hfa
===================================================================
--- libcfa/src/concurrency/coroutine.hfa	(revision 114bde658eed1edf31cde78bd21584a1ced7df2e)
+++ libcfa/src/concurrency/coroutine.hfa	(revision 92d41a4af1542b1fcfd3bacde48933e4c8519366)
@@ -46,5 +46,5 @@
 //-----------------------------------------------------------------------------
 // Public coroutine API
-static inline void suspend();
+static inline void suspend(void);
 
 forall(dtype T | is_coroutine(T))
@@ -71,5 +71,5 @@
 
 // Suspend implementation inlined for performance
-static inline void suspend() {
+static inline void suspend(void) {
 	// optimization : read TLS once and reuse it
 	// Safety note: this is preemption safe since if
Index: src/BasicTypes-gen.cc
===================================================================
--- src/BasicTypes-gen.cc	(revision 114bde658eed1edf31cde78bd21584a1ced7df2e)
+++ src/BasicTypes-gen.cc	(revision 92d41a4af1542b1fcfd3bacde48933e4c8519366)
@@ -70,17 +70,24 @@
 } graph[NUMBER_OF_BASIC_TYPES] = {
 	{ Bool, "Bool", "B", "_Bool", "b", Signed, Char, SignedChar, -1, 0 }, // root
+
 	{ Char, "Char", "C", "char", "c", Signed, SignedChar, UnsignedChar, ShortSignedInt, 1 },
 	{ SignedChar, "SignedChar", "SC", "signed char", "a", Signed, UnsignedChar, ShortSignedInt, -1, 1 },
 	{ UnsignedChar, "UnsignedChar", "UC", "unsigned char", "h", Unsigned, ShortUnsignedInt, ShortSignedInt, -1, 1 },
+
 	{ ShortSignedInt, "ShortSignedInt", "SI", "signed short int", "s", Signed, ShortUnsignedInt, SignedInt, -1, 2 },
 	{ ShortUnsignedInt, "ShortUnsignedInt", "SUI", "unsigned short int", "t", Unsigned, UnsignedInt, SignedInt, -1, 2 },
+
 	{ SignedInt, "SignedInt", "I", "signed int", "i", Signed, UnsignedInt, LongSignedInt, -1, 3 },
 	{ UnsignedInt, "UnsignedInt", "UI", "unsigned int", "j", Unsigned, LongUnsignedInt, LongSignedInt, -1, 3 },
+
 	{ LongSignedInt, "LongSignedInt", "LI", "signed long int", "l", Signed, LongUnsignedInt, LongLongSignedInt, -1, 4 },
 	{ LongUnsignedInt, "LongUnsignedInt", "LUI", "unsigned long int", "m", Unsigned, LongLongSignedInt, LongLongUnsignedInt, -1, 4 },
+
 	{ LongLongSignedInt, "LongLongSignedInt", "LLI", "signed long long int", "x", Signed, LongLongUnsignedInt, SignedInt128, -1, 5 },
 	{ LongLongUnsignedInt, "LongLongUnsignedInt", "LLUI", "unsigned long long int", "y", Unsigned, SignedInt128, UnsignedInt128, -1, 5 },
+
 	{ SignedInt128, "SignedInt128", "IB", "__int128", "n", Signed, UnsignedInt128, uFloat16, -1, 6 },
 	{ UnsignedInt128, "UnsignedInt128", "UIB", "unsigned __int128", "o", Unsigned, uFloat16, -1, -1, 6 },
+
 	{ uFloat16, "uFloat16", "_FH", "_Float16", "DF16_", Floating, uFloat32, uFloat16Complex, -1, 7 },
 	{ uFloat16Complex, "uFloat16Complex", "_FH", "_Float16 _Complex", "CDF16_", Floating, uFloat32Complex, -1, -1, 7 },
@@ -90,4 +97,5 @@
 	{ FloatComplex, "FloatComplex", "FC", "float _Complex", "Cf", Floating, uFloat32xComplex, -1, -1, 9 },
 	// { FloatImaginary, "FloatImaginary", "FI", "float _Imaginary", "If", false, DoubleImaginary, FloatComplex, -1, 9 },
+
 	{ uFloat32x, "uFloat32x", "_FX", "_Float32x", "DF32x_", Floating, uFloat64, uFloat32xComplex, -1, 10 },
 	{ uFloat32xComplex, "uFloat32xComplex", "_FXC", "_Float32x _Complex", "CDF32x_", Floating, uFloat64Complex, -1, -1, 10 },
@@ -97,4 +105,5 @@
 	{ DoubleComplex, "DoubleComplex", "DC", "double _Complex", "Cd", Floating, uFloat64xComplex, -1, -1, 12 },
 	// { DoubleImaginary, "DoubleImaginary", "DI", "double _Imaginary", "Id", false, LongDoubleImaginary, DoubleComplex, -1, 12 },
+
 	{ uFloat64x, "uFloat64x", "F80X", "_Float64x", "DF64x_", Floating, uuFloat80, uFloat64xComplex, -1, 13 },
 	{ uFloat64xComplex, "uFloat64xComplex", "_FDXC", "_Float64x _Complex", "CDF64x_", Floating, uFloat128Complex, -1, -1, 13 },
@@ -106,4 +115,5 @@
 	{ LongDoubleComplex, "LongDoubleComplex", "LDC", "long double _Complex", "Ce", Floating, uFloat128xComplex, -1, -1, 17 },
 	// { LongDoubleImaginary, "LongDoubleImaginary", "LDI", "long double _Imaginary", "Ie", false, LongDoubleComplex, -1, -1, 17 },
+
 	{ uFloat128x, "uFloat128x", "_FBX", "_Float128x", "DF128x_", Floating, uFloat128xComplex, -1, -1, 18 },	
 	{ uFloat128xComplex, "uFloat128xComplex", "_FLDXC", "_Float128x _Complex", "CDF128x_", Floating, -1, -1, -1, 18 }
@@ -250,6 +260,10 @@
 
 	#define STARTMK "// GENERATED START, DO NOT EDIT"
-	#define BYMK "// GENERATED BY " __FILE__
 	#define ENDMK "// GENERATED END"
+	string BYMK( __FILE__ );
+	string::size_type posn = BYMK.find_last_of( "/" );
+	if ( posn != string::npos ) BYMK.erase( 0, posn - 1); // remove directories
+	BYMK = "// GENERATED BY " + BYMK;
+
 	fstream file;
 	stringstream buffer, code;
Index: src/ControlStruct/ForExprMutator.cc
===================================================================
--- src/ControlStruct/ForExprMutator.cc	(revision 114bde658eed1edf31cde78bd21584a1ced7df2e)
+++ src/ControlStruct/ForExprMutator.cc	(revision 92d41a4af1542b1fcfd3bacde48933e4c8519366)
@@ -9,7 +9,7 @@
 // Author           : Rodolfo G. Esteves
 // Created On       : Mon May 18 07:44:20 2015
-// Last Modified By : Andrew Beach
-// Last Modified On : Fri Aug 18 10:22:00 2017
-// Update Count     : 12
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Mon Mar 11 22:26:52 2019
+// Update Count     : 14
 //
 
@@ -21,5 +21,5 @@
 
 namespace ControlStruct {
-	Statement *hoist( Statement *originalStmt, std::list<Statement *> &init ) {
+	Statement * hoist( Statement * originalStmt, std::list<Statement *> & init ) {
 		// If no hoisting is needed, skip:
 		if ( 0 == init.size() ) {
@@ -29,6 +29,6 @@
 		// Create compound statement, move initializers outside,
 		// the resut of the original stays as is.
-		CompoundStmt *block = new CompoundStmt();
-		std::list<Statement *> &stmts = block->get_kids();
+		CompoundStmt * block = new CompoundStmt();
+		std::list<Statement *> & stmts = block->get_kids();
 		stmts.splice( stmts.end(), init );
 
@@ -38,12 +38,12 @@
 	}
 
-	Statement *ForExprMutator::postmutate( IfStmt *ifStmt ) {
+	Statement * ForExprMutator::postmutate( IfStmt * ifStmt ) {
 		return hoist( ifStmt, ifStmt->initialization );
 	}
-	Statement *ForExprMutator::postmutate( ForStmt *forStmt ) {
+	Statement * ForExprMutator::postmutate( ForStmt * forStmt ) {
 		// hoist any initializer declarations to make them C89 (rather than C99)
 		return hoist( forStmt, forStmt->initialization );
 	}
-	Statement *ForExprMutator::postmutate( WhileStmt *whileStmt ) {
+	Statement * ForExprMutator::postmutate( WhileStmt * whileStmt ) {
 		return hoist( whileStmt, whileStmt->initialization );
 	}
Index: src/ControlStruct/LabelFixer.cc
===================================================================
--- src/ControlStruct/LabelFixer.cc	(revision 114bde658eed1edf31cde78bd21584a1ced7df2e)
+++ src/ControlStruct/LabelFixer.cc	(revision 92d41a4af1542b1fcfd3bacde48933e4c8519366)
@@ -9,7 +9,7 @@
 // Author           : Rodolfo G. Esteves
 // Created On       : Mon May 18 07:44:20 2015
-// Last Modified By : Rob Schluntz
-// Last Modified On : Tue Jul 28 13:32:43 2015
-// Update Count     : 156
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Mon Mar 11 22:26:02 2019
+// Update Count     : 159
 //
 
@@ -32,5 +32,5 @@
 	}
 
-	LabelFixer::LabelFixer( LabelGenerator *gen ) : generator ( gen ) {
+	LabelFixer::LabelFixer( LabelGenerator * gen ) : generator ( gen ) {
 		if ( generator == 0 )
 			generator = LabelGenerator::getGenerator();
@@ -49,5 +49,5 @@
 
 	// prune to at most one label definition for each statement
-	void LabelFixer::previsit( Statement *stmt ) {
+	void LabelFixer::previsit( Statement * stmt ) {
 		std::list< Label > &labels = stmt->get_labels();
 
@@ -58,5 +58,5 @@
 	}
 
-	void LabelFixer::previsit( BranchStmt *branchStmt ) {
+	void LabelFixer::previsit( BranchStmt * branchStmt ) {
 		previsit( ( Statement *)branchStmt );
 
@@ -75,7 +75,7 @@
 
 
-	// sets the definition of the labelTable entry to be the provided
-	// statement for every label in the list parameter. Happens for every kind of statement
-	Label LabelFixer::setLabelsDef( std::list< Label > &llabel, Statement *definition ) {
+	// sets the definition of the labelTable entry to be the provided statement for every label in the list
+	// parameter. Happens for every kind of statement
+	Label LabelFixer::setLabelsDef( std::list< Label > & llabel, Statement * definition ) {
 		assert( definition != 0 );
 		assert( llabel.size() > 0 );
@@ -100,6 +100,5 @@
 		} // for
 
-		// produce one of the labels attached to this statement to be
-		// temporarily used as the canonical label
+		// produce one of the labels attached to this statement to be temporarily used as the canonical label
 		return labelTable[ llabel.front() ]->get_label();
 	}
@@ -117,5 +116,5 @@
 
 	// Builds a table that maps a label to its defining statement.
-	std::map<Label, Statement * > *LabelFixer::resolveJumps() throw ( SemanticErrorException ) {
+	std::map<Label, Statement * > * LabelFixer::resolveJumps() throw ( SemanticErrorException ) {
 		std::map< Label, Statement * > *ret = new std::map< Label, Statement * >();
 		for ( std::map< Label, Entry * >::iterator i = labelTable.begin(); i != labelTable.end(); ++i ) {
Index: src/ControlStruct/LabelGenerator.cc
===================================================================
--- src/ControlStruct/LabelGenerator.cc	(revision 114bde658eed1edf31cde78bd21584a1ced7df2e)
+++ src/ControlStruct/LabelGenerator.cc	(revision 92d41a4af1542b1fcfd3bacde48933e4c8519366)
@@ -9,7 +9,7 @@
 // Author           : Rodolfo G. Esteves
 // Created On       : Mon May 18 07:44:20 2015
-// Last Modified By : Andrew Beach
-// Last Modified On : Thr Aug 14 14:14:00 2015
-// Update Count     : 14
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Mon Mar 11 22:23:20 2019
+// Update Count     : 15
 //
 
@@ -24,10 +24,9 @@
 
 namespace ControlStruct {
-	LabelGenerator *LabelGenerator::labelGenerator = 0;
+	LabelGenerator * LabelGenerator::labelGenerator = 0;
 
-	LabelGenerator *LabelGenerator::getGenerator() {
+	LabelGenerator * LabelGenerator::getGenerator() {
 		if ( LabelGenerator::labelGenerator == 0 )
 			LabelGenerator::labelGenerator = new LabelGenerator();
-
 		return labelGenerator;
 	}
@@ -38,5 +37,5 @@
 		if ( stmt && ! stmt->get_labels().empty() ) {
 			os << "_" << stmt->get_labels().front() << "__";
-		}
+		} // if
 		std::string ret = os.str();
 		Label l( ret );
Index: src/Parser/ExpressionNode.cc
===================================================================
--- src/Parser/ExpressionNode.cc	(revision 114bde658eed1edf31cde78bd21584a1ced7df2e)
+++ src/Parser/ExpressionNode.cc	(revision 92d41a4af1542b1fcfd3bacde48933e4c8519366)
@@ -10,6 +10,6 @@
 // Created On       : Sat May 16 13:17:07 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Thu Feb 28 21:36:38 2019
-// Update Count     : 933
+// Last Modified On : Sun Mar 10 16:10:32 2019
+// Update Count     : 976
 //
 
@@ -66,25 +66,48 @@
 void lnthSuffix( string & str, int & type, int & ltype ) {
 	string::size_type posn = str.find_last_of( "lL" );
-	if ( posn != string::npos ) {
-		type = 3;										// default
-		posn += 1;										// advance to size
-		if ( str[posn] == '3' ) {						// 32
-			type = ltype = 2; str.erase( posn, 2 );
-		} else if ( str[posn] == '6' ) {				// 64
-			type = ltype = 3; str.erase( posn, 2 );
-		} else if ( str[posn] == '8' ) {				// 8
-			type = ltype = 1; str.erase( posn, 1 );
-		} else if ( str[posn] == '1' ) {
-			if ( str[posn + 1] == '6' ) {				// 16
-				type = ltype = 0; str.erase( posn, 2 );
-			} else {									// 128
-				type = ltype = 5; str.erase( posn, 3 );
-			} // if
-		} // if
-	} // if
+
+	if ( posn == string::npos ) return;					// no suffix
+	if ( posn == str.length() - 1 ) { type = 3; return; } // no length => long
+
+	string::size_type next = posn + 1;					// advance to length
+	if ( str[next] == '3' ) {							// 32
+		type = ltype = 2;
+	} else if ( str[next] == '6' ) {					// 64
+		type = ltype = 3;
+	} else if ( str[next] == '8' ) {					// 8
+		type = ltype = 1;
+	} else if ( str[next] == '1' ) {
+		if ( str[next + 1] == '6' ) {					// 16
+			type = ltype = 0;
+		} else {										// 128
+			type = 5; ltype = 6;
+		} // if
+	} // if
+	// remove "lL" for these cases because it may not imply long
+	str.erase( posn );									// remove length
 } // lnthSuffix
 
+void valueToType( unsigned long long int & v, bool dec, int & type, bool & Unsigned ) {
+	// use value to determine type
+	if ( v <= INT_MAX ) {								// signed int
+		type = 2;
+	} else if ( v <= UINT_MAX && ! dec ) {				// unsigned int
+		type = 2;
+		Unsigned = true;								// unsigned
+	} else if ( v <= LONG_MAX ) {						// signed long int
+		type = 3;
+	} else if ( v <= ULONG_MAX && ( ! dec || LONG_MAX == LLONG_MAX ) ) { // signed long int
+		type = 3;
+		Unsigned = true;								// unsigned long int
+	} else if ( v <= LLONG_MAX ) {						// signed long long int
+		type = 4;
+	} else {											// unsigned long long int
+		type = 4;
+		Unsigned = true;								// unsigned long long int
+	} // if
+} // valueToType
+
 Expression * build_constantInteger( string & str ) {
-	static const BasicType::Kind kind[2][6] = {
+	static const BasicType::Kind kind[2][7] = {
 		// short (h) must be before char (hh) because shorter type has the longer suffix
 		{ BasicType::ShortSignedInt, BasicType::SignedChar, BasicType::SignedInt, BasicType::LongSignedInt, BasicType::LongLongSignedInt, BasicType::SignedInt128, },
@@ -92,17 +115,17 @@
 	};
 
-	static const char * lnthsInt[2][5] = {
-		{ "int16_t",  "int8_t",  "int32_t",  "int64_t",  "size_t", },
-		{ "uint16_t", "uint8_t", "uint32_t", "uint64_t", "size_t", },
+	static const char * lnthsInt[2][6] = {
+		{ "int16_t",  "int8_t",  "int32_t",  "int64_t",  "size_t",  "uintptr_t", },
+		{ "uint16_t", "uint8_t", "uint32_t", "uint64_t", "size_t",  "uintptr_t", },
 	}; // lnthsInt
-
-	bool dec = true, Unsigned = false;					// decimal, unsigned constant
-	int type = -1;										// 0 => short, 1 => char, 2 => int, 3 => long int, 4 => long long int, 5 => int128
-	int ltype = -1;										// literal length
 
 	unsigned long long int v;							// converted integral value
 	size_t last = str.length() - 1;						// last subscript of constant
 	Expression * ret;
-	string fred( str );
+	//string fred( str );
+
+	int type = -1;										// 0 => short, 1 => char, 2 => int, 3 => long int, 4 => long long int, 5 => int128
+	int ltype = -1;										// 0 => 16 bits, 1 => 8 bits, 2 => 32 bits, 3 => 64 bits, 4 => size_t, 5 => intptr, 6 => pointer
+	bool dec = true, Unsigned = false;					// decimal, unsigned constant
 
 	// special constants
@@ -116,5 +139,5 @@
 	} // if
 
-	// Cannot be just "0"/"1"; sscanf stops at the suffix, if any; value goes over the wall so always generate
+	// Cannot be just "0"/"1"; sscanf stops at the suffix, if any; value goes over the wall => always generate
 
 	if ( str[0] == '0' ) {								// radix character ?
@@ -125,5 +148,5 @@
 		} else if ( checkB( str[1] ) ) {				// binary constant ?
 			v = 0;										// compute value
-			for ( unsigned int i = 2;; ) {
+			for ( unsigned int i = 2;; ) {				// ignore prefix
 				if ( str[i] == '1' ) v |= 1;
 				i += 1;
@@ -145,26 +168,17 @@
 	if ( isdigit( str[last] ) ) {						// no suffix ?
 		lnthSuffix( str, type, ltype );					// could have length suffix
-		if ( type == -1 ) {
-			// no suffix type, use value to determine type
-			if ( v <= INT_MAX ) {						// signed int
-				type = 2;
-			} else if ( v <= UINT_MAX && ! dec ) {		// unsigned int
-				type = 2;
-				Unsigned = true;						// unsigned
-			} else if ( v <= LONG_MAX ) {				// signed long int
-				type = 3;
-			} else if ( v <= ULONG_MAX && ( ! dec || LONG_MAX == LLONG_MAX ) ) { // signed long int
-				type = 3;
-				Unsigned = true;						// unsigned long int
-			} else if ( v <= LLONG_MAX ) {				// signed long long int
-				type = 4;
-			} else {									// unsigned long long int
-				type = 4;
-				Unsigned = true;						// unsigned long long int
-			} // if
+		if ( type == -1 ) {								// no suffix
+			valueToType( v, dec, type, Unsigned );
 		} // if
 	} else {
 		// At least one digit in integer constant, so safe to backup while looking for suffix.
 
+		posn = str.find_last_of( "pP" );
+		if ( posn != string::npos ) { valueToType( v, dec, type, Unsigned ); ltype = 5; str.erase( posn, 1 ); goto FINI; }
+
+		posn = str.find_last_of( "zZ" );
+		if ( posn != string::npos ) { Unsigned = true; type = 2; ltype = 4; str.erase( posn, 1 ); goto FINI; }
+
+		// 'u' can appear before or after length suffix
 		if ( str.find_last_of( "uU" ) != string::npos ) Unsigned = true;
 
@@ -181,16 +195,15 @@
 		if ( posn != string::npos ) { type = 2; str.erase( posn, 1 ); goto FINI; }
 
-		posn = str.find_last_of( "zZ" );
-		if ( posn != string::npos ) { Unsigned = true; type = 2; ltype = 4; str.erase( posn, 1 ); goto FINI; }
-
 		if ( str.rfind( "ll" ) != string::npos || str.rfind( "LL" ) != string::npos ) { type = 4; goto FINI; }
 
 		lnthSuffix( str, type, ltype );					// must be after check for "ll"
-		if ( type == -1 ) { type = 3; goto FINI; }
+		if ( type == -1 ) {								// only 'u' suffix ?
+			valueToType( v, dec, type, Unsigned );
+		} // if
 	  FINI: ;
 	} // if
 
-	//if ( !( 0 <= type && type < 6 ) ) { printf( "%s %lu %d %s\n", fred.c_str(), fred.length(), type, str.c_str() ); }
-	assert( 0 <= type && type < 6 );
+	//if ( !( 0 <= type && type <= 6 ) ) { printf( "%s %lu %d %s\n", fred.c_str(), fred.length(), type, str.c_str() ); }
+	assert( 0 <= type && type <= 6 );
 
 	// Constant type is correct for overload resolving.
@@ -200,9 +213,11 @@
 		ret = new CastExpr( ret, new BasicType( Type::Qualifiers(), kind[Unsigned][type] ), false );
 	} else if ( ltype != -1 ) {							// explicit length ?
-		if ( ltype == 5 ) {								// int128 ?
-			type = 5;
+		if ( ltype == 6 ) {								// int128, (int128)constant
 			ret = new CastExpr( ret, new BasicType( Type::Qualifiers(), kind[Unsigned][type] ), false );
-		} else {
+		} else {										// explicit length, (length_type)constant
 			ret = new CastExpr( ret, new TypeInstType( Type::Qualifiers(), lnthsInt[Unsigned][ltype], false ), false );
+			if ( ltype == 5 ) {							// pointer, intptr( (uintptr_t)constant ) 
+				ret = build_func( new ExpressionNode( build_varref( new string( "intptr" ) ) ), new ExpressionNode( ret ) );								  
+			} // if
 		} // if
 	} // if
Index: src/Parser/lex.ll
===================================================================
--- src/Parser/lex.ll	(revision 114bde658eed1edf31cde78bd21584a1ced7df2e)
+++ src/Parser/lex.ll	(revision 92d41a4af1542b1fcfd3bacde48933e4c8519366)
@@ -10,6 +10,6 @@
  * Created On       : Sat Sep 22 08:58:10 2001
  * Last Modified By : Peter A. Buhr
- * Last Modified On : Wed Feb 27 22:44:03 2019
- * Update Count     : 704
+ * Last Modified On : Wed Mar 13 14:54:30 2019
+ * Update Count     : 707
  */
 
@@ -99,6 +99,8 @@
 hex_quad {hex}("_"?{hex}){3}
 size_opt (8|16|32|64|128)?
+				// CFA: explicit l8/l16/l32/l64/l128, char 'hh', short 'h', int 'n'
 length ("ll"|"LL"|[lL]{size_opt})|("hh"|"HH"|[hHnN])
-integer_suffix_opt ("_"?(([uU]({length}?[iI]?)|([iI]{length}))|([iI]({length}?[uU]?)|([uU]{length}))|({length}([iI]?[uU]?)|([uU][iI]))|[zZ]))?
+				// CFA: size_t 'z', pointer 'p', which define a sign and length
+integer_suffix_opt ("_"?(([uU]({length}?[iI]?)|([iI]{length}))|([iI]({length}?[uU]?)|([uU]{length}))|({length}([iI]?[uU]?)|([uU][iI]))|[zZ]|[pP]))?
 
 octal_digits ({octal})|({octal}({octal}|"_")*{octal})
@@ -224,4 +226,5 @@
 char			{ KEYWORD_RETURN(CHAR); }
 choose			{ KEYWORD_RETURN(CHOOSE); }				// CFA
+coerce			{ KEYWORD_RETURN(COERCE); }				// CFA
 _Complex		{ KEYWORD_RETURN(COMPLEX); }			// C99
 __complex		{ KEYWORD_RETURN(COMPLEX); }			// GCC
Index: src/Parser/parser.yy
===================================================================
--- src/Parser/parser.yy	(revision 114bde658eed1edf31cde78bd21584a1ced7df2e)
+++ src/Parser/parser.yy	(revision 92d41a4af1542b1fcfd3bacde48933e4c8519366)
@@ -10,6 +10,6 @@
 // Created On       : Sat Sep  1 20:22:55 2001
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Thu Feb 21 08:45:07 2019
-// Update Count     : 4232
+// Last Modified On : Fri Mar 15 14:25:43 2019
+// Update Count     : 4248
 //
 
@@ -265,5 +265,5 @@
 %token RESTRICT											// C99
 %token ATOMIC											// C11
-%token FORALL MUTEX VIRTUAL								// CFA
+%token FORALL MUTEX VIRTUAL COERCE						// CFA
 %token VOID CHAR SHORT INT LONG FLOAT DOUBLE SIGNED UNSIGNED
 %token BOOL COMPLEX IMAGINARY							// C99
@@ -795,4 +795,5 @@
 	| '(' type_no_function ')' cast_expression
 		{ $$ = new ExpressionNode( build_cast( $2, $4 ) ); }
+		// keyword cast cannot be grouped because of reduction in aggregate_key
 	| '(' COROUTINE '&' ')' cast_expression				// CFA
 		{ $$ = new ExpressionNode( build_keyword_cast( KeywordCastExpr::Coroutine, $5 ) ); }
@@ -806,6 +807,24 @@
 	| '(' VIRTUAL type_no_function ')' cast_expression	// CFA
 		{ $$ = new ExpressionNode( new VirtualCastExpr( maybeMoveBuild< Expression >( $5 ), maybeMoveBuildType( $3 ) ) ); }
+	| '(' RETURN type_no_function ')' cast_expression	// CFA
+		{ SemanticError( yylloc, "Return cast is currently unimplemented." ); $$ = nullptr; }
+	| '(' COERCE type_no_function ')' cast_expression	// CFA
+		{ SemanticError( yylloc, "Coerce cast is currently unimplemented." ); $$ = nullptr; }
+	| '(' qualifier_cast_list ')' cast_expression		// CFA
+		{ SemanticError( yylloc, "Qualifier cast is currently unimplemented." ); $$ = nullptr; }
 //	| '(' type_no_function ')' tuple
 //		{ $$ = new ExpressionNode( build_cast( $2, $4 ) ); }
+	;
+
+qualifier_cast_list:
+	cast_modifier type_qualifier_name
+	| cast_modifier MUTEX
+	| qualifier_cast_list cast_modifier type_qualifier_name
+	| qualifier_cast_list cast_modifier MUTEX
+	;
+
+cast_modifier:
+	'-'
+	| '+'
 	;
 
Index: src/ResolvExpr/CommonType.cc
===================================================================
--- src/ResolvExpr/CommonType.cc	(revision 114bde658eed1edf31cde78bd21584a1ced7df2e)
+++ src/ResolvExpr/CommonType.cc	(revision 92d41a4af1542b1fcfd3bacde48933e4c8519366)
@@ -177,5 +177,5 @@
 
 	// GENERATED START, DO NOT EDIT
-	// GENERATED BY ../../main/src/BasicTypes-gen.cc
+	// GENERATED BY BasicTypes-gen.cc
 	#define BT BasicType::
 	static const BasicType::Kind commonTypes[BasicType::NUMBER_OF_BASIC_TYPES][BasicType::NUMBER_OF_BASIC_TYPES] = { // nearest common ancestor
Index: src/ResolvExpr/ConversionCost.cc
===================================================================
--- src/ResolvExpr/ConversionCost.cc	(revision 114bde658eed1edf31cde78bd21584a1ced7df2e)
+++ src/ResolvExpr/ConversionCost.cc	(revision 92d41a4af1542b1fcfd3bacde48933e4c8519366)
@@ -182,5 +182,5 @@
 
 	// GENERATED START, DO NOT EDIT
-	// GENERATED BY ../../main/src/BasicTypes-gen.cc
+	// GENERATED BY BasicTypes-gen.cc
 	/* EXTENDED INTEGRAL RANK HIERARCHY (root to leaves)
 	                         _Bool
@@ -207,5 +207,5 @@
 
 	// GENERATED START, DO NOT EDIT
-	// GENERATED BY ../../main/src/BasicTypes-gen.cc
+	// GENERATED BY BasicTypes-gen.cc
 	static const int costMatrix[BasicType::NUMBER_OF_BASIC_TYPES][BasicType::NUMBER_OF_BASIC_TYPES] = { // path length from root to node
 		/*             B    C   SC   UC   SI  SUI    I   UI   LI  LUI  LLI LLUI   IB  UIB  _FH  _FH   _F  _FC    F   FC  _FX _FXC   FD _FDC    D   DC F80X_FDXC  F80  _FB_FLDC   FB   LD  LDC _FBX_FLDXC */
@@ -254,5 +254,5 @@
 
 	// GENERATED START, DO NOT EDIT
-	// GENERATED BY ../../main/src/BasicTypes-gen.cc
+	// GENERATED BY BasicTypes-gen.cc
 	static const int signMatrix[BasicType::NUMBER_OF_BASIC_TYPES][BasicType::NUMBER_OF_BASIC_TYPES] = { // number of sign changes in safe conversion
 		/*             B    C   SC   UC   SI  SUI    I   UI   LI  LUI  LLI LLUI   IB  UIB  _FH  _FH   _F  _FC    F   FC  _FX _FXC   FD _FDC    D   DC F80X_FDXC  F80  _FB_FLDC   FB   LD  LDC _FBX_FLDXC */
Index: src/SymTab/ManglerCommon.cc
===================================================================
--- src/SymTab/ManglerCommon.cc	(revision 114bde658eed1edf31cde78bd21584a1ced7df2e)
+++ src/SymTab/ManglerCommon.cc	(revision 92d41a4af1542b1fcfd3bacde48933e4c8519366)
@@ -24,5 +24,5 @@
 
 			// GENERATED START, DO NOT EDIT
-			// GENERATED BY ../../main/src/BasicTypes-gen.cc
+			// GENERATED BY BasicTypes-gen.cc
 			// NOTES ON MANGLING:
 			// * Itanium spec says that Float80 encodes to "e" (like LongDouble), but the distinct lengths cause resolution problems.
Index: src/SynTree/Statement.h
===================================================================
--- src/SynTree/Statement.h	(revision 114bde658eed1edf31cde78bd21584a1ced7df2e)
+++ src/SynTree/Statement.h	(revision 92d41a4af1542b1fcfd3bacde48933e4c8519366)
@@ -10,6 +10,6 @@
 // Created On       : Mon May 18 07:44:20 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Thu Mar  8 14:53:02 2018
-// Update Count     : 78
+// Last Modified On : Tue Mar 12 09:01:53 2019
+// Update Count     : 83
 //
 
@@ -19,5 +19,5 @@
 #include <list>                    // for list
 #include <memory>                  // for allocator
-#include <vector>	                 // for vector
+#include <vector>				   // for vector
 
 #include "BaseSyntaxNode.h"        // for BaseSyntaxNode
@@ -43,8 +43,8 @@
 	const std::list<Label> & get_labels() const { return labels; }
 
-	virtual Statement *clone() const override = 0;
-	virtual void accept( Visitor &v ) override = 0;
-	virtual Statement *acceptMutator( Mutator &m ) override = 0;
-	virtual void print( std::ostream &os, Indenter indent = {} ) const override;
+	virtual Statement * clone() const override = 0;
+	virtual void accept( Visitor & v ) override = 0;
+	virtual Statement * acceptMutator( Mutator & m ) override = 0;
+	virtual void print( std::ostream & os, Indenter indent = {} ) const override;
 };
 
@@ -55,5 +55,5 @@
 	CompoundStmt();
 	CompoundStmt( std::list<Statement *> stmts );
-	CompoundStmt( const CompoundStmt &other );
+	CompoundStmt( const CompoundStmt & other );
 	virtual ~CompoundStmt();
 
@@ -62,8 +62,8 @@
 	void push_front( Statement * stmt ) { kids.push_front( stmt ); }
 
-	virtual CompoundStmt *clone() const override { return new CompoundStmt( *this ); }
-	virtual void accept( Visitor &v ) override { v.visit( this ); }
-	virtual CompoundStmt *acceptMutator( Mutator &m )  override { return m.mutate( this ); }
-	virtual void print( std::ostream &os, Indenter indent = {} ) const override;
+	virtual CompoundStmt * clone() const override { return new CompoundStmt( *this ); }
+	virtual void accept( Visitor & v ) override { v.visit( this ); }
+	virtual CompoundStmt * acceptMutator( Mutator & m )  override { return m.mutate( this ); }
+	virtual void print( std::ostream & os, Indenter indent = {} ) const override;
 };
 
@@ -72,25 +72,25 @@
 	NullStmt( const std::list<Label> & labels = {} );
 
-	virtual NullStmt *clone() const override { return new NullStmt( *this ); }
-	virtual void accept( Visitor &v ) override { v.visit( this ); }
-	virtual NullStmt *acceptMutator( Mutator &m )  override { return m.mutate( this ); }
-	virtual void print( std::ostream &os, Indenter indent = {} ) const override;
+	virtual NullStmt * clone() const override { return new NullStmt( *this ); }
+	virtual void accept( Visitor & v ) override { v.visit( this ); }
+	virtual NullStmt * acceptMutator( Mutator & m )  override { return m.mutate( this ); }
+	virtual void print( std::ostream & os, Indenter indent = {} ) const override;
 };
 
 class ExprStmt : public Statement {
   public:
-	Expression *expr;
-
-	ExprStmt( Expression *expr );
-	ExprStmt( const ExprStmt &other );
+	Expression * expr;
+
+	ExprStmt( Expression * expr );
+	ExprStmt( const ExprStmt & other );
 	virtual ~ExprStmt();
 
-	Expression *get_expr() { return expr; }
-	void set_expr( Expression *newValue ) { expr = newValue; }
-
-	virtual ExprStmt *clone() const override { return new ExprStmt( *this ); }
-	virtual void accept( Visitor &v ) override { v.visit( this ); }
-	virtual Statement *acceptMutator( Mutator &m )  override { return m.mutate( this ); }
-	virtual void print( std::ostream &os, Indenter indent = {} ) const override;
+	Expression * get_expr() { return expr; }
+	void set_expr( Expression * newValue ) { expr = newValue; }
+
+	virtual ExprStmt * clone() const override { return new ExprStmt( *this ); }
+	virtual void accept( Visitor & v ) override { v.visit( this ); }
+	virtual Statement * acceptMutator( Mutator & m )  override { return m.mutate( this ); }
+	virtual void print( std::ostream & os, Indenter indent = {} ) const override;
 };
 
@@ -98,11 +98,11 @@
   public:
 	bool voltile;
-	Expression *instruction;
+	Expression * instruction;
 	std::list<Expression *> output, input;
 	std::list<ConstantExpr *> clobber;
 	std::list<Label> gotolabels;
 
-	AsmStmt( bool voltile, Expression *instruction, std::list<Expression *> output, std::list<Expression *> input, std::list<ConstantExpr *> clobber, std::list<Label> gotolabels );
-	AsmStmt( const AsmStmt &other );
+	AsmStmt( bool voltile, Expression * instruction, std::list<Expression *> output, std::list<Expression *> input, std::list<ConstantExpr *> clobber, std::list<Label> gotolabels );
+	AsmStmt( const AsmStmt & other );
 	virtual ~AsmStmt();
 
@@ -114,9 +114,9 @@
 	void set_output( const std::list<Expression *> & newValue ) { output = newValue; }
 	std::list<Expression *> & get_input() { return input; }
-	void set_input( const std::list<Expression *> &newValue ) { input = newValue; }
+	void set_input( const std::list<Expression *> & newValue ) { input = newValue; }
 	std::list<ConstantExpr *> & get_clobber() { return clobber; }
-	void set_clobber( const std::list<ConstantExpr *> &newValue ) { clobber = newValue; }
+	void set_clobber( const std::list<ConstantExpr *> & newValue ) { clobber = newValue; }
 	std::list<Label> & get_gotolabels() { return gotolabels; }
-	void set_gotolabels( const std::list<Label> &newValue ) { gotolabels = newValue; }
+	void set_gotolabels( const std::list<Label> & newValue ) { gotolabels = newValue; }
 
 	virtual AsmStmt * clone() const { return new AsmStmt( *this ); }
@@ -141,26 +141,26 @@
 class IfStmt : public Statement {
   public:
-	Expression *condition;
-	Statement *thenPart;
-	Statement *elsePart;
+	Expression * condition;
+	Statement * thenPart;
+	Statement * elsePart;
 	std::list<Statement *> initialization;
 
-	IfStmt( Expression *condition, Statement *thenPart, Statement *elsePart,
+	IfStmt( Expression * condition, Statement * thenPart, Statement * elsePart,
 			std::list<Statement *> initialization = std::list<Statement *>() );
-	IfStmt( const IfStmt &other );
+	IfStmt( const IfStmt & other );
 	virtual ~IfStmt();
 
-	std::list<Statement *> &get_initialization() { return initialization; }
-	Expression *get_condition() { return condition; }
-	void set_condition( Expression *newValue ) { condition = newValue; }
-	Statement *get_thenPart() { return thenPart; }
-	void set_thenPart( Statement *newValue ) { thenPart = newValue; }
-	Statement *get_elsePart() { return elsePart; }
-	void set_elsePart( Statement *newValue ) { elsePart = newValue; }
-
-	virtual IfStmt *clone() const override { return new IfStmt( *this ); }
-	virtual void accept( Visitor &v ) override { v.visit( this ); }
-	virtual Statement *acceptMutator( Mutator &m )  override { return m.mutate( this ); }
-	virtual void print( std::ostream &os, Indenter indent = {} ) const override;
+	std::list<Statement *> & get_initialization() { return initialization; }
+	Expression * get_condition() { return condition; }
+	void set_condition( Expression * newValue ) { condition = newValue; }
+	Statement * get_thenPart() { return thenPart; }
+	void set_thenPart( Statement * newValue ) { thenPart = newValue; }
+	Statement * get_elsePart() { return elsePart; }
+	void set_elsePart( Statement * newValue ) { elsePart = newValue; }
+
+	virtual IfStmt * clone() const override { return new IfStmt( *this ); }
+	virtual void accept( Visitor & v ) override { v.visit( this ); }
+	virtual Statement * acceptMutator( Mutator & m )  override { return m.mutate( this ); }
+	virtual void print( std::ostream & os, Indenter indent = {} ) const override;
 };
 
@@ -170,18 +170,18 @@
 	std::list<Statement *> statements;
 
-	SwitchStmt( Expression *condition, const std::list<Statement *> &statements );
-	SwitchStmt( const SwitchStmt &other );
+	SwitchStmt( Expression * condition, const std::list<Statement *> & statements );
+	SwitchStmt( const SwitchStmt & other );
 	virtual ~SwitchStmt();
 
-	Expression *get_condition() { return condition; }
-	void set_condition( Expression *newValue ) { condition = newValue; }
+	Expression * get_condition() { return condition; }
+	void set_condition( Expression * newValue ) { condition = newValue; }
 
 	std::list<Statement *> & get_statements() { return statements; }
 
-	virtual void accept( Visitor &v ) override { v.visit( this ); }
-	virtual Statement *acceptMutator( Mutator &m )  override { return m.mutate( this ); }
-
-	virtual SwitchStmt *clone() const override { return new SwitchStmt( *this ); }
-	virtual void print( std::ostream &os, Indenter indent = {} ) const override;
+	virtual void accept( Visitor & v ) override { v.visit( this ); }
+	virtual Statement * acceptMutator( Mutator & m )  override { return m.mutate( this ); }
+
+	virtual SwitchStmt * clone() const override { return new SwitchStmt( *this ); }
+	virtual void print( std::ostream & os, Indenter indent = {} ) const override;
 
 };
@@ -192,6 +192,6 @@
 	std::list<Statement *> stmts;
 
-	CaseStmt( Expression *conditions, const std::list<Statement *> &stmts, bool isdef = false ) throw (SemanticErrorException);
-	CaseStmt( const CaseStmt &other );
+	CaseStmt( Expression * conditions, const std::list<Statement *> & stmts, bool isdef = false ) throw (SemanticErrorException);
+	CaseStmt( const CaseStmt & other );
 	virtual ~CaseStmt();
 
@@ -201,15 +201,15 @@
 	void set_default(bool b) { _isDefault = b; }
 
-	Expression * &get_condition() { return condition; }
-	void set_condition( Expression *newValue ) { condition = newValue; }
-
-	std::list<Statement *> &get_statements() { return stmts; }
-	void set_statements( std::list<Statement *> &newValue ) { stmts = newValue; }
-
-	virtual void accept( Visitor &v ) override { v.visit( this ); }
-	virtual Statement *acceptMutator( Mutator &m )  override { return m.mutate( this ); }
-
-	virtual CaseStmt *clone() const override { return new CaseStmt( *this ); }
-	virtual void print( std::ostream &os, Indenter indent = {} ) const override;
+	Expression * & get_condition() { return condition; }
+	void set_condition( Expression * newValue ) { condition = newValue; }
+
+	std::list<Statement *> & get_statements() { return stmts; }
+	void set_statements( std::list<Statement *> & newValue ) { stmts = newValue; }
+
+	virtual void accept( Visitor & v ) override { v.visit( this ); }
+	virtual Statement * acceptMutator( Mutator & m )  override { return m.mutate( this ); }
+
+	virtual CaseStmt * clone() const override { return new CaseStmt( *this ); }
+	virtual void print( std::ostream & os, Indenter indent = {} ) const override;
   private:
 	bool _isDefault;
@@ -218,25 +218,24 @@
 class WhileStmt : public Statement {
   public:
-	Expression *condition;
-	Statement *body;
+	Expression * condition;
+	Statement * body;
 	std::list<Statement *> initialization;
 	bool isDoWhile;
 
-	WhileStmt( Expression *condition,
-	       Statement *body, std::list<Statement *> & initialization, bool isDoWhile = false );
-	WhileStmt( const WhileStmt &other );
+	WhileStmt( Expression * condition, Statement * body, std::list<Statement *> & initialization, bool isDoWhile = false );
+	WhileStmt( const WhileStmt & other );
 	virtual ~WhileStmt();
 
-	Expression *get_condition() { return condition; }
-	void set_condition( Expression *newValue ) { condition = newValue; }
-	Statement *get_body() { return body; }
-	void set_body( Statement *newValue ) { body = newValue; }
+	Expression * get_condition() { return condition; }
+	void set_condition( Expression * newValue ) { condition = newValue; }
+	Statement * get_body() { return body; }
+	void set_body( Statement * newValue ) { body = newValue; }
 	bool get_isDoWhile() { return isDoWhile; }
 	void set_isDoWhile( bool newValue ) { isDoWhile = newValue; }
 
-	virtual WhileStmt *clone() const override { return new WhileStmt( *this ); }
-	virtual void accept( Visitor &v ) override { v.visit( this ); }
-	virtual Statement *acceptMutator( Mutator &m )  override { return m.mutate( this ); }
-	virtual void print( std::ostream &os, Indenter indent = {} ) const override;
+	virtual WhileStmt * clone() const override { return new WhileStmt( *this ); }
+	virtual void accept( Visitor & v ) override { v.visit( this ); }
+	virtual Statement * acceptMutator( Mutator & m )  override { return m.mutate( this ); }
+	virtual void print( std::ostream & os, Indenter indent = {} ) const override;
 };
 
@@ -244,25 +243,24 @@
   public:
 	std::list<Statement *> initialization;
-	Expression *condition;
-	Expression *increment;
-	Statement *body;
-
-	ForStmt( std::list<Statement *> initialization,
-	     Expression *condition = 0, Expression *increment = 0, Statement *body = 0 );
-	ForStmt( const ForStmt &other );
+	Expression * condition;
+	Expression * increment;
+	Statement * body;
+
+	ForStmt( std::list<Statement *> initialization, Expression * condition = 0, Expression * increment = 0, Statement * body = 0 );
+	ForStmt( const ForStmt & other );
 	virtual ~ForStmt();
 
-	std::list<Statement *> &get_initialization() { return initialization; }
-	Expression *get_condition() { return condition; }
-	void set_condition( Expression *newValue ) { condition = newValue; }
-	Expression *get_increment() { return increment; }
-	void set_increment( Expression *newValue ) { increment = newValue; }
-	Statement *get_body() { return body; }
-	void set_body( Statement *newValue ) { body = newValue; }
-
-	virtual ForStmt *clone() const override { return new ForStmt( *this ); }
-	virtual void accept( Visitor &v ) override { v.visit( this ); }
-	virtual Statement *acceptMutator( Mutator &m )  override { return m.mutate( this ); }
-	virtual void print( std::ostream &os, Indenter indent = {} ) const override;
+	std::list<Statement *> & get_initialization() { return initialization; }
+	Expression * get_condition() { return condition; }
+	void set_condition( Expression * newValue ) { condition = newValue; }
+	Expression * get_increment() { return increment; }
+	void set_increment( Expression * newValue ) { increment = newValue; }
+	Statement * get_body() { return body; }
+	void set_body( Statement * newValue ) { body = newValue; }
+
+	virtual ForStmt * clone() const override { return new ForStmt( *this ); }
+	virtual void accept( Visitor & v ) override { v.visit( this ); }
+	virtual Statement * acceptMutator( Mutator & m )  override { return m.mutate( this ); }
+	virtual void print( std::ostream & os, Indenter indent = {} ) const override;
 };
 
@@ -274,9 +272,9 @@
 	const Label originalTarget;
 	Label target;
-	Expression *computedTarget;
+	Expression * computedTarget;
 	Type type;
 
 	BranchStmt( Label target, Type ) throw (SemanticErrorException);
-	BranchStmt( Expression *computedTarget, Type ) throw (SemanticErrorException);
+	BranchStmt( Expression * computedTarget, Type ) throw (SemanticErrorException);
 
 	Label get_originalTarget() { return originalTarget; }
@@ -284,33 +282,33 @@
 	void set_target( Label newValue ) { target = newValue; }
 
-	Expression *get_computedTarget() { return computedTarget; }
+	Expression * get_computedTarget() { return computedTarget; }
 	void set_target( Expression * newValue ) { computedTarget = newValue; }
 
 	Type get_type() { return type; }
-	const char *get_typename() { return brType[ type ]; }
-
-	virtual BranchStmt *clone() const override { return new BranchStmt( *this ); }
-	virtual void accept( Visitor &v ) override { v.visit( this ); }
-	virtual Statement *acceptMutator( Mutator &m )  override { return m.mutate( this ); }
-	virtual void print( std::ostream &os, Indenter indent = {} ) const override;
+	const char * get_typename() { return brType[ type ]; }
+
+	virtual BranchStmt * clone() const override { return new BranchStmt( *this ); }
+	virtual void accept( Visitor & v ) override { v.visit( this ); }
+	virtual Statement * acceptMutator( Mutator & m )  override { return m.mutate( this ); }
+	virtual void print( std::ostream & os, Indenter indent = {} ) const override;
   private:
-	static const char *brType[];
+	static const char * brType[];
 };
 
 class ReturnStmt : public Statement {
   public:
-	Expression *expr;
-
-	ReturnStmt( Expression *expr );
-	ReturnStmt( const ReturnStmt &other );
+	Expression * expr;
+
+	ReturnStmt( Expression * expr );
+	ReturnStmt( const ReturnStmt & other );
 	virtual ~ReturnStmt();
 
-	Expression *get_expr() { return expr; }
-	void set_expr( Expression *newValue ) { expr = newValue; }
-
-	virtual ReturnStmt *clone() const override { return new ReturnStmt( *this ); }
-	virtual void accept( Visitor &v ) override { v.visit( this ); }
-	virtual Statement *acceptMutator( Mutator &m )  override { return m.mutate( this ); }
-	virtual void print( std::ostream &os, Indenter indent = {} ) const override;
+	Expression * get_expr() { return expr; }
+	void set_expr( Expression * newValue ) { expr = newValue; }
+
+	virtual ReturnStmt * clone() const override { return new ReturnStmt( *this ); }
+	virtual void accept( Visitor & v ) override { v.visit( this ); }
+	virtual Statement * acceptMutator( Mutator & m )  override { return m.mutate( this ); }
+	virtual void print( std::ostream & os, Indenter indent = {} ) const override;
 };
 
@@ -324,5 +322,5 @@
 
 	ThrowStmt( Kind kind, Expression * expr, Expression * target = nullptr );
-	ThrowStmt( const ThrowStmt &other );
+	ThrowStmt( const ThrowStmt & other );
 	virtual ~ThrowStmt();
 
@@ -333,8 +331,8 @@
 	void set_target( Expression * newTarget ) { target = newTarget; }
 
-	virtual ThrowStmt *clone() const override { return new ThrowStmt( *this ); }
-	virtual void accept( Visitor &v ) override { v.visit( this ); }
-	virtual Statement *acceptMutator( Mutator &m )  override { return m.mutate( this ); }
-	virtual void print( std::ostream &os, Indenter indent = {} ) const override;
+	virtual ThrowStmt * clone() const override { return new ThrowStmt( *this ); }
+	virtual void accept( Visitor & v ) override { v.visit( this ); }
+	virtual Statement * acceptMutator( Mutator & m )  override { return m.mutate( this ); }
+	virtual void print( std::ostream & os, Indenter indent = {} ) const override;
 };
 
@@ -345,19 +343,19 @@
 	FinallyStmt * finallyBlock;
 
-	TryStmt( CompoundStmt *tryBlock, std::list<CatchStmt *> &handlers, FinallyStmt *finallyBlock = 0 );
-	TryStmt( const TryStmt &other );
+	TryStmt( CompoundStmt * tryBlock, std::list<CatchStmt *> & handlers, FinallyStmt * finallyBlock = 0 );
+	TryStmt( const TryStmt & other );
 	virtual ~TryStmt();
 
-	CompoundStmt *get_block() const { return block; }
-	void set_block( CompoundStmt *newValue ) { block = newValue; }
+	CompoundStmt * get_block() const { return block; }
+	void set_block( CompoundStmt * newValue ) { block = newValue; }
 	std::list<CatchStmt *>& get_catchers() { return handlers; }
 
-	FinallyStmt *get_finally() const { return finallyBlock; }
-	void set_finally( FinallyStmt *newValue ) { finallyBlock = newValue; }
-
-	virtual TryStmt *clone() const override { return new TryStmt( *this ); }
-	virtual void accept( Visitor &v ) override { v.visit( this ); }
-	virtual Statement *acceptMutator( Mutator &m )  override { return m.mutate( this ); }
-	virtual void print( std::ostream &os, Indenter indent = {} ) const override;
+	FinallyStmt * get_finally() const { return finallyBlock; }
+	void set_finally( FinallyStmt * newValue ) { finallyBlock = newValue; }
+
+	virtual TryStmt * clone() const override { return new TryStmt( *this ); }
+	virtual void accept( Visitor & v ) override { v.visit( this ); }
+	virtual Statement * acceptMutator( Mutator & m )  override { return m.mutate( this ); }
+	virtual void print( std::ostream & os, Indenter indent = {} ) const override;
 };
 
@@ -367,42 +365,42 @@
 
 	const Kind kind;
-	Declaration *decl;
-	Expression *cond;
-	Statement *body;
-
-	CatchStmt( Kind kind, Declaration *decl,
-	           Expression *cond, Statement *body );
-	CatchStmt( const CatchStmt &other );
+	Declaration * decl;
+	Expression * cond;
+	Statement * body;
+
+	CatchStmt( Kind kind, Declaration * decl,
+	           Expression * cond, Statement * body );
+	CatchStmt( const CatchStmt & other );
 	virtual ~CatchStmt();
 
 	Kind get_kind() { return kind; }
-	Declaration *get_decl() { return decl; }
-	void set_decl( Declaration *newValue ) { decl = newValue; }
-	Expression *get_cond() { return cond; }
-	void set_cond( Expression *newCond ) { cond = newCond; }
-	Statement *get_body() { return body; }
-	void set_body( Statement *newValue ) { body = newValue; }
-
-	virtual CatchStmt *clone() const override { return new CatchStmt( *this ); }
-	virtual void accept( Visitor &v ) override { v.visit( this ); }
-	virtual Statement *acceptMutator( Mutator &m )  override { return m.mutate( this ); }
-	virtual void print( std::ostream &os, Indenter indent = {} ) const override;
+	Declaration * get_decl() { return decl; }
+	void set_decl( Declaration * newValue ) { decl = newValue; }
+	Expression * get_cond() { return cond; }
+	void set_cond( Expression * newCond ) { cond = newCond; }
+	Statement * get_body() { return body; }
+	void set_body( Statement * newValue ) { body = newValue; }
+
+	virtual CatchStmt * clone() const override { return new CatchStmt( *this ); }
+	virtual void accept( Visitor & v ) override { v.visit( this ); }
+	virtual Statement * acceptMutator( Mutator & m )  override { return m.mutate( this ); }
+	virtual void print( std::ostream & os, Indenter indent = {} ) const override;
 };
 
 class FinallyStmt : public Statement {
   public:
-	CompoundStmt *block;
-
-	FinallyStmt( CompoundStmt *block );
-	FinallyStmt( const FinallyStmt &other );
+	CompoundStmt * block;
+
+	FinallyStmt( CompoundStmt * block );
+	FinallyStmt( const FinallyStmt & other );
 	virtual ~FinallyStmt();
 
-	CompoundStmt *get_block() const { return block; }
-	void set_block( CompoundStmt *newValue ) { block = newValue; }
-
-	virtual FinallyStmt *clone() const override { return new FinallyStmt( *this ); }
-	virtual void accept( Visitor &v ) override { v.visit( this ); }
-	virtual Statement *acceptMutator( Mutator &m )  override { return m.mutate( this ); }
-	virtual void print( std::ostream &os, Indenter indent = {} ) const override;
+	CompoundStmt * get_block() const { return block; }
+	void set_block( CompoundStmt * newValue ) { block = newValue; }
+
+	virtual FinallyStmt * clone() const override { return new FinallyStmt( *this ); }
+	virtual void accept( Visitor & v ) override { v.visit( this ); }
+	virtual Statement * acceptMutator( Mutator & m )  override { return m.mutate( this ); }
+	virtual void print( std::ostream & os, Indenter indent = {} ) const override;
 };
 
@@ -438,8 +436,8 @@
 	} orelse;
 
-	virtual WaitForStmt *clone() const override { return new WaitForStmt( *this ); }
-	virtual void accept( Visitor &v ) override { v.visit( this ); }
-	virtual Statement *acceptMutator( Mutator &m )  override { return m.mutate( this ); }
-	virtual void print( std::ostream &os, Indenter indent = {} ) const override;
+	virtual WaitForStmt * clone() const override { return new WaitForStmt( *this ); }
+	virtual void accept( Visitor & v ) override { v.visit( this ); }
+	virtual Statement * acceptMutator( Mutator & m )  override { return m.mutate( this ); }
+	virtual void print( std::ostream & os, Indenter indent = {} ) const override;
 
 };
@@ -464,23 +462,22 @@
 class DeclStmt : public Statement {
   public:
-	Declaration *decl;
-
-	DeclStmt( Declaration *decl );
-	DeclStmt( const DeclStmt &other );
+	Declaration * decl;
+
+	DeclStmt( Declaration * decl );
+	DeclStmt( const DeclStmt & other );
 	virtual ~DeclStmt();
 
-	Declaration *get_decl() const { return decl; }
-	void set_decl( Declaration *newValue ) { decl = newValue; }
-
-	virtual DeclStmt *clone() const override { return new DeclStmt( *this ); }
-	virtual void accept( Visitor &v ) override { v.visit( this ); }
-	virtual Statement *acceptMutator( Mutator &m )  override { return m.mutate( this ); }
-	virtual void print( std::ostream &os, Indenter indent = {} ) const override;
-};
-
-
-/// represents an implicit application of a constructor or destructor. Qualifiers are replaced
-/// immediately before and after the call so that qualified objects can be constructed
-/// with the same functions as unqualified objects.
+	Declaration * get_decl() const { return decl; }
+	void set_decl( Declaration * newValue ) { decl = newValue; }
+
+	virtual DeclStmt * clone() const override { return new DeclStmt( *this ); }
+	virtual void accept( Visitor & v ) override { v.visit( this ); }
+	virtual Statement * acceptMutator( Mutator & m )  override { return m.mutate( this ); }
+	virtual void print( std::ostream & os, Indenter indent = {} ) const override;
+};
+
+
+/// represents an implicit application of a constructor or destructor. Qualifiers are replaced immediately before and
+/// after the call so that qualified objects can be constructed with the same functions as unqualified objects.
 class ImplicitCtorDtorStmt : public Statement {
   public:
@@ -492,11 +489,11 @@
 	virtual ~ImplicitCtorDtorStmt();
 
-	Statement *get_callStmt() const { return callStmt; }
+	Statement * get_callStmt() const { return callStmt; }
 	void set_callStmt( Statement * newValue ) { callStmt = newValue; }
 
-	virtual ImplicitCtorDtorStmt *clone() const override { return new ImplicitCtorDtorStmt( *this ); }
-	virtual void accept( Visitor &v ) override { v.visit( this ); }
-	virtual Statement *acceptMutator( Mutator &m )  override { return m.mutate( this ); }
-	virtual void print( std::ostream &os, Indenter indent = {} ) const override;
+	virtual ImplicitCtorDtorStmt * clone() const override { return new ImplicitCtorDtorStmt( *this ); }
+	virtual void accept( Visitor & v ) override { v.visit( this ); }
+	virtual Statement * acceptMutator( Mutator & m )  override { return m.mutate( this ); }
+	virtual void print( std::ostream & os, Indenter indent = {} ) const override;
 };
 
Index: src/SynTree/Type.h
===================================================================
--- src/SynTree/Type.h	(revision 114bde658eed1edf31cde78bd21584a1ced7df2e)
+++ src/SynTree/Type.h	(revision 92d41a4af1542b1fcfd3bacde48933e4c8519366)
@@ -208,5 +208,5 @@
   public:
 	// GENERATED START, DO NOT EDIT
-	// GENERATED BY ../../main/src/BasicTypes-gen.cc
+	// GENERATED BY BasicTypes-gen.cc
 	enum Kind {
 		Bool,
Index: tests/.expect/completeTypeError.txt
===================================================================
--- tests/.expect/completeTypeError.txt	(revision 114bde658eed1edf31cde78bd21584a1ced7df2e)
+++ tests/.expect/completeTypeError.txt	(revision 92d41a4af1542b1fcfd3bacde48933e4c8519366)
@@ -87,5 +87,5 @@
    void 
  )
- Environment:( _73_0_T ) -> instance of type T (not function type) (no widening)
+ Environment:( _74_0_T ) -> instance of type T (not function type) (no widening)
 
 
Index: tests/concurrent/examples/quickSort.generic.cfa
===================================================================
--- tests/concurrent/examples/quickSort.generic.cfa	(revision 92d41a4af1542b1fcfd3bacde48933e4c8519366)
+++ tests/concurrent/examples/quickSort.generic.cfa	(revision 92d41a4af1542b1fcfd3bacde48933e4c8519366)
@@ -0,0 +1,186 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2017 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+//
+// quickSort.c -- In-place concurrent quick-sort: threads are created to partition to a specific depth, then sequential
+//		recursive-calls are use to sort each partition.
+//
+// Author           : Peter A. Buhr
+// Created On       : Wed Dec  6 12:15:52 2017
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Fri Mar 15 14:52:41 2019
+// Update Count     : 147
+//
+
+#include <fstream.hfa>
+#include <stdlib.hfa>
+#include <kernel.hfa>
+#include <thread.hfa>
+#include <string.h>										// strcmp
+
+forall( otype T | { int ?<?( T, T ); } ) {
+	thread Quicksort {
+		T * values;										// communication variables
+		int low, high, depth;
+	};
+
+	void ?{}( Quicksort(T) & qs, T values[], int size, int depth ) {
+		qs.values = values;  qs.low = 0;  qs.high = size;  qs.depth = depth;
+	} // Quicksort
+
+	void main( Quicksort(T) & qs ) {					// thread starts here
+		// nested routines: information hiding
+
+		void ?{}( Quicksort(T) & qs, T values[], int low, int high, int depth ) {
+			qs.values = values;  qs.low = low;  qs.high = high;  qs.depth = depth;
+		} // Quicksort
+
+		void sort( T values[], int low, int high, int depth ) {
+			int left, right;							// index to left/right-hand side of the values
+			T pivot;									// pivot value of values
+			T swap;										// temporary
+
+			//verify();									// check for stack overflow due to recursion
+
+			// partition while 2 or more elements in the array
+			if ( low < high ) {
+				pivot = values[low + ( high - low ) / 2];
+				left  = low;
+				right = high;
+
+				// partition: move values less < pivot before the pivot and values > pivot after the pivot
+				do {
+					while ( values[left] < pivot ) left += 1; // changed values[left] < pivot
+					while ( pivot < values[right] ) right -= 1;
+					if ( left <= right ) {
+						swap = values[left];			// interchange values
+						values[left]  = values[right];
+						values[right] = swap;
+						left += 1;
+						right -= 1;
+					} // if
+				} while ( left <= right );
+
+				// restrict number of tasks to slightly greater than number of processors
+				if ( depth > 0 ) {
+					depth -= 1;
+					Quicksort(T) rqs = { values, low, right, depth }; // concurrently sort upper half
+					//Quicksort lqs( values, left, high, depth ); // concurrently sort lower half
+					sort( values, left, high, depth );	// concurrently sort lower half
+				} else {
+					sort( values, low, right, 0 );		// sequentially sort lower half
+					sort( values, left, high, 0 );		// sequentially sort upper half
+				} // if
+			} // if
+		} // sort
+
+		with( qs ) {
+			sort( values, low, high, depth );
+		} // with
+	} // main
+}
+
+bool convert( int & val, const char * nptr ) {			// convert C string to integer
+	char * eptr;
+	int temp = strto( nptr, &eptr, 10 );				// do not change val on false
+	// true => entire string valid with no extra characters
+	return *nptr != '\0' && *eptr == '\0' ? val = temp, true : false;
+} // convert
+
+void usage( char * argv[] ) {
+	sout | "Usage:" | argv[0] | "( -s unsorted-file [ sorted-file ] | -t size (>= 0) [ depth (>= 0) ] )";
+	exit( EXIT_FAILURE );								// TERMINATE!
+} // usage
+
+
+#define ELEMTYPE int
+
+int main( int argc, char * argv[] ) {
+	ifstream & unsortedfile = sin;
+	ofstream & sortedfile = sout;						// default value
+	int depth = 0, size;
+
+	if ( argc != 1 ) {									// do not use defaults
+		if ( argc < 2 || argc > 4 ) usage( argv );		// wrong number of options
+		if ( strcmp( argv[1], "-t" ) == 0 ) {			// timing ?
+			&unsortedfile = (ifstream *)0;				// no input
+			choose ( argc ) {
+			  case 4:
+				if ( ! convert( depth, argv[3] ) || depth < 0 ) usage( argv );
+				fallthrough;
+			  case 3:
+				if ( ! convert( size, argv[2] ) || size < 0 ) usage( argv );
+			} // choose
+		} else {										// sort file
+			choose ( argc ) {
+			  case 3:
+				&sortedfile = new( (const char *)argv[2] ); // open the output file
+				if ( fail( sortedfile ) ) {
+					serr | "Error! Could not open sorted output file \"" | argv[2] | "\"";
+					usage( argv );
+				} // if
+				fallthrough;
+			  case 2:
+				&unsortedfile = new( (const char *)argv[1] ); // open the input file
+				if ( fail( unsortedfile ) ) {
+					serr | "Error! Could not open unsorted input file \"" | argv[1] | "\"";
+					usage( argv );
+				} // if
+			} // choose
+		} // if
+	} // if
+	sortedfile | nlOff;									// turn off auto newline
+
+	enum { ValuesPerLine = 22 };						// number of values printed per line
+
+	if ( &unsortedfile ) {								// generate output ?
+		for () {
+			unsortedfile | size;						// read number of elements in the list
+		  if ( eof( unsortedfile ) ) break;
+			ELEMTYPE * values = alloc( size );			// values to be sorted, too large to put on stack
+			for ( int counter = 0; counter < size; counter += 1 ) { // read unsorted numbers
+				unsortedfile | values[counter];
+				if ( counter != 0 && counter % ValuesPerLine == 0 ) sortedfile | nl | "  ";
+				sortedfile | values[counter];
+				if ( counter < size - 1 && (counter + 1) % ValuesPerLine != 0 ) sortedfile | ' ';
+			} // for
+			sortedfile | nl;
+			if ( size > 0 ) {							// values to sort ?
+				Quicksort(ELEMTYPE) QS = { values, size - 1, 0 }; // sort values
+			} // wait until sort tasks terminate
+			for ( int counter = 0; counter < size; counter += 1 ) { // print sorted list
+				if ( counter != 0 && counter % ValuesPerLine == 0 ) sortedfile | nl | "  ";
+				sortedfile | values[counter];
+				if ( counter < size - 1 && (counter + 1) % ValuesPerLine != 0 ) sortedfile | ' ';
+			} // for
+			sortedfile | nl | nl;
+
+			delete( values );
+		} // for
+		if ( &unsortedfile != &sin ) delete( &unsortedfile ); // close input/output files
+		if ( &sortedfile != &sout ) delete( &sortedfile );
+	} else {
+		processor processors[ (1 << depth) - 1 ] __attribute__(( unused )); // create 2^depth-1 kernel threads
+
+		ELEMTYPE * values = alloc( size );				// values to be sorted, too large to put on stack
+		for ( int counter = 0; counter < size; counter += 1 ) { // generate unsorted numbers
+			values[counter] = size - counter;			// descending values
+		} // for
+		{
+			Quicksort(ELEMTYPE) QS = { values, size - 1, depth }; // sort values
+		} // wait until sort tasks terminate
+
+		// for ( int counter = 0; counter < size - 1; counter += 1 ) { // check sorting
+		// 	if ( values[counter] > values[counter + 1] ) abort();
+		// } // for
+
+		delete( values );
+	} // if
+} // main
+
+// Local Variables: //
+// tab-width: 4 //
+// compile-command: "cfa quickSort.generic.cfa" //
+// End: //
Index: tests/coroutine/.expect/devicedriver.txt
===================================================================
--- tests/coroutine/.expect/devicedriver.txt	(revision 92d41a4af1542b1fcfd3bacde48933e4c8519366)
+++ tests/coroutine/.expect/devicedriver.txt	(revision 92d41a4af1542b1fcfd3bacde48933e4c8519366)
@@ -0,0 +1,8 @@
+msg:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+msg:bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
+msg:
+msg:cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
+msg:escapeSTXescapeESCescapeETX
+CRC failure
+STX in message
+message too long
Index: tests/coroutine/devicedriver.cfa
===================================================================
--- tests/coroutine/devicedriver.cfa	(revision 92d41a4af1542b1fcfd3bacde48933e4c8519366)
+++ tests/coroutine/devicedriver.cfa	(revision 92d41a4af1542b1fcfd3bacde48933e4c8519366)
@@ -0,0 +1,89 @@
+// 
+// Cforall Version 1.0.0 Copyright (C) 2017 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+// 
+// devicedriver.cfa -- 
+// 
+// Author           : Peter A. Buhr
+// Created On       : Sat Mar 16 15:30:34 2019
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Tue Mar 19 15:59:06 2019
+// Update Count     : 87
+// 
+
+#include <fstream.hfa>
+#include <coroutine.hfa>
+
+enum Status { CONT, MSG, ESTX, ELNTH, ECRC };
+coroutine Driver {
+	Status status;
+	char * msg, byte;
+}; // Driver
+
+void ?{}( Driver & d, char * m ) { d.msg = m; }
+Status next( Driver & d, char b ) with( d ) {
+	byte = b; resume( d ); return status;
+} // next
+
+void checkCRC( Driver & d, unsigned int sum ) with( d ) {
+	suspend();
+	unsigned short int crc = byte << 8;					// sign extension over written
+	suspend();
+	// prevent sign extension for signed char
+	status = (crc | (unsigned char)byte) == sum ? MSG : ECRC;
+} // checkCRC
+
+void main( Driver & d ) with( d ) {
+	enum { STX = '\002', ESC = '\033', ETX = '\003', MaxMsg = 64 };
+  msg: for () {											// parse message
+		status = CONT;
+		unsigned int lnth = 0, sum = 0;
+		while ( byte != STX ) suspend();
+	  emsg: for () {
+			suspend();
+			choose ( byte ) {							// process byte
+			  case STX:
+				status = ESTX; suspend(); continue msg;
+			  case ETX:
+				break emsg;
+			  case ESC:
+				suspend();
+			} // choose
+			if ( lnth >= MaxMsg ) {						// buffer full ?
+				status = ELNTH; suspend(); continue msg;
+			} // if
+			msg[lnth++] = byte;
+			sum += byte;
+		} // for
+		msg[lnth] = '\0';								// terminate string
+		checkCRC( d, sum );								// refactor CRC check
+		suspend();
+	} // for
+} // main
+
+int main() {
+	char msg[65], byte;
+	Driver driver = { msg };
+  eof: for () {											// read until end of file
+		sin | byte;										// read one character
+	  if ( eof( sin ) ) break eof;						// eof ?
+		choose( next( driver, byte ) ) {				// analyse character
+		  case MSG:
+			sout | "msg:" | msg;
+		  case ESTX:
+			sout | "STX in message";
+		  case ELNTH:
+			sout | "message too long";
+		  case ECRC:
+			sout | "CRC failure";
+		  default: ;
+		} // choose
+	} // for
+} // main
+
+// Local Variables: //
+// tab-width: 4 //
+// compile-command: "cfa -g -Wall -Wextra devicedriver.cfa" //
+// End: //
Index: tests/forall.cfa
===================================================================
--- tests/forall.cfa	(revision 114bde658eed1edf31cde78bd21584a1ced7df2e)
+++ tests/forall.cfa	(revision 92d41a4af1542b1fcfd3bacde48933e4c8519366)
@@ -10,6 +10,6 @@
 // Created On       : Wed May  9 08:48:15 2018
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Tue Nov  6 17:53:43 2018
-// Update Count     : 31
+// Last Modified On : Tue Mar 19 08:29:38 2019
+// Update Count     : 32
 // 
 
@@ -53,6 +53,4 @@
 	right = temp;
 }
-
-void ?{}( int & c, zero_t ) { c = 0; }					// not in prelude
 
 trait sumable( otype T ) {
Index: tests/rational.cfa
===================================================================
--- tests/rational.cfa	(revision 114bde658eed1edf31cde78bd21584a1ced7df2e)
+++ tests/rational.cfa	(revision 92d41a4af1542b1fcfd3bacde48933e4c8519366)
@@ -10,6 +10,6 @@
 // Created On       : Mon Mar 28 08:43:12 2016
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Tue Dec  4 21:46:42 2018
-// Update Count     : 69
+// Last Modified On : Tue Mar 19 08:30:28 2019
+// Update Count     : 73
 //
 
@@ -19,8 +19,4 @@
 #include <fstream.hfa>
 
-// UNNECESSARY, FIX ME
-void ?{}( int & this ) { this = 0; }
-void ?{}( int & this, zero_t ) { this = 0; }
-void ?{}( int & this, one_t ) { this = 1; }
 double convert( int i ) { return (double)i; }
 int convert( double d ) { return (int)d; }
