Index: tests/Makefile.am
===================================================================
--- tests/Makefile.am	(revision 8a919cfec5f277378c3bc7e5d16717f7d44058c6)
+++ tests/Makefile.am	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
@@ -11,6 +11,6 @@
 ## Created On       : Sun May 31 09:08:15 2015
 ## Last Modified By : Peter A. Buhr
-## Last Modified On : Tue May 16 09:27:48 2023
-## Update Count     : 178
+## Last Modified On : Fri May 26 08:23:09 2023
+## Update Count     : 179
 ###############################################################################
 
@@ -79,6 +79,4 @@
 	avltree/avl-private.h \
 	avltree/avl.h \
-	concurrent/clib_tls.c \
-	concurrent/clib.c \
 	configs/.in/parseconfig-all.txt \
 	configs/.in/parseconfig-errors.txt \
@@ -89,6 +87,8 @@
 	io/.in/many_read.data \
 	meta/fork+exec.hfa \
-	concurrent/unified_locking/mutex_test.hfa \
-	concurrent/channels/parallel_harness.hfa
+	concurrency/clib_tls.c \
+	concurrency/clib.c \
+	concurrency/unified_locking/mutex_test.hfa \
+	concurrentcy/channels/parallel_harness.hfa
 
 dist-hook:
@@ -204,5 +204,5 @@
 
 SYNTAX_ONLY_CODE = expression typedefRedef variableDeclarator switch numericConstants identFuncDeclarator \
-	init1 limits nested-types cast labelledExit array quasiKeyword include/stdincludes include/includes builtins/sync warnings/self-assignment concurrent/waitfor/parse
+	init1 limits nested-types cast labelledExit array quasiKeyword include/stdincludes include/includes builtins/sync warnings/self-assignment concurrency/waitfor/parse
 ${SYNTAX_ONLY_CODE} : % : %.cfa ${CFACCBIN}
 	${CFACOMPILE_SYNTAX}
Index: tests/concurrency/.expect/clib.txt
===================================================================
--- tests/concurrency/.expect/clib.txt	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
+++ tests/concurrency/.expect/clib.txt	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
@@ -0,0 +1,21 @@
+Done
+Done
+Done
+Done
+Done
+Done
+Done
+Done
+Done
+Done
+Done
+Done
+Done
+Done
+Done
+Done
+Done
+Done
+Done
+Done
+Done Unparker
Index: tests/concurrency/.expect/clib_tls.txt
===================================================================
--- tests/concurrency/.expect/clib_tls.txt	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
+++ tests/concurrency/.expect/clib_tls.txt	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
@@ -0,0 +1,12 @@
+Local Init
+Local Init
+Local Init
+Local Init
+Starting Checkers
+Done
+Done
+Done
+Done
+Done
+Done
+Done
Index: tests/concurrency/.expect/cluster.txt
===================================================================
--- tests/concurrency/.expect/cluster.txt	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
+++ tests/concurrency/.expect/cluster.txt	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
@@ -0,0 +1,1 @@
+done
Index: tests/concurrency/.expect/coroutineYield.txt
===================================================================
--- tests/concurrency/.expect/coroutineYield.txt	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
+++ tests/concurrency/.expect/coroutineYield.txt	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
@@ -0,0 +1,4000 @@
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
+Thread 1
+Coroutine 1
+Coroutine 2
+Thread 2
Index: tests/concurrency/.expect/ctor-check.txt
===================================================================
--- tests/concurrency/.expect/ctor-check.txt	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
+++ tests/concurrency/.expect/ctor-check.txt	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
@@ -0,0 +1,8 @@
+concurrency/ctor-check.cfa:11:1 error: constructors cannot have mutex parameters
+?{}: function
+... with parameters
+  this: mutex reference to instance of struct Empty with body
+... returning nothing
+ with body
+  Compound Statement:
+
Index: tests/concurrency/.expect/join.txt
===================================================================
--- tests/concurrency/.expect/join.txt	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
+++ tests/concurrency/.expect/join.txt	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
@@ -0,0 +1,2 @@
+All workers got 42
+All other workers got 27
Index: tests/concurrency/.expect/keywordErrors.txt
===================================================================
--- tests/concurrency/.expect/keywordErrors.txt	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
+++ tests/concurrency/.expect/keywordErrors.txt	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
@@ -0,0 +1,6 @@
+concurrency/keywordErrors.cfa:1:1 error: thread keyword requires threads to be in scope, add #include <thread.hfa>
+thread A with body
+
+concurrency/keywordErrors.cfa:6:1 error: thread keyword requires threads to be in scope, add #include <thread.hfa>
+thread B with body
+
Index: tests/concurrency/.expect/lockfree_stack.txt
===================================================================
--- tests/concurrency/.expect/lockfree_stack.txt	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
+++ tests/concurrency/.expect/lockfree_stack.txt	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
@@ -0,0 +1,1 @@
+done
Index: tests/concurrency/.expect/mainError.txt
===================================================================
--- tests/concurrency/.expect/mainError.txt	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
+++ tests/concurrency/.expect/mainError.txt	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
@@ -0,0 +1,11 @@
+concurrency/mainError.cfa:1:1 error: thread keyword requires threads to be in scope, add #include <thread.hfa>
+thread Test with body
+
+concurrency/mainError.cfa:2:1 error: thread keyword requires threads to be in scope, add #include <thread.hfa>
+main: function
+... with parameters
+  reference to instance of struct Test with body
+... returning nothing
+ with body
+  Compound Statement:
+
Index: tests/concurrency/.expect/migrate.txt
===================================================================
--- tests/concurrency/.expect/migrate.txt	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
+++ tests/concurrency/.expect/migrate.txt	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
@@ -0,0 +1,1 @@
+done
Index: tests/concurrency/.expect/monitor.txt
===================================================================
--- tests/concurrency/.expect/monitor.txt	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
+++ tests/concurrency/.expect/monitor.txt	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
@@ -0,0 +1,1 @@
+3000000
Index: tests/concurrency/.expect/multi-monitor.txt
===================================================================
--- tests/concurrency/.expect/multi-monitor.txt	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
+++ tests/concurrency/.expect/multi-monitor.txt	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
@@ -0,0 +1,1 @@
+2000000 2000000 2000000
Index: tests/concurrency/.expect/once.txt
===================================================================
--- tests/concurrency/.expect/once.txt	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
+++ tests/concurrency/.expect/once.txt	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
@@ -0,0 +1,2 @@
+starting
+done
Index: tests/concurrency/.expect/preempt.txt
===================================================================
--- tests/concurrency/.expect/preempt.txt	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
+++ tests/concurrency/.expect/preempt.txt	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
@@ -0,0 +1,5 @@
+100
+200
+300
+400
+500
Index: tests/concurrency/.expect/preempt2.txt
===================================================================
--- tests/concurrency/.expect/preempt2.txt	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
+++ tests/concurrency/.expect/preempt2.txt	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
@@ -0,0 +1,1 @@
+Done
Index: tests/concurrency/.expect/sleep.txt
===================================================================
--- tests/concurrency/.expect/sleep.txt	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
+++ tests/concurrency/.expect/sleep.txt	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
@@ -0,0 +1,2 @@
+start
+done
Index: tests/concurrency/.expect/suspend_then.txt
===================================================================
--- tests/concurrency/.expect/suspend_then.txt	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
+++ tests/concurrency/.expect/suspend_then.txt	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
@@ -0,0 +1,4001 @@
+T - took
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
+C - Suspending
+C - Publishing
+T - took
+C - Back
Index: tests/concurrency/.expect/thread.txt
===================================================================
--- tests/concurrency/.expect/thread.txt	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
+++ tests/concurrency/.expect/thread.txt	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
@@ -0,0 +1,22 @@
+User main begin
+First : Suspend No. 1
+First : Suspend No. 2
+First : Suspend No. 3
+First : Suspend No. 4
+First : Suspend No. 5
+First : Suspend No. 6
+First : Suspend No. 7
+First : Suspend No. 8
+First : Suspend No. 9
+First : Suspend No. 10
+Second : Suspend No. 1
+Second : Suspend No. 2
+Second : Suspend No. 3
+Second : Suspend No. 4
+Second : Suspend No. 5
+Second : Suspend No. 6
+Second : Suspend No. 7
+Second : Suspend No. 8
+Second : Suspend No. 9
+Second : Suspend No. 10
+User main end
Index: tests/concurrency/actors/.expect/dynamic.txt
===================================================================
--- tests/concurrency/actors/.expect/dynamic.txt	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
+++ tests/concurrency/actors/.expect/dynamic.txt	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
@@ -0,0 +1,5 @@
+starting
+started
+stopping
+Done
+stopped
Index: tests/concurrency/actors/.expect/executor.txt
===================================================================
--- tests/concurrency/actors/.expect/executor.txt	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
+++ tests/concurrency/actors/.expect/executor.txt	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
@@ -0,0 +1,4 @@
+starting
+started
+stopping
+stopped
Index: tests/concurrency/actors/.expect/inherit.txt
===================================================================
--- tests/concurrency/actors/.expect/inherit.txt	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
+++ tests/concurrency/actors/.expect/inherit.txt	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
@@ -0,0 +1,6 @@
+Start
+A
+A
+A
+A
+Finished
Index: tests/concurrency/actors/.expect/matrix.txt
===================================================================
--- tests/concurrency/actors/.expect/matrix.txt	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
+++ tests/concurrency/actors/.expect/matrix.txt	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
@@ -0,0 +1,4 @@
+starting
+started
+stopping
+stopped
Index: tests/concurrency/actors/.expect/pingpong.txt
===================================================================
--- tests/concurrency/actors/.expect/pingpong.txt	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
+++ tests/concurrency/actors/.expect/pingpong.txt	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
@@ -0,0 +1,2 @@
+start
+end
Index: tests/concurrency/actors/.expect/poison.txt
===================================================================
--- tests/concurrency/actors/.expect/poison.txt	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
+++ tests/concurrency/actors/.expect/poison.txt	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
@@ -0,0 +1,5 @@
+Start
+Finished
+Delete
+Destroy
+Done
Index: tests/concurrency/actors/.expect/static.txt
===================================================================
--- tests/concurrency/actors/.expect/static.txt	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
+++ tests/concurrency/actors/.expect/static.txt	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
@@ -0,0 +1,5 @@
+starting
+started
+stopping
+Done
+stopped
Index: tests/concurrency/actors/.expect/types.txt
===================================================================
--- tests/concurrency/actors/.expect/types.txt	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
+++ tests/concurrency/actors/.expect/types.txt	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
@@ -0,0 +1,17 @@
+start
+basic test
+1
+2
+same message and different actors test
+3
+3
+same message and different actor types test
+4
+4
+different message types, one actor test
+-1
+5
+nested inheritance actor test
+-1
+5
+end
Index: tests/concurrency/actors/dynamic.cfa
===================================================================
--- tests/concurrency/actors/dynamic.cfa	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
+++ tests/concurrency/actors/dynamic.cfa	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
@@ -0,0 +1,69 @@
+#include <actor.hfa>
+#include <fstream.hfa>
+#include <stdlib.hfa>
+#include <string.h>
+#include <stdio.h>
+
+int Times = 1000000;								// default values
+
+struct derived_actor { inline actor; };
+struct derived_msg {
+    inline message;
+    int cnt;
+};
+
+void ?{}( derived_msg & this, int cnt ) {
+    ((message &) this){ Delete };
+    this.cnt = cnt;
+}
+void ?{}( derived_msg & this ) { ((derived_msg &)this){ 0 }; }
+
+Allocation receive( derived_actor & receiver, derived_msg & msg ) {
+    if ( msg.cnt >= Times ) {
+        sout | "Done";
+        return Delete;
+    }
+    derived_msg * d_msg = alloc();
+    (*d_msg){ msg.cnt + 1 };
+    derived_actor * d_actor = alloc();
+    (*d_actor){};
+    *d_actor << *d_msg;
+    return Delete;
+}
+
+int main( int argc, char * argv[] ) {
+    switch ( argc ) {
+	  case 2:
+		if ( strcmp( argv[1], "d" ) != 0 ) {			// default ?
+			Times = atoi( argv[1] );
+			if ( Times < 1 ) goto Usage;
+		} // if
+	  case 1:											// use defaults
+		break;
+	  default:
+	  Usage:
+		sout | "Usage: " | argv[0] | " [ times (> 0) ]";
+		exit( EXIT_FAILURE );
+	} // switch
+
+    printf("starting\n");
+
+    executor e{ 0, 1, 1, false };
+    start_actor_system( e );
+
+    printf("started\n");
+
+    derived_msg * d_msg = alloc();
+    (*d_msg){};
+    derived_actor * d_actor = alloc();
+    (*d_actor){};
+    *d_actor << *d_msg;
+
+    printf("stopping\n");
+
+    stop_actor_system();
+
+    printf("stopped\n");
+
+    return 0;
+}
Index: tests/concurrency/actors/executor.cfa
===================================================================
--- tests/concurrency/actors/executor.cfa	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
+++ tests/concurrency/actors/executor.cfa	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
@@ -0,0 +1,106 @@
+#include <actor.hfa>
+#include <fstream.hfa>
+#include <stdlib.hfa>
+#include <string.h>
+#include <stdio.h>
+
+// int Actors = 40000, Set = 100, Rounds = 100, Processors = 1, Batch = 1, BufSize = 10; // default values
+int Actors = 1000, Set = 20, Rounds = 10, Processors = 1, Batch = 1, BufSize = 10; // other defaults for test to run in reasonable time
+
+static int ids = 0;
+struct d_actor { 
+    inline actor;
+    d_actor * gstart;
+    int id, rounds, recs, sends;
+};
+void ?{}( d_actor & this ) with(this) {
+    id = ids++;
+    gstart = (&this + (id / Set * Set - id)); // remember group-start array-element
+    rounds = Set * Rounds;	// send at least one message to each group member
+    recs = 0;
+    sends = 0;
+}
+
+struct d_msg { inline message; } shared_msg;
+
+Allocation receive( d_actor & this, d_msg & msg ) with( this ) {
+    if ( recs == rounds ) return Finished;
+    if ( recs % Batch == 0 ) {
+        for ( i; Batch ) {
+            gstart[sends % Set] << shared_msg;
+            sends += 1;
+        }
+    }
+    recs += 1;
+    return Nodelete;
+}
+
+int main( int argc, char * argv[] ) {
+    switch ( argc ) {
+	  case 7:
+		if ( strcmp( argv[6], "d" ) != 0 ) {			// default ?
+			BufSize = atoi( argv[6] );
+			if ( BufSize < 0 ) goto Usage;
+		} // if
+	  case 6:
+		if ( strcmp( argv[5], "d" ) != 0 ) {			// default ?
+			Batch = atoi( argv[5] );
+			if ( Batch < 1 ) goto Usage;
+		} // if
+	  case 5:
+		if ( strcmp( argv[4], "d" ) != 0 ) {			// default ?
+			Processors = atoi( argv[4] );
+			if ( Processors < 1 ) goto Usage;
+		} // if
+	  case 4:
+		if ( strcmp( argv[3], "d" ) != 0 ) {			// default ?
+			Rounds = atoi( argv[3] );
+			if ( Rounds < 1 ) goto Usage;
+		} // if
+	  case 3:
+		if ( strcmp( argv[2], "d" ) != 0 ) {			// default ?
+			Set = atoi( argv[2] );
+			if ( Set < 1 ) goto Usage;
+		} // if
+	  case 2:
+		if ( strcmp( argv[1], "d" ) != 0 ) {			// default ?
+			Actors = atoi( argv[1] );
+			if ( Actors < 1 || Actors <= Set || Actors % Set != 0 ) goto Usage;
+		} // if
+	  case 1:											// use defaults
+		break;
+	  default:
+	  Usage:
+		sout | "Usage: " | argv[0]
+             | " [ actors (> 0 && > set && actors % set == 0 ) | 'd' (default " | Actors
+			 | ") ] [ set (> 0) | 'd' (default " | Set
+			 | ") ] [ rounds (> 0) | 'd' (default " | Rounds
+			 | ") ] [ processors (> 0) | 'd' (default " | Processors
+			 | ") ] [ batch (> 0) | 'd' (default " | Batch
+			 | ") ] [ buffer size (>= 0) | 'd' (default " | BufSize
+			 | ") ]" ;
+		exit( EXIT_FAILURE );
+	} // switch
+
+    executor e{ Processors, Processors, Processors == 1 ? 1 : Processors * 512, true };
+
+    printf("starting\n");
+
+    start_actor_system( e );
+
+    printf("started\n");
+
+    d_actor actors[ Actors ];
+
+	for ( i; Actors ) {
+		actors[i] << shared_msg;
+	} // for
+
+    printf("stopping\n");
+
+    stop_actor_system();
+
+    printf("stopped\n");
+
+    return 0;
+}
Index: tests/concurrency/actors/inherit.cfa
===================================================================
--- tests/concurrency/actors/inherit.cfa	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
+++ tests/concurrency/actors/inherit.cfa	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
@@ -0,0 +1,52 @@
+#include <actor.hfa>
+#include <fstream.hfa>
+#include <stdlib.hfa>
+#include <string.h>
+#include <stdio.h>
+#include <mutex_stmt.hfa>
+
+struct Server { inline actor; };
+struct Server2 { inline Server; int b; };
+struct D_msg { int a; inline message; };
+struct D_msg2 { inline D_msg; };
+
+void ^?{}( Server2 & this ) { mutex(sout) sout | 'A'; }
+void ?{}( D_msg & this ) { set_allocation( this, Delete ); }
+void ^?{}( D_msg & this ) { mutex(sout) sout | 'A'; }
+
+Allocation handle() {
+    return Finished;
+}
+
+Allocation receive( Server & receiver, D_msg & msg ) { return handle(); }
+Allocation receive( Server & receiver, D_msg2 & msg ) { return handle(); }
+Allocation receive( Server2 & receiver, D_msg & msg ) { return Delete; }
+Allocation receive( Server2 & receiver, D_msg2 & msg ) { return Delete; }
+
+int main() {
+    sout | "Start";
+    {
+        start_actor_system();
+        D_msg * dm = alloc();
+        (*dm){};
+        D_msg2 dm2;
+        Server2 * s = alloc();
+        (*s){};
+        Server2 * s2 = alloc();
+        (*s2){};
+        *s << *dm;
+        *s2 << dm2;
+        stop_actor_system();
+    }
+    {
+        start_actor_system();
+        Server s[2];
+        D_msg * dm = alloc();
+        (*dm){};
+        D_msg2 dm2;
+        s[0] << *dm;
+        s[1] << dm2;
+        stop_actor_system();
+    }
+    sout | "Finished";
+}
Index: tests/concurrency/actors/matrix.cfa
===================================================================
--- tests/concurrency/actors/matrix.cfa	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
+++ tests/concurrency/actors/matrix.cfa	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
@@ -0,0 +1,125 @@
+#include <actor.hfa>
+#include <fstream.hfa>
+#include <stdlib.hfa>
+#include <string.h>
+#include <stdio.h>
+
+unsigned int xr = 500, xc = 500, yc = 500, Processors = 1; // default values
+
+struct derived_actor { inline actor; };
+
+struct derived_msg {
+    inline message;
+    int * Z;
+	int * X;
+    int ** Y;
+};
+
+void ?{}( derived_msg & this ) {}
+void ?{}( derived_msg & this, int * Z, int * X, int ** Y ) {
+    ((message &) this){ Nodelete };
+    this.Z = Z;
+    this.X = X;
+    this.Y = Y;
+}
+
+Allocation receive( derived_actor & receiver, derived_msg & msg ) {
+    for ( unsigned int i = 0; i < yc; i += 1 ) { // multiply X_row by Y_col and sum products
+        msg.Z[i] = 0;
+        for ( unsigned int j = 0; j < xc; j += 1 ) {
+            msg.Z[i] += msg.X[j] * msg.Y[j][i];
+        } // for
+    } // for
+    return Finished;
+}
+
+int main( int argc, char * argv[] ) {
+    switch ( argc ) {
+	  case 5:
+		if ( strcmp( argv[4], "d" ) != 0 ) {			// default ?
+			Processors = atoi( argv[4] );
+			if ( Processors < 1 ) goto Usage;
+		} // if
+	  case 4:
+		if ( strcmp( argv[3], "d" ) != 0 ) {			// default ?
+			xr = atoi( argv[3] );
+			if ( xr < 1 ) goto Usage;
+		} // if
+	  case 3:
+		if ( strcmp( argv[2], "d" ) != 0 ) {			// default ?
+			xc = atoi( argv[2] );
+			if ( xc < 1 ) goto Usage;
+		} // if
+	  case 2:
+		if ( strcmp( argv[1], "d" ) != 0 ) {			// default ?
+			yc = atoi( argv[1] );
+			if ( yc < 1 ) goto Usage;
+		} // if
+	  case 1:											// use defaults
+		break;
+	  default:
+	  Usage:
+		sout | "Usage: " | argv[0]
+			 | " [ yc (> 0) | 'd' (default " | yc
+			 | ") ] [ xc (> 0) | 'd' (default " | xc
+			 | ") ] [ xr (> 0) | 'd' (default " | xr
+			 | ") ] [ processors (> 0) | 'd' (default " | Processors
+			 | ") ]" ;
+		exit( EXIT_FAILURE );
+	} // switch
+
+    unsigned int r, c;
+	int * Z[xr], * X[xr], * Y[xc];
+
+	for ( r = 0; r < xr; r += 1 ) {						// create/initialize X matrix
+		X[r] = aalloc( xc );
+		for ( c = 0; c < xc; c += 1 ) {
+			X[r][c] = r * c % 37;						// for timing
+		} // for
+	} // for
+	for ( r = 0; r < xc; r += 1 ) {						// create/initialize Y matrix
+		Y[r] = aalloc( yc );
+		for ( c = 0; c < yc; c += 1 ) {
+			Y[r][c] = r * c % 37;						// for timing
+		} // for
+	} // for
+	for ( r = 0; r < xr; r += 1 ) {						// create Z matrix
+		Z[r] = aalloc( yc );
+	} // for
+
+    executor e{ Processors, Processors, Processors == 1 ? 1 : Processors * 16, true };
+
+    printf("starting\n");
+
+    start_actor_system( e );
+
+    printf("started\n");
+
+    derived_msg messages[xr];
+
+    derived_actor actors[xr];
+
+	for ( unsigned int r = 0; r < xr; r += 1 ) {
+		messages[r]{ Z[r], X[r], Y };
+	} // for
+
+	for ( unsigned int r = 0; r < xr; r += 1 ) {
+		actors[r] << messages[r];
+	} // for
+
+    printf("stopping\n");
+
+    stop_actor_system();
+
+    printf("stopped\n");
+
+    for ( r = 0; r < xr; r += 1 ) {						// deallocate X and Z matrices
+		free( X[r] );
+        free( Z[r] );
+	} // for
+	for ( r = 0; r < xc; r += 1 ) {						// deallocate Y matrix
+        free( Y[r] );
+	} // for
+
+    return 0;
+}
Index: tests/concurrency/actors/pingpong.cfa
===================================================================
--- tests/concurrency/actors/pingpong.cfa	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
+++ tests/concurrency/actors/pingpong.cfa	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
@@ -0,0 +1,60 @@
+#include <fstream.hfa>
+#include <stdlib.hfa>
+#include <string.h>
+#include <stdio.h>
+#include <mutex_stmt.hfa>
+#include <actor.hfa>
+
+struct ping { inline actor; };
+struct pong { inline actor; };
+
+struct p_msg {
+    inline message;
+    size_t count;
+};
+static inline void ?{}( p_msg & this ) { ((message &)this){}; this.count = 0; }
+
+ping * pi;
+pong * po;
+size_t times = 100000;
+
+Allocation receive( ping & receiver, p_msg & msg ) {
+    msg.count++;
+    if ( msg.count > times ) return Finished;
+
+    Allocation retval = Nodelete;
+    if ( msg.count == times ) retval = Finished;
+    *po << msg;
+    return retval;
+}
+
+Allocation receive( pong & receiver, p_msg & msg ) {
+    msg.count++;
+    if ( msg.count > times ) return Finished;
+    
+    Allocation retval = Nodelete;
+    if ( msg.count == times ) retval = Finished;
+    *pi << msg;
+    return retval;
+}
+
+size_t Processors = 2;
+
+int main( int argc, char * argv[] ) {
+    printf("start\n");
+
+    processor p[Processors - 1];
+
+    start_actor_system( Processors ); // test passing number of processors
+
+    ping pi_actor;
+    pong po_actor;
+    po = &po_actor;
+    pi = &pi_actor;
+    p_msg m;
+    pi_actor << m;
+    stop_actor_system();
+
+    printf("end\n");
+    return 0;
+}
Index: tests/concurrency/actors/poison.cfa
===================================================================
--- tests/concurrency/actors/poison.cfa	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
+++ tests/concurrency/actors/poison.cfa	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
@@ -0,0 +1,50 @@
+#include <actor.hfa>
+#include <fstream.hfa>
+#include <stdlib.hfa>
+#include <string.h>
+#include <stdio.h>
+
+struct Server { int val; inline actor; };
+
+void ?{}( Server & this ) { this.val = 999; }
+void ^?{}( Server & this ) { this.val = 777; }
+
+int main() {
+    sout | "Start";
+
+    sout | "Finished";
+    {
+        start_actor_system();
+        Server s[10];
+        for ( i; 10 ) {
+            s[i] << FinishedMsg;
+        }
+        stop_actor_system();
+    }
+
+    sout | "Delete";
+    {
+        start_actor_system();
+        for ( i; 10 ) {
+            Server * s = alloc();
+            (*s){};
+            (*s) << DeleteMsg;
+        }
+        stop_actor_system();
+    }
+
+    sout | "Destroy";
+    {
+        start_actor_system();
+        Server s[10];
+        for ( i; 10 )
+            s[i] << DestroyMsg;
+        stop_actor_system();
+        for ( i; 10 )
+            if (s[i].val != 777)
+                sout | "Error: dtor not called correctly.";
+    }
+
+    sout | "Done";
+    return 0;
+}
Index: tests/concurrency/actors/static.cfa
===================================================================
--- tests/concurrency/actors/static.cfa	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
+++ tests/concurrency/actors/static.cfa	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
@@ -0,0 +1,66 @@
+#include <actor.hfa>
+#include <fstream.hfa>
+#include <stdlib.hfa>
+#include <string.h>
+#include <stdio.h>
+
+int Times = 1000000;								// default values
+
+struct derived_actor { inline actor; };
+struct derived_msg {
+    inline message;
+    int cnt;
+};
+
+void ?{}( derived_msg & this, int cnt ) {
+    ((message &) this){ Nodelete };
+    this.cnt = cnt;
+}
+void ?{}( derived_msg & this ) { ((derived_msg &)this){ 0 }; }
+
+Allocation receive( derived_actor & receiver, derived_msg & msg ) {
+    if ( msg.cnt >= Times ) {
+        sout | "Done";
+        return Finished;
+    }
+    msg.cnt++;
+    receiver << msg;
+    return Nodelete;
+}
+
+int main( int argc, char * argv[] ) {
+    switch ( argc ) {
+	  case 2:
+		if ( strcmp( argv[1], "d" ) != 0 ) {			// default ?
+			Times = atoi( argv[1] );
+			if ( Times < 1 ) goto Usage;
+		} // if
+	  case 1:											// use defaults
+		break;
+	  default:
+	  Usage:
+		sout | "Usage: " | argv[0] | " [ times (> 0) ]";
+		exit( EXIT_FAILURE );
+	} // switch
+
+    printf("starting\n");
+
+    executor e{ 0, 1, 1, false };
+    start_actor_system( e );
+
+    printf("started\n");
+
+    derived_msg msg;
+
+    derived_actor actor;
+
+    actor << msg;
+
+    printf("stopping\n");
+
+    stop_actor_system();
+
+    printf("stopped\n");
+
+    return 0;
+}
Index: tests/concurrency/actors/types.cfa
===================================================================
--- tests/concurrency/actors/types.cfa	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
+++ tests/concurrency/actors/types.cfa	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
@@ -0,0 +1,128 @@
+#include <actor.hfa>
+#include <fstream.hfa>
+#include <stdlib.hfa>
+#include <string.h>
+#include <stdio.h>
+#include <mutex_stmt.hfa>
+
+struct dummy_actor { actor a; }; // this won't work since the actor isn't inlined
+
+struct derived_actor {
+    inline actor;
+    int counter;
+};
+static inline void ?{}( derived_actor & this ) { ((actor &)this){}; this.counter = 0; }
+
+struct d_msg {
+    inline message;
+    int num;
+};
+
+// this isn't a valid receive routine since int is not a message type
+Allocation receive( derived_actor & receiver, int i ) with( receiver ) {
+    mutex(sout) sout | i;
+    counter++;
+    if ( counter == 2 ) return Finished;
+    return Nodelete; 
+}
+
+Allocation receive( derived_actor & receiver, d_msg & msg ) {
+    return receive( receiver, msg.num );
+}
+
+struct derived_actor2 {
+    struct nested { int i; }; // testing nested before inline
+    inline actor;
+};
+
+Allocation receive( derived_actor2 & receiver, d_msg & msg ) {
+    mutex(sout) sout | msg.num;
+    return Finished;
+}
+
+struct derived_actor3 { inline actor; };
+struct derived_actor4 { inline derived_actor3; };
+struct d_msg2 {
+    inline message;
+    int num;
+};
+
+Allocation receive( derived_actor3 & receiver, d_msg & msg ) {
+    mutex(sout) sout | msg.num;
+    if ( msg.num == -1 ) return Nodelete;
+    return Finished;
+}
+
+Allocation receive( derived_actor3 & receiver, d_msg2 & msg ) {
+    mutex(sout) sout | msg.num;
+    return Finished;
+}
+
+size_t Processors = 3;
+
+int main( int argc, char * argv[] ) {
+    printf("start\n");
+
+    processor p[Processors - 1];
+
+    printf("basic test\n"); 
+    start_actor_system( Processors ); // test passing number of processors
+    derived_actor a;
+    d_msg b, c;
+    b.num = 1;
+    c.num = 2;
+    a << b << c;
+    stop_actor_system();
+
+    printf("same message and different actors test\n");
+    start_actor_system(); // let system detect # of processors
+    derived_actor2 d_ac2_0, d_ac2_1;
+    d_msg d_ac2_msg;
+    d_ac2_msg.num = 3;
+    d_ac2_0 << d_ac2_msg;
+    d_ac2_1 << d_ac2_msg;
+    stop_actor_system();
+
+    
+    {
+        printf("same message and different actor types test\n");
+        executor e{ 0, Processors, Processors == 1 ? 1 : Processors * 4, false };
+        start_actor_system( e ); // pass an explicit executor
+        derived_actor2 d_ac2_2;
+        derived_actor3 d_ac3_0;
+        d_msg d_ac23_msg;
+        d_ac23_msg.num = 4;
+        d_ac3_0 << d_ac23_msg;
+        d_ac2_2 << d_ac23_msg;
+        stop_actor_system();
+    } // RAII to clean up executor
+
+    {
+        printf("different message types, one actor test\n");
+        executor e{ 1, Processors, Processors == 1 ? 1 : Processors * 4, true };
+        start_actor_system( Processors );
+        derived_actor3 a3;
+        d_msg b1;
+        d_msg2 c2;
+        b1.num = -1;
+        c2.num = 5;
+        a3 << b1 << c2;
+        stop_actor_system();
+    } // RAII to clean up executor
+
+    {
+        printf("nested inheritance actor test\n");
+        executor e{ 1, Processors, Processors == 1 ? 1 : Processors * 4, true };
+        start_actor_system( Processors );
+        derived_actor4 a4;
+        d_msg b1;
+        d_msg2 c2;
+        b1.num = -1;
+        c2.num = 5;
+        a4 << b1 << c2;
+        stop_actor_system();
+    } // RAII to clean up executor
+
+    printf("end\n");
+    return 0;
+}
Index: tests/concurrency/barrier/.expect/generation.txt
===================================================================
--- tests/concurrency/barrier/.expect/generation.txt	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
+++ tests/concurrency/barrier/.expect/generation.txt	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
@@ -0,0 +1,1 @@
+AAAAAAAAABBBBBBBBBCCCCCCCCCDDDDDDDDDEEEEEEEEEFFFFFFFFFGGGGGGGGGHHHHHHHHHIIIIIIIIIJJJJJJJJJKKKKKKKKKLLLLLLLLLMMMMMMMMMNNNNNNNNNOOOOOOOOOPPPPPPPPPQQQQQQQQQRRRRRRRRRSSSSSSSSSTTTTTTTTTUUUUUUUUUVVVVVVVVVWWWWWWWWWXXXXXXXXXYYYYYYYYYZZZZZZZZZAAAAAAAAABBBBBBBBBCCCCCCCCCDDDDDDDDDEEEEEEEEEFFFFFFFFFGGGGGGGGGHHHHHHHHHIIIIIIIIIJJJJJJJJJKKKKKKKKKLLLLLLLLLMMMMMMMMMNNNNNNNNNOOOOOOOOOPPPPPPPPPQQQQQQQQQRRRRRRRRRSSSSSSSSSTTTTTTTTTUUUUUUUUUVVVVVVVVVWWWWWWWWWXXXXXXXXXYYYYYYYYYZZZZZZZZZAAAAAAAAABBBBBBBBBCCCCCCCCCDDDDDDDDDEEEEEEEEEFFFFFFFFFGGGGGGGGGHHHHHHHHHIIIIIIIIIJJJJJJJJJKKKKKKKKKLLLLLLLLLMMMMMMMMMNNNNNNNNNOOOOOOOOOPPPPPPPPPQQQQQQQQQRRRRRRRRRSSSSSSSSSTTTTTTTTTUUUUUUUUUVVVVVVVVVWWWWWWWWWXXXXXXXXXYYYYYYYYYZZZZZZZZZAAAAAAAAABBBBBBBBBCCCCCCCCCDDDDDDDDDEEEEEEEEEFFFFFFFFFGGGGGGGGGHHHHHHHHHIIIIIIIIIJJJJJJJJJKKKKKKKKKLLLLLLLLLMMMMMMMMMNNNNNNNNNOOOOOOOOOPPPPPPPPPQQQQQQQQQRRRRRRRRRSSSSSSSSSTTTTTTTTTUUUUUUUUUVVVVVVVVVWWWWWWWWWXXXXXXXXXYYYYYYYYYZZZZZZZZZAAAAAAAAABBBBBBBBBCCCCCCCCCDDDDDDDDDEEEEEEEEEFFFFFFFFFGGGGGGGGGHHHHHHHHHIIIIIIIIIJJJJJJJJJKKKKKKKKKLLLLLLLLLMMMMMMMMMNNNNNNNNNOOOOOOOOOPPPPPPPPPQQQQQQQQQRRRRRRRRRSSSSSSSSSTTTTTTTTTUUUUUUUUUVVVVVVVVVWWWWWWWWWXXXXXXXXXYYYYYYYYYZZZZZZZZZAAAAAAAAABBBBBBBBBCCCCCCCCCDDDDDDDDDEEEEEEEEEFFFFFFFFFGGGGGGGGGHHHHHHHHHIIIIIIIIIJJJJJJJJJKKKKKKKKKLLLLLLLLLMMMMMMMMMNNNNNNNNNOOOOOOOOOPPPPPPPPPQQQQQQQQQRRRRRRRRRSSSSSSSSSTTTTTTTTTUUUUUUUUUVVVVVVVVVWWWWWWWWWXXXXXXXXXYYYYYYYYYZZZZZZZZZAAAAAAAAABBBBBBBBBCCCCCCCCCDDDDDDDDDEEEEEEEEEFFFFFFFFFGGGGGGGGGHHHHHHHHHIIIIIIIIIJJJJJJJJJKKKKKKKKKLLLLLLLLLMMMMMMMMMNNNNNNNNNOOOOOOOOOPPPPPPPPPQQQQQQQQQRRRRRRRRRSSSSSSSSSTTTTTTTTTUUUUUUUUUVVVVVVVVVWWWWWWWWWXXXXXXXXXYYYYYYYYYZZZZZZZZZAAAAAAAAABBBBBBBBBCCCCCCCCCDDDDDDDDDEEEEEEEEEFFFFFFFFFGGGGGGGGGHHHHHHHHHIIIIIIIIIJJJJJJJJJKKKKKKKKKLLLLLLLLLMMMMMMMMMNNNNNNNNNOOOOOOOOOPPPPPPPPPQQQQQQQQQRRRRRRRRRSSSSSSSSSTTTTTTTTTUUUUUUUUUVVVVVVVVVWWWWWWWWWXXXXXXXXXYYYYYYYYYZZZZZZZZZAAAAAAAAABBBBBBBBBCCCCCCCCCDDDDDDDDDEEEEEEEEEFFFFFFFFFGGGGGGGGGHHHHHHHHHIIIIIIIIIJJJJJJJJJKKKKKKKKKLLLLLLLLLMMMMMMMMMNNNNNNNNNOOOOOOOOOPPPPPPPPPQQQQQQQQQRRRRRRRRRSSSSSSSSSTTTTTTTTTUUUUUUUUUVVVVVVVVVWWWWWWWWWXXXXXXXXXYYYYYYYYYZZZZZZZZZAAAAAAAAABBBBBBBBBCCCCCCCCCDDDDDDDDDEEEEEEEEEFFFFFFFFFGGGGGGGGGHHHHHHHHHIIIIIIIIIJJJJJJJJJKKKKKKKKKLLLLLLLLLMMMMMMMMMNNNNNNNNNOOOOOOOOOPPPPPPPPPQQQQQQQQQRRRRRRRRRSSSSSSSSSTTTTTTTTTUUUUUUUUUVVVVVVVVVWWWWWWWWWXXXXXXXXXYYYYYYYYYZZZZZZZZZAAAAAAAAABBBBBBBBBCCCCCCCCCDDDDDDDDDEEEEEEEEEFFFFFFFFFGGGGGGGGGHHHHHHHHHIIIIIIIIIJJJJJJJJJKKKKKKKKKLLLLLLLLLMMMMMMMMMNNNNNNNNNOOOOOOOOOPPPPPPPPPQQQQQQQQQRRRRRRRRRSSSSSSSSSTTTTTTTTTUUUUUUUUUVVVVVVVVVWWWWWWWWWXXXXXXXXXYYYYYYYYYZZZZZZZZZAAAAAAAAABBBBBBBBBCCCCCCCCCDDDDDDDDDEEEEEEEEEFFFFFFFFFGGGGGGGGGHHHHHHHHHIIIIIIIIIJJJJJJJJJKKKKKKKKKLLLLLLLLLMMMMMMMMMNNNNNNNNNOOOOOOOOOPPPPPPPPPQQQQQQQQQRRRRRRRRRSSSSSSSSSTTTTTTTTTUUUUUUUUUVVVVVVVVVWWWWWWWWWXXXXXXXXXYYYYYYYYYZZZZZZZZZAAAAAAAAABBBBBBBBBCCCCCCCCCDDDDDDDDDEEEEEEEEEFFFFFFFFFGGGGGGGGGHHHHHHHHHIIIIIIIIIJJJJJJJJJKKKKKKKKKLLLLLLLLLMMMMMMMMMNNNNNNNNNOOOOOOOOOPPPPPPPPPQQQQQQQQQRRRRRRRRRSSSSSSSSSTTTTTTTTTUUUUUUUUUVVVVVVVVVWWWWWWWWWXXXXXXXXXYYYYYYYYYZZZZZZZZZAAAAAAAAABBBBBBBBBCCCCCCCCCDDDDDDDDDEEEEEEEEEFFFFFFFFFGGGGGGGGGHHHHHHHHHIIIIIIIIIJJJJJJJJJKKKKKKKKKLLLLLLLLLMMMMMMMMMNNNNNNNNNOOOOOOOOOPPPPPPPPPQQQQQQQQQRRRRRRRRRSSSSSSSSSTTTTTTTTTUUUUUUUUUVVVVVVVVVWWWWWWWWWXXXXXXXXXYYYYYYYYYZZZZZZZZZAAAAAAAAABBBBBBBBBCCCCCCCCCDDDDDDDDDEEEEEEEEEFFFFFFFFFGGGGGGGGGHHHHHHHHHIIIIIIIIIJJJJJJJJJKKKKKKKKKLLLLLLLLLMMMMMMMMMNNNNNNNNNOOOOOOOOOPPPPPPPPPQQQQQQQQQRRRRRRRRRSSSSSSSSSTTTTTTTTTUUUUUUUUUVVVVVVVVVWWWWWWWWWXXXXXXXXXYYYYYYYYYZZZZZZZZZAAAAAAAAABBBBBBBBBCCCCCCCCCDDDDDDDDDEEEEEEEEEFFFFFFFFFGGGGGGGGGHHHHHHHHHIIIIIIIIIJJJJJJJJJKKKKKKKKKLLLLLLLLLMMMMMMMMMNNNNNNNNNOOOOOOOOOPPPPPPPPPQQQQQQQQQRRRRRRRRRSSSSSSSSSTTTTTTTTTUUUUUUUUUVVVVVVVVVWWWWWWWWWXXXXXXXXXYYYYYYYYYZZZZZZZZZAAAAAAAAABBBBBBBBBCCCCCCCCCDDDDDDDDDEEEEEEEEEFFFFFFFFFGGGGGGGGGHHHHHHHHHIIIIIIIIIJJJJJJJJJKKKKKKKKKLLLLLLLLLMMMMMMMMMNNNNNNNNNOOOOOOOOOPPPPPPPPPQQQQQQQQQRRRRRRRRRSSSSSSSSSTTTTTTTTTUUUUUUUUUVVVVVVVVVWWWWWWWWWXXXXXXXXXYYYYYYYYYZZZZZZZZZAAAAAAAAABBBBBBBBBCCCCCCCCCDDDDDDDDDEEEEEEEEEFFFFFFFFFGGGGGGGGGHHHHHHHHHIIIIIIIIIJJJJJJJJJKKKKKKKKKLLLLLLLLLMMMMMMMMMNNNNNNNNNOOOOOOOOOPPPPPPPPPQQQQQQQQQRRRRRRRRRSSSSSSSSSTTTTTTTTTUUUUUUUUUVVVVVVVVVWWWWWWWWWXXXXXXXXXYYYYYYYYYZZZZZZZZZAAAAAAAAABBBBBBBBBCCCCCCCCCDDDDDDDDDEEEEEEEEEFFFFFFFFFGGGGGGGGGHHHHHHHHHIIIIIIIIIJJJJJJJJJKKKKKKKKKLLLLLLLLLMMMMMMMMMNNNNNNNNNOOOOOOOOOPPPPPPPPPQQQQQQQQQRRRRRRRRRSSSSSSSSSTTTTTTTTTUUUUUUUUUVVVVVVVVVWWWWWWWWWXXXXXXXXXYYYYYYYYYZZZZZZZZZAAAAAAAAABBBBBBBBBCCCCCCCCCDDDDDDDDDEEEEEEEEEFFFFFFFFFGGGGGGGGGHHHHHHHHHIIIIIIIIIJJJJJJJJJKKKKKKKKKLLLLLLLLLMMMMMMMMMNNNNNNNNNOOOOOOOOOPPPPPPPPPQQQQQQQQQRRRRRRRRRSSSSSSSSSTTTTTTTTTUUUUUUUUUVVVVVVVVVWWWWWWWWWXXXXXXXXXYYYYYYYYYZZZZZZZZZAAAAAAAAABBBBBBBBBCCCCCCCCCDDDDDDDDDEEEEEEEEEFFFFFFFFFGGGGGGGGGHHHHHHHHHIIIIIIIIIJJJJJJJJJKKKKKKKKKLLLLLLLLLMMMMMMMMMNNNNNNNNNOOOOOOOOOPPPPPPPPPQQQQQQQQQRRRRRRRRRSSSSSSSSSTTTTTTTTTUUUUUUUUUVVVVVVVVVWWWWWWWWWXXXXXXXXXYYYYYYYYYZZZZZZZZZAAAAAAAAABBBBBBBBBCCCCCCCCCDDDDDDDDDEEEEEEEEEFFFFFFFFFGGGGGGGGGHHHHHHHHHIIIIIIIIIJJJJJJJJJKKKKKKKKKLLLLLLLLLMMMMMMMMMNNNNNNNNNOOOOOOOOOPPPPPPPPPQQQQQQQQQRRRRRRRRRSSSSSSSSSTTTTTTTTTUUUUUUUUUVVVVVVVVVWWWWWWWWWXXXXXXXXXYYYYYYYYYZZZZZZZZZAAAAAAAAABBBBBBBBBCCCCCCCCCDDDDDDDDDEEEEEEEEEFFFFFFFFFGGGGGGGGGHHHHHHHHHIIIIIIIIIJJJJJJJJJKKKKKKKKKLLLLLLLLLMMMMMMMMMNNNNNNNNNOOOOOOOOOPPPPPPPPPQQQQQQQQQRRRRRRRRRSSSSSSSSSTTTTTTTTTUUUUUUUUUVVVVVVVVVWWWWWWWWWXXXXXXXXXYYYYYYYYYZZZZZZZZZAAAAAAAAABBBBBBBBBCCCCCCCCCDDDDDDDDDEEEEEEEEEFFFFFFFFFGGGGGGGGGHHHHHHHHHIIIIIIIIIJJJJJJJJJKKKKKKKKKLLLLLLLLLMMMMMMMMMNNNNNNNNNOOOOOOOOOPPPPPPPPPQQQQQQQQQRRRRRRRRRSSSSSSSSSTTTTTTTTTUUUUUUUUUVVVVVVVVVWWWWWWWWWXXXXXXXXXYYYYYYYYYZZZZZZZZZAAAAAAAAABBBBBBBBBCCCCCCCCCDDDDDDDDDEEEEEEEEEFFFFFFFFFGGGGGGGGGHHHHHHHHHIIIIIIIIIJJJJJJJJJKKKKKKKKKLLLLLLLLLMMMMMMMMMNNNNNNNNNOOOOOOOOOPPPPPPPPPQQQQQQQQQRRRRRRRRRSSSSSSSSSTTTTTTTTTUUUUUUUUUVVVVVVVVVWWWWWWWWWXXXXXXXXXYYYYYYYYYZZZZZZZZZAAAAAAAAABBBBBBBBBCCCCCCCCCDDDDDDDDDEEEEEEEEEFFFFFFFFFGGGGGGGGGHHHHHHHHHIIIIIIIIIJJJJJJJJJKKKKKKKKKLLLLLLLLLMMMMMMMMMNNNNNNNNNOOOOOOOOOPPPPPPPPPQQQQQQQQQRRRRRRRRRSSSSSSSSSTTTTTTTTTUUUUUUUUUVVVVVVVVVWWWWWWWWWXXXXXXXXXYYYYYYYYYZZZZZZZZZAAAAAAAAABBBBBBBBBCCCCCCCCCDDDDDDDDDEEEEEEEEEFFFFFFFFFGGGGGGGGGHHHHHHHHHIIIIIIIIIJJJJJJJJJKKKKKKKKKLLLLLLLLLMMMMMMMMMNNNNNNNNNOOOOOOOOOPPPPPPPPPQQQQQQQQQRRRRRRRRRSSSSSSSSSTTTTTTTTTUUUUUUUUUVVVVVVVVVWWWWWWWWWXXXXXXXXXYYYYYYYYYZZZZZZZZZAAAAAAAAABBBBBBBBBCCCCCCCCCDDDDDDDDDEEEEEEEEEFFFFFFFFFGGGGGGGGGHHHHHHHHHIIIIIIIIIJJJJJJJJJKKKKKKKKKLLLLLLLLLMMMMMMMMMNNNNNNNNNOOOOOOOOOPPPPPPPPPQQQQQQQQQRRRRRRRRRSSSSSSSSSTTTTTTTTTUUUUUUUUUVVVVVVVVVWWWWWWWWWXXXXXXXXXYYYYYYYYYZZZZZZZZZAAAAAAAAABBBBBBBBBCCCCCCCCCDDDDDDDDDEEEEEEEEEFFFFFFFFFGGGGGGGGGHHHHHHHHHIIIIIIIIIJJJJJJJJJKKKKKKKKKLLLLLLLLLMMMMMMMMMNNNNNNNNNOOOOOOOOOPPPPPPPPPQQQQQQQQQRRRRRRRRRSSSSSSSSSTTTTTTTTTUUUUUUUUUVVVVVVVVVWWWWWWWWWXXXXXXXXXYYYYYYYYYZZZZZZZZZAAAAAAAAABBBBBBBBBCCCCCCCCCDDDDDDDDDEEEEEEEEEFFFFFFFFFGGGGGGGGGHHHHHHHHHIIIIIIIIIJJJJJJJJJKKKKKKKKKLLLLLLLLLMMMMMMMMMNNNNNNNNNOOOOOOOOOPPPPPPPPPQQQQQQQQQRRRRRRRRRSSSSSSSSSTTTTTTTTTUUUUUUUUUVVVVVVVVVWWWWWWWWWXXXXXXXXXYYYYYYYYYZZZZZZZZZAAAAAAAAABBBBBBBBBCCCCCCCCCDDDDDDDDDEEEEEEEEEFFFFFFFFFGGGGGGGGGHHHHHHHHHIIIIIIIIIJJJJJJJJJKKKKKKKKKLLLLLLLLLMMMMMMMMMNNNNNNNNNOOOOOOOOOPPPPPPPPPQQQQQQQQQRRRRRRRRRSSSSSSSSSTTTTTTTTTUUUUUUUUUVVVVVVVVVWWWWWWWWWXXXXXXXXXYYYYYYYYYZZZZZZZZZAAAAAAAAABBBBBBBBBCCCCCCCCCDDDDDDDDDEEEEEEEEEFFFFFFFFFGGGGGGGGGHHHHHHHHHIIIIIIIIIJJJJJJJJJKKKKKKKKKLLLLLLLLLMMMMMMMMMNNNNNNNNNOOOOOOOOOPPPPPPPPPQQQQQQQQQRRRRRRRRRSSSSSSSSSTTTTTTTTTUUUUUUUUUVVVVVVVVVWWWWWWWWWXXXXXXXXXYYYYYYYYYZZZZZZZZZAAAAAAAAABBBBBBBBBCCCCCCCCCDDDDDDDDDEEEEEEEEEFFFFFFFFFGGGGGGGGGHHHHHHHHHIIIIIIIIIJJJJJJJJJKKKKKKKKKLLLLLLLLLMMMMMMMMMNNNNNNNNNOOOOOOOOOPPPPPPPPPQQQQQQQQQRRRRRRRRRSSSSSSSSSTTTTTTTTTUUUUUUUUUVVVVVVVVVWWWWWWWWWXXXXXXXXXYYYYYYYYYZZZZZZZZZAAAAAAAAABBBBBBBBBCCCCCCCCCDDDDDDDDDEEEEEEEEEFFFFFFFFFGGGGGGGGGHHHHHHHHHIIIIIIIIIJJJJJJJJJKKKKKKKKKLLLLLLLLLMMMMMMMMMNNNNNNNNNOOOOOOOOOPPPPPPPPPQQQQQQQQQRRRRRRRRRSSSSSSSSSTTTTTTTTTUUUUUUUUUVVVVVVVVVWWWWWWWWWXXXXXXXXXYYYYYYYYYZZZZZZZZZAAAAAAAAABBBBBBBBBCCCCCCCCCDDDDDDDDDEEEEEEEEEFFFFFFFFFGGGGGGGGGHHHHHHHHHIIIIIIIIIJJJJJJJJJKKKKKKKKKLLLLLLLLLMMMMMMMMMNNNNNNNNNOOOOOOOOOPPPPPPPPPQQQQQQQQQRRRRRRRRRSSSSSSSSSTTTTTTTTTUUUUUUUUUVVVVVVVVVWWWWWWWWWXXXXXXXXXYYYYYYYYYZZZZZZZZZAAAAAAAAABBBBBBBBBCCCCCCCCCDDDDDDDDDEEEEEEEEEFFFFFFFFFGGGGGGGGGHHHHHHHHHIIIIIIIIIJJJJJJJJJKKKKKKKKKLLLLLLLLLMMMMMMMMMNNNNNNNNNOOOOOOOOOPPPPPPPPPQQQQQQQQQRRRRRRRRRSSSSSSSSSTTTTTTTTTUUUUUUUUUVVVVVVVVVWWWWWWWWWXXXXXXXXXYYYYYYYYYZZZZZZZZZAAAAAAAAABBBBBBBBBCCCCCCCCCDDDDDDDDDEEEEEEEEEFFFFFFFFFGGGGGGGGGHHHHHHHHHIIIIIIIIIJJJJJJJJJKKKKKKKKKLLLLLLLLLMMMMMMMMMNNNNNNNNNOOOOOOOOOPPPPPPPPPQQQQQQQQQRRRRRRRRRSSSSSSSSSTTTTTTTTTUUUUUUUUUVVVVVVVVVWWWWWWWWWXXXXXXXXXYYYYYYYYYZZZZZZZZZAAAAAAAAABBBBBBBBBCCCCCCCCCDDDDDDDDDEEEEEEEEEFFFFFFFFFGGGGGGGGGHHHHHHHHHIIIIIIIIIJJJJJJJJJKKKKKKKKKLLLLLLLLLMMMMMMMMMNNNNNNNNNOOOOOOOOOPPPPPPPPPQQQQQQQQQRRRRRRRRRSSSSSSSSSTTTTTTTTTUUUUUUUUUVVVVVVVVVWWWWWWWWWXXXXXXXXXYYYYYYYYYZZZZZZZZZAAAAAAAAABBBBBBBBBCCCCCCCCCDDDDDDDDDEEEEEEEEEFFFFFFFFFGGGGGGGGGHHHHHHHHHIIIIIIIIIJJJJJJJJJKKKKKKKKKLLLLLLLLLMMMMMMMMMNNNNNNNNNOOOOOOOOOPPPPPPPPPQQQQQQQQQRRRRRRRRRSSSSSSSSSTTTTTTTTTUUUUUUUUUVVVVVVVVVWWWWWWWWWXXXXXXXXXYYYYYYYYYZZZZZZZZZAAAAAAAAABBBBBBBBBCCCCCCCCCDDDDDDDDDEEEEEEEEEFFFFFFFFFGGGGGGGGGHHHHHHHHHIIIIIIIIIJJJJJJJJJKKKKKKKKKLLLLLLLLLMMMMMMMMMNNNNNNNNNOOOOOOOOOPPPPPPPPPQQQQQQQQQRRRRRRRRRSSSSSSSSSTTTTTTTTTUUUUUUUUUVVVVVVVVVWWWWWWWWWXXXXXXXXXYYYYYYYYYZZZZZZZZZAAAAAAAAABBBBBBBBBCCCCCCCCCDDDDDDDDDEEEEEEEEEFFFFFFFFFGGGGGGGGGHHHHHHHHHIIIIIIIIIJJJJJJJJJKKKKKKKKKLLLLLLLLLMMMMMMMMMNNNNNNNNNOOOOOOOOOPPPPPPPPPQQQQQQQQQRRRRRRRRRSSSSSSSSSTTTTTTTTTUUUUUUUUUVVVVVVVVVWWWWWWWWWXXXXXXXXXYYYYYYYYYZZZZZZZZZAAAAAAAAABBBBBBBBBCCCCCCCCCDDDDDDDDDEEEEEEEEEFFFFFFFFFGGGGGGGGGHHHHHHHHHIIIIIIIIIJJJJJJJJJKKKKKKKKKLLLLLLLLLMMMMMMMMMNNNNNNNNNOOOOOOOOOPPPPPPPPPQQQQQQQQQRRRRRRRRRSSSSSSSSSTTTTTTTTTUUUUUUUUUVVVVVVVVVWWWWWWWWWXXXXXXXXXYYYYYYYYYZZZZZZZZZAAAAAAAAABBBBBBBBBCCCCCCCCCDDDDDDDDDEEEEEEEEEFFFFFFFFFGGGGGGGGGHHHHHHHHHIIIIIIIIIJJJJJJJJJKKKKKKKKKLLLLLLLLLMMMMMMMMMNNNNNNNNNOOOOOOOOOPPPPPPPPPQQQQQQQQQRRRRRRRRRSSSSSSSSSTTTTTTTTTUUUUUUUUUVVVVVVVVVWWWWWWWWWXXXXXXXXXYYYYYYYYYZZZZZZZZZAAAAAAAAABBBBBBBBBCCCCCCCCCDDDDDDDDDEEEEEEEEEFFFFFFFFFGGGGGGGGGHHHHHHHHHIIIIIIIIIJJJJJJJJJKKKKKKKKKLLLLLLLLLMMMMMMMMMNNNNNNNNNOOOOOOOOOPPPPPPPPPQQQQQQQQQRRRRRRRRRSSSSSSSSSTTTTTTTTTUUUUUUUUUVVVVVVVVVWWWWWWWWWXXXXXXXXXYYYYYYYYYZZZZZZZZZAAAAAAAAABBBBBBBBBCCCCCCCCCDDDDDDDDDEEEEEEEEEFFFFFFFFFGGGGGGGGGHHHHHHHHHIIIIIIIIIJJJJJJJJJKKKKKKKKKLLLLLLLLLMMMMMMMMMNNNNNNNNNOOOOOOOOOPPPPPPPPPQQQQQQQQQRRRRRRRRRSSSSSSSSSTTTTTTTTTUUUUUUUUUVVVVVVVVVWWWWWWWWWXXXXXXXXXYYYYYYYYYZZZZZZZZZAAAAAAAAABBBBBBBBBCCCCCCCCCDDDDDDDDDEEEEEEEEEFFFFFFFFFGGGGGGGGGHHHHHHHHHIIIIIIIIIJJJJJJJJJKKKKKKKKKLLLLLLLLLMMMMMMMMMNNNNNNNNNOOOOOOOOOPPPPPPPPPQQQQQQQQQRRRRRRRRRSSSSSSSSSTTTTTTTTTUUUUUUUUUVVVVVVVVVWWWWWWWWWXXXXXXXXXYYYYYYYYYZZZZZZZZZAAAAAAAAABBBBBBBBBCCCCCCCCCDDDDDDDDDEEEEEEEEEFFFFFFFFFGGGGGGGGGHHHHHHHHHIIIIIIIIIJJJJJJJJJKKKKKKKKKLLLLLLLLLMMMMMMMMMNNNNNNNNNOOOOOOOOOPPPPPPPPPQQQQQQQQQRRRRRRRRRSSSSSSSSSTTTTTTTTTUUUUUUUUUVVVVVVVVVWWWWWWWWWXXXXXXXXXYYYYYYYYYZZZZZZZZZAAAAAAAAABBBBBBBBBCCCCCCCCCDDDDDDDDDEEEEEEEEEFFFFFFFFFGGGGGGGGGHHHHHHHHHIIIIIIIIIJJJJJJJJJKKKKKKKKKLLLLLLLLLMMMMMMMMMNNNNNNNNNOOOOOOOOOPPPPPPPPPQQQQQQQQQRRRRRRRRRSSSSSSSSSTTTTTTTTTUUUUUUUUUVVVVVVVVVWWWWWWWWWXXXXXXXXXYYYYYYYYYZZZZZZZZZAAAAAAAAABBBBBBBBBCCCCCCCCCDDDDDDDDDEEEEEEEEEFFFFFFFFFGGGGGGGGGHHHHHHHHHIIIIIIIIIJJJJJJJJJKKKKKKKKKLLLLLLLLLMMMMMMMMMNNNNNNNNNOOOOOOOOOPPPPPPPPPQQQQQQQQQRRRRRRRRRSSSSSSSSSTTTTTTTTTUUUUUUUUUVVVVVVVVVWWWWWWWWWXXXXXXXXXYYYYYYYYYZZZZZZZZZAAAAAAAAABBBBBBBBBCCCCCCCCCDDDDDDDDDEEEEEEEEEFFFFFFFFFGGGGGGGGGHHHHHHHHHIIIIIIIIIJJJJJJJJJKKKKKKKKKLLLLLLLLLMMMMMMMMMNNNNNNNNNOOOOOOOOOPPPPPPPPPQQQQQQQQQRRRRRRRRRSSSSSSSSSTTTTTTTTTUUUUUUUUUVVVVVVVVVWWWWWWWWWXXXXXXXXXYYYYYYYYYZZZZZZZZZAAAAAAAAABBBBBBBBBCCCCCCCCCDDDDDDDDDEEEEEEEEEFFFFFFFFFGGGGGGGGGHHHHHHHHHIIIIIIIIIJJJJJJJJJKKKKKKKKKLLLLLLLLLMMMMMMMMMNNNNNNNNNOOOOOOOOOPPPPPPPPPQQQQQQQQQRRRRRRRRRSSSSSSSSSTTTTTTTTTUUUUUUUUUVVVVVVVVVWWWWWWWWWXXXXXXXXXYYYYYYYYYZZZZZZZZZAAAAAAAAABBBBBBBBBCCCCCCCCCDDDDDDDDDEEEEEEEEEFFFFFFFFFGGGGGGGGGHHHHHHHHHIIIIIIIIIJJJJJJJJJKKKKKKKKKLLLLLLLLLMMMMMMMMMNNNNNNNNNOOOOOOOOOPPPPPPPPPQQQQQQQQQRRRRRRRRRSSSSSSSSSTTTTTTTTTUUUUUUUUUVVVVVVVVVWWWWWWWWWXXXXXXXXXYYYYYYYYYZZZZZZZZZAAAAAAAAABBBBBBBBBCCCCCCCCCDDDDDDDDDEEEEEEEEEFFFFFFFFFGGGGGGGGGHHHHHHHHHIIIIIIIIIJJJJJJJJJKKKKKKKKKLLLLLLLLLMMMMMMMMMNNNNNNNNNOOOOOOOOOPPPPPPPPPQQQQQQQQQRRRRRRRRRSSSSSSSSSTTTTTTTTTUUUUUUUUUVVVVVVVVVWWWWWWWWWXXXXXXXXXYYYYYYYYYZZZZZZZZZ
Index: tests/concurrency/barrier/.expect/last.txt
===================================================================
--- tests/concurrency/barrier/.expect/last.txt	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
+++ tests/concurrency/barrier/.expect/last.txt	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
@@ -0,0 +1,1 @@
+done
Index: tests/concurrency/barrier/.expect/order.txt
===================================================================
--- tests/concurrency/barrier/.expect/order.txt	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
+++ tests/concurrency/barrier/.expect/order.txt	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
@@ -0,0 +1,1 @@
+done
Index: tests/concurrency/barrier/gen_generation_expect.cfa
===================================================================
--- tests/concurrency/barrier/gen_generation_expect.cfa	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
+++ tests/concurrency/barrier/gen_generation_expect.cfa	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
@@ -0,0 +1,31 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2022 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+//
+// gen_generation_expect.cfa -- simple 'script' generates the expect file for concurrent/barrier/generation
+//
+// Author           : Thierry Delisle
+// Created On       : Thu Mar 31 16:44:43 2022
+// Last Modified By :
+// Last Modified On :
+// Update Count     :
+//
+
+
+#include <fstream.hfa>
+
+int NUM_THREADS = 9;
+int NUM_LAPS = 53;
+
+int main() {
+
+	for(NUM_LAPS)
+		for(c; 'A' ~= 'Z') {
+			for(NUM_THREADS) {
+				sout | c | nonl;
+			}
+		}
+	sout | nl;
+}
Index: tests/concurrency/barrier/generation.cfa
===================================================================
--- tests/concurrency/barrier/generation.cfa	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
+++ tests/concurrency/barrier/generation.cfa	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
@@ -0,0 +1,58 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2022 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+//
+// concurrent/barrier/generation.cfa -- simple test that validates barriers by printing
+//                                      alphabetical generations
+//
+// Author           : Thierry Delisle
+// Created On       : Thu Mar 31 16:43:45 2022
+// Last Modified By :
+// Last Modified On :
+// Update Count     :
+//
+
+// Test validates barrier by having each thread print ABCD...
+// If the barrier is correct it should print all As, all Bs, etc.
+
+unsigned NUM_THREADS = 9;
+unsigned NUM_LAPS = 53;
+
+#include <concurrency/barrier.hfa>
+#include <fstream.hfa>
+#include <mutex_stmt.hfa>
+#include <thread.hfa>
+
+// The barrier we are testing
+barrier bar = { NUM_THREADS };
+
+
+thread Tester {};
+void main( Tester & this ) {
+	// Repeat the experiment a few times
+	for(NUM_LAPS)
+		// For each letters
+		for(c; 'A' ~= 'Z') {
+			// Yield for chaos
+			yield( prng(this, 10) );
+
+			// Print the generation, no newline because
+			mutex(sout) sout | c | nonl;
+
+			// Yield again for more chaos
+			yield( prng(this, 10) );
+
+			// Block on the barrier
+			block(bar);
+		}
+}
+
+int main() {
+	processor p[4];
+	{
+		Tester testers[NUM_THREADS];
+	}
+	sout | nl;
+}
Index: tests/concurrency/barrier/last.cfa
===================================================================
--- tests/concurrency/barrier/last.cfa	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
+++ tests/concurrency/barrier/last.cfa	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
@@ -0,0 +1,84 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2022 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+//
+// concurrent/barrier/last.cfa -- validates barrier's last hook functionality
+//
+// Author           : Thierry Delisle
+// Created On       : Fri Apr 01 14:24:28 2022
+// Last Modified By :
+// Last Modified On :
+// Update Count     :
+//
+
+// Test validates barrier correctly blocks threads, and that the last
+// function is called at the appropriate time.
+
+#include <concurrency/barrier.hfa>
+#include <fstream.hfa>
+#include <mutex_stmt.hfa>
+#include <thread.hfa>
+
+const unsigned NUM_LAPS = 223;
+const unsigned NUM_THREADS = 13;
+
+// The barrier we are testing
+barrier bar = { NUM_THREADS };
+
+// The return values of the previous generation.
+volatile unsigned * generation;
+
+// Check that validate is actually getting called as expected;
+volatile unsigned validate_calls = 0;
+
+void validate() {
+	unsigned vc = validate_calls;
+	unsigned expected = generation[0];
+	for(i; 1 ~ NUM_THREADS) {
+		unsigned obtained = generation[i];
+		if( obtained != expected ) {
+			sout | "Index 0 and" | i | "disagree on current generation:" | expected | "vs" | obtained;
+		}
+	}
+	validate_calls = vc + 1;
+}
+
+thread Tester {
+	unsigned id;
+};
+void main( Tester & this) {
+	park();
+	// Repeat a few times
+	for(l; NUM_LAPS) {
+		// Block
+		block(bar, validate);
+
+		// Update what we thing the generation is
+		generation[this.id]++;
+	}
+}
+
+int main() {
+	// Create the data ans zero it.
+	volatile unsigned gen_data[NUM_THREADS];
+	for(t; NUM_THREADS)
+		gen_data[t] = 0;
+
+	generation = gen_data;
+
+	// Run the experiment
+	processor p[6];
+	{
+		Tester testers[NUM_THREADS];
+		for(i; NUM_THREADS) {
+			testers[i].id = i;
+			unpark(testers[i]);
+		}
+	}
+	if(validate_calls != NUM_LAPS) {
+		sout | "Unexpected number of calls to validate: expcted" | NUM_LAPS | ", got" | validate_calls;
+	}
+	sout | "done";
+}
Index: tests/concurrency/barrier/order.cfa
===================================================================
--- tests/concurrency/barrier/order.cfa	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
+++ tests/concurrency/barrier/order.cfa	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
@@ -0,0 +1,72 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2022 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+//
+// concurrent/barrier/order.cfa -- validates barriers the return value of
+//                                 barrier block
+//
+// Author           : Thierry Delisle
+// Created On       : Fri Apr 01 11:39:09 2022
+// Last Modified By :
+// Last Modified On :
+// Update Count     :
+//
+
+// Test validates barrier and block return value by checking
+// that no more than one thread gets the same return value
+
+#include <concurrency/barrier.hfa>
+#include <fstream.hfa>
+#include <mutex_stmt.hfa>
+#include <thread.hfa>
+
+const unsigned NUM_LAPS = 173;
+const unsigned NUM_THREADS = 11;
+
+// The barrier we are testing
+barrier bar = { NUM_THREADS };
+
+// The return values of the previous generation.
+volatile unsigned * generation;
+
+thread Tester {};
+void main( Tester & this ) {
+	// Repeat a few times
+	for(l; NUM_LAPS) {
+		// Yield for chaos
+		yield( prng(this, 10) );
+
+		// Block and what order we arrived
+		unsigned ret = block(bar);
+
+		// Check what was the last generation of that last thread in this position
+		unsigned g = generation[ret];
+
+		// Is it what we expect?
+		if(g != l) {
+			// Complain that they are different
+			sout | "Gen" | l | ": Expeced generation at" | ret | "to be" | l | "was" | g;
+		}
+
+		// Mark the expected next generation
+		generation[ret] = l+1;
+	}
+}
+
+int main() {
+	// Create the data ans zero it.
+	volatile unsigned gen_data[NUM_THREADS];
+	for(t; NUM_THREADS)
+		gen_data[t] = 0;
+
+	generation = gen_data;
+
+	// Run the experiment
+	processor p[4];
+	{
+		Tester testers[NUM_THREADS];
+	}
+	sout | "done";
+}
Index: tests/concurrency/channels/.expect/big_elems.txt
===================================================================
--- tests/concurrency/channels/.expect/big_elems.txt	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
+++ tests/concurrency/channels/.expect/big_elems.txt	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
@@ -0,0 +1,5 @@
+start
+prods
+cons
+flush
+done
Index: tests/concurrency/channels/.expect/churn.txt
===================================================================
--- tests/concurrency/channels/.expect/churn.txt	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
+++ tests/concurrency/channels/.expect/churn.txt	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
@@ -0,0 +1,2 @@
+start
+done
Index: tests/concurrency/channels/.expect/contend.txt
===================================================================
--- tests/concurrency/channels/.expect/contend.txt	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
+++ tests/concurrency/channels/.expect/contend.txt	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
@@ -0,0 +1,2 @@
+start
+done
Index: tests/concurrency/channels/.expect/daisy_chain.txt
===================================================================
--- tests/concurrency/channels/.expect/daisy_chain.txt	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
+++ tests/concurrency/channels/.expect/daisy_chain.txt	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
@@ -0,0 +1,2 @@
+start
+done
Index: tests/concurrency/channels/.expect/hot_potato.txt
===================================================================
--- tests/concurrency/channels/.expect/hot_potato.txt	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
+++ tests/concurrency/channels/.expect/hot_potato.txt	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
@@ -0,0 +1,2 @@
+start
+done
Index: tests/concurrency/channels/.expect/ping_pong.txt
===================================================================
--- tests/concurrency/channels/.expect/ping_pong.txt	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
+++ tests/concurrency/channels/.expect/ping_pong.txt	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
@@ -0,0 +1,2 @@
+start
+done
Index: tests/concurrency/channels/.expect/pub_sub.txt
===================================================================
--- tests/concurrency/channels/.expect/pub_sub.txt	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
+++ tests/concurrency/channels/.expect/pub_sub.txt	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
@@ -0,0 +1,2 @@
+start
+done
Index: tests/concurrency/channels/.expect/zero_size.txt
===================================================================
--- tests/concurrency/channels/.expect/zero_size.txt	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
+++ tests/concurrency/channels/.expect/zero_size.txt	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
@@ -0,0 +1,5 @@
+start
+prods
+cons
+flush
+done
Index: tests/concurrency/channels/barrier.cfa
===================================================================
--- tests/concurrency/channels/barrier.cfa	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
+++ tests/concurrency/channels/barrier.cfa	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
@@ -0,0 +1,130 @@
+#include <locks.hfa>
+#include <fstream.hfa>
+#include <stdio.h>
+#include <channel.hfa>
+#include <thread.hfa>
+#include <time.hfa>
+#include <string.h>
+
+size_t total_operations = 0;
+int Processors = 1, Tasks = 5, BarrierSize = 2;
+
+typedef channel( int ) Channel;
+
+Channel * barWait;
+Channel * entryWait;
+owner_lock o;
+
+bool done = false;
+size_t tasks_done = 0;
+
+static inline void initBarrier() {
+    for ( j; BarrierSize )
+        insert( *entryWait, j );
+}
+
+static inline void barrier() {
+    int ticket = remove( *entryWait );
+
+    if ( ticket == BarrierSize - 1 ) {
+		for ( j; BarrierSize - 1 )
+            insert( *barWait, j );
+        return;
+	}
+    ticket = remove( *barWait );
+
+	// last one out
+	if ( BarrierSize == 1 || ticket == BarrierSize - 2 ) {
+		for ( j; BarrierSize )
+            insert( *entryWait, j );
+	}
+}
+
+thread Task {};
+static inline void ?{}( Task & p, cluster & clu ) {
+    ((thread &)p){ clu };
+}
+void main(Task & this) {
+    size_t runs = 0;
+    try {
+        for ( ;; ) {
+            if ( done ) break;
+            barrier();
+            runs++;
+        }
+    } catch ( channel_closed * e ) {} 
+    lock(o);
+    total_operations += runs;
+    // sout | "P: " | runs;
+    unlock(o);
+}
+
+
+int main( int argc, char * argv[] ) {
+    switch ( argc ) {
+	  case 3:
+		if ( strcmp( argv[2], "d" ) != 0 ) {			// default ?
+			BarrierSize = atoi( argv[2] );
+            if ( Processors < 1 ) goto Usage;
+		} // if
+	  case 2:
+		if ( strcmp( argv[1], "d" ) != 0 ) {			// default ?
+			Processors = atoi( argv[1] );
+			if ( Processors < 1 ) goto Usage;
+		} // if
+	  case 1:											// use defaults
+		break;
+	  default:
+	  Usage:
+		sout | "Usage: " | argv[0]
+             | " [ processors (> 0) | 'd' (default " | Processors
+			 | ") ] [ BarrierSize (> 0) | 'd' (default " | BarrierSize
+			 | ") ]" ;
+		exit( EXIT_FAILURE );
+	} // switch
+    if ( Tasks < BarrierSize )
+        Tasks = BarrierSize;
+
+    size_t Clusters = 1;
+    // create a cluster
+    cluster clus[Clusters];
+    processor * proc[Processors];
+    for ( i; Processors ) {
+        (*(proc[i] = malloc())){clus[i % Clusters]};
+    }
+
+    Channel entry{ BarrierSize };
+    Channel wait{ BarrierSize };
+
+    entryWait = &entry;
+    barWait = &wait;
+
+    initBarrier();
+
+    sout | "start";
+    Task * t[Tasks];
+
+    for ( i; Tasks ) {
+        (*(t[i] = malloc())){ clus[i % Clusters] };
+    }
+
+    sleep(10`s);
+    done = true;
+
+    sout | "sleep";
+
+    close( entry );
+    close( wait );
+
+    for ( i; Tasks ) {
+        delete(t[i]);
+    }
+    
+    // sout | total_operations;
+
+    for ( i; Processors ) {
+        delete(proc[i]);
+    }
+    sout | "done";
+    return 0;
+}
Index: tests/concurrency/channels/big_elems.cfa
===================================================================
--- tests/concurrency/channels/big_elems.cfa	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
+++ tests/concurrency/channels/big_elems.cfa	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
@@ -0,0 +1,8 @@
+#define BIG 1
+#include "parallel_harness.hfa"
+
+size_t Processors = 10, Channels = 10, Producers = 40, Consumers = 40, ChannelSize = 128;
+
+int main() {
+    test(Processors, Channels, Producers, Consumers, ChannelSize);
+}
Index: tests/concurrency/channels/churn.cfa
===================================================================
--- tests/concurrency/channels/churn.cfa	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
+++ tests/concurrency/channels/churn.cfa	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
@@ -0,0 +1,145 @@
+#include <locks.hfa>
+#include <fstream.hfa>
+#include <stdio.h>
+#include <string.h>
+#include <channel.hfa>
+#include <thread.hfa>
+#include <time.hfa>
+
+size_t Processors = 1, Channels = 4, Producers = 2, Consumers = 2, ChannelSize = 128;
+
+owner_lock o;
+
+size_t total_operations = 0;
+size_t cons_check = 0, prod_check = 0;
+
+channel( size_t ) * channels;
+thread Consumer {};
+
+void getRandArray( int * chanIndices ) {
+    for ( int i = 0; i < Channels; i++ ) {
+        chanIndices[i] = i;
+    }
+    for ( int i = 0; i < Channels; i++ ) {
+        int loc_1 = prng() % Channels;
+        int loc_2 = prng() % Channels;
+        int temp = chanIndices[ loc_1 ];
+        chanIndices[ loc_1 ] = chanIndices[ loc_2 ];
+        chanIndices[ loc_2 ] = temp;
+    }
+}
+
+void main(Consumer & this) {
+    size_t i = 0;
+    size_t runs = 0;
+    size_t my_check = 0;
+    int chanIndices[Channels];
+    getRandArray( chanIndices );
+    try {
+        for ( ;;i++ ) {
+            size_t j = remove( channels[ chanIndices[ i % Channels ] ] );
+            my_check = my_check ^ j;
+            runs++;
+        }
+    } catch ( channel_closed * e ) {}
+
+    // flush out rest of channels
+    for ( i; Channels ) {
+        try {
+            for ( ;; ) {
+                size_t j = remove( channels[ i ] );
+                my_check = my_check ^ j;
+                runs++;
+            }
+        } catchResume ( channel_closed * e ) {} // continue to remove until would block
+        catch ( channel_closed * e ) {} 
+    }
+
+    lock(o);
+    total_operations += runs;
+    cons_check = cons_check ^ my_check;
+    // sout | "Cons: " | runs;
+    unlock(o);
+}
+
+thread Producer {};
+
+void main(Producer & this) {
+    size_t i = 0;
+    size_t runs = 0;
+    size_t my_check = 0;
+    int chanIndices[Channels];
+    getRandArray( chanIndices );
+    try {
+        for ( ;;i++ ) {
+            insert( channels[ chanIndices[ i % Channels ] ], i );
+            my_check = my_check ^ i;
+            runs++;
+        }
+    } catch ( channel_closed * e ) {} 
+    lock(o);
+    total_operations += runs;
+    prod_check = prod_check ^ my_check;
+    // sout | "Prods: " | runs;
+    unlock(o);
+}
+
+
+int main( int argc, char *argv[] ) {
+    switch( argc ) {
+      case 4:
+		if ( strcmp( argv[3], "d" ) != 0 ) {			// default ?
+			if ( atoi( argv[3] ) < 1 ) goto Usage;
+			ChannelSize = atoi( argv[3] );
+		} // if
+      case 3:
+		if ( strcmp( argv[2], "d" ) != 0 ) {			// default ?
+			if ( atoi( argv[2] ) < 1 ) goto Usage;
+			Channels = atoi( argv[2] );
+		} // if
+      case 2:
+		if ( strcmp( argv[1], "d" ) != 0 ) {			// default ?
+			if ( atoi( argv[1] ) < 1 ) goto Usage;
+			Processors = atoi( argv[1] );
+		} // if
+	  case 1:											// use defaults
+		break;
+	  default:
+	  Usage:
+		sout | "Usage: " | argv[0]
+             | " [ processors > 0 | d ]"
+             | " [ producers > 0 | d ]"
+             | " [ consumers > 0 | d ]"
+             | " [ channels > 0 | d ]";
+		exit( EXIT_FAILURE );
+    }
+    processor p[Processors - 1];
+    channels = aalloc( Channels );
+
+    // sout | "Processors: " | Processors | " Producers: " | Producers | " Consumers: " | Consumers | "Channels: " | Channels | " Channel Size: " | ChannelSize;
+
+    for ( i; Channels )
+        channels[i]{ ChannelSize };
+
+    sout | "start";
+    {   
+        Consumer c[Consumers];
+        {
+            Producer p[Producers];
+            sleep(10`s);
+            for ( i; Channels )
+                close( channels[i] );
+        }
+    }
+
+    adelete( channels );
+
+    if ( cons_check != prod_check )
+        sout | "CHECKSUM MISMATCH !!!";
+
+    // sout | total_operations;
+    // print_stats_now( *active_cluster(), CFA_STATS_READY_Q );
+
+    sout | "done";
+    return 0;
+}
Index: tests/concurrency/channels/contend.cfa
===================================================================
--- tests/concurrency/channels/contend.cfa	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
+++ tests/concurrency/channels/contend.cfa	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
@@ -0,0 +1,147 @@
+#include <locks.hfa>
+#include <fstream.hfa>
+#include <stdio.h>
+#include <channel.hfa>
+#include <thread.hfa>
+#include <time.hfa>
+#include <string.h>
+
+owner_lock o;
+
+size_t total_operations = 0;
+
+typedef channel( size_t ) Channel;
+
+Channel * channels;
+
+size_t cons_check = 0, prod_check = 0;
+
+thread Consumer {
+    size_t i;
+};
+static inline void ?{}( Consumer & c, size_t i, cluster & clu ) {
+    ((thread &)c){ clu };
+    c.i = i; 
+}
+void main(Consumer & this) {
+    size_t runs = 0;
+    size_t my_check = 0;
+    try {
+        for ( ;; ) {
+            size_t j = remove( channels[ this.i ] );
+            my_check = my_check ^ j;
+            runs++;
+        }
+    } catchResume ( channel_closed * e ) {} // continue to remove until would block
+    catch ( channel_closed * e ) {} 
+    lock(o);
+    total_operations += runs;
+    cons_check = cons_check ^ my_check;
+    // sout | "C: " | runs;
+    unlock(o);
+}
+
+thread Producer {
+    size_t i;
+};
+static inline void ?{}( Producer & p, size_t i, cluster & clu ) {
+    ((thread &)p){ clu };
+    p.i = i;
+}
+void main(Producer & this) {
+    size_t runs = 0;
+    size_t my_check = 0;
+    try {
+        for ( ;; ) {
+            insert( channels[ this.i  ], (size_t)runs );
+            my_check = my_check ^ ((size_t)runs);
+            runs++;
+        }
+    } catch ( channel_closed * e ) {} 
+    lock(o);
+    total_operations += runs;
+    prod_check = prod_check ^ my_check;
+    // sout | "P: " | runs;
+    unlock(o);
+}
+
+static inline int test( size_t Processors, size_t Channels, size_t Producers, size_t Consumers, size_t ChannelSize ) {
+    size_t Clusters = Channels;
+    // create a cluster
+    cluster clus[Clusters];
+    processor * proc[Processors];
+    for ( i; Processors ) {
+        (*(proc[i] = malloc())){clus[i % Clusters]};
+    }
+
+    channels = aalloc( Channels );
+
+    // sout | "Processors: " | Processors | " ProdsPerChan: " | Producers | " ConsPerChan: " | Consumers | "Channels: " | Channels | " Channel Size: " | ChannelSize;
+    
+    for ( i; Channels ) {
+        channels[i]{ ChannelSize };
+    }
+
+    sout | "start";
+    Consumer * c[Consumers * Channels];
+    Producer * p[Producers * Channels];
+
+    for ( j; Channels ) {
+        for ( i; Producers ) {
+            (*(p[i] = malloc())){ j, clus[j % Clusters] };
+        }
+
+        for ( i; Consumers ) {
+            (*(c[i] = malloc())){ j, clus[j % Clusters] };
+        }
+    }
+
+    sleep(10`s);
+
+    for ( i; Channels )
+        close( channels[i] );
+
+    for ( i; Producers * Channels ) {
+        delete(p[i]);
+    }
+    for ( i; Consumers * Channels ) {
+        delete(c[i]);
+    }
+
+    adelete( channels );
+    // sout | total_operations;
+    if ( cons_check != prod_check )
+        sout | "CHECKSUM MISMATCH !!!";
+    // print_stats_now( *active_cluster(), CFA_STATS_READY_Q);
+
+    for ( i; Processors ) {
+        delete(proc[i]);
+    }
+    sout | "done";
+    return 0;
+}
+
+int main( int argc, char * argv[] ) {
+    size_t Processors = 1, Channels = 1, Producers = 4, Consumers = 4, ChannelSize = 128;
+    switch ( argc ) {
+	  case 3:
+		if ( strcmp( argv[2], "d" ) != 0 ) {			// default ?
+			ChannelSize = atoi( argv[2] );
+		} // if
+	  case 2:
+		if ( strcmp( argv[1], "d" ) != 0 ) {			// default ?
+			Processors = atoi( argv[1] );
+			if ( Processors < 1 ) goto Usage;
+		} // if
+	  case 1:											// use defaults
+		break;
+	  default:
+	  Usage:
+		sout | "Usage: " | argv[0]
+             | " [ processors (> 0) | 'd' (default " | Processors
+			 | ") ] [ channel size (>= 0) | 'd' (default " | ChannelSize
+			 | ") ]" ;
+		exit( EXIT_FAILURE );
+	} // switch
+    test(Processors, Channels, Producers, Consumers, ChannelSize);
+}
Index: tests/concurrency/channels/daisy_chain.cfa
===================================================================
--- tests/concurrency/channels/daisy_chain.cfa	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
+++ tests/concurrency/channels/daisy_chain.cfa	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
@@ -0,0 +1,74 @@
+#include <locks.hfa>
+#include <fstream.hfa>
+#include <stdio.h>
+#include <channel.hfa>
+#include <thread.hfa>
+#include <time.hfa>
+#include <string.h>
+
+size_t total_operations = 0;
+size_t Processors = 1, Tasks = 4;
+
+owner_lock o;
+
+typedef channel( int ) Channel;
+
+Channel * chain;
+
+thread Task {};
+void main(Task & this) {
+    size_t runs = 0;
+    try{
+        for ( ;; ) {
+            remove( *chain );
+            insert( *chain, 0 );
+            runs++;
+        }
+    } catch ( channel_closed * e ) {}
+    lock( o );
+    total_operations += runs;
+    unlock( o );
+}
+
+
+int main( int argc, char * argv[] ) {
+    switch ( argc ) {
+	  case 3:
+		if ( strcmp( argv[2], "d" ) != 0 ) {			// default ?
+			Tasks = atoi( argv[2] );
+            if ( Tasks < 1 ) goto Usage;
+		} // if
+	  case 2:
+		if ( strcmp( argv[1], "d" ) != 0 ) {			// default ?
+			Processors = atoi( argv[1] );
+			if ( Processors < 1 ) goto Usage;
+		} // if
+	  case 1:											// use defaults
+		break;
+	  default:
+	  Usage:
+		sout | "Usage: " | argv[0]
+             | " [ processors (> 0) | 'd' (default " | Processors
+			 | ") ] [ channel size (>= 0) | 'd' (default " | Tasks
+			 | ") ]" ;
+		exit( EXIT_FAILURE );
+	} // switch
+    processor proc[Processors - 1];
+
+    sout | "start";
+    Channel chainChan{ 1 };
+
+    insert( chainChan, 0 );
+
+    chain = &chainChan;    
+    {
+        Task t[Tasks];
+        sleep(10`s);
+        close( chainChan );
+    }
+    
+    // sout | total_operations;
+    sout | "done";
+
+    return 0;
+}
Index: tests/concurrency/channels/hot_potato.cfa
===================================================================
--- tests/concurrency/channels/hot_potato.cfa	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
+++ tests/concurrency/channels/hot_potato.cfa	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
@@ -0,0 +1,88 @@
+#include <locks.hfa>
+#include <fstream.hfa>
+#include <stdio.h>
+#include <channel.hfa>
+#include <thread.hfa>
+#include <time.hfa>
+#include <string.h>
+
+size_t total_operations = 0;
+size_t Processors = 1, Tasks = 4;
+
+owner_lock o;
+
+typedef channel( int ) Channel;
+
+Channel * chain;
+
+bool done = false;
+int id_counter = 0;
+thread Task { int id; int right; };
+static inline void ?{}( Task & this ) with(this) {
+    id = __atomic_fetch_add( &id_counter, 1, __ATOMIC_SEQ_CST );
+    right = (id + 1) % Tasks;
+}
+void main(Task & this) with(this) {
+    size_t runs = 0;
+    try {
+        for ( ;; ) {
+            if ( done ) break;
+            remove( chain[id] );
+            insert( chain[right], 0 );
+            runs++;
+        }
+    } catch ( channel_closed * e ) {}
+    lock( o );
+    total_operations += runs;
+    unlock( o );
+}
+
+
+int main( int argc, char * argv[] ) {
+    switch ( argc ) {
+	  case 3:
+		if ( strcmp( argv[2], "d" ) != 0 ) {			// default ?
+			Tasks = atoi( argv[2] );
+            if ( Tasks < 1 ) goto Usage;
+		} // if
+	  case 2:
+		if ( strcmp( argv[1], "d" ) != 0 ) {			// default ?
+			Processors = atoi( argv[1] );
+			if ( Processors < 1 ) goto Usage;
+		} // if
+	  case 1:											// use defaults
+		break;
+	  default:
+	  Usage:
+		sout | "Usage: " | argv[0]
+             | " [ processors (> 0) | 'd' (default " | Processors
+			 | ") ] [ channel size (>= 0) | 'd' (default " | Tasks
+			 | ") ]" ;
+		exit( EXIT_FAILURE );
+	} // switch
+    processor proc[Processors - 1];
+
+    sout | "start";
+
+    chain = aalloc( Tasks );
+    for ( i; Tasks ) {
+        chain[i]{ 1 };
+    }
+
+    insert( chain[0], 0 );
+    {
+        Task t[Tasks];
+        sleep(10`s);
+        done = true;
+        for ( j; Tasks )
+            close( chain[j] );
+    }
+    
+    // sout | total_operations;
+
+    sout | "done";
+
+    adelete(chain);
+
+    return 0;
+}
Index: tests/concurrency/channels/parallel_harness.hfa
===================================================================
--- tests/concurrency/channels/parallel_harness.hfa	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
+++ tests/concurrency/channels/parallel_harness.hfa	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
@@ -0,0 +1,184 @@
+#include <locks.hfa>
+#include <fstream.hfa>
+#include <stdio.h>
+#include <channel.hfa>
+#include <thread.hfa>
+#include <time.hfa>
+
+// user defines this
+// #define BIG 1
+
+owner_lock o;
+
+unsigned long long total_operations = 0;
+
+struct bigObject {
+    size_t a;
+    size_t b;
+    size_t c;
+    size_t d;
+    size_t e;
+    size_t f;
+    size_t g;
+    size_t h;
+};
+
+void ?{}( bigObject & this, size_t i ) with(this) { a = i; b = i; c = i; d = i; e = i; f = i; g = i; h = i; }
+void ?{}( bigObject & this ) { this{0}; }
+
+#ifdef BIG
+typedef channel( bigObject ) Channel;
+#else
+typedef channel( size_t ) Channel;
+#endif
+
+Channel * channels;
+
+volatile bool cons_done = false, prod_done = false;
+volatile int cons_done_count = 0;
+size_t cons_check = 0, prod_check = 0;
+
+thread Consumer {
+    size_t i;
+};
+static inline void ?{}( Consumer & c, size_t i, cluster & clu ) {
+    ((thread &)c){ clu };
+    c.i = i; 
+}
+void main(Consumer & this) {
+    unsigned long long runs = 0;
+    size_t my_check = 0;
+    for ( ;; ) {
+        if ( cons_done ) break;
+        #ifdef BIG
+        bigObject j = remove( channels[ this.i ] );
+        my_check = my_check ^ (j.a + j.b + j.c + j.d + j.d + j.e + j.f + j.g + j.h);
+        #else
+        size_t j = remove( channels[ this.i ] );
+        my_check = my_check ^ j;
+        #endif
+        
+        if ( !prod_done ) runs++;
+    }
+    lock(o);
+    total_operations += runs;
+    cons_done_count++;
+    cons_check = cons_check ^ my_check;
+    // sout | "C: " | runs;
+    unlock(o);
+}
+
+thread Producer {
+    size_t i;
+};
+static inline void ?{}( Producer & p, size_t i, cluster & clu ) {
+    ((thread &)p){ clu };
+    p.i = i;
+}
+void main(Producer & this) {
+    unsigned long long runs = 0;
+    size_t my_check = 0;
+    for ( ;; ) {
+        if ( prod_done ) break;
+        #ifdef BIG
+        bigObject j{(size_t)runs};
+        insert( channels[ this.i ], j );
+        my_check = my_check ^ (j.a + j.b + j.c + j.d + j.d + j.e + j.f + j.g + j.h);
+        #else
+        insert( channels[ this.i ], (size_t)runs );
+        my_check = my_check ^ ((size_t)runs);
+        #endif
+        runs++;
+    }
+    lock(o);
+    total_operations += runs;
+    prod_check = prod_check ^ my_check;
+    // sout | "P: " | runs;
+    unlock(o);
+}
+
+
+int test( size_t Processors, size_t Channels, size_t Producers, size_t Consumers, size_t ChannelSize ) {
+    size_t Clusters = Processors;
+    // create a cluster
+    cluster clus[Clusters];
+    processor * proc[Processors];
+    for ( i; Processors ) {
+        (*(proc[i] = alloc())){clus[i % Clusters]};
+    }
+
+    channels = aalloc( Channels );
+
+    // sout | "Processors: " | Processors | " ProdsPerChan: " | Producers | " ConsPerChan: " | Consumers | "Channels: " | Channels | " Channel Size: " | ChannelSize;
+    
+    for ( i; Channels ) {
+        channels[i]{ ChannelSize };
+    }
+
+    sout | "start";
+    Consumer * c[Consumers * Channels];
+    Producer * p[Producers * Channels];
+
+    for ( i; Consumers * Channels ) {
+        (*(c[i] = alloc())){ i % Channels, clus[i % Clusters] };
+    }
+
+    for ( i; Producers * Channels ) {
+        (*(p[i] = alloc())){ i % Channels, clus[i % Clusters] };
+    }
+
+    sleep(10`s);
+    prod_done = true;
+
+    for ( i; Producers * Channels ) {
+        delete(p[i]);
+    }
+
+    sout | "prods";
+    cons_done = true;
+    while( cons_done_count != Consumers * Channels ) {
+        for ( i; Channels ) {
+            if ( has_waiters( channels[i] ) ){
+                #ifdef BIG
+                bigObject b{0};
+                insert( channels[i], b );
+                #else
+                insert( channels[i], 0 );
+                #endif
+            }
+        }
+        
+    }
+
+    sout | "cons";
+    for ( i; Consumers * Channels ) {
+        delete(c[i]);
+    }
+
+    sout | "flush";
+    for ( i; Channels ) {
+        for ( ;; ) {
+            if ( get_count( channels[i] ) > 0 ) {
+                #ifdef BIG
+                bigObject j = remove( channels[ i ] );
+                cons_check = cons_check ^ (j.a + j.b + j.c + j.d + j.d + j.e + j.f + j.g + j.h);
+                #else
+                size_t j = remove( channels[ i ] );
+                cons_check = cons_check ^ j;
+                #endif
+            } else break;
+        }
+    }
+
+    adelete( channels );
+    // sout | "total channel ops: " | total_operations;
+    if ( cons_check != prod_check )
+        sout | "CHECKSUM MISMATCH !!!";
+    // print_stats_now( *active_cluster(), CFA_STATS_READY_Q);
+
+    for ( i; Processors ) {
+        delete(proc[i]);
+    }
+    sout | "done";
+    return 0;
+}
Index: tests/concurrency/channels/ping_pong.cfa
===================================================================
--- tests/concurrency/channels/ping_pong.cfa	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
+++ tests/concurrency/channels/ping_pong.cfa	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
@@ -0,0 +1,64 @@
+#include <locks.hfa>
+#include <fstream.hfa>
+#include <stdio.h>
+#include <channel.hfa>
+#include <thread.hfa>
+#include <time.hfa>
+#include <string.h>
+
+typedef channel( int ) Channel;
+
+Channel * ping;
+Channel * pong;
+
+bool done = false;
+size_t total_operations = 0;
+
+thread Pong {};
+void main(Pong & this) {
+    try {
+        for ( ;; ) {
+            if ( done ) break;
+            insert( *ping, 0 );
+            remove( *pong );
+        }
+    } catch ( channel_closed * e ) {} 
+}
+
+thread Ping {};
+void main(Ping & this) {
+    try {
+        for ( ;; ) {
+            if ( done ) break;
+            remove( *ping );
+            insert( *pong, 1 );
+            total_operations++;
+        }
+    } catch ( channel_closed * e ) {} 
+}
+
+
+int main( int argc, char * argv[] ) {
+    sout | "start";
+    processor proc[1];
+
+    Channel pingChan{ 1 };
+    Channel pongChan{ 1 };
+
+    ping = &pingChan;
+    pong = &pongChan;
+    
+    {
+        Ping pi;
+        Pong po;
+        sleep(10`s);
+        done = true;
+        close( *pong );
+        close( *ping );
+    }
+
+    // sout | total_operations;
+    
+    sout | "done";
+    return 0;
+}
Index: tests/concurrency/channels/pub_sub.cfa
===================================================================
--- tests/concurrency/channels/pub_sub.cfa	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
+++ tests/concurrency/channels/pub_sub.cfa	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
@@ -0,0 +1,155 @@
+#include <locks.hfa>
+#include <fstream.hfa>
+#include <stdio.h>
+#include <channel.hfa>
+#include <thread.hfa>
+#include <time.hfa>
+#include <string.h>
+#include <mutex_stmt.hfa>
+
+size_t total_operations = 0;
+size_t Processors = 1, Tasks = 4;
+
+typedef channel( size_t ) Channel;
+
+channel( int ) * barWait;
+channel( int ) * entryWait;
+int BarrierSize = 4;
+static inline void closeBarrier() {
+    close(*entryWait);
+    close(*barWait);
+}
+
+static inline void initBarrier() {
+    barWait = malloc();
+    entryWait = malloc();
+    (*barWait){ BarrierSize };
+    (*entryWait){ BarrierSize };
+    for ( j; BarrierSize )
+        insert( *entryWait, j );
+}
+
+static inline void deleteBarrier() {
+    delete(barWait);
+    delete(entryWait);
+}
+
+static inline void barrier() {
+    int ticket = remove( *entryWait );
+    if ( ticket == BarrierSize - 1 ) {
+		for ( j; BarrierSize - 1 )
+            insert( *barWait, j );
+        return;
+	}
+    ticket = remove( *barWait );
+
+	// last one out
+	if ( BarrierSize == 1 || ticket == BarrierSize - 2 ) {
+		for ( j; BarrierSize )
+            insert( *entryWait, j );
+	}
+}
+
+Channel * chans;
+owner_lock o;
+
+thread Task { size_t id; };
+static inline void ?{}( Task & p, size_t i, cluster & clu ) {
+    ((thread &)p){ clu };
+    p.id = i;
+}
+void main(Task & this) with(this) {
+    size_t runs = 0;
+    try {
+        for ( ;; ) {
+            // publish
+            for ( i; Tasks ) {
+                insert(chans[id], i);
+            }
+
+            // subscribe
+            for ( i; Tasks ) {
+                remove( chans[i] );
+            }
+            barrier();
+            runs++;
+        }
+    } catch ( channel_closed * e ) { }
+    lock(o);
+    total_operations += runs;
+    // sout | runs;
+    unlock(o);
+}
+
+
+int main( int argc, char * argv[] ) {
+    switch ( argc ) {
+	  case 3:
+		if ( strcmp( argv[2], "d" ) != 0 ) {			// default ?
+			Tasks = atoi( argv[2] );
+            if ( Tasks < 1 ) goto Usage;
+		} // if
+	  case 2:
+		if ( strcmp( argv[1], "d" ) != 0 ) {			// default ?
+			Processors = atoi( argv[1] );
+			if ( Processors < 1 ) goto Usage;
+		} // if
+	  case 1:											// use defaults
+		break;
+	  default:
+	  Usage:
+		sout | "Usage: " | argv[0]
+             | " [ processors (> 0) | 'd' (default " | Processors
+			 | ") ] [ Tasks (> 0) | 'd' (default " | Tasks
+			 | ") ]" ;
+		exit( EXIT_FAILURE );
+	} // switch
+    BarrierSize = Tasks;
+
+    size_t Clusters = 1;
+    // create a cluster
+    cluster clus[Clusters];
+    processor * proc[Processors];
+
+    // setup processors
+    for ( i; Processors )
+        (*(proc[i] = malloc())){clus[i % Clusters]};
+
+    // setup pub/sub chans
+    chans = aalloc( Tasks );
+    for ( i; Tasks )
+        chans[i]{ Tasks };
+
+    // setup barrier
+    initBarrier();
+
+    // sout | "Processors: " | Processors | " ProdsPerChan: " | Producers | " ConsPerChan: " | Consumers | "Channels: " | Channels | " Channel Size: " | ChannelSize;
+
+    sout | "start";
+    Task * t[Tasks];
+
+    // create tasks
+    for ( i; Tasks )
+        (*(t[i] = malloc())){ i, clus[i % Clusters] };
+
+    sleep(10`s);
+
+    closeBarrier();
+    for ( i; Tasks )
+        close( chans[i] );
+
+    for ( i; Tasks ) {
+        delete(t[i]);
+    }
+
+    deleteBarrier();
+    
+    // sout | total_operations;
+
+    for ( i; Processors ) {
+        delete(proc[i]);
+    }
+    adelete( chans );
+    sout | "done";
+    return 0;
+}
Index: tests/concurrency/channels/zero_size.cfa
===================================================================
--- tests/concurrency/channels/zero_size.cfa	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
+++ tests/concurrency/channels/zero_size.cfa	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
@@ -0,0 +1,7 @@
+#include "parallel_harness.hfa"
+
+size_t Processors = 10, Channels = 1, Producers = 10, Consumers = 10, ChannelSize = 0;
+
+int main() {
+    test(Processors, Channels, Producers, Consumers, ChannelSize);
+}
Index: tests/concurrency/clib.c
===================================================================
--- tests/concurrency/clib.c	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
+++ tests/concurrency/clib.c	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
@@ -0,0 +1,85 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <clib/cfathread.h>
+#include <bits/defs.hfa>
+
+extern "C" {
+void _exit(int status);
+}
+
+_Thread_local struct drand48_data buffer = { 0 };
+int myrand() {
+	long int result;
+	lrand48_r(&buffer, &result);
+	return result;
+}
+
+
+enum Constants { blocked_size = 20 };
+cfathread_t volatile blocked[blocked_size];
+
+void * Worker( void * ) {
+	for(int i = 0; i < 1000; i++) {
+		int idx = myrand() % blocked_size;
+		if(blocked[idx]) {
+			cfathread_t thrd = __atomic_exchange_n(&blocked[idx], NULL, __ATOMIC_SEQ_CST);
+			cfathread_unpark( thrd );
+		} else {
+			cfathread_t thrd = __atomic_exchange_n(&blocked[idx], cfathread_self(), __ATOMIC_SEQ_CST);
+			cfathread_unpark( thrd );
+			cfathread_park();
+		}
+	}
+	printf("Done\n");
+	return NULL;
+}
+
+volatile bool stop;
+void * Unparker( void * ) {
+	while(!stop) {
+		int idx = myrand() % blocked_size;
+		cfathread_t thrd = __atomic_exchange_n(&blocked[idx], NULL, __ATOMIC_SEQ_CST);
+		cfathread_unpark( thrd );
+		int r = myrand() % 20;
+		for( int i = 0; i < r; i++ ) {
+			cfathread_yield();
+		}
+	}
+	printf("Done Unparker\n");
+	return NULL;
+}
+
+
+int main() {
+	stop = false;
+	for(int i = 0; i < blocked_size; i++) {
+		blocked[i] = NULL;
+	}
+
+	cfathread_cluster_t cl = cfathread_cluster_self();
+
+	cfathread_cluster_add_worker( cl, NULL, NULL, NULL );
+	cfathread_cluster_add_worker( cl, NULL, NULL, NULL );
+	cfathread_cluster_add_worker( cl, NULL, NULL, NULL );
+
+	cfathread_attr_t attr;
+	cfathread_attr_init(&attr);
+	cfathread_attr_setcluster(&attr, cl);
+
+	cfathread_t u;
+	cfathread_create( &u, &attr, Unparker, NULL );
+	{
+		cfathread_t t[20];
+		for(int i = 0; i < 20; i++) {
+			cfathread_create( &t[i], &attr, Worker, NULL );
+		}
+		for(int i = 0; i < 20; i++) {
+			cfathread_join( t[i], NULL );
+		}
+	}
+	stop = true;
+	cfathread_join(u, NULL);
+	cfathread_attr_destroy(&attr);
+	fflush(stdout);
+	_exit(0);
+}
Index: tests/concurrency/clib_tls.c
===================================================================
--- tests/concurrency/clib_tls.c	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
+++ tests/concurrency/clib_tls.c	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
@@ -0,0 +1,58 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <clib/cfathread.h>
+#include <bits/defs.hfa>
+#include <time_t.hfa>
+
+extern "C" {
+void _exit(int status);
+}
+
+Duration default_preemption(){
+	return 0;
+}
+
+
+__thread int checkval = 0xBAADF00D;
+
+void init(void * ) {
+	printf("Local Init\n");
+	checkval = 0xFEEDFACE;
+}
+
+void * checker( void * ) {
+	for(int i = 0; i < 50; i++) {
+		if(checkval != 0xFeedFace) {
+			printf("Bad Food!\n");
+		}
+		cfathread_yield();
+	}
+	printf("Done\n");
+	return NULL;
+}
+
+int main() {
+	init(NULL);
+	cfathread_cluster_t cl = cfathread_cluster_self();
+
+	cfathread_cluster_add_worker( cl, NULL, init, NULL );
+	cfathread_cluster_add_worker( cl, NULL, init, NULL );
+	cfathread_cluster_add_worker( cl, NULL, init, NULL );
+
+	cfathread_attr_t attr;
+	cfathread_attr_init(&attr);
+	cfathread_attr_setcluster(&attr, cl);
+	{
+		printf("Starting Checkers\n");
+		cfathread_t t[7];
+		for(int i = 0; i < 7; i++) {
+			cfathread_create( &t[i], &attr, checker, NULL );
+		}
+		for(int i = 0; i < 7; i++) {
+			cfathread_join( t[i], NULL );
+		}
+	}
+	cfathread_attr_destroy(&attr);
+	fflush(stdout);
+	_exit(0);
+}
Index: tests/concurrency/cluster.cfa
===================================================================
--- tests/concurrency/cluster.cfa	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
+++ tests/concurrency/cluster.cfa	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
@@ -0,0 +1,35 @@
+#include <kernel.hfa>
+#include <thread.hfa>
+
+static cluster * the_cluster;
+
+thread MyThread {};
+void ?{}( MyThread & this ) {
+	((thread&)this){ *the_cluster };
+}
+
+void main( MyThread & this ) {
+	for(50) {
+		yield();
+	}
+}
+
+struct MyProc {
+	processor self;
+};
+
+void ?{}( MyProc & this ) {
+	(this.self){ *the_cluster };
+}
+
+int main() {
+	cluster cl;
+	the_cluster = &cl;
+	{
+		MyProc procs[4];
+		{
+			MyThread threads[17];
+		}
+	}
+	printf( "done\n" );				// non-empty .expect file
+}
Index: tests/concurrency/coroutineYield.cfa
===================================================================
--- tests/concurrency/coroutineYield.cfa	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
+++ tests/concurrency/coroutineYield.cfa	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
@@ -0,0 +1,53 @@
+#include <fstream.hfa>
+#include <kernel.hfa>
+#include <stdlib.hfa>
+#include <thread.hfa>
+#include <time.hfa>
+
+#define __kick_rate 150000ul
+#include "long_tests.hfa"
+
+#ifndef PREEMPTION_RATE
+#define PREEMPTION_RATE 10`ms
+#endif
+
+Duration default_preemption() {
+	return PREEMPTION_RATE;
+}
+
+#ifdef TEST_LONG
+static const unsigned long N = 600_000ul;
+#else
+static const unsigned long N = 1_000ul;
+#endif
+
+coroutine Coroutine {};
+
+void main(Coroutine& this) {
+	while(true) {
+		#if !defined(TEST_FOREVER)
+			sout | "Coroutine 1";
+		#endif
+		yield();
+		#if !defined(TEST_FOREVER)
+			sout | "Coroutine 2";
+		#endif
+		suspend;
+	}
+}
+
+
+Coroutine c;
+int main(int argc, char* argv[]) {
+	for(int i = 0; TEST(i < N); i++) {
+		#if !defined(TEST_FOREVER)
+			sout | "Thread 1";
+		#endif
+		resume(c);
+		#if !defined(TEST_FOREVER)
+			sout | "Thread 2";
+		#endif
+		yield();
+		KICK_WATCHDOG;
+	}
+}
Index: tests/concurrency/ctor-check.cfa
===================================================================
--- tests/concurrency/ctor-check.cfa	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
+++ tests/concurrency/ctor-check.cfa	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
@@ -0,0 +1,15 @@
+#include <monitor.hfa>
+
+monitor Empty {};
+
+struct Test {};
+
+// Should work:
+void ?{}(Test & this, Empty & mutex mon) {}
+
+// Should not work:
+void ?{}(Empty & mutex this) {}
+
+int main(void) {
+	printf("done\n");
+}
Index: tests/concurrency/examples/.expect/boundedBufferEXT.txt
===================================================================
--- tests/concurrency/examples/.expect/boundedBufferEXT.txt	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
+++ tests/concurrency/examples/.expect/boundedBufferEXT.txt	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
@@ -0,0 +1,1 @@
+total:400000
Index: tests/concurrency/examples/.expect/boundedBufferINT.txt
===================================================================
--- tests/concurrency/examples/.expect/boundedBufferINT.txt	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
+++ tests/concurrency/examples/.expect/boundedBufferINT.txt	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
@@ -0,0 +1,1 @@
+total:400000
Index: tests/concurrency/examples/.expect/datingService.txt
===================================================================
--- tests/concurrency/examples/.expect/datingService.txt	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
+++ tests/concurrency/examples/.expect/datingService.txt	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
@@ -0,0 +1,1 @@
+done
Index: tests/concurrency/examples/.expect/gortn.txt
===================================================================
--- tests/concurrency/examples/.expect/gortn.txt	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
+++ tests/concurrency/examples/.expect/gortn.txt	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
@@ -0,0 +1,3 @@
+0
+2.5
+1 2
Index: tests/concurrency/examples/.expect/matrixSum.txt
===================================================================
--- tests/concurrency/examples/.expect/matrixSum.txt	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
+++ tests/concurrency/examples/.expect/matrixSum.txt	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
@@ -0,0 +1,1 @@
+10000
Index: tests/concurrency/examples/.expect/quickSort.txt
===================================================================
--- tests/concurrency/examples/.expect/quickSort.txt	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
+++ tests/concurrency/examples/.expect/quickSort.txt	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
@@ -0,0 +1,32 @@
+25 6 8 -5 99 100 101 7
+-5 6 7 8 25 99 100 101
+
+1 -3 5
+-3 1 5
+
+
+
+
+9 8 7 6 5 4 3 2 1 0
+0 1 2 3 4 5 6 7 8 9
+
+1 2 3 4 5
+1 2 3 4 5
+
+5 4 3 2 1
+1 2 3 4 5
+
+3 1 5 4 2
+1 2 3 4 5
+
+
+
+
+1 1 1 1 1
+1 1 1 1 1
+
+29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8
+  7 6 5 4 3 2 1 0
+0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
+  22 23 24 25 26 27 28 29
+
Index: tests/concurrency/examples/.in/quickSort.txt
===================================================================
--- tests/concurrency/examples/.in/quickSort.txt	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
+++ tests/concurrency/examples/.in/quickSort.txt	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
@@ -0,0 +1,10 @@
+8 25 6 8 -5 99 100 101 7
+3 1 -3 5
+0
+10 9 8 7 6 5 4 3 2 1 0
+5 1 2 3 4 5
+5 5 4 3 2 1
+5 3 1 5 4 2
+0
+5 1 1 1 1 1
+30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Index: tests/concurrency/examples/boundedBufferEXT.cfa
===================================================================
--- tests/concurrency/examples/boundedBufferEXT.cfa	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
+++ tests/concurrency/examples/boundedBufferEXT.cfa	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
@@ -0,0 +1,126 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2018 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+//
+// boundedBufferEXT.c --
+//
+// Author           : Peter A. Buhr
+// Created On       : Wed Apr 18 22:52:12 2018
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Thu Jan 16 22:36:34 2020
+// Update Count     : 15
+//
+
+#include <stdlib.hfa>									// random
+#include <fstream.hfa>
+#include <kernel.hfa>
+#include <thread.hfa>
+#include <unistd.h>										// getpid
+
+//Duration default_preemption() { return 0; }
+
+enum { BufferSize = 50 };
+
+forall( T ) {
+	monitor Buffer {
+		int front, back, count;
+		T elements[BufferSize];
+	}; // Buffer
+
+	void ?{}( Buffer(T) & buffer ) with( buffer ) { [front, back, count] = 0; }
+
+	int query( Buffer(T) & buffer ) { return buffer.count; } // read-only, no mutual exclusion
+
+	T remove( Buffer(T) & mutex buffer );				// forward
+
+	void insert( Buffer(T) & mutex buffer, T elem ) with( buffer ) {
+		if ( count == BufferSize ) waitfor( remove : buffer );
+		elements[back] = elem;
+		back = ( back + 1 ) % BufferSize;
+		count += 1;
+	} // insert
+
+	T remove( Buffer(T) & mutex buffer ) with( buffer ) {
+		if ( count == 0 ) waitfor( insert : buffer );
+		T elem = elements[front];
+		front = ( front + 1 ) % BufferSize;
+		count -= 1;
+		return elem;
+	} // remove
+}
+
+enum { Sentinel = -1 };
+
+thread Producer {
+	Buffer(int) & buffer;
+	unsigned int N;
+};
+void main( Producer & prod ) with( prod ) {
+	for ( i; 1 ~= N ) {
+		yield( random( 5 ) );
+		insert( buffer, 1 );
+	} // for
+}
+void ?{}( Producer & prod, Buffer(int) * buffer, int N ) {
+	&prod.buffer = buffer;
+	prod.N = N;
+}
+
+thread Consumer {
+	Buffer(int) & buffer;
+	int & sum;											// summation of producer values
+};
+void main( Consumer & cons ) with( cons ) {
+	sum = 0;
+	for () {
+		yield( random( 5 ) );
+		int item = remove( buffer );
+	  if ( item == Sentinel ) break;					// sentinel ?
+		sum += item;
+	} // for
+}
+void ?{}( Consumer & cons, Buffer(int) * buffer, int & sum ) {
+	&cons.buffer = buffer;
+	&cons.sum = &sum;
+}
+
+enum { Prods = 4, Cons = 5 };
+Producer * prods[Prods];
+Consumer * cons[Cons];
+
+int main() {
+	Buffer(int) buffer;
+	int sums[Cons];
+	int i;
+	processor p;
+
+	//srandom( getpid() );
+	srandom( 1003 );
+
+	for ( i; Cons ) {									// create consumers
+		cons[i] = new( &buffer, sums[i] );
+	} // for
+	for ( i; Prods ) {									// create producers
+		prods[i] = new( &buffer, 100000 );
+	} // for
+
+	for ( i; Prods ) {									// wait for producers to finish
+		delete( prods[i] );
+	} // for
+	for ( i; Cons ) {									// generate sentinal values to stop consumers
+		insert( buffer, Sentinel );
+	} // for
+	int sum = 0;
+	for ( i; Cons ) {									// wait for consumers to finish
+		delete( cons[i] );
+		sum += sums[i];
+	} // for
+	sout | "total:" | sum;
+}
+
+// Local Variables: //
+// tab-width: 4 //
+// compile-command: "cfa boundedBufferEXT.cfa" //
+// End: //
Index: tests/concurrency/examples/boundedBufferINT.cfa
===================================================================
--- tests/concurrency/examples/boundedBufferINT.cfa	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
+++ tests/concurrency/examples/boundedBufferINT.cfa	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
@@ -0,0 +1,126 @@
+//
+// 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.
+//
+// boundedBuffer.c --
+//
+// Author           : Peter A. Buhr
+// Created On       : Mon Oct 30 12:45:13 2017
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Fri Jun 21 08:20:46 2019
+// Update Count     : 90
+//
+
+#include <stdlib.hfa>									// random
+#include <fstream.hfa>
+#include <kernel.hfa>
+#include <thread.hfa>
+#include <unistd.h>										// getpid
+
+//Duration default_preemption() { return 0; }
+
+enum { BufferSize = 50 };
+
+forall( T ) {
+	monitor Buffer {
+		condition full, empty;
+		int front, back, count;
+		T elements[BufferSize];
+	}; // Buffer
+
+	void ?{}( Buffer(T) & buffer ) with( buffer ) { [front, back, count] = 0; }
+
+	int query( Buffer(T) & buffer ) { return buffer.count; } // read-only, no mutual exclusion
+
+	void insert( Buffer(T) & mutex buffer, T elem ) with( buffer ) {
+		if ( count == BufferSize ) wait( empty );
+		elements[back] = elem;
+		back = ( back + 1 ) % BufferSize;
+		count += 1;
+		signal( full );
+	} // insert
+
+	T remove( Buffer(T) & mutex buffer ) with( buffer ) {
+		if ( count == 0 ) wait( full );
+		T elem = elements[front];
+		front = ( front + 1 ) % BufferSize;
+		count -= 1;
+		signal( empty );
+		return elem;
+	} // remove
+}
+
+enum { Sentinel = -1 };
+
+thread Producer {
+	Buffer(int) & buffer;
+	unsigned int N;
+};
+void main( Producer & prod ) with( prod ) {
+	for ( i; 1 ~= N ) {
+		yield( random( 5 ) );
+		insert( buffer, 1 );
+	} // for
+}
+void ?{}( Producer & prod, Buffer(int) * buffer, int N ) {
+	&prod.buffer = buffer;
+	prod.N = N;
+}
+
+thread Consumer {
+	Buffer(int) & buffer;
+	int & sum;											// summation of producer values
+};
+void main( Consumer & cons ) with( cons ) {
+	sum = 0;
+	for () {
+		yield( random( 5 ) );
+		int item = remove( buffer );
+	  if ( item == Sentinel ) break;					// sentinel ?
+		sum += item;
+	} // for
+}
+void ?{}( Consumer & cons, Buffer(int) * buffer, int & sum ) {
+	&cons.buffer = buffer;
+	&cons.sum = &sum;
+}
+
+int main() {
+	Buffer(int) buffer;
+	enum { Prods = 4, Cons = 5 };
+	Producer * prods[Prods];
+	Consumer * cons[Cons];
+	int sums[Cons];
+	int i;
+	processor p;
+
+	//srandom( getpid() );
+	srandom( 1003 );
+
+	for ( i; Cons ) {									// create consumers
+		cons[i] = new( &buffer, sums[i] );
+	} // for
+	for ( i; Prods ) {									// create producers
+		prods[i] = new( &buffer, 100000 );
+	} // for
+
+	for ( i; Prods ) {									// wait for producers to finish
+		delete( prods[i] );
+	} // for
+	for ( i; Cons ) {									// generate sentinal values to stop consumers
+		insert( buffer, Sentinel );
+	} // for
+	int sum = 0;
+	for ( i; Cons ) {									// wait for consumers to finish
+		delete( cons[i] );
+		sum += sums[i];
+	} // for
+	sout | "total:" | sum;
+}
+
+// Local Variables: //
+// tab-width: 4 //
+// compile-command: "cfa boundedBufferINT.cfa" //
+// End: //
Index: tests/concurrency/examples/boundedBufferTHREAD.cfa
===================================================================
--- tests/concurrency/examples/boundedBufferTHREAD.cfa	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
+++ tests/concurrency/examples/boundedBufferTHREAD.cfa	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
@@ -0,0 +1,130 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2018 University of Waterloo
+// 
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+//
+// boundedBufferTHREAD.c --
+//
+// Author           : Peter A. Buhr
+// Created On       : Wed Apr 18 22:52:12 2018
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Thu Jan 16 23:09:43 2020
+// Update Count     : 25
+//
+
+#include <stdlib.hfa>									// random
+#include <fstream.hfa>
+#include <kernel.hfa>
+#include <thread.hfa>
+#include <unistd.h>										// getpid
+
+//Duration default_preemption() { return 0; }
+
+enum { BufferSize = 50 };
+
+//forall( otype T ) {
+	thread Buffer {
+		int front, back, count;
+		int elements[BufferSize];
+	}; // Buffer
+
+	void ?{}( Buffer & buffer ) with( buffer ) { [front, back, count] = 0; }
+
+	int query( Buffer & buffer ) { return buffer.count; } // read-only, no mutual exclusion
+
+	void insert( Buffer & mutex buffer, int elem ) with( buffer ) {
+		elements[back] = elem;
+	} // insert
+
+	int remove( Buffer & mutex buffer ) with( buffer ) {
+		return elements[front];
+	} // remove
+
+	void main( Buffer & buffer ) with( buffer ) {
+		for () {
+			waitfor( ^?{} : buffer ) {
+				break;
+			} or when ( count != 20 ) waitfor( insert : buffer ) {
+				back = (back + 1) % 20;
+				count += 1;
+			} or when ( count != 0 ) waitfor( remove : buffer ) {
+				front = (front + 1) % 20;
+				count -= 1;
+			} // waitfor
+		} // for
+	} // main
+//}
+
+enum { Sentinel = -1 };
+
+thread Producer {
+	Buffer & buffer;
+	unsigned int N;
+};
+void main( Producer & prod ) with( prod ) {
+	for ( i; 1 ~= N ) {
+		yield( random( 5 ) );
+		insert( buffer, 1 );
+	} // for
+}
+void ?{}( Producer & prod, Buffer * buffer, int N ) {
+	&prod.buffer = buffer;
+	prod.N = N;
+}
+
+thread Consumer {
+	Buffer & buffer;
+	int & sum;											// summation of producer values
+};
+void main( Consumer & cons ) with( cons ) {
+	sum = 0;
+	for () {
+		yield( random( 5 ) );
+		int item = remove( buffer );
+	  if ( item == Sentinel ) break;					// sentinel ?
+		sum += item;
+	} // for
+}
+void ?{}( Consumer & cons, Buffer * buffer, int & sum ) {
+	&cons.buffer = buffer;
+	&cons.sum = &sum;
+}
+
+int main() {
+	Buffer buffer;
+	enum { Prods = 4, Cons = 5 };
+	Producer * prods[Prods];
+	Consumer * cons[Cons];
+	int sums[Cons];
+	int i;
+	processor p;
+
+	//srandom( getpid() );
+	srandom( 1003 );
+
+	for ( i; Cons ) {									// create consumers
+		cons[i] = new( &buffer, sums[i] );
+	} // for
+	for ( i; Prods ) {									// create producers
+		prods[i] = new( &buffer, 100000 );
+	} // for
+
+	for ( i; Prods ) {									// wait for producers to finish
+		delete( prods[i] );
+	} // for
+	for ( i; Cons ) {									// generate sentinal values to stop consumers
+		insert( buffer, Sentinel );
+	} // for
+	int sum = 0;
+	for ( i; Cons ) {									// wait for consumers to finish
+		delete( cons[i] );
+		sum += sums[i];
+	} // for
+	sout | "total:" | sum;
+}
+
+// Local Variables: //
+// tab-width: 4 //
+// compile-command: "cfa boundedBufferTHREAD.cfa" //
+// End: //
Index: tests/concurrency/examples/datingService.cfa
===================================================================
--- tests/concurrency/examples/datingService.cfa	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
+++ tests/concurrency/examples/datingService.cfa	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
@@ -0,0 +1,117 @@
+//
+// 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.
+//
+// datingService.c --
+//
+// Author           : Peter A. Buhr
+// Created On       : Mon Oct 30 12:56:20 2017
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Sun Sep 27 15:42:25 2020
+// Update Count     : 40
+//
+
+#include <stdlib.hfa>									// random
+#include <fstream.hfa>
+#include <kernel.hfa>
+#include <thread.hfa>
+#include <unistd.h>										// getpid
+
+enum { CompCodes = 20 };								// number of compatibility codes
+
+monitor DatingService {
+	condition Girls[CompCodes], Boys[CompCodes];
+	unsigned int GirlPhoneNo, BoyPhoneNo;
+}; // DatingService
+
+unsigned int girl( DatingService & mutex ds, unsigned int PhoneNo, unsigned int ccode ) with( ds ) {
+	if ( is_empty( Boys[ccode] ) ) {					// no compatible boy ?
+		wait( Girls[ccode] );							// wait for boy
+		GirlPhoneNo = PhoneNo;							// make phone number available
+	} else {
+		GirlPhoneNo = PhoneNo;							// make phone number available
+		signal_block( Boys[ccode] );					// restart boy to set phone number
+	} // if
+	// sout | "Girl:" | PhoneNo | "is dating Boy at" | BoyPhoneNo | "with ccode" | ccode;
+	return BoyPhoneNo;
+} // DatingService girl
+
+unsigned int boy( DatingService & mutex ds, unsigned int PhoneNo, unsigned int ccode ) with( ds ) {
+	if ( is_empty( Girls[ccode] ) ) {					// no compatible girl ?
+		wait( Boys[ccode] );							// wait for girl
+		BoyPhoneNo = PhoneNo;							// make phone number available
+	} else {
+		BoyPhoneNo = PhoneNo;							// make phone number available
+		signal_block( Girls[ccode] );					// restart girl to set phone number
+	} // if
+	// sout | " Boy:" | PhoneNo | "is dating Girl" | GirlPhoneNo | "with ccode" | ccode;
+	return GirlPhoneNo;
+} // DatingService boy
+
+unsigned int girlck[CompCodes];
+unsigned int boyck[CompCodes];
+
+thread Girl {
+	DatingService & TheExchange;
+	unsigned int id, ccode;
+}; // Girl
+
+void main( Girl & g ) with( g ) {
+	yield( random( 100 ) );								// don't all start at the same time
+	unsigned int partner = girl( TheExchange, id, ccode );
+	girlck[id] = partner;
+} // Girl main
+
+void ?{}( Girl & g, DatingService * TheExchange, unsigned int id, unsigned int ccode ) {
+	&g.TheExchange = TheExchange;
+	g.id = id;
+	g.ccode = ccode;
+} // Girl ?{}
+
+thread Boy {
+	DatingService & TheExchange;
+	unsigned int id, ccode;
+}; // Boy
+
+void main( Boy & b ) with( b ) {
+	yield( random( 100 ) );								// don't all start at the same time
+	unsigned int partner = boy( TheExchange, id, ccode );
+	boyck[id] = partner;
+} // Boy main
+
+void ?{}( Boy & b, DatingService * TheExchange, unsigned int id, unsigned int ccode ) {
+	&b.TheExchange = TheExchange;
+	b.id = id;
+	b.ccode = ccode;
+} // Boy ?{}
+
+int main() {
+	DatingService TheExchange;
+	Girl * girls[CompCodes];
+	Boy  * boys[CompCodes];
+
+	srandom( /*getpid()*/ 103 );
+
+	for ( i; (unsigned int)CompCodes ) {
+		girls[i] = new( &TheExchange, i, i );			// TheExchange constructor needs unsigned int
+		boys[i]  = new( &TheExchange, i, CompCodes - ( i + 1 ) );
+	} // for
+
+	for ( i; CompCodes ) {
+		delete( boys[i] );
+		delete( girls[i] );
+	} // for
+
+	for ( i; CompCodes ) {
+		if ( girlck[ boyck[i] ] != boyck[ girlck[i] ] ) abort();
+	} // for
+
+	printf( "done\n" );									// non-empty .expect file
+} // main
+
+// Local Variables: //
+// tab-width: 4 //
+// compile-command: "cfa datingService.cfa" //
+// End: //
Index: tests/concurrency/examples/gortn.cfa
===================================================================
--- tests/concurrency/examples/gortn.cfa	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
+++ tests/concurrency/examples/gortn.cfa	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
@@ -0,0 +1,43 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2019 University of Waterloo
+// 
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+// 
+// gortn.cfa -- compare waitfor and go channels
+// 
+// Author           : Peter A. Buhr
+// Created On       : Wed Feb 20 08:02:37 2019
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Thu Jan 16 22:43:40 2020
+// Update Count     : 5
+// 
+
+#include <fstream.hfa>
+#include <thread.hfa>
+
+struct Msg { int i, j; };
+thread GoRtn { int i;  float f;  Msg m; };
+void ^?{}( GoRtn & mutex ) {}
+void mem1( GoRtn & mutex gortn, int i ) { gortn.i = i; }
+void mem2( GoRtn & mutex gortn, float f ) { gortn.f = f; }
+void mem3( GoRtn & mutex gortn, Msg m ) { gortn.m = m; }
+
+void main( GoRtn & gortn ) with( gortn ) {
+	for () {
+		waitfor( mem1 : gortn ) sout | i;
+		or waitfor( mem2 : gortn ) sout | f;
+		or waitfor( mem3 : gortn ) sout | m.i | m.j;
+		or waitfor( ^?{} : gortn ) break;
+	}
+}
+int main() {
+	GoRtn gortn;										// start thread
+	mem1( gortn, 0 );
+	mem2( gortn, 2.5 );
+	mem3( gortn, (Msg){ 1, 2} );
+} // wait for completion
+
+// Local Variables: //
+// tab-width: 4 //
+// End: //
Index: tests/concurrency/examples/matrixSum.cfa
===================================================================
--- tests/concurrency/examples/matrixSum.cfa	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
+++ tests/concurrency/examples/matrixSum.cfa	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
@@ -0,0 +1,61 @@
+//
+// 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.
+//
+// matrixSum.cfa --
+//
+// Author           : Peter A. Buhr
+// Created On       : Mon Oct  9 08:29:28 2017
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Wed Feb 20 08:37:53 2019
+// Update Count     : 16
+//
+
+#include <fstream.hfa>
+#include <kernel.hfa>
+#include <thread.hfa>
+
+thread Adder {
+	int * row, cols, & subtotal;						// communication
+};
+
+void ?{}( Adder & adder, int row[], int cols, int & subtotal ) {
+	adder.[ row, cols ] = [ row, cols ];				// expression disallowed in multi-member access
+	&adder.subtotal = &subtotal;
+}
+
+void main( Adder & adder ) with( adder ) {				// thread starts here
+	subtotal = 0;
+	for ( c; cols ) {
+		subtotal += row[c];
+	} // for
+}
+
+int main() {
+	/* const */ int rows = 10, cols = 1000;
+	int matrix[rows][cols], subtotals[rows], total = 0;
+	processor p;										// add kernel thread
+
+	for ( r; rows ) {
+		for ( c; cols ) {
+			matrix[r][c] = 1;
+		} // for
+	} // for
+	Adder * adders[rows];
+	for ( r; rows ) {									// start threads to sum rows
+		adders[r] = &(*malloc()){ matrix[r], cols, subtotals[r] };
+//		adders[r] = new( matrix[r], cols, &subtotals[r] );
+	} // for
+	for ( r; rows ) {									// wait for threads to finish
+		delete( adders[r] );
+		total += subtotals[r];							// total subtotals
+	} // for
+	sout | total;
+}
+
+// Local Variables: //
+// tab-width: 4 //
+// compile-command: "cfa matrixSum.cfa" //
+// End: //
Index: tests/concurrency/examples/multiSort.cfa
===================================================================
--- tests/concurrency/examples/multiSort.cfa	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
+++ tests/concurrency/examples/multiSort.cfa	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
@@ -0,0 +1,121 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2022 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+//
+// multiSort.c -- compute sort single array multiple times
+//			make sure sorting works, thread don't screw up
+//			and trampolines work on thread stacks
+//
+// Author           : Peter A. Buhr
+// Created On       : Tue 05 24 11:34:23 2022
+// Last Modified By :
+// Last Modified On :
+// Update Count     :
+//
+
+#include <barrier.hfa>
+#include <fstream.hfa>
+#include <math.trait.hfa>
+#include <stdlib.hfa>
+#include <thread.hfa>
+
+forall(T) {
+	struct MyVec2 {
+		T val1;
+		T val2;
+	};
+
+	forall(| Equality( T ))
+	int ?!=?( MyVec2(T) lhs, MyVec2(T) rhs ) { return lhs.val1 != rhs.val1 || lhs.val2 != rhs.val2; }
+
+	forall(| Relational(T)) {
+		static inline int ?<?( MyVec2(T) lhs, MyVec2(T) rhs ) {
+			if(lhs.val1 < rhs.val1) return true;
+			if(lhs.val1 > rhs.val1) return false;
+			if(lhs.val2 < rhs.val2) return true;
+			if(lhs.val2 > rhs.val2) return false;
+			return false;
+		}
+	}
+
+	forall(| { T random( void ); })
+	MyVec2(T) random( void ) {
+		MyVec2(T) r;
+		r.val1 = random();
+		r.val2 = random();
+		return r;
+	}
+}
+
+
+
+const unsigned nthreads = 7;
+const unsigned nvecs = 313;
+barrier bar = { nthreads + 1 };
+const MyVec2(long int) * original;
+
+thread Sorter {
+	MyVec2(long int) * copy;
+};
+
+void ^?{}( Sorter & mutex this ) {
+	free(this.copy);
+}
+
+// Make this a polymorphic call to prevent thunks from being hosted
+forall( T | Relational(T) | sized(MyVec2(T)) )
+void block_sort( MyVec2(T) * vals, size_t dim ) __attribute__((noinline)) {
+	MyVec2(T) dummy = vals[0];
+	block( bar );
+
+	qsort(vals, dim);
+}
+
+
+void main( Sorter & this ) {
+	this.copy = aalloc(nvecs);
+	for(i; nvecs) {
+		this.copy[i] = original[i];
+	}
+
+	block_sort(this.copy, nvecs);
+}
+
+int main() {
+	sout | "Generating";
+	MyVec2(long int) * local = aalloc( nvecs );
+	for(i; nvecs) {
+		local[i] = random();
+	}
+
+	original = local;
+
+	sout | "Launching";
+
+	processor p; {
+		Sorter sorters[nthreads];
+
+		block( bar );
+
+		sout | "Sorting";
+
+		qsort(local, nvecs);
+
+		sout | "Checking";
+
+		for(i; nthreads) {
+			const MyVec2(long int) * copy = join( sorters[i] ).copy;
+			for(j; nvecs) {
+				if(copy[j] != original[j]) {
+					sout | "Error at thread" | i | ", index" | j | ": data doesn't match!";
+				}
+			}
+		}
+	}
+
+	free(local);
+
+	sout | "Done";
+}
Index: tests/concurrency/examples/quickSort.cfa
===================================================================
--- tests/concurrency/examples/quickSort.cfa	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
+++ tests/concurrency/examples/quickSort.cfa	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
@@ -0,0 +1,189 @@
+//
+// 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 : Wed Feb 12 18:24:47 2020
+// Update Count     : 177
+//
+
+#include <fstream.hfa>
+#include <stdlib.hfa>
+#include <kernel.hfa>
+#include <thread.hfa>
+#include <string.h>										// strcmp
+
+thread Quicksort {
+	int * values;										// communication variables
+	int low, high, depth;
+};
+
+void ?{}( Quicksort & qs, int values[], int size, int depth ) {
+	qs.[values, low, high, depth] = [values, 0, size, depth];
+} // Quicksort
+
+void main( Quicksort & qs ) {							// thread starts here
+	// nested routines: information hiding
+
+	void ?{}( Quicksort & qs, int values[], int low, int high, int depth ) {
+		qs.values = values;  qs.low = low;  qs.high = high;  qs.depth = depth;
+	} // Quicksort
+
+	void sort( int values[], int low, int high, int depth ) {
+		int left, right;								// index to left/right-hand side of the values
+		int pivot;										// pivot value of values
+		int 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 lqs = { values, low, right, depth }; // concurrently sort lower half
+				Quicksort rqs = { values, left, high, depth }; // concurrently sort upper half
+				// Quicksort lqs = { values, low, right, depth }; // concurrently sort lower half
+				// sort( values, left, high, depth );		// concurrently sort upper 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
+
+
+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;
+			int * values = alloc( size );				// values to be sorted, too large to put on stack
+			for ( counter; size ) {						// 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 QS = { values, size - 1, 0 }; // sort values
+			} // wait until sort tasks terminate
+			for ( counter; size ) {						// 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
+
+		int * values = alloc( size );					// values to be sorted, too large to put on stack
+		for ( counter; size ) {							// generate unsorted numbers
+			values[counter] = size - counter;			// descending values
+		} // for
+		for ( i; 200 ) {								// random shuffle a few values
+			swap( values[rand() % size], values[rand() % size] );
+		} // for
+		{
+			Quicksort QS = { values, size - 1, depth }; // sort values
+		} // wait until sort tasks terminate
+
+		// for ( counter; size - 1 ) {				// check sorting
+		// 	if ( values[counter] > values[counter + 1] ) abort();
+		// } // for
+
+		delete( values );
+	} // if
+} // main
+
+// for depth in 0 1 2 3 4 5 ; do echo "sort 500000000 values with ${depth} depth" ; time -f "%Uu %Ss %E %Mkb" a.out -t 500000000 ${depth} ; done
+
+// Local Variables: //
+// tab-width: 4 //
+// compile-command: "cfa quickSort.cfa" //
+// End: //
Index: tests/concurrency/examples/quickSort.generic.cfa
===================================================================
--- tests/concurrency/examples/quickSort.generic.cfa	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
+++ tests/concurrency/examples/quickSort.generic.cfa	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
@@ -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 Jun 21 08:28:20 2019
+// Update Count     : 149
+//
+
+#include <fstream.hfa>
+#include <stdlib.hfa>
+#include <kernel.hfa>
+#include <thread.hfa>
+#include <string.h>										// strcmp
+
+forall( 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 ( counter; size ) {						// 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 ( counter; size ) {						// 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 ( counter; size ) {							// 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 ( counter; size - 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/concurrency/futures/.expect/abandon.txt
===================================================================
--- tests/concurrency/futures/.expect/abandon.txt	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
+++ tests/concurrency/futures/.expect/abandon.txt	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
@@ -0,0 +1,2 @@
+start
+done
Index: tests/concurrency/futures/.expect/basic.txt
===================================================================
--- tests/concurrency/futures/.expect/basic.txt	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
+++ tests/concurrency/futures/.expect/basic.txt	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
@@ -0,0 +1,2 @@
+start
+done
Index: tests/concurrency/futures/.expect/multi.txt
===================================================================
--- tests/concurrency/futures/.expect/multi.txt	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
+++ tests/concurrency/futures/.expect/multi.txt	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
@@ -0,0 +1,2 @@
+start
+done
Index: tests/concurrency/futures/.expect/select_future.txt
===================================================================
--- tests/concurrency/futures/.expect/select_future.txt	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
+++ tests/concurrency/futures/.expect/select_future.txt	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
@@ -0,0 +1,6 @@
+start 1: blocking path future test
+done 1
+start 2: nonblocking path future test
+done 2
+start 3: try_get future test
+done 3
Index: tests/concurrency/futures/.expect/typed.txt
===================================================================
--- tests/concurrency/futures/.expect/typed.txt	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
+++ tests/concurrency/futures/.expect/typed.txt	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
@@ -0,0 +1,2 @@
+start
+done
Index: tests/concurrency/futures/.expect/wait_any.txt
===================================================================
--- tests/concurrency/futures/.expect/wait_any.txt	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
+++ tests/concurrency/futures/.expect/wait_any.txt	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
@@ -0,0 +1,2 @@
+start
+done
Index: tests/concurrency/futures/abandon.cfa
===================================================================
--- tests/concurrency/futures/abandon.cfa	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
+++ tests/concurrency/futures/abandon.cfa	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
@@ -0,0 +1,102 @@
+#include <thread.hfa>
+
+enum {NFUTURES = 10};
+
+thread Server {
+	int cnt;
+	future_t * requests[NFUTURES];
+};
+
+void ?{}( Server & this ) {
+	this.cnt = 0;
+	for(i; NFUTURES) {
+		this.requests[i] = 0p;
+	}
+}
+
+void ^?{}( Server & mutex this ) {
+	assert(this.cnt == 0);
+	for(i; NFUTURES) {
+		this.requests[i] = 0p;
+	}
+}
+
+void process( Server & this, int i ) {
+	if( this.requests[i] == 0p ) return;
+	future_t * f = this.requests[i];
+	this.requests[i] = 0p;
+	this.cnt--;
+	fulfil( *f );
+}
+
+void call( Server & mutex this, future_t & f ) {
+	for(i; NFUTURES) {
+		if( this.requests[i] == 0p ) {
+			this.requests[i] = &f;
+			this.cnt++;
+			return;
+		}
+	}
+	abort("Monitor Error");
+}
+
+void main( Server & this ) {
+	unsigned i = 0;
+	for() {
+		waitfor( ^?{} : this ) {
+			break;
+		}
+		or when( this.cnt < NFUTURES ) waitfor( call: this ) {}
+		or else {
+			process( this, i % NFUTURES );
+			i++;
+		}
+	}
+
+	for(i; NFUTURES) {
+		process( this, i );
+	}
+}
+
+Server * the_server;
+thread Worker {};
+
+void thrash(void) {
+	volatile int locals[250];
+	for(i; 250) {
+		locals[i] = 0xdeadbeef;
+	}
+}
+
+void work(int i) {
+	future_t *mine = new();
+	call( *the_server, *mine );
+	if (i % 2 == 0) {
+		abandon( *mine );
+	} else {
+		wait( *mine );
+		delete( mine );
+	}
+}
+
+void main( Worker & ) {
+	for(i;150) {
+		thrash();
+		work(i);
+		thrash();
+	}
+}
+
+int main() {
+	printf( "start\n" );				// non-empty .expect file
+	processor procs[2];
+	{
+		Server server;
+		the_server = &server;
+		{
+			Worker workers[17];
+		}
+	}
+	printf( "done\n" );				// non-empty .expect file
+
+}
Index: tests/concurrency/futures/basic.cfa
===================================================================
--- tests/concurrency/futures/basic.cfa	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
+++ tests/concurrency/futures/basic.cfa	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
@@ -0,0 +1,97 @@
+#include <thread.hfa>
+
+enum {NFUTURES = 10};
+
+thread Server {
+	int cnt;
+	future_t * requests[NFUTURES];
+};
+
+void ?{}( Server & this ) {
+	this.cnt = 0;
+	for(i; NFUTURES) {
+		this.requests[i] = 0p;
+	}
+}
+
+void ^?{}( Server & mutex this ) {
+	assert(this.cnt == 0);
+	for(i; NFUTURES) {
+		this.requests[i] = 0p;
+	}
+}
+
+void process( Server & this, int i ) {
+	if( this.requests[i] == 0p ) return;
+	future_t * f = this.requests[i];
+	this.requests[i] = 0p;
+	this.cnt--;
+	fulfil( *f );
+}
+
+void call( Server & mutex this, future_t & f ) {
+	for(i; NFUTURES) {
+		if( this.requests[i] == 0p ) {
+			this.requests[i] = &f;
+			this.cnt++;
+			return;
+		}
+	}
+	abort("Monitor Error");
+}
+
+void main( Server & this ) {
+	unsigned i = 0;
+	for() {
+		waitfor( ^?{} : this ) {
+			break;
+		}
+		or when( this.cnt < NFUTURES ) waitfor( call: this ) {}
+		or else {
+			process( this, i % NFUTURES );
+			i++;
+		}
+	}
+
+	for(i; NFUTURES) {
+		process( this, i );
+	}
+}
+
+Server * the_server;
+thread Worker {};
+
+void thrash(void) {
+	volatile int locals[250];
+	for(i; 250) {
+		locals[i] = 0xdeadbeef;
+	}
+}
+
+void work(void) {
+	future_t mine;
+	call( *the_server, mine );
+	wait( mine );
+}
+
+void main( Worker & ) {
+	for(150) {
+		thrash();
+		work();
+		thrash();
+	}
+}
+
+int main() {
+	printf( "start\n" );				// non-empty .expect file
+	processor procs[2];
+	{
+		Server server;
+		the_server = &server;
+		{
+			Worker workers[17];
+		}
+	}
+	printf( "done\n" );				// non-empty .expect file
+
+}
Index: tests/concurrency/futures/multi.cfa
===================================================================
--- tests/concurrency/futures/multi.cfa	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
+++ tests/concurrency/futures/multi.cfa	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
@@ -0,0 +1,104 @@
+#include <thread.hfa>
+#include <future.hfa>
+
+enum {NFUTURES = 10};
+
+thread Server {
+	int pending, done, iteration;
+	multi_future(int) * request;
+};
+
+void ?{}( Server & this ) {
+	((thread&)this){"Server Thread"};
+	this.pending = 0;
+	this.done = 0;
+	this.iteration = 0;
+	this.request = 0p;
+}
+
+void ^?{}( Server & mutex this ) {
+	assert(this.pending == 0);
+	this.request = 0p;
+}
+
+void init( Server & this , multi_future(int) * f ) {
+	this.request = f;
+}
+
+void call( Server & mutex this ) {
+	this.pending++;
+}
+
+void finish( Server & mutex this ) {
+	this.done++;
+}
+
+void main( Server & this ) {
+	MAIN_LOOP:
+	for() {
+		waitfor( ^?{} : this ) {
+			break;
+		}
+		or waitfor( call: this ) {
+			if (this.pending != NFUTURES) { continue MAIN_LOOP; }
+
+			this.pending = 0;
+			fulfil( *this.request, this.iteration );
+			this.iteration++;
+
+			for(NFUTURES) {
+				waitfor( finish: this );
+			}
+
+			reset( *this.request );
+			this.done = 0;
+		}
+	}
+
+}
+
+Server * the_server;
+thread Worker {};
+void ?{}(Worker & this) {
+	((thread&)this){"Worker Thread"};
+}
+
+multi_future(int) * shared_future;
+
+void thrash(void) {
+	volatile int locals[250];
+	for(i; 250) {
+		locals[i] = 0xdeadbeef;
+	}
+}
+
+void work(int num) {
+	call( *the_server );
+	int res = wait( *shared_future );
+	if( res != num ) abort();
+	finish( *the_server );
+}
+
+void main( Worker & ) {
+	for (i; 10) {
+		thrash();
+		work(i);
+		thrash();
+	}
+}
+
+int main() {
+	printf( "start\n" );				// non-empty .expect file
+	processor procs[2];
+	shared_future = new();
+	{
+		Server server;
+		the_server = &server;
+		init(server, shared_future);
+		{
+			Worker workers[NFUTURES];
+		}
+	}
+	delete( shared_future );
+	printf( "done\n" );				// non-empty .expect file
+}
Index: tests/concurrency/futures/select_future.cfa
===================================================================
--- tests/concurrency/futures/select_future.cfa	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
+++ tests/concurrency/futures/select_future.cfa	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
@@ -0,0 +1,198 @@
+#include <thread.hfa>
+#include <future.hfa>
+#include <concurrency/barrier.hfa>
+
+enum {NFUTURES = 10};
+
+thread Server {
+	int pending, done, iteration;
+	future(int) * request;
+};
+
+void ?{}( Server & this ) {
+	((thread&)this){"Server Thread"};
+	this.pending = 0;
+	this.done = 0;
+	this.iteration = 0;
+	this.request = 0p;
+}
+
+void ^?{}( Server & mutex this ) {
+	assert(this.pending == 0);
+	this.request = 0p;
+}
+
+void init( Server & this , future(int) * f ) {
+	this.request = f;
+}
+
+void call( Server & mutex this ) {
+	this.pending++;
+}
+
+void finish( Server & mutex this ) {
+	this.done++;
+}
+
+void main( Server & this ) {
+	MAIN_LOOP:
+	for() {
+		waitfor( ^?{} : this ) {
+			break;
+		}
+		or waitfor( call: this ) {
+			if (this.pending != NFUTURES) { continue MAIN_LOOP; }
+
+			this.pending = 0;
+			fulfil( *this.request, this.iteration );
+			this.iteration++;
+
+			for(NFUTURES) {
+				waitfor( finish: this );
+			}
+
+			reset( *this.request );
+			this.done = 0;
+		}
+	}
+
+}
+
+Server * the_server;
+thread Worker {};
+void ?{}(Worker & this) {
+	((thread&)this){"Worker Thread"};
+}
+
+future(int) * shared_future;
+
+void thrash(void) {
+	volatile int locals[250];
+	for(i; 250) {
+		locals[i] = 0xdeadbeef;
+	}
+}
+
+void work(int num) {
+	call( *the_server );
+	int res = get( *shared_future );
+	if( res != num ) abort();
+	finish( *the_server );
+}
+
+void main( Worker & ) {
+	for (i; 10) {
+		thrash();
+		work(i);
+		thrash();
+	}
+}
+
+thread Worker2 {};
+
+semaphore before{0};
+semaphore after_server{0};
+semaphore after_worker{0};
+
+void work2( int num ) {
+    P( before );
+	int res = get( *shared_future );
+	if( res != num ) abort();
+	V( after_server );
+    P( after_worker );
+}
+
+void main( Worker2 & ) {
+	for (i; 10) {
+		thrash();
+		work2(i);
+		thrash();
+	}
+}
+
+thread Server2 {};
+
+void main( Server2 & ) {
+	for (i; 10) {
+		fulfil( *shared_future , i );
+        V( before, NFUTURES );
+        for ( i; NFUTURES ) P( after_server );
+        reset( *shared_future );
+        V( after_worker, NFUTURES );
+	}
+}
+
+barrier bar = { NFUTURES + 1 };
+
+thread Worker3 {};
+
+void work3( int num ) {
+    [int, bool] tt;
+    do {
+        tt = try_get( *shared_future );
+    } while ( ! tt.1 );
+	if( tt.0 != num ) abort();
+	V( after_server );
+    block(bar);
+}
+
+void main( Worker3 & ) {
+	for (i; 10) {
+		thrash();
+		work3(i);
+		thrash();
+	}
+}
+
+thread Server3 {};
+
+void main( Server3 & ) {
+	for (i; 10) {
+		fulfil( *shared_future , i );
+        for ( i; NFUTURES ) P( after_server );
+        reset( *shared_future );
+        block(bar);
+	}
+}
+
+int main() {
+	printf( "start 1: blocking path future test\n" );
+	processor procs[11];
+	shared_future = new();
+	{
+		Server server;
+		the_server = &server;
+		init(server, shared_future);
+		{
+			Worker workers[NFUTURES];
+		}
+	}
+	delete( shared_future );
+	printf( "done 1\n" );
+
+    printf( "start 2: nonblocking path future test\n" );
+    shared_future = new();
+
+    {
+        Server2 server;
+		{
+			Worker2 workers[NFUTURES];
+		}
+	}
+
+    delete( shared_future );
+	printf( "done 2\n" );
+
+    printf( "start 3: try_get future test\n" );
+    shared_future = new();
+
+    {
+        Worker3 workers[NFUTURES];
+		{
+			Server3 server;
+		}
+	}
+
+    delete( shared_future );
+	printf( "done 3\n" );
+}
Index: tests/concurrency/futures/typed.cfa
===================================================================
--- tests/concurrency/futures/typed.cfa	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
+++ tests/concurrency/futures/typed.cfa	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
@@ -0,0 +1,97 @@
+#include <thread.hfa>
+#include <future.hfa>
+enum {NFUTURES = 10};
+
+thread Server {
+	int cnt;
+	single_future(int) * requests[NFUTURES];
+};
+
+void ?{}( Server & this ) {
+	this.cnt = 0;
+	for(i; NFUTURES) {
+		this.requests[i] = 0p;
+	}
+}
+
+void ^?{}( Server & mutex this ) {
+	assert(this.cnt == 0);
+	for(i; NFUTURES) {
+		this.requests[i] = 0p;
+	}
+}
+
+void process( Server & this, int i ) {
+	if( this.requests[i] == 0p ) return;
+	single_future(int) * f = this.requests[i];
+	this.requests[i] = 0p;
+	this.cnt--;
+	fulfil( *f , i);
+}
+
+void call( Server & mutex this, single_future(int) & f ) {
+	for(i; NFUTURES) {
+		if( this.requests[i] == 0p ) {
+			this.requests[i] = &f;
+			this.cnt++;
+			return;
+		}
+	}
+	abort("Monitor Error");
+}
+
+void main( Server & this ) {
+	unsigned i = 0;
+	for() {
+		waitfor( ^?{} : this ) {
+			break;
+		}
+		or when( this.cnt < NFUTURES ) waitfor( call: this ) {}
+		or else {
+			process( this, i % NFUTURES );
+			i++;
+		}
+	}
+
+	for(i; NFUTURES) {
+		process( this, i );
+	}
+}
+
+Server * the_server;
+thread Worker {};
+
+void thrash(void) {
+	volatile int locals[250];
+	for(i; 250) {
+		locals[i] = 0xdeadbeef;
+	}
+}
+
+void work(void) {
+	single_future(int) mine;
+	call( *the_server, mine );
+	wait( mine );
+}
+
+void main( Worker & ) {
+	for(150) {
+		thrash();
+		work();
+		thrash();
+	}
+}
+
+int main() {
+	printf( "start\n" );				// non-empty .expect file
+	processor procs[2];
+	{
+		Server server;
+		the_server = &server;
+		{
+			Worker workers[17];
+		}
+	}
+	printf( "done\n" );				// non-empty .expect file
+
+}
Index: tests/concurrency/futures/wait_any.cfa
===================================================================
--- tests/concurrency/futures/wait_any.cfa	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
+++ tests/concurrency/futures/wait_any.cfa	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
@@ -0,0 +1,77 @@
+#include <thread.hfa>
+#include <fstream.hfa>
+#include <stdlib.hfa>
+#include <mutex_stmt.hfa>
+#include <locks.hfa>
+
+simple_owner_lock l;
+pthread_cond_var( simple_owner_lock ) c;
+
+size_t num_futures = 10;
+
+future_t * futures;
+
+size_t * shuffle_arr;
+
+size_t numtimes = 10;
+
+volatile bool done = false;
+
+void synchronize() {
+    lock(l);
+    if (empty(c)) {
+        wait(c,l);
+    } else {
+        for ( i; num_futures ) {
+            reset(futures[i]);
+        }
+        notify_one(c);
+    }
+    unlock(l);
+}
+
+thread Waiter {};
+void main( Waiter & this ) {
+    for (numtimes) {
+        wait_any(futures, num_futures);
+        synchronize();
+    }
+    done = true;
+    while (done) notify_one(c);
+}
+
+thread Deliverer {};
+void main( Deliverer & this ) {
+    while (!done) {
+        size_t num_satisfy = random(1,num_futures);
+        for ( i; num_satisfy ) {								// random shuffle a few values
+			swap( shuffle_arr[random(num_futures)], shuffle_arr[random(num_futures)] );
+		}
+        for ( i; num_satisfy ) {
+            fulfil(futures[shuffle_arr[i]]);
+        }
+        synchronize();
+    }
+    done = false;
+}
+
+int main() {
+	sout | "start";
+    futures = alloc( num_futures );
+    shuffle_arr = alloc( num_futures );
+    for ( i; num_futures ) {								// random shuffle a few values
+        futures[i]{};
+        swap( shuffle_arr[random(num_futures)], shuffle_arr[random(num_futures)] );
+    }
+    for ( i; num_futures ) {
+        shuffle_arr[i] = i;
+    }
+	processor procs[1];
+	{
+		Waiter w;
+		Deliverer d;
+	}
+    free( futures );
+    free( shuffle_arr );
+	sout | "done";
+}
Index: tests/concurrency/join.cfa
===================================================================
--- tests/concurrency/join.cfa	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
+++ tests/concurrency/join.cfa	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
@@ -0,0 +1,52 @@
+#include <fstream.hfa>
+#include <thread.hfa>
+
+thread Worker { volatile int result; };
+
+void main(Worker & this) {
+	this.result = -10;
+	for(50) {
+		yield();
+	}
+	this.result = 42;
+}
+
+thread OtherWorker { volatile int result; };
+
+void main(OtherWorker & this) {
+	this.result = -10;
+	LOOP: for() {
+		waitfor( ^?{} : this) {
+			break LOOP;
+		}
+		or else {
+			yield();
+		}
+	}
+	this.result = 27;
+}
+
+
+int main(int argc, char* argv[]) {
+	{
+		Worker workers[17];
+		for(i; 17) {
+			int res = join( workers[i] ).result;
+			if( res != 42 ) {
+				sout | "Worker" | i | "got incorrect result:" | res;
+			}
+		}
+	}
+	sout | "All workers got 42";
+
+	{
+		OtherWorker workers[17];
+		for(i; 17) {
+			int res = join( workers[i] ).result;
+			if( res != 27 ) {
+				sout | "Other Worker" | i | "got incorrect result:" | res;
+			}
+		}
+	}
+	sout | "All other workers got 27";
+}
Index: tests/concurrency/joinerror.cfa
===================================================================
--- tests/concurrency/joinerror.cfa	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
+++ tests/concurrency/joinerror.cfa	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
@@ -0,0 +1,61 @@
+#include <fstream.hfa>
+#include <thread.hfa>
+
+thread Worker { volatile int result; };
+
+void main(Worker & this) {
+	this.result = -10;
+	for(50) {
+		yield();
+	}
+	this.result = 42;
+}
+
+int get_result( Worker & mutex this ) {
+	return this.result;
+}
+
+thread OtherWorker { volatile int result; };
+
+void main(OtherWorker & this) {
+	this.result = -10;
+	LOOP: for() {
+		waitfor( ^?{} : this) {
+			break LOOP;
+		}
+		or else {
+			yield();
+		}
+	}
+	this.result = 27;
+}
+
+int get_result( OtherWorker & mutex this ) {
+	return this.result;
+}
+
+int main(int argc, char* argv[]) {
+	{
+		Worker workers[17];
+		for(i; 17) {
+			join( workers[i] );
+			int res = get_result( workers[i] );
+			if( res != 42 ) {
+				sout | "Worker" | i | "got incorrect result:" | res;
+			}
+		}
+	}
+	sout | "All workers got 42";
+
+	{
+		OtherWorker workers[17];
+		for(i; 17) {
+			join( workers[i] );
+			int res = get_result( workers[i] );
+			if( res != 27 ) {
+				sout | "Other Worker" | i | "got incorrect result:" | res;
+			}
+		}
+	}
+	sout | "All other workers got 27";
+}
Index: tests/concurrency/keywordErrors.cfa
===================================================================
--- tests/concurrency/keywordErrors.cfa	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
+++ tests/concurrency/keywordErrors.cfa	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
@@ -0,0 +1,6 @@
+thread A {};
+
+// This include isn't enough but used to fool the check
+#include <invoke.h>
+
+thread B {};
Index: tests/concurrency/lockfree_stack.cfa
===================================================================
--- tests/concurrency/lockfree_stack.cfa	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
+++ tests/concurrency/lockfree_stack.cfa	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
@@ -0,0 +1,87 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2022 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+//
+// lockfree_stack.cfa -- 
+//
+// Author           : Peter A. Buhr
+// Created On       : Thu May 25 15:36:50 2023
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Thu May 25 16:20:23 2023
+// Update Count     : 2
+// 
+
+#include <thread.hfa>
+#include <atomic.hfa>									// CASV
+#include <fstream.hfa>
+
+struct Node;											// forward declaration
+union Link {
+	struct {											// 64-bit x 2
+		Node * volatile top;							// pointer to stack top
+		uintptr_t count;								// count each push
+	};
+	__int128 atom;										// gcc, 128-bit integer
+} __attribute__(( aligned( 16 ) ));
+
+struct Node {
+	// resource data
+	Link next;											// pointer to next node/count (resource)
+};
+struct Stack {
+	Link stack;
+};
+
+void push( Stack & s, Node & n ) with(s) {
+	n.next = stack;										// atomic assignment unnecessary
+	for () {											// busy wait
+		if ( CASV( stack.atom, n.next.atom, ((Link){ &n, n.next.count + 1 }.atom) ) ) break; // attempt to update top node
+	}
+}
+
+Node * pop( Stack & s ) with(s) {
+	Link t = stack;										// atomic assignment unnecessary
+	for () {											// busy wait
+		if ( t.top == NULL ) return NULL;				// empty stack ?
+		if ( CASV( stack.atom, t.atom, ((Link){ t.top->next.top, t.count }.atom) ) ) return t.top; // attempt to update top node
+	}
+}
+void ?{}( Stack & s ) with(s) { stack.atom = 0; }
+
+Stack stack;											// global stack
+
+thread Worker {};
+void main( Worker & w ) {
+	for ( i; 100000 ) {
+		Node & n = *pop( stack );
+		assert( &n != NULL );
+		n.next.top = 0p;								// shrub fields
+		n.next.count = 0;
+		//yield( rand() % 3 );
+		push( stack, n );
+	}
+}
+
+
+int main() {
+	enum { N = 10 };
+	processor p[N - 1];									// kernel threads
+
+	for ( i; N ) {										// push N values on stack
+		// storage must be 16-bytes aligned for cmpxchg16b
+		push( stack, *(Node *)memalign( 16, sizeof( Node ) ) );
+	}
+	{
+		Worker workers[N];								// run test
+	}
+	for ( i; N ) {										// pop N nodes from list
+		free( pop( stack ) );
+	}
+	sout | "done";										// non-empty .expect file
+}
+
+// Local Variables: //
+// compile-command: "cfa -g -O3 lockfree_stack.cfa" //
+// End: //
Index: tests/concurrency/mainError.cfa
===================================================================
--- tests/concurrency/mainError.cfa	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
+++ tests/concurrency/mainError.cfa	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
@@ -0,0 +1,2 @@
+thread Test {};
+void main(Test&) {}
Index: tests/concurrency/migrate.cfa
===================================================================
--- tests/concurrency/migrate.cfa	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
+++ tests/concurrency/migrate.cfa	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
@@ -0,0 +1,85 @@
+#include <fstream.hfa>
+#include <kernel.hfa>
+#include <thread.hfa>
+
+#include <stdatomic.h>
+#include <assert.h>
+
+struct cluster_wrapper {
+	cluster self;
+	const uint64_t canary;
+	struct {
+		volatile uint64_t want;
+		volatile uint64_t have;
+	} checksum;
+};
+
+void ?{}( cluster_wrapper & this ) {
+	(this.self){};
+	(*(uint64_t *)&this.canary) = 0xDEAD2BADDEAD2BAD;
+	this.checksum.want = 0;
+	this.checksum.have = 0;
+}
+
+void ^?{}( cluster_wrapper & this ) {
+	assert(this.canary == 0xDEAD2BADDEAD2BAD);
+}
+
+static cluster_wrapper * the_clusters;
+static unsigned cluster_cnt;
+
+thread MyThread {
+
+};
+
+void ?{}( MyThread & this ) {}
+
+void checkcl( MyThread & this, cluster * cl) {
+	if(((thread&)this).curr_cluster != cl) {
+		abort | "Thread has unexpected cluster";
+	}
+}
+
+void main( MyThread & this ) {
+	waitfor( migrate : this ) {
+		assert( ((thread&)this).curr_cluster == active_cluster() );
+		assert( ((thread&)this).curr_cluster == active_processor()->cltr );
+	}
+
+	struct cluster_wrapper * curr = (struct cluster_wrapper *)&the_clusters[0];
+
+	for(100) {
+		unsigned idx = prng( this, cluster_cnt );
+
+		struct cluster_wrapper * next = &the_clusters[ idx ];
+		assert(next->canary == 0xDEAD2BADDEAD2BAD);
+
+		// next->
+
+		migrate( this, next->self );
+
+		assert( active_cluster() == &next->self );
+		assert( ((thread&)this).curr_cluster == active_cluster() );
+		assert( ((thread&)this).curr_cluster == active_processor()->cltr );
+	}
+}
+
+int main() {
+	cluster_cnt = 3;
+	cluster_wrapper cl[cluster_cnt];
+	the_clusters = cl;
+
+	{
+		set_concurrency( cl[0].self, 2 );
+		set_concurrency( cl[1].self, 2 );
+		set_concurrency( cl[2].self, 1 );
+
+		MyThread threads[17];
+		for(i;17) {
+			migrate( threads[i], cl[0].self );
+		}
+
+	}
+	// non-empty .expect file
+	printf( "done\n" );
+}
Index: tests/concurrency/monitor.cfa
===================================================================
--- tests/concurrency/monitor.cfa	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
+++ tests/concurrency/monitor.cfa	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
@@ -0,0 +1,43 @@
+#include <fstream.hfa>
+#include <kernel.hfa>
+#include <monitor.hfa>
+#include <thread.hfa>
+
+monitor global_t {
+	int value;
+};
+
+void ?{}(global_t & this) {
+	this.value = 0;
+}
+
+static global_t global;
+
+void increment3( global_t & mutex this ) {
+	this.value += 1;
+}
+
+void increment2( global_t & mutex this ) {
+	increment3( this );
+}
+
+void increment( global_t & mutex this ) {
+	increment2( this );
+}
+
+thread MyThread {};
+
+void main( MyThread & this ) {
+	for(int i = 0; i < 750_000; i++) {
+		increment( global );
+	}
+}
+
+int main(int argc, char* argv[]) {
+	assert( global.__mon.entry_queue.tail != NULL );
+	processor p;
+	{
+		MyThread f[4];
+	}
+	sout | global.value;
+}
Index: tests/concurrency/multi-monitor.cfa
===================================================================
--- tests/concurrency/multi-monitor.cfa	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
+++ tests/concurrency/multi-monitor.cfa	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
@@ -0,0 +1,59 @@
+#include <fstream.hfa>
+#include <kernel.hfa>
+#include <monitor.hfa>
+#include <thread.hfa>
+
+static int global12, global23, global13;
+
+monitor monitor_t {};
+
+static monitor_t m1, m2, m3;
+
+void increment( monitor_t & mutex p1, monitor_t & mutex p2, int & value ) {
+	assert(active_thread() == get_monitor(p1)->owner);
+	assert(active_thread() == get_monitor(p2)->owner);
+	value += 1;
+	assert(active_thread() == get_monitor(p1)->owner);
+	assert(active_thread() == get_monitor(p2)->owner);
+}
+
+thread MyThread {
+	int target;
+};
+
+void ?{}( MyThread & this, int target ) {
+	this.target = target;
+}
+
+void ^?{}( MyThread & mutex this ) {}
+
+void main( MyThread & this ) {
+	for(int i = 0; i < 1000000; i++) {
+		choose(this.target) {
+			case 0: increment( m1, m2, global12 );
+			case 1: increment( m2, m3, global23 );
+			case 2: increment( m1, m3, global13 );
+		}
+	}
+}
+
+forall(T & | sized(T) | { void ^?{}(T & mutex); })
+void delete_mutex(T * x) {
+	^(*x){};
+	free(x);
+}
+
+int main(int argc, char* argv[]) {
+	processor p;
+	{
+		MyThread * f[6];
+		for(int i = 0; i < 6; i++) {
+			f[i] = new(i % 3);
+		}
+
+		for(int i = 0; i < 6; i++) {
+			delete_mutex( f[i] );
+		}
+	}
+	sout | global12 | global23 | global13;
+}
Index: tests/concurrency/mutexstmt/.expect/locks.txt
===================================================================
--- tests/concurrency/mutexstmt/.expect/locks.txt	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
+++ tests/concurrency/mutexstmt/.expect/locks.txt	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
@@ -0,0 +1,6 @@
+Start Test: single lock mutual exclusion
+End Test: single lock mutual exclusion
+Start Test: multi lock deadlock/mutual exclusion
+End Test: multi lock deadlock/mutual exclusion
+Start Test: multi polymorphic lock deadlock/mutual exclusion
+End Test: multi polymorphic lock deadlock/mutual exclusion
Index: tests/concurrency/mutexstmt/.expect/monitors.txt
===================================================================
--- tests/concurrency/mutexstmt/.expect/monitors.txt	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
+++ tests/concurrency/mutexstmt/.expect/monitors.txt	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
@@ -0,0 +1,4 @@
+Start Test: single monitor mutual exclusion
+End Test: single monitor mutual exclusion
+Start Test: multi monitor deadlock/mutual exclusion
+End Test: multi monitor deadlock/mutual exclusion
Index: tests/concurrency/mutexstmt/locks.cfa
===================================================================
--- tests/concurrency/mutexstmt/locks.cfa	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
+++ tests/concurrency/mutexstmt/locks.cfa	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
@@ -0,0 +1,133 @@
+#include <mutex_stmt.hfa>
+#include <locks.hfa>
+
+const unsigned int num_times = 10000;
+
+Duration default_preemption() { return 0; }
+
+single_acquisition_lock m1, m2, m3, m4, m5;
+
+thread T_Mutex {};
+bool insideFlag = false;
+int count = 0;
+
+void main( T_Mutex & this ) {
+	for (unsigned int i = 0; i < num_times; i++) {
+		mutex ( m1 ) count++;
+		mutex ( m1 ) { 
+			assert(!insideFlag);
+			insideFlag = true;
+			assert(insideFlag);
+			insideFlag = false;
+		}
+	}
+}
+
+void refTest( single_acquisition_lock & m ) {
+	mutex ( m ) {
+		assert(!insideFlag);
+		insideFlag = true;
+		assert(insideFlag);
+		insideFlag = false;
+	}
+}
+
+thread T_Multi {};
+
+void main( T_Multi & this ) {
+	for (unsigned int i = 0; i < num_times; i++) {
+		refTest( m1 );
+		mutex ( m1 ) {
+			assert(!insideFlag);
+			insideFlag = true;
+			assert(insideFlag);
+			insideFlag = false;
+		}
+		mutex ( m1, m2, m3, m4, m5 ) {
+			assert(!insideFlag);
+			insideFlag = true;
+			assert(insideFlag);
+			insideFlag = false;
+		}
+		mutex ( m3, m1 ) {
+			assert(!insideFlag);
+			insideFlag = true;
+			assert(insideFlag);
+			insideFlag = false;
+		}
+		mutex ( m1, m2, m4 ) {
+			assert(!insideFlag);
+			insideFlag = true;
+			assert(insideFlag);
+			insideFlag = false;
+		}
+		mutex ( m1, m3, m4, m5 ) {
+			assert(!insideFlag);
+			insideFlag = true;
+			assert(insideFlag);
+			insideFlag = false;
+		}
+	}
+}
+
+single_acquisition_lock l1;
+exp_backoff_then_block_lock l2;
+owner_lock l3;
+
+monitor monitor_t {};
+
+monitor_t l4;
+
+thread T_Multi_Poly {};
+
+void main( T_Multi_Poly & this ) {
+	for (unsigned int i = 0; i < num_times; i++) {
+		refTest( l1 );
+		mutex ( l1, l4 ) {
+			assert(!insideFlag);
+			insideFlag = true;
+			assert(insideFlag);
+			insideFlag = false;
+		}
+		mutex ( l1, l2, l3 ) {
+			assert(!insideFlag);
+			insideFlag = true;
+			assert(insideFlag);
+			insideFlag = false;
+		}
+		mutex ( l3, l1, l4 ) {
+			assert(!insideFlag);
+			insideFlag = true;
+			assert(insideFlag);
+			insideFlag = false;
+		}
+		mutex ( l1, l2, l4 ) {
+			assert(!insideFlag);
+			insideFlag = true;
+			assert(insideFlag);
+			insideFlag = false;
+		}
+	}
+}
+
+int num_tasks = 10;
+int main() {
+	processor p[num_tasks - 1];
+
+	printf("Start Test: single lock mutual exclusion\n");
+	{
+		T_Mutex t[num_tasks];
+	}
+	assert(count == num_tasks * num_times);
+	printf("End Test: single lock mutual exclusion\n");
+	printf("Start Test: multi lock deadlock/mutual exclusion\n");
+	{
+		T_Multi t[num_tasks];
+	}
+	printf("End Test: multi lock deadlock/mutual exclusion\n");
+	printf("Start Test: multi polymorphic lock deadlock/mutual exclusion\n");
+	{
+		T_Multi_Poly t[num_tasks];
+	}
+	printf("End Test: multi polymorphic lock deadlock/mutual exclusion\n");
+}
Index: tests/concurrency/mutexstmt/monitors.cfa
===================================================================
--- tests/concurrency/mutexstmt/monitors.cfa	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
+++ tests/concurrency/mutexstmt/monitors.cfa	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
@@ -0,0 +1,81 @@
+#include <monitor.hfa>
+#include <mutex_stmt.hfa>
+#include <stdio.h>
+#include <stdlib.hfa>
+#include <thread.hfa>
+
+const unsigned int num_times = 10000;
+
+monitor monitor_t {};
+
+monitor_t m1, m2, m3, m4, m5;
+
+thread T_Mutex {};
+bool insideFlag = false;
+int count = 0;
+bool startFlag = false;
+
+void main( T_Mutex & this ) {
+	for (unsigned int i = 0; i < num_times; i++) {
+		mutex ( m1 ) count++;
+		mutex ( m1 ) {
+			assert(!insideFlag);
+			insideFlag = true;
+			assert(insideFlag);
+			insideFlag = false;
+		}
+	}
+}
+
+thread T_Multi {};
+
+void main( T_Multi & this ) {
+	for (unsigned int i = 0; i < num_times; i++) {
+		mutex ( m1 ) {
+			assert(!insideFlag);
+			insideFlag = true;
+			assert(insideFlag);
+			insideFlag = false;
+		}
+		mutex ( m1, m2, m3, m4, m5 ) {
+			assert(!insideFlag);
+			insideFlag = true;
+			assert(insideFlag);
+			insideFlag = false;
+		}
+		mutex ( m3, m1 ) {
+			assert(!insideFlag);
+			insideFlag = true;
+			assert(insideFlag);
+			insideFlag = false;
+		}
+		mutex ( m1, m2, m4 ) {
+			assert(!insideFlag);
+			insideFlag = true;
+			assert(insideFlag);
+			insideFlag = false;
+		}
+		mutex ( m1, m3, m4, m5 ) {
+			assert(!insideFlag);
+			insideFlag = true;
+			assert(insideFlag);
+			insideFlag = false;
+		}
+	}
+}
+
+
+int main() {
+	processor p[10];
+
+	printf("Start Test: single monitor mutual exclusion\n");
+	{
+		T_Mutex t[10];
+	}
+	printf("End Test: single monitor mutual exclusion\n");
+	printf("Start Test: multi monitor deadlock/mutual exclusion\n");
+	{
+		T_Multi t[10];
+	}
+	printf("End Test: multi monitor deadlock/mutual exclusion\n");
+}
Index: tests/concurrency/once.cfa
===================================================================
--- tests/concurrency/once.cfa	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
+++ tests/concurrency/once.cfa	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
@@ -0,0 +1,44 @@
+#include <barrier.hfa>
+#include <fstream.hfa>
+#include <kernel.hfa>
+#include <once.hfa>
+#include <thread.hfa>
+
+once_flag global;
+
+volatile int check;
+
+void reset() {
+	(global){};
+	check = 0;
+}
+
+void must_once(void) {
+	int prev = __atomic_fetch_add( &check, 1, __ATOMIC_SEQ_CST );
+	if(prev != 0) {
+		abort | "'must_once' appears to have been called more than once, check was" | prev;
+	}
+}
+
+barrier barr = { 11 };
+
+thread Tester {};
+
+void main( Tester & this ) {
+	for(500) {
+		block( barr, reset );
+
+		// sometime yields
+		yield( prng(this, 3) );
+	}
+}
+
+int main() {
+	processor p[2];
+
+	sout | "starting";
+	{
+		Tester testers[11];
+	}
+	sout | "done";
+}
Index: tests/concurrency/park/.expect/contention.txt
===================================================================
--- tests/concurrency/park/.expect/contention.txt	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
+++ tests/concurrency/park/.expect/contention.txt	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
@@ -0,0 +1,21 @@
+Done
+Done
+Done
+Done
+Done
+Done
+Done
+Done
+Done
+Done
+Done
+Done
+Done
+Done
+Done
+Done
+Done
+Done
+Done
+Done
+Done Unparker
Index: tests/concurrency/park/.expect/force_preempt.txt
===================================================================
--- tests/concurrency/park/.expect/force_preempt.txt	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
+++ tests/concurrency/park/.expect/force_preempt.txt	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
@@ -0,0 +1,1 @@
+done
Index: tests/concurrency/park/.expect/start_parked.txt
===================================================================
--- tests/concurrency/park/.expect/start_parked.txt	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
+++ tests/concurrency/park/.expect/start_parked.txt	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
@@ -0,0 +1,1 @@
+done
Index: tests/concurrency/park/contention.cfa
===================================================================
--- tests/concurrency/park/contention.cfa	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
+++ tests/concurrency/park/contention.cfa	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
@@ -0,0 +1,62 @@
+#include <kernel.hfa>
+#include <thread.hfa>
+
+__thread drand48_data buffer = { 0 };
+int myrand() {
+	long int result;
+	lrand48_r(&buffer, &result);
+	return result;
+}
+
+
+thread Thread {};
+void ^?{}(Thread & mutex this) {}
+
+enum Constants { blocked_size = 20 };
+Thread * volatile blocked[blocked_size];
+
+void main( Thread & this ) {
+	for(int i = 0; i < 1000; i++) {
+		int idx = myrand() % blocked_size;
+		if(blocked[idx]) {
+			Thread * thrd = __atomic_exchange_n(&blocked[idx], 0p, __ATOMIC_SEQ_CST);
+			unpark( *thrd );
+		} else {
+			Thread * thrd = __atomic_exchange_n(&blocked[idx], &this, __ATOMIC_SEQ_CST);
+			unpark( *thrd );
+			park();
+		}
+	}
+	printf("Done\n");
+}
+
+// Extra thread to avoid deadlocking
+thread Unparker {};
+
+void main( Unparker & this ) {
+	while(true) {
+		waitfor( ^?{} : this ) {
+			break;
+		} or else {
+			int idx = myrand() % blocked_size;
+			Thread * thrd = __atomic_exchange_n(&blocked[idx], 0p, __ATOMIC_SEQ_CST);
+			unpark( *thrd );
+			yield( myrand() % 20 );
+		}
+	}
+	printf("Done Unparker\n");
+}
+
+
+int main() {
+	for(i ; blocked_size) {
+		blocked[i] = 0p;
+	}
+
+	processor p[3];
+
+	Unparker u;
+	{
+		Thread t[20];
+	}
+}
Index: tests/concurrency/park/force_preempt.cfa
===================================================================
--- tests/concurrency/park/force_preempt.cfa	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
+++ tests/concurrency/park/force_preempt.cfa	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
@@ -0,0 +1,60 @@
+#include <thread.hfa>
+#include <fstream.hfa>
+
+volatile int global = 0;
+
+thread Poller {};
+void main(Poller & this) {
+	while(true) {
+		waitfor( ^?{} : this ) {
+			break;
+		} or else {
+			global = (global + 1) % 10;
+			yield();
+		}
+	}
+}
+
+thread Waiter {};
+
+volatile int count = 0;
+
+void main(Waiter & this) {
+	// Get a unique id
+	int id = __atomic_fetch_add(&count, 1, __ATOMIC_SEQ_CST);
+	int id_hash = id | (id << 8) | (id << 16) | (id << 24);
+	int mask = 0xCAFEBABA;
+
+	for(int i = 0; i < 5; i++) {
+		assert(mask == 0xCAFEBABA);
+
+		// Unpark this thread, don't force a yield
+		unpark( this );
+		assert(mask == 0xCAFEBABA);
+
+		// Hash the mask to make sure no one else messes with them
+		mask ^= id_hash;
+		assert(mask == (id_hash ^ 0xCAFEBABA));
+
+		// Force a preemption before the call to park
+		int prev = global;
+		while(prev == global) {}
+
+		// Park this thread,
+		assert(mask == (id_hash ^ 0xCAFEBABA));
+		park();
+		assert(mask == (id_hash ^ 0xCAFEBABA));
+
+		// Reset the hash and recheck it
+		mask ^= id_hash;
+		assert(mask == 0xCAFEBABA);
+	}
+}
+
+int main() {
+	Poller p;
+	{
+		Waiter waiters[5];
+	}
+	printf( "done\n" );				// non-empty .expect file
+}
Index: tests/concurrency/park/start_parked.cfa
===================================================================
--- tests/concurrency/park/start_parked.cfa	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
+++ tests/concurrency/park/start_parked.cfa	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
@@ -0,0 +1,14 @@
+#include <thread.hfa>
+
+thread Parker {};
+void main( Parker & ) {
+	park();
+}
+
+int main() {
+	for(1000) {
+		Parker parker;
+		unpark( parker );
+	}
+	printf( "done\n" );									// non-empty .expect file
+}
Index: tests/concurrency/preempt.cfa
===================================================================
--- tests/concurrency/preempt.cfa	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
+++ tests/concurrency/preempt.cfa	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
@@ -0,0 +1,92 @@
+#include <clock.hfa>
+#include <fstream.hfa>
+#include <kernel.hfa>
+#include <thread.hfa>
+#include <time.hfa>
+
+#include "long_tests.hfa"
+
+#ifndef PREEMPTION_RATE
+#define PREEMPTION_RATE 10`ms
+#endif
+
+Duration default_preemption() {
+	return PREEMPTION_RATE;
+}
+
+#ifdef TEST_LONG
+static const unsigned long N = 30_000ul;
+#else
+static const unsigned long N = 500ul;
+#endif
+
+extern void __cfaabi_check_preemption();
+
+static struct {
+	volatile int counter;
+	volatile Time prev;
+	Duration durations[6];
+} globals;
+
+thread worker_t {
+	int value;
+	unsigned long long spin;
+};
+
+void ?{}( worker_t & this, int value ) {
+	this.value = value;
+	this.spin = 0;
+}
+
+void main(worker_t & this) {
+	while(TEST(globals.counter < N)) {
+		if(this.spin > 50_000_000_000) abort | "Worker" | this.value | "has been spinning too long! (" | this.spin | ")";
+		__cfaabi_check_preemption();
+		if( (globals.counter % 7) == this.value ) {
+			__cfaabi_check_preemption();
+			#if !defined(TEST_LONG)
+				Time now = timeHiRes();
+				Duration diff = now - globals.prev;
+				globals.prev = now;
+			#endif
+			int next = __atomic_add_fetch( &globals.counter, 1, __ATOMIC_SEQ_CST );
+			__cfaabi_check_preemption();
+			if( (next % 100) == 0 ) {
+				#if !defined(TEST_LONG)
+					unsigned idx = next / 100;
+					if (idx >= 6) abort | "Idx from next is invalid: " | idx | "vs" | next;
+					globals.durations[idx] = diff;
+					if(diff > 12`s) serr | "Duration suspiciously large:" | diff;
+				#endif
+				printf("%d\n", (int)next);
+
+			}
+			__cfaabi_check_preemption();
+			this.spin = 0;
+		}
+		__cfaabi_check_preemption();
+		KICK_WATCHDOG;
+		this.spin++;
+	}
+}
+
+int main(int argc, char* argv[]) {
+	processor p;
+	globals.counter = 0;
+	globals.durations[0] = 0;
+	globals.durations[1] = 0;
+	globals.durations[2] = 0;
+	globals.durations[3] = 0;
+	globals.durations[4] = 0;
+	globals.durations[5] = 0;
+	{
+		globals.prev = timeHiRes();
+		worker_t w0 = 0;
+		worker_t w1 = 1;
+		worker_t w2 = 2;
+		worker_t w3 = 3;
+		worker_t w4 = 4;
+		worker_t w5 = 5;
+		worker_t w6 = 6;
+	}
+}
Index: tests/concurrency/preempt2.cfa
===================================================================
--- tests/concurrency/preempt2.cfa	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
+++ tests/concurrency/preempt2.cfa	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
@@ -0,0 +1,50 @@
+#include <fstream.hfa>
+#include <thread.hfa>
+#include <time.hfa>
+
+#include "long_tests.hfa"
+
+#ifndef PREEMPTION_RATE
+#define PREEMPTION_RATE 10`ms
+#endif
+
+Duration default_preemption() {
+	return PREEMPTION_RATE;
+}
+
+#ifdef TEST_LONG
+static const unsigned long N = 30_000ul;
+#else
+static const unsigned long N = 500ul;
+#endif
+
+extern void __cfaabi_check_preemption();
+
+static struct {
+	volatile int x;
+	volatile int y;
+} globals;
+
+thread T1 {};
+void main(T1 &) {
+	for() {
+		if ( globals.x == N ) break;
+		if ( globals.x < globals.y ) globals.x += 1;
+	}
+}
+
+thread T2 {};
+void main(T2 &) {
+	for() {
+		if ( globals.y == N ) break;
+		if ( globals.y == globals.x ) globals.y += 1;
+	}
+}
+
+int main() {
+	{
+		T1 t1;
+		T2 t2;
+	}
+	sout | "Done";
+} // main
Index: tests/concurrency/pthread/.expect/bounded_buffer.x64.txt
===================================================================
--- tests/concurrency/pthread/.expect/bounded_buffer.x64.txt	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
+++ tests/concurrency/pthread/.expect/bounded_buffer.x64.txt	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
@@ -0,0 +1,2 @@
+producer total value is 39780
+consumer total value is 39780
Index: tests/concurrency/pthread/.expect/bounded_buffer.x86.txt
===================================================================
--- tests/concurrency/pthread/.expect/bounded_buffer.x86.txt	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
+++ tests/concurrency/pthread/.expect/bounded_buffer.x86.txt	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
@@ -0,0 +1,2 @@
+producer total value is 1770
+consumer total value is 1770
Index: tests/concurrency/pthread/.expect/pthread_attr_test.txt
===================================================================
--- tests/concurrency/pthread/.expect/pthread_attr_test.txt	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
+++ tests/concurrency/pthread/.expect/pthread_attr_test.txt	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
@@ -0,0 +1,1 @@
+stack size is 123456789
Index: tests/concurrency/pthread/.expect/pthread_cond_test.txt
===================================================================
--- tests/concurrency/pthread/.expect/pthread_cond_test.txt	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
+++ tests/concurrency/pthread/.expect/pthread_cond_test.txt	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
@@ -0,0 +1,1001 @@
+S1 done 0
+S1 done 1
+S1 done 2
+S1 done 3
+S1 done 4
+S1 done 5
+S1 done 6
+S1 done 7
+S1 done 8
+S1 done 9
+S1 done 10
+S1 done 11
+S1 done 12
+S1 done 13
+S1 done 14
+S1 done 15
+S1 done 16
+S1 done 17
+S1 done 18
+S1 done 19
+S1 done 20
+S1 done 21
+S1 done 22
+S1 done 23
+S1 done 24
+S1 done 25
+S1 done 26
+S1 done 27
+S1 done 28
+S1 done 29
+S1 done 30
+S1 done 31
+S1 done 32
+S1 done 33
+S1 done 34
+S1 done 35
+S1 done 36
+S1 done 37
+S1 done 38
+S1 done 39
+S1 done 40
+S1 done 41
+S1 done 42
+S1 done 43
+S1 done 44
+S1 done 45
+S1 done 46
+S1 done 47
+S1 done 48
+S1 done 49
+S1 done 50
+S1 done 51
+S1 done 52
+S1 done 53
+S1 done 54
+S1 done 55
+S1 done 56
+S1 done 57
+S1 done 58
+S1 done 59
+S1 done 60
+S1 done 61
+S1 done 62
+S1 done 63
+S1 done 64
+S1 done 65
+S1 done 66
+S1 done 67
+S1 done 68
+S1 done 69
+S1 done 70
+S1 done 71
+S1 done 72
+S1 done 73
+S1 done 74
+S1 done 75
+S1 done 76
+S1 done 77
+S1 done 78
+S1 done 79
+S1 done 80
+S1 done 81
+S1 done 82
+S1 done 83
+S1 done 84
+S1 done 85
+S1 done 86
+S1 done 87
+S1 done 88
+S1 done 89
+S1 done 90
+S1 done 91
+S1 done 92
+S1 done 93
+S1 done 94
+S1 done 95
+S1 done 96
+S1 done 97
+S1 done 98
+S1 done 99
+S1 done 100
+S1 done 101
+S1 done 102
+S1 done 103
+S1 done 104
+S1 done 105
+S1 done 106
+S1 done 107
+S1 done 108
+S1 done 109
+S1 done 110
+S1 done 111
+S1 done 112
+S1 done 113
+S1 done 114
+S1 done 115
+S1 done 116
+S1 done 117
+S1 done 118
+S1 done 119
+S1 done 120
+S1 done 121
+S1 done 122
+S1 done 123
+S1 done 124
+S1 done 125
+S1 done 126
+S1 done 127
+S1 done 128
+S1 done 129
+S1 done 130
+S1 done 131
+S1 done 132
+S1 done 133
+S1 done 134
+S1 done 135
+S1 done 136
+S1 done 137
+S1 done 138
+S1 done 139
+S1 done 140
+S1 done 141
+S1 done 142
+S1 done 143
+S1 done 144
+S1 done 145
+S1 done 146
+S1 done 147
+S1 done 148
+S1 done 149
+S1 done 150
+S1 done 151
+S1 done 152
+S1 done 153
+S1 done 154
+S1 done 155
+S1 done 156
+S1 done 157
+S1 done 158
+S1 done 159
+S1 done 160
+S1 done 161
+S1 done 162
+S1 done 163
+S1 done 164
+S1 done 165
+S1 done 166
+S1 done 167
+S1 done 168
+S1 done 169
+S1 done 170
+S1 done 171
+S1 done 172
+S1 done 173
+S1 done 174
+S1 done 175
+S1 done 176
+S1 done 177
+S1 done 178
+S1 done 179
+S1 done 180
+S1 done 181
+S1 done 182
+S1 done 183
+S1 done 184
+S1 done 185
+S1 done 186
+S1 done 187
+S1 done 188
+S1 done 189
+S1 done 190
+S1 done 191
+S1 done 192
+S1 done 193
+S1 done 194
+S1 done 195
+S1 done 196
+S1 done 197
+S1 done 198
+S1 done 199
+S1 done 200
+S1 done 201
+S1 done 202
+S1 done 203
+S1 done 204
+S1 done 205
+S1 done 206
+S1 done 207
+S1 done 208
+S1 done 209
+S1 done 210
+S1 done 211
+S1 done 212
+S1 done 213
+S1 done 214
+S1 done 215
+S1 done 216
+S1 done 217
+S1 done 218
+S1 done 219
+S1 done 220
+S1 done 221
+S1 done 222
+S1 done 223
+S1 done 224
+S1 done 225
+S1 done 226
+S1 done 227
+S1 done 228
+S1 done 229
+S1 done 230
+S1 done 231
+S1 done 232
+S1 done 233
+S1 done 234
+S1 done 235
+S1 done 236
+S1 done 237
+S1 done 238
+S1 done 239
+S1 done 240
+S1 done 241
+S1 done 242
+S1 done 243
+S1 done 244
+S1 done 245
+S1 done 246
+S1 done 247
+S1 done 248
+S1 done 249
+S1 done 250
+S1 done 251
+S1 done 252
+S1 done 253
+S1 done 254
+S1 done 255
+S1 done 256
+S1 done 257
+S1 done 258
+S1 done 259
+S1 done 260
+S1 done 261
+S1 done 262
+S1 done 263
+S1 done 264
+S1 done 265
+S1 done 266
+S1 done 267
+S1 done 268
+S1 done 269
+S1 done 270
+S1 done 271
+S1 done 272
+S1 done 273
+S1 done 274
+S1 done 275
+S1 done 276
+S1 done 277
+S1 done 278
+S1 done 279
+S1 done 280
+S1 done 281
+S1 done 282
+S1 done 283
+S1 done 284
+S1 done 285
+S1 done 286
+S1 done 287
+S1 done 288
+S1 done 289
+S1 done 290
+S1 done 291
+S1 done 292
+S1 done 293
+S1 done 294
+S1 done 295
+S1 done 296
+S1 done 297
+S1 done 298
+S1 done 299
+S1 done 300
+S1 done 301
+S1 done 302
+S1 done 303
+S1 done 304
+S1 done 305
+S1 done 306
+S1 done 307
+S1 done 308
+S1 done 309
+S1 done 310
+S1 done 311
+S1 done 312
+S1 done 313
+S1 done 314
+S1 done 315
+S1 done 316
+S1 done 317
+S1 done 318
+S1 done 319
+S1 done 320
+S1 done 321
+S1 done 322
+S1 done 323
+S1 done 324
+S1 done 325
+S1 done 326
+S1 done 327
+S1 done 328
+S1 done 329
+S1 done 330
+S1 done 331
+S1 done 332
+S1 done 333
+S1 done 334
+S1 done 335
+S1 done 336
+S1 done 337
+S1 done 338
+S1 done 339
+S1 done 340
+S1 done 341
+S1 done 342
+S1 done 343
+S1 done 344
+S1 done 345
+S1 done 346
+S1 done 347
+S1 done 348
+S1 done 349
+S1 done 350
+S1 done 351
+S1 done 352
+S1 done 353
+S1 done 354
+S1 done 355
+S1 done 356
+S1 done 357
+S1 done 358
+S1 done 359
+S1 done 360
+S1 done 361
+S1 done 362
+S1 done 363
+S1 done 364
+S1 done 365
+S1 done 366
+S1 done 367
+S1 done 368
+S1 done 369
+S1 done 370
+S1 done 371
+S1 done 372
+S1 done 373
+S1 done 374
+S1 done 375
+S1 done 376
+S1 done 377
+S1 done 378
+S1 done 379
+S1 done 380
+S1 done 381
+S1 done 382
+S1 done 383
+S1 done 384
+S1 done 385
+S1 done 386
+S1 done 387
+S1 done 388
+S1 done 389
+S1 done 390
+S1 done 391
+S1 done 392
+S1 done 393
+S1 done 394
+S1 done 395
+S1 done 396
+S1 done 397
+S1 done 398
+S1 done 399
+S1 done 400
+S1 done 401
+S1 done 402
+S1 done 403
+S1 done 404
+S1 done 405
+S1 done 406
+S1 done 407
+S1 done 408
+S1 done 409
+S1 done 410
+S1 done 411
+S1 done 412
+S1 done 413
+S1 done 414
+S1 done 415
+S1 done 416
+S1 done 417
+S1 done 418
+S1 done 419
+S1 done 420
+S1 done 421
+S1 done 422
+S1 done 423
+S1 done 424
+S1 done 425
+S1 done 426
+S1 done 427
+S1 done 428
+S1 done 429
+S1 done 430
+S1 done 431
+S1 done 432
+S1 done 433
+S1 done 434
+S1 done 435
+S1 done 436
+S1 done 437
+S1 done 438
+S1 done 439
+S1 done 440
+S1 done 441
+S1 done 442
+S1 done 443
+S1 done 444
+S1 done 445
+S1 done 446
+S1 done 447
+S1 done 448
+S1 done 449
+S1 done 450
+S1 done 451
+S1 done 452
+S1 done 453
+S1 done 454
+S1 done 455
+S1 done 456
+S1 done 457
+S1 done 458
+S1 done 459
+S1 done 460
+S1 done 461
+S1 done 462
+S1 done 463
+S1 done 464
+S1 done 465
+S1 done 466
+S1 done 467
+S1 done 468
+S1 done 469
+S1 done 470
+S1 done 471
+S1 done 472
+S1 done 473
+S1 done 474
+S1 done 475
+S1 done 476
+S1 done 477
+S1 done 478
+S1 done 479
+S1 done 480
+S1 done 481
+S1 done 482
+S1 done 483
+S1 done 484
+S1 done 485
+S1 done 486
+S1 done 487
+S1 done 488
+S1 done 489
+S1 done 490
+S1 done 491
+S1 done 492
+S1 done 493
+S1 done 494
+S1 done 495
+S1 done 496
+S1 done 497
+S1 done 498
+S1 done 499
+S1 done 500
+S1 done 501
+S1 done 502
+S1 done 503
+S1 done 504
+S1 done 505
+S1 done 506
+S1 done 507
+S1 done 508
+S1 done 509
+S1 done 510
+S1 done 511
+S1 done 512
+S1 done 513
+S1 done 514
+S1 done 515
+S1 done 516
+S1 done 517
+S1 done 518
+S1 done 519
+S1 done 520
+S1 done 521
+S1 done 522
+S1 done 523
+S1 done 524
+S1 done 525
+S1 done 526
+S1 done 527
+S1 done 528
+S1 done 529
+S1 done 530
+S1 done 531
+S1 done 532
+S1 done 533
+S1 done 534
+S1 done 535
+S1 done 536
+S1 done 537
+S1 done 538
+S1 done 539
+S1 done 540
+S1 done 541
+S1 done 542
+S1 done 543
+S1 done 544
+S1 done 545
+S1 done 546
+S1 done 547
+S1 done 548
+S1 done 549
+S1 done 550
+S1 done 551
+S1 done 552
+S1 done 553
+S1 done 554
+S1 done 555
+S1 done 556
+S1 done 557
+S1 done 558
+S1 done 559
+S1 done 560
+S1 done 561
+S1 done 562
+S1 done 563
+S1 done 564
+S1 done 565
+S1 done 566
+S1 done 567
+S1 done 568
+S1 done 569
+S1 done 570
+S1 done 571
+S1 done 572
+S1 done 573
+S1 done 574
+S1 done 575
+S1 done 576
+S1 done 577
+S1 done 578
+S1 done 579
+S1 done 580
+S1 done 581
+S1 done 582
+S1 done 583
+S1 done 584
+S1 done 585
+S1 done 586
+S1 done 587
+S1 done 588
+S1 done 589
+S1 done 590
+S1 done 591
+S1 done 592
+S1 done 593
+S1 done 594
+S1 done 595
+S1 done 596
+S1 done 597
+S1 done 598
+S1 done 599
+S1 done 600
+S1 done 601
+S1 done 602
+S1 done 603
+S1 done 604
+S1 done 605
+S1 done 606
+S1 done 607
+S1 done 608
+S1 done 609
+S1 done 610
+S1 done 611
+S1 done 612
+S1 done 613
+S1 done 614
+S1 done 615
+S1 done 616
+S1 done 617
+S1 done 618
+S1 done 619
+S1 done 620
+S1 done 621
+S1 done 622
+S1 done 623
+S1 done 624
+S1 done 625
+S1 done 626
+S1 done 627
+S1 done 628
+S1 done 629
+S1 done 630
+S1 done 631
+S1 done 632
+S1 done 633
+S1 done 634
+S1 done 635
+S1 done 636
+S1 done 637
+S1 done 638
+S1 done 639
+S1 done 640
+S1 done 641
+S1 done 642
+S1 done 643
+S1 done 644
+S1 done 645
+S1 done 646
+S1 done 647
+S1 done 648
+S1 done 649
+S1 done 650
+S1 done 651
+S1 done 652
+S1 done 653
+S1 done 654
+S1 done 655
+S1 done 656
+S1 done 657
+S1 done 658
+S1 done 659
+S1 done 660
+S1 done 661
+S1 done 662
+S1 done 663
+S1 done 664
+S1 done 665
+S1 done 666
+S1 done 667
+S1 done 668
+S1 done 669
+S1 done 670
+S1 done 671
+S1 done 672
+S1 done 673
+S1 done 674
+S1 done 675
+S1 done 676
+S1 done 677
+S1 done 678
+S1 done 679
+S1 done 680
+S1 done 681
+S1 done 682
+S1 done 683
+S1 done 684
+S1 done 685
+S1 done 686
+S1 done 687
+S1 done 688
+S1 done 689
+S1 done 690
+S1 done 691
+S1 done 692
+S1 done 693
+S1 done 694
+S1 done 695
+S1 done 696
+S1 done 697
+S1 done 698
+S1 done 699
+S1 done 700
+S1 done 701
+S1 done 702
+S1 done 703
+S1 done 704
+S1 done 705
+S1 done 706
+S1 done 707
+S1 done 708
+S1 done 709
+S1 done 710
+S1 done 711
+S1 done 712
+S1 done 713
+S1 done 714
+S1 done 715
+S1 done 716
+S1 done 717
+S1 done 718
+S1 done 719
+S1 done 720
+S1 done 721
+S1 done 722
+S1 done 723
+S1 done 724
+S1 done 725
+S1 done 726
+S1 done 727
+S1 done 728
+S1 done 729
+S1 done 730
+S1 done 731
+S1 done 732
+S1 done 733
+S1 done 734
+S1 done 735
+S1 done 736
+S1 done 737
+S1 done 738
+S1 done 739
+S1 done 740
+S1 done 741
+S1 done 742
+S1 done 743
+S1 done 744
+S1 done 745
+S1 done 746
+S1 done 747
+S1 done 748
+S1 done 749
+S1 done 750
+S1 done 751
+S1 done 752
+S1 done 753
+S1 done 754
+S1 done 755
+S1 done 756
+S1 done 757
+S1 done 758
+S1 done 759
+S1 done 760
+S1 done 761
+S1 done 762
+S1 done 763
+S1 done 764
+S1 done 765
+S1 done 766
+S1 done 767
+S1 done 768
+S1 done 769
+S1 done 770
+S1 done 771
+S1 done 772
+S1 done 773
+S1 done 774
+S1 done 775
+S1 done 776
+S1 done 777
+S1 done 778
+S1 done 779
+S1 done 780
+S1 done 781
+S1 done 782
+S1 done 783
+S1 done 784
+S1 done 785
+S1 done 786
+S1 done 787
+S1 done 788
+S1 done 789
+S1 done 790
+S1 done 791
+S1 done 792
+S1 done 793
+S1 done 794
+S1 done 795
+S1 done 796
+S1 done 797
+S1 done 798
+S1 done 799
+S1 done 800
+S1 done 801
+S1 done 802
+S1 done 803
+S1 done 804
+S1 done 805
+S1 done 806
+S1 done 807
+S1 done 808
+S1 done 809
+S1 done 810
+S1 done 811
+S1 done 812
+S1 done 813
+S1 done 814
+S1 done 815
+S1 done 816
+S1 done 817
+S1 done 818
+S1 done 819
+S1 done 820
+S1 done 821
+S1 done 822
+S1 done 823
+S1 done 824
+S1 done 825
+S1 done 826
+S1 done 827
+S1 done 828
+S1 done 829
+S1 done 830
+S1 done 831
+S1 done 832
+S1 done 833
+S1 done 834
+S1 done 835
+S1 done 836
+S1 done 837
+S1 done 838
+S1 done 839
+S1 done 840
+S1 done 841
+S1 done 842
+S1 done 843
+S1 done 844
+S1 done 845
+S1 done 846
+S1 done 847
+S1 done 848
+S1 done 849
+S1 done 850
+S1 done 851
+S1 done 852
+S1 done 853
+S1 done 854
+S1 done 855
+S1 done 856
+S1 done 857
+S1 done 858
+S1 done 859
+S1 done 860
+S1 done 861
+S1 done 862
+S1 done 863
+S1 done 864
+S1 done 865
+S1 done 866
+S1 done 867
+S1 done 868
+S1 done 869
+S1 done 870
+S1 done 871
+S1 done 872
+S1 done 873
+S1 done 874
+S1 done 875
+S1 done 876
+S1 done 877
+S1 done 878
+S1 done 879
+S1 done 880
+S1 done 881
+S1 done 882
+S1 done 883
+S1 done 884
+S1 done 885
+S1 done 886
+S1 done 887
+S1 done 888
+S1 done 889
+S1 done 890
+S1 done 891
+S1 done 892
+S1 done 893
+S1 done 894
+S1 done 895
+S1 done 896
+S1 done 897
+S1 done 898
+S1 done 899
+S1 done 900
+S1 done 901
+S1 done 902
+S1 done 903
+S1 done 904
+S1 done 905
+S1 done 906
+S1 done 907
+S1 done 908
+S1 done 909
+S1 done 910
+S1 done 911
+S1 done 912
+S1 done 913
+S1 done 914
+S1 done 915
+S1 done 916
+S1 done 917
+S1 done 918
+S1 done 919
+S1 done 920
+S1 done 921
+S1 done 922
+S1 done 923
+S1 done 924
+S1 done 925
+S1 done 926
+S1 done 927
+S1 done 928
+S1 done 929
+S1 done 930
+S1 done 931
+S1 done 932
+S1 done 933
+S1 done 934
+S1 done 935
+S1 done 936
+S1 done 937
+S1 done 938
+S1 done 939
+S1 done 940
+S1 done 941
+S1 done 942
+S1 done 943
+S1 done 944
+S1 done 945
+S1 done 946
+S1 done 947
+S1 done 948
+S1 done 949
+S1 done 950
+S1 done 951
+S1 done 952
+S1 done 953
+S1 done 954
+S1 done 955
+S1 done 956
+S1 done 957
+S1 done 958
+S1 done 959
+S1 done 960
+S1 done 961
+S1 done 962
+S1 done 963
+S1 done 964
+S1 done 965
+S1 done 966
+S1 done 967
+S1 done 968
+S1 done 969
+S1 done 970
+S1 done 971
+S1 done 972
+S1 done 973
+S1 done 974
+S1 done 975
+S1 done 976
+S1 done 977
+S1 done 978
+S1 done 979
+S1 done 980
+S1 done 981
+S1 done 982
+S1 done 983
+S1 done 984
+S1 done 985
+S1 done 986
+S1 done 987
+S1 done 988
+S1 done 989
+S1 done 990
+S1 done 991
+S1 done 992
+S1 done 993
+S1 done 994
+S1 done 995
+S1 done 996
+S1 done 997
+S1 done 998
+S1 done 999
+S2 statement done!
Index: tests/concurrency/pthread/.expect/pthread_demo_create_join.txt
===================================================================
--- tests/concurrency/pthread/.expect/pthread_demo_create_join.txt	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
+++ tests/concurrency/pthread/.expect/pthread_demo_create_join.txt	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
@@ -0,0 +1,1 @@
+final res is 190
Index: tests/concurrency/pthread/.expect/pthread_demo_lock.txt
===================================================================
--- tests/concurrency/pthread/.expect/pthread_demo_lock.txt	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
+++ tests/concurrency/pthread/.expect/pthread_demo_lock.txt	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
@@ -0,0 +1,6 @@
+lock res is 2000000000
+in trylocktest1 res1 is 0
+in trylocktest1 res2 is 0
+in trylocktest2 res1 is 16
+in trylocktest2 res2 is 16
+cnt_trylock is 200000000
Index: tests/concurrency/pthread/.expect/pthread_key_test.txt
===================================================================
--- tests/concurrency/pthread/.expect/pthread_key_test.txt	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
+++ tests/concurrency/pthread/.expect/pthread_key_test.txt	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
@@ -0,0 +1,6 @@
+Destructor function invoked
+Destructor function invoked
+Destructor function invoked
+Destructor function invoked
+Destructor function invoked
+total value is 207, total value by pthread_getspecific is 207
Index: tests/concurrency/pthread/.expect/pthread_once_test.txt
===================================================================
--- tests/concurrency/pthread/.expect/pthread_once_test.txt	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
+++ tests/concurrency/pthread/.expect/pthread_once_test.txt	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
@@ -0,0 +1,1 @@
+in once_fn
Index: tests/concurrency/pthread/bounded_buffer.cfa
===================================================================
--- tests/concurrency/pthread/bounded_buffer.cfa	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
+++ tests/concurrency/pthread/bounded_buffer.cfa	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
@@ -0,0 +1,156 @@
+#include <stdlib.h>										// prototype: rand
+#include <fstream.hfa>
+#include <thread.hfa>
+#include <pthread.h>
+#include <errno.h>
+// tested pthread mutex related routines, pthread cond related routines
+// tested pthread_create/join
+
+enum { BufferSize = 50 };
+
+volatile int producer_val_total;
+volatile int consumer_val_total;
+
+pthread_mutex_t producer_cnt_lock, consumer_cnt_lock;
+
+
+forall( T ){
+    struct Buffer
+    {
+        int front, back, count;
+		T elements[BufferSize];
+        pthread_mutex_t _mutex;
+	    pthread_cond_t Full, Empty;							// waiting consumers & producers
+    };
+
+    void ?{}( Buffer(T) & buffer ) with( buffer ) {
+         [front, back, count] = 0; 
+         pthread_mutex_init(&_mutex, NULL);
+         pthread_cond_init(&Full, NULL);
+         pthread_cond_init(&Empty, NULL);
+    }
+
+    void ^?{}( Buffer(T) & buffer ) with( buffer ){
+        pthread_mutex_destroy(&_mutex);
+        pthread_cond_destroy(&Full);
+        pthread_cond_destroy(&Empty);
+    }
+
+    int query( Buffer(T) & buffer ) { return buffer.count; } // read-only, no mutual exclusion
+    
+    void insert( Buffer(T) & buffer, T elem ) with(buffer) {
+		pthread_mutex_lock(&_mutex);
+		while ( count == 20 ) pthread_cond_wait( &Empty, &_mutex ); // block producer
+		elements[back] = elem;
+		back = ( back + 1 ) % 20;
+		count += 1;
+		pthread_cond_signal( &Full );					// unblock consumer
+        pthread_mutex_unlock(&_mutex);
+	}
+
+    T remove(Buffer(T) & buffer) with(buffer) {
+		pthread_mutex_lock(&_mutex);
+		while ( count == 0 ) pthread_cond_wait( &Full, &_mutex ); // block consumer
+		T elem = elements[front];
+		front = ( front + 1 ) % 20;
+		count -= 1;
+		pthread_cond_signal( &Empty );					// unblock producer
+        pthread_mutex_unlock(&_mutex);
+		return elem;
+	}
+
+}
+
+void *producer( void *arg ) {
+    Buffer(int) &buf = *(Buffer(int)*)arg;
+	const int NoOfItems = prng(*active_thread(), 40);
+	int item;
+	for ( int i = 1; i <= NoOfItems; i += 1 ) {			// produce a bunch of items
+		item = prng(*active_thread(), 1, 101);			// produce a random number
+		//sout | "Producer:" | pthread_self() | " value:" | item;
+		insert( buf,item );								// insert element into queue
+        pthread_mutex_lock(&producer_cnt_lock);
+        producer_val_total += item;
+        pthread_mutex_unlock(&producer_cnt_lock);
+	} // for
+	//sout | "Producer:" | pthread_self() | " is finished";
+	return NULL;
+} // producer
+
+void *consumer( void *arg ) {
+	Buffer(int) &buf = *(Buffer(int) *)arg;
+	int item;
+	for ( ;; ) {										// consume until a negative element appears
+		item = remove(buf);							// remove from front of queue
+		//sout | "Consumer:" | pthread_self() | " value:" | item;
+	  if ( item == -1 ) break;
+        pthread_mutex_lock(&consumer_cnt_lock);
+        consumer_val_total += item;
+        pthread_mutex_unlock(&consumer_cnt_lock);
+	} // for
+	//sout | "Consumer:" | pthread_self() | " is finished";
+	return NULL;
+} // consumer
+
+int main() {
+	const int NoOfCons = 20, NoOfProds = 30;
+	Buffer(int) buf;								// create a buffer monitor
+	pthread_t cons[NoOfCons];							// pointer to an array of consumers
+	pthread_t prods[NoOfProds];							// pointer to an array of producers
+    pthread_mutex_init(&producer_cnt_lock, NULL);
+    pthread_mutex_init(&consumer_cnt_lock, NULL);
+	// parallelism
+    set_seed( 1003 );
+
+	processor p[5];
+    {
+        // create/join and mutex/condition test
+        //sout | "create/join and mutex/condition test";
+        for ( int i = 0; i < NoOfCons; i += 1 ) {			// create consumers
+            if ( pthread_create( &cons[i], NULL, consumer, (void*)&buf ) != 0 ) {
+                sout | "create thread failure, errno:" | errno;
+                exit( EXIT_FAILURE );
+            } // if
+        } // for
+        for ( int i = 0; i < NoOfProds; i += 1 ) {			// 	create producers
+            if ( pthread_create( &prods[i], NULL, producer, (void*)&buf ) != 0 ) {
+                sout | "create thread failure";
+                exit( EXIT_FAILURE );
+            } // if
+        } // for
+
+        void *result;
+        for ( int i = 0; i < NoOfProds; i += 1 ) {			// wait for producers to end
+            if ( pthread_join( prods[i], &result ) != 0 ) {
+                sout | " producers join thread failure";
+                exit( EXIT_FAILURE );
+            } // if
+            if ( (uint64_t)result != 0 ) {
+                sout | "producers" | prods[i] |" bad return value " | result;
+                exit( EXIT_FAILURE );
+            } // if
+            //sout | "join prods[" | i | "]:" | prods[i] | " result:" | result;
+        } // for
+
+        for ( int i = 0; i < NoOfCons; i += 1 ) {			// terminate each consumer
+            insert(buf, -1 );
+        } // for
+
+        for ( int i = 0; i < NoOfCons; i += 1 ) {			// wait for consumer to end
+            if ( pthread_join( cons[i], &result ) != 0 ) {
+                sout| "consumers join thread failure" ;
+                exit( EXIT_FAILURE );
+            } // if
+            if ( (uint64_t)result != 0 ) {
+                sout| "consumers bad return value" | result;
+                exit( EXIT_FAILURE );
+            } // if
+        } // for
+        sout | "producer total value is " | producer_val_total;
+        sout | "consumer total value is " | consumer_val_total;
+    }
+
+	
+
+	
+}
Index: tests/concurrency/pthread/pthread_attr_test.cfa
===================================================================
--- tests/concurrency/pthread/pthread_attr_test.cfa	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
+++ tests/concurrency/pthread/pthread_attr_test.cfa	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
@@ -0,0 +1,29 @@
+/* test attr init; set stack; get stack */
+
+#include <fstream.hfa>
+#include <thread.hfa>
+
+void* foo(void* _attr){
+    size_t size;
+    pthread_attr_t* attr = (pthread_attr_t*)_attr;
+    int status = pthread_attr_getstacksize(attr, &size);
+    if (status != 0){
+        sout | "error return code";
+        exit(1);
+    }
+    sout | "stack size is " | size;
+    return NULL;
+}
+
+int main(int argc, char const *argv[])
+{
+    pthread_attr_t attr;
+    pthread_attr_init(&attr);
+    pthread_attr_setstacksize(&attr, 123456789);
+    pthread_t thr;
+    void* res;
+    pthread_create(&thr, &attr, foo, (void*)&attr);
+    pthread_join(thr, &res);
+    pthread_attr_destroy(&attr);
+    return 0;
+}
Index: tests/concurrency/pthread/pthread_cond_test.cfa
===================================================================
--- tests/concurrency/pthread/pthread_cond_test.cfa	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
+++ tests/concurrency/pthread/pthread_cond_test.cfa	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
@@ -0,0 +1,46 @@
+/* small test of pthread cond */
+
+#include <fstream.hfa>
+#include <thread.hfa>
+#include <pthread.h>
+
+int done_flag = 0;
+pthread_mutex_t _mutex;
+pthread_cond_t cond;
+
+extern "C"{
+    void* S1(void* arg){
+        pthread_mutex_lock(&_mutex);
+        for (int i = 0; i < 1000; i++) sout | "S1 done " | i;
+        done_flag = 1;
+        pthread_mutex_unlock(&_mutex);
+        pthread_cond_signal(&cond);
+        return NULL;
+    }
+
+    void* S2(void* arg){
+        pthread_mutex_lock(&_mutex);
+        if (!done_flag) pthread_cond_wait(&cond, &_mutex);
+        sout | "S2 statement done!";
+        pthread_mutex_unlock(&_mutex);
+        return NULL;
+    }
+}
+
+
+
+int main(int argc, char const *argv[])
+{
+    /* code */
+    pthread_mutex_init(&_mutex, NULL);
+    pthread_cond_init(&cond, NULL);
+    pthread_t s1,s2;
+    pthread_create(&s1, NULL, S1, NULL);
+    pthread_create(&s2, NULL, S2, NULL);
+    void* res = NULL;
+    pthread_join(s1, &res);
+    pthread_join(s2, &res);
+    pthread_mutex_destroy(&_mutex);
+    pthread_cond_destroy(&cond);
+    return 0;
+}
Index: tests/concurrency/pthread/pthread_demo_create_join.cfa
===================================================================
--- tests/concurrency/pthread/pthread_demo_create_join.cfa	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
+++ tests/concurrency/pthread/pthread_demo_create_join.cfa	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
@@ -0,0 +1,41 @@
+#include <fstream.hfa>
+#include <thread.hfa>
+/* test pthread create/join/exit */
+
+int arr[20];
+
+void* fetch(void* idx){
+    int res = arr[(uint64_t)idx];
+    pthread_exit((void*)res);
+    sout | "it should not be here";
+    exit(1);
+    //return (void*)res;
+}
+
+void arr_init(){
+    for (int i = 0; i < 20; i++){
+        arr[i] = i;
+    }
+}
+
+int main(int argc, char const *argv[])
+{
+    pthread_t threads[20];
+    arr_init();
+    int status;
+    for (int i = 0; i < 20; i++){
+        status = pthread_create(&threads[i], NULL, fetch, (void*)i);
+        if (status != 0) exit(1);
+    }
+    int res = 0;
+    for (int i = 0; i < 20; i++){
+        void* _res = NULL;
+        status = pthread_join(threads[i], &_res);
+        if (status != 0) exit(2);
+        if (((uint64_t)_res) != i) exit(3);
+        res += (uint64_t)_res;
+    }
+    sout | "final res is" | res;
+
+    return 0;
+}
Index: tests/concurrency/pthread/pthread_demo_lock.cfa
===================================================================
--- tests/concurrency/pthread/pthread_demo_lock.cfa	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
+++ tests/concurrency/pthread/pthread_demo_lock.cfa	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
@@ -0,0 +1,124 @@
+#include <fstream.hfa>
+#include <thread.hfa>
+/* 
+    test pthread_mutex to provide mutual exclusion
+    test pthread_mutex_trylock not block when lock is acquired by others; test pthread_mutex_trylock can acquire the lock
+*/
+volatile int cnt_nolock = 0;
+volatile int cnt_lock = 0;
+volatile int cnt_trylock = 0;
+extern "C"{
+    static pthread_mutex_t _mutex;
+}
+
+/* mutex pthread routine  */
+// unlocked increnment
+void* inc_unlock(void* cnt){
+    for (int i = 0; i < (uint64_t)cnt; i++){
+        cnt_nolock++;
+    }   // for
+    return NULL;
+}   
+// locked increment
+void* inc_lock(void* cnt){
+    pthread_mutex_lock(&_mutex);
+    for (int i = 0; i < (uint64_t)cnt; i++){
+        cnt_lock++;
+    }   // for
+    pthread_mutex_unlock(&_mutex);
+    return NULL;
+}
+
+/* test lock vs unlock */
+void test_unlock(){
+    pthread_t threads[20];
+    for (int i = 0; i < 20; i++){
+        pthread_create(&threads[i], NULL, inc_unlock, (void*)100000000);
+    }
+    for (int i = 0; i < 20; i++){
+        void * res = NULL;
+        pthread_join(threads[i], &res);
+    }
+    sout | "unlock res is" | cnt_nolock;
+    cnt_nolock = 0;
+}
+extern "C"{
+    void test_lock(){
+        pthread_mutex_init(&_mutex, NULL);
+        pthread_t threads[20];
+        for (int i = 0; i < 20; i++){
+            
+            pthread_create(&threads[i], NULL, inc_lock, (void*)100000000);
+        }
+        for (int i = 0; i < 20; i++){
+            void * res = NULL;
+            pthread_join(threads[i], &res);
+        }
+        sout | "lock res is" | cnt_lock;
+        pthread_mutex_destroy(&_mutex);
+        if (cnt_lock != 100000000 * 20) {
+            sout | "pthread mutex not working";
+            exit(1);
+        }
+        cnt_lock = 0;
+    }
+}
+
+
+/* mutex trylock pthread routine  */
+void* trylock_test2(void* arg){
+    int res = pthread_mutex_trylock(&_mutex);
+    sout | "in trylocktest2 res1 is" | res;
+    res = pthread_mutex_trylock(&_mutex);
+    sout | "in trylocktest2 res2 is" | res;
+    pthread_mutex_lock(&_mutex);
+    for (int i = 0; i < (uint64_t)arg; i++) cnt_trylock++;
+    pthread_mutex_unlock(&_mutex);
+    return NULL;
+}
+
+void* trylock_test1(void* arg){
+    int res = pthread_mutex_trylock(&_mutex);
+    sout | "in trylocktest1 res1 is" | res;
+    res = pthread_mutex_trylock(&_mutex);
+    sout | "in trylocktest1 res2 is" | res;
+    pthread_t task2;
+    pthread_create(&task2, NULL, trylock_test2, (void*)100000000);
+
+    // inc cnt then release the lock
+    for (int i = 0; i < (uint64_t)arg; i++) cnt_trylock++;
+    pthread_mutex_unlock(&_mutex);
+    pthread_mutex_unlock(&_mutex);
+    void * dummy = NULL;
+    pthread_join(task2, &dummy);
+    sout | "cnt_trylock is " | cnt_trylock;
+    return NULL;
+}
+
+// trylock test
+void test_trylock(){
+    pthread_mutex_init(&_mutex, NULL);
+    pthread_t task1;
+    pthread_create(&task1, NULL, trylock_test1, (void*)100000000);
+    void * dummy = NULL;
+    pthread_join(task1,&dummy);
+    pthread_mutex_destroy(&_mutex);
+    if (cnt_trylock != 100000000 * 2) {
+        sout | "pthread try mutex not working";
+        exit(1);
+    }
+    cnt_trylock = 0;
+}
+
+
+
+int main(int argc, char const *argv[])
+{
+    
+    // compare unlock vs lock
+    test_lock();
+    // test trylock
+    test_trylock();
+    
+    return 0;
+}
Index: tests/concurrency/pthread/pthread_key_test.cfa
===================================================================
--- tests/concurrency/pthread/pthread_key_test.cfa	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
+++ tests/concurrency/pthread/pthread_key_test.cfa	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
@@ -0,0 +1,126 @@
+
+/* test pthread_key_create/set_specific/get_specific
+    get specific == set specific
+    dtor is invoked (no mem leak)
+*/
+
+
+extern "C"{
+
+    #include <stdio.h>
+    #include <stdlib.h>
+    #include <errno.h>
+    #include <pthread.h>
+
+    #define THREADS 5
+    #define BUFFSZ  48
+    pthread_key_t   key;
+    volatile int total_value,total_value_getspec;
+    pthread_mutex_t value_mutex;
+
+    void            *threadfunc(void *parm)
+    {
+        int        status;
+        void      *value;
+        int        threadnum;
+        int       *tnum;
+        void      *getvalue;
+        char       Buffer[BUFFSZ];
+
+        tnum = (int*)parm;
+        threadnum = *tnum;
+
+        //printf("Thread %d executing\n", threadnum);
+        value = (void *)(rand()%100);
+        status = pthread_setspecific(key, (void *) value);
+        if ( status !=  0) {
+            printf("pthread_setspecific failed, thread %d, errno %d",
+                                                        threadnum, errno);
+            return (void*)12;
+        }
+        pthread_mutex_lock(&value_mutex);
+        total_value_getspec += (int)value;
+        total_value += (int)pthread_getspecific(key);
+        pthread_mutex_unlock(&value_mutex);
+
+
+        if (!(value = malloc(sizeof(Buffer))))
+            printf("Thread %d could not allocate storage, errno = %d\n",
+                                                        threadnum, errno);
+        status = pthread_setspecific(key, (void *) value);
+        if ( status !=  0) {
+            printf("pthread_setspecific failed, thread %d, errno %d",
+                                                        threadnum, errno);
+            return (void*)12;
+        }
+        //printf("Thread %d setspecific value: %d\n", threadnum, value);
+
+        getvalue = 0;
+        getvalue = pthread_getspecific(key);
+
+        if (getvalue != value) {
+        printf("getvalue not valid, getvalue=%d", (u_int64_t)getvalue);
+            return (void*)68;
+        }
+
+        pthread_exit((void *)0);
+    }
+
+    void  destr_fn(void *parm)
+    {
+
+        printf("Destructor function invoked\n");
+        free(parm);
+    }
+
+
+    int main() {
+        int          getvalue;
+        int          status;
+        int          i;
+        int          threadparm[THREADS];
+        pthread_t    threadid[THREADS];
+        void*          thread_stat[THREADS];
+
+        // rand seed for testing
+        srand(1003);
+        pthread_mutex_init(&value_mutex, NULL);
+
+        // testing getspec and setspec
+        total_value = 0;
+        total_value_getspec = 0;
+
+        if ((status = pthread_key_create(&key, destr_fn )) < 0) {
+            printf("pthread_key_create failed, errno=%d", errno);
+            exit(1);
+        }
+
+        // create 3 THREADS, pass each its number
+        for (i=0; i<THREADS; i++) {
+            threadparm[i] = i+1;
+            status = pthread_create( &threadid[i],
+                                    NULL,
+                                    threadfunc,
+                                    (void *)&threadparm[i]);
+            if ( status <  0) {
+            printf("pthread_create failed, errno=%d", errno);
+            exit(2);
+            }
+        }
+
+        for ( i=0; i<THREADS; i++) {
+            status = pthread_join( threadid[i], (void **)&thread_stat[i]);
+            if ( status <  0) {
+            printf("pthread_join failed, thread %d, errno=%d\n", i+1, errno);
+            }
+
+            if (thread_stat[i] != 0)   {
+                printf("bad thread status, thread %d, status=%d\n", i+1,
+                                                        (u_int64_t)thread_stat[i]);
+            }
+        }
+        printf("total value is %d, total value by pthread_getspecific is %d\n", total_value, total_value_getspec);
+        exit(0);
+    }   // main
+}
+
Index: tests/concurrency/pthread/pthread_once_test.cfa
===================================================================
--- tests/concurrency/pthread/pthread_once_test.cfa	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
+++ tests/concurrency/pthread/pthread_once_test.cfa	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
@@ -0,0 +1,96 @@
+// tested pthread once,create,join
+
+                                                          
+                                                                                
+                                                            
+#include <fstream.hfa>
+#include <thread.hfa>                                                                    
+#define THREADS 20                                                                                                                                                    
+
+extern "C"{
+    #include <pthread.h>
+    #include <stdio.h>
+    #include <errno.h> 
+    int             once_counter=0;                                                 
+    pthread_once_t  once_control = PTHREAD_ONCE_INIT;                               
+                                                                                    
+    void  once_fn(void)                                                             
+    {                                                                               
+    puts("in once_fn");                                                            
+    once_counter++;                                                                
+    }                                                                               
+                                                                                    
+    void            *threadfunc(void *parm)                                         
+    {                                                                               
+    int        status;                                                             
+    int        threadnum;                                                          
+    int        *tnum;                                                              
+                                                                                    
+    tnum = (int *)parm;                                                                   
+    threadnum = *tnum;                                                             
+                                                                                    
+    //printf("Thread %d executing\n", threadnum);                                    
+                                                                                    
+    status = pthread_once(&once_control, once_fn);                                 
+    if ( status <  0)                                                              
+        printf("pthread_once failed, thread %d, errno=%d\n", threadnum,             
+                                                                errno);             
+                                                                                    
+    //pthread_exit((void *)0);  
+    return NULL;                                                     
+    }  
+
+
+    void once_rtn(){
+        printf("in once init\n");
+    }
+    void test(){
+
+        processor p[10];
+        
+
+        int          status;                                                           
+        int          i;                                                                
+        int          threadparm[THREADS];                                              
+        pthread_t    threadid[THREADS];                                                
+        void*          thread_stat[THREADS];                                             
+                                                                                        
+        for (i=0; i<THREADS; i++) {                                                    
+            threadparm[i] = i+1;                                                        
+            status = pthread_create( &threadid[i],                                      
+                                    NULL,                                              
+                                    threadfunc,                                        
+                                    (void *)&threadparm[i]);                           
+            if ( status <  0) {                                                         
+            printf("pthread_create failed, errno=%d", errno);                        
+            exit(2);                                                                 
+            }                                                                           
+        }                                                                             
+                                                                                        
+        for ( i=0; i<THREADS; i++) {                                                   
+            status = pthread_join( threadid[i], (void **)&thread_stat[i]);               
+            if ( status <  0)                                                           
+            printf("pthread_join failed, thread %d, errno=%d\n", i+1, errno);        
+                                                                                        
+            if (thread_stat[i] != 0)                                                    
+                printf("bad thread status, thread %d, status=%d\n", i+1,                
+                                                        (int)thread_stat[i]);             
+        }                                                                             
+                                                                                        
+        if (once_counter != 1) {
+            printf("once_fn did not get control once, counter=%d",once_counter);         
+            exit(1);
+        }                                                        
+        
+        exit(0);
+        
+    }
+}
+
+
+
+int main(int argc, char const *argv[])
+{
+    test();
+    return 0;
+}
Index: tests/concurrency/readyQ/.expect/barrier_sleeper.txt
===================================================================
--- tests/concurrency/readyQ/.expect/barrier_sleeper.txt	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
+++ tests/concurrency/readyQ/.expect/barrier_sleeper.txt	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
@@ -0,0 +1,1 @@
+Done
Index: tests/concurrency/readyQ/.expect/leader_spin.txt
===================================================================
--- tests/concurrency/readyQ/.expect/leader_spin.txt	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
+++ tests/concurrency/readyQ/.expect/leader_spin.txt	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
@@ -0,0 +1,2 @@
+Leader done
+done
Index: tests/concurrency/readyQ/barrier_sleeper.cfa
===================================================================
--- tests/concurrency/readyQ/barrier_sleeper.cfa	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
+++ tests/concurrency/readyQ/barrier_sleeper.cfa	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
@@ -0,0 +1,59 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2022 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+//
+// concurrent/readyQ/barrier_sleeper.cfa -- testing the ready-queue
+//
+// Author           : Thierry Delisle
+// Created On       : Fri Apr 01 14:01:00 2022
+// Last Modified By :
+// Last Modified On :
+// Update Count     :
+//
+
+// Test validates that processors running out of work repeatedly won't deadlock
+// Processors and thread are removed in an interleaved fashion for a weirder case.
+
+#include <concurrency/barrier.hfa>
+#include <fstream.hfa>
+#include <time.hfa>
+#include <thread.hfa>
+
+const unsigned NUM_LAPS = 173;
+const unsigned NUM_THREADS = 11;
+
+barrier bar = { NUM_THREADS };
+
+thread Eager {};
+void main( Eager & ) {
+	for(NUM_LAPS) {
+		block(bar);
+	}
+}
+
+thread Sleeper{};
+void main( Sleeper & ) {
+	for(NUM_LAPS) {
+		sleep(500`us);
+		block(bar);
+	}
+}
+
+int main() {
+	{
+		processor p1[2];
+		{
+			if (NUM_THREADS <= 4) sout | "Insufficient threads";
+			Eager e[NUM_THREADS - 3];
+			{
+				processor p2[2];
+				{
+					Sleeper s[3];
+				}
+			}
+		}
+	}
+	sout | "Done";
+}
Index: tests/concurrency/readyQ/leader_spin.cfa
===================================================================
--- tests/concurrency/readyQ/leader_spin.cfa	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
+++ tests/concurrency/readyQ/leader_spin.cfa	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
@@ -0,0 +1,128 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2022 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+//
+// concurrent/readyQ/leader_spin.cfa -- validates ready queue fairness
+//
+// Author           : Thierry Delisle
+// Created On       : Fri Apr 01 11:39:09 2022
+// Last Modified By :
+// Last Modified On :
+// Update Count     :
+//
+
+#include <stdlib.hfa>
+#include <fstream.hfa>
+#include <thread.hfa>
+
+// Test validates that all cores being constantly active doesn't prevent starvation.
+// This test is very similar to the transfer benchmark, without all the benchmark bells and whistle.
+
+// Deactivate preemption because it could fix starvation issues.
+Duration default_preemption() {
+	return 0;
+}
+
+PRNG64 lead_rng;
+volatile unsigned leader;
+volatile size_t lead_idx;
+
+const uint64_t nthreads = 17;
+const uint64_t stop_count = 327;
+
+thread$ * the_main;
+
+thread __attribute__((aligned(128))) MyThread {
+	unsigned id;
+	volatile size_t idx;
+};
+
+void ?{}( MyThread & this, unsigned id ) {
+	this.id = id;
+	this.idx = 0;
+}
+
+MyThread ** threads;
+
+static void waitgroup() {
+	for(i; nthreads) {
+		while( threads[i]->idx != lead_idx ) {
+			sched_yield();
+		}
+	}
+}
+
+static void lead(MyThread & this) {
+	this.idx = ++lead_idx;
+	if(lead_idx > stop_count) {
+		sout | "Leader done";
+		unpark( the_main );
+		return;
+	}
+
+	waitgroup();
+
+	unsigned nleader = prng( lead_rng, nthreads );
+	__atomic_store_n( &leader, nleader, __ATOMIC_SEQ_CST );
+}
+
+static void wait(MyThread & this) {
+	yield();
+	if(lead_idx == this.idx) {
+		return;
+	}
+
+	assert( (lead_idx - 1) == this.idx );
+	__atomic_add_fetch( &this.idx, 1, __ATOMIC_SEQ_CST );
+	yield();
+}
+
+void main(MyThread & this) {
+	park();
+
+	unsigned me = this.id;
+
+	for() {
+		if(leader == me) {
+			lead( this );
+		}
+		else {
+			wait( this );
+		}
+		if(lead_idx > stop_count) break;
+	}
+}
+
+// ==================================================
+int main(int argc, char * argv[]) {
+	lead_idx = 0;
+	leader = prng( lead_rng, nthreads );
+
+	the_main = active_thread();
+	processor procs[2];
+	{
+		threads = alloc(nthreads);
+		for(i; nthreads) {
+			threads[i] = malloc();
+			(*threads[i]){
+				i
+			};
+		}
+
+		for(i; nthreads) unpark(*threads[i]);
+
+		park();
+
+		for(i; nthreads) {
+			MyThread * thrd = threads[i];
+			join(*thrd);
+			^( *thrd ){};
+			free(thrd);
+		}
+
+		free(threads);
+	}
+	sout | "done";
+}
Index: tests/concurrency/signal/.expect/block.txt
===================================================================
--- tests/concurrency/signal/.expect/block.txt	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
+++ tests/concurrency/signal/.expect/block.txt	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
@@ -0,0 +1,2 @@
+Starting waiters
+Waiters done
Index: tests/concurrency/signal/.expect/disjoint.txt
===================================================================
--- tests/concurrency/signal/.expect/disjoint.txt	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
+++ tests/concurrency/signal/.expect/disjoint.txt	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
@@ -0,0 +1,11 @@
+1000
+2000
+3000
+4000
+5000
+6000
+7000
+8000
+9000
+10000
+All waiter done
Index: tests/concurrency/signal/.expect/wait.txt
===================================================================
--- tests/concurrency/signal/.expect/wait.txt	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
+++ tests/concurrency/signal/.expect/wait.txt	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
@@ -0,0 +1,2 @@
+Starting
+Done
Index: tests/concurrency/signal/block.cfa
===================================================================
--- tests/concurrency/signal/block.cfa	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
+++ tests/concurrency/signal/block.cfa	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
@@ -0,0 +1,139 @@
+//---------------------------------------------------------
+// Barging test
+// Ensures that no barging can occur between :
+//   - the frontend of the signal_block and the signaled thread
+//   - the signaled  threadand the backend of the signal_block
+//---------------------------------------------------------
+
+
+#include <fstream.hfa>
+#include <kernel.hfa>
+#include <monitor.hfa>
+#include <stdlib.hfa>
+#include <thread.hfa>
+#include <time.hfa>
+
+#include "long_tests.hfa"
+
+#ifndef PREEMPTION_RATE
+#define PREEMPTION_RATE 10`ms
+#endif
+
+Duration default_preemption() {
+	return PREEMPTION_RATE;
+}
+
+#ifdef TEST_LONG
+static const unsigned long N = 150_000ul;
+#else
+static const unsigned long N = 5_000ul;
+#endif
+
+enum state_t { WAITED, SIGNAL, BARGE };
+
+monitor global_data_t {
+	thread$ * last_thread;
+	thread$ * last_signaller;
+};
+
+void ?{} ( global_data_t & this ) {
+	this.last_thread = NULL;
+	this.last_signaller = NULL;
+}
+
+void ^?{} ( global_data_t & mutex this ) {}
+
+global_data_t globalA, globalB;
+
+condition cond;
+
+volatile bool done;
+
+//------------------------------------------------------------------------------
+void wait_op( global_data_t & mutex a, global_data_t & mutex b, unsigned i ) {
+    wait( cond, (uintptr_t)active_thread() );
+
+	yield( random( 10 ) );
+
+	if(a.last_thread != a.last_signaller || b.last_thread != b.last_signaller ) {
+		sout | "ERROR Barging detected, expected" | a.last_signaller | b.last_signaller | "got" | a.last_thread | b.last_thread;
+		abort();
+	}
+
+	a.last_thread = b.last_thread = active_thread();
+
+	yield( random( 10 ) );
+}
+
+thread Waiter {};
+void main( Waiter & this ) {
+	for( int i = 0; TEST(i < N); i++ ) {
+		wait_op( globalA, globalB, i );
+		KICK_WATCHDOG;
+	}
+}
+
+//------------------------------------------------------------------------------
+void signal_op( global_data_t & mutex a, global_data_t & mutex b ) {
+	yield( random( 10 ) );
+
+	[a.last_thread, b.last_thread, a.last_signaller, b.last_signaller] = active_thread();
+
+	if( !is_empty( cond ) ) {
+
+		thread$ * next = ( thread$ * ) front( cond );
+
+		if( ! signal_block( cond ) ) {
+			sout | "ERROR expected to be able to signal";
+			abort();
+		}
+
+		yield( random( 10 ) );
+
+		if(a.last_thread != next || b.last_thread != next) {
+			sout | "ERROR Barging detected, expected" | next | "got" | a.last_thread | b.last_thread;
+			abort();
+		}
+	}
+
+}
+
+thread Signaller {};
+void main( Signaller & this ) {
+	while( !done ) {
+		signal_op( globalA, globalB );
+	}
+}
+
+//------------------------------------------------------------------------------
+void barge_op( global_data_t & mutex a ) {
+	a.last_thread = active_thread();
+}
+
+thread Barger {};
+void main( Barger & this ) {
+	for( unsigned i = 0; !done; i++ ) {
+		//Choose some monitor to barge into with some irregular pattern
+		bool choose_a = (i % 13) > (i % 17);
+		if ( choose_a ) barge_op( globalA );
+		else barge_op( globalB );
+	}
+}
+
+//------------------------------------------------------------------------------
+
+int main(int argc, char* argv[]) {
+	srandom( time( NULL ) );
+	done = false;
+	processor p;
+	{
+		Signaller s[4];
+		Barger b[13];
+		sout | "Starting waiters";
+		{
+			Waiter w[3];
+		}
+		sout | "Waiters done";
+		done = true;
+	}
+}
Index: tests/concurrency/signal/disjoint.cfa
===================================================================
--- tests/concurrency/signal/disjoint.cfa	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
+++ tests/concurrency/signal/disjoint.cfa	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
@@ -0,0 +1,146 @@
+#include <fstream.hfa>
+#include <kernel.hfa>
+#include <monitor.hfa>
+#include <thread.hfa>
+#include <time.hfa>
+
+#include "long_tests.hfa"
+
+#ifndef PREEMPTION_RATE
+#define PREEMPTION_RATE 10`ms
+#endif
+
+Duration default_preemption() {
+	return PREEMPTION_RATE;
+}
+
+#ifdef TEST_LONG
+static const unsigned long N = 300_000ul;
+#else
+static const unsigned long N = 10_000ul;
+#endif
+
+// This tests checks what happens when someone barges in the midle of the release
+// of a bulk of monitors.
+
+enum state_t { WAIT, SIGNAL, BARGE };
+
+monitor global_t {};
+
+monitor global_data_t;
+void ?{}( global_data_t & this );
+void ^?{} ( global_data_t & mutex this );
+
+monitor global_data_t {
+	int counter;
+	state_t state;
+};
+
+// Use a global struct because the order needs to match with Signaller thread
+static struct {
+	global_t mut;
+	global_data_t data;
+} globals;
+
+condition cond;
+
+volatile bool all_done;
+
+void ?{}( global_data_t & this ) {
+	this.counter = 0;
+	this.state = BARGE;
+}
+
+void ^?{} ( global_data_t & mutex this ) {}
+
+//------------------------------------------------------------------------------
+// Barging logic
+void barge( global_data_t & mutex d ) {
+	d.state = BARGE;
+}
+
+thread Barger {};
+void ?{}( Barger & this ) {
+	((thread&)this){ "Barger Thread" };
+}
+
+void main( Barger & this ) {
+	while( !all_done ) {
+		barge( globals.data );
+		yield();
+	}
+}
+
+//------------------------------------------------------------------------------
+// Waiting logic
+bool wait( global_t & mutex m, global_data_t & mutex d ) {
+	wait( cond );
+	if( d.state != SIGNAL ) {
+		abort | "ERROR barging!";
+	}
+
+	#if !defined(TEST_FOREVER)
+		d.counter++;
+		if( (d.counter % 1000) == 0 ) sout | d.counter;
+	#endif
+
+	return TEST(d.counter < N);
+}
+
+thread Waiter {};
+void ?{}( Waiter & this ) {
+	((thread&)this){ "Waiter Thread" };
+}
+
+void main( Waiter & this ) {
+	while( wait( globals.mut, globals.data ) ) { KICK_WATCHDOG; yield(); }
+}
+
+
+//------------------------------------------------------------------------------
+// Signalling logic
+void signal( condition & cond, global_t & mutex a, global_data_t & mutex b ) {
+	b.state = SIGNAL;
+	signal( cond );
+}
+
+void logic( global_t & mutex a ) {
+	signal( cond, a, globals.data );
+
+	yield( random( 10 ) );
+
+	//This is technically a mutual exclusion violation but the mutex monitor protects us
+	bool running = TEST(globals.data.counter < N) && globals.data.counter > 0;
+	if( globals.data.state != SIGNAL && running ) {
+		abort | "ERROR Eager signal" | globals.data.state;
+	}
+}
+
+thread Signaller {};
+void ?{}( Signaller & this ) {
+	((thread&)this){ "Signaller Thread" };
+}
+
+void main( Signaller & this ) {
+	while( !all_done ) {
+		logic( globals.mut );
+		yield();
+	}
+}
+
+//------------------------------------------------------------------------------
+// Main loop
+int main(int argc, char* argv[]) {
+	srandom( time( NULL ) );
+	all_done = false;
+	processor p;
+	{
+		Signaller s;
+		Barger b[17];
+		{
+			Waiter w[4];
+		}
+		sout | "All waiter done";
+		all_done = true;
+	}
+}
Index: tests/concurrency/signal/wait.cfa
===================================================================
--- tests/concurrency/signal/wait.cfa	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
+++ tests/concurrency/signal/wait.cfa	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
@@ -0,0 +1,153 @@
+//---------------------------------------------------------
+// Multi wait test
+// Ensures that no deadlock from waiting/signalling conditions
+//---------------------------------------------------------
+
+
+#include <fstream.hfa>
+#include <kernel.hfa>
+#include <monitor.hfa>
+#include <stdlib.hfa>
+#include <thread.hfa>
+#include <time.hfa>
+
+#define __kick_rate 12000ul
+#include "long_tests.hfa"
+
+#ifndef PREEMPTION_RATE
+#define PREEMPTION_RATE 10`ms
+#endif
+
+Duration default_preemption() {
+	return PREEMPTION_RATE;
+}
+
+#ifdef TEST_LONG
+static const unsigned long N = 375_000ul;
+#else
+static const unsigned long N = 2_500ul;
+#endif
+
+monitor global_t {};
+
+global_t globalA;
+global_t globalB;
+global_t globalC;
+
+condition condAB, condAC, condBC, condABC;
+
+thread Signaler {};
+thread WaiterAB {};
+thread WaiterAC {};
+thread WaiterBC {};
+thread WaiterABC{};
+
+volatile int waiter_left;
+
+//----------------------------------------------------------------------------------------------------
+// Tools
+void signal( condition & cond, global_t & mutex a, global_t & mutex b ) {
+	signal( cond );
+}
+
+void signal( condition & cond, global_t & mutex a, global_t & mutex b, global_t & mutex c ) {
+	signal( cond );
+}
+
+void wait( condition & cond, global_t & mutex a, global_t & mutex b ) {
+	wait( cond );
+}
+
+void wait( condition & cond, global_t & mutex a, global_t & mutex b, global_t & mutex c ) {
+	wait( cond );
+}
+
+//----------------------------------------------------------------------------------------------------
+// Signaler
+void main( Signaler & this ) {
+
+	while( waiter_left != 0 ) {
+		unsigned action = random( 4 );
+		switch( action ) {
+			case 0:
+				signal( condABC, globalA, globalB, globalC );
+				break;
+			case 1:
+				signal( condAB , globalA, globalB );
+				break;
+			case 2:
+				signal( condBC , globalB, globalC );
+				break;
+			case 3:
+				signal( condAC , globalA, globalC );
+				break;
+			default:
+				sout | "Something went wrong";
+				abort();
+		}
+		yield();
+	}
+}
+
+//----------------------------------------------------------------------------------------------------
+// Waiter ABC
+void main( WaiterABC & this ) {
+	for( int i = 0; TEST(i < N); i++ ) {
+		wait( condABC, globalA, globalB, globalC );
+		KICK_WATCHDOG;
+	}
+
+	__atomic_fetch_sub( &waiter_left, 1,  __ATOMIC_SEQ_CST );
+}
+
+//----------------------------------------------------------------------------------------------------
+// Waiter AB
+void main( WaiterAB & this ) {
+	for( int i = 0; TEST(i < N); i++ ) {
+		wait( condAB , globalA, globalB );
+		KICK_WATCHDOG;
+	}
+
+	__atomic_fetch_sub( &waiter_left, 1,  __ATOMIC_SEQ_CST );
+}
+
+//----------------------------------------------------------------------------------------------------
+// Waiter AC
+void main( WaiterAC & this ) {
+	for( int i = 0; TEST(i < N); i++ ) {
+		wait( condAC , globalA, globalC );
+		KICK_WATCHDOG;
+	}
+
+	__atomic_fetch_sub( &waiter_left, 1,  __ATOMIC_SEQ_CST );
+}
+
+//----------------------------------------------------------------------------------------------------
+// Waiter BC
+void main( WaiterBC & this ) {
+	for( int i = 0; TEST(i < N); i++ ) {
+		wait( condBC , globalB, globalC );
+		KICK_WATCHDOG;
+	}
+
+	__atomic_fetch_sub( &waiter_left, 1,  __ATOMIC_SEQ_CST );
+}
+
+//----------------------------------------------------------------------------------------------------
+// Main
+int main(int argc, char* argv[]) {
+	srandom( time( NULL ) );
+	waiter_left = 4;
+	processor p[2];
+	sout | "Starting";
+	{
+		Signaler  e;
+		{
+			WaiterABC a;
+			WaiterAB  b;
+			WaiterBC  c;
+			WaiterAC  d;
+		}
+	}
+	sout | "Done";
+}
Index: tests/concurrency/sleep.cfa
===================================================================
--- tests/concurrency/sleep.cfa	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
+++ tests/concurrency/sleep.cfa	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
@@ -0,0 +1,41 @@
+#include <fstream.hfa>
+#include <thread.hfa>
+#include <mutex_stmt.hfa>
+#include <time.hfa>
+
+Duration default_preemption() {
+	return 0;
+}
+
+volatile int counter = 0;
+
+thread fast_sleeper {};
+void main(fast_sleeper &) {
+	Duration wait = 47`ms;
+	for(i; 20) {
+		sleep(wait);
+		__atomic_fetch_add( &counter, 1, __ATOMIC_RELAXED );
+	}
+}
+
+thread slow_sleeper {};
+void main(slow_sleeper &) {
+	Duration wait = 277`ms;
+	for(i; 4) {
+		sleep(wait);
+		int val = __atomic_add_fetch( &counter, -5, __ATOMIC_RELAXED );
+		if(val < -9) abort | "Value reached negative value:" | val;
+	}
+}
+
+int main() {
+	mutex( sout ) sout | "start";
+	{
+		slow_sleeper slow;
+		yield();
+		fast_sleeper fast;
+		yield();
+	}
+	mutex( sout ) sout | "done";
+}
+
Index: tests/concurrency/suspend_then.cfa
===================================================================
--- tests/concurrency/suspend_then.cfa	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
+++ tests/concurrency/suspend_then.cfa	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
@@ -0,0 +1,88 @@
+#include <fstream.hfa>
+#include <kernel.hfa>
+#include <thread.hfa>
+#include <time.hfa>
+#include <stdlib.hfa>
+#include <string.h>
+
+#define __kick_rate 150000ul
+#include "long_tests.hfa"
+
+Duration default_preemption() {
+	return 0;
+}
+
+#ifdef TEST_LONG
+static const unsigned long N = 600_000ul;
+#else
+static const unsigned long N = 1_000ul;
+#endif
+
+#if !defined(TEST_FOREVER)
+	static inline void print(const char * const text ) {
+		write( STDOUT_FILENO, text, strlen(text) );
+	}
+#else
+	static inline void print(Printer & this, const char * const text ) {}
+#endif
+
+generator Coroutine { int i; };
+
+volatile bool done = false;
+Coroutine * volatile the_cor = 0p;
+
+void store(Coroutine & cor) {
+	__atomic_store_n(&the_cor, &cor, __ATOMIC_SEQ_CST);
+}
+
+Coroutine * take(void) {
+	Coroutine * val = 0p;
+	Coroutine * ret = __atomic_exchange_n(&the_cor, val, __ATOMIC_SEQ_CST);
+	assert(!ret || !the_cor);
+	return ret;
+}
+
+void main(Coroutine& this) {
+	this.i = 0;
+	suspend;
+	for(;TEST(this.i < N); this.i++) {
+
+		print("C - Suspending\n");
+		suspend{
+			print("C - Publishing\n");
+			assert(!the_cor);
+			store( this );
+		}
+		assert(!the_cor);
+		print("C - Back\n");
+		KICK_WATCHDOG;
+		yield();
+	}
+	done = true;
+	suspend;
+}
+
+thread Thread {};
+void main(Thread & this) {
+	Coroutine * mine = 0p;
+	while(!done) {
+		yield();
+
+		mine = take();
+		if(!mine) continue;
+
+		print("T - took\n");
+		resume(*mine);
+	}
+}
+
+
+int main(int argc, char* argv[]) {
+	processor p[2];
+	Coroutine c;
+	resume(c); // Prime the coroutine to avoid one of the threads being its starter
+	the_cor = &c;
+	{
+		Thread t[2];
+	}
+}
Index: tests/concurrency/thread.cfa
===================================================================
--- tests/concurrency/thread.cfa	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
+++ tests/concurrency/thread.cfa	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
@@ -0,0 +1,41 @@
+#include <fstream.hfa>
+#include <kernel.hfa>
+#include <locks.hfa>
+#include <stdlib.hfa>
+#include <thread.hfa>
+
+thread First  { semaphore* lock; };
+thread Second { semaphore* lock; };
+
+void ?{}( First  & this, semaphore & lock ) { ((thread&)this){ "Thread 1" }; this.lock = &lock; }
+void ?{}( Second & this, semaphore & lock ) { ((thread&)this){ "Thread 2" }; this.lock = &lock; }
+
+void main(First& this) {
+	for(int i = 0; i < 10; i++) {
+		sout | "First : Suspend No." | i + 1;
+		yield();
+	}
+	V(*this.lock);
+}
+
+void main(Second& this) {
+	P(*this.lock);
+	for(int i = 0; i < 10; i++) {
+		sout | "Second : Suspend No." | i + 1;
+		yield();
+	}
+}
+
+
+int main(int argc, char* argv[]) {
+	semaphore lock = { 0 };
+	sout | "User main begin";
+	{
+		processor p;
+		{
+			First  f = { lock };
+			Second s = { lock };
+		}
+	}
+	sout | "User main end";
+}
Index: tests/concurrency/unified_locking/.expect/block_spin_lock.txt
===================================================================
--- tests/concurrency/unified_locking/.expect/block_spin_lock.txt	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
+++ tests/concurrency/unified_locking/.expect/block_spin_lock.txt	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
@@ -0,0 +1,3 @@
+Starting
+Done!
+Match!
Index: tests/concurrency/unified_locking/.expect/exp_backoff.txt
===================================================================
--- tests/concurrency/unified_locking/.expect/exp_backoff.txt	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
+++ tests/concurrency/unified_locking/.expect/exp_backoff.txt	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
@@ -0,0 +1,3 @@
+Starting
+Done!
+Match!
Index: tests/concurrency/unified_locking/.expect/fast_block_lock.txt
===================================================================
--- tests/concurrency/unified_locking/.expect/fast_block_lock.txt	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
+++ tests/concurrency/unified_locking/.expect/fast_block_lock.txt	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
@@ -0,0 +1,3 @@
+Starting
+Done!
+Match!
Index: tests/concurrency/unified_locking/.expect/futex_mutex.txt
===================================================================
--- tests/concurrency/unified_locking/.expect/futex_mutex.txt	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
+++ tests/concurrency/unified_locking/.expect/futex_mutex.txt	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
@@ -0,0 +1,3 @@
+Starting
+Done!
+Match!
Index: tests/concurrency/unified_locking/.expect/locks.txt
===================================================================
--- tests/concurrency/unified_locking/.expect/locks.txt	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
+++ tests/concurrency/unified_locking/.expect/locks.txt	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
@@ -0,0 +1,26 @@
+Start Test 1: multi acquisition lock and condition variable single wait/notify
+Done Test 1
+Start Test 2: multi acquisition lock and condition variable 3 wait/notify all
+Done Test 2
+Start Test 3: single acquisition lock and condition variable single wait/notify
+Done Test 3
+Start Test 4: single acquisition lock and condition variable 3 wait/notify all
+Done Test 4
+Start Test 5: owner lock and condition variable single wait/notify
+Done Test 5
+Start Test 6: owner lock and condition variable 3 wait/notify all
+Done Test 6
+Start Test 7: linear backoff lock and condition variable single wait/notify
+Done Test 7
+Start Test 8: linear backoff lock and condition variable 3 wait/notify all
+Done Test 8
+Start Test 9: multi acquisiton lock and condition variable multiple acquire and wait/notify
+Done Test 9
+Start Test 10: owner lock and condition variable multiple acquire and wait/notify
+Done Test 10
+Start Test 11: no lock condition variable wait/notify
+Done Test 11
+Start Test 12: locked condition variable wait/notify with front()
+Done Test 12
+Start Test 13: fast block lock and fast cond var single wait/notify
+Done Test 13
Index: tests/concurrency/unified_locking/.expect/mcs.txt
===================================================================
--- tests/concurrency/unified_locking/.expect/mcs.txt	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
+++ tests/concurrency/unified_locking/.expect/mcs.txt	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
@@ -0,0 +1,3 @@
+Starting
+Done!
+Match!
Index: tests/concurrency/unified_locking/.expect/mcs_block_spin_lock.txt
===================================================================
--- tests/concurrency/unified_locking/.expect/mcs_block_spin_lock.txt	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
+++ tests/concurrency/unified_locking/.expect/mcs_block_spin_lock.txt	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
@@ -0,0 +1,3 @@
+Starting
+Done!
+Match!
Index: tests/concurrency/unified_locking/.expect/mcs_spin.txt
===================================================================
--- tests/concurrency/unified_locking/.expect/mcs_spin.txt	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
+++ tests/concurrency/unified_locking/.expect/mcs_spin.txt	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
@@ -0,0 +1,3 @@
+Starting
+Done!
+Match!
Index: tests/concurrency/unified_locking/.expect/pthread_locks.txt
===================================================================
--- tests/concurrency/unified_locking/.expect/pthread_locks.txt	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
+++ tests/concurrency/unified_locking/.expect/pthread_locks.txt	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
@@ -0,0 +1,8 @@
+Start Test 1: lock and condition variable single wait/notify
+Done Test 1
+Start Test 2: lock and condition variable 3 wait/notify all
+Done Test 2
+Start Test 3: lock and condition variable multiple acquire and wait/notify
+Done Test 3
+Start Test 4: lock and condition variable single timed wait/notify
+Done Test 4
Index: tests/concurrency/unified_locking/.expect/simple_owner_lock.txt
===================================================================
--- tests/concurrency/unified_locking/.expect/simple_owner_lock.txt	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
+++ tests/concurrency/unified_locking/.expect/simple_owner_lock.txt	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
@@ -0,0 +1,3 @@
+Starting
+Done!
+Match!
Index: tests/concurrency/unified_locking/.expect/spin_queue_lock.txt
===================================================================
--- tests/concurrency/unified_locking/.expect/spin_queue_lock.txt	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
+++ tests/concurrency/unified_locking/.expect/spin_queue_lock.txt	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
@@ -0,0 +1,3 @@
+Starting
+Done!
+Match!
Index: tests/concurrency/unified_locking/.expect/timeout_lock.txt
===================================================================
--- tests/concurrency/unified_locking/.expect/timeout_lock.txt	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
+++ tests/concurrency/unified_locking/.expect/timeout_lock.txt	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
@@ -0,0 +1,4 @@
+Start Test 1: surface testing condition variable timeout routines
+Done Test 1
+Start Test 2: testing timeout vs signalling with varying timeout durations
+Done Test 2
Index: tests/concurrency/unified_locking/block_spin_lock.cfa
===================================================================
--- tests/concurrency/unified_locking/block_spin_lock.cfa	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
+++ tests/concurrency/unified_locking/block_spin_lock.cfa	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
@@ -0,0 +1,8 @@
+#include <locks.hfa>
+
+#define LOCK block_spin_lock
+#include "mutex_test.hfa"
+
+int main() {
+    test();
+}
Index: tests/concurrency/unified_locking/exp_backoff.cfa
===================================================================
--- tests/concurrency/unified_locking/exp_backoff.cfa	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
+++ tests/concurrency/unified_locking/exp_backoff.cfa	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
@@ -0,0 +1,8 @@
+#include <locks.hfa>
+
+#define LOCK exp_backoff_then_block_lock
+#include "mutex_test.hfa"
+
+int main() {
+    test();
+}
Index: tests/concurrency/unified_locking/fast_block_lock.cfa
===================================================================
--- tests/concurrency/unified_locking/fast_block_lock.cfa	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
+++ tests/concurrency/unified_locking/fast_block_lock.cfa	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
@@ -0,0 +1,8 @@
+#include <locks.hfa>
+
+#define LOCK fast_block_lock
+#include "mutex_test.hfa"
+
+int main() {
+    test();
+}
Index: tests/concurrency/unified_locking/futex_mutex.cfa
===================================================================
--- tests/concurrency/unified_locking/futex_mutex.cfa	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
+++ tests/concurrency/unified_locking/futex_mutex.cfa	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
@@ -0,0 +1,8 @@
+#include <locks.hfa>
+
+#define LOCK futex_mutex
+#include "mutex_test.hfa"
+
+int main() {
+    test();
+}
Index: tests/concurrency/unified_locking/locks.cfa
===================================================================
--- tests/concurrency/unified_locking/locks.cfa	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
+++ tests/concurrency/unified_locking/locks.cfa	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
@@ -0,0 +1,348 @@
+#include <stdio.h>
+#include "locks.hfa"
+#include <stdlib.hfa>
+#include <thread.hfa>
+
+const unsigned int num_times = 50000;
+
+multiple_acquisition_lock m;
+condition_variable( multiple_acquisition_lock ) c_m;
+
+single_acquisition_lock s;
+condition_variable( single_acquisition_lock ) c_s;
+
+owner_lock o;
+condition_variable( owner_lock ) c_o;
+
+exp_backoff_then_block_lock l;
+condition_variable( exp_backoff_then_block_lock ) c_l;
+
+fast_block_lock f;
+fast_cond_var( fast_block_lock ) f_c_f;
+
+thread T_C_M_WS1 {};
+
+void main( T_C_M_WS1 & this ) {
+	for (unsigned int i = 0; i < num_times; i++) {
+		lock(m);
+		if(empty(c_m) && i != num_times - 1) {
+			wait(c_m,m);
+		}else{
+			notify_one(c_m);
+		}
+		unlock(m);
+	}
+}
+
+thread T_C_M_WB1 {};
+
+void main( T_C_M_WB1 & this ) {
+	for (unsigned int i = 0; i < num_times; i++) {
+		lock(m);
+		if(counter(c_m) == 3 || i == num_times - 1) {
+			notify_all(c_m);
+		}else{
+			wait(c_m,m);
+		}
+		unlock(m);
+	}
+}
+
+thread T_C_S_WS1 {};
+
+void main( T_C_S_WS1 & this ) {
+	for (unsigned int i = 0; i < num_times; i++) {
+		lock(s);
+		if(empty(c_s) && i != num_times - 1) {
+			wait(c_s,s);
+		}else{
+			notify_one(c_s);
+		}
+		unlock(s);
+	}
+}
+
+thread T_C_S_WB1 {};
+
+void main( T_C_S_WB1 & this ) {
+	for (unsigned int i = 0; i < num_times; i++) {
+		lock(s);
+		if(counter(c_s) == 3 || i == num_times - 1) {
+			notify_all(c_s);
+		}else{
+			wait(c_s,s);
+		}
+		unlock(s);
+	}
+}
+
+thread T_C_L_WS1 {};
+
+void main( T_C_L_WS1 & this ) {
+	for (unsigned int i = 0; i < num_times; i++) {
+		lock(l);
+		if(empty(c_l) && i != num_times - 1) {
+			wait(c_l,l);
+		}else{
+			notify_one(c_l);
+		}
+		unlock(l);
+	}
+}
+
+thread T_C_L_WB1 {};
+
+void main( T_C_L_WB1 & this ) {
+	for (unsigned int i = 0; i < num_times; i++) {
+		lock(l);
+		if(counter(c_l) == 3 || i == num_times - 1) {
+			notify_all(c_l);
+		}else{
+			wait(c_l,l);
+		}
+		unlock(l);
+	}
+}
+
+thread T_F_C_F_WS1 {};
+
+void main( T_F_C_F_WS1 & this ) {
+	for (unsigned int i = 0; i < num_times; i++) {
+		lock(f);
+		if(empty(f_c_f) && i != num_times - 1) {
+			wait(f_c_f,f);
+		}else{
+			notify_one(f_c_f);
+		}
+		unlock(f);
+	}
+}
+
+thread T_C_O_WS1 {};
+
+void main( T_C_O_WS1 & this ) {
+	for (unsigned int i = 0; i < num_times; i++) {
+		lock(o);
+		if(empty(c_o) && i != num_times - 1) {
+			wait(c_o,o);
+		}else{
+			notify_one(c_o);
+		}
+		unlock(o);
+	}
+}
+
+thread T_C_O_WB1 {};
+
+void main( T_C_O_WB1 & this ) {
+	for (unsigned int i = 0; i < num_times; i++) {
+		lock(o);
+		if(counter(c_o) == 3 || i == num_times - 1) {
+			notify_all(c_o);
+		}else{
+			wait(c_o,o);
+		}
+		unlock(o);
+	}
+}
+
+thread T_C_M_WS2 {};
+
+void main( T_C_M_WS2 & this ) {
+	for (unsigned int i = 0; i < num_times; i++) {
+		lock(m);
+		lock(m);
+		lock(m);
+		if(empty(c_m) && i != num_times - 1) {
+			wait(c_m,m);
+		}else{
+			notify_one(c_m);
+		}
+		unlock(m);
+		unlock(m);
+		unlock(m);
+	}
+}
+
+thread T_C_O_WS2 {};
+
+void main( T_C_O_WS2 & this ) {
+	for (unsigned int i = 0; i < num_times; i++) {
+		lock(o);
+		lock(o);
+		lock(o);
+		if(empty(c_o) && i != num_times - 1) {
+			wait(c_o,o);
+		}else{
+			notify_one(c_o);
+		}
+		unlock(o);
+		unlock(o);
+		unlock(o);
+	}
+}
+
+thread T_C_NLW {};
+
+void main( T_C_NLW & this ) {
+	for (unsigned int i = 0; i < num_times; i++) {
+		wait(c_o);
+	}
+}
+
+thread T_C_NLS {};
+
+void main( T_C_NLS & this ) {
+	for (unsigned int i = 0; i < num_times; i++) {
+		while (empty(c_o)) { }
+		notify_one(c_o);
+	}
+}
+
+thread T_C_S_WNF {};
+
+void main( T_C_S_WNF & this ) {
+	for (unsigned int i = 0; i < num_times; i++) {
+		lock(s);
+		if(empty(c_s) && i != num_times - 1) {
+			wait(c_s, s, 10);
+		}else{
+			if(!empty(c_s)) assert(front(c_s) == 10);
+			notify_one(c_s);
+		}
+		unlock(s);
+	}
+}
+
+bool done = false;
+
+thread T_C_NLWD {};
+
+void main( T_C_NLWD & this ) {
+	done = false;
+	for (unsigned int i = 0; i < num_times/5; i++) {
+		if (i % 1000 == 0) printf("Iteration: %d\n", i);
+		wait(c_s, 1`ns);
+	}
+	done = true;
+}
+
+thread T_C_WDS {};
+
+void main( T_C_WDS & this ) {
+	for (unsigned int i = 0; i < num_times; i++) {
+		while (empty(c_s) && !done) { }
+		notify_one(c_s);
+		sleep(1`ns);
+		if(done) break;
+	}
+}
+
+thread T_C_LWD {};
+
+void main( T_C_LWD & this ) {
+	done = false;
+	for (unsigned int i = 0; i < num_times/5; i++) {
+		if (i % 1000 == 0) printf("Iteration: %d\n", i);
+		lock(s);
+		wait(c_s, s, 1`ns);
+		unlock(s);
+	}
+	done = true;
+}
+
+thread T_C_LWDS {};
+
+void main( T_C_LWDS & this ) {
+	for (unsigned int i = 0; i < num_times; i++) {
+		while (empty(c_s) && !done) { }
+		lock(s);
+		notify_one(c_s);
+		unlock(s);
+		sleep(1`ns);
+		if(done) break;
+	}
+}
+
+int main() {
+	processor p[2];
+	printf("Start Test 1: multi acquisition lock and condition variable single wait/notify\n");
+	{
+		T_C_M_WS1 t1[2];
+	}
+	printf("Done Test 1\n");
+
+	printf("Start Test 2: multi acquisition lock and condition variable 3 wait/notify all\n");
+	{
+		T_C_M_WB1 t1[4];
+	}
+	printf("Done Test 2\n");
+
+	printf("Start Test 3: single acquisition lock and condition variable single wait/notify\n");
+	{
+		T_C_S_WS1 t1[2];
+	}
+	printf("Done Test 3\n");
+
+	printf("Start Test 4: single acquisition lock and condition variable 3 wait/notify all\n");
+	{
+		T_C_S_WB1 t1[4];
+	}
+	printf("Done Test 4\n");
+
+	printf("Start Test 5: owner lock and condition variable single wait/notify\n");
+	{
+		T_C_O_WS1 t1[2];
+	}
+	printf("Done Test 5\n");
+
+	printf("Start Test 6: owner lock and condition variable 3 wait/notify all\n");
+	{
+		T_C_O_WB1 t1[4];
+	}
+	printf("Done Test 6\n");
+
+	printf("Start Test 7: linear backoff lock and condition variable single wait/notify\n");
+	{
+		T_C_L_WS1 t1[2];
+	}
+	printf("Done Test 7\n");
+
+	printf("Start Test 8: linear backoff lock and condition variable 3 wait/notify all\n");
+	{
+		T_C_L_WB1 t1[4];
+	}
+	printf("Done Test 8\n");
+
+	printf("Start Test 9: multi acquisiton lock and condition variable multiple acquire and wait/notify\n");
+	{
+		T_C_M_WS2 t1[2];
+	}
+	printf("Done Test 9\n");
+
+	printf("Start Test 10: owner lock and condition variable multiple acquire and wait/notify\n");
+	{
+		T_C_O_WS2 t1[2];
+	}
+	printf("Done Test 10\n");
+
+	printf("Start Test 11: no lock condition variable wait/notify\n");
+	{
+		T_C_NLW t1;
+		T_C_NLS t2;
+	}
+	printf("Done Test 11\n");
+
+	printf("Start Test 12: locked condition variable wait/notify with front()\n");
+	{
+		T_C_S_WNF t1[2];
+	}
+	printf("Done Test 12\n");
+
+	printf("Start Test 13: fast block lock and fast cond var single wait/notify\n");
+	{
+		T_F_C_F_WS1 t1[2];
+	}
+	printf("Done Test 13\n");
+	
+}
Index: tests/concurrency/unified_locking/mcs.cfa
===================================================================
--- tests/concurrency/unified_locking/mcs.cfa	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
+++ tests/concurrency/unified_locking/mcs.cfa	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
@@ -0,0 +1,66 @@
+#include <fstream.hfa>
+#include <locks.hfa>
+#include <thread.hfa>
+
+const unsigned int num_times = 50000;
+
+struct MutexObj {
+	mcs_lock l;
+	thread$ * id;
+	size_t sum;
+};
+
+MutexObj mo;
+
+void trash() {
+	unsigned t[100];
+	for(i; 100) {
+		t[i] = 0xDEADBEEF;
+	}
+}
+
+unsigned cs() {
+	thread$ * me = active_thread();
+	unsigned value = (unsigned)me;
+	mcs_node n;
+	lock(mo.l, n);
+	{
+		size_t tsum = mo.sum;
+		mo.id = me;
+		yield(random(5));
+		if(mo.id != me) sout | "Intruder!";
+		mo.sum = tsum + value;
+	}
+	unlock(mo.l, n);
+	return value;
+}
+
+thread LockCheck {
+	size_t sum;
+};
+
+void main(LockCheck & this) {
+	this.sum = 0;
+	for(num_times) {
+		trash();
+		this.sum += cs();
+		trash();
+		yield(random(10));
+	}
+}
+
+int main() {
+	size_t sum = -32;
+	mo.sum = -32;
+	processor p[2];
+	sout | "Starting";
+	{
+		LockCheck checkers[13];
+		for(i;13) {
+			sum += join(checkers[i]).sum;
+		}
+	}
+	sout | "Done!";
+	if(sum == mo.sum) sout | "Match!";
+	else sout | "No Match!" | sum | "vs" | mo.sum;
+}
Index: tests/concurrency/unified_locking/mcs_block_spin_lock.cfa
===================================================================
--- tests/concurrency/unified_locking/mcs_block_spin_lock.cfa	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
+++ tests/concurrency/unified_locking/mcs_block_spin_lock.cfa	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
@@ -0,0 +1,8 @@
+#include <locks.hfa>
+
+#define LOCK mcs_block_spin_lock
+#include "mutex_test.hfa"
+
+int main() {
+    test();
+}
Index: tests/concurrency/unified_locking/mcs_spin.cfa
===================================================================
--- tests/concurrency/unified_locking/mcs_spin.cfa	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
+++ tests/concurrency/unified_locking/mcs_spin.cfa	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
@@ -0,0 +1,78 @@
+
+#include <fstream.hfa>
+#include <locks.hfa>
+#include <thread.hfa>
+
+const unsigned int num_times = 50;
+
+struct MutexObj {
+	mcs_spin_lock l;
+	thread$ * id;
+	uint32_t sum;
+	uint32_t cnt;
+};
+
+MutexObj mo;
+
+void trash() {
+	unsigned t[100];
+	for(i; 100) {
+		t[i] = 0xDEADBEEF;
+	}
+}
+
+uint32_t cs() {
+	thread$ * me = active_thread();
+	uint32_t value;
+    mcs_spin_node node;
+	lock(mo.l, node);
+	{
+		uint32_t tsum = mo.sum;
+		uint32_t cnt = mo.cnt;
+		mo.id = me;
+		yield(random(5));
+		value = ((uint32_t)random()) ^ ((uint32_t)me);
+		if(mo.id != me) sout | "Intruder!";
+		mo.cnt = cnt + 1;
+		mo.sum = tsum + value;
+	}
+	unlock(mo.l, node);
+	return value;
+}
+
+thread LockCheck {
+	uint32_t sum;
+};
+
+void main(LockCheck & this) {
+	this.sum = 0;
+	for(num_times) {
+		trash();
+		this.sum += cs();
+		trash();
+		yield(random(10));
+	}
+}
+
+void test() {
+	uint32_t sum = -32;
+	mo.sum = -32;
+	mo.cnt = 0;
+	processor p[2];
+	sout | "Starting";
+	{
+		LockCheck checkers[13];
+		for(i;13) {
+			sum += join(checkers[i]).sum;
+		}
+	}
+	sout | "Done!";
+	if(mo.cnt != (13 * num_times)) sout | "Invalid cs count!" | mo.cnt | "vs "| (13 * num_times) | "(13 *" | num_times | ')';
+	if(sum == mo.sum) sout | "Match!";
+	else sout | "No Match!" | sum | "vs" | mo.sum;
+}
+
+int main() {
+    test();
+	return 0;
+}
Index: tests/concurrency/unified_locking/mutex_test.hfa
===================================================================
--- tests/concurrency/unified_locking/mutex_test.hfa	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
+++ tests/concurrency/unified_locking/mutex_test.hfa	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
@@ -0,0 +1,79 @@
+
+#include <fstream.hfa>
+#include <locks.hfa>
+#include <thread.hfa>
+
+const unsigned int num_times = 50;
+
+struct MutexObj {
+	LOCK l;
+	thread$ * id;
+	uint32_t sum;
+	uint32_t cnt;
+};
+
+MutexObj mo;
+
+void trash() {
+	unsigned t[100];
+	for(i; 100) {
+		t[i] = 0xDEADBEEF;
+	}
+}
+
+uint32_t cs(uint32_t & entries) {
+	thread$ * me = active_thread();
+	uint32_t value;
+	lock(mo.l);
+	{
+		entries++;
+		uint32_t tsum = mo.sum;
+		uint32_t cnt = mo.cnt;
+		mo.id = me;
+		yield(random(5));
+		value = ((uint32_t)random()) ^ ((uint32_t)me);
+		if(mo.id != me) sout | "Intruder!";
+		mo.cnt = cnt + 1;
+		mo.sum = tsum + value;
+	}
+	unlock(mo.l);
+	return value;
+}
+
+thread LockCheck {
+	uint32_t sum;
+	uint32_t entries;
+};
+
+void main(LockCheck & this) {
+	this.sum = 0;
+	this.entries = 0;
+	for(num_times) {
+		trash();
+		this.sum += cs( this.entries );
+		trash();
+		yield(random(10));
+	}
+}
+
+void test() {
+	uint32_t sum = -32;
+	mo.sum = -32;
+	mo.cnt = 0;
+	uint32_t real_entries = 0;
+	processor p[2];
+	sout | "Starting";
+	{
+		LockCheck checkers[13];
+		for(i;13) {
+			LockCheck & curr = join(checkers[i]);
+			sum += curr.sum;
+			real_entries += curr.entries;
+		}
+	}
+	sout | "Done!";
+	if(real_entries != (13 * num_times)) sout | "Invalid real cs count!" | mo.cnt | "vs "| (13 * num_times) | "(13 *" | num_times | ')';
+	if(mo.cnt != (13 * num_times)) sout | "Invalid concurrent cs count!" | mo.cnt | "vs "| (13 * num_times) | "(13 *" | num_times | ')';
+	if(sum == mo.sum) sout | "Match!";
+	else sout | "No Match!" | sum | "vs" | mo.sum;
+}
Index: tests/concurrency/unified_locking/pthread_locks.cfa
===================================================================
--- tests/concurrency/unified_locking/pthread_locks.cfa	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
+++ tests/concurrency/unified_locking/pthread_locks.cfa	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
@@ -0,0 +1,108 @@
+#include <stdio.h>
+#include "locks.hfa"
+#include <stdlib.hfa>
+#include <thread.hfa>
+#include <time.h>
+#include <stdlib.hfa>
+
+const unsigned int num_times = 50;
+
+simple_owner_lock l;
+pthread_cond_var( simple_owner_lock ) c;
+
+owner_lock l2;
+condition_variable( owner_lock ) c2;
+
+volatile int counter = 0;
+
+thread Wait_Signal_1 {};
+
+void main( Wait_Signal_1 & this ) {
+	for (unsigned int i = 0; i < num_times; i++) {
+		lock(l);
+		if(empty(c) && i != num_times - 1) {
+			wait(c,l);
+		}else{
+			notify_one(c);
+		}
+		unlock(l);
+	}
+}
+
+thread Wait_3_Signal_3 {};
+
+void main( Wait_3_Signal_3 & this ) {
+	for (unsigned int i = 0; i < num_times; i++) {
+		lock(l);
+        counter++;
+		if(counter == 4 || i == num_times - 1) {
+            counter = 0;
+			notify_all(c);
+		}else{
+			wait(c,l);
+		}
+		unlock(l);
+	}
+}
+
+thread Rec_Lock_Wait_Signal_1 {};
+
+void main( Rec_Lock_Wait_Signal_1 & this ) {
+	for (unsigned int i = 0; i < num_times; i++) {
+		lock(l);
+		lock(l);
+		lock(l);
+		if(empty(c) && i != num_times - 1) {
+			wait(c,l);
+		}else{
+			notify_one(c);
+		}
+		unlock(l);
+		unlock(l);
+		unlock(l);
+	}
+}
+
+thread Wait_Time_Signal_1 {};
+
+void main( Wait_Time_Signal_1 & this ) {
+	for (unsigned int i = 0; i < num_times; i++) {
+		lock(l);
+		if(empty(c) || random(10) >= 9 ) {
+			timespec t;
+			clock_gettime(CLOCK_REALTIME, &t);
+			timespec waitTime{0,1};
+			bool woken = wait(c,l, t + waitTime);
+		}else{
+			notify_one(c);
+		}
+		unlock(l);
+	}
+}
+
+int main() {
+	processor p[1];
+	printf("Start Test 1: lock and condition variable single wait/notify\n");
+	{
+		Wait_Signal_1 t1[2];
+	}
+	printf("Done Test 1\n");
+
+	printf("Start Test 2: lock and condition variable 3 wait/notify all\n");
+	{
+		Wait_3_Signal_3 t1[4];
+	}
+	printf("Done Test 2\n");
+
+	printf("Start Test 3: lock and condition variable multiple acquire and wait/notify\n");
+	{
+		Rec_Lock_Wait_Signal_1 t1[2];
+	}
+	printf("Done Test 3\n");
+
+	printf("Start Test 4: lock and condition variable single timed wait/notify\n");
+	{
+		Wait_Time_Signal_1 t1[2];
+	}
+	printf("Done Test 4\n");
+}
Index: tests/concurrency/unified_locking/simple_owner_lock.cfa
===================================================================
--- tests/concurrency/unified_locking/simple_owner_lock.cfa	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
+++ tests/concurrency/unified_locking/simple_owner_lock.cfa	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
@@ -0,0 +1,8 @@
+#include <locks.hfa>
+
+#define LOCK simple_owner_lock
+#include "mutex_test.hfa"
+
+int main() {
+    test();
+}
Index: tests/concurrency/unified_locking/spin_queue_lock.cfa
===================================================================
--- tests/concurrency/unified_locking/spin_queue_lock.cfa	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
+++ tests/concurrency/unified_locking/spin_queue_lock.cfa	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
@@ -0,0 +1,8 @@
+#include <locks.hfa>
+
+#define LOCK spin_queue_lock
+#include "mutex_test.hfa"
+
+int main() {
+    test();
+}
Index: tests/concurrency/unified_locking/test_debug.cfa
===================================================================
--- tests/concurrency/unified_locking/test_debug.cfa	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
+++ tests/concurrency/unified_locking/test_debug.cfa	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
@@ -0,0 +1,31 @@
+#include "locks.hfa"
+
+fast_block_lock f;
+fast_block_lock f2;
+fast_cond_var( fast_block_lock ) f_c_f;
+
+thread T1 {};
+bool wait = true;
+bool wait2 = true;
+void main( T1 & this ) {
+    lock(f);
+    if (wait) {
+        wait = false;
+        wait(f_c_f, f);
+    } else {
+        notify_one(f_c_f);
+        unlock(f);
+    }
+    lock(f2);
+    if (wait2) {
+        wait2 = false;
+        wait(f_c_f, f2);
+    } else {
+        notify_one(f_c_f);
+        unlock(f2);
+    }
+}
+
+int main() {
+    T1 t[2];
+}
Index: tests/concurrency/unified_locking/thread_test.cfa
===================================================================
--- tests/concurrency/unified_locking/thread_test.cfa	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
+++ tests/concurrency/unified_locking/thread_test.cfa	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
@@ -0,0 +1,108 @@
+#include <stdio.h>
+#include "locks.hfa"
+#include <stdlib.hfa>
+#include <thread.hfa>
+#include <containers/array.hfa>
+
+static unsigned int taskCount = 4;
+static unsigned int threadCount = 2;
+static unsigned int lockCount = 1;
+static unsigned int total_times = 320000;
+static unsigned int num_times;
+static const int workBufferSize = 16;
+static unsigned int work_unlocked = 10000;
+static unsigned int work_locked = 10000;
+
+// taken from martin's thread_test
+static inline void dowork(volatile int* buffer, unsigned int steps) {
+  int value = 0;
+  for (unsigned int i = 0; i < steps; i += 1) {
+    // a little more work than just a single memory access helps with stability
+    value += (buffer[i % workBufferSize] * 17) / 23 + 55;
+  }
+  buffer[0] += value;
+}
+
+thread worker {
+    exp_backoff_then_block_lock * locks;
+    bool improved;
+};
+
+void ?{}( worker & w, exp_backoff_then_block_lock * locks, bool improved ) {
+	w.locks = locks;
+    w.improved = improved;
+}
+
+
+void main( worker & this ) with(this) {
+	int buffer[workBufferSize];
+    for (int i = 0; i < workBufferSize; i += 1) buffer[i] = rand() % 1024;
+    unsigned int lck = rand() % lockCount;
+    exp_backoff_then_block_lock * curr_lock = &locks[lck];
+    for (unsigned int i = 0; i < num_times; i++) {
+        dowork(buffer, work_unlocked);
+        if (improved) lock_improved(*curr_lock);
+        else lock(*curr_lock);
+        dowork(buffer, work_locked);
+        unlock(*curr_lock);
+        lck = rand() % lockCount;
+        curr_lock = &locks[lck];
+    }
+}
+
+int doOne = 0;
+int main(int argc, char* argv[]) {
+    switch (argc) {
+        case 8:
+            doOne = atoi(argv[7]);
+        case 7:
+            work_unlocked = atoi(argv[6]);
+        case 6:
+            work_locked = atoi(argv[5]);
+        case 5:
+            total_times = atoi(argv[4]);
+        case 4:
+            lockCount = atoi(argv[3]);
+        case 3:
+            threadCount = atoi(argv[2]);
+        case 2:
+            taskCount = atoi(argv[1]);
+        case 1:
+            break;
+        default:
+            break;
+    }
+	processor p[threadCount];
+    exp_backoff_then_block_lock locks[lockCount];
+    worker * worker_arr[taskCount];
+    num_times = total_times  / taskCount;
+    //printf("%d\n", doOne);
+	//
+	//clock_t begin = clock();
+    if (doOne == 1) {
+        printf("Start Test: martin lock simple %d\n", num_times);
+	for (unsigned int i = 0; i < taskCount; i++) {
+        worker_arr[i] = new( locks, false );
+    }
+    for (unsigned int i = 0; i < taskCount; i++) {
+        delete( worker_arr[i] );
+    }
+    }
+	//clock_t end = clock();
+	//double time_spent = (double)(end - begin) / CLOCKS_PER_SEC;
+	//printf("norm: %f\n", time_spent);
+
+    //printf("Start Test: martin lock improved\n");
+	//begin = clock();
+    if (doOne == 2) {
+	for (unsigned int i = 0; i < taskCount; i++) {
+        worker_arr[i] = new( locks, true );
+    }
+    for (unsigned int i = 0; i < taskCount; i++) {
+        delete( worker_arr[i] );
+    }
+    }
+	//end = clock();
+	//time_spent = (double)(end - begin) / CLOCKS_PER_SEC;
+	//printf("improved: %f\n", time_spent);
+}
Index: tests/concurrency/unified_locking/timeout_lock.cfa
===================================================================
--- tests/concurrency/unified_locking/timeout_lock.cfa	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
+++ tests/concurrency/unified_locking/timeout_lock.cfa	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
@@ -0,0 +1,87 @@
+#include <stdio.h>
+#include <locks.hfa>
+#include <alarm.hfa>
+#include <stdlib.hfa>
+#include <thread.hfa>
+#include <kernel.hfa>
+
+multiple_acquisition_lock m, n;
+condition_variable( multiple_acquisition_lock ) c_m, c_n;
+
+const unsigned int NoOfTimes = 20;
+
+void block() { // used for barrier like behaviour
+	lock(n);
+	if (empty( c_n )) {
+		wait( c_n, n );
+	} else {
+		notify_one( c_n );
+	}
+	unlock(n);
+}
+
+thread T1 {};
+
+void main( T1 & this ) {
+	lock(m);
+	wait( c_m, m, 1`s );
+	// printf("Thread: %p timedout\n", active_thread()); // removed since can't expect non deterministic output
+
+	block();
+
+	// Test calls which occur increasingly close to timeout value.
+
+	for ( unsigned int i = 0; i < NoOfTimes + 3; i += 1 ) {
+	    if ( wait( c_m, m, 1000000`ns ) ) {
+			// printf("Thread: %p signalled\n", active_thread()); // removed since can't expect non deterministic output
+	    } else {
+			// printf("Thread: %p timedout\n", active_thread()); // removed since can't expect non deterministic output
+	    } // if
+
+	    block();
+	} // for
+}
+
+
+thread T2 {};
+
+void main( T2 & this ) {
+	block();
+
+	// Test calls which occur increasingly close to timeout value.
+
+	sleep( 100000`ns );
+	notify_one(c_m);
+	block();
+
+	sleep( 500000`ns );
+	notify_one(c_m);
+	block();
+
+	sleep( 900000`ns );
+	notify_one(c_m);
+	block();
+
+	for ( unsigned int i = 0; i < NoOfTimes; i += 1 ) {
+	    sleep( 999700`ns );
+		notify_one(c_m);
+	    block();
+	} // for
+}
+
+int main() {
+	processor p[2];
+	printf("Start Test 1: surface testing condition variable timeout routines\n");
+	wait( c_m, 1`ns );														// bool wait( condition_variable(L) & this, Duration duration );
+	wait( c_m, 10, 1`ns );													// bool wait( condition_variable(L) & this, uintptr_t info, Duration duration );
+	lock(m); wait( c_m, m, 1`ns ); unlock(m); 								// bool wait( condition_variable(L) & this, L & l, Duration duration );
+	lock(m); wait( c_m, m, 10, 1`ns ); unlock(m);							// bool wait( condition_variable(L) & this, L & l, uintptr_t info, Duration duration );
+	printf("Done Test 1\n");
+
+	printf("Start Test 2: testing timeout vs signalling with varying timeout durations\n");
+	{
+		T1 t1;
+		T2 t2;
+	}
+	printf("Done Test 2\n");
+}
Index: tests/concurrency/waitfor/.expect/barge.txt
===================================================================
--- tests/concurrency/waitfor/.expect/barge.txt	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
+++ tests/concurrency/waitfor/.expect/barge.txt	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
@@ -0,0 +1,5002 @@
+Starting
+0
+1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+60
+61
+62
+63
+64
+65
+66
+67
+68
+69
+70
+71
+72
+73
+74
+75
+76
+77
+78
+79
+80
+81
+82
+83
+84
+85
+86
+87
+88
+89
+90
+91
+92
+93
+94
+95
+96
+97
+98
+99
+100
+101
+102
+103
+104
+105
+106
+107
+108
+109
+110
+111
+112
+113
+114
+115
+116
+117
+118
+119
+120
+121
+122
+123
+124
+125
+126
+127
+128
+129
+130
+131
+132
+133
+134
+135
+136
+137
+138
+139
+140
+141
+142
+143
+144
+145
+146
+147
+148
+149
+150
+151
+152
+153
+154
+155
+156
+157
+158
+159
+160
+161
+162
+163
+164
+165
+166
+167
+168
+169
+170
+171
+172
+173
+174
+175
+176
+177
+178
+179
+180
+181
+182
+183
+184
+185
+186
+187
+188
+189
+190
+191
+192
+193
+194
+195
+196
+197
+198
+199
+200
+201
+202
+203
+204
+205
+206
+207
+208
+209
+210
+211
+212
+213
+214
+215
+216
+217
+218
+219
+220
+221
+222
+223
+224
+225
+226
+227
+228
+229
+230
+231
+232
+233
+234
+235
+236
+237
+238
+239
+240
+241
+242
+243
+244
+245
+246
+247
+248
+249
+250
+251
+252
+253
+254
+255
+256
+257
+258
+259
+260
+261
+262
+263
+264
+265
+266
+267
+268
+269
+270
+271
+272
+273
+274
+275
+276
+277
+278
+279
+280
+281
+282
+283
+284
+285
+286
+287
+288
+289
+290
+291
+292
+293
+294
+295
+296
+297
+298
+299
+300
+301
+302
+303
+304
+305
+306
+307
+308
+309
+310
+311
+312
+313
+314
+315
+316
+317
+318
+319
+320
+321
+322
+323
+324
+325
+326
+327
+328
+329
+330
+331
+332
+333
+334
+335
+336
+337
+338
+339
+340
+341
+342
+343
+344
+345
+346
+347
+348
+349
+350
+351
+352
+353
+354
+355
+356
+357
+358
+359
+360
+361
+362
+363
+364
+365
+366
+367
+368
+369
+370
+371
+372
+373
+374
+375
+376
+377
+378
+379
+380
+381
+382
+383
+384
+385
+386
+387
+388
+389
+390
+391
+392
+393
+394
+395
+396
+397
+398
+399
+400
+401
+402
+403
+404
+405
+406
+407
+408
+409
+410
+411
+412
+413
+414
+415
+416
+417
+418
+419
+420
+421
+422
+423
+424
+425
+426
+427
+428
+429
+430
+431
+432
+433
+434
+435
+436
+437
+438
+439
+440
+441
+442
+443
+444
+445
+446
+447
+448
+449
+450
+451
+452
+453
+454
+455
+456
+457
+458
+459
+460
+461
+462
+463
+464
+465
+466
+467
+468
+469
+470
+471
+472
+473
+474
+475
+476
+477
+478
+479
+480
+481
+482
+483
+484
+485
+486
+487
+488
+489
+490
+491
+492
+493
+494
+495
+496
+497
+498
+499
+500
+501
+502
+503
+504
+505
+506
+507
+508
+509
+510
+511
+512
+513
+514
+515
+516
+517
+518
+519
+520
+521
+522
+523
+524
+525
+526
+527
+528
+529
+530
+531
+532
+533
+534
+535
+536
+537
+538
+539
+540
+541
+542
+543
+544
+545
+546
+547
+548
+549
+550
+551
+552
+553
+554
+555
+556
+557
+558
+559
+560
+561
+562
+563
+564
+565
+566
+567
+568
+569
+570
+571
+572
+573
+574
+575
+576
+577
+578
+579
+580
+581
+582
+583
+584
+585
+586
+587
+588
+589
+590
+591
+592
+593
+594
+595
+596
+597
+598
+599
+600
+601
+602
+603
+604
+605
+606
+607
+608
+609
+610
+611
+612
+613
+614
+615
+616
+617
+618
+619
+620
+621
+622
+623
+624
+625
+626
+627
+628
+629
+630
+631
+632
+633
+634
+635
+636
+637
+638
+639
+640
+641
+642
+643
+644
+645
+646
+647
+648
+649
+650
+651
+652
+653
+654
+655
+656
+657
+658
+659
+660
+661
+662
+663
+664
+665
+666
+667
+668
+669
+670
+671
+672
+673
+674
+675
+676
+677
+678
+679
+680
+681
+682
+683
+684
+685
+686
+687
+688
+689
+690
+691
+692
+693
+694
+695
+696
+697
+698
+699
+700
+701
+702
+703
+704
+705
+706
+707
+708
+709
+710
+711
+712
+713
+714
+715
+716
+717
+718
+719
+720
+721
+722
+723
+724
+725
+726
+727
+728
+729
+730
+731
+732
+733
+734
+735
+736
+737
+738
+739
+740
+741
+742
+743
+744
+745
+746
+747
+748
+749
+750
+751
+752
+753
+754
+755
+756
+757
+758
+759
+760
+761
+762
+763
+764
+765
+766
+767
+768
+769
+770
+771
+772
+773
+774
+775
+776
+777
+778
+779
+780
+781
+782
+783
+784
+785
+786
+787
+788
+789
+790
+791
+792
+793
+794
+795
+796
+797
+798
+799
+800
+801
+802
+803
+804
+805
+806
+807
+808
+809
+810
+811
+812
+813
+814
+815
+816
+817
+818
+819
+820
+821
+822
+823
+824
+825
+826
+827
+828
+829
+830
+831
+832
+833
+834
+835
+836
+837
+838
+839
+840
+841
+842
+843
+844
+845
+846
+847
+848
+849
+850
+851
+852
+853
+854
+855
+856
+857
+858
+859
+860
+861
+862
+863
+864
+865
+866
+867
+868
+869
+870
+871
+872
+873
+874
+875
+876
+877
+878
+879
+880
+881
+882
+883
+884
+885
+886
+887
+888
+889
+890
+891
+892
+893
+894
+895
+896
+897
+898
+899
+900
+901
+902
+903
+904
+905
+906
+907
+908
+909
+910
+911
+912
+913
+914
+915
+916
+917
+918
+919
+920
+921
+922
+923
+924
+925
+926
+927
+928
+929
+930
+931
+932
+933
+934
+935
+936
+937
+938
+939
+940
+941
+942
+943
+944
+945
+946
+947
+948
+949
+950
+951
+952
+953
+954
+955
+956
+957
+958
+959
+960
+961
+962
+963
+964
+965
+966
+967
+968
+969
+970
+971
+972
+973
+974
+975
+976
+977
+978
+979
+980
+981
+982
+983
+984
+985
+986
+987
+988
+989
+990
+991
+992
+993
+994
+995
+996
+997
+998
+999
+1000
+1001
+1002
+1003
+1004
+1005
+1006
+1007
+1008
+1009
+1010
+1011
+1012
+1013
+1014
+1015
+1016
+1017
+1018
+1019
+1020
+1021
+1022
+1023
+1024
+1025
+1026
+1027
+1028
+1029
+1030
+1031
+1032
+1033
+1034
+1035
+1036
+1037
+1038
+1039
+1040
+1041
+1042
+1043
+1044
+1045
+1046
+1047
+1048
+1049
+1050
+1051
+1052
+1053
+1054
+1055
+1056
+1057
+1058
+1059
+1060
+1061
+1062
+1063
+1064
+1065
+1066
+1067
+1068
+1069
+1070
+1071
+1072
+1073
+1074
+1075
+1076
+1077
+1078
+1079
+1080
+1081
+1082
+1083
+1084
+1085
+1086
+1087
+1088
+1089
+1090
+1091
+1092
+1093
+1094
+1095
+1096
+1097
+1098
+1099
+1100
+1101
+1102
+1103
+1104
+1105
+1106
+1107
+1108
+1109
+1110
+1111
+1112
+1113
+1114
+1115
+1116
+1117
+1118
+1119
+1120
+1121
+1122
+1123
+1124
+1125
+1126
+1127
+1128
+1129
+1130
+1131
+1132
+1133
+1134
+1135
+1136
+1137
+1138
+1139
+1140
+1141
+1142
+1143
+1144
+1145
+1146
+1147
+1148
+1149
+1150
+1151
+1152
+1153
+1154
+1155
+1156
+1157
+1158
+1159
+1160
+1161
+1162
+1163
+1164
+1165
+1166
+1167
+1168
+1169
+1170
+1171
+1172
+1173
+1174
+1175
+1176
+1177
+1178
+1179
+1180
+1181
+1182
+1183
+1184
+1185
+1186
+1187
+1188
+1189
+1190
+1191
+1192
+1193
+1194
+1195
+1196
+1197
+1198
+1199
+1200
+1201
+1202
+1203
+1204
+1205
+1206
+1207
+1208
+1209
+1210
+1211
+1212
+1213
+1214
+1215
+1216
+1217
+1218
+1219
+1220
+1221
+1222
+1223
+1224
+1225
+1226
+1227
+1228
+1229
+1230
+1231
+1232
+1233
+1234
+1235
+1236
+1237
+1238
+1239
+1240
+1241
+1242
+1243
+1244
+1245
+1246
+1247
+1248
+1249
+1250
+1251
+1252
+1253
+1254
+1255
+1256
+1257
+1258
+1259
+1260
+1261
+1262
+1263
+1264
+1265
+1266
+1267
+1268
+1269
+1270
+1271
+1272
+1273
+1274
+1275
+1276
+1277
+1278
+1279
+1280
+1281
+1282
+1283
+1284
+1285
+1286
+1287
+1288
+1289
+1290
+1291
+1292
+1293
+1294
+1295
+1296
+1297
+1298
+1299
+1300
+1301
+1302
+1303
+1304
+1305
+1306
+1307
+1308
+1309
+1310
+1311
+1312
+1313
+1314
+1315
+1316
+1317
+1318
+1319
+1320
+1321
+1322
+1323
+1324
+1325
+1326
+1327
+1328
+1329
+1330
+1331
+1332
+1333
+1334
+1335
+1336
+1337
+1338
+1339
+1340
+1341
+1342
+1343
+1344
+1345
+1346
+1347
+1348
+1349
+1350
+1351
+1352
+1353
+1354
+1355
+1356
+1357
+1358
+1359
+1360
+1361
+1362
+1363
+1364
+1365
+1366
+1367
+1368
+1369
+1370
+1371
+1372
+1373
+1374
+1375
+1376
+1377
+1378
+1379
+1380
+1381
+1382
+1383
+1384
+1385
+1386
+1387
+1388
+1389
+1390
+1391
+1392
+1393
+1394
+1395
+1396
+1397
+1398
+1399
+1400
+1401
+1402
+1403
+1404
+1405
+1406
+1407
+1408
+1409
+1410
+1411
+1412
+1413
+1414
+1415
+1416
+1417
+1418
+1419
+1420
+1421
+1422
+1423
+1424
+1425
+1426
+1427
+1428
+1429
+1430
+1431
+1432
+1433
+1434
+1435
+1436
+1437
+1438
+1439
+1440
+1441
+1442
+1443
+1444
+1445
+1446
+1447
+1448
+1449
+1450
+1451
+1452
+1453
+1454
+1455
+1456
+1457
+1458
+1459
+1460
+1461
+1462
+1463
+1464
+1465
+1466
+1467
+1468
+1469
+1470
+1471
+1472
+1473
+1474
+1475
+1476
+1477
+1478
+1479
+1480
+1481
+1482
+1483
+1484
+1485
+1486
+1487
+1488
+1489
+1490
+1491
+1492
+1493
+1494
+1495
+1496
+1497
+1498
+1499
+1500
+1501
+1502
+1503
+1504
+1505
+1506
+1507
+1508
+1509
+1510
+1511
+1512
+1513
+1514
+1515
+1516
+1517
+1518
+1519
+1520
+1521
+1522
+1523
+1524
+1525
+1526
+1527
+1528
+1529
+1530
+1531
+1532
+1533
+1534
+1535
+1536
+1537
+1538
+1539
+1540
+1541
+1542
+1543
+1544
+1545
+1546
+1547
+1548
+1549
+1550
+1551
+1552
+1553
+1554
+1555
+1556
+1557
+1558
+1559
+1560
+1561
+1562
+1563
+1564
+1565
+1566
+1567
+1568
+1569
+1570
+1571
+1572
+1573
+1574
+1575
+1576
+1577
+1578
+1579
+1580
+1581
+1582
+1583
+1584
+1585
+1586
+1587
+1588
+1589
+1590
+1591
+1592
+1593
+1594
+1595
+1596
+1597
+1598
+1599
+1600
+1601
+1602
+1603
+1604
+1605
+1606
+1607
+1608
+1609
+1610
+1611
+1612
+1613
+1614
+1615
+1616
+1617
+1618
+1619
+1620
+1621
+1622
+1623
+1624
+1625
+1626
+1627
+1628
+1629
+1630
+1631
+1632
+1633
+1634
+1635
+1636
+1637
+1638
+1639
+1640
+1641
+1642
+1643
+1644
+1645
+1646
+1647
+1648
+1649
+1650
+1651
+1652
+1653
+1654
+1655
+1656
+1657
+1658
+1659
+1660
+1661
+1662
+1663
+1664
+1665
+1666
+1667
+1668
+1669
+1670
+1671
+1672
+1673
+1674
+1675
+1676
+1677
+1678
+1679
+1680
+1681
+1682
+1683
+1684
+1685
+1686
+1687
+1688
+1689
+1690
+1691
+1692
+1693
+1694
+1695
+1696
+1697
+1698
+1699
+1700
+1701
+1702
+1703
+1704
+1705
+1706
+1707
+1708
+1709
+1710
+1711
+1712
+1713
+1714
+1715
+1716
+1717
+1718
+1719
+1720
+1721
+1722
+1723
+1724
+1725
+1726
+1727
+1728
+1729
+1730
+1731
+1732
+1733
+1734
+1735
+1736
+1737
+1738
+1739
+1740
+1741
+1742
+1743
+1744
+1745
+1746
+1747
+1748
+1749
+1750
+1751
+1752
+1753
+1754
+1755
+1756
+1757
+1758
+1759
+1760
+1761
+1762
+1763
+1764
+1765
+1766
+1767
+1768
+1769
+1770
+1771
+1772
+1773
+1774
+1775
+1776
+1777
+1778
+1779
+1780
+1781
+1782
+1783
+1784
+1785
+1786
+1787
+1788
+1789
+1790
+1791
+1792
+1793
+1794
+1795
+1796
+1797
+1798
+1799
+1800
+1801
+1802
+1803
+1804
+1805
+1806
+1807
+1808
+1809
+1810
+1811
+1812
+1813
+1814
+1815
+1816
+1817
+1818
+1819
+1820
+1821
+1822
+1823
+1824
+1825
+1826
+1827
+1828
+1829
+1830
+1831
+1832
+1833
+1834
+1835
+1836
+1837
+1838
+1839
+1840
+1841
+1842
+1843
+1844
+1845
+1846
+1847
+1848
+1849
+1850
+1851
+1852
+1853
+1854
+1855
+1856
+1857
+1858
+1859
+1860
+1861
+1862
+1863
+1864
+1865
+1866
+1867
+1868
+1869
+1870
+1871
+1872
+1873
+1874
+1875
+1876
+1877
+1878
+1879
+1880
+1881
+1882
+1883
+1884
+1885
+1886
+1887
+1888
+1889
+1890
+1891
+1892
+1893
+1894
+1895
+1896
+1897
+1898
+1899
+1900
+1901
+1902
+1903
+1904
+1905
+1906
+1907
+1908
+1909
+1910
+1911
+1912
+1913
+1914
+1915
+1916
+1917
+1918
+1919
+1920
+1921
+1922
+1923
+1924
+1925
+1926
+1927
+1928
+1929
+1930
+1931
+1932
+1933
+1934
+1935
+1936
+1937
+1938
+1939
+1940
+1941
+1942
+1943
+1944
+1945
+1946
+1947
+1948
+1949
+1950
+1951
+1952
+1953
+1954
+1955
+1956
+1957
+1958
+1959
+1960
+1961
+1962
+1963
+1964
+1965
+1966
+1967
+1968
+1969
+1970
+1971
+1972
+1973
+1974
+1975
+1976
+1977
+1978
+1979
+1980
+1981
+1982
+1983
+1984
+1985
+1986
+1987
+1988
+1989
+1990
+1991
+1992
+1993
+1994
+1995
+1996
+1997
+1998
+1999
+2000
+2001
+2002
+2003
+2004
+2005
+2006
+2007
+2008
+2009
+2010
+2011
+2012
+2013
+2014
+2015
+2016
+2017
+2018
+2019
+2020
+2021
+2022
+2023
+2024
+2025
+2026
+2027
+2028
+2029
+2030
+2031
+2032
+2033
+2034
+2035
+2036
+2037
+2038
+2039
+2040
+2041
+2042
+2043
+2044
+2045
+2046
+2047
+2048
+2049
+2050
+2051
+2052
+2053
+2054
+2055
+2056
+2057
+2058
+2059
+2060
+2061
+2062
+2063
+2064
+2065
+2066
+2067
+2068
+2069
+2070
+2071
+2072
+2073
+2074
+2075
+2076
+2077
+2078
+2079
+2080
+2081
+2082
+2083
+2084
+2085
+2086
+2087
+2088
+2089
+2090
+2091
+2092
+2093
+2094
+2095
+2096
+2097
+2098
+2099
+2100
+2101
+2102
+2103
+2104
+2105
+2106
+2107
+2108
+2109
+2110
+2111
+2112
+2113
+2114
+2115
+2116
+2117
+2118
+2119
+2120
+2121
+2122
+2123
+2124
+2125
+2126
+2127
+2128
+2129
+2130
+2131
+2132
+2133
+2134
+2135
+2136
+2137
+2138
+2139
+2140
+2141
+2142
+2143
+2144
+2145
+2146
+2147
+2148
+2149
+2150
+2151
+2152
+2153
+2154
+2155
+2156
+2157
+2158
+2159
+2160
+2161
+2162
+2163
+2164
+2165
+2166
+2167
+2168
+2169
+2170
+2171
+2172
+2173
+2174
+2175
+2176
+2177
+2178
+2179
+2180
+2181
+2182
+2183
+2184
+2185
+2186
+2187
+2188
+2189
+2190
+2191
+2192
+2193
+2194
+2195
+2196
+2197
+2198
+2199
+2200
+2201
+2202
+2203
+2204
+2205
+2206
+2207
+2208
+2209
+2210
+2211
+2212
+2213
+2214
+2215
+2216
+2217
+2218
+2219
+2220
+2221
+2222
+2223
+2224
+2225
+2226
+2227
+2228
+2229
+2230
+2231
+2232
+2233
+2234
+2235
+2236
+2237
+2238
+2239
+2240
+2241
+2242
+2243
+2244
+2245
+2246
+2247
+2248
+2249
+2250
+2251
+2252
+2253
+2254
+2255
+2256
+2257
+2258
+2259
+2260
+2261
+2262
+2263
+2264
+2265
+2266
+2267
+2268
+2269
+2270
+2271
+2272
+2273
+2274
+2275
+2276
+2277
+2278
+2279
+2280
+2281
+2282
+2283
+2284
+2285
+2286
+2287
+2288
+2289
+2290
+2291
+2292
+2293
+2294
+2295
+2296
+2297
+2298
+2299
+2300
+2301
+2302
+2303
+2304
+2305
+2306
+2307
+2308
+2309
+2310
+2311
+2312
+2313
+2314
+2315
+2316
+2317
+2318
+2319
+2320
+2321
+2322
+2323
+2324
+2325
+2326
+2327
+2328
+2329
+2330
+2331
+2332
+2333
+2334
+2335
+2336
+2337
+2338
+2339
+2340
+2341
+2342
+2343
+2344
+2345
+2346
+2347
+2348
+2349
+2350
+2351
+2352
+2353
+2354
+2355
+2356
+2357
+2358
+2359
+2360
+2361
+2362
+2363
+2364
+2365
+2366
+2367
+2368
+2369
+2370
+2371
+2372
+2373
+2374
+2375
+2376
+2377
+2378
+2379
+2380
+2381
+2382
+2383
+2384
+2385
+2386
+2387
+2388
+2389
+2390
+2391
+2392
+2393
+2394
+2395
+2396
+2397
+2398
+2399
+2400
+2401
+2402
+2403
+2404
+2405
+2406
+2407
+2408
+2409
+2410
+2411
+2412
+2413
+2414
+2415
+2416
+2417
+2418
+2419
+2420
+2421
+2422
+2423
+2424
+2425
+2426
+2427
+2428
+2429
+2430
+2431
+2432
+2433
+2434
+2435
+2436
+2437
+2438
+2439
+2440
+2441
+2442
+2443
+2444
+2445
+2446
+2447
+2448
+2449
+2450
+2451
+2452
+2453
+2454
+2455
+2456
+2457
+2458
+2459
+2460
+2461
+2462
+2463
+2464
+2465
+2466
+2467
+2468
+2469
+2470
+2471
+2472
+2473
+2474
+2475
+2476
+2477
+2478
+2479
+2480
+2481
+2482
+2483
+2484
+2485
+2486
+2487
+2488
+2489
+2490
+2491
+2492
+2493
+2494
+2495
+2496
+2497
+2498
+2499
+2500
+2501
+2502
+2503
+2504
+2505
+2506
+2507
+2508
+2509
+2510
+2511
+2512
+2513
+2514
+2515
+2516
+2517
+2518
+2519
+2520
+2521
+2522
+2523
+2524
+2525
+2526
+2527
+2528
+2529
+2530
+2531
+2532
+2533
+2534
+2535
+2536
+2537
+2538
+2539
+2540
+2541
+2542
+2543
+2544
+2545
+2546
+2547
+2548
+2549
+2550
+2551
+2552
+2553
+2554
+2555
+2556
+2557
+2558
+2559
+2560
+2561
+2562
+2563
+2564
+2565
+2566
+2567
+2568
+2569
+2570
+2571
+2572
+2573
+2574
+2575
+2576
+2577
+2578
+2579
+2580
+2581
+2582
+2583
+2584
+2585
+2586
+2587
+2588
+2589
+2590
+2591
+2592
+2593
+2594
+2595
+2596
+2597
+2598
+2599
+2600
+2601
+2602
+2603
+2604
+2605
+2606
+2607
+2608
+2609
+2610
+2611
+2612
+2613
+2614
+2615
+2616
+2617
+2618
+2619
+2620
+2621
+2622
+2623
+2624
+2625
+2626
+2627
+2628
+2629
+2630
+2631
+2632
+2633
+2634
+2635
+2636
+2637
+2638
+2639
+2640
+2641
+2642
+2643
+2644
+2645
+2646
+2647
+2648
+2649
+2650
+2651
+2652
+2653
+2654
+2655
+2656
+2657
+2658
+2659
+2660
+2661
+2662
+2663
+2664
+2665
+2666
+2667
+2668
+2669
+2670
+2671
+2672
+2673
+2674
+2675
+2676
+2677
+2678
+2679
+2680
+2681
+2682
+2683
+2684
+2685
+2686
+2687
+2688
+2689
+2690
+2691
+2692
+2693
+2694
+2695
+2696
+2697
+2698
+2699
+2700
+2701
+2702
+2703
+2704
+2705
+2706
+2707
+2708
+2709
+2710
+2711
+2712
+2713
+2714
+2715
+2716
+2717
+2718
+2719
+2720
+2721
+2722
+2723
+2724
+2725
+2726
+2727
+2728
+2729
+2730
+2731
+2732
+2733
+2734
+2735
+2736
+2737
+2738
+2739
+2740
+2741
+2742
+2743
+2744
+2745
+2746
+2747
+2748
+2749
+2750
+2751
+2752
+2753
+2754
+2755
+2756
+2757
+2758
+2759
+2760
+2761
+2762
+2763
+2764
+2765
+2766
+2767
+2768
+2769
+2770
+2771
+2772
+2773
+2774
+2775
+2776
+2777
+2778
+2779
+2780
+2781
+2782
+2783
+2784
+2785
+2786
+2787
+2788
+2789
+2790
+2791
+2792
+2793
+2794
+2795
+2796
+2797
+2798
+2799
+2800
+2801
+2802
+2803
+2804
+2805
+2806
+2807
+2808
+2809
+2810
+2811
+2812
+2813
+2814
+2815
+2816
+2817
+2818
+2819
+2820
+2821
+2822
+2823
+2824
+2825
+2826
+2827
+2828
+2829
+2830
+2831
+2832
+2833
+2834
+2835
+2836
+2837
+2838
+2839
+2840
+2841
+2842
+2843
+2844
+2845
+2846
+2847
+2848
+2849
+2850
+2851
+2852
+2853
+2854
+2855
+2856
+2857
+2858
+2859
+2860
+2861
+2862
+2863
+2864
+2865
+2866
+2867
+2868
+2869
+2870
+2871
+2872
+2873
+2874
+2875
+2876
+2877
+2878
+2879
+2880
+2881
+2882
+2883
+2884
+2885
+2886
+2887
+2888
+2889
+2890
+2891
+2892
+2893
+2894
+2895
+2896
+2897
+2898
+2899
+2900
+2901
+2902
+2903
+2904
+2905
+2906
+2907
+2908
+2909
+2910
+2911
+2912
+2913
+2914
+2915
+2916
+2917
+2918
+2919
+2920
+2921
+2922
+2923
+2924
+2925
+2926
+2927
+2928
+2929
+2930
+2931
+2932
+2933
+2934
+2935
+2936
+2937
+2938
+2939
+2940
+2941
+2942
+2943
+2944
+2945
+2946
+2947
+2948
+2949
+2950
+2951
+2952
+2953
+2954
+2955
+2956
+2957
+2958
+2959
+2960
+2961
+2962
+2963
+2964
+2965
+2966
+2967
+2968
+2969
+2970
+2971
+2972
+2973
+2974
+2975
+2976
+2977
+2978
+2979
+2980
+2981
+2982
+2983
+2984
+2985
+2986
+2987
+2988
+2989
+2990
+2991
+2992
+2993
+2994
+2995
+2996
+2997
+2998
+2999
+3000
+3001
+3002
+3003
+3004
+3005
+3006
+3007
+3008
+3009
+3010
+3011
+3012
+3013
+3014
+3015
+3016
+3017
+3018
+3019
+3020
+3021
+3022
+3023
+3024
+3025
+3026
+3027
+3028
+3029
+3030
+3031
+3032
+3033
+3034
+3035
+3036
+3037
+3038
+3039
+3040
+3041
+3042
+3043
+3044
+3045
+3046
+3047
+3048
+3049
+3050
+3051
+3052
+3053
+3054
+3055
+3056
+3057
+3058
+3059
+3060
+3061
+3062
+3063
+3064
+3065
+3066
+3067
+3068
+3069
+3070
+3071
+3072
+3073
+3074
+3075
+3076
+3077
+3078
+3079
+3080
+3081
+3082
+3083
+3084
+3085
+3086
+3087
+3088
+3089
+3090
+3091
+3092
+3093
+3094
+3095
+3096
+3097
+3098
+3099
+3100
+3101
+3102
+3103
+3104
+3105
+3106
+3107
+3108
+3109
+3110
+3111
+3112
+3113
+3114
+3115
+3116
+3117
+3118
+3119
+3120
+3121
+3122
+3123
+3124
+3125
+3126
+3127
+3128
+3129
+3130
+3131
+3132
+3133
+3134
+3135
+3136
+3137
+3138
+3139
+3140
+3141
+3142
+3143
+3144
+3145
+3146
+3147
+3148
+3149
+3150
+3151
+3152
+3153
+3154
+3155
+3156
+3157
+3158
+3159
+3160
+3161
+3162
+3163
+3164
+3165
+3166
+3167
+3168
+3169
+3170
+3171
+3172
+3173
+3174
+3175
+3176
+3177
+3178
+3179
+3180
+3181
+3182
+3183
+3184
+3185
+3186
+3187
+3188
+3189
+3190
+3191
+3192
+3193
+3194
+3195
+3196
+3197
+3198
+3199
+3200
+3201
+3202
+3203
+3204
+3205
+3206
+3207
+3208
+3209
+3210
+3211
+3212
+3213
+3214
+3215
+3216
+3217
+3218
+3219
+3220
+3221
+3222
+3223
+3224
+3225
+3226
+3227
+3228
+3229
+3230
+3231
+3232
+3233
+3234
+3235
+3236
+3237
+3238
+3239
+3240
+3241
+3242
+3243
+3244
+3245
+3246
+3247
+3248
+3249
+3250
+3251
+3252
+3253
+3254
+3255
+3256
+3257
+3258
+3259
+3260
+3261
+3262
+3263
+3264
+3265
+3266
+3267
+3268
+3269
+3270
+3271
+3272
+3273
+3274
+3275
+3276
+3277
+3278
+3279
+3280
+3281
+3282
+3283
+3284
+3285
+3286
+3287
+3288
+3289
+3290
+3291
+3292
+3293
+3294
+3295
+3296
+3297
+3298
+3299
+3300
+3301
+3302
+3303
+3304
+3305
+3306
+3307
+3308
+3309
+3310
+3311
+3312
+3313
+3314
+3315
+3316
+3317
+3318
+3319
+3320
+3321
+3322
+3323
+3324
+3325
+3326
+3327
+3328
+3329
+3330
+3331
+3332
+3333
+3334
+3335
+3336
+3337
+3338
+3339
+3340
+3341
+3342
+3343
+3344
+3345
+3346
+3347
+3348
+3349
+3350
+3351
+3352
+3353
+3354
+3355
+3356
+3357
+3358
+3359
+3360
+3361
+3362
+3363
+3364
+3365
+3366
+3367
+3368
+3369
+3370
+3371
+3372
+3373
+3374
+3375
+3376
+3377
+3378
+3379
+3380
+3381
+3382
+3383
+3384
+3385
+3386
+3387
+3388
+3389
+3390
+3391
+3392
+3393
+3394
+3395
+3396
+3397
+3398
+3399
+3400
+3401
+3402
+3403
+3404
+3405
+3406
+3407
+3408
+3409
+3410
+3411
+3412
+3413
+3414
+3415
+3416
+3417
+3418
+3419
+3420
+3421
+3422
+3423
+3424
+3425
+3426
+3427
+3428
+3429
+3430
+3431
+3432
+3433
+3434
+3435
+3436
+3437
+3438
+3439
+3440
+3441
+3442
+3443
+3444
+3445
+3446
+3447
+3448
+3449
+3450
+3451
+3452
+3453
+3454
+3455
+3456
+3457
+3458
+3459
+3460
+3461
+3462
+3463
+3464
+3465
+3466
+3467
+3468
+3469
+3470
+3471
+3472
+3473
+3474
+3475
+3476
+3477
+3478
+3479
+3480
+3481
+3482
+3483
+3484
+3485
+3486
+3487
+3488
+3489
+3490
+3491
+3492
+3493
+3494
+3495
+3496
+3497
+3498
+3499
+3500
+3501
+3502
+3503
+3504
+3505
+3506
+3507
+3508
+3509
+3510
+3511
+3512
+3513
+3514
+3515
+3516
+3517
+3518
+3519
+3520
+3521
+3522
+3523
+3524
+3525
+3526
+3527
+3528
+3529
+3530
+3531
+3532
+3533
+3534
+3535
+3536
+3537
+3538
+3539
+3540
+3541
+3542
+3543
+3544
+3545
+3546
+3547
+3548
+3549
+3550
+3551
+3552
+3553
+3554
+3555
+3556
+3557
+3558
+3559
+3560
+3561
+3562
+3563
+3564
+3565
+3566
+3567
+3568
+3569
+3570
+3571
+3572
+3573
+3574
+3575
+3576
+3577
+3578
+3579
+3580
+3581
+3582
+3583
+3584
+3585
+3586
+3587
+3588
+3589
+3590
+3591
+3592
+3593
+3594
+3595
+3596
+3597
+3598
+3599
+3600
+3601
+3602
+3603
+3604
+3605
+3606
+3607
+3608
+3609
+3610
+3611
+3612
+3613
+3614
+3615
+3616
+3617
+3618
+3619
+3620
+3621
+3622
+3623
+3624
+3625
+3626
+3627
+3628
+3629
+3630
+3631
+3632
+3633
+3634
+3635
+3636
+3637
+3638
+3639
+3640
+3641
+3642
+3643
+3644
+3645
+3646
+3647
+3648
+3649
+3650
+3651
+3652
+3653
+3654
+3655
+3656
+3657
+3658
+3659
+3660
+3661
+3662
+3663
+3664
+3665
+3666
+3667
+3668
+3669
+3670
+3671
+3672
+3673
+3674
+3675
+3676
+3677
+3678
+3679
+3680
+3681
+3682
+3683
+3684
+3685
+3686
+3687
+3688
+3689
+3690
+3691
+3692
+3693
+3694
+3695
+3696
+3697
+3698
+3699
+3700
+3701
+3702
+3703
+3704
+3705
+3706
+3707
+3708
+3709
+3710
+3711
+3712
+3713
+3714
+3715
+3716
+3717
+3718
+3719
+3720
+3721
+3722
+3723
+3724
+3725
+3726
+3727
+3728
+3729
+3730
+3731
+3732
+3733
+3734
+3735
+3736
+3737
+3738
+3739
+3740
+3741
+3742
+3743
+3744
+3745
+3746
+3747
+3748
+3749
+3750
+3751
+3752
+3753
+3754
+3755
+3756
+3757
+3758
+3759
+3760
+3761
+3762
+3763
+3764
+3765
+3766
+3767
+3768
+3769
+3770
+3771
+3772
+3773
+3774
+3775
+3776
+3777
+3778
+3779
+3780
+3781
+3782
+3783
+3784
+3785
+3786
+3787
+3788
+3789
+3790
+3791
+3792
+3793
+3794
+3795
+3796
+3797
+3798
+3799
+3800
+3801
+3802
+3803
+3804
+3805
+3806
+3807
+3808
+3809
+3810
+3811
+3812
+3813
+3814
+3815
+3816
+3817
+3818
+3819
+3820
+3821
+3822
+3823
+3824
+3825
+3826
+3827
+3828
+3829
+3830
+3831
+3832
+3833
+3834
+3835
+3836
+3837
+3838
+3839
+3840
+3841
+3842
+3843
+3844
+3845
+3846
+3847
+3848
+3849
+3850
+3851
+3852
+3853
+3854
+3855
+3856
+3857
+3858
+3859
+3860
+3861
+3862
+3863
+3864
+3865
+3866
+3867
+3868
+3869
+3870
+3871
+3872
+3873
+3874
+3875
+3876
+3877
+3878
+3879
+3880
+3881
+3882
+3883
+3884
+3885
+3886
+3887
+3888
+3889
+3890
+3891
+3892
+3893
+3894
+3895
+3896
+3897
+3898
+3899
+3900
+3901
+3902
+3903
+3904
+3905
+3906
+3907
+3908
+3909
+3910
+3911
+3912
+3913
+3914
+3915
+3916
+3917
+3918
+3919
+3920
+3921
+3922
+3923
+3924
+3925
+3926
+3927
+3928
+3929
+3930
+3931
+3932
+3933
+3934
+3935
+3936
+3937
+3938
+3939
+3940
+3941
+3942
+3943
+3944
+3945
+3946
+3947
+3948
+3949
+3950
+3951
+3952
+3953
+3954
+3955
+3956
+3957
+3958
+3959
+3960
+3961
+3962
+3963
+3964
+3965
+3966
+3967
+3968
+3969
+3970
+3971
+3972
+3973
+3974
+3975
+3976
+3977
+3978
+3979
+3980
+3981
+3982
+3983
+3984
+3985
+3986
+3987
+3988
+3989
+3990
+3991
+3992
+3993
+3994
+3995
+3996
+3997
+3998
+3999
+4000
+4001
+4002
+4003
+4004
+4005
+4006
+4007
+4008
+4009
+4010
+4011
+4012
+4013
+4014
+4015
+4016
+4017
+4018
+4019
+4020
+4021
+4022
+4023
+4024
+4025
+4026
+4027
+4028
+4029
+4030
+4031
+4032
+4033
+4034
+4035
+4036
+4037
+4038
+4039
+4040
+4041
+4042
+4043
+4044
+4045
+4046
+4047
+4048
+4049
+4050
+4051
+4052
+4053
+4054
+4055
+4056
+4057
+4058
+4059
+4060
+4061
+4062
+4063
+4064
+4065
+4066
+4067
+4068
+4069
+4070
+4071
+4072
+4073
+4074
+4075
+4076
+4077
+4078
+4079
+4080
+4081
+4082
+4083
+4084
+4085
+4086
+4087
+4088
+4089
+4090
+4091
+4092
+4093
+4094
+4095
+4096
+4097
+4098
+4099
+4100
+4101
+4102
+4103
+4104
+4105
+4106
+4107
+4108
+4109
+4110
+4111
+4112
+4113
+4114
+4115
+4116
+4117
+4118
+4119
+4120
+4121
+4122
+4123
+4124
+4125
+4126
+4127
+4128
+4129
+4130
+4131
+4132
+4133
+4134
+4135
+4136
+4137
+4138
+4139
+4140
+4141
+4142
+4143
+4144
+4145
+4146
+4147
+4148
+4149
+4150
+4151
+4152
+4153
+4154
+4155
+4156
+4157
+4158
+4159
+4160
+4161
+4162
+4163
+4164
+4165
+4166
+4167
+4168
+4169
+4170
+4171
+4172
+4173
+4174
+4175
+4176
+4177
+4178
+4179
+4180
+4181
+4182
+4183
+4184
+4185
+4186
+4187
+4188
+4189
+4190
+4191
+4192
+4193
+4194
+4195
+4196
+4197
+4198
+4199
+4200
+4201
+4202
+4203
+4204
+4205
+4206
+4207
+4208
+4209
+4210
+4211
+4212
+4213
+4214
+4215
+4216
+4217
+4218
+4219
+4220
+4221
+4222
+4223
+4224
+4225
+4226
+4227
+4228
+4229
+4230
+4231
+4232
+4233
+4234
+4235
+4236
+4237
+4238
+4239
+4240
+4241
+4242
+4243
+4244
+4245
+4246
+4247
+4248
+4249
+4250
+4251
+4252
+4253
+4254
+4255
+4256
+4257
+4258
+4259
+4260
+4261
+4262
+4263
+4264
+4265
+4266
+4267
+4268
+4269
+4270
+4271
+4272
+4273
+4274
+4275
+4276
+4277
+4278
+4279
+4280
+4281
+4282
+4283
+4284
+4285
+4286
+4287
+4288
+4289
+4290
+4291
+4292
+4293
+4294
+4295
+4296
+4297
+4298
+4299
+4300
+4301
+4302
+4303
+4304
+4305
+4306
+4307
+4308
+4309
+4310
+4311
+4312
+4313
+4314
+4315
+4316
+4317
+4318
+4319
+4320
+4321
+4322
+4323
+4324
+4325
+4326
+4327
+4328
+4329
+4330
+4331
+4332
+4333
+4334
+4335
+4336
+4337
+4338
+4339
+4340
+4341
+4342
+4343
+4344
+4345
+4346
+4347
+4348
+4349
+4350
+4351
+4352
+4353
+4354
+4355
+4356
+4357
+4358
+4359
+4360
+4361
+4362
+4363
+4364
+4365
+4366
+4367
+4368
+4369
+4370
+4371
+4372
+4373
+4374
+4375
+4376
+4377
+4378
+4379
+4380
+4381
+4382
+4383
+4384
+4385
+4386
+4387
+4388
+4389
+4390
+4391
+4392
+4393
+4394
+4395
+4396
+4397
+4398
+4399
+4400
+4401
+4402
+4403
+4404
+4405
+4406
+4407
+4408
+4409
+4410
+4411
+4412
+4413
+4414
+4415
+4416
+4417
+4418
+4419
+4420
+4421
+4422
+4423
+4424
+4425
+4426
+4427
+4428
+4429
+4430
+4431
+4432
+4433
+4434
+4435
+4436
+4437
+4438
+4439
+4440
+4441
+4442
+4443
+4444
+4445
+4446
+4447
+4448
+4449
+4450
+4451
+4452
+4453
+4454
+4455
+4456
+4457
+4458
+4459
+4460
+4461
+4462
+4463
+4464
+4465
+4466
+4467
+4468
+4469
+4470
+4471
+4472
+4473
+4474
+4475
+4476
+4477
+4478
+4479
+4480
+4481
+4482
+4483
+4484
+4485
+4486
+4487
+4488
+4489
+4490
+4491
+4492
+4493
+4494
+4495
+4496
+4497
+4498
+4499
+4500
+4501
+4502
+4503
+4504
+4505
+4506
+4507
+4508
+4509
+4510
+4511
+4512
+4513
+4514
+4515
+4516
+4517
+4518
+4519
+4520
+4521
+4522
+4523
+4524
+4525
+4526
+4527
+4528
+4529
+4530
+4531
+4532
+4533
+4534
+4535
+4536
+4537
+4538
+4539
+4540
+4541
+4542
+4543
+4544
+4545
+4546
+4547
+4548
+4549
+4550
+4551
+4552
+4553
+4554
+4555
+4556
+4557
+4558
+4559
+4560
+4561
+4562
+4563
+4564
+4565
+4566
+4567
+4568
+4569
+4570
+4571
+4572
+4573
+4574
+4575
+4576
+4577
+4578
+4579
+4580
+4581
+4582
+4583
+4584
+4585
+4586
+4587
+4588
+4589
+4590
+4591
+4592
+4593
+4594
+4595
+4596
+4597
+4598
+4599
+4600
+4601
+4602
+4603
+4604
+4605
+4606
+4607
+4608
+4609
+4610
+4611
+4612
+4613
+4614
+4615
+4616
+4617
+4618
+4619
+4620
+4621
+4622
+4623
+4624
+4625
+4626
+4627
+4628
+4629
+4630
+4631
+4632
+4633
+4634
+4635
+4636
+4637
+4638
+4639
+4640
+4641
+4642
+4643
+4644
+4645
+4646
+4647
+4648
+4649
+4650
+4651
+4652
+4653
+4654
+4655
+4656
+4657
+4658
+4659
+4660
+4661
+4662
+4663
+4664
+4665
+4666
+4667
+4668
+4669
+4670
+4671
+4672
+4673
+4674
+4675
+4676
+4677
+4678
+4679
+4680
+4681
+4682
+4683
+4684
+4685
+4686
+4687
+4688
+4689
+4690
+4691
+4692
+4693
+4694
+4695
+4696
+4697
+4698
+4699
+4700
+4701
+4702
+4703
+4704
+4705
+4706
+4707
+4708
+4709
+4710
+4711
+4712
+4713
+4714
+4715
+4716
+4717
+4718
+4719
+4720
+4721
+4722
+4723
+4724
+4725
+4726
+4727
+4728
+4729
+4730
+4731
+4732
+4733
+4734
+4735
+4736
+4737
+4738
+4739
+4740
+4741
+4742
+4743
+4744
+4745
+4746
+4747
+4748
+4749
+4750
+4751
+4752
+4753
+4754
+4755
+4756
+4757
+4758
+4759
+4760
+4761
+4762
+4763
+4764
+4765
+4766
+4767
+4768
+4769
+4770
+4771
+4772
+4773
+4774
+4775
+4776
+4777
+4778
+4779
+4780
+4781
+4782
+4783
+4784
+4785
+4786
+4787
+4788
+4789
+4790
+4791
+4792
+4793
+4794
+4795
+4796
+4797
+4798
+4799
+4800
+4801
+4802
+4803
+4804
+4805
+4806
+4807
+4808
+4809
+4810
+4811
+4812
+4813
+4814
+4815
+4816
+4817
+4818
+4819
+4820
+4821
+4822
+4823
+4824
+4825
+4826
+4827
+4828
+4829
+4830
+4831
+4832
+4833
+4834
+4835
+4836
+4837
+4838
+4839
+4840
+4841
+4842
+4843
+4844
+4845
+4846
+4847
+4848
+4849
+4850
+4851
+4852
+4853
+4854
+4855
+4856
+4857
+4858
+4859
+4860
+4861
+4862
+4863
+4864
+4865
+4866
+4867
+4868
+4869
+4870
+4871
+4872
+4873
+4874
+4875
+4876
+4877
+4878
+4879
+4880
+4881
+4882
+4883
+4884
+4885
+4886
+4887
+4888
+4889
+4890
+4891
+4892
+4893
+4894
+4895
+4896
+4897
+4898
+4899
+4900
+4901
+4902
+4903
+4904
+4905
+4906
+4907
+4908
+4909
+4910
+4911
+4912
+4913
+4914
+4915
+4916
+4917
+4918
+4919
+4920
+4921
+4922
+4923
+4924
+4925
+4926
+4927
+4928
+4929
+4930
+4931
+4932
+4933
+4934
+4935
+4936
+4937
+4938
+4939
+4940
+4941
+4942
+4943
+4944
+4945
+4946
+4947
+4948
+4949
+4950
+4951
+4952
+4953
+4954
+4955
+4956
+4957
+4958
+4959
+4960
+4961
+4962
+4963
+4964
+4965
+4966
+4967
+4968
+4969
+4970
+4971
+4972
+4973
+4974
+4975
+4976
+4977
+4978
+4979
+4980
+4981
+4982
+4983
+4984
+4985
+4986
+4987
+4988
+4989
+4990
+4991
+4992
+4993
+4994
+4995
+4996
+4997
+4998
+4999
+Stopping
Index: tests/concurrency/waitfor/.expect/dtor.txt
===================================================================
--- tests/concurrency/waitfor/.expect/dtor.txt	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
+++ tests/concurrency/waitfor/.expect/dtor.txt	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
@@ -0,0 +1,2 @@
+Starting
+Stopping
Index: tests/concurrency/waitfor/.expect/else.txt
===================================================================
--- tests/concurrency/waitfor/.expect/else.txt	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
+++ tests/concurrency/waitfor/.expect/else.txt	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
@@ -0,0 +1,9 @@
+Starting
+Step 0
+else called
+Step 1
+else called
+Step 2
+else called
+Step 3
+Done
Index: tests/concurrency/waitfor/.expect/parse.txt
===================================================================
--- tests/concurrency/waitfor/.expect/parse.txt	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
+++ tests/concurrency/waitfor/.expect/parse.txt	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
@@ -0,0 +1,1 @@
+concurrency/waitfor/parse.cfa:255:25: warning: Compiled
Index: tests/concurrency/waitfor/.expect/recurse.txt
===================================================================
--- tests/concurrency/waitfor/.expect/recurse.txt	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
+++ tests/concurrency/waitfor/.expect/recurse.txt	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
@@ -0,0 +1,5002 @@
+Starting
+0 1st 2nd 3rd Last 3rd 2nd 1st
+1 1st 2nd 3rd Last 3rd 2nd 1st
+2 1st 2nd 3rd Last 3rd 2nd 1st
+3 1st 2nd 3rd Last 3rd 2nd 1st
+4 1st 2nd 3rd Last 3rd 2nd 1st
+5 1st 2nd 3rd Last 3rd 2nd 1st
+6 1st 2nd 3rd Last 3rd 2nd 1st
+7 1st 2nd 3rd Last 3rd 2nd 1st
+8 1st 2nd 3rd Last 3rd 2nd 1st
+9 1st 2nd 3rd Last 3rd 2nd 1st
+10 1st 2nd 3rd Last 3rd 2nd 1st
+11 1st 2nd 3rd Last 3rd 2nd 1st
+12 1st 2nd 3rd Last 3rd 2nd 1st
+13 1st 2nd 3rd Last 3rd 2nd 1st
+14 1st 2nd 3rd Last 3rd 2nd 1st
+15 1st 2nd 3rd Last 3rd 2nd 1st
+16 1st 2nd 3rd Last 3rd 2nd 1st
+17 1st 2nd 3rd Last 3rd 2nd 1st
+18 1st 2nd 3rd Last 3rd 2nd 1st
+19 1st 2nd 3rd Last 3rd 2nd 1st
+20 1st 2nd 3rd Last 3rd 2nd 1st
+21 1st 2nd 3rd Last 3rd 2nd 1st
+22 1st 2nd 3rd Last 3rd 2nd 1st
+23 1st 2nd 3rd Last 3rd 2nd 1st
+24 1st 2nd 3rd Last 3rd 2nd 1st
+25 1st 2nd 3rd Last 3rd 2nd 1st
+26 1st 2nd 3rd Last 3rd 2nd 1st
+27 1st 2nd 3rd Last 3rd 2nd 1st
+28 1st 2nd 3rd Last 3rd 2nd 1st
+29 1st 2nd 3rd Last 3rd 2nd 1st
+30 1st 2nd 3rd Last 3rd 2nd 1st
+31 1st 2nd 3rd Last 3rd 2nd 1st
+32 1st 2nd 3rd Last 3rd 2nd 1st
+33 1st 2nd 3rd Last 3rd 2nd 1st
+34 1st 2nd 3rd Last 3rd 2nd 1st
+35 1st 2nd 3rd Last 3rd 2nd 1st
+36 1st 2nd 3rd Last 3rd 2nd 1st
+37 1st 2nd 3rd Last 3rd 2nd 1st
+38 1st 2nd 3rd Last 3rd 2nd 1st
+39 1st 2nd 3rd Last 3rd 2nd 1st
+40 1st 2nd 3rd Last 3rd 2nd 1st
+41 1st 2nd 3rd Last 3rd 2nd 1st
+42 1st 2nd 3rd Last 3rd 2nd 1st
+43 1st 2nd 3rd Last 3rd 2nd 1st
+44 1st 2nd 3rd Last 3rd 2nd 1st
+45 1st 2nd 3rd Last 3rd 2nd 1st
+46 1st 2nd 3rd Last 3rd 2nd 1st
+47 1st 2nd 3rd Last 3rd 2nd 1st
+48 1st 2nd 3rd Last 3rd 2nd 1st
+49 1st 2nd 3rd Last 3rd 2nd 1st
+50 1st 2nd 3rd Last 3rd 2nd 1st
+51 1st 2nd 3rd Last 3rd 2nd 1st
+52 1st 2nd 3rd Last 3rd 2nd 1st
+53 1st 2nd 3rd Last 3rd 2nd 1st
+54 1st 2nd 3rd Last 3rd 2nd 1st
+55 1st 2nd 3rd Last 3rd 2nd 1st
+56 1st 2nd 3rd Last 3rd 2nd 1st
+57 1st 2nd 3rd Last 3rd 2nd 1st
+58 1st 2nd 3rd Last 3rd 2nd 1st
+59 1st 2nd 3rd Last 3rd 2nd 1st
+60 1st 2nd 3rd Last 3rd 2nd 1st
+61 1st 2nd 3rd Last 3rd 2nd 1st
+62 1st 2nd 3rd Last 3rd 2nd 1st
+63 1st 2nd 3rd Last 3rd 2nd 1st
+64 1st 2nd 3rd Last 3rd 2nd 1st
+65 1st 2nd 3rd Last 3rd 2nd 1st
+66 1st 2nd 3rd Last 3rd 2nd 1st
+67 1st 2nd 3rd Last 3rd 2nd 1st
+68 1st 2nd 3rd Last 3rd 2nd 1st
+69 1st 2nd 3rd Last 3rd 2nd 1st
+70 1st 2nd 3rd Last 3rd 2nd 1st
+71 1st 2nd 3rd Last 3rd 2nd 1st
+72 1st 2nd 3rd Last 3rd 2nd 1st
+73 1st 2nd 3rd Last 3rd 2nd 1st
+74 1st 2nd 3rd Last 3rd 2nd 1st
+75 1st 2nd 3rd Last 3rd 2nd 1st
+76 1st 2nd 3rd Last 3rd 2nd 1st
+77 1st 2nd 3rd Last 3rd 2nd 1st
+78 1st 2nd 3rd Last 3rd 2nd 1st
+79 1st 2nd 3rd Last 3rd 2nd 1st
+80 1st 2nd 3rd Last 3rd 2nd 1st
+81 1st 2nd 3rd Last 3rd 2nd 1st
+82 1st 2nd 3rd Last 3rd 2nd 1st
+83 1st 2nd 3rd Last 3rd 2nd 1st
+84 1st 2nd 3rd Last 3rd 2nd 1st
+85 1st 2nd 3rd Last 3rd 2nd 1st
+86 1st 2nd 3rd Last 3rd 2nd 1st
+87 1st 2nd 3rd Last 3rd 2nd 1st
+88 1st 2nd 3rd Last 3rd 2nd 1st
+89 1st 2nd 3rd Last 3rd 2nd 1st
+90 1st 2nd 3rd Last 3rd 2nd 1st
+91 1st 2nd 3rd Last 3rd 2nd 1st
+92 1st 2nd 3rd Last 3rd 2nd 1st
+93 1st 2nd 3rd Last 3rd 2nd 1st
+94 1st 2nd 3rd Last 3rd 2nd 1st
+95 1st 2nd 3rd Last 3rd 2nd 1st
+96 1st 2nd 3rd Last 3rd 2nd 1st
+97 1st 2nd 3rd Last 3rd 2nd 1st
+98 1st 2nd 3rd Last 3rd 2nd 1st
+99 1st 2nd 3rd Last 3rd 2nd 1st
+100 1st 2nd 3rd Last 3rd 2nd 1st
+101 1st 2nd 3rd Last 3rd 2nd 1st
+102 1st 2nd 3rd Last 3rd 2nd 1st
+103 1st 2nd 3rd Last 3rd 2nd 1st
+104 1st 2nd 3rd Last 3rd 2nd 1st
+105 1st 2nd 3rd Last 3rd 2nd 1st
+106 1st 2nd 3rd Last 3rd 2nd 1st
+107 1st 2nd 3rd Last 3rd 2nd 1st
+108 1st 2nd 3rd Last 3rd 2nd 1st
+109 1st 2nd 3rd Last 3rd 2nd 1st
+110 1st 2nd 3rd Last 3rd 2nd 1st
+111 1st 2nd 3rd Last 3rd 2nd 1st
+112 1st 2nd 3rd Last 3rd 2nd 1st
+113 1st 2nd 3rd Last 3rd 2nd 1st
+114 1st 2nd 3rd Last 3rd 2nd 1st
+115 1st 2nd 3rd Last 3rd 2nd 1st
+116 1st 2nd 3rd Last 3rd 2nd 1st
+117 1st 2nd 3rd Last 3rd 2nd 1st
+118 1st 2nd 3rd Last 3rd 2nd 1st
+119 1st 2nd 3rd Last 3rd 2nd 1st
+120 1st 2nd 3rd Last 3rd 2nd 1st
+121 1st 2nd 3rd Last 3rd 2nd 1st
+122 1st 2nd 3rd Last 3rd 2nd 1st
+123 1st 2nd 3rd Last 3rd 2nd 1st
+124 1st 2nd 3rd Last 3rd 2nd 1st
+125 1st 2nd 3rd Last 3rd 2nd 1st
+126 1st 2nd 3rd Last 3rd 2nd 1st
+127 1st 2nd 3rd Last 3rd 2nd 1st
+128 1st 2nd 3rd Last 3rd 2nd 1st
+129 1st 2nd 3rd Last 3rd 2nd 1st
+130 1st 2nd 3rd Last 3rd 2nd 1st
+131 1st 2nd 3rd Last 3rd 2nd 1st
+132 1st 2nd 3rd Last 3rd 2nd 1st
+133 1st 2nd 3rd Last 3rd 2nd 1st
+134 1st 2nd 3rd Last 3rd 2nd 1st
+135 1st 2nd 3rd Last 3rd 2nd 1st
+136 1st 2nd 3rd Last 3rd 2nd 1st
+137 1st 2nd 3rd Last 3rd 2nd 1st
+138 1st 2nd 3rd Last 3rd 2nd 1st
+139 1st 2nd 3rd Last 3rd 2nd 1st
+140 1st 2nd 3rd Last 3rd 2nd 1st
+141 1st 2nd 3rd Last 3rd 2nd 1st
+142 1st 2nd 3rd Last 3rd 2nd 1st
+143 1st 2nd 3rd Last 3rd 2nd 1st
+144 1st 2nd 3rd Last 3rd 2nd 1st
+145 1st 2nd 3rd Last 3rd 2nd 1st
+146 1st 2nd 3rd Last 3rd 2nd 1st
+147 1st 2nd 3rd Last 3rd 2nd 1st
+148 1st 2nd 3rd Last 3rd 2nd 1st
+149 1st 2nd 3rd Last 3rd 2nd 1st
+150 1st 2nd 3rd Last 3rd 2nd 1st
+151 1st 2nd 3rd Last 3rd 2nd 1st
+152 1st 2nd 3rd Last 3rd 2nd 1st
+153 1st 2nd 3rd Last 3rd 2nd 1st
+154 1st 2nd 3rd Last 3rd 2nd 1st
+155 1st 2nd 3rd Last 3rd 2nd 1st
+156 1st 2nd 3rd Last 3rd 2nd 1st
+157 1st 2nd 3rd Last 3rd 2nd 1st
+158 1st 2nd 3rd Last 3rd 2nd 1st
+159 1st 2nd 3rd Last 3rd 2nd 1st
+160 1st 2nd 3rd Last 3rd 2nd 1st
+161 1st 2nd 3rd Last 3rd 2nd 1st
+162 1st 2nd 3rd Last 3rd 2nd 1st
+163 1st 2nd 3rd Last 3rd 2nd 1st
+164 1st 2nd 3rd Last 3rd 2nd 1st
+165 1st 2nd 3rd Last 3rd 2nd 1st
+166 1st 2nd 3rd Last 3rd 2nd 1st
+167 1st 2nd 3rd Last 3rd 2nd 1st
+168 1st 2nd 3rd Last 3rd 2nd 1st
+169 1st 2nd 3rd Last 3rd 2nd 1st
+170 1st 2nd 3rd Last 3rd 2nd 1st
+171 1st 2nd 3rd Last 3rd 2nd 1st
+172 1st 2nd 3rd Last 3rd 2nd 1st
+173 1st 2nd 3rd Last 3rd 2nd 1st
+174 1st 2nd 3rd Last 3rd 2nd 1st
+175 1st 2nd 3rd Last 3rd 2nd 1st
+176 1st 2nd 3rd Last 3rd 2nd 1st
+177 1st 2nd 3rd Last 3rd 2nd 1st
+178 1st 2nd 3rd Last 3rd 2nd 1st
+179 1st 2nd 3rd Last 3rd 2nd 1st
+180 1st 2nd 3rd Last 3rd 2nd 1st
+181 1st 2nd 3rd Last 3rd 2nd 1st
+182 1st 2nd 3rd Last 3rd 2nd 1st
+183 1st 2nd 3rd Last 3rd 2nd 1st
+184 1st 2nd 3rd Last 3rd 2nd 1st
+185 1st 2nd 3rd Last 3rd 2nd 1st
+186 1st 2nd 3rd Last 3rd 2nd 1st
+187 1st 2nd 3rd Last 3rd 2nd 1st
+188 1st 2nd 3rd Last 3rd 2nd 1st
+189 1st 2nd 3rd Last 3rd 2nd 1st
+190 1st 2nd 3rd Last 3rd 2nd 1st
+191 1st 2nd 3rd Last 3rd 2nd 1st
+192 1st 2nd 3rd Last 3rd 2nd 1st
+193 1st 2nd 3rd Last 3rd 2nd 1st
+194 1st 2nd 3rd Last 3rd 2nd 1st
+195 1st 2nd 3rd Last 3rd 2nd 1st
+196 1st 2nd 3rd Last 3rd 2nd 1st
+197 1st 2nd 3rd Last 3rd 2nd 1st
+198 1st 2nd 3rd Last 3rd 2nd 1st
+199 1st 2nd 3rd Last 3rd 2nd 1st
+200 1st 2nd 3rd Last 3rd 2nd 1st
+201 1st 2nd 3rd Last 3rd 2nd 1st
+202 1st 2nd 3rd Last 3rd 2nd 1st
+203 1st 2nd 3rd Last 3rd 2nd 1st
+204 1st 2nd 3rd Last 3rd 2nd 1st
+205 1st 2nd 3rd Last 3rd 2nd 1st
+206 1st 2nd 3rd Last 3rd 2nd 1st
+207 1st 2nd 3rd Last 3rd 2nd 1st
+208 1st 2nd 3rd Last 3rd 2nd 1st
+209 1st 2nd 3rd Last 3rd 2nd 1st
+210 1st 2nd 3rd Last 3rd 2nd 1st
+211 1st 2nd 3rd Last 3rd 2nd 1st
+212 1st 2nd 3rd Last 3rd 2nd 1st
+213 1st 2nd 3rd Last 3rd 2nd 1st
+214 1st 2nd 3rd Last 3rd 2nd 1st
+215 1st 2nd 3rd Last 3rd 2nd 1st
+216 1st 2nd 3rd Last 3rd 2nd 1st
+217 1st 2nd 3rd Last 3rd 2nd 1st
+218 1st 2nd 3rd Last 3rd 2nd 1st
+219 1st 2nd 3rd Last 3rd 2nd 1st
+220 1st 2nd 3rd Last 3rd 2nd 1st
+221 1st 2nd 3rd Last 3rd 2nd 1st
+222 1st 2nd 3rd Last 3rd 2nd 1st
+223 1st 2nd 3rd Last 3rd 2nd 1st
+224 1st 2nd 3rd Last 3rd 2nd 1st
+225 1st 2nd 3rd Last 3rd 2nd 1st
+226 1st 2nd 3rd Last 3rd 2nd 1st
+227 1st 2nd 3rd Last 3rd 2nd 1st
+228 1st 2nd 3rd Last 3rd 2nd 1st
+229 1st 2nd 3rd Last 3rd 2nd 1st
+230 1st 2nd 3rd Last 3rd 2nd 1st
+231 1st 2nd 3rd Last 3rd 2nd 1st
+232 1st 2nd 3rd Last 3rd 2nd 1st
+233 1st 2nd 3rd Last 3rd 2nd 1st
+234 1st 2nd 3rd Last 3rd 2nd 1st
+235 1st 2nd 3rd Last 3rd 2nd 1st
+236 1st 2nd 3rd Last 3rd 2nd 1st
+237 1st 2nd 3rd Last 3rd 2nd 1st
+238 1st 2nd 3rd Last 3rd 2nd 1st
+239 1st 2nd 3rd Last 3rd 2nd 1st
+240 1st 2nd 3rd Last 3rd 2nd 1st
+241 1st 2nd 3rd Last 3rd 2nd 1st
+242 1st 2nd 3rd Last 3rd 2nd 1st
+243 1st 2nd 3rd Last 3rd 2nd 1st
+244 1st 2nd 3rd Last 3rd 2nd 1st
+245 1st 2nd 3rd Last 3rd 2nd 1st
+246 1st 2nd 3rd Last 3rd 2nd 1st
+247 1st 2nd 3rd Last 3rd 2nd 1st
+248 1st 2nd 3rd Last 3rd 2nd 1st
+249 1st 2nd 3rd Last 3rd 2nd 1st
+250 1st 2nd 3rd Last 3rd 2nd 1st
+251 1st 2nd 3rd Last 3rd 2nd 1st
+252 1st 2nd 3rd Last 3rd 2nd 1st
+253 1st 2nd 3rd Last 3rd 2nd 1st
+254 1st 2nd 3rd Last 3rd 2nd 1st
+255 1st 2nd 3rd Last 3rd 2nd 1st
+256 1st 2nd 3rd Last 3rd 2nd 1st
+257 1st 2nd 3rd Last 3rd 2nd 1st
+258 1st 2nd 3rd Last 3rd 2nd 1st
+259 1st 2nd 3rd Last 3rd 2nd 1st
+260 1st 2nd 3rd Last 3rd 2nd 1st
+261 1st 2nd 3rd Last 3rd 2nd 1st
+262 1st 2nd 3rd Last 3rd 2nd 1st
+263 1st 2nd 3rd Last 3rd 2nd 1st
+264 1st 2nd 3rd Last 3rd 2nd 1st
+265 1st 2nd 3rd Last 3rd 2nd 1st
+266 1st 2nd 3rd Last 3rd 2nd 1st
+267 1st 2nd 3rd Last 3rd 2nd 1st
+268 1st 2nd 3rd Last 3rd 2nd 1st
+269 1st 2nd 3rd Last 3rd 2nd 1st
+270 1st 2nd 3rd Last 3rd 2nd 1st
+271 1st 2nd 3rd Last 3rd 2nd 1st
+272 1st 2nd 3rd Last 3rd 2nd 1st
+273 1st 2nd 3rd Last 3rd 2nd 1st
+274 1st 2nd 3rd Last 3rd 2nd 1st
+275 1st 2nd 3rd Last 3rd 2nd 1st
+276 1st 2nd 3rd Last 3rd 2nd 1st
+277 1st 2nd 3rd Last 3rd 2nd 1st
+278 1st 2nd 3rd Last 3rd 2nd 1st
+279 1st 2nd 3rd Last 3rd 2nd 1st
+280 1st 2nd 3rd Last 3rd 2nd 1st
+281 1st 2nd 3rd Last 3rd 2nd 1st
+282 1st 2nd 3rd Last 3rd 2nd 1st
+283 1st 2nd 3rd Last 3rd 2nd 1st
+284 1st 2nd 3rd Last 3rd 2nd 1st
+285 1st 2nd 3rd Last 3rd 2nd 1st
+286 1st 2nd 3rd Last 3rd 2nd 1st
+287 1st 2nd 3rd Last 3rd 2nd 1st
+288 1st 2nd 3rd Last 3rd 2nd 1st
+289 1st 2nd 3rd Last 3rd 2nd 1st
+290 1st 2nd 3rd Last 3rd 2nd 1st
+291 1st 2nd 3rd Last 3rd 2nd 1st
+292 1st 2nd 3rd Last 3rd 2nd 1st
+293 1st 2nd 3rd Last 3rd 2nd 1st
+294 1st 2nd 3rd Last 3rd 2nd 1st
+295 1st 2nd 3rd Last 3rd 2nd 1st
+296 1st 2nd 3rd Last 3rd 2nd 1st
+297 1st 2nd 3rd Last 3rd 2nd 1st
+298 1st 2nd 3rd Last 3rd 2nd 1st
+299 1st 2nd 3rd Last 3rd 2nd 1st
+300 1st 2nd 3rd Last 3rd 2nd 1st
+301 1st 2nd 3rd Last 3rd 2nd 1st
+302 1st 2nd 3rd Last 3rd 2nd 1st
+303 1st 2nd 3rd Last 3rd 2nd 1st
+304 1st 2nd 3rd Last 3rd 2nd 1st
+305 1st 2nd 3rd Last 3rd 2nd 1st
+306 1st 2nd 3rd Last 3rd 2nd 1st
+307 1st 2nd 3rd Last 3rd 2nd 1st
+308 1st 2nd 3rd Last 3rd 2nd 1st
+309 1st 2nd 3rd Last 3rd 2nd 1st
+310 1st 2nd 3rd Last 3rd 2nd 1st
+311 1st 2nd 3rd Last 3rd 2nd 1st
+312 1st 2nd 3rd Last 3rd 2nd 1st
+313 1st 2nd 3rd Last 3rd 2nd 1st
+314 1st 2nd 3rd Last 3rd 2nd 1st
+315 1st 2nd 3rd Last 3rd 2nd 1st
+316 1st 2nd 3rd Last 3rd 2nd 1st
+317 1st 2nd 3rd Last 3rd 2nd 1st
+318 1st 2nd 3rd Last 3rd 2nd 1st
+319 1st 2nd 3rd Last 3rd 2nd 1st
+320 1st 2nd 3rd Last 3rd 2nd 1st
+321 1st 2nd 3rd Last 3rd 2nd 1st
+322 1st 2nd 3rd Last 3rd 2nd 1st
+323 1st 2nd 3rd Last 3rd 2nd 1st
+324 1st 2nd 3rd Last 3rd 2nd 1st
+325 1st 2nd 3rd Last 3rd 2nd 1st
+326 1st 2nd 3rd Last 3rd 2nd 1st
+327 1st 2nd 3rd Last 3rd 2nd 1st
+328 1st 2nd 3rd Last 3rd 2nd 1st
+329 1st 2nd 3rd Last 3rd 2nd 1st
+330 1st 2nd 3rd Last 3rd 2nd 1st
+331 1st 2nd 3rd Last 3rd 2nd 1st
+332 1st 2nd 3rd Last 3rd 2nd 1st
+333 1st 2nd 3rd Last 3rd 2nd 1st
+334 1st 2nd 3rd Last 3rd 2nd 1st
+335 1st 2nd 3rd Last 3rd 2nd 1st
+336 1st 2nd 3rd Last 3rd 2nd 1st
+337 1st 2nd 3rd Last 3rd 2nd 1st
+338 1st 2nd 3rd Last 3rd 2nd 1st
+339 1st 2nd 3rd Last 3rd 2nd 1st
+340 1st 2nd 3rd Last 3rd 2nd 1st
+341 1st 2nd 3rd Last 3rd 2nd 1st
+342 1st 2nd 3rd Last 3rd 2nd 1st
+343 1st 2nd 3rd Last 3rd 2nd 1st
+344 1st 2nd 3rd Last 3rd 2nd 1st
+345 1st 2nd 3rd Last 3rd 2nd 1st
+346 1st 2nd 3rd Last 3rd 2nd 1st
+347 1st 2nd 3rd Last 3rd 2nd 1st
+348 1st 2nd 3rd Last 3rd 2nd 1st
+349 1st 2nd 3rd Last 3rd 2nd 1st
+350 1st 2nd 3rd Last 3rd 2nd 1st
+351 1st 2nd 3rd Last 3rd 2nd 1st
+352 1st 2nd 3rd Last 3rd 2nd 1st
+353 1st 2nd 3rd Last 3rd 2nd 1st
+354 1st 2nd 3rd Last 3rd 2nd 1st
+355 1st 2nd 3rd Last 3rd 2nd 1st
+356 1st 2nd 3rd Last 3rd 2nd 1st
+357 1st 2nd 3rd Last 3rd 2nd 1st
+358 1st 2nd 3rd Last 3rd 2nd 1st
+359 1st 2nd 3rd Last 3rd 2nd 1st
+360 1st 2nd 3rd Last 3rd 2nd 1st
+361 1st 2nd 3rd Last 3rd 2nd 1st
+362 1st 2nd 3rd Last 3rd 2nd 1st
+363 1st 2nd 3rd Last 3rd 2nd 1st
+364 1st 2nd 3rd Last 3rd 2nd 1st
+365 1st 2nd 3rd Last 3rd 2nd 1st
+366 1st 2nd 3rd Last 3rd 2nd 1st
+367 1st 2nd 3rd Last 3rd 2nd 1st
+368 1st 2nd 3rd Last 3rd 2nd 1st
+369 1st 2nd 3rd Last 3rd 2nd 1st
+370 1st 2nd 3rd Last 3rd 2nd 1st
+371 1st 2nd 3rd Last 3rd 2nd 1st
+372 1st 2nd 3rd Last 3rd 2nd 1st
+373 1st 2nd 3rd Last 3rd 2nd 1st
+374 1st 2nd 3rd Last 3rd 2nd 1st
+375 1st 2nd 3rd Last 3rd 2nd 1st
+376 1st 2nd 3rd Last 3rd 2nd 1st
+377 1st 2nd 3rd Last 3rd 2nd 1st
+378 1st 2nd 3rd Last 3rd 2nd 1st
+379 1st 2nd 3rd Last 3rd 2nd 1st
+380 1st 2nd 3rd Last 3rd 2nd 1st
+381 1st 2nd 3rd Last 3rd 2nd 1st
+382 1st 2nd 3rd Last 3rd 2nd 1st
+383 1st 2nd 3rd Last 3rd 2nd 1st
+384 1st 2nd 3rd Last 3rd 2nd 1st
+385 1st 2nd 3rd Last 3rd 2nd 1st
+386 1st 2nd 3rd Last 3rd 2nd 1st
+387 1st 2nd 3rd Last 3rd 2nd 1st
+388 1st 2nd 3rd Last 3rd 2nd 1st
+389 1st 2nd 3rd Last 3rd 2nd 1st
+390 1st 2nd 3rd Last 3rd 2nd 1st
+391 1st 2nd 3rd Last 3rd 2nd 1st
+392 1st 2nd 3rd Last 3rd 2nd 1st
+393 1st 2nd 3rd Last 3rd 2nd 1st
+394 1st 2nd 3rd Last 3rd 2nd 1st
+395 1st 2nd 3rd Last 3rd 2nd 1st
+396 1st 2nd 3rd Last 3rd 2nd 1st
+397 1st 2nd 3rd Last 3rd 2nd 1st
+398 1st 2nd 3rd Last 3rd 2nd 1st
+399 1st 2nd 3rd Last 3rd 2nd 1st
+400 1st 2nd 3rd Last 3rd 2nd 1st
+401 1st 2nd 3rd Last 3rd 2nd 1st
+402 1st 2nd 3rd Last 3rd 2nd 1st
+403 1st 2nd 3rd Last 3rd 2nd 1st
+404 1st 2nd 3rd Last 3rd 2nd 1st
+405 1st 2nd 3rd Last 3rd 2nd 1st
+406 1st 2nd 3rd Last 3rd 2nd 1st
+407 1st 2nd 3rd Last 3rd 2nd 1st
+408 1st 2nd 3rd Last 3rd 2nd 1st
+409 1st 2nd 3rd Last 3rd 2nd 1st
+410 1st 2nd 3rd Last 3rd 2nd 1st
+411 1st 2nd 3rd Last 3rd 2nd 1st
+412 1st 2nd 3rd Last 3rd 2nd 1st
+413 1st 2nd 3rd Last 3rd 2nd 1st
+414 1st 2nd 3rd Last 3rd 2nd 1st
+415 1st 2nd 3rd Last 3rd 2nd 1st
+416 1st 2nd 3rd Last 3rd 2nd 1st
+417 1st 2nd 3rd Last 3rd 2nd 1st
+418 1st 2nd 3rd Last 3rd 2nd 1st
+419 1st 2nd 3rd Last 3rd 2nd 1st
+420 1st 2nd 3rd Last 3rd 2nd 1st
+421 1st 2nd 3rd Last 3rd 2nd 1st
+422 1st 2nd 3rd Last 3rd 2nd 1st
+423 1st 2nd 3rd Last 3rd 2nd 1st
+424 1st 2nd 3rd Last 3rd 2nd 1st
+425 1st 2nd 3rd Last 3rd 2nd 1st
+426 1st 2nd 3rd Last 3rd 2nd 1st
+427 1st 2nd 3rd Last 3rd 2nd 1st
+428 1st 2nd 3rd Last 3rd 2nd 1st
+429 1st 2nd 3rd Last 3rd 2nd 1st
+430 1st 2nd 3rd Last 3rd 2nd 1st
+431 1st 2nd 3rd Last 3rd 2nd 1st
+432 1st 2nd 3rd Last 3rd 2nd 1st
+433 1st 2nd 3rd Last 3rd 2nd 1st
+434 1st 2nd 3rd Last 3rd 2nd 1st
+435 1st 2nd 3rd Last 3rd 2nd 1st
+436 1st 2nd 3rd Last 3rd 2nd 1st
+437 1st 2nd 3rd Last 3rd 2nd 1st
+438 1st 2nd 3rd Last 3rd 2nd 1st
+439 1st 2nd 3rd Last 3rd 2nd 1st
+440 1st 2nd 3rd Last 3rd 2nd 1st
+441 1st 2nd 3rd Last 3rd 2nd 1st
+442 1st 2nd 3rd Last 3rd 2nd 1st
+443 1st 2nd 3rd Last 3rd 2nd 1st
+444 1st 2nd 3rd Last 3rd 2nd 1st
+445 1st 2nd 3rd Last 3rd 2nd 1st
+446 1st 2nd 3rd Last 3rd 2nd 1st
+447 1st 2nd 3rd Last 3rd 2nd 1st
+448 1st 2nd 3rd Last 3rd 2nd 1st
+449 1st 2nd 3rd Last 3rd 2nd 1st
+450 1st 2nd 3rd Last 3rd 2nd 1st
+451 1st 2nd 3rd Last 3rd 2nd 1st
+452 1st 2nd 3rd Last 3rd 2nd 1st
+453 1st 2nd 3rd Last 3rd 2nd 1st
+454 1st 2nd 3rd Last 3rd 2nd 1st
+455 1st 2nd 3rd Last 3rd 2nd 1st
+456 1st 2nd 3rd Last 3rd 2nd 1st
+457 1st 2nd 3rd Last 3rd 2nd 1st
+458 1st 2nd 3rd Last 3rd 2nd 1st
+459 1st 2nd 3rd Last 3rd 2nd 1st
+460 1st 2nd 3rd Last 3rd 2nd 1st
+461 1st 2nd 3rd Last 3rd 2nd 1st
+462 1st 2nd 3rd Last 3rd 2nd 1st
+463 1st 2nd 3rd Last 3rd 2nd 1st
+464 1st 2nd 3rd Last 3rd 2nd 1st
+465 1st 2nd 3rd Last 3rd 2nd 1st
+466 1st 2nd 3rd Last 3rd 2nd 1st
+467 1st 2nd 3rd Last 3rd 2nd 1st
+468 1st 2nd 3rd Last 3rd 2nd 1st
+469 1st 2nd 3rd Last 3rd 2nd 1st
+470 1st 2nd 3rd Last 3rd 2nd 1st
+471 1st 2nd 3rd Last 3rd 2nd 1st
+472 1st 2nd 3rd Last 3rd 2nd 1st
+473 1st 2nd 3rd Last 3rd 2nd 1st
+474 1st 2nd 3rd Last 3rd 2nd 1st
+475 1st 2nd 3rd Last 3rd 2nd 1st
+476 1st 2nd 3rd Last 3rd 2nd 1st
+477 1st 2nd 3rd Last 3rd 2nd 1st
+478 1st 2nd 3rd Last 3rd 2nd 1st
+479 1st 2nd 3rd Last 3rd 2nd 1st
+480 1st 2nd 3rd Last 3rd 2nd 1st
+481 1st 2nd 3rd Last 3rd 2nd 1st
+482 1st 2nd 3rd Last 3rd 2nd 1st
+483 1st 2nd 3rd Last 3rd 2nd 1st
+484 1st 2nd 3rd Last 3rd 2nd 1st
+485 1st 2nd 3rd Last 3rd 2nd 1st
+486 1st 2nd 3rd Last 3rd 2nd 1st
+487 1st 2nd 3rd Last 3rd 2nd 1st
+488 1st 2nd 3rd Last 3rd 2nd 1st
+489 1st 2nd 3rd Last 3rd 2nd 1st
+490 1st 2nd 3rd Last 3rd 2nd 1st
+491 1st 2nd 3rd Last 3rd 2nd 1st
+492 1st 2nd 3rd Last 3rd 2nd 1st
+493 1st 2nd 3rd Last 3rd 2nd 1st
+494 1st 2nd 3rd Last 3rd 2nd 1st
+495 1st 2nd 3rd Last 3rd 2nd 1st
+496 1st 2nd 3rd Last 3rd 2nd 1st
+497 1st 2nd 3rd Last 3rd 2nd 1st
+498 1st 2nd 3rd Last 3rd 2nd 1st
+499 1st 2nd 3rd Last 3rd 2nd 1st
+500 1st 2nd 3rd Last 3rd 2nd 1st
+501 1st 2nd 3rd Last 3rd 2nd 1st
+502 1st 2nd 3rd Last 3rd 2nd 1st
+503 1st 2nd 3rd Last 3rd 2nd 1st
+504 1st 2nd 3rd Last 3rd 2nd 1st
+505 1st 2nd 3rd Last 3rd 2nd 1st
+506 1st 2nd 3rd Last 3rd 2nd 1st
+507 1st 2nd 3rd Last 3rd 2nd 1st
+508 1st 2nd 3rd Last 3rd 2nd 1st
+509 1st 2nd 3rd Last 3rd 2nd 1st
+510 1st 2nd 3rd Last 3rd 2nd 1st
+511 1st 2nd 3rd Last 3rd 2nd 1st
+512 1st 2nd 3rd Last 3rd 2nd 1st
+513 1st 2nd 3rd Last 3rd 2nd 1st
+514 1st 2nd 3rd Last 3rd 2nd 1st
+515 1st 2nd 3rd Last 3rd 2nd 1st
+516 1st 2nd 3rd Last 3rd 2nd 1st
+517 1st 2nd 3rd Last 3rd 2nd 1st
+518 1st 2nd 3rd Last 3rd 2nd 1st
+519 1st 2nd 3rd Last 3rd 2nd 1st
+520 1st 2nd 3rd Last 3rd 2nd 1st
+521 1st 2nd 3rd Last 3rd 2nd 1st
+522 1st 2nd 3rd Last 3rd 2nd 1st
+523 1st 2nd 3rd Last 3rd 2nd 1st
+524 1st 2nd 3rd Last 3rd 2nd 1st
+525 1st 2nd 3rd Last 3rd 2nd 1st
+526 1st 2nd 3rd Last 3rd 2nd 1st
+527 1st 2nd 3rd Last 3rd 2nd 1st
+528 1st 2nd 3rd Last 3rd 2nd 1st
+529 1st 2nd 3rd Last 3rd 2nd 1st
+530 1st 2nd 3rd Last 3rd 2nd 1st
+531 1st 2nd 3rd Last 3rd 2nd 1st
+532 1st 2nd 3rd Last 3rd 2nd 1st
+533 1st 2nd 3rd Last 3rd 2nd 1st
+534 1st 2nd 3rd Last 3rd 2nd 1st
+535 1st 2nd 3rd Last 3rd 2nd 1st
+536 1st 2nd 3rd Last 3rd 2nd 1st
+537 1st 2nd 3rd Last 3rd 2nd 1st
+538 1st 2nd 3rd Last 3rd 2nd 1st
+539 1st 2nd 3rd Last 3rd 2nd 1st
+540 1st 2nd 3rd Last 3rd 2nd 1st
+541 1st 2nd 3rd Last 3rd 2nd 1st
+542 1st 2nd 3rd Last 3rd 2nd 1st
+543 1st 2nd 3rd Last 3rd 2nd 1st
+544 1st 2nd 3rd Last 3rd 2nd 1st
+545 1st 2nd 3rd Last 3rd 2nd 1st
+546 1st 2nd 3rd Last 3rd 2nd 1st
+547 1st 2nd 3rd Last 3rd 2nd 1st
+548 1st 2nd 3rd Last 3rd 2nd 1st
+549 1st 2nd 3rd Last 3rd 2nd 1st
+550 1st 2nd 3rd Last 3rd 2nd 1st
+551 1st 2nd 3rd Last 3rd 2nd 1st
+552 1st 2nd 3rd Last 3rd 2nd 1st
+553 1st 2nd 3rd Last 3rd 2nd 1st
+554 1st 2nd 3rd Last 3rd 2nd 1st
+555 1st 2nd 3rd Last 3rd 2nd 1st
+556 1st 2nd 3rd Last 3rd 2nd 1st
+557 1st 2nd 3rd Last 3rd 2nd 1st
+558 1st 2nd 3rd Last 3rd 2nd 1st
+559 1st 2nd 3rd Last 3rd 2nd 1st
+560 1st 2nd 3rd Last 3rd 2nd 1st
+561 1st 2nd 3rd Last 3rd 2nd 1st
+562 1st 2nd 3rd Last 3rd 2nd 1st
+563 1st 2nd 3rd Last 3rd 2nd 1st
+564 1st 2nd 3rd Last 3rd 2nd 1st
+565 1st 2nd 3rd Last 3rd 2nd 1st
+566 1st 2nd 3rd Last 3rd 2nd 1st
+567 1st 2nd 3rd Last 3rd 2nd 1st
+568 1st 2nd 3rd Last 3rd 2nd 1st
+569 1st 2nd 3rd Last 3rd 2nd 1st
+570 1st 2nd 3rd Last 3rd 2nd 1st
+571 1st 2nd 3rd Last 3rd 2nd 1st
+572 1st 2nd 3rd Last 3rd 2nd 1st
+573 1st 2nd 3rd Last 3rd 2nd 1st
+574 1st 2nd 3rd Last 3rd 2nd 1st
+575 1st 2nd 3rd Last 3rd 2nd 1st
+576 1st 2nd 3rd Last 3rd 2nd 1st
+577 1st 2nd 3rd Last 3rd 2nd 1st
+578 1st 2nd 3rd Last 3rd 2nd 1st
+579 1st 2nd 3rd Last 3rd 2nd 1st
+580 1st 2nd 3rd Last 3rd 2nd 1st
+581 1st 2nd 3rd Last 3rd 2nd 1st
+582 1st 2nd 3rd Last 3rd 2nd 1st
+583 1st 2nd 3rd Last 3rd 2nd 1st
+584 1st 2nd 3rd Last 3rd 2nd 1st
+585 1st 2nd 3rd Last 3rd 2nd 1st
+586 1st 2nd 3rd Last 3rd 2nd 1st
+587 1st 2nd 3rd Last 3rd 2nd 1st
+588 1st 2nd 3rd Last 3rd 2nd 1st
+589 1st 2nd 3rd Last 3rd 2nd 1st
+590 1st 2nd 3rd Last 3rd 2nd 1st
+591 1st 2nd 3rd Last 3rd 2nd 1st
+592 1st 2nd 3rd Last 3rd 2nd 1st
+593 1st 2nd 3rd Last 3rd 2nd 1st
+594 1st 2nd 3rd Last 3rd 2nd 1st
+595 1st 2nd 3rd Last 3rd 2nd 1st
+596 1st 2nd 3rd Last 3rd 2nd 1st
+597 1st 2nd 3rd Last 3rd 2nd 1st
+598 1st 2nd 3rd Last 3rd 2nd 1st
+599 1st 2nd 3rd Last 3rd 2nd 1st
+600 1st 2nd 3rd Last 3rd 2nd 1st
+601 1st 2nd 3rd Last 3rd 2nd 1st
+602 1st 2nd 3rd Last 3rd 2nd 1st
+603 1st 2nd 3rd Last 3rd 2nd 1st
+604 1st 2nd 3rd Last 3rd 2nd 1st
+605 1st 2nd 3rd Last 3rd 2nd 1st
+606 1st 2nd 3rd Last 3rd 2nd 1st
+607 1st 2nd 3rd Last 3rd 2nd 1st
+608 1st 2nd 3rd Last 3rd 2nd 1st
+609 1st 2nd 3rd Last 3rd 2nd 1st
+610 1st 2nd 3rd Last 3rd 2nd 1st
+611 1st 2nd 3rd Last 3rd 2nd 1st
+612 1st 2nd 3rd Last 3rd 2nd 1st
+613 1st 2nd 3rd Last 3rd 2nd 1st
+614 1st 2nd 3rd Last 3rd 2nd 1st
+615 1st 2nd 3rd Last 3rd 2nd 1st
+616 1st 2nd 3rd Last 3rd 2nd 1st
+617 1st 2nd 3rd Last 3rd 2nd 1st
+618 1st 2nd 3rd Last 3rd 2nd 1st
+619 1st 2nd 3rd Last 3rd 2nd 1st
+620 1st 2nd 3rd Last 3rd 2nd 1st
+621 1st 2nd 3rd Last 3rd 2nd 1st
+622 1st 2nd 3rd Last 3rd 2nd 1st
+623 1st 2nd 3rd Last 3rd 2nd 1st
+624 1st 2nd 3rd Last 3rd 2nd 1st
+625 1st 2nd 3rd Last 3rd 2nd 1st
+626 1st 2nd 3rd Last 3rd 2nd 1st
+627 1st 2nd 3rd Last 3rd 2nd 1st
+628 1st 2nd 3rd Last 3rd 2nd 1st
+629 1st 2nd 3rd Last 3rd 2nd 1st
+630 1st 2nd 3rd Last 3rd 2nd 1st
+631 1st 2nd 3rd Last 3rd 2nd 1st
+632 1st 2nd 3rd Last 3rd 2nd 1st
+633 1st 2nd 3rd Last 3rd 2nd 1st
+634 1st 2nd 3rd Last 3rd 2nd 1st
+635 1st 2nd 3rd Last 3rd 2nd 1st
+636 1st 2nd 3rd Last 3rd 2nd 1st
+637 1st 2nd 3rd Last 3rd 2nd 1st
+638 1st 2nd 3rd Last 3rd 2nd 1st
+639 1st 2nd 3rd Last 3rd 2nd 1st
+640 1st 2nd 3rd Last 3rd 2nd 1st
+641 1st 2nd 3rd Last 3rd 2nd 1st
+642 1st 2nd 3rd Last 3rd 2nd 1st
+643 1st 2nd 3rd Last 3rd 2nd 1st
+644 1st 2nd 3rd Last 3rd 2nd 1st
+645 1st 2nd 3rd Last 3rd 2nd 1st
+646 1st 2nd 3rd Last 3rd 2nd 1st
+647 1st 2nd 3rd Last 3rd 2nd 1st
+648 1st 2nd 3rd Last 3rd 2nd 1st
+649 1st 2nd 3rd Last 3rd 2nd 1st
+650 1st 2nd 3rd Last 3rd 2nd 1st
+651 1st 2nd 3rd Last 3rd 2nd 1st
+652 1st 2nd 3rd Last 3rd 2nd 1st
+653 1st 2nd 3rd Last 3rd 2nd 1st
+654 1st 2nd 3rd Last 3rd 2nd 1st
+655 1st 2nd 3rd Last 3rd 2nd 1st
+656 1st 2nd 3rd Last 3rd 2nd 1st
+657 1st 2nd 3rd Last 3rd 2nd 1st
+658 1st 2nd 3rd Last 3rd 2nd 1st
+659 1st 2nd 3rd Last 3rd 2nd 1st
+660 1st 2nd 3rd Last 3rd 2nd 1st
+661 1st 2nd 3rd Last 3rd 2nd 1st
+662 1st 2nd 3rd Last 3rd 2nd 1st
+663 1st 2nd 3rd Last 3rd 2nd 1st
+664 1st 2nd 3rd Last 3rd 2nd 1st
+665 1st 2nd 3rd Last 3rd 2nd 1st
+666 1st 2nd 3rd Last 3rd 2nd 1st
+667 1st 2nd 3rd Last 3rd 2nd 1st
+668 1st 2nd 3rd Last 3rd 2nd 1st
+669 1st 2nd 3rd Last 3rd 2nd 1st
+670 1st 2nd 3rd Last 3rd 2nd 1st
+671 1st 2nd 3rd Last 3rd 2nd 1st
+672 1st 2nd 3rd Last 3rd 2nd 1st
+673 1st 2nd 3rd Last 3rd 2nd 1st
+674 1st 2nd 3rd Last 3rd 2nd 1st
+675 1st 2nd 3rd Last 3rd 2nd 1st
+676 1st 2nd 3rd Last 3rd 2nd 1st
+677 1st 2nd 3rd Last 3rd 2nd 1st
+678 1st 2nd 3rd Last 3rd 2nd 1st
+679 1st 2nd 3rd Last 3rd 2nd 1st
+680 1st 2nd 3rd Last 3rd 2nd 1st
+681 1st 2nd 3rd Last 3rd 2nd 1st
+682 1st 2nd 3rd Last 3rd 2nd 1st
+683 1st 2nd 3rd Last 3rd 2nd 1st
+684 1st 2nd 3rd Last 3rd 2nd 1st
+685 1st 2nd 3rd Last 3rd 2nd 1st
+686 1st 2nd 3rd Last 3rd 2nd 1st
+687 1st 2nd 3rd Last 3rd 2nd 1st
+688 1st 2nd 3rd Last 3rd 2nd 1st
+689 1st 2nd 3rd Last 3rd 2nd 1st
+690 1st 2nd 3rd Last 3rd 2nd 1st
+691 1st 2nd 3rd Last 3rd 2nd 1st
+692 1st 2nd 3rd Last 3rd 2nd 1st
+693 1st 2nd 3rd Last 3rd 2nd 1st
+694 1st 2nd 3rd Last 3rd 2nd 1st
+695 1st 2nd 3rd Last 3rd 2nd 1st
+696 1st 2nd 3rd Last 3rd 2nd 1st
+697 1st 2nd 3rd Last 3rd 2nd 1st
+698 1st 2nd 3rd Last 3rd 2nd 1st
+699 1st 2nd 3rd Last 3rd 2nd 1st
+700 1st 2nd 3rd Last 3rd 2nd 1st
+701 1st 2nd 3rd Last 3rd 2nd 1st
+702 1st 2nd 3rd Last 3rd 2nd 1st
+703 1st 2nd 3rd Last 3rd 2nd 1st
+704 1st 2nd 3rd Last 3rd 2nd 1st
+705 1st 2nd 3rd Last 3rd 2nd 1st
+706 1st 2nd 3rd Last 3rd 2nd 1st
+707 1st 2nd 3rd Last 3rd 2nd 1st
+708 1st 2nd 3rd Last 3rd 2nd 1st
+709 1st 2nd 3rd Last 3rd 2nd 1st
+710 1st 2nd 3rd Last 3rd 2nd 1st
+711 1st 2nd 3rd Last 3rd 2nd 1st
+712 1st 2nd 3rd Last 3rd 2nd 1st
+713 1st 2nd 3rd Last 3rd 2nd 1st
+714 1st 2nd 3rd Last 3rd 2nd 1st
+715 1st 2nd 3rd Last 3rd 2nd 1st
+716 1st 2nd 3rd Last 3rd 2nd 1st
+717 1st 2nd 3rd Last 3rd 2nd 1st
+718 1st 2nd 3rd Last 3rd 2nd 1st
+719 1st 2nd 3rd Last 3rd 2nd 1st
+720 1st 2nd 3rd Last 3rd 2nd 1st
+721 1st 2nd 3rd Last 3rd 2nd 1st
+722 1st 2nd 3rd Last 3rd 2nd 1st
+723 1st 2nd 3rd Last 3rd 2nd 1st
+724 1st 2nd 3rd Last 3rd 2nd 1st
+725 1st 2nd 3rd Last 3rd 2nd 1st
+726 1st 2nd 3rd Last 3rd 2nd 1st
+727 1st 2nd 3rd Last 3rd 2nd 1st
+728 1st 2nd 3rd Last 3rd 2nd 1st
+729 1st 2nd 3rd Last 3rd 2nd 1st
+730 1st 2nd 3rd Last 3rd 2nd 1st
+731 1st 2nd 3rd Last 3rd 2nd 1st
+732 1st 2nd 3rd Last 3rd 2nd 1st
+733 1st 2nd 3rd Last 3rd 2nd 1st
+734 1st 2nd 3rd Last 3rd 2nd 1st
+735 1st 2nd 3rd Last 3rd 2nd 1st
+736 1st 2nd 3rd Last 3rd 2nd 1st
+737 1st 2nd 3rd Last 3rd 2nd 1st
+738 1st 2nd 3rd Last 3rd 2nd 1st
+739 1st 2nd 3rd Last 3rd 2nd 1st
+740 1st 2nd 3rd Last 3rd 2nd 1st
+741 1st 2nd 3rd Last 3rd 2nd 1st
+742 1st 2nd 3rd Last 3rd 2nd 1st
+743 1st 2nd 3rd Last 3rd 2nd 1st
+744 1st 2nd 3rd Last 3rd 2nd 1st
+745 1st 2nd 3rd Last 3rd 2nd 1st
+746 1st 2nd 3rd Last 3rd 2nd 1st
+747 1st 2nd 3rd Last 3rd 2nd 1st
+748 1st 2nd 3rd Last 3rd 2nd 1st
+749 1st 2nd 3rd Last 3rd 2nd 1st
+750 1st 2nd 3rd Last 3rd 2nd 1st
+751 1st 2nd 3rd Last 3rd 2nd 1st
+752 1st 2nd 3rd Last 3rd 2nd 1st
+753 1st 2nd 3rd Last 3rd 2nd 1st
+754 1st 2nd 3rd Last 3rd 2nd 1st
+755 1st 2nd 3rd Last 3rd 2nd 1st
+756 1st 2nd 3rd Last 3rd 2nd 1st
+757 1st 2nd 3rd Last 3rd 2nd 1st
+758 1st 2nd 3rd Last 3rd 2nd 1st
+759 1st 2nd 3rd Last 3rd 2nd 1st
+760 1st 2nd 3rd Last 3rd 2nd 1st
+761 1st 2nd 3rd Last 3rd 2nd 1st
+762 1st 2nd 3rd Last 3rd 2nd 1st
+763 1st 2nd 3rd Last 3rd 2nd 1st
+764 1st 2nd 3rd Last 3rd 2nd 1st
+765 1st 2nd 3rd Last 3rd 2nd 1st
+766 1st 2nd 3rd Last 3rd 2nd 1st
+767 1st 2nd 3rd Last 3rd 2nd 1st
+768 1st 2nd 3rd Last 3rd 2nd 1st
+769 1st 2nd 3rd Last 3rd 2nd 1st
+770 1st 2nd 3rd Last 3rd 2nd 1st
+771 1st 2nd 3rd Last 3rd 2nd 1st
+772 1st 2nd 3rd Last 3rd 2nd 1st
+773 1st 2nd 3rd Last 3rd 2nd 1st
+774 1st 2nd 3rd Last 3rd 2nd 1st
+775 1st 2nd 3rd Last 3rd 2nd 1st
+776 1st 2nd 3rd Last 3rd 2nd 1st
+777 1st 2nd 3rd Last 3rd 2nd 1st
+778 1st 2nd 3rd Last 3rd 2nd 1st
+779 1st 2nd 3rd Last 3rd 2nd 1st
+780 1st 2nd 3rd Last 3rd 2nd 1st
+781 1st 2nd 3rd Last 3rd 2nd 1st
+782 1st 2nd 3rd Last 3rd 2nd 1st
+783 1st 2nd 3rd Last 3rd 2nd 1st
+784 1st 2nd 3rd Last 3rd 2nd 1st
+785 1st 2nd 3rd Last 3rd 2nd 1st
+786 1st 2nd 3rd Last 3rd 2nd 1st
+787 1st 2nd 3rd Last 3rd 2nd 1st
+788 1st 2nd 3rd Last 3rd 2nd 1st
+789 1st 2nd 3rd Last 3rd 2nd 1st
+790 1st 2nd 3rd Last 3rd 2nd 1st
+791 1st 2nd 3rd Last 3rd 2nd 1st
+792 1st 2nd 3rd Last 3rd 2nd 1st
+793 1st 2nd 3rd Last 3rd 2nd 1st
+794 1st 2nd 3rd Last 3rd 2nd 1st
+795 1st 2nd 3rd Last 3rd 2nd 1st
+796 1st 2nd 3rd Last 3rd 2nd 1st
+797 1st 2nd 3rd Last 3rd 2nd 1st
+798 1st 2nd 3rd Last 3rd 2nd 1st
+799 1st 2nd 3rd Last 3rd 2nd 1st
+800 1st 2nd 3rd Last 3rd 2nd 1st
+801 1st 2nd 3rd Last 3rd 2nd 1st
+802 1st 2nd 3rd Last 3rd 2nd 1st
+803 1st 2nd 3rd Last 3rd 2nd 1st
+804 1st 2nd 3rd Last 3rd 2nd 1st
+805 1st 2nd 3rd Last 3rd 2nd 1st
+806 1st 2nd 3rd Last 3rd 2nd 1st
+807 1st 2nd 3rd Last 3rd 2nd 1st
+808 1st 2nd 3rd Last 3rd 2nd 1st
+809 1st 2nd 3rd Last 3rd 2nd 1st
+810 1st 2nd 3rd Last 3rd 2nd 1st
+811 1st 2nd 3rd Last 3rd 2nd 1st
+812 1st 2nd 3rd Last 3rd 2nd 1st
+813 1st 2nd 3rd Last 3rd 2nd 1st
+814 1st 2nd 3rd Last 3rd 2nd 1st
+815 1st 2nd 3rd Last 3rd 2nd 1st
+816 1st 2nd 3rd Last 3rd 2nd 1st
+817 1st 2nd 3rd Last 3rd 2nd 1st
+818 1st 2nd 3rd Last 3rd 2nd 1st
+819 1st 2nd 3rd Last 3rd 2nd 1st
+820 1st 2nd 3rd Last 3rd 2nd 1st
+821 1st 2nd 3rd Last 3rd 2nd 1st
+822 1st 2nd 3rd Last 3rd 2nd 1st
+823 1st 2nd 3rd Last 3rd 2nd 1st
+824 1st 2nd 3rd Last 3rd 2nd 1st
+825 1st 2nd 3rd Last 3rd 2nd 1st
+826 1st 2nd 3rd Last 3rd 2nd 1st
+827 1st 2nd 3rd Last 3rd 2nd 1st
+828 1st 2nd 3rd Last 3rd 2nd 1st
+829 1st 2nd 3rd Last 3rd 2nd 1st
+830 1st 2nd 3rd Last 3rd 2nd 1st
+831 1st 2nd 3rd Last 3rd 2nd 1st
+832 1st 2nd 3rd Last 3rd 2nd 1st
+833 1st 2nd 3rd Last 3rd 2nd 1st
+834 1st 2nd 3rd Last 3rd 2nd 1st
+835 1st 2nd 3rd Last 3rd 2nd 1st
+836 1st 2nd 3rd Last 3rd 2nd 1st
+837 1st 2nd 3rd Last 3rd 2nd 1st
+838 1st 2nd 3rd Last 3rd 2nd 1st
+839 1st 2nd 3rd Last 3rd 2nd 1st
+840 1st 2nd 3rd Last 3rd 2nd 1st
+841 1st 2nd 3rd Last 3rd 2nd 1st
+842 1st 2nd 3rd Last 3rd 2nd 1st
+843 1st 2nd 3rd Last 3rd 2nd 1st
+844 1st 2nd 3rd Last 3rd 2nd 1st
+845 1st 2nd 3rd Last 3rd 2nd 1st
+846 1st 2nd 3rd Last 3rd 2nd 1st
+847 1st 2nd 3rd Last 3rd 2nd 1st
+848 1st 2nd 3rd Last 3rd 2nd 1st
+849 1st 2nd 3rd Last 3rd 2nd 1st
+850 1st 2nd 3rd Last 3rd 2nd 1st
+851 1st 2nd 3rd Last 3rd 2nd 1st
+852 1st 2nd 3rd Last 3rd 2nd 1st
+853 1st 2nd 3rd Last 3rd 2nd 1st
+854 1st 2nd 3rd Last 3rd 2nd 1st
+855 1st 2nd 3rd Last 3rd 2nd 1st
+856 1st 2nd 3rd Last 3rd 2nd 1st
+857 1st 2nd 3rd Last 3rd 2nd 1st
+858 1st 2nd 3rd Last 3rd 2nd 1st
+859 1st 2nd 3rd Last 3rd 2nd 1st
+860 1st 2nd 3rd Last 3rd 2nd 1st
+861 1st 2nd 3rd Last 3rd 2nd 1st
+862 1st 2nd 3rd Last 3rd 2nd 1st
+863 1st 2nd 3rd Last 3rd 2nd 1st
+864 1st 2nd 3rd Last 3rd 2nd 1st
+865 1st 2nd 3rd Last 3rd 2nd 1st
+866 1st 2nd 3rd Last 3rd 2nd 1st
+867 1st 2nd 3rd Last 3rd 2nd 1st
+868 1st 2nd 3rd Last 3rd 2nd 1st
+869 1st 2nd 3rd Last 3rd 2nd 1st
+870 1st 2nd 3rd Last 3rd 2nd 1st
+871 1st 2nd 3rd Last 3rd 2nd 1st
+872 1st 2nd 3rd Last 3rd 2nd 1st
+873 1st 2nd 3rd Last 3rd 2nd 1st
+874 1st 2nd 3rd Last 3rd 2nd 1st
+875 1st 2nd 3rd Last 3rd 2nd 1st
+876 1st 2nd 3rd Last 3rd 2nd 1st
+877 1st 2nd 3rd Last 3rd 2nd 1st
+878 1st 2nd 3rd Last 3rd 2nd 1st
+879 1st 2nd 3rd Last 3rd 2nd 1st
+880 1st 2nd 3rd Last 3rd 2nd 1st
+881 1st 2nd 3rd Last 3rd 2nd 1st
+882 1st 2nd 3rd Last 3rd 2nd 1st
+883 1st 2nd 3rd Last 3rd 2nd 1st
+884 1st 2nd 3rd Last 3rd 2nd 1st
+885 1st 2nd 3rd Last 3rd 2nd 1st
+886 1st 2nd 3rd Last 3rd 2nd 1st
+887 1st 2nd 3rd Last 3rd 2nd 1st
+888 1st 2nd 3rd Last 3rd 2nd 1st
+889 1st 2nd 3rd Last 3rd 2nd 1st
+890 1st 2nd 3rd Last 3rd 2nd 1st
+891 1st 2nd 3rd Last 3rd 2nd 1st
+892 1st 2nd 3rd Last 3rd 2nd 1st
+893 1st 2nd 3rd Last 3rd 2nd 1st
+894 1st 2nd 3rd Last 3rd 2nd 1st
+895 1st 2nd 3rd Last 3rd 2nd 1st
+896 1st 2nd 3rd Last 3rd 2nd 1st
+897 1st 2nd 3rd Last 3rd 2nd 1st
+898 1st 2nd 3rd Last 3rd 2nd 1st
+899 1st 2nd 3rd Last 3rd 2nd 1st
+900 1st 2nd 3rd Last 3rd 2nd 1st
+901 1st 2nd 3rd Last 3rd 2nd 1st
+902 1st 2nd 3rd Last 3rd 2nd 1st
+903 1st 2nd 3rd Last 3rd 2nd 1st
+904 1st 2nd 3rd Last 3rd 2nd 1st
+905 1st 2nd 3rd Last 3rd 2nd 1st
+906 1st 2nd 3rd Last 3rd 2nd 1st
+907 1st 2nd 3rd Last 3rd 2nd 1st
+908 1st 2nd 3rd Last 3rd 2nd 1st
+909 1st 2nd 3rd Last 3rd 2nd 1st
+910 1st 2nd 3rd Last 3rd 2nd 1st
+911 1st 2nd 3rd Last 3rd 2nd 1st
+912 1st 2nd 3rd Last 3rd 2nd 1st
+913 1st 2nd 3rd Last 3rd 2nd 1st
+914 1st 2nd 3rd Last 3rd 2nd 1st
+915 1st 2nd 3rd Last 3rd 2nd 1st
+916 1st 2nd 3rd Last 3rd 2nd 1st
+917 1st 2nd 3rd Last 3rd 2nd 1st
+918 1st 2nd 3rd Last 3rd 2nd 1st
+919 1st 2nd 3rd Last 3rd 2nd 1st
+920 1st 2nd 3rd Last 3rd 2nd 1st
+921 1st 2nd 3rd Last 3rd 2nd 1st
+922 1st 2nd 3rd Last 3rd 2nd 1st
+923 1st 2nd 3rd Last 3rd 2nd 1st
+924 1st 2nd 3rd Last 3rd 2nd 1st
+925 1st 2nd 3rd Last 3rd 2nd 1st
+926 1st 2nd 3rd Last 3rd 2nd 1st
+927 1st 2nd 3rd Last 3rd 2nd 1st
+928 1st 2nd 3rd Last 3rd 2nd 1st
+929 1st 2nd 3rd Last 3rd 2nd 1st
+930 1st 2nd 3rd Last 3rd 2nd 1st
+931 1st 2nd 3rd Last 3rd 2nd 1st
+932 1st 2nd 3rd Last 3rd 2nd 1st
+933 1st 2nd 3rd Last 3rd 2nd 1st
+934 1st 2nd 3rd Last 3rd 2nd 1st
+935 1st 2nd 3rd Last 3rd 2nd 1st
+936 1st 2nd 3rd Last 3rd 2nd 1st
+937 1st 2nd 3rd Last 3rd 2nd 1st
+938 1st 2nd 3rd Last 3rd 2nd 1st
+939 1st 2nd 3rd Last 3rd 2nd 1st
+940 1st 2nd 3rd Last 3rd 2nd 1st
+941 1st 2nd 3rd Last 3rd 2nd 1st
+942 1st 2nd 3rd Last 3rd 2nd 1st
+943 1st 2nd 3rd Last 3rd 2nd 1st
+944 1st 2nd 3rd Last 3rd 2nd 1st
+945 1st 2nd 3rd Last 3rd 2nd 1st
+946 1st 2nd 3rd Last 3rd 2nd 1st
+947 1st 2nd 3rd Last 3rd 2nd 1st
+948 1st 2nd 3rd Last 3rd 2nd 1st
+949 1st 2nd 3rd Last 3rd 2nd 1st
+950 1st 2nd 3rd Last 3rd 2nd 1st
+951 1st 2nd 3rd Last 3rd 2nd 1st
+952 1st 2nd 3rd Last 3rd 2nd 1st
+953 1st 2nd 3rd Last 3rd 2nd 1st
+954 1st 2nd 3rd Last 3rd 2nd 1st
+955 1st 2nd 3rd Last 3rd 2nd 1st
+956 1st 2nd 3rd Last 3rd 2nd 1st
+957 1st 2nd 3rd Last 3rd 2nd 1st
+958 1st 2nd 3rd Last 3rd 2nd 1st
+959 1st 2nd 3rd Last 3rd 2nd 1st
+960 1st 2nd 3rd Last 3rd 2nd 1st
+961 1st 2nd 3rd Last 3rd 2nd 1st
+962 1st 2nd 3rd Last 3rd 2nd 1st
+963 1st 2nd 3rd Last 3rd 2nd 1st
+964 1st 2nd 3rd Last 3rd 2nd 1st
+965 1st 2nd 3rd Last 3rd 2nd 1st
+966 1st 2nd 3rd Last 3rd 2nd 1st
+967 1st 2nd 3rd Last 3rd 2nd 1st
+968 1st 2nd 3rd Last 3rd 2nd 1st
+969 1st 2nd 3rd Last 3rd 2nd 1st
+970 1st 2nd 3rd Last 3rd 2nd 1st
+971 1st 2nd 3rd Last 3rd 2nd 1st
+972 1st 2nd 3rd Last 3rd 2nd 1st
+973 1st 2nd 3rd Last 3rd 2nd 1st
+974 1st 2nd 3rd Last 3rd 2nd 1st
+975 1st 2nd 3rd Last 3rd 2nd 1st
+976 1st 2nd 3rd Last 3rd 2nd 1st
+977 1st 2nd 3rd Last 3rd 2nd 1st
+978 1st 2nd 3rd Last 3rd 2nd 1st
+979 1st 2nd 3rd Last 3rd 2nd 1st
+980 1st 2nd 3rd Last 3rd 2nd 1st
+981 1st 2nd 3rd Last 3rd 2nd 1st
+982 1st 2nd 3rd Last 3rd 2nd 1st
+983 1st 2nd 3rd Last 3rd 2nd 1st
+984 1st 2nd 3rd Last 3rd 2nd 1st
+985 1st 2nd 3rd Last 3rd 2nd 1st
+986 1st 2nd 3rd Last 3rd 2nd 1st
+987 1st 2nd 3rd Last 3rd 2nd 1st
+988 1st 2nd 3rd Last 3rd 2nd 1st
+989 1st 2nd 3rd Last 3rd 2nd 1st
+990 1st 2nd 3rd Last 3rd 2nd 1st
+991 1st 2nd 3rd Last 3rd 2nd 1st
+992 1st 2nd 3rd Last 3rd 2nd 1st
+993 1st 2nd 3rd Last 3rd 2nd 1st
+994 1st 2nd 3rd Last 3rd 2nd 1st
+995 1st 2nd 3rd Last 3rd 2nd 1st
+996 1st 2nd 3rd Last 3rd 2nd 1st
+997 1st 2nd 3rd Last 3rd 2nd 1st
+998 1st 2nd 3rd Last 3rd 2nd 1st
+999 1st 2nd 3rd Last 3rd 2nd 1st
+1000 1st 2nd 3rd Last 3rd 2nd 1st
+1001 1st 2nd 3rd Last 3rd 2nd 1st
+1002 1st 2nd 3rd Last 3rd 2nd 1st
+1003 1st 2nd 3rd Last 3rd 2nd 1st
+1004 1st 2nd 3rd Last 3rd 2nd 1st
+1005 1st 2nd 3rd Last 3rd 2nd 1st
+1006 1st 2nd 3rd Last 3rd 2nd 1st
+1007 1st 2nd 3rd Last 3rd 2nd 1st
+1008 1st 2nd 3rd Last 3rd 2nd 1st
+1009 1st 2nd 3rd Last 3rd 2nd 1st
+1010 1st 2nd 3rd Last 3rd 2nd 1st
+1011 1st 2nd 3rd Last 3rd 2nd 1st
+1012 1st 2nd 3rd Last 3rd 2nd 1st
+1013 1st 2nd 3rd Last 3rd 2nd 1st
+1014 1st 2nd 3rd Last 3rd 2nd 1st
+1015 1st 2nd 3rd Last 3rd 2nd 1st
+1016 1st 2nd 3rd Last 3rd 2nd 1st
+1017 1st 2nd 3rd Last 3rd 2nd 1st
+1018 1st 2nd 3rd Last 3rd 2nd 1st
+1019 1st 2nd 3rd Last 3rd 2nd 1st
+1020 1st 2nd 3rd Last 3rd 2nd 1st
+1021 1st 2nd 3rd Last 3rd 2nd 1st
+1022 1st 2nd 3rd Last 3rd 2nd 1st
+1023 1st 2nd 3rd Last 3rd 2nd 1st
+1024 1st 2nd 3rd Last 3rd 2nd 1st
+1025 1st 2nd 3rd Last 3rd 2nd 1st
+1026 1st 2nd 3rd Last 3rd 2nd 1st
+1027 1st 2nd 3rd Last 3rd 2nd 1st
+1028 1st 2nd 3rd Last 3rd 2nd 1st
+1029 1st 2nd 3rd Last 3rd 2nd 1st
+1030 1st 2nd 3rd Last 3rd 2nd 1st
+1031 1st 2nd 3rd Last 3rd 2nd 1st
+1032 1st 2nd 3rd Last 3rd 2nd 1st
+1033 1st 2nd 3rd Last 3rd 2nd 1st
+1034 1st 2nd 3rd Last 3rd 2nd 1st
+1035 1st 2nd 3rd Last 3rd 2nd 1st
+1036 1st 2nd 3rd Last 3rd 2nd 1st
+1037 1st 2nd 3rd Last 3rd 2nd 1st
+1038 1st 2nd 3rd Last 3rd 2nd 1st
+1039 1st 2nd 3rd Last 3rd 2nd 1st
+1040 1st 2nd 3rd Last 3rd 2nd 1st
+1041 1st 2nd 3rd Last 3rd 2nd 1st
+1042 1st 2nd 3rd Last 3rd 2nd 1st
+1043 1st 2nd 3rd Last 3rd 2nd 1st
+1044 1st 2nd 3rd Last 3rd 2nd 1st
+1045 1st 2nd 3rd Last 3rd 2nd 1st
+1046 1st 2nd 3rd Last 3rd 2nd 1st
+1047 1st 2nd 3rd Last 3rd 2nd 1st
+1048 1st 2nd 3rd Last 3rd 2nd 1st
+1049 1st 2nd 3rd Last 3rd 2nd 1st
+1050 1st 2nd 3rd Last 3rd 2nd 1st
+1051 1st 2nd 3rd Last 3rd 2nd 1st
+1052 1st 2nd 3rd Last 3rd 2nd 1st
+1053 1st 2nd 3rd Last 3rd 2nd 1st
+1054 1st 2nd 3rd Last 3rd 2nd 1st
+1055 1st 2nd 3rd Last 3rd 2nd 1st
+1056 1st 2nd 3rd Last 3rd 2nd 1st
+1057 1st 2nd 3rd Last 3rd 2nd 1st
+1058 1st 2nd 3rd Last 3rd 2nd 1st
+1059 1st 2nd 3rd Last 3rd 2nd 1st
+1060 1st 2nd 3rd Last 3rd 2nd 1st
+1061 1st 2nd 3rd Last 3rd 2nd 1st
+1062 1st 2nd 3rd Last 3rd 2nd 1st
+1063 1st 2nd 3rd Last 3rd 2nd 1st
+1064 1st 2nd 3rd Last 3rd 2nd 1st
+1065 1st 2nd 3rd Last 3rd 2nd 1st
+1066 1st 2nd 3rd Last 3rd 2nd 1st
+1067 1st 2nd 3rd Last 3rd 2nd 1st
+1068 1st 2nd 3rd Last 3rd 2nd 1st
+1069 1st 2nd 3rd Last 3rd 2nd 1st
+1070 1st 2nd 3rd Last 3rd 2nd 1st
+1071 1st 2nd 3rd Last 3rd 2nd 1st
+1072 1st 2nd 3rd Last 3rd 2nd 1st
+1073 1st 2nd 3rd Last 3rd 2nd 1st
+1074 1st 2nd 3rd Last 3rd 2nd 1st
+1075 1st 2nd 3rd Last 3rd 2nd 1st
+1076 1st 2nd 3rd Last 3rd 2nd 1st
+1077 1st 2nd 3rd Last 3rd 2nd 1st
+1078 1st 2nd 3rd Last 3rd 2nd 1st
+1079 1st 2nd 3rd Last 3rd 2nd 1st
+1080 1st 2nd 3rd Last 3rd 2nd 1st
+1081 1st 2nd 3rd Last 3rd 2nd 1st
+1082 1st 2nd 3rd Last 3rd 2nd 1st
+1083 1st 2nd 3rd Last 3rd 2nd 1st
+1084 1st 2nd 3rd Last 3rd 2nd 1st
+1085 1st 2nd 3rd Last 3rd 2nd 1st
+1086 1st 2nd 3rd Last 3rd 2nd 1st
+1087 1st 2nd 3rd Last 3rd 2nd 1st
+1088 1st 2nd 3rd Last 3rd 2nd 1st
+1089 1st 2nd 3rd Last 3rd 2nd 1st
+1090 1st 2nd 3rd Last 3rd 2nd 1st
+1091 1st 2nd 3rd Last 3rd 2nd 1st
+1092 1st 2nd 3rd Last 3rd 2nd 1st
+1093 1st 2nd 3rd Last 3rd 2nd 1st
+1094 1st 2nd 3rd Last 3rd 2nd 1st
+1095 1st 2nd 3rd Last 3rd 2nd 1st
+1096 1st 2nd 3rd Last 3rd 2nd 1st
+1097 1st 2nd 3rd Last 3rd 2nd 1st
+1098 1st 2nd 3rd Last 3rd 2nd 1st
+1099 1st 2nd 3rd Last 3rd 2nd 1st
+1100 1st 2nd 3rd Last 3rd 2nd 1st
+1101 1st 2nd 3rd Last 3rd 2nd 1st
+1102 1st 2nd 3rd Last 3rd 2nd 1st
+1103 1st 2nd 3rd Last 3rd 2nd 1st
+1104 1st 2nd 3rd Last 3rd 2nd 1st
+1105 1st 2nd 3rd Last 3rd 2nd 1st
+1106 1st 2nd 3rd Last 3rd 2nd 1st
+1107 1st 2nd 3rd Last 3rd 2nd 1st
+1108 1st 2nd 3rd Last 3rd 2nd 1st
+1109 1st 2nd 3rd Last 3rd 2nd 1st
+1110 1st 2nd 3rd Last 3rd 2nd 1st
+1111 1st 2nd 3rd Last 3rd 2nd 1st
+1112 1st 2nd 3rd Last 3rd 2nd 1st
+1113 1st 2nd 3rd Last 3rd 2nd 1st
+1114 1st 2nd 3rd Last 3rd 2nd 1st
+1115 1st 2nd 3rd Last 3rd 2nd 1st
+1116 1st 2nd 3rd Last 3rd 2nd 1st
+1117 1st 2nd 3rd Last 3rd 2nd 1st
+1118 1st 2nd 3rd Last 3rd 2nd 1st
+1119 1st 2nd 3rd Last 3rd 2nd 1st
+1120 1st 2nd 3rd Last 3rd 2nd 1st
+1121 1st 2nd 3rd Last 3rd 2nd 1st
+1122 1st 2nd 3rd Last 3rd 2nd 1st
+1123 1st 2nd 3rd Last 3rd 2nd 1st
+1124 1st 2nd 3rd Last 3rd 2nd 1st
+1125 1st 2nd 3rd Last 3rd 2nd 1st
+1126 1st 2nd 3rd Last 3rd 2nd 1st
+1127 1st 2nd 3rd Last 3rd 2nd 1st
+1128 1st 2nd 3rd Last 3rd 2nd 1st
+1129 1st 2nd 3rd Last 3rd 2nd 1st
+1130 1st 2nd 3rd Last 3rd 2nd 1st
+1131 1st 2nd 3rd Last 3rd 2nd 1st
+1132 1st 2nd 3rd Last 3rd 2nd 1st
+1133 1st 2nd 3rd Last 3rd 2nd 1st
+1134 1st 2nd 3rd Last 3rd 2nd 1st
+1135 1st 2nd 3rd Last 3rd 2nd 1st
+1136 1st 2nd 3rd Last 3rd 2nd 1st
+1137 1st 2nd 3rd Last 3rd 2nd 1st
+1138 1st 2nd 3rd Last 3rd 2nd 1st
+1139 1st 2nd 3rd Last 3rd 2nd 1st
+1140 1st 2nd 3rd Last 3rd 2nd 1st
+1141 1st 2nd 3rd Last 3rd 2nd 1st
+1142 1st 2nd 3rd Last 3rd 2nd 1st
+1143 1st 2nd 3rd Last 3rd 2nd 1st
+1144 1st 2nd 3rd Last 3rd 2nd 1st
+1145 1st 2nd 3rd Last 3rd 2nd 1st
+1146 1st 2nd 3rd Last 3rd 2nd 1st
+1147 1st 2nd 3rd Last 3rd 2nd 1st
+1148 1st 2nd 3rd Last 3rd 2nd 1st
+1149 1st 2nd 3rd Last 3rd 2nd 1st
+1150 1st 2nd 3rd Last 3rd 2nd 1st
+1151 1st 2nd 3rd Last 3rd 2nd 1st
+1152 1st 2nd 3rd Last 3rd 2nd 1st
+1153 1st 2nd 3rd Last 3rd 2nd 1st
+1154 1st 2nd 3rd Last 3rd 2nd 1st
+1155 1st 2nd 3rd Last 3rd 2nd 1st
+1156 1st 2nd 3rd Last 3rd 2nd 1st
+1157 1st 2nd 3rd Last 3rd 2nd 1st
+1158 1st 2nd 3rd Last 3rd 2nd 1st
+1159 1st 2nd 3rd Last 3rd 2nd 1st
+1160 1st 2nd 3rd Last 3rd 2nd 1st
+1161 1st 2nd 3rd Last 3rd 2nd 1st
+1162 1st 2nd 3rd Last 3rd 2nd 1st
+1163 1st 2nd 3rd Last 3rd 2nd 1st
+1164 1st 2nd 3rd Last 3rd 2nd 1st
+1165 1st 2nd 3rd Last 3rd 2nd 1st
+1166 1st 2nd 3rd Last 3rd 2nd 1st
+1167 1st 2nd 3rd Last 3rd 2nd 1st
+1168 1st 2nd 3rd Last 3rd 2nd 1st
+1169 1st 2nd 3rd Last 3rd 2nd 1st
+1170 1st 2nd 3rd Last 3rd 2nd 1st
+1171 1st 2nd 3rd Last 3rd 2nd 1st
+1172 1st 2nd 3rd Last 3rd 2nd 1st
+1173 1st 2nd 3rd Last 3rd 2nd 1st
+1174 1st 2nd 3rd Last 3rd 2nd 1st
+1175 1st 2nd 3rd Last 3rd 2nd 1st
+1176 1st 2nd 3rd Last 3rd 2nd 1st
+1177 1st 2nd 3rd Last 3rd 2nd 1st
+1178 1st 2nd 3rd Last 3rd 2nd 1st
+1179 1st 2nd 3rd Last 3rd 2nd 1st
+1180 1st 2nd 3rd Last 3rd 2nd 1st
+1181 1st 2nd 3rd Last 3rd 2nd 1st
+1182 1st 2nd 3rd Last 3rd 2nd 1st
+1183 1st 2nd 3rd Last 3rd 2nd 1st
+1184 1st 2nd 3rd Last 3rd 2nd 1st
+1185 1st 2nd 3rd Last 3rd 2nd 1st
+1186 1st 2nd 3rd Last 3rd 2nd 1st
+1187 1st 2nd 3rd Last 3rd 2nd 1st
+1188 1st 2nd 3rd Last 3rd 2nd 1st
+1189 1st 2nd 3rd Last 3rd 2nd 1st
+1190 1st 2nd 3rd Last 3rd 2nd 1st
+1191 1st 2nd 3rd Last 3rd 2nd 1st
+1192 1st 2nd 3rd Last 3rd 2nd 1st
+1193 1st 2nd 3rd Last 3rd 2nd 1st
+1194 1st 2nd 3rd Last 3rd 2nd 1st
+1195 1st 2nd 3rd Last 3rd 2nd 1st
+1196 1st 2nd 3rd Last 3rd 2nd 1st
+1197 1st 2nd 3rd Last 3rd 2nd 1st
+1198 1st 2nd 3rd Last 3rd 2nd 1st
+1199 1st 2nd 3rd Last 3rd 2nd 1st
+1200 1st 2nd 3rd Last 3rd 2nd 1st
+1201 1st 2nd 3rd Last 3rd 2nd 1st
+1202 1st 2nd 3rd Last 3rd 2nd 1st
+1203 1st 2nd 3rd Last 3rd 2nd 1st
+1204 1st 2nd 3rd Last 3rd 2nd 1st
+1205 1st 2nd 3rd Last 3rd 2nd 1st
+1206 1st 2nd 3rd Last 3rd 2nd 1st
+1207 1st 2nd 3rd Last 3rd 2nd 1st
+1208 1st 2nd 3rd Last 3rd 2nd 1st
+1209 1st 2nd 3rd Last 3rd 2nd 1st
+1210 1st 2nd 3rd Last 3rd 2nd 1st
+1211 1st 2nd 3rd Last 3rd 2nd 1st
+1212 1st 2nd 3rd Last 3rd 2nd 1st
+1213 1st 2nd 3rd Last 3rd 2nd 1st
+1214 1st 2nd 3rd Last 3rd 2nd 1st
+1215 1st 2nd 3rd Last 3rd 2nd 1st
+1216 1st 2nd 3rd Last 3rd 2nd 1st
+1217 1st 2nd 3rd Last 3rd 2nd 1st
+1218 1st 2nd 3rd Last 3rd 2nd 1st
+1219 1st 2nd 3rd Last 3rd 2nd 1st
+1220 1st 2nd 3rd Last 3rd 2nd 1st
+1221 1st 2nd 3rd Last 3rd 2nd 1st
+1222 1st 2nd 3rd Last 3rd 2nd 1st
+1223 1st 2nd 3rd Last 3rd 2nd 1st
+1224 1st 2nd 3rd Last 3rd 2nd 1st
+1225 1st 2nd 3rd Last 3rd 2nd 1st
+1226 1st 2nd 3rd Last 3rd 2nd 1st
+1227 1st 2nd 3rd Last 3rd 2nd 1st
+1228 1st 2nd 3rd Last 3rd 2nd 1st
+1229 1st 2nd 3rd Last 3rd 2nd 1st
+1230 1st 2nd 3rd Last 3rd 2nd 1st
+1231 1st 2nd 3rd Last 3rd 2nd 1st
+1232 1st 2nd 3rd Last 3rd 2nd 1st
+1233 1st 2nd 3rd Last 3rd 2nd 1st
+1234 1st 2nd 3rd Last 3rd 2nd 1st
+1235 1st 2nd 3rd Last 3rd 2nd 1st
+1236 1st 2nd 3rd Last 3rd 2nd 1st
+1237 1st 2nd 3rd Last 3rd 2nd 1st
+1238 1st 2nd 3rd Last 3rd 2nd 1st
+1239 1st 2nd 3rd Last 3rd 2nd 1st
+1240 1st 2nd 3rd Last 3rd 2nd 1st
+1241 1st 2nd 3rd Last 3rd 2nd 1st
+1242 1st 2nd 3rd Last 3rd 2nd 1st
+1243 1st 2nd 3rd Last 3rd 2nd 1st
+1244 1st 2nd 3rd Last 3rd 2nd 1st
+1245 1st 2nd 3rd Last 3rd 2nd 1st
+1246 1st 2nd 3rd Last 3rd 2nd 1st
+1247 1st 2nd 3rd Last 3rd 2nd 1st
+1248 1st 2nd 3rd Last 3rd 2nd 1st
+1249 1st 2nd 3rd Last 3rd 2nd 1st
+1250 1st 2nd 3rd Last 3rd 2nd 1st
+1251 1st 2nd 3rd Last 3rd 2nd 1st
+1252 1st 2nd 3rd Last 3rd 2nd 1st
+1253 1st 2nd 3rd Last 3rd 2nd 1st
+1254 1st 2nd 3rd Last 3rd 2nd 1st
+1255 1st 2nd 3rd Last 3rd 2nd 1st
+1256 1st 2nd 3rd Last 3rd 2nd 1st
+1257 1st 2nd 3rd Last 3rd 2nd 1st
+1258 1st 2nd 3rd Last 3rd 2nd 1st
+1259 1st 2nd 3rd Last 3rd 2nd 1st
+1260 1st 2nd 3rd Last 3rd 2nd 1st
+1261 1st 2nd 3rd Last 3rd 2nd 1st
+1262 1st 2nd 3rd Last 3rd 2nd 1st
+1263 1st 2nd 3rd Last 3rd 2nd 1st
+1264 1st 2nd 3rd Last 3rd 2nd 1st
+1265 1st 2nd 3rd Last 3rd 2nd 1st
+1266 1st 2nd 3rd Last 3rd 2nd 1st
+1267 1st 2nd 3rd Last 3rd 2nd 1st
+1268 1st 2nd 3rd Last 3rd 2nd 1st
+1269 1st 2nd 3rd Last 3rd 2nd 1st
+1270 1st 2nd 3rd Last 3rd 2nd 1st
+1271 1st 2nd 3rd Last 3rd 2nd 1st
+1272 1st 2nd 3rd Last 3rd 2nd 1st
+1273 1st 2nd 3rd Last 3rd 2nd 1st
+1274 1st 2nd 3rd Last 3rd 2nd 1st
+1275 1st 2nd 3rd Last 3rd 2nd 1st
+1276 1st 2nd 3rd Last 3rd 2nd 1st
+1277 1st 2nd 3rd Last 3rd 2nd 1st
+1278 1st 2nd 3rd Last 3rd 2nd 1st
+1279 1st 2nd 3rd Last 3rd 2nd 1st
+1280 1st 2nd 3rd Last 3rd 2nd 1st
+1281 1st 2nd 3rd Last 3rd 2nd 1st
+1282 1st 2nd 3rd Last 3rd 2nd 1st
+1283 1st 2nd 3rd Last 3rd 2nd 1st
+1284 1st 2nd 3rd Last 3rd 2nd 1st
+1285 1st 2nd 3rd Last 3rd 2nd 1st
+1286 1st 2nd 3rd Last 3rd 2nd 1st
+1287 1st 2nd 3rd Last 3rd 2nd 1st
+1288 1st 2nd 3rd Last 3rd 2nd 1st
+1289 1st 2nd 3rd Last 3rd 2nd 1st
+1290 1st 2nd 3rd Last 3rd 2nd 1st
+1291 1st 2nd 3rd Last 3rd 2nd 1st
+1292 1st 2nd 3rd Last 3rd 2nd 1st
+1293 1st 2nd 3rd Last 3rd 2nd 1st
+1294 1st 2nd 3rd Last 3rd 2nd 1st
+1295 1st 2nd 3rd Last 3rd 2nd 1st
+1296 1st 2nd 3rd Last 3rd 2nd 1st
+1297 1st 2nd 3rd Last 3rd 2nd 1st
+1298 1st 2nd 3rd Last 3rd 2nd 1st
+1299 1st 2nd 3rd Last 3rd 2nd 1st
+1300 1st 2nd 3rd Last 3rd 2nd 1st
+1301 1st 2nd 3rd Last 3rd 2nd 1st
+1302 1st 2nd 3rd Last 3rd 2nd 1st
+1303 1st 2nd 3rd Last 3rd 2nd 1st
+1304 1st 2nd 3rd Last 3rd 2nd 1st
+1305 1st 2nd 3rd Last 3rd 2nd 1st
+1306 1st 2nd 3rd Last 3rd 2nd 1st
+1307 1st 2nd 3rd Last 3rd 2nd 1st
+1308 1st 2nd 3rd Last 3rd 2nd 1st
+1309 1st 2nd 3rd Last 3rd 2nd 1st
+1310 1st 2nd 3rd Last 3rd 2nd 1st
+1311 1st 2nd 3rd Last 3rd 2nd 1st
+1312 1st 2nd 3rd Last 3rd 2nd 1st
+1313 1st 2nd 3rd Last 3rd 2nd 1st
+1314 1st 2nd 3rd Last 3rd 2nd 1st
+1315 1st 2nd 3rd Last 3rd 2nd 1st
+1316 1st 2nd 3rd Last 3rd 2nd 1st
+1317 1st 2nd 3rd Last 3rd 2nd 1st
+1318 1st 2nd 3rd Last 3rd 2nd 1st
+1319 1st 2nd 3rd Last 3rd 2nd 1st
+1320 1st 2nd 3rd Last 3rd 2nd 1st
+1321 1st 2nd 3rd Last 3rd 2nd 1st
+1322 1st 2nd 3rd Last 3rd 2nd 1st
+1323 1st 2nd 3rd Last 3rd 2nd 1st
+1324 1st 2nd 3rd Last 3rd 2nd 1st
+1325 1st 2nd 3rd Last 3rd 2nd 1st
+1326 1st 2nd 3rd Last 3rd 2nd 1st
+1327 1st 2nd 3rd Last 3rd 2nd 1st
+1328 1st 2nd 3rd Last 3rd 2nd 1st
+1329 1st 2nd 3rd Last 3rd 2nd 1st
+1330 1st 2nd 3rd Last 3rd 2nd 1st
+1331 1st 2nd 3rd Last 3rd 2nd 1st
+1332 1st 2nd 3rd Last 3rd 2nd 1st
+1333 1st 2nd 3rd Last 3rd 2nd 1st
+1334 1st 2nd 3rd Last 3rd 2nd 1st
+1335 1st 2nd 3rd Last 3rd 2nd 1st
+1336 1st 2nd 3rd Last 3rd 2nd 1st
+1337 1st 2nd 3rd Last 3rd 2nd 1st
+1338 1st 2nd 3rd Last 3rd 2nd 1st
+1339 1st 2nd 3rd Last 3rd 2nd 1st
+1340 1st 2nd 3rd Last 3rd 2nd 1st
+1341 1st 2nd 3rd Last 3rd 2nd 1st
+1342 1st 2nd 3rd Last 3rd 2nd 1st
+1343 1st 2nd 3rd Last 3rd 2nd 1st
+1344 1st 2nd 3rd Last 3rd 2nd 1st
+1345 1st 2nd 3rd Last 3rd 2nd 1st
+1346 1st 2nd 3rd Last 3rd 2nd 1st
+1347 1st 2nd 3rd Last 3rd 2nd 1st
+1348 1st 2nd 3rd Last 3rd 2nd 1st
+1349 1st 2nd 3rd Last 3rd 2nd 1st
+1350 1st 2nd 3rd Last 3rd 2nd 1st
+1351 1st 2nd 3rd Last 3rd 2nd 1st
+1352 1st 2nd 3rd Last 3rd 2nd 1st
+1353 1st 2nd 3rd Last 3rd 2nd 1st
+1354 1st 2nd 3rd Last 3rd 2nd 1st
+1355 1st 2nd 3rd Last 3rd 2nd 1st
+1356 1st 2nd 3rd Last 3rd 2nd 1st
+1357 1st 2nd 3rd Last 3rd 2nd 1st
+1358 1st 2nd 3rd Last 3rd 2nd 1st
+1359 1st 2nd 3rd Last 3rd 2nd 1st
+1360 1st 2nd 3rd Last 3rd 2nd 1st
+1361 1st 2nd 3rd Last 3rd 2nd 1st
+1362 1st 2nd 3rd Last 3rd 2nd 1st
+1363 1st 2nd 3rd Last 3rd 2nd 1st
+1364 1st 2nd 3rd Last 3rd 2nd 1st
+1365 1st 2nd 3rd Last 3rd 2nd 1st
+1366 1st 2nd 3rd Last 3rd 2nd 1st
+1367 1st 2nd 3rd Last 3rd 2nd 1st
+1368 1st 2nd 3rd Last 3rd 2nd 1st
+1369 1st 2nd 3rd Last 3rd 2nd 1st
+1370 1st 2nd 3rd Last 3rd 2nd 1st
+1371 1st 2nd 3rd Last 3rd 2nd 1st
+1372 1st 2nd 3rd Last 3rd 2nd 1st
+1373 1st 2nd 3rd Last 3rd 2nd 1st
+1374 1st 2nd 3rd Last 3rd 2nd 1st
+1375 1st 2nd 3rd Last 3rd 2nd 1st
+1376 1st 2nd 3rd Last 3rd 2nd 1st
+1377 1st 2nd 3rd Last 3rd 2nd 1st
+1378 1st 2nd 3rd Last 3rd 2nd 1st
+1379 1st 2nd 3rd Last 3rd 2nd 1st
+1380 1st 2nd 3rd Last 3rd 2nd 1st
+1381 1st 2nd 3rd Last 3rd 2nd 1st
+1382 1st 2nd 3rd Last 3rd 2nd 1st
+1383 1st 2nd 3rd Last 3rd 2nd 1st
+1384 1st 2nd 3rd Last 3rd 2nd 1st
+1385 1st 2nd 3rd Last 3rd 2nd 1st
+1386 1st 2nd 3rd Last 3rd 2nd 1st
+1387 1st 2nd 3rd Last 3rd 2nd 1st
+1388 1st 2nd 3rd Last 3rd 2nd 1st
+1389 1st 2nd 3rd Last 3rd 2nd 1st
+1390 1st 2nd 3rd Last 3rd 2nd 1st
+1391 1st 2nd 3rd Last 3rd 2nd 1st
+1392 1st 2nd 3rd Last 3rd 2nd 1st
+1393 1st 2nd 3rd Last 3rd 2nd 1st
+1394 1st 2nd 3rd Last 3rd 2nd 1st
+1395 1st 2nd 3rd Last 3rd 2nd 1st
+1396 1st 2nd 3rd Last 3rd 2nd 1st
+1397 1st 2nd 3rd Last 3rd 2nd 1st
+1398 1st 2nd 3rd Last 3rd 2nd 1st
+1399 1st 2nd 3rd Last 3rd 2nd 1st
+1400 1st 2nd 3rd Last 3rd 2nd 1st
+1401 1st 2nd 3rd Last 3rd 2nd 1st
+1402 1st 2nd 3rd Last 3rd 2nd 1st
+1403 1st 2nd 3rd Last 3rd 2nd 1st
+1404 1st 2nd 3rd Last 3rd 2nd 1st
+1405 1st 2nd 3rd Last 3rd 2nd 1st
+1406 1st 2nd 3rd Last 3rd 2nd 1st
+1407 1st 2nd 3rd Last 3rd 2nd 1st
+1408 1st 2nd 3rd Last 3rd 2nd 1st
+1409 1st 2nd 3rd Last 3rd 2nd 1st
+1410 1st 2nd 3rd Last 3rd 2nd 1st
+1411 1st 2nd 3rd Last 3rd 2nd 1st
+1412 1st 2nd 3rd Last 3rd 2nd 1st
+1413 1st 2nd 3rd Last 3rd 2nd 1st
+1414 1st 2nd 3rd Last 3rd 2nd 1st
+1415 1st 2nd 3rd Last 3rd 2nd 1st
+1416 1st 2nd 3rd Last 3rd 2nd 1st
+1417 1st 2nd 3rd Last 3rd 2nd 1st
+1418 1st 2nd 3rd Last 3rd 2nd 1st
+1419 1st 2nd 3rd Last 3rd 2nd 1st
+1420 1st 2nd 3rd Last 3rd 2nd 1st
+1421 1st 2nd 3rd Last 3rd 2nd 1st
+1422 1st 2nd 3rd Last 3rd 2nd 1st
+1423 1st 2nd 3rd Last 3rd 2nd 1st
+1424 1st 2nd 3rd Last 3rd 2nd 1st
+1425 1st 2nd 3rd Last 3rd 2nd 1st
+1426 1st 2nd 3rd Last 3rd 2nd 1st
+1427 1st 2nd 3rd Last 3rd 2nd 1st
+1428 1st 2nd 3rd Last 3rd 2nd 1st
+1429 1st 2nd 3rd Last 3rd 2nd 1st
+1430 1st 2nd 3rd Last 3rd 2nd 1st
+1431 1st 2nd 3rd Last 3rd 2nd 1st
+1432 1st 2nd 3rd Last 3rd 2nd 1st
+1433 1st 2nd 3rd Last 3rd 2nd 1st
+1434 1st 2nd 3rd Last 3rd 2nd 1st
+1435 1st 2nd 3rd Last 3rd 2nd 1st
+1436 1st 2nd 3rd Last 3rd 2nd 1st
+1437 1st 2nd 3rd Last 3rd 2nd 1st
+1438 1st 2nd 3rd Last 3rd 2nd 1st
+1439 1st 2nd 3rd Last 3rd 2nd 1st
+1440 1st 2nd 3rd Last 3rd 2nd 1st
+1441 1st 2nd 3rd Last 3rd 2nd 1st
+1442 1st 2nd 3rd Last 3rd 2nd 1st
+1443 1st 2nd 3rd Last 3rd 2nd 1st
+1444 1st 2nd 3rd Last 3rd 2nd 1st
+1445 1st 2nd 3rd Last 3rd 2nd 1st
+1446 1st 2nd 3rd Last 3rd 2nd 1st
+1447 1st 2nd 3rd Last 3rd 2nd 1st
+1448 1st 2nd 3rd Last 3rd 2nd 1st
+1449 1st 2nd 3rd Last 3rd 2nd 1st
+1450 1st 2nd 3rd Last 3rd 2nd 1st
+1451 1st 2nd 3rd Last 3rd 2nd 1st
+1452 1st 2nd 3rd Last 3rd 2nd 1st
+1453 1st 2nd 3rd Last 3rd 2nd 1st
+1454 1st 2nd 3rd Last 3rd 2nd 1st
+1455 1st 2nd 3rd Last 3rd 2nd 1st
+1456 1st 2nd 3rd Last 3rd 2nd 1st
+1457 1st 2nd 3rd Last 3rd 2nd 1st
+1458 1st 2nd 3rd Last 3rd 2nd 1st
+1459 1st 2nd 3rd Last 3rd 2nd 1st
+1460 1st 2nd 3rd Last 3rd 2nd 1st
+1461 1st 2nd 3rd Last 3rd 2nd 1st
+1462 1st 2nd 3rd Last 3rd 2nd 1st
+1463 1st 2nd 3rd Last 3rd 2nd 1st
+1464 1st 2nd 3rd Last 3rd 2nd 1st
+1465 1st 2nd 3rd Last 3rd 2nd 1st
+1466 1st 2nd 3rd Last 3rd 2nd 1st
+1467 1st 2nd 3rd Last 3rd 2nd 1st
+1468 1st 2nd 3rd Last 3rd 2nd 1st
+1469 1st 2nd 3rd Last 3rd 2nd 1st
+1470 1st 2nd 3rd Last 3rd 2nd 1st
+1471 1st 2nd 3rd Last 3rd 2nd 1st
+1472 1st 2nd 3rd Last 3rd 2nd 1st
+1473 1st 2nd 3rd Last 3rd 2nd 1st
+1474 1st 2nd 3rd Last 3rd 2nd 1st
+1475 1st 2nd 3rd Last 3rd 2nd 1st
+1476 1st 2nd 3rd Last 3rd 2nd 1st
+1477 1st 2nd 3rd Last 3rd 2nd 1st
+1478 1st 2nd 3rd Last 3rd 2nd 1st
+1479 1st 2nd 3rd Last 3rd 2nd 1st
+1480 1st 2nd 3rd Last 3rd 2nd 1st
+1481 1st 2nd 3rd Last 3rd 2nd 1st
+1482 1st 2nd 3rd Last 3rd 2nd 1st
+1483 1st 2nd 3rd Last 3rd 2nd 1st
+1484 1st 2nd 3rd Last 3rd 2nd 1st
+1485 1st 2nd 3rd Last 3rd 2nd 1st
+1486 1st 2nd 3rd Last 3rd 2nd 1st
+1487 1st 2nd 3rd Last 3rd 2nd 1st
+1488 1st 2nd 3rd Last 3rd 2nd 1st
+1489 1st 2nd 3rd Last 3rd 2nd 1st
+1490 1st 2nd 3rd Last 3rd 2nd 1st
+1491 1st 2nd 3rd Last 3rd 2nd 1st
+1492 1st 2nd 3rd Last 3rd 2nd 1st
+1493 1st 2nd 3rd Last 3rd 2nd 1st
+1494 1st 2nd 3rd Last 3rd 2nd 1st
+1495 1st 2nd 3rd Last 3rd 2nd 1st
+1496 1st 2nd 3rd Last 3rd 2nd 1st
+1497 1st 2nd 3rd Last 3rd 2nd 1st
+1498 1st 2nd 3rd Last 3rd 2nd 1st
+1499 1st 2nd 3rd Last 3rd 2nd 1st
+1500 1st 2nd 3rd Last 3rd 2nd 1st
+1501 1st 2nd 3rd Last 3rd 2nd 1st
+1502 1st 2nd 3rd Last 3rd 2nd 1st
+1503 1st 2nd 3rd Last 3rd 2nd 1st
+1504 1st 2nd 3rd Last 3rd 2nd 1st
+1505 1st 2nd 3rd Last 3rd 2nd 1st
+1506 1st 2nd 3rd Last 3rd 2nd 1st
+1507 1st 2nd 3rd Last 3rd 2nd 1st
+1508 1st 2nd 3rd Last 3rd 2nd 1st
+1509 1st 2nd 3rd Last 3rd 2nd 1st
+1510 1st 2nd 3rd Last 3rd 2nd 1st
+1511 1st 2nd 3rd Last 3rd 2nd 1st
+1512 1st 2nd 3rd Last 3rd 2nd 1st
+1513 1st 2nd 3rd Last 3rd 2nd 1st
+1514 1st 2nd 3rd Last 3rd 2nd 1st
+1515 1st 2nd 3rd Last 3rd 2nd 1st
+1516 1st 2nd 3rd Last 3rd 2nd 1st
+1517 1st 2nd 3rd Last 3rd 2nd 1st
+1518 1st 2nd 3rd Last 3rd 2nd 1st
+1519 1st 2nd 3rd Last 3rd 2nd 1st
+1520 1st 2nd 3rd Last 3rd 2nd 1st
+1521 1st 2nd 3rd Last 3rd 2nd 1st
+1522 1st 2nd 3rd Last 3rd 2nd 1st
+1523 1st 2nd 3rd Last 3rd 2nd 1st
+1524 1st 2nd 3rd Last 3rd 2nd 1st
+1525 1st 2nd 3rd Last 3rd 2nd 1st
+1526 1st 2nd 3rd Last 3rd 2nd 1st
+1527 1st 2nd 3rd Last 3rd 2nd 1st
+1528 1st 2nd 3rd Last 3rd 2nd 1st
+1529 1st 2nd 3rd Last 3rd 2nd 1st
+1530 1st 2nd 3rd Last 3rd 2nd 1st
+1531 1st 2nd 3rd Last 3rd 2nd 1st
+1532 1st 2nd 3rd Last 3rd 2nd 1st
+1533 1st 2nd 3rd Last 3rd 2nd 1st
+1534 1st 2nd 3rd Last 3rd 2nd 1st
+1535 1st 2nd 3rd Last 3rd 2nd 1st
+1536 1st 2nd 3rd Last 3rd 2nd 1st
+1537 1st 2nd 3rd Last 3rd 2nd 1st
+1538 1st 2nd 3rd Last 3rd 2nd 1st
+1539 1st 2nd 3rd Last 3rd 2nd 1st
+1540 1st 2nd 3rd Last 3rd 2nd 1st
+1541 1st 2nd 3rd Last 3rd 2nd 1st
+1542 1st 2nd 3rd Last 3rd 2nd 1st
+1543 1st 2nd 3rd Last 3rd 2nd 1st
+1544 1st 2nd 3rd Last 3rd 2nd 1st
+1545 1st 2nd 3rd Last 3rd 2nd 1st
+1546 1st 2nd 3rd Last 3rd 2nd 1st
+1547 1st 2nd 3rd Last 3rd 2nd 1st
+1548 1st 2nd 3rd Last 3rd 2nd 1st
+1549 1st 2nd 3rd Last 3rd 2nd 1st
+1550 1st 2nd 3rd Last 3rd 2nd 1st
+1551 1st 2nd 3rd Last 3rd 2nd 1st
+1552 1st 2nd 3rd Last 3rd 2nd 1st
+1553 1st 2nd 3rd Last 3rd 2nd 1st
+1554 1st 2nd 3rd Last 3rd 2nd 1st
+1555 1st 2nd 3rd Last 3rd 2nd 1st
+1556 1st 2nd 3rd Last 3rd 2nd 1st
+1557 1st 2nd 3rd Last 3rd 2nd 1st
+1558 1st 2nd 3rd Last 3rd 2nd 1st
+1559 1st 2nd 3rd Last 3rd 2nd 1st
+1560 1st 2nd 3rd Last 3rd 2nd 1st
+1561 1st 2nd 3rd Last 3rd 2nd 1st
+1562 1st 2nd 3rd Last 3rd 2nd 1st
+1563 1st 2nd 3rd Last 3rd 2nd 1st
+1564 1st 2nd 3rd Last 3rd 2nd 1st
+1565 1st 2nd 3rd Last 3rd 2nd 1st
+1566 1st 2nd 3rd Last 3rd 2nd 1st
+1567 1st 2nd 3rd Last 3rd 2nd 1st
+1568 1st 2nd 3rd Last 3rd 2nd 1st
+1569 1st 2nd 3rd Last 3rd 2nd 1st
+1570 1st 2nd 3rd Last 3rd 2nd 1st
+1571 1st 2nd 3rd Last 3rd 2nd 1st
+1572 1st 2nd 3rd Last 3rd 2nd 1st
+1573 1st 2nd 3rd Last 3rd 2nd 1st
+1574 1st 2nd 3rd Last 3rd 2nd 1st
+1575 1st 2nd 3rd Last 3rd 2nd 1st
+1576 1st 2nd 3rd Last 3rd 2nd 1st
+1577 1st 2nd 3rd Last 3rd 2nd 1st
+1578 1st 2nd 3rd Last 3rd 2nd 1st
+1579 1st 2nd 3rd Last 3rd 2nd 1st
+1580 1st 2nd 3rd Last 3rd 2nd 1st
+1581 1st 2nd 3rd Last 3rd 2nd 1st
+1582 1st 2nd 3rd Last 3rd 2nd 1st
+1583 1st 2nd 3rd Last 3rd 2nd 1st
+1584 1st 2nd 3rd Last 3rd 2nd 1st
+1585 1st 2nd 3rd Last 3rd 2nd 1st
+1586 1st 2nd 3rd Last 3rd 2nd 1st
+1587 1st 2nd 3rd Last 3rd 2nd 1st
+1588 1st 2nd 3rd Last 3rd 2nd 1st
+1589 1st 2nd 3rd Last 3rd 2nd 1st
+1590 1st 2nd 3rd Last 3rd 2nd 1st
+1591 1st 2nd 3rd Last 3rd 2nd 1st
+1592 1st 2nd 3rd Last 3rd 2nd 1st
+1593 1st 2nd 3rd Last 3rd 2nd 1st
+1594 1st 2nd 3rd Last 3rd 2nd 1st
+1595 1st 2nd 3rd Last 3rd 2nd 1st
+1596 1st 2nd 3rd Last 3rd 2nd 1st
+1597 1st 2nd 3rd Last 3rd 2nd 1st
+1598 1st 2nd 3rd Last 3rd 2nd 1st
+1599 1st 2nd 3rd Last 3rd 2nd 1st
+1600 1st 2nd 3rd Last 3rd 2nd 1st
+1601 1st 2nd 3rd Last 3rd 2nd 1st
+1602 1st 2nd 3rd Last 3rd 2nd 1st
+1603 1st 2nd 3rd Last 3rd 2nd 1st
+1604 1st 2nd 3rd Last 3rd 2nd 1st
+1605 1st 2nd 3rd Last 3rd 2nd 1st
+1606 1st 2nd 3rd Last 3rd 2nd 1st
+1607 1st 2nd 3rd Last 3rd 2nd 1st
+1608 1st 2nd 3rd Last 3rd 2nd 1st
+1609 1st 2nd 3rd Last 3rd 2nd 1st
+1610 1st 2nd 3rd Last 3rd 2nd 1st
+1611 1st 2nd 3rd Last 3rd 2nd 1st
+1612 1st 2nd 3rd Last 3rd 2nd 1st
+1613 1st 2nd 3rd Last 3rd 2nd 1st
+1614 1st 2nd 3rd Last 3rd 2nd 1st
+1615 1st 2nd 3rd Last 3rd 2nd 1st
+1616 1st 2nd 3rd Last 3rd 2nd 1st
+1617 1st 2nd 3rd Last 3rd 2nd 1st
+1618 1st 2nd 3rd Last 3rd 2nd 1st
+1619 1st 2nd 3rd Last 3rd 2nd 1st
+1620 1st 2nd 3rd Last 3rd 2nd 1st
+1621 1st 2nd 3rd Last 3rd 2nd 1st
+1622 1st 2nd 3rd Last 3rd 2nd 1st
+1623 1st 2nd 3rd Last 3rd 2nd 1st
+1624 1st 2nd 3rd Last 3rd 2nd 1st
+1625 1st 2nd 3rd Last 3rd 2nd 1st
+1626 1st 2nd 3rd Last 3rd 2nd 1st
+1627 1st 2nd 3rd Last 3rd 2nd 1st
+1628 1st 2nd 3rd Last 3rd 2nd 1st
+1629 1st 2nd 3rd Last 3rd 2nd 1st
+1630 1st 2nd 3rd Last 3rd 2nd 1st
+1631 1st 2nd 3rd Last 3rd 2nd 1st
+1632 1st 2nd 3rd Last 3rd 2nd 1st
+1633 1st 2nd 3rd Last 3rd 2nd 1st
+1634 1st 2nd 3rd Last 3rd 2nd 1st
+1635 1st 2nd 3rd Last 3rd 2nd 1st
+1636 1st 2nd 3rd Last 3rd 2nd 1st
+1637 1st 2nd 3rd Last 3rd 2nd 1st
+1638 1st 2nd 3rd Last 3rd 2nd 1st
+1639 1st 2nd 3rd Last 3rd 2nd 1st
+1640 1st 2nd 3rd Last 3rd 2nd 1st
+1641 1st 2nd 3rd Last 3rd 2nd 1st
+1642 1st 2nd 3rd Last 3rd 2nd 1st
+1643 1st 2nd 3rd Last 3rd 2nd 1st
+1644 1st 2nd 3rd Last 3rd 2nd 1st
+1645 1st 2nd 3rd Last 3rd 2nd 1st
+1646 1st 2nd 3rd Last 3rd 2nd 1st
+1647 1st 2nd 3rd Last 3rd 2nd 1st
+1648 1st 2nd 3rd Last 3rd 2nd 1st
+1649 1st 2nd 3rd Last 3rd 2nd 1st
+1650 1st 2nd 3rd Last 3rd 2nd 1st
+1651 1st 2nd 3rd Last 3rd 2nd 1st
+1652 1st 2nd 3rd Last 3rd 2nd 1st
+1653 1st 2nd 3rd Last 3rd 2nd 1st
+1654 1st 2nd 3rd Last 3rd 2nd 1st
+1655 1st 2nd 3rd Last 3rd 2nd 1st
+1656 1st 2nd 3rd Last 3rd 2nd 1st
+1657 1st 2nd 3rd Last 3rd 2nd 1st
+1658 1st 2nd 3rd Last 3rd 2nd 1st
+1659 1st 2nd 3rd Last 3rd 2nd 1st
+1660 1st 2nd 3rd Last 3rd 2nd 1st
+1661 1st 2nd 3rd Last 3rd 2nd 1st
+1662 1st 2nd 3rd Last 3rd 2nd 1st
+1663 1st 2nd 3rd Last 3rd 2nd 1st
+1664 1st 2nd 3rd Last 3rd 2nd 1st
+1665 1st 2nd 3rd Last 3rd 2nd 1st
+1666 1st 2nd 3rd Last 3rd 2nd 1st
+1667 1st 2nd 3rd Last 3rd 2nd 1st
+1668 1st 2nd 3rd Last 3rd 2nd 1st
+1669 1st 2nd 3rd Last 3rd 2nd 1st
+1670 1st 2nd 3rd Last 3rd 2nd 1st
+1671 1st 2nd 3rd Last 3rd 2nd 1st
+1672 1st 2nd 3rd Last 3rd 2nd 1st
+1673 1st 2nd 3rd Last 3rd 2nd 1st
+1674 1st 2nd 3rd Last 3rd 2nd 1st
+1675 1st 2nd 3rd Last 3rd 2nd 1st
+1676 1st 2nd 3rd Last 3rd 2nd 1st
+1677 1st 2nd 3rd Last 3rd 2nd 1st
+1678 1st 2nd 3rd Last 3rd 2nd 1st
+1679 1st 2nd 3rd Last 3rd 2nd 1st
+1680 1st 2nd 3rd Last 3rd 2nd 1st
+1681 1st 2nd 3rd Last 3rd 2nd 1st
+1682 1st 2nd 3rd Last 3rd 2nd 1st
+1683 1st 2nd 3rd Last 3rd 2nd 1st
+1684 1st 2nd 3rd Last 3rd 2nd 1st
+1685 1st 2nd 3rd Last 3rd 2nd 1st
+1686 1st 2nd 3rd Last 3rd 2nd 1st
+1687 1st 2nd 3rd Last 3rd 2nd 1st
+1688 1st 2nd 3rd Last 3rd 2nd 1st
+1689 1st 2nd 3rd Last 3rd 2nd 1st
+1690 1st 2nd 3rd Last 3rd 2nd 1st
+1691 1st 2nd 3rd Last 3rd 2nd 1st
+1692 1st 2nd 3rd Last 3rd 2nd 1st
+1693 1st 2nd 3rd Last 3rd 2nd 1st
+1694 1st 2nd 3rd Last 3rd 2nd 1st
+1695 1st 2nd 3rd Last 3rd 2nd 1st
+1696 1st 2nd 3rd Last 3rd 2nd 1st
+1697 1st 2nd 3rd Last 3rd 2nd 1st
+1698 1st 2nd 3rd Last 3rd 2nd 1st
+1699 1st 2nd 3rd Last 3rd 2nd 1st
+1700 1st 2nd 3rd Last 3rd 2nd 1st
+1701 1st 2nd 3rd Last 3rd 2nd 1st
+1702 1st 2nd 3rd Last 3rd 2nd 1st
+1703 1st 2nd 3rd Last 3rd 2nd 1st
+1704 1st 2nd 3rd Last 3rd 2nd 1st
+1705 1st 2nd 3rd Last 3rd 2nd 1st
+1706 1st 2nd 3rd Last 3rd 2nd 1st
+1707 1st 2nd 3rd Last 3rd 2nd 1st
+1708 1st 2nd 3rd Last 3rd 2nd 1st
+1709 1st 2nd 3rd Last 3rd 2nd 1st
+1710 1st 2nd 3rd Last 3rd 2nd 1st
+1711 1st 2nd 3rd Last 3rd 2nd 1st
+1712 1st 2nd 3rd Last 3rd 2nd 1st
+1713 1st 2nd 3rd Last 3rd 2nd 1st
+1714 1st 2nd 3rd Last 3rd 2nd 1st
+1715 1st 2nd 3rd Last 3rd 2nd 1st
+1716 1st 2nd 3rd Last 3rd 2nd 1st
+1717 1st 2nd 3rd Last 3rd 2nd 1st
+1718 1st 2nd 3rd Last 3rd 2nd 1st
+1719 1st 2nd 3rd Last 3rd 2nd 1st
+1720 1st 2nd 3rd Last 3rd 2nd 1st
+1721 1st 2nd 3rd Last 3rd 2nd 1st
+1722 1st 2nd 3rd Last 3rd 2nd 1st
+1723 1st 2nd 3rd Last 3rd 2nd 1st
+1724 1st 2nd 3rd Last 3rd 2nd 1st
+1725 1st 2nd 3rd Last 3rd 2nd 1st
+1726 1st 2nd 3rd Last 3rd 2nd 1st
+1727 1st 2nd 3rd Last 3rd 2nd 1st
+1728 1st 2nd 3rd Last 3rd 2nd 1st
+1729 1st 2nd 3rd Last 3rd 2nd 1st
+1730 1st 2nd 3rd Last 3rd 2nd 1st
+1731 1st 2nd 3rd Last 3rd 2nd 1st
+1732 1st 2nd 3rd Last 3rd 2nd 1st
+1733 1st 2nd 3rd Last 3rd 2nd 1st
+1734 1st 2nd 3rd Last 3rd 2nd 1st
+1735 1st 2nd 3rd Last 3rd 2nd 1st
+1736 1st 2nd 3rd Last 3rd 2nd 1st
+1737 1st 2nd 3rd Last 3rd 2nd 1st
+1738 1st 2nd 3rd Last 3rd 2nd 1st
+1739 1st 2nd 3rd Last 3rd 2nd 1st
+1740 1st 2nd 3rd Last 3rd 2nd 1st
+1741 1st 2nd 3rd Last 3rd 2nd 1st
+1742 1st 2nd 3rd Last 3rd 2nd 1st
+1743 1st 2nd 3rd Last 3rd 2nd 1st
+1744 1st 2nd 3rd Last 3rd 2nd 1st
+1745 1st 2nd 3rd Last 3rd 2nd 1st
+1746 1st 2nd 3rd Last 3rd 2nd 1st
+1747 1st 2nd 3rd Last 3rd 2nd 1st
+1748 1st 2nd 3rd Last 3rd 2nd 1st
+1749 1st 2nd 3rd Last 3rd 2nd 1st
+1750 1st 2nd 3rd Last 3rd 2nd 1st
+1751 1st 2nd 3rd Last 3rd 2nd 1st
+1752 1st 2nd 3rd Last 3rd 2nd 1st
+1753 1st 2nd 3rd Last 3rd 2nd 1st
+1754 1st 2nd 3rd Last 3rd 2nd 1st
+1755 1st 2nd 3rd Last 3rd 2nd 1st
+1756 1st 2nd 3rd Last 3rd 2nd 1st
+1757 1st 2nd 3rd Last 3rd 2nd 1st
+1758 1st 2nd 3rd Last 3rd 2nd 1st
+1759 1st 2nd 3rd Last 3rd 2nd 1st
+1760 1st 2nd 3rd Last 3rd 2nd 1st
+1761 1st 2nd 3rd Last 3rd 2nd 1st
+1762 1st 2nd 3rd Last 3rd 2nd 1st
+1763 1st 2nd 3rd Last 3rd 2nd 1st
+1764 1st 2nd 3rd Last 3rd 2nd 1st
+1765 1st 2nd 3rd Last 3rd 2nd 1st
+1766 1st 2nd 3rd Last 3rd 2nd 1st
+1767 1st 2nd 3rd Last 3rd 2nd 1st
+1768 1st 2nd 3rd Last 3rd 2nd 1st
+1769 1st 2nd 3rd Last 3rd 2nd 1st
+1770 1st 2nd 3rd Last 3rd 2nd 1st
+1771 1st 2nd 3rd Last 3rd 2nd 1st
+1772 1st 2nd 3rd Last 3rd 2nd 1st
+1773 1st 2nd 3rd Last 3rd 2nd 1st
+1774 1st 2nd 3rd Last 3rd 2nd 1st
+1775 1st 2nd 3rd Last 3rd 2nd 1st
+1776 1st 2nd 3rd Last 3rd 2nd 1st
+1777 1st 2nd 3rd Last 3rd 2nd 1st
+1778 1st 2nd 3rd Last 3rd 2nd 1st
+1779 1st 2nd 3rd Last 3rd 2nd 1st
+1780 1st 2nd 3rd Last 3rd 2nd 1st
+1781 1st 2nd 3rd Last 3rd 2nd 1st
+1782 1st 2nd 3rd Last 3rd 2nd 1st
+1783 1st 2nd 3rd Last 3rd 2nd 1st
+1784 1st 2nd 3rd Last 3rd 2nd 1st
+1785 1st 2nd 3rd Last 3rd 2nd 1st
+1786 1st 2nd 3rd Last 3rd 2nd 1st
+1787 1st 2nd 3rd Last 3rd 2nd 1st
+1788 1st 2nd 3rd Last 3rd 2nd 1st
+1789 1st 2nd 3rd Last 3rd 2nd 1st
+1790 1st 2nd 3rd Last 3rd 2nd 1st
+1791 1st 2nd 3rd Last 3rd 2nd 1st
+1792 1st 2nd 3rd Last 3rd 2nd 1st
+1793 1st 2nd 3rd Last 3rd 2nd 1st
+1794 1st 2nd 3rd Last 3rd 2nd 1st
+1795 1st 2nd 3rd Last 3rd 2nd 1st
+1796 1st 2nd 3rd Last 3rd 2nd 1st
+1797 1st 2nd 3rd Last 3rd 2nd 1st
+1798 1st 2nd 3rd Last 3rd 2nd 1st
+1799 1st 2nd 3rd Last 3rd 2nd 1st
+1800 1st 2nd 3rd Last 3rd 2nd 1st
+1801 1st 2nd 3rd Last 3rd 2nd 1st
+1802 1st 2nd 3rd Last 3rd 2nd 1st
+1803 1st 2nd 3rd Last 3rd 2nd 1st
+1804 1st 2nd 3rd Last 3rd 2nd 1st
+1805 1st 2nd 3rd Last 3rd 2nd 1st
+1806 1st 2nd 3rd Last 3rd 2nd 1st
+1807 1st 2nd 3rd Last 3rd 2nd 1st
+1808 1st 2nd 3rd Last 3rd 2nd 1st
+1809 1st 2nd 3rd Last 3rd 2nd 1st
+1810 1st 2nd 3rd Last 3rd 2nd 1st
+1811 1st 2nd 3rd Last 3rd 2nd 1st
+1812 1st 2nd 3rd Last 3rd 2nd 1st
+1813 1st 2nd 3rd Last 3rd 2nd 1st
+1814 1st 2nd 3rd Last 3rd 2nd 1st
+1815 1st 2nd 3rd Last 3rd 2nd 1st
+1816 1st 2nd 3rd Last 3rd 2nd 1st
+1817 1st 2nd 3rd Last 3rd 2nd 1st
+1818 1st 2nd 3rd Last 3rd 2nd 1st
+1819 1st 2nd 3rd Last 3rd 2nd 1st
+1820 1st 2nd 3rd Last 3rd 2nd 1st
+1821 1st 2nd 3rd Last 3rd 2nd 1st
+1822 1st 2nd 3rd Last 3rd 2nd 1st
+1823 1st 2nd 3rd Last 3rd 2nd 1st
+1824 1st 2nd 3rd Last 3rd 2nd 1st
+1825 1st 2nd 3rd Last 3rd 2nd 1st
+1826 1st 2nd 3rd Last 3rd 2nd 1st
+1827 1st 2nd 3rd Last 3rd 2nd 1st
+1828 1st 2nd 3rd Last 3rd 2nd 1st
+1829 1st 2nd 3rd Last 3rd 2nd 1st
+1830 1st 2nd 3rd Last 3rd 2nd 1st
+1831 1st 2nd 3rd Last 3rd 2nd 1st
+1832 1st 2nd 3rd Last 3rd 2nd 1st
+1833 1st 2nd 3rd Last 3rd 2nd 1st
+1834 1st 2nd 3rd Last 3rd 2nd 1st
+1835 1st 2nd 3rd Last 3rd 2nd 1st
+1836 1st 2nd 3rd Last 3rd 2nd 1st
+1837 1st 2nd 3rd Last 3rd 2nd 1st
+1838 1st 2nd 3rd Last 3rd 2nd 1st
+1839 1st 2nd 3rd Last 3rd 2nd 1st
+1840 1st 2nd 3rd Last 3rd 2nd 1st
+1841 1st 2nd 3rd Last 3rd 2nd 1st
+1842 1st 2nd 3rd Last 3rd 2nd 1st
+1843 1st 2nd 3rd Last 3rd 2nd 1st
+1844 1st 2nd 3rd Last 3rd 2nd 1st
+1845 1st 2nd 3rd Last 3rd 2nd 1st
+1846 1st 2nd 3rd Last 3rd 2nd 1st
+1847 1st 2nd 3rd Last 3rd 2nd 1st
+1848 1st 2nd 3rd Last 3rd 2nd 1st
+1849 1st 2nd 3rd Last 3rd 2nd 1st
+1850 1st 2nd 3rd Last 3rd 2nd 1st
+1851 1st 2nd 3rd Last 3rd 2nd 1st
+1852 1st 2nd 3rd Last 3rd 2nd 1st
+1853 1st 2nd 3rd Last 3rd 2nd 1st
+1854 1st 2nd 3rd Last 3rd 2nd 1st
+1855 1st 2nd 3rd Last 3rd 2nd 1st
+1856 1st 2nd 3rd Last 3rd 2nd 1st
+1857 1st 2nd 3rd Last 3rd 2nd 1st
+1858 1st 2nd 3rd Last 3rd 2nd 1st
+1859 1st 2nd 3rd Last 3rd 2nd 1st
+1860 1st 2nd 3rd Last 3rd 2nd 1st
+1861 1st 2nd 3rd Last 3rd 2nd 1st
+1862 1st 2nd 3rd Last 3rd 2nd 1st
+1863 1st 2nd 3rd Last 3rd 2nd 1st
+1864 1st 2nd 3rd Last 3rd 2nd 1st
+1865 1st 2nd 3rd Last 3rd 2nd 1st
+1866 1st 2nd 3rd Last 3rd 2nd 1st
+1867 1st 2nd 3rd Last 3rd 2nd 1st
+1868 1st 2nd 3rd Last 3rd 2nd 1st
+1869 1st 2nd 3rd Last 3rd 2nd 1st
+1870 1st 2nd 3rd Last 3rd 2nd 1st
+1871 1st 2nd 3rd Last 3rd 2nd 1st
+1872 1st 2nd 3rd Last 3rd 2nd 1st
+1873 1st 2nd 3rd Last 3rd 2nd 1st
+1874 1st 2nd 3rd Last 3rd 2nd 1st
+1875 1st 2nd 3rd Last 3rd 2nd 1st
+1876 1st 2nd 3rd Last 3rd 2nd 1st
+1877 1st 2nd 3rd Last 3rd 2nd 1st
+1878 1st 2nd 3rd Last 3rd 2nd 1st
+1879 1st 2nd 3rd Last 3rd 2nd 1st
+1880 1st 2nd 3rd Last 3rd 2nd 1st
+1881 1st 2nd 3rd Last 3rd 2nd 1st
+1882 1st 2nd 3rd Last 3rd 2nd 1st
+1883 1st 2nd 3rd Last 3rd 2nd 1st
+1884 1st 2nd 3rd Last 3rd 2nd 1st
+1885 1st 2nd 3rd Last 3rd 2nd 1st
+1886 1st 2nd 3rd Last 3rd 2nd 1st
+1887 1st 2nd 3rd Last 3rd 2nd 1st
+1888 1st 2nd 3rd Last 3rd 2nd 1st
+1889 1st 2nd 3rd Last 3rd 2nd 1st
+1890 1st 2nd 3rd Last 3rd 2nd 1st
+1891 1st 2nd 3rd Last 3rd 2nd 1st
+1892 1st 2nd 3rd Last 3rd 2nd 1st
+1893 1st 2nd 3rd Last 3rd 2nd 1st
+1894 1st 2nd 3rd Last 3rd 2nd 1st
+1895 1st 2nd 3rd Last 3rd 2nd 1st
+1896 1st 2nd 3rd Last 3rd 2nd 1st
+1897 1st 2nd 3rd Last 3rd 2nd 1st
+1898 1st 2nd 3rd Last 3rd 2nd 1st
+1899 1st 2nd 3rd Last 3rd 2nd 1st
+1900 1st 2nd 3rd Last 3rd 2nd 1st
+1901 1st 2nd 3rd Last 3rd 2nd 1st
+1902 1st 2nd 3rd Last 3rd 2nd 1st
+1903 1st 2nd 3rd Last 3rd 2nd 1st
+1904 1st 2nd 3rd Last 3rd 2nd 1st
+1905 1st 2nd 3rd Last 3rd 2nd 1st
+1906 1st 2nd 3rd Last 3rd 2nd 1st
+1907 1st 2nd 3rd Last 3rd 2nd 1st
+1908 1st 2nd 3rd Last 3rd 2nd 1st
+1909 1st 2nd 3rd Last 3rd 2nd 1st
+1910 1st 2nd 3rd Last 3rd 2nd 1st
+1911 1st 2nd 3rd Last 3rd 2nd 1st
+1912 1st 2nd 3rd Last 3rd 2nd 1st
+1913 1st 2nd 3rd Last 3rd 2nd 1st
+1914 1st 2nd 3rd Last 3rd 2nd 1st
+1915 1st 2nd 3rd Last 3rd 2nd 1st
+1916 1st 2nd 3rd Last 3rd 2nd 1st
+1917 1st 2nd 3rd Last 3rd 2nd 1st
+1918 1st 2nd 3rd Last 3rd 2nd 1st
+1919 1st 2nd 3rd Last 3rd 2nd 1st
+1920 1st 2nd 3rd Last 3rd 2nd 1st
+1921 1st 2nd 3rd Last 3rd 2nd 1st
+1922 1st 2nd 3rd Last 3rd 2nd 1st
+1923 1st 2nd 3rd Last 3rd 2nd 1st
+1924 1st 2nd 3rd Last 3rd 2nd 1st
+1925 1st 2nd 3rd Last 3rd 2nd 1st
+1926 1st 2nd 3rd Last 3rd 2nd 1st
+1927 1st 2nd 3rd Last 3rd 2nd 1st
+1928 1st 2nd 3rd Last 3rd 2nd 1st
+1929 1st 2nd 3rd Last 3rd 2nd 1st
+1930 1st 2nd 3rd Last 3rd 2nd 1st
+1931 1st 2nd 3rd Last 3rd 2nd 1st
+1932 1st 2nd 3rd Last 3rd 2nd 1st
+1933 1st 2nd 3rd Last 3rd 2nd 1st
+1934 1st 2nd 3rd Last 3rd 2nd 1st
+1935 1st 2nd 3rd Last 3rd 2nd 1st
+1936 1st 2nd 3rd Last 3rd 2nd 1st
+1937 1st 2nd 3rd Last 3rd 2nd 1st
+1938 1st 2nd 3rd Last 3rd 2nd 1st
+1939 1st 2nd 3rd Last 3rd 2nd 1st
+1940 1st 2nd 3rd Last 3rd 2nd 1st
+1941 1st 2nd 3rd Last 3rd 2nd 1st
+1942 1st 2nd 3rd Last 3rd 2nd 1st
+1943 1st 2nd 3rd Last 3rd 2nd 1st
+1944 1st 2nd 3rd Last 3rd 2nd 1st
+1945 1st 2nd 3rd Last 3rd 2nd 1st
+1946 1st 2nd 3rd Last 3rd 2nd 1st
+1947 1st 2nd 3rd Last 3rd 2nd 1st
+1948 1st 2nd 3rd Last 3rd 2nd 1st
+1949 1st 2nd 3rd Last 3rd 2nd 1st
+1950 1st 2nd 3rd Last 3rd 2nd 1st
+1951 1st 2nd 3rd Last 3rd 2nd 1st
+1952 1st 2nd 3rd Last 3rd 2nd 1st
+1953 1st 2nd 3rd Last 3rd 2nd 1st
+1954 1st 2nd 3rd Last 3rd 2nd 1st
+1955 1st 2nd 3rd Last 3rd 2nd 1st
+1956 1st 2nd 3rd Last 3rd 2nd 1st
+1957 1st 2nd 3rd Last 3rd 2nd 1st
+1958 1st 2nd 3rd Last 3rd 2nd 1st
+1959 1st 2nd 3rd Last 3rd 2nd 1st
+1960 1st 2nd 3rd Last 3rd 2nd 1st
+1961 1st 2nd 3rd Last 3rd 2nd 1st
+1962 1st 2nd 3rd Last 3rd 2nd 1st
+1963 1st 2nd 3rd Last 3rd 2nd 1st
+1964 1st 2nd 3rd Last 3rd 2nd 1st
+1965 1st 2nd 3rd Last 3rd 2nd 1st
+1966 1st 2nd 3rd Last 3rd 2nd 1st
+1967 1st 2nd 3rd Last 3rd 2nd 1st
+1968 1st 2nd 3rd Last 3rd 2nd 1st
+1969 1st 2nd 3rd Last 3rd 2nd 1st
+1970 1st 2nd 3rd Last 3rd 2nd 1st
+1971 1st 2nd 3rd Last 3rd 2nd 1st
+1972 1st 2nd 3rd Last 3rd 2nd 1st
+1973 1st 2nd 3rd Last 3rd 2nd 1st
+1974 1st 2nd 3rd Last 3rd 2nd 1st
+1975 1st 2nd 3rd Last 3rd 2nd 1st
+1976 1st 2nd 3rd Last 3rd 2nd 1st
+1977 1st 2nd 3rd Last 3rd 2nd 1st
+1978 1st 2nd 3rd Last 3rd 2nd 1st
+1979 1st 2nd 3rd Last 3rd 2nd 1st
+1980 1st 2nd 3rd Last 3rd 2nd 1st
+1981 1st 2nd 3rd Last 3rd 2nd 1st
+1982 1st 2nd 3rd Last 3rd 2nd 1st
+1983 1st 2nd 3rd Last 3rd 2nd 1st
+1984 1st 2nd 3rd Last 3rd 2nd 1st
+1985 1st 2nd 3rd Last 3rd 2nd 1st
+1986 1st 2nd 3rd Last 3rd 2nd 1st
+1987 1st 2nd 3rd Last 3rd 2nd 1st
+1988 1st 2nd 3rd Last 3rd 2nd 1st
+1989 1st 2nd 3rd Last 3rd 2nd 1st
+1990 1st 2nd 3rd Last 3rd 2nd 1st
+1991 1st 2nd 3rd Last 3rd 2nd 1st
+1992 1st 2nd 3rd Last 3rd 2nd 1st
+1993 1st 2nd 3rd Last 3rd 2nd 1st
+1994 1st 2nd 3rd Last 3rd 2nd 1st
+1995 1st 2nd 3rd Last 3rd 2nd 1st
+1996 1st 2nd 3rd Last 3rd 2nd 1st
+1997 1st 2nd 3rd Last 3rd 2nd 1st
+1998 1st 2nd 3rd Last 3rd 2nd 1st
+1999 1st 2nd 3rd Last 3rd 2nd 1st
+2000 1st 2nd 3rd Last 3rd 2nd 1st
+2001 1st 2nd 3rd Last 3rd 2nd 1st
+2002 1st 2nd 3rd Last 3rd 2nd 1st
+2003 1st 2nd 3rd Last 3rd 2nd 1st
+2004 1st 2nd 3rd Last 3rd 2nd 1st
+2005 1st 2nd 3rd Last 3rd 2nd 1st
+2006 1st 2nd 3rd Last 3rd 2nd 1st
+2007 1st 2nd 3rd Last 3rd 2nd 1st
+2008 1st 2nd 3rd Last 3rd 2nd 1st
+2009 1st 2nd 3rd Last 3rd 2nd 1st
+2010 1st 2nd 3rd Last 3rd 2nd 1st
+2011 1st 2nd 3rd Last 3rd 2nd 1st
+2012 1st 2nd 3rd Last 3rd 2nd 1st
+2013 1st 2nd 3rd Last 3rd 2nd 1st
+2014 1st 2nd 3rd Last 3rd 2nd 1st
+2015 1st 2nd 3rd Last 3rd 2nd 1st
+2016 1st 2nd 3rd Last 3rd 2nd 1st
+2017 1st 2nd 3rd Last 3rd 2nd 1st
+2018 1st 2nd 3rd Last 3rd 2nd 1st
+2019 1st 2nd 3rd Last 3rd 2nd 1st
+2020 1st 2nd 3rd Last 3rd 2nd 1st
+2021 1st 2nd 3rd Last 3rd 2nd 1st
+2022 1st 2nd 3rd Last 3rd 2nd 1st
+2023 1st 2nd 3rd Last 3rd 2nd 1st
+2024 1st 2nd 3rd Last 3rd 2nd 1st
+2025 1st 2nd 3rd Last 3rd 2nd 1st
+2026 1st 2nd 3rd Last 3rd 2nd 1st
+2027 1st 2nd 3rd Last 3rd 2nd 1st
+2028 1st 2nd 3rd Last 3rd 2nd 1st
+2029 1st 2nd 3rd Last 3rd 2nd 1st
+2030 1st 2nd 3rd Last 3rd 2nd 1st
+2031 1st 2nd 3rd Last 3rd 2nd 1st
+2032 1st 2nd 3rd Last 3rd 2nd 1st
+2033 1st 2nd 3rd Last 3rd 2nd 1st
+2034 1st 2nd 3rd Last 3rd 2nd 1st
+2035 1st 2nd 3rd Last 3rd 2nd 1st
+2036 1st 2nd 3rd Last 3rd 2nd 1st
+2037 1st 2nd 3rd Last 3rd 2nd 1st
+2038 1st 2nd 3rd Last 3rd 2nd 1st
+2039 1st 2nd 3rd Last 3rd 2nd 1st
+2040 1st 2nd 3rd Last 3rd 2nd 1st
+2041 1st 2nd 3rd Last 3rd 2nd 1st
+2042 1st 2nd 3rd Last 3rd 2nd 1st
+2043 1st 2nd 3rd Last 3rd 2nd 1st
+2044 1st 2nd 3rd Last 3rd 2nd 1st
+2045 1st 2nd 3rd Last 3rd 2nd 1st
+2046 1st 2nd 3rd Last 3rd 2nd 1st
+2047 1st 2nd 3rd Last 3rd 2nd 1st
+2048 1st 2nd 3rd Last 3rd 2nd 1st
+2049 1st 2nd 3rd Last 3rd 2nd 1st
+2050 1st 2nd 3rd Last 3rd 2nd 1st
+2051 1st 2nd 3rd Last 3rd 2nd 1st
+2052 1st 2nd 3rd Last 3rd 2nd 1st
+2053 1st 2nd 3rd Last 3rd 2nd 1st
+2054 1st 2nd 3rd Last 3rd 2nd 1st
+2055 1st 2nd 3rd Last 3rd 2nd 1st
+2056 1st 2nd 3rd Last 3rd 2nd 1st
+2057 1st 2nd 3rd Last 3rd 2nd 1st
+2058 1st 2nd 3rd Last 3rd 2nd 1st
+2059 1st 2nd 3rd Last 3rd 2nd 1st
+2060 1st 2nd 3rd Last 3rd 2nd 1st
+2061 1st 2nd 3rd Last 3rd 2nd 1st
+2062 1st 2nd 3rd Last 3rd 2nd 1st
+2063 1st 2nd 3rd Last 3rd 2nd 1st
+2064 1st 2nd 3rd Last 3rd 2nd 1st
+2065 1st 2nd 3rd Last 3rd 2nd 1st
+2066 1st 2nd 3rd Last 3rd 2nd 1st
+2067 1st 2nd 3rd Last 3rd 2nd 1st
+2068 1st 2nd 3rd Last 3rd 2nd 1st
+2069 1st 2nd 3rd Last 3rd 2nd 1st
+2070 1st 2nd 3rd Last 3rd 2nd 1st
+2071 1st 2nd 3rd Last 3rd 2nd 1st
+2072 1st 2nd 3rd Last 3rd 2nd 1st
+2073 1st 2nd 3rd Last 3rd 2nd 1st
+2074 1st 2nd 3rd Last 3rd 2nd 1st
+2075 1st 2nd 3rd Last 3rd 2nd 1st
+2076 1st 2nd 3rd Last 3rd 2nd 1st
+2077 1st 2nd 3rd Last 3rd 2nd 1st
+2078 1st 2nd 3rd Last 3rd 2nd 1st
+2079 1st 2nd 3rd Last 3rd 2nd 1st
+2080 1st 2nd 3rd Last 3rd 2nd 1st
+2081 1st 2nd 3rd Last 3rd 2nd 1st
+2082 1st 2nd 3rd Last 3rd 2nd 1st
+2083 1st 2nd 3rd Last 3rd 2nd 1st
+2084 1st 2nd 3rd Last 3rd 2nd 1st
+2085 1st 2nd 3rd Last 3rd 2nd 1st
+2086 1st 2nd 3rd Last 3rd 2nd 1st
+2087 1st 2nd 3rd Last 3rd 2nd 1st
+2088 1st 2nd 3rd Last 3rd 2nd 1st
+2089 1st 2nd 3rd Last 3rd 2nd 1st
+2090 1st 2nd 3rd Last 3rd 2nd 1st
+2091 1st 2nd 3rd Last 3rd 2nd 1st
+2092 1st 2nd 3rd Last 3rd 2nd 1st
+2093 1st 2nd 3rd Last 3rd 2nd 1st
+2094 1st 2nd 3rd Last 3rd 2nd 1st
+2095 1st 2nd 3rd Last 3rd 2nd 1st
+2096 1st 2nd 3rd Last 3rd 2nd 1st
+2097 1st 2nd 3rd Last 3rd 2nd 1st
+2098 1st 2nd 3rd Last 3rd 2nd 1st
+2099 1st 2nd 3rd Last 3rd 2nd 1st
+2100 1st 2nd 3rd Last 3rd 2nd 1st
+2101 1st 2nd 3rd Last 3rd 2nd 1st
+2102 1st 2nd 3rd Last 3rd 2nd 1st
+2103 1st 2nd 3rd Last 3rd 2nd 1st
+2104 1st 2nd 3rd Last 3rd 2nd 1st
+2105 1st 2nd 3rd Last 3rd 2nd 1st
+2106 1st 2nd 3rd Last 3rd 2nd 1st
+2107 1st 2nd 3rd Last 3rd 2nd 1st
+2108 1st 2nd 3rd Last 3rd 2nd 1st
+2109 1st 2nd 3rd Last 3rd 2nd 1st
+2110 1st 2nd 3rd Last 3rd 2nd 1st
+2111 1st 2nd 3rd Last 3rd 2nd 1st
+2112 1st 2nd 3rd Last 3rd 2nd 1st
+2113 1st 2nd 3rd Last 3rd 2nd 1st
+2114 1st 2nd 3rd Last 3rd 2nd 1st
+2115 1st 2nd 3rd Last 3rd 2nd 1st
+2116 1st 2nd 3rd Last 3rd 2nd 1st
+2117 1st 2nd 3rd Last 3rd 2nd 1st
+2118 1st 2nd 3rd Last 3rd 2nd 1st
+2119 1st 2nd 3rd Last 3rd 2nd 1st
+2120 1st 2nd 3rd Last 3rd 2nd 1st
+2121 1st 2nd 3rd Last 3rd 2nd 1st
+2122 1st 2nd 3rd Last 3rd 2nd 1st
+2123 1st 2nd 3rd Last 3rd 2nd 1st
+2124 1st 2nd 3rd Last 3rd 2nd 1st
+2125 1st 2nd 3rd Last 3rd 2nd 1st
+2126 1st 2nd 3rd Last 3rd 2nd 1st
+2127 1st 2nd 3rd Last 3rd 2nd 1st
+2128 1st 2nd 3rd Last 3rd 2nd 1st
+2129 1st 2nd 3rd Last 3rd 2nd 1st
+2130 1st 2nd 3rd Last 3rd 2nd 1st
+2131 1st 2nd 3rd Last 3rd 2nd 1st
+2132 1st 2nd 3rd Last 3rd 2nd 1st
+2133 1st 2nd 3rd Last 3rd 2nd 1st
+2134 1st 2nd 3rd Last 3rd 2nd 1st
+2135 1st 2nd 3rd Last 3rd 2nd 1st
+2136 1st 2nd 3rd Last 3rd 2nd 1st
+2137 1st 2nd 3rd Last 3rd 2nd 1st
+2138 1st 2nd 3rd Last 3rd 2nd 1st
+2139 1st 2nd 3rd Last 3rd 2nd 1st
+2140 1st 2nd 3rd Last 3rd 2nd 1st
+2141 1st 2nd 3rd Last 3rd 2nd 1st
+2142 1st 2nd 3rd Last 3rd 2nd 1st
+2143 1st 2nd 3rd Last 3rd 2nd 1st
+2144 1st 2nd 3rd Last 3rd 2nd 1st
+2145 1st 2nd 3rd Last 3rd 2nd 1st
+2146 1st 2nd 3rd Last 3rd 2nd 1st
+2147 1st 2nd 3rd Last 3rd 2nd 1st
+2148 1st 2nd 3rd Last 3rd 2nd 1st
+2149 1st 2nd 3rd Last 3rd 2nd 1st
+2150 1st 2nd 3rd Last 3rd 2nd 1st
+2151 1st 2nd 3rd Last 3rd 2nd 1st
+2152 1st 2nd 3rd Last 3rd 2nd 1st
+2153 1st 2nd 3rd Last 3rd 2nd 1st
+2154 1st 2nd 3rd Last 3rd 2nd 1st
+2155 1st 2nd 3rd Last 3rd 2nd 1st
+2156 1st 2nd 3rd Last 3rd 2nd 1st
+2157 1st 2nd 3rd Last 3rd 2nd 1st
+2158 1st 2nd 3rd Last 3rd 2nd 1st
+2159 1st 2nd 3rd Last 3rd 2nd 1st
+2160 1st 2nd 3rd Last 3rd 2nd 1st
+2161 1st 2nd 3rd Last 3rd 2nd 1st
+2162 1st 2nd 3rd Last 3rd 2nd 1st
+2163 1st 2nd 3rd Last 3rd 2nd 1st
+2164 1st 2nd 3rd Last 3rd 2nd 1st
+2165 1st 2nd 3rd Last 3rd 2nd 1st
+2166 1st 2nd 3rd Last 3rd 2nd 1st
+2167 1st 2nd 3rd Last 3rd 2nd 1st
+2168 1st 2nd 3rd Last 3rd 2nd 1st
+2169 1st 2nd 3rd Last 3rd 2nd 1st
+2170 1st 2nd 3rd Last 3rd 2nd 1st
+2171 1st 2nd 3rd Last 3rd 2nd 1st
+2172 1st 2nd 3rd Last 3rd 2nd 1st
+2173 1st 2nd 3rd Last 3rd 2nd 1st
+2174 1st 2nd 3rd Last 3rd 2nd 1st
+2175 1st 2nd 3rd Last 3rd 2nd 1st
+2176 1st 2nd 3rd Last 3rd 2nd 1st
+2177 1st 2nd 3rd Last 3rd 2nd 1st
+2178 1st 2nd 3rd Last 3rd 2nd 1st
+2179 1st 2nd 3rd Last 3rd 2nd 1st
+2180 1st 2nd 3rd Last 3rd 2nd 1st
+2181 1st 2nd 3rd Last 3rd 2nd 1st
+2182 1st 2nd 3rd Last 3rd 2nd 1st
+2183 1st 2nd 3rd Last 3rd 2nd 1st
+2184 1st 2nd 3rd Last 3rd 2nd 1st
+2185 1st 2nd 3rd Last 3rd 2nd 1st
+2186 1st 2nd 3rd Last 3rd 2nd 1st
+2187 1st 2nd 3rd Last 3rd 2nd 1st
+2188 1st 2nd 3rd Last 3rd 2nd 1st
+2189 1st 2nd 3rd Last 3rd 2nd 1st
+2190 1st 2nd 3rd Last 3rd 2nd 1st
+2191 1st 2nd 3rd Last 3rd 2nd 1st
+2192 1st 2nd 3rd Last 3rd 2nd 1st
+2193 1st 2nd 3rd Last 3rd 2nd 1st
+2194 1st 2nd 3rd Last 3rd 2nd 1st
+2195 1st 2nd 3rd Last 3rd 2nd 1st
+2196 1st 2nd 3rd Last 3rd 2nd 1st
+2197 1st 2nd 3rd Last 3rd 2nd 1st
+2198 1st 2nd 3rd Last 3rd 2nd 1st
+2199 1st 2nd 3rd Last 3rd 2nd 1st
+2200 1st 2nd 3rd Last 3rd 2nd 1st
+2201 1st 2nd 3rd Last 3rd 2nd 1st
+2202 1st 2nd 3rd Last 3rd 2nd 1st
+2203 1st 2nd 3rd Last 3rd 2nd 1st
+2204 1st 2nd 3rd Last 3rd 2nd 1st
+2205 1st 2nd 3rd Last 3rd 2nd 1st
+2206 1st 2nd 3rd Last 3rd 2nd 1st
+2207 1st 2nd 3rd Last 3rd 2nd 1st
+2208 1st 2nd 3rd Last 3rd 2nd 1st
+2209 1st 2nd 3rd Last 3rd 2nd 1st
+2210 1st 2nd 3rd Last 3rd 2nd 1st
+2211 1st 2nd 3rd Last 3rd 2nd 1st
+2212 1st 2nd 3rd Last 3rd 2nd 1st
+2213 1st 2nd 3rd Last 3rd 2nd 1st
+2214 1st 2nd 3rd Last 3rd 2nd 1st
+2215 1st 2nd 3rd Last 3rd 2nd 1st
+2216 1st 2nd 3rd Last 3rd 2nd 1st
+2217 1st 2nd 3rd Last 3rd 2nd 1st
+2218 1st 2nd 3rd Last 3rd 2nd 1st
+2219 1st 2nd 3rd Last 3rd 2nd 1st
+2220 1st 2nd 3rd Last 3rd 2nd 1st
+2221 1st 2nd 3rd Last 3rd 2nd 1st
+2222 1st 2nd 3rd Last 3rd 2nd 1st
+2223 1st 2nd 3rd Last 3rd 2nd 1st
+2224 1st 2nd 3rd Last 3rd 2nd 1st
+2225 1st 2nd 3rd Last 3rd 2nd 1st
+2226 1st 2nd 3rd Last 3rd 2nd 1st
+2227 1st 2nd 3rd Last 3rd 2nd 1st
+2228 1st 2nd 3rd Last 3rd 2nd 1st
+2229 1st 2nd 3rd Last 3rd 2nd 1st
+2230 1st 2nd 3rd Last 3rd 2nd 1st
+2231 1st 2nd 3rd Last 3rd 2nd 1st
+2232 1st 2nd 3rd Last 3rd 2nd 1st
+2233 1st 2nd 3rd Last 3rd 2nd 1st
+2234 1st 2nd 3rd Last 3rd 2nd 1st
+2235 1st 2nd 3rd Last 3rd 2nd 1st
+2236 1st 2nd 3rd Last 3rd 2nd 1st
+2237 1st 2nd 3rd Last 3rd 2nd 1st
+2238 1st 2nd 3rd Last 3rd 2nd 1st
+2239 1st 2nd 3rd Last 3rd 2nd 1st
+2240 1st 2nd 3rd Last 3rd 2nd 1st
+2241 1st 2nd 3rd Last 3rd 2nd 1st
+2242 1st 2nd 3rd Last 3rd 2nd 1st
+2243 1st 2nd 3rd Last 3rd 2nd 1st
+2244 1st 2nd 3rd Last 3rd 2nd 1st
+2245 1st 2nd 3rd Last 3rd 2nd 1st
+2246 1st 2nd 3rd Last 3rd 2nd 1st
+2247 1st 2nd 3rd Last 3rd 2nd 1st
+2248 1st 2nd 3rd Last 3rd 2nd 1st
+2249 1st 2nd 3rd Last 3rd 2nd 1st
+2250 1st 2nd 3rd Last 3rd 2nd 1st
+2251 1st 2nd 3rd Last 3rd 2nd 1st
+2252 1st 2nd 3rd Last 3rd 2nd 1st
+2253 1st 2nd 3rd Last 3rd 2nd 1st
+2254 1st 2nd 3rd Last 3rd 2nd 1st
+2255 1st 2nd 3rd Last 3rd 2nd 1st
+2256 1st 2nd 3rd Last 3rd 2nd 1st
+2257 1st 2nd 3rd Last 3rd 2nd 1st
+2258 1st 2nd 3rd Last 3rd 2nd 1st
+2259 1st 2nd 3rd Last 3rd 2nd 1st
+2260 1st 2nd 3rd Last 3rd 2nd 1st
+2261 1st 2nd 3rd Last 3rd 2nd 1st
+2262 1st 2nd 3rd Last 3rd 2nd 1st
+2263 1st 2nd 3rd Last 3rd 2nd 1st
+2264 1st 2nd 3rd Last 3rd 2nd 1st
+2265 1st 2nd 3rd Last 3rd 2nd 1st
+2266 1st 2nd 3rd Last 3rd 2nd 1st
+2267 1st 2nd 3rd Last 3rd 2nd 1st
+2268 1st 2nd 3rd Last 3rd 2nd 1st
+2269 1st 2nd 3rd Last 3rd 2nd 1st
+2270 1st 2nd 3rd Last 3rd 2nd 1st
+2271 1st 2nd 3rd Last 3rd 2nd 1st
+2272 1st 2nd 3rd Last 3rd 2nd 1st
+2273 1st 2nd 3rd Last 3rd 2nd 1st
+2274 1st 2nd 3rd Last 3rd 2nd 1st
+2275 1st 2nd 3rd Last 3rd 2nd 1st
+2276 1st 2nd 3rd Last 3rd 2nd 1st
+2277 1st 2nd 3rd Last 3rd 2nd 1st
+2278 1st 2nd 3rd Last 3rd 2nd 1st
+2279 1st 2nd 3rd Last 3rd 2nd 1st
+2280 1st 2nd 3rd Last 3rd 2nd 1st
+2281 1st 2nd 3rd Last 3rd 2nd 1st
+2282 1st 2nd 3rd Last 3rd 2nd 1st
+2283 1st 2nd 3rd Last 3rd 2nd 1st
+2284 1st 2nd 3rd Last 3rd 2nd 1st
+2285 1st 2nd 3rd Last 3rd 2nd 1st
+2286 1st 2nd 3rd Last 3rd 2nd 1st
+2287 1st 2nd 3rd Last 3rd 2nd 1st
+2288 1st 2nd 3rd Last 3rd 2nd 1st
+2289 1st 2nd 3rd Last 3rd 2nd 1st
+2290 1st 2nd 3rd Last 3rd 2nd 1st
+2291 1st 2nd 3rd Last 3rd 2nd 1st
+2292 1st 2nd 3rd Last 3rd 2nd 1st
+2293 1st 2nd 3rd Last 3rd 2nd 1st
+2294 1st 2nd 3rd Last 3rd 2nd 1st
+2295 1st 2nd 3rd Last 3rd 2nd 1st
+2296 1st 2nd 3rd Last 3rd 2nd 1st
+2297 1st 2nd 3rd Last 3rd 2nd 1st
+2298 1st 2nd 3rd Last 3rd 2nd 1st
+2299 1st 2nd 3rd Last 3rd 2nd 1st
+2300 1st 2nd 3rd Last 3rd 2nd 1st
+2301 1st 2nd 3rd Last 3rd 2nd 1st
+2302 1st 2nd 3rd Last 3rd 2nd 1st
+2303 1st 2nd 3rd Last 3rd 2nd 1st
+2304 1st 2nd 3rd Last 3rd 2nd 1st
+2305 1st 2nd 3rd Last 3rd 2nd 1st
+2306 1st 2nd 3rd Last 3rd 2nd 1st
+2307 1st 2nd 3rd Last 3rd 2nd 1st
+2308 1st 2nd 3rd Last 3rd 2nd 1st
+2309 1st 2nd 3rd Last 3rd 2nd 1st
+2310 1st 2nd 3rd Last 3rd 2nd 1st
+2311 1st 2nd 3rd Last 3rd 2nd 1st
+2312 1st 2nd 3rd Last 3rd 2nd 1st
+2313 1st 2nd 3rd Last 3rd 2nd 1st
+2314 1st 2nd 3rd Last 3rd 2nd 1st
+2315 1st 2nd 3rd Last 3rd 2nd 1st
+2316 1st 2nd 3rd Last 3rd 2nd 1st
+2317 1st 2nd 3rd Last 3rd 2nd 1st
+2318 1st 2nd 3rd Last 3rd 2nd 1st
+2319 1st 2nd 3rd Last 3rd 2nd 1st
+2320 1st 2nd 3rd Last 3rd 2nd 1st
+2321 1st 2nd 3rd Last 3rd 2nd 1st
+2322 1st 2nd 3rd Last 3rd 2nd 1st
+2323 1st 2nd 3rd Last 3rd 2nd 1st
+2324 1st 2nd 3rd Last 3rd 2nd 1st
+2325 1st 2nd 3rd Last 3rd 2nd 1st
+2326 1st 2nd 3rd Last 3rd 2nd 1st
+2327 1st 2nd 3rd Last 3rd 2nd 1st
+2328 1st 2nd 3rd Last 3rd 2nd 1st
+2329 1st 2nd 3rd Last 3rd 2nd 1st
+2330 1st 2nd 3rd Last 3rd 2nd 1st
+2331 1st 2nd 3rd Last 3rd 2nd 1st
+2332 1st 2nd 3rd Last 3rd 2nd 1st
+2333 1st 2nd 3rd Last 3rd 2nd 1st
+2334 1st 2nd 3rd Last 3rd 2nd 1st
+2335 1st 2nd 3rd Last 3rd 2nd 1st
+2336 1st 2nd 3rd Last 3rd 2nd 1st
+2337 1st 2nd 3rd Last 3rd 2nd 1st
+2338 1st 2nd 3rd Last 3rd 2nd 1st
+2339 1st 2nd 3rd Last 3rd 2nd 1st
+2340 1st 2nd 3rd Last 3rd 2nd 1st
+2341 1st 2nd 3rd Last 3rd 2nd 1st
+2342 1st 2nd 3rd Last 3rd 2nd 1st
+2343 1st 2nd 3rd Last 3rd 2nd 1st
+2344 1st 2nd 3rd Last 3rd 2nd 1st
+2345 1st 2nd 3rd Last 3rd 2nd 1st
+2346 1st 2nd 3rd Last 3rd 2nd 1st
+2347 1st 2nd 3rd Last 3rd 2nd 1st
+2348 1st 2nd 3rd Last 3rd 2nd 1st
+2349 1st 2nd 3rd Last 3rd 2nd 1st
+2350 1st 2nd 3rd Last 3rd 2nd 1st
+2351 1st 2nd 3rd Last 3rd 2nd 1st
+2352 1st 2nd 3rd Last 3rd 2nd 1st
+2353 1st 2nd 3rd Last 3rd 2nd 1st
+2354 1st 2nd 3rd Last 3rd 2nd 1st
+2355 1st 2nd 3rd Last 3rd 2nd 1st
+2356 1st 2nd 3rd Last 3rd 2nd 1st
+2357 1st 2nd 3rd Last 3rd 2nd 1st
+2358 1st 2nd 3rd Last 3rd 2nd 1st
+2359 1st 2nd 3rd Last 3rd 2nd 1st
+2360 1st 2nd 3rd Last 3rd 2nd 1st
+2361 1st 2nd 3rd Last 3rd 2nd 1st
+2362 1st 2nd 3rd Last 3rd 2nd 1st
+2363 1st 2nd 3rd Last 3rd 2nd 1st
+2364 1st 2nd 3rd Last 3rd 2nd 1st
+2365 1st 2nd 3rd Last 3rd 2nd 1st
+2366 1st 2nd 3rd Last 3rd 2nd 1st
+2367 1st 2nd 3rd Last 3rd 2nd 1st
+2368 1st 2nd 3rd Last 3rd 2nd 1st
+2369 1st 2nd 3rd Last 3rd 2nd 1st
+2370 1st 2nd 3rd Last 3rd 2nd 1st
+2371 1st 2nd 3rd Last 3rd 2nd 1st
+2372 1st 2nd 3rd Last 3rd 2nd 1st
+2373 1st 2nd 3rd Last 3rd 2nd 1st
+2374 1st 2nd 3rd Last 3rd 2nd 1st
+2375 1st 2nd 3rd Last 3rd 2nd 1st
+2376 1st 2nd 3rd Last 3rd 2nd 1st
+2377 1st 2nd 3rd Last 3rd 2nd 1st
+2378 1st 2nd 3rd Last 3rd 2nd 1st
+2379 1st 2nd 3rd Last 3rd 2nd 1st
+2380 1st 2nd 3rd Last 3rd 2nd 1st
+2381 1st 2nd 3rd Last 3rd 2nd 1st
+2382 1st 2nd 3rd Last 3rd 2nd 1st
+2383 1st 2nd 3rd Last 3rd 2nd 1st
+2384 1st 2nd 3rd Last 3rd 2nd 1st
+2385 1st 2nd 3rd Last 3rd 2nd 1st
+2386 1st 2nd 3rd Last 3rd 2nd 1st
+2387 1st 2nd 3rd Last 3rd 2nd 1st
+2388 1st 2nd 3rd Last 3rd 2nd 1st
+2389 1st 2nd 3rd Last 3rd 2nd 1st
+2390 1st 2nd 3rd Last 3rd 2nd 1st
+2391 1st 2nd 3rd Last 3rd 2nd 1st
+2392 1st 2nd 3rd Last 3rd 2nd 1st
+2393 1st 2nd 3rd Last 3rd 2nd 1st
+2394 1st 2nd 3rd Last 3rd 2nd 1st
+2395 1st 2nd 3rd Last 3rd 2nd 1st
+2396 1st 2nd 3rd Last 3rd 2nd 1st
+2397 1st 2nd 3rd Last 3rd 2nd 1st
+2398 1st 2nd 3rd Last 3rd 2nd 1st
+2399 1st 2nd 3rd Last 3rd 2nd 1st
+2400 1st 2nd 3rd Last 3rd 2nd 1st
+2401 1st 2nd 3rd Last 3rd 2nd 1st
+2402 1st 2nd 3rd Last 3rd 2nd 1st
+2403 1st 2nd 3rd Last 3rd 2nd 1st
+2404 1st 2nd 3rd Last 3rd 2nd 1st
+2405 1st 2nd 3rd Last 3rd 2nd 1st
+2406 1st 2nd 3rd Last 3rd 2nd 1st
+2407 1st 2nd 3rd Last 3rd 2nd 1st
+2408 1st 2nd 3rd Last 3rd 2nd 1st
+2409 1st 2nd 3rd Last 3rd 2nd 1st
+2410 1st 2nd 3rd Last 3rd 2nd 1st
+2411 1st 2nd 3rd Last 3rd 2nd 1st
+2412 1st 2nd 3rd Last 3rd 2nd 1st
+2413 1st 2nd 3rd Last 3rd 2nd 1st
+2414 1st 2nd 3rd Last 3rd 2nd 1st
+2415 1st 2nd 3rd Last 3rd 2nd 1st
+2416 1st 2nd 3rd Last 3rd 2nd 1st
+2417 1st 2nd 3rd Last 3rd 2nd 1st
+2418 1st 2nd 3rd Last 3rd 2nd 1st
+2419 1st 2nd 3rd Last 3rd 2nd 1st
+2420 1st 2nd 3rd Last 3rd 2nd 1st
+2421 1st 2nd 3rd Last 3rd 2nd 1st
+2422 1st 2nd 3rd Last 3rd 2nd 1st
+2423 1st 2nd 3rd Last 3rd 2nd 1st
+2424 1st 2nd 3rd Last 3rd 2nd 1st
+2425 1st 2nd 3rd Last 3rd 2nd 1st
+2426 1st 2nd 3rd Last 3rd 2nd 1st
+2427 1st 2nd 3rd Last 3rd 2nd 1st
+2428 1st 2nd 3rd Last 3rd 2nd 1st
+2429 1st 2nd 3rd Last 3rd 2nd 1st
+2430 1st 2nd 3rd Last 3rd 2nd 1st
+2431 1st 2nd 3rd Last 3rd 2nd 1st
+2432 1st 2nd 3rd Last 3rd 2nd 1st
+2433 1st 2nd 3rd Last 3rd 2nd 1st
+2434 1st 2nd 3rd Last 3rd 2nd 1st
+2435 1st 2nd 3rd Last 3rd 2nd 1st
+2436 1st 2nd 3rd Last 3rd 2nd 1st
+2437 1st 2nd 3rd Last 3rd 2nd 1st
+2438 1st 2nd 3rd Last 3rd 2nd 1st
+2439 1st 2nd 3rd Last 3rd 2nd 1st
+2440 1st 2nd 3rd Last 3rd 2nd 1st
+2441 1st 2nd 3rd Last 3rd 2nd 1st
+2442 1st 2nd 3rd Last 3rd 2nd 1st
+2443 1st 2nd 3rd Last 3rd 2nd 1st
+2444 1st 2nd 3rd Last 3rd 2nd 1st
+2445 1st 2nd 3rd Last 3rd 2nd 1st
+2446 1st 2nd 3rd Last 3rd 2nd 1st
+2447 1st 2nd 3rd Last 3rd 2nd 1st
+2448 1st 2nd 3rd Last 3rd 2nd 1st
+2449 1st 2nd 3rd Last 3rd 2nd 1st
+2450 1st 2nd 3rd Last 3rd 2nd 1st
+2451 1st 2nd 3rd Last 3rd 2nd 1st
+2452 1st 2nd 3rd Last 3rd 2nd 1st
+2453 1st 2nd 3rd Last 3rd 2nd 1st
+2454 1st 2nd 3rd Last 3rd 2nd 1st
+2455 1st 2nd 3rd Last 3rd 2nd 1st
+2456 1st 2nd 3rd Last 3rd 2nd 1st
+2457 1st 2nd 3rd Last 3rd 2nd 1st
+2458 1st 2nd 3rd Last 3rd 2nd 1st
+2459 1st 2nd 3rd Last 3rd 2nd 1st
+2460 1st 2nd 3rd Last 3rd 2nd 1st
+2461 1st 2nd 3rd Last 3rd 2nd 1st
+2462 1st 2nd 3rd Last 3rd 2nd 1st
+2463 1st 2nd 3rd Last 3rd 2nd 1st
+2464 1st 2nd 3rd Last 3rd 2nd 1st
+2465 1st 2nd 3rd Last 3rd 2nd 1st
+2466 1st 2nd 3rd Last 3rd 2nd 1st
+2467 1st 2nd 3rd Last 3rd 2nd 1st
+2468 1st 2nd 3rd Last 3rd 2nd 1st
+2469 1st 2nd 3rd Last 3rd 2nd 1st
+2470 1st 2nd 3rd Last 3rd 2nd 1st
+2471 1st 2nd 3rd Last 3rd 2nd 1st
+2472 1st 2nd 3rd Last 3rd 2nd 1st
+2473 1st 2nd 3rd Last 3rd 2nd 1st
+2474 1st 2nd 3rd Last 3rd 2nd 1st
+2475 1st 2nd 3rd Last 3rd 2nd 1st
+2476 1st 2nd 3rd Last 3rd 2nd 1st
+2477 1st 2nd 3rd Last 3rd 2nd 1st
+2478 1st 2nd 3rd Last 3rd 2nd 1st
+2479 1st 2nd 3rd Last 3rd 2nd 1st
+2480 1st 2nd 3rd Last 3rd 2nd 1st
+2481 1st 2nd 3rd Last 3rd 2nd 1st
+2482 1st 2nd 3rd Last 3rd 2nd 1st
+2483 1st 2nd 3rd Last 3rd 2nd 1st
+2484 1st 2nd 3rd Last 3rd 2nd 1st
+2485 1st 2nd 3rd Last 3rd 2nd 1st
+2486 1st 2nd 3rd Last 3rd 2nd 1st
+2487 1st 2nd 3rd Last 3rd 2nd 1st
+2488 1st 2nd 3rd Last 3rd 2nd 1st
+2489 1st 2nd 3rd Last 3rd 2nd 1st
+2490 1st 2nd 3rd Last 3rd 2nd 1st
+2491 1st 2nd 3rd Last 3rd 2nd 1st
+2492 1st 2nd 3rd Last 3rd 2nd 1st
+2493 1st 2nd 3rd Last 3rd 2nd 1st
+2494 1st 2nd 3rd Last 3rd 2nd 1st
+2495 1st 2nd 3rd Last 3rd 2nd 1st
+2496 1st 2nd 3rd Last 3rd 2nd 1st
+2497 1st 2nd 3rd Last 3rd 2nd 1st
+2498 1st 2nd 3rd Last 3rd 2nd 1st
+2499 1st 2nd 3rd Last 3rd 2nd 1st
+2500 1st 2nd 3rd Last 3rd 2nd 1st
+2501 1st 2nd 3rd Last 3rd 2nd 1st
+2502 1st 2nd 3rd Last 3rd 2nd 1st
+2503 1st 2nd 3rd Last 3rd 2nd 1st
+2504 1st 2nd 3rd Last 3rd 2nd 1st
+2505 1st 2nd 3rd Last 3rd 2nd 1st
+2506 1st 2nd 3rd Last 3rd 2nd 1st
+2507 1st 2nd 3rd Last 3rd 2nd 1st
+2508 1st 2nd 3rd Last 3rd 2nd 1st
+2509 1st 2nd 3rd Last 3rd 2nd 1st
+2510 1st 2nd 3rd Last 3rd 2nd 1st
+2511 1st 2nd 3rd Last 3rd 2nd 1st
+2512 1st 2nd 3rd Last 3rd 2nd 1st
+2513 1st 2nd 3rd Last 3rd 2nd 1st
+2514 1st 2nd 3rd Last 3rd 2nd 1st
+2515 1st 2nd 3rd Last 3rd 2nd 1st
+2516 1st 2nd 3rd Last 3rd 2nd 1st
+2517 1st 2nd 3rd Last 3rd 2nd 1st
+2518 1st 2nd 3rd Last 3rd 2nd 1st
+2519 1st 2nd 3rd Last 3rd 2nd 1st
+2520 1st 2nd 3rd Last 3rd 2nd 1st
+2521 1st 2nd 3rd Last 3rd 2nd 1st
+2522 1st 2nd 3rd Last 3rd 2nd 1st
+2523 1st 2nd 3rd Last 3rd 2nd 1st
+2524 1st 2nd 3rd Last 3rd 2nd 1st
+2525 1st 2nd 3rd Last 3rd 2nd 1st
+2526 1st 2nd 3rd Last 3rd 2nd 1st
+2527 1st 2nd 3rd Last 3rd 2nd 1st
+2528 1st 2nd 3rd Last 3rd 2nd 1st
+2529 1st 2nd 3rd Last 3rd 2nd 1st
+2530 1st 2nd 3rd Last 3rd 2nd 1st
+2531 1st 2nd 3rd Last 3rd 2nd 1st
+2532 1st 2nd 3rd Last 3rd 2nd 1st
+2533 1st 2nd 3rd Last 3rd 2nd 1st
+2534 1st 2nd 3rd Last 3rd 2nd 1st
+2535 1st 2nd 3rd Last 3rd 2nd 1st
+2536 1st 2nd 3rd Last 3rd 2nd 1st
+2537 1st 2nd 3rd Last 3rd 2nd 1st
+2538 1st 2nd 3rd Last 3rd 2nd 1st
+2539 1st 2nd 3rd Last 3rd 2nd 1st
+2540 1st 2nd 3rd Last 3rd 2nd 1st
+2541 1st 2nd 3rd Last 3rd 2nd 1st
+2542 1st 2nd 3rd Last 3rd 2nd 1st
+2543 1st 2nd 3rd Last 3rd 2nd 1st
+2544 1st 2nd 3rd Last 3rd 2nd 1st
+2545 1st 2nd 3rd Last 3rd 2nd 1st
+2546 1st 2nd 3rd Last 3rd 2nd 1st
+2547 1st 2nd 3rd Last 3rd 2nd 1st
+2548 1st 2nd 3rd Last 3rd 2nd 1st
+2549 1st 2nd 3rd Last 3rd 2nd 1st
+2550 1st 2nd 3rd Last 3rd 2nd 1st
+2551 1st 2nd 3rd Last 3rd 2nd 1st
+2552 1st 2nd 3rd Last 3rd 2nd 1st
+2553 1st 2nd 3rd Last 3rd 2nd 1st
+2554 1st 2nd 3rd Last 3rd 2nd 1st
+2555 1st 2nd 3rd Last 3rd 2nd 1st
+2556 1st 2nd 3rd Last 3rd 2nd 1st
+2557 1st 2nd 3rd Last 3rd 2nd 1st
+2558 1st 2nd 3rd Last 3rd 2nd 1st
+2559 1st 2nd 3rd Last 3rd 2nd 1st
+2560 1st 2nd 3rd Last 3rd 2nd 1st
+2561 1st 2nd 3rd Last 3rd 2nd 1st
+2562 1st 2nd 3rd Last 3rd 2nd 1st
+2563 1st 2nd 3rd Last 3rd 2nd 1st
+2564 1st 2nd 3rd Last 3rd 2nd 1st
+2565 1st 2nd 3rd Last 3rd 2nd 1st
+2566 1st 2nd 3rd Last 3rd 2nd 1st
+2567 1st 2nd 3rd Last 3rd 2nd 1st
+2568 1st 2nd 3rd Last 3rd 2nd 1st
+2569 1st 2nd 3rd Last 3rd 2nd 1st
+2570 1st 2nd 3rd Last 3rd 2nd 1st
+2571 1st 2nd 3rd Last 3rd 2nd 1st
+2572 1st 2nd 3rd Last 3rd 2nd 1st
+2573 1st 2nd 3rd Last 3rd 2nd 1st
+2574 1st 2nd 3rd Last 3rd 2nd 1st
+2575 1st 2nd 3rd Last 3rd 2nd 1st
+2576 1st 2nd 3rd Last 3rd 2nd 1st
+2577 1st 2nd 3rd Last 3rd 2nd 1st
+2578 1st 2nd 3rd Last 3rd 2nd 1st
+2579 1st 2nd 3rd Last 3rd 2nd 1st
+2580 1st 2nd 3rd Last 3rd 2nd 1st
+2581 1st 2nd 3rd Last 3rd 2nd 1st
+2582 1st 2nd 3rd Last 3rd 2nd 1st
+2583 1st 2nd 3rd Last 3rd 2nd 1st
+2584 1st 2nd 3rd Last 3rd 2nd 1st
+2585 1st 2nd 3rd Last 3rd 2nd 1st
+2586 1st 2nd 3rd Last 3rd 2nd 1st
+2587 1st 2nd 3rd Last 3rd 2nd 1st
+2588 1st 2nd 3rd Last 3rd 2nd 1st
+2589 1st 2nd 3rd Last 3rd 2nd 1st
+2590 1st 2nd 3rd Last 3rd 2nd 1st
+2591 1st 2nd 3rd Last 3rd 2nd 1st
+2592 1st 2nd 3rd Last 3rd 2nd 1st
+2593 1st 2nd 3rd Last 3rd 2nd 1st
+2594 1st 2nd 3rd Last 3rd 2nd 1st
+2595 1st 2nd 3rd Last 3rd 2nd 1st
+2596 1st 2nd 3rd Last 3rd 2nd 1st
+2597 1st 2nd 3rd Last 3rd 2nd 1st
+2598 1st 2nd 3rd Last 3rd 2nd 1st
+2599 1st 2nd 3rd Last 3rd 2nd 1st
+2600 1st 2nd 3rd Last 3rd 2nd 1st
+2601 1st 2nd 3rd Last 3rd 2nd 1st
+2602 1st 2nd 3rd Last 3rd 2nd 1st
+2603 1st 2nd 3rd Last 3rd 2nd 1st
+2604 1st 2nd 3rd Last 3rd 2nd 1st
+2605 1st 2nd 3rd Last 3rd 2nd 1st
+2606 1st 2nd 3rd Last 3rd 2nd 1st
+2607 1st 2nd 3rd Last 3rd 2nd 1st
+2608 1st 2nd 3rd Last 3rd 2nd 1st
+2609 1st 2nd 3rd Last 3rd 2nd 1st
+2610 1st 2nd 3rd Last 3rd 2nd 1st
+2611 1st 2nd 3rd Last 3rd 2nd 1st
+2612 1st 2nd 3rd Last 3rd 2nd 1st
+2613 1st 2nd 3rd Last 3rd 2nd 1st
+2614 1st 2nd 3rd Last 3rd 2nd 1st
+2615 1st 2nd 3rd Last 3rd 2nd 1st
+2616 1st 2nd 3rd Last 3rd 2nd 1st
+2617 1st 2nd 3rd Last 3rd 2nd 1st
+2618 1st 2nd 3rd Last 3rd 2nd 1st
+2619 1st 2nd 3rd Last 3rd 2nd 1st
+2620 1st 2nd 3rd Last 3rd 2nd 1st
+2621 1st 2nd 3rd Last 3rd 2nd 1st
+2622 1st 2nd 3rd Last 3rd 2nd 1st
+2623 1st 2nd 3rd Last 3rd 2nd 1st
+2624 1st 2nd 3rd Last 3rd 2nd 1st
+2625 1st 2nd 3rd Last 3rd 2nd 1st
+2626 1st 2nd 3rd Last 3rd 2nd 1st
+2627 1st 2nd 3rd Last 3rd 2nd 1st
+2628 1st 2nd 3rd Last 3rd 2nd 1st
+2629 1st 2nd 3rd Last 3rd 2nd 1st
+2630 1st 2nd 3rd Last 3rd 2nd 1st
+2631 1st 2nd 3rd Last 3rd 2nd 1st
+2632 1st 2nd 3rd Last 3rd 2nd 1st
+2633 1st 2nd 3rd Last 3rd 2nd 1st
+2634 1st 2nd 3rd Last 3rd 2nd 1st
+2635 1st 2nd 3rd Last 3rd 2nd 1st
+2636 1st 2nd 3rd Last 3rd 2nd 1st
+2637 1st 2nd 3rd Last 3rd 2nd 1st
+2638 1st 2nd 3rd Last 3rd 2nd 1st
+2639 1st 2nd 3rd Last 3rd 2nd 1st
+2640 1st 2nd 3rd Last 3rd 2nd 1st
+2641 1st 2nd 3rd Last 3rd 2nd 1st
+2642 1st 2nd 3rd Last 3rd 2nd 1st
+2643 1st 2nd 3rd Last 3rd 2nd 1st
+2644 1st 2nd 3rd Last 3rd 2nd 1st
+2645 1st 2nd 3rd Last 3rd 2nd 1st
+2646 1st 2nd 3rd Last 3rd 2nd 1st
+2647 1st 2nd 3rd Last 3rd 2nd 1st
+2648 1st 2nd 3rd Last 3rd 2nd 1st
+2649 1st 2nd 3rd Last 3rd 2nd 1st
+2650 1st 2nd 3rd Last 3rd 2nd 1st
+2651 1st 2nd 3rd Last 3rd 2nd 1st
+2652 1st 2nd 3rd Last 3rd 2nd 1st
+2653 1st 2nd 3rd Last 3rd 2nd 1st
+2654 1st 2nd 3rd Last 3rd 2nd 1st
+2655 1st 2nd 3rd Last 3rd 2nd 1st
+2656 1st 2nd 3rd Last 3rd 2nd 1st
+2657 1st 2nd 3rd Last 3rd 2nd 1st
+2658 1st 2nd 3rd Last 3rd 2nd 1st
+2659 1st 2nd 3rd Last 3rd 2nd 1st
+2660 1st 2nd 3rd Last 3rd 2nd 1st
+2661 1st 2nd 3rd Last 3rd 2nd 1st
+2662 1st 2nd 3rd Last 3rd 2nd 1st
+2663 1st 2nd 3rd Last 3rd 2nd 1st
+2664 1st 2nd 3rd Last 3rd 2nd 1st
+2665 1st 2nd 3rd Last 3rd 2nd 1st
+2666 1st 2nd 3rd Last 3rd 2nd 1st
+2667 1st 2nd 3rd Last 3rd 2nd 1st
+2668 1st 2nd 3rd Last 3rd 2nd 1st
+2669 1st 2nd 3rd Last 3rd 2nd 1st
+2670 1st 2nd 3rd Last 3rd 2nd 1st
+2671 1st 2nd 3rd Last 3rd 2nd 1st
+2672 1st 2nd 3rd Last 3rd 2nd 1st
+2673 1st 2nd 3rd Last 3rd 2nd 1st
+2674 1st 2nd 3rd Last 3rd 2nd 1st
+2675 1st 2nd 3rd Last 3rd 2nd 1st
+2676 1st 2nd 3rd Last 3rd 2nd 1st
+2677 1st 2nd 3rd Last 3rd 2nd 1st
+2678 1st 2nd 3rd Last 3rd 2nd 1st
+2679 1st 2nd 3rd Last 3rd 2nd 1st
+2680 1st 2nd 3rd Last 3rd 2nd 1st
+2681 1st 2nd 3rd Last 3rd 2nd 1st
+2682 1st 2nd 3rd Last 3rd 2nd 1st
+2683 1st 2nd 3rd Last 3rd 2nd 1st
+2684 1st 2nd 3rd Last 3rd 2nd 1st
+2685 1st 2nd 3rd Last 3rd 2nd 1st
+2686 1st 2nd 3rd Last 3rd 2nd 1st
+2687 1st 2nd 3rd Last 3rd 2nd 1st
+2688 1st 2nd 3rd Last 3rd 2nd 1st
+2689 1st 2nd 3rd Last 3rd 2nd 1st
+2690 1st 2nd 3rd Last 3rd 2nd 1st
+2691 1st 2nd 3rd Last 3rd 2nd 1st
+2692 1st 2nd 3rd Last 3rd 2nd 1st
+2693 1st 2nd 3rd Last 3rd 2nd 1st
+2694 1st 2nd 3rd Last 3rd 2nd 1st
+2695 1st 2nd 3rd Last 3rd 2nd 1st
+2696 1st 2nd 3rd Last 3rd 2nd 1st
+2697 1st 2nd 3rd Last 3rd 2nd 1st
+2698 1st 2nd 3rd Last 3rd 2nd 1st
+2699 1st 2nd 3rd Last 3rd 2nd 1st
+2700 1st 2nd 3rd Last 3rd 2nd 1st
+2701 1st 2nd 3rd Last 3rd 2nd 1st
+2702 1st 2nd 3rd Last 3rd 2nd 1st
+2703 1st 2nd 3rd Last 3rd 2nd 1st
+2704 1st 2nd 3rd Last 3rd 2nd 1st
+2705 1st 2nd 3rd Last 3rd 2nd 1st
+2706 1st 2nd 3rd Last 3rd 2nd 1st
+2707 1st 2nd 3rd Last 3rd 2nd 1st
+2708 1st 2nd 3rd Last 3rd 2nd 1st
+2709 1st 2nd 3rd Last 3rd 2nd 1st
+2710 1st 2nd 3rd Last 3rd 2nd 1st
+2711 1st 2nd 3rd Last 3rd 2nd 1st
+2712 1st 2nd 3rd Last 3rd 2nd 1st
+2713 1st 2nd 3rd Last 3rd 2nd 1st
+2714 1st 2nd 3rd Last 3rd 2nd 1st
+2715 1st 2nd 3rd Last 3rd 2nd 1st
+2716 1st 2nd 3rd Last 3rd 2nd 1st
+2717 1st 2nd 3rd Last 3rd 2nd 1st
+2718 1st 2nd 3rd Last 3rd 2nd 1st
+2719 1st 2nd 3rd Last 3rd 2nd 1st
+2720 1st 2nd 3rd Last 3rd 2nd 1st
+2721 1st 2nd 3rd Last 3rd 2nd 1st
+2722 1st 2nd 3rd Last 3rd 2nd 1st
+2723 1st 2nd 3rd Last 3rd 2nd 1st
+2724 1st 2nd 3rd Last 3rd 2nd 1st
+2725 1st 2nd 3rd Last 3rd 2nd 1st
+2726 1st 2nd 3rd Last 3rd 2nd 1st
+2727 1st 2nd 3rd Last 3rd 2nd 1st
+2728 1st 2nd 3rd Last 3rd 2nd 1st
+2729 1st 2nd 3rd Last 3rd 2nd 1st
+2730 1st 2nd 3rd Last 3rd 2nd 1st
+2731 1st 2nd 3rd Last 3rd 2nd 1st
+2732 1st 2nd 3rd Last 3rd 2nd 1st
+2733 1st 2nd 3rd Last 3rd 2nd 1st
+2734 1st 2nd 3rd Last 3rd 2nd 1st
+2735 1st 2nd 3rd Last 3rd 2nd 1st
+2736 1st 2nd 3rd Last 3rd 2nd 1st
+2737 1st 2nd 3rd Last 3rd 2nd 1st
+2738 1st 2nd 3rd Last 3rd 2nd 1st
+2739 1st 2nd 3rd Last 3rd 2nd 1st
+2740 1st 2nd 3rd Last 3rd 2nd 1st
+2741 1st 2nd 3rd Last 3rd 2nd 1st
+2742 1st 2nd 3rd Last 3rd 2nd 1st
+2743 1st 2nd 3rd Last 3rd 2nd 1st
+2744 1st 2nd 3rd Last 3rd 2nd 1st
+2745 1st 2nd 3rd Last 3rd 2nd 1st
+2746 1st 2nd 3rd Last 3rd 2nd 1st
+2747 1st 2nd 3rd Last 3rd 2nd 1st
+2748 1st 2nd 3rd Last 3rd 2nd 1st
+2749 1st 2nd 3rd Last 3rd 2nd 1st
+2750 1st 2nd 3rd Last 3rd 2nd 1st
+2751 1st 2nd 3rd Last 3rd 2nd 1st
+2752 1st 2nd 3rd Last 3rd 2nd 1st
+2753 1st 2nd 3rd Last 3rd 2nd 1st
+2754 1st 2nd 3rd Last 3rd 2nd 1st
+2755 1st 2nd 3rd Last 3rd 2nd 1st
+2756 1st 2nd 3rd Last 3rd 2nd 1st
+2757 1st 2nd 3rd Last 3rd 2nd 1st
+2758 1st 2nd 3rd Last 3rd 2nd 1st
+2759 1st 2nd 3rd Last 3rd 2nd 1st
+2760 1st 2nd 3rd Last 3rd 2nd 1st
+2761 1st 2nd 3rd Last 3rd 2nd 1st
+2762 1st 2nd 3rd Last 3rd 2nd 1st
+2763 1st 2nd 3rd Last 3rd 2nd 1st
+2764 1st 2nd 3rd Last 3rd 2nd 1st
+2765 1st 2nd 3rd Last 3rd 2nd 1st
+2766 1st 2nd 3rd Last 3rd 2nd 1st
+2767 1st 2nd 3rd Last 3rd 2nd 1st
+2768 1st 2nd 3rd Last 3rd 2nd 1st
+2769 1st 2nd 3rd Last 3rd 2nd 1st
+2770 1st 2nd 3rd Last 3rd 2nd 1st
+2771 1st 2nd 3rd Last 3rd 2nd 1st
+2772 1st 2nd 3rd Last 3rd 2nd 1st
+2773 1st 2nd 3rd Last 3rd 2nd 1st
+2774 1st 2nd 3rd Last 3rd 2nd 1st
+2775 1st 2nd 3rd Last 3rd 2nd 1st
+2776 1st 2nd 3rd Last 3rd 2nd 1st
+2777 1st 2nd 3rd Last 3rd 2nd 1st
+2778 1st 2nd 3rd Last 3rd 2nd 1st
+2779 1st 2nd 3rd Last 3rd 2nd 1st
+2780 1st 2nd 3rd Last 3rd 2nd 1st
+2781 1st 2nd 3rd Last 3rd 2nd 1st
+2782 1st 2nd 3rd Last 3rd 2nd 1st
+2783 1st 2nd 3rd Last 3rd 2nd 1st
+2784 1st 2nd 3rd Last 3rd 2nd 1st
+2785 1st 2nd 3rd Last 3rd 2nd 1st
+2786 1st 2nd 3rd Last 3rd 2nd 1st
+2787 1st 2nd 3rd Last 3rd 2nd 1st
+2788 1st 2nd 3rd Last 3rd 2nd 1st
+2789 1st 2nd 3rd Last 3rd 2nd 1st
+2790 1st 2nd 3rd Last 3rd 2nd 1st
+2791 1st 2nd 3rd Last 3rd 2nd 1st
+2792 1st 2nd 3rd Last 3rd 2nd 1st
+2793 1st 2nd 3rd Last 3rd 2nd 1st
+2794 1st 2nd 3rd Last 3rd 2nd 1st
+2795 1st 2nd 3rd Last 3rd 2nd 1st
+2796 1st 2nd 3rd Last 3rd 2nd 1st
+2797 1st 2nd 3rd Last 3rd 2nd 1st
+2798 1st 2nd 3rd Last 3rd 2nd 1st
+2799 1st 2nd 3rd Last 3rd 2nd 1st
+2800 1st 2nd 3rd Last 3rd 2nd 1st
+2801 1st 2nd 3rd Last 3rd 2nd 1st
+2802 1st 2nd 3rd Last 3rd 2nd 1st
+2803 1st 2nd 3rd Last 3rd 2nd 1st
+2804 1st 2nd 3rd Last 3rd 2nd 1st
+2805 1st 2nd 3rd Last 3rd 2nd 1st
+2806 1st 2nd 3rd Last 3rd 2nd 1st
+2807 1st 2nd 3rd Last 3rd 2nd 1st
+2808 1st 2nd 3rd Last 3rd 2nd 1st
+2809 1st 2nd 3rd Last 3rd 2nd 1st
+2810 1st 2nd 3rd Last 3rd 2nd 1st
+2811 1st 2nd 3rd Last 3rd 2nd 1st
+2812 1st 2nd 3rd Last 3rd 2nd 1st
+2813 1st 2nd 3rd Last 3rd 2nd 1st
+2814 1st 2nd 3rd Last 3rd 2nd 1st
+2815 1st 2nd 3rd Last 3rd 2nd 1st
+2816 1st 2nd 3rd Last 3rd 2nd 1st
+2817 1st 2nd 3rd Last 3rd 2nd 1st
+2818 1st 2nd 3rd Last 3rd 2nd 1st
+2819 1st 2nd 3rd Last 3rd 2nd 1st
+2820 1st 2nd 3rd Last 3rd 2nd 1st
+2821 1st 2nd 3rd Last 3rd 2nd 1st
+2822 1st 2nd 3rd Last 3rd 2nd 1st
+2823 1st 2nd 3rd Last 3rd 2nd 1st
+2824 1st 2nd 3rd Last 3rd 2nd 1st
+2825 1st 2nd 3rd Last 3rd 2nd 1st
+2826 1st 2nd 3rd Last 3rd 2nd 1st
+2827 1st 2nd 3rd Last 3rd 2nd 1st
+2828 1st 2nd 3rd Last 3rd 2nd 1st
+2829 1st 2nd 3rd Last 3rd 2nd 1st
+2830 1st 2nd 3rd Last 3rd 2nd 1st
+2831 1st 2nd 3rd Last 3rd 2nd 1st
+2832 1st 2nd 3rd Last 3rd 2nd 1st
+2833 1st 2nd 3rd Last 3rd 2nd 1st
+2834 1st 2nd 3rd Last 3rd 2nd 1st
+2835 1st 2nd 3rd Last 3rd 2nd 1st
+2836 1st 2nd 3rd Last 3rd 2nd 1st
+2837 1st 2nd 3rd Last 3rd 2nd 1st
+2838 1st 2nd 3rd Last 3rd 2nd 1st
+2839 1st 2nd 3rd Last 3rd 2nd 1st
+2840 1st 2nd 3rd Last 3rd 2nd 1st
+2841 1st 2nd 3rd Last 3rd 2nd 1st
+2842 1st 2nd 3rd Last 3rd 2nd 1st
+2843 1st 2nd 3rd Last 3rd 2nd 1st
+2844 1st 2nd 3rd Last 3rd 2nd 1st
+2845 1st 2nd 3rd Last 3rd 2nd 1st
+2846 1st 2nd 3rd Last 3rd 2nd 1st
+2847 1st 2nd 3rd Last 3rd 2nd 1st
+2848 1st 2nd 3rd Last 3rd 2nd 1st
+2849 1st 2nd 3rd Last 3rd 2nd 1st
+2850 1st 2nd 3rd Last 3rd 2nd 1st
+2851 1st 2nd 3rd Last 3rd 2nd 1st
+2852 1st 2nd 3rd Last 3rd 2nd 1st
+2853 1st 2nd 3rd Last 3rd 2nd 1st
+2854 1st 2nd 3rd Last 3rd 2nd 1st
+2855 1st 2nd 3rd Last 3rd 2nd 1st
+2856 1st 2nd 3rd Last 3rd 2nd 1st
+2857 1st 2nd 3rd Last 3rd 2nd 1st
+2858 1st 2nd 3rd Last 3rd 2nd 1st
+2859 1st 2nd 3rd Last 3rd 2nd 1st
+2860 1st 2nd 3rd Last 3rd 2nd 1st
+2861 1st 2nd 3rd Last 3rd 2nd 1st
+2862 1st 2nd 3rd Last 3rd 2nd 1st
+2863 1st 2nd 3rd Last 3rd 2nd 1st
+2864 1st 2nd 3rd Last 3rd 2nd 1st
+2865 1st 2nd 3rd Last 3rd 2nd 1st
+2866 1st 2nd 3rd Last 3rd 2nd 1st
+2867 1st 2nd 3rd Last 3rd 2nd 1st
+2868 1st 2nd 3rd Last 3rd 2nd 1st
+2869 1st 2nd 3rd Last 3rd 2nd 1st
+2870 1st 2nd 3rd Last 3rd 2nd 1st
+2871 1st 2nd 3rd Last 3rd 2nd 1st
+2872 1st 2nd 3rd Last 3rd 2nd 1st
+2873 1st 2nd 3rd Last 3rd 2nd 1st
+2874 1st 2nd 3rd Last 3rd 2nd 1st
+2875 1st 2nd 3rd Last 3rd 2nd 1st
+2876 1st 2nd 3rd Last 3rd 2nd 1st
+2877 1st 2nd 3rd Last 3rd 2nd 1st
+2878 1st 2nd 3rd Last 3rd 2nd 1st
+2879 1st 2nd 3rd Last 3rd 2nd 1st
+2880 1st 2nd 3rd Last 3rd 2nd 1st
+2881 1st 2nd 3rd Last 3rd 2nd 1st
+2882 1st 2nd 3rd Last 3rd 2nd 1st
+2883 1st 2nd 3rd Last 3rd 2nd 1st
+2884 1st 2nd 3rd Last 3rd 2nd 1st
+2885 1st 2nd 3rd Last 3rd 2nd 1st
+2886 1st 2nd 3rd Last 3rd 2nd 1st
+2887 1st 2nd 3rd Last 3rd 2nd 1st
+2888 1st 2nd 3rd Last 3rd 2nd 1st
+2889 1st 2nd 3rd Last 3rd 2nd 1st
+2890 1st 2nd 3rd Last 3rd 2nd 1st
+2891 1st 2nd 3rd Last 3rd 2nd 1st
+2892 1st 2nd 3rd Last 3rd 2nd 1st
+2893 1st 2nd 3rd Last 3rd 2nd 1st
+2894 1st 2nd 3rd Last 3rd 2nd 1st
+2895 1st 2nd 3rd Last 3rd 2nd 1st
+2896 1st 2nd 3rd Last 3rd 2nd 1st
+2897 1st 2nd 3rd Last 3rd 2nd 1st
+2898 1st 2nd 3rd Last 3rd 2nd 1st
+2899 1st 2nd 3rd Last 3rd 2nd 1st
+2900 1st 2nd 3rd Last 3rd 2nd 1st
+2901 1st 2nd 3rd Last 3rd 2nd 1st
+2902 1st 2nd 3rd Last 3rd 2nd 1st
+2903 1st 2nd 3rd Last 3rd 2nd 1st
+2904 1st 2nd 3rd Last 3rd 2nd 1st
+2905 1st 2nd 3rd Last 3rd 2nd 1st
+2906 1st 2nd 3rd Last 3rd 2nd 1st
+2907 1st 2nd 3rd Last 3rd 2nd 1st
+2908 1st 2nd 3rd Last 3rd 2nd 1st
+2909 1st 2nd 3rd Last 3rd 2nd 1st
+2910 1st 2nd 3rd Last 3rd 2nd 1st
+2911 1st 2nd 3rd Last 3rd 2nd 1st
+2912 1st 2nd 3rd Last 3rd 2nd 1st
+2913 1st 2nd 3rd Last 3rd 2nd 1st
+2914 1st 2nd 3rd Last 3rd 2nd 1st
+2915 1st 2nd 3rd Last 3rd 2nd 1st
+2916 1st 2nd 3rd Last 3rd 2nd 1st
+2917 1st 2nd 3rd Last 3rd 2nd 1st
+2918 1st 2nd 3rd Last 3rd 2nd 1st
+2919 1st 2nd 3rd Last 3rd 2nd 1st
+2920 1st 2nd 3rd Last 3rd 2nd 1st
+2921 1st 2nd 3rd Last 3rd 2nd 1st
+2922 1st 2nd 3rd Last 3rd 2nd 1st
+2923 1st 2nd 3rd Last 3rd 2nd 1st
+2924 1st 2nd 3rd Last 3rd 2nd 1st
+2925 1st 2nd 3rd Last 3rd 2nd 1st
+2926 1st 2nd 3rd Last 3rd 2nd 1st
+2927 1st 2nd 3rd Last 3rd 2nd 1st
+2928 1st 2nd 3rd Last 3rd 2nd 1st
+2929 1st 2nd 3rd Last 3rd 2nd 1st
+2930 1st 2nd 3rd Last 3rd 2nd 1st
+2931 1st 2nd 3rd Last 3rd 2nd 1st
+2932 1st 2nd 3rd Last 3rd 2nd 1st
+2933 1st 2nd 3rd Last 3rd 2nd 1st
+2934 1st 2nd 3rd Last 3rd 2nd 1st
+2935 1st 2nd 3rd Last 3rd 2nd 1st
+2936 1st 2nd 3rd Last 3rd 2nd 1st
+2937 1st 2nd 3rd Last 3rd 2nd 1st
+2938 1st 2nd 3rd Last 3rd 2nd 1st
+2939 1st 2nd 3rd Last 3rd 2nd 1st
+2940 1st 2nd 3rd Last 3rd 2nd 1st
+2941 1st 2nd 3rd Last 3rd 2nd 1st
+2942 1st 2nd 3rd Last 3rd 2nd 1st
+2943 1st 2nd 3rd Last 3rd 2nd 1st
+2944 1st 2nd 3rd Last 3rd 2nd 1st
+2945 1st 2nd 3rd Last 3rd 2nd 1st
+2946 1st 2nd 3rd Last 3rd 2nd 1st
+2947 1st 2nd 3rd Last 3rd 2nd 1st
+2948 1st 2nd 3rd Last 3rd 2nd 1st
+2949 1st 2nd 3rd Last 3rd 2nd 1st
+2950 1st 2nd 3rd Last 3rd 2nd 1st
+2951 1st 2nd 3rd Last 3rd 2nd 1st
+2952 1st 2nd 3rd Last 3rd 2nd 1st
+2953 1st 2nd 3rd Last 3rd 2nd 1st
+2954 1st 2nd 3rd Last 3rd 2nd 1st
+2955 1st 2nd 3rd Last 3rd 2nd 1st
+2956 1st 2nd 3rd Last 3rd 2nd 1st
+2957 1st 2nd 3rd Last 3rd 2nd 1st
+2958 1st 2nd 3rd Last 3rd 2nd 1st
+2959 1st 2nd 3rd Last 3rd 2nd 1st
+2960 1st 2nd 3rd Last 3rd 2nd 1st
+2961 1st 2nd 3rd Last 3rd 2nd 1st
+2962 1st 2nd 3rd Last 3rd 2nd 1st
+2963 1st 2nd 3rd Last 3rd 2nd 1st
+2964 1st 2nd 3rd Last 3rd 2nd 1st
+2965 1st 2nd 3rd Last 3rd 2nd 1st
+2966 1st 2nd 3rd Last 3rd 2nd 1st
+2967 1st 2nd 3rd Last 3rd 2nd 1st
+2968 1st 2nd 3rd Last 3rd 2nd 1st
+2969 1st 2nd 3rd Last 3rd 2nd 1st
+2970 1st 2nd 3rd Last 3rd 2nd 1st
+2971 1st 2nd 3rd Last 3rd 2nd 1st
+2972 1st 2nd 3rd Last 3rd 2nd 1st
+2973 1st 2nd 3rd Last 3rd 2nd 1st
+2974 1st 2nd 3rd Last 3rd 2nd 1st
+2975 1st 2nd 3rd Last 3rd 2nd 1st
+2976 1st 2nd 3rd Last 3rd 2nd 1st
+2977 1st 2nd 3rd Last 3rd 2nd 1st
+2978 1st 2nd 3rd Last 3rd 2nd 1st
+2979 1st 2nd 3rd Last 3rd 2nd 1st
+2980 1st 2nd 3rd Last 3rd 2nd 1st
+2981 1st 2nd 3rd Last 3rd 2nd 1st
+2982 1st 2nd 3rd Last 3rd 2nd 1st
+2983 1st 2nd 3rd Last 3rd 2nd 1st
+2984 1st 2nd 3rd Last 3rd 2nd 1st
+2985 1st 2nd 3rd Last 3rd 2nd 1st
+2986 1st 2nd 3rd Last 3rd 2nd 1st
+2987 1st 2nd 3rd Last 3rd 2nd 1st
+2988 1st 2nd 3rd Last 3rd 2nd 1st
+2989 1st 2nd 3rd Last 3rd 2nd 1st
+2990 1st 2nd 3rd Last 3rd 2nd 1st
+2991 1st 2nd 3rd Last 3rd 2nd 1st
+2992 1st 2nd 3rd Last 3rd 2nd 1st
+2993 1st 2nd 3rd Last 3rd 2nd 1st
+2994 1st 2nd 3rd Last 3rd 2nd 1st
+2995 1st 2nd 3rd Last 3rd 2nd 1st
+2996 1st 2nd 3rd Last 3rd 2nd 1st
+2997 1st 2nd 3rd Last 3rd 2nd 1st
+2998 1st 2nd 3rd Last 3rd 2nd 1st
+2999 1st 2nd 3rd Last 3rd 2nd 1st
+3000 1st 2nd 3rd Last 3rd 2nd 1st
+3001 1st 2nd 3rd Last 3rd 2nd 1st
+3002 1st 2nd 3rd Last 3rd 2nd 1st
+3003 1st 2nd 3rd Last 3rd 2nd 1st
+3004 1st 2nd 3rd Last 3rd 2nd 1st
+3005 1st 2nd 3rd Last 3rd 2nd 1st
+3006 1st 2nd 3rd Last 3rd 2nd 1st
+3007 1st 2nd 3rd Last 3rd 2nd 1st
+3008 1st 2nd 3rd Last 3rd 2nd 1st
+3009 1st 2nd 3rd Last 3rd 2nd 1st
+3010 1st 2nd 3rd Last 3rd 2nd 1st
+3011 1st 2nd 3rd Last 3rd 2nd 1st
+3012 1st 2nd 3rd Last 3rd 2nd 1st
+3013 1st 2nd 3rd Last 3rd 2nd 1st
+3014 1st 2nd 3rd Last 3rd 2nd 1st
+3015 1st 2nd 3rd Last 3rd 2nd 1st
+3016 1st 2nd 3rd Last 3rd 2nd 1st
+3017 1st 2nd 3rd Last 3rd 2nd 1st
+3018 1st 2nd 3rd Last 3rd 2nd 1st
+3019 1st 2nd 3rd Last 3rd 2nd 1st
+3020 1st 2nd 3rd Last 3rd 2nd 1st
+3021 1st 2nd 3rd Last 3rd 2nd 1st
+3022 1st 2nd 3rd Last 3rd 2nd 1st
+3023 1st 2nd 3rd Last 3rd 2nd 1st
+3024 1st 2nd 3rd Last 3rd 2nd 1st
+3025 1st 2nd 3rd Last 3rd 2nd 1st
+3026 1st 2nd 3rd Last 3rd 2nd 1st
+3027 1st 2nd 3rd Last 3rd 2nd 1st
+3028 1st 2nd 3rd Last 3rd 2nd 1st
+3029 1st 2nd 3rd Last 3rd 2nd 1st
+3030 1st 2nd 3rd Last 3rd 2nd 1st
+3031 1st 2nd 3rd Last 3rd 2nd 1st
+3032 1st 2nd 3rd Last 3rd 2nd 1st
+3033 1st 2nd 3rd Last 3rd 2nd 1st
+3034 1st 2nd 3rd Last 3rd 2nd 1st
+3035 1st 2nd 3rd Last 3rd 2nd 1st
+3036 1st 2nd 3rd Last 3rd 2nd 1st
+3037 1st 2nd 3rd Last 3rd 2nd 1st
+3038 1st 2nd 3rd Last 3rd 2nd 1st
+3039 1st 2nd 3rd Last 3rd 2nd 1st
+3040 1st 2nd 3rd Last 3rd 2nd 1st
+3041 1st 2nd 3rd Last 3rd 2nd 1st
+3042 1st 2nd 3rd Last 3rd 2nd 1st
+3043 1st 2nd 3rd Last 3rd 2nd 1st
+3044 1st 2nd 3rd Last 3rd 2nd 1st
+3045 1st 2nd 3rd Last 3rd 2nd 1st
+3046 1st 2nd 3rd Last 3rd 2nd 1st
+3047 1st 2nd 3rd Last 3rd 2nd 1st
+3048 1st 2nd 3rd Last 3rd 2nd 1st
+3049 1st 2nd 3rd Last 3rd 2nd 1st
+3050 1st 2nd 3rd Last 3rd 2nd 1st
+3051 1st 2nd 3rd Last 3rd 2nd 1st
+3052 1st 2nd 3rd Last 3rd 2nd 1st
+3053 1st 2nd 3rd Last 3rd 2nd 1st
+3054 1st 2nd 3rd Last 3rd 2nd 1st
+3055 1st 2nd 3rd Last 3rd 2nd 1st
+3056 1st 2nd 3rd Last 3rd 2nd 1st
+3057 1st 2nd 3rd Last 3rd 2nd 1st
+3058 1st 2nd 3rd Last 3rd 2nd 1st
+3059 1st 2nd 3rd Last 3rd 2nd 1st
+3060 1st 2nd 3rd Last 3rd 2nd 1st
+3061 1st 2nd 3rd Last 3rd 2nd 1st
+3062 1st 2nd 3rd Last 3rd 2nd 1st
+3063 1st 2nd 3rd Last 3rd 2nd 1st
+3064 1st 2nd 3rd Last 3rd 2nd 1st
+3065 1st 2nd 3rd Last 3rd 2nd 1st
+3066 1st 2nd 3rd Last 3rd 2nd 1st
+3067 1st 2nd 3rd Last 3rd 2nd 1st
+3068 1st 2nd 3rd Last 3rd 2nd 1st
+3069 1st 2nd 3rd Last 3rd 2nd 1st
+3070 1st 2nd 3rd Last 3rd 2nd 1st
+3071 1st 2nd 3rd Last 3rd 2nd 1st
+3072 1st 2nd 3rd Last 3rd 2nd 1st
+3073 1st 2nd 3rd Last 3rd 2nd 1st
+3074 1st 2nd 3rd Last 3rd 2nd 1st
+3075 1st 2nd 3rd Last 3rd 2nd 1st
+3076 1st 2nd 3rd Last 3rd 2nd 1st
+3077 1st 2nd 3rd Last 3rd 2nd 1st
+3078 1st 2nd 3rd Last 3rd 2nd 1st
+3079 1st 2nd 3rd Last 3rd 2nd 1st
+3080 1st 2nd 3rd Last 3rd 2nd 1st
+3081 1st 2nd 3rd Last 3rd 2nd 1st
+3082 1st 2nd 3rd Last 3rd 2nd 1st
+3083 1st 2nd 3rd Last 3rd 2nd 1st
+3084 1st 2nd 3rd Last 3rd 2nd 1st
+3085 1st 2nd 3rd Last 3rd 2nd 1st
+3086 1st 2nd 3rd Last 3rd 2nd 1st
+3087 1st 2nd 3rd Last 3rd 2nd 1st
+3088 1st 2nd 3rd Last 3rd 2nd 1st
+3089 1st 2nd 3rd Last 3rd 2nd 1st
+3090 1st 2nd 3rd Last 3rd 2nd 1st
+3091 1st 2nd 3rd Last 3rd 2nd 1st
+3092 1st 2nd 3rd Last 3rd 2nd 1st
+3093 1st 2nd 3rd Last 3rd 2nd 1st
+3094 1st 2nd 3rd Last 3rd 2nd 1st
+3095 1st 2nd 3rd Last 3rd 2nd 1st
+3096 1st 2nd 3rd Last 3rd 2nd 1st
+3097 1st 2nd 3rd Last 3rd 2nd 1st
+3098 1st 2nd 3rd Last 3rd 2nd 1st
+3099 1st 2nd 3rd Last 3rd 2nd 1st
+3100 1st 2nd 3rd Last 3rd 2nd 1st
+3101 1st 2nd 3rd Last 3rd 2nd 1st
+3102 1st 2nd 3rd Last 3rd 2nd 1st
+3103 1st 2nd 3rd Last 3rd 2nd 1st
+3104 1st 2nd 3rd Last 3rd 2nd 1st
+3105 1st 2nd 3rd Last 3rd 2nd 1st
+3106 1st 2nd 3rd Last 3rd 2nd 1st
+3107 1st 2nd 3rd Last 3rd 2nd 1st
+3108 1st 2nd 3rd Last 3rd 2nd 1st
+3109 1st 2nd 3rd Last 3rd 2nd 1st
+3110 1st 2nd 3rd Last 3rd 2nd 1st
+3111 1st 2nd 3rd Last 3rd 2nd 1st
+3112 1st 2nd 3rd Last 3rd 2nd 1st
+3113 1st 2nd 3rd Last 3rd 2nd 1st
+3114 1st 2nd 3rd Last 3rd 2nd 1st
+3115 1st 2nd 3rd Last 3rd 2nd 1st
+3116 1st 2nd 3rd Last 3rd 2nd 1st
+3117 1st 2nd 3rd Last 3rd 2nd 1st
+3118 1st 2nd 3rd Last 3rd 2nd 1st
+3119 1st 2nd 3rd Last 3rd 2nd 1st
+3120 1st 2nd 3rd Last 3rd 2nd 1st
+3121 1st 2nd 3rd Last 3rd 2nd 1st
+3122 1st 2nd 3rd Last 3rd 2nd 1st
+3123 1st 2nd 3rd Last 3rd 2nd 1st
+3124 1st 2nd 3rd Last 3rd 2nd 1st
+3125 1st 2nd 3rd Last 3rd 2nd 1st
+3126 1st 2nd 3rd Last 3rd 2nd 1st
+3127 1st 2nd 3rd Last 3rd 2nd 1st
+3128 1st 2nd 3rd Last 3rd 2nd 1st
+3129 1st 2nd 3rd Last 3rd 2nd 1st
+3130 1st 2nd 3rd Last 3rd 2nd 1st
+3131 1st 2nd 3rd Last 3rd 2nd 1st
+3132 1st 2nd 3rd Last 3rd 2nd 1st
+3133 1st 2nd 3rd Last 3rd 2nd 1st
+3134 1st 2nd 3rd Last 3rd 2nd 1st
+3135 1st 2nd 3rd Last 3rd 2nd 1st
+3136 1st 2nd 3rd Last 3rd 2nd 1st
+3137 1st 2nd 3rd Last 3rd 2nd 1st
+3138 1st 2nd 3rd Last 3rd 2nd 1st
+3139 1st 2nd 3rd Last 3rd 2nd 1st
+3140 1st 2nd 3rd Last 3rd 2nd 1st
+3141 1st 2nd 3rd Last 3rd 2nd 1st
+3142 1st 2nd 3rd Last 3rd 2nd 1st
+3143 1st 2nd 3rd Last 3rd 2nd 1st
+3144 1st 2nd 3rd Last 3rd 2nd 1st
+3145 1st 2nd 3rd Last 3rd 2nd 1st
+3146 1st 2nd 3rd Last 3rd 2nd 1st
+3147 1st 2nd 3rd Last 3rd 2nd 1st
+3148 1st 2nd 3rd Last 3rd 2nd 1st
+3149 1st 2nd 3rd Last 3rd 2nd 1st
+3150 1st 2nd 3rd Last 3rd 2nd 1st
+3151 1st 2nd 3rd Last 3rd 2nd 1st
+3152 1st 2nd 3rd Last 3rd 2nd 1st
+3153 1st 2nd 3rd Last 3rd 2nd 1st
+3154 1st 2nd 3rd Last 3rd 2nd 1st
+3155 1st 2nd 3rd Last 3rd 2nd 1st
+3156 1st 2nd 3rd Last 3rd 2nd 1st
+3157 1st 2nd 3rd Last 3rd 2nd 1st
+3158 1st 2nd 3rd Last 3rd 2nd 1st
+3159 1st 2nd 3rd Last 3rd 2nd 1st
+3160 1st 2nd 3rd Last 3rd 2nd 1st
+3161 1st 2nd 3rd Last 3rd 2nd 1st
+3162 1st 2nd 3rd Last 3rd 2nd 1st
+3163 1st 2nd 3rd Last 3rd 2nd 1st
+3164 1st 2nd 3rd Last 3rd 2nd 1st
+3165 1st 2nd 3rd Last 3rd 2nd 1st
+3166 1st 2nd 3rd Last 3rd 2nd 1st
+3167 1st 2nd 3rd Last 3rd 2nd 1st
+3168 1st 2nd 3rd Last 3rd 2nd 1st
+3169 1st 2nd 3rd Last 3rd 2nd 1st
+3170 1st 2nd 3rd Last 3rd 2nd 1st
+3171 1st 2nd 3rd Last 3rd 2nd 1st
+3172 1st 2nd 3rd Last 3rd 2nd 1st
+3173 1st 2nd 3rd Last 3rd 2nd 1st
+3174 1st 2nd 3rd Last 3rd 2nd 1st
+3175 1st 2nd 3rd Last 3rd 2nd 1st
+3176 1st 2nd 3rd Last 3rd 2nd 1st
+3177 1st 2nd 3rd Last 3rd 2nd 1st
+3178 1st 2nd 3rd Last 3rd 2nd 1st
+3179 1st 2nd 3rd Last 3rd 2nd 1st
+3180 1st 2nd 3rd Last 3rd 2nd 1st
+3181 1st 2nd 3rd Last 3rd 2nd 1st
+3182 1st 2nd 3rd Last 3rd 2nd 1st
+3183 1st 2nd 3rd Last 3rd 2nd 1st
+3184 1st 2nd 3rd Last 3rd 2nd 1st
+3185 1st 2nd 3rd Last 3rd 2nd 1st
+3186 1st 2nd 3rd Last 3rd 2nd 1st
+3187 1st 2nd 3rd Last 3rd 2nd 1st
+3188 1st 2nd 3rd Last 3rd 2nd 1st
+3189 1st 2nd 3rd Last 3rd 2nd 1st
+3190 1st 2nd 3rd Last 3rd 2nd 1st
+3191 1st 2nd 3rd Last 3rd 2nd 1st
+3192 1st 2nd 3rd Last 3rd 2nd 1st
+3193 1st 2nd 3rd Last 3rd 2nd 1st
+3194 1st 2nd 3rd Last 3rd 2nd 1st
+3195 1st 2nd 3rd Last 3rd 2nd 1st
+3196 1st 2nd 3rd Last 3rd 2nd 1st
+3197 1st 2nd 3rd Last 3rd 2nd 1st
+3198 1st 2nd 3rd Last 3rd 2nd 1st
+3199 1st 2nd 3rd Last 3rd 2nd 1st
+3200 1st 2nd 3rd Last 3rd 2nd 1st
+3201 1st 2nd 3rd Last 3rd 2nd 1st
+3202 1st 2nd 3rd Last 3rd 2nd 1st
+3203 1st 2nd 3rd Last 3rd 2nd 1st
+3204 1st 2nd 3rd Last 3rd 2nd 1st
+3205 1st 2nd 3rd Last 3rd 2nd 1st
+3206 1st 2nd 3rd Last 3rd 2nd 1st
+3207 1st 2nd 3rd Last 3rd 2nd 1st
+3208 1st 2nd 3rd Last 3rd 2nd 1st
+3209 1st 2nd 3rd Last 3rd 2nd 1st
+3210 1st 2nd 3rd Last 3rd 2nd 1st
+3211 1st 2nd 3rd Last 3rd 2nd 1st
+3212 1st 2nd 3rd Last 3rd 2nd 1st
+3213 1st 2nd 3rd Last 3rd 2nd 1st
+3214 1st 2nd 3rd Last 3rd 2nd 1st
+3215 1st 2nd 3rd Last 3rd 2nd 1st
+3216 1st 2nd 3rd Last 3rd 2nd 1st
+3217 1st 2nd 3rd Last 3rd 2nd 1st
+3218 1st 2nd 3rd Last 3rd 2nd 1st
+3219 1st 2nd 3rd Last 3rd 2nd 1st
+3220 1st 2nd 3rd Last 3rd 2nd 1st
+3221 1st 2nd 3rd Last 3rd 2nd 1st
+3222 1st 2nd 3rd Last 3rd 2nd 1st
+3223 1st 2nd 3rd Last 3rd 2nd 1st
+3224 1st 2nd 3rd Last 3rd 2nd 1st
+3225 1st 2nd 3rd Last 3rd 2nd 1st
+3226 1st 2nd 3rd Last 3rd 2nd 1st
+3227 1st 2nd 3rd Last 3rd 2nd 1st
+3228 1st 2nd 3rd Last 3rd 2nd 1st
+3229 1st 2nd 3rd Last 3rd 2nd 1st
+3230 1st 2nd 3rd Last 3rd 2nd 1st
+3231 1st 2nd 3rd Last 3rd 2nd 1st
+3232 1st 2nd 3rd Last 3rd 2nd 1st
+3233 1st 2nd 3rd Last 3rd 2nd 1st
+3234 1st 2nd 3rd Last 3rd 2nd 1st
+3235 1st 2nd 3rd Last 3rd 2nd 1st
+3236 1st 2nd 3rd Last 3rd 2nd 1st
+3237 1st 2nd 3rd Last 3rd 2nd 1st
+3238 1st 2nd 3rd Last 3rd 2nd 1st
+3239 1st 2nd 3rd Last 3rd 2nd 1st
+3240 1st 2nd 3rd Last 3rd 2nd 1st
+3241 1st 2nd 3rd Last 3rd 2nd 1st
+3242 1st 2nd 3rd Last 3rd 2nd 1st
+3243 1st 2nd 3rd Last 3rd 2nd 1st
+3244 1st 2nd 3rd Last 3rd 2nd 1st
+3245 1st 2nd 3rd Last 3rd 2nd 1st
+3246 1st 2nd 3rd Last 3rd 2nd 1st
+3247 1st 2nd 3rd Last 3rd 2nd 1st
+3248 1st 2nd 3rd Last 3rd 2nd 1st
+3249 1st 2nd 3rd Last 3rd 2nd 1st
+3250 1st 2nd 3rd Last 3rd 2nd 1st
+3251 1st 2nd 3rd Last 3rd 2nd 1st
+3252 1st 2nd 3rd Last 3rd 2nd 1st
+3253 1st 2nd 3rd Last 3rd 2nd 1st
+3254 1st 2nd 3rd Last 3rd 2nd 1st
+3255 1st 2nd 3rd Last 3rd 2nd 1st
+3256 1st 2nd 3rd Last 3rd 2nd 1st
+3257 1st 2nd 3rd Last 3rd 2nd 1st
+3258 1st 2nd 3rd Last 3rd 2nd 1st
+3259 1st 2nd 3rd Last 3rd 2nd 1st
+3260 1st 2nd 3rd Last 3rd 2nd 1st
+3261 1st 2nd 3rd Last 3rd 2nd 1st
+3262 1st 2nd 3rd Last 3rd 2nd 1st
+3263 1st 2nd 3rd Last 3rd 2nd 1st
+3264 1st 2nd 3rd Last 3rd 2nd 1st
+3265 1st 2nd 3rd Last 3rd 2nd 1st
+3266 1st 2nd 3rd Last 3rd 2nd 1st
+3267 1st 2nd 3rd Last 3rd 2nd 1st
+3268 1st 2nd 3rd Last 3rd 2nd 1st
+3269 1st 2nd 3rd Last 3rd 2nd 1st
+3270 1st 2nd 3rd Last 3rd 2nd 1st
+3271 1st 2nd 3rd Last 3rd 2nd 1st
+3272 1st 2nd 3rd Last 3rd 2nd 1st
+3273 1st 2nd 3rd Last 3rd 2nd 1st
+3274 1st 2nd 3rd Last 3rd 2nd 1st
+3275 1st 2nd 3rd Last 3rd 2nd 1st
+3276 1st 2nd 3rd Last 3rd 2nd 1st
+3277 1st 2nd 3rd Last 3rd 2nd 1st
+3278 1st 2nd 3rd Last 3rd 2nd 1st
+3279 1st 2nd 3rd Last 3rd 2nd 1st
+3280 1st 2nd 3rd Last 3rd 2nd 1st
+3281 1st 2nd 3rd Last 3rd 2nd 1st
+3282 1st 2nd 3rd Last 3rd 2nd 1st
+3283 1st 2nd 3rd Last 3rd 2nd 1st
+3284 1st 2nd 3rd Last 3rd 2nd 1st
+3285 1st 2nd 3rd Last 3rd 2nd 1st
+3286 1st 2nd 3rd Last 3rd 2nd 1st
+3287 1st 2nd 3rd Last 3rd 2nd 1st
+3288 1st 2nd 3rd Last 3rd 2nd 1st
+3289 1st 2nd 3rd Last 3rd 2nd 1st
+3290 1st 2nd 3rd Last 3rd 2nd 1st
+3291 1st 2nd 3rd Last 3rd 2nd 1st
+3292 1st 2nd 3rd Last 3rd 2nd 1st
+3293 1st 2nd 3rd Last 3rd 2nd 1st
+3294 1st 2nd 3rd Last 3rd 2nd 1st
+3295 1st 2nd 3rd Last 3rd 2nd 1st
+3296 1st 2nd 3rd Last 3rd 2nd 1st
+3297 1st 2nd 3rd Last 3rd 2nd 1st
+3298 1st 2nd 3rd Last 3rd 2nd 1st
+3299 1st 2nd 3rd Last 3rd 2nd 1st
+3300 1st 2nd 3rd Last 3rd 2nd 1st
+3301 1st 2nd 3rd Last 3rd 2nd 1st
+3302 1st 2nd 3rd Last 3rd 2nd 1st
+3303 1st 2nd 3rd Last 3rd 2nd 1st
+3304 1st 2nd 3rd Last 3rd 2nd 1st
+3305 1st 2nd 3rd Last 3rd 2nd 1st
+3306 1st 2nd 3rd Last 3rd 2nd 1st
+3307 1st 2nd 3rd Last 3rd 2nd 1st
+3308 1st 2nd 3rd Last 3rd 2nd 1st
+3309 1st 2nd 3rd Last 3rd 2nd 1st
+3310 1st 2nd 3rd Last 3rd 2nd 1st
+3311 1st 2nd 3rd Last 3rd 2nd 1st
+3312 1st 2nd 3rd Last 3rd 2nd 1st
+3313 1st 2nd 3rd Last 3rd 2nd 1st
+3314 1st 2nd 3rd Last 3rd 2nd 1st
+3315 1st 2nd 3rd Last 3rd 2nd 1st
+3316 1st 2nd 3rd Last 3rd 2nd 1st
+3317 1st 2nd 3rd Last 3rd 2nd 1st
+3318 1st 2nd 3rd Last 3rd 2nd 1st
+3319 1st 2nd 3rd Last 3rd 2nd 1st
+3320 1st 2nd 3rd Last 3rd 2nd 1st
+3321 1st 2nd 3rd Last 3rd 2nd 1st
+3322 1st 2nd 3rd Last 3rd 2nd 1st
+3323 1st 2nd 3rd Last 3rd 2nd 1st
+3324 1st 2nd 3rd Last 3rd 2nd 1st
+3325 1st 2nd 3rd Last 3rd 2nd 1st
+3326 1st 2nd 3rd Last 3rd 2nd 1st
+3327 1st 2nd 3rd Last 3rd 2nd 1st
+3328 1st 2nd 3rd Last 3rd 2nd 1st
+3329 1st 2nd 3rd Last 3rd 2nd 1st
+3330 1st 2nd 3rd Last 3rd 2nd 1st
+3331 1st 2nd 3rd Last 3rd 2nd 1st
+3332 1st 2nd 3rd Last 3rd 2nd 1st
+3333 1st 2nd 3rd Last 3rd 2nd 1st
+3334 1st 2nd 3rd Last 3rd 2nd 1st
+3335 1st 2nd 3rd Last 3rd 2nd 1st
+3336 1st 2nd 3rd Last 3rd 2nd 1st
+3337 1st 2nd 3rd Last 3rd 2nd 1st
+3338 1st 2nd 3rd Last 3rd 2nd 1st
+3339 1st 2nd 3rd Last 3rd 2nd 1st
+3340 1st 2nd 3rd Last 3rd 2nd 1st
+3341 1st 2nd 3rd Last 3rd 2nd 1st
+3342 1st 2nd 3rd Last 3rd 2nd 1st
+3343 1st 2nd 3rd Last 3rd 2nd 1st
+3344 1st 2nd 3rd Last 3rd 2nd 1st
+3345 1st 2nd 3rd Last 3rd 2nd 1st
+3346 1st 2nd 3rd Last 3rd 2nd 1st
+3347 1st 2nd 3rd Last 3rd 2nd 1st
+3348 1st 2nd 3rd Last 3rd 2nd 1st
+3349 1st 2nd 3rd Last 3rd 2nd 1st
+3350 1st 2nd 3rd Last 3rd 2nd 1st
+3351 1st 2nd 3rd Last 3rd 2nd 1st
+3352 1st 2nd 3rd Last 3rd 2nd 1st
+3353 1st 2nd 3rd Last 3rd 2nd 1st
+3354 1st 2nd 3rd Last 3rd 2nd 1st
+3355 1st 2nd 3rd Last 3rd 2nd 1st
+3356 1st 2nd 3rd Last 3rd 2nd 1st
+3357 1st 2nd 3rd Last 3rd 2nd 1st
+3358 1st 2nd 3rd Last 3rd 2nd 1st
+3359 1st 2nd 3rd Last 3rd 2nd 1st
+3360 1st 2nd 3rd Last 3rd 2nd 1st
+3361 1st 2nd 3rd Last 3rd 2nd 1st
+3362 1st 2nd 3rd Last 3rd 2nd 1st
+3363 1st 2nd 3rd Last 3rd 2nd 1st
+3364 1st 2nd 3rd Last 3rd 2nd 1st
+3365 1st 2nd 3rd Last 3rd 2nd 1st
+3366 1st 2nd 3rd Last 3rd 2nd 1st
+3367 1st 2nd 3rd Last 3rd 2nd 1st
+3368 1st 2nd 3rd Last 3rd 2nd 1st
+3369 1st 2nd 3rd Last 3rd 2nd 1st
+3370 1st 2nd 3rd Last 3rd 2nd 1st
+3371 1st 2nd 3rd Last 3rd 2nd 1st
+3372 1st 2nd 3rd Last 3rd 2nd 1st
+3373 1st 2nd 3rd Last 3rd 2nd 1st
+3374 1st 2nd 3rd Last 3rd 2nd 1st
+3375 1st 2nd 3rd Last 3rd 2nd 1st
+3376 1st 2nd 3rd Last 3rd 2nd 1st
+3377 1st 2nd 3rd Last 3rd 2nd 1st
+3378 1st 2nd 3rd Last 3rd 2nd 1st
+3379 1st 2nd 3rd Last 3rd 2nd 1st
+3380 1st 2nd 3rd Last 3rd 2nd 1st
+3381 1st 2nd 3rd Last 3rd 2nd 1st
+3382 1st 2nd 3rd Last 3rd 2nd 1st
+3383 1st 2nd 3rd Last 3rd 2nd 1st
+3384 1st 2nd 3rd Last 3rd 2nd 1st
+3385 1st 2nd 3rd Last 3rd 2nd 1st
+3386 1st 2nd 3rd Last 3rd 2nd 1st
+3387 1st 2nd 3rd Last 3rd 2nd 1st
+3388 1st 2nd 3rd Last 3rd 2nd 1st
+3389 1st 2nd 3rd Last 3rd 2nd 1st
+3390 1st 2nd 3rd Last 3rd 2nd 1st
+3391 1st 2nd 3rd Last 3rd 2nd 1st
+3392 1st 2nd 3rd Last 3rd 2nd 1st
+3393 1st 2nd 3rd Last 3rd 2nd 1st
+3394 1st 2nd 3rd Last 3rd 2nd 1st
+3395 1st 2nd 3rd Last 3rd 2nd 1st
+3396 1st 2nd 3rd Last 3rd 2nd 1st
+3397 1st 2nd 3rd Last 3rd 2nd 1st
+3398 1st 2nd 3rd Last 3rd 2nd 1st
+3399 1st 2nd 3rd Last 3rd 2nd 1st
+3400 1st 2nd 3rd Last 3rd 2nd 1st
+3401 1st 2nd 3rd Last 3rd 2nd 1st
+3402 1st 2nd 3rd Last 3rd 2nd 1st
+3403 1st 2nd 3rd Last 3rd 2nd 1st
+3404 1st 2nd 3rd Last 3rd 2nd 1st
+3405 1st 2nd 3rd Last 3rd 2nd 1st
+3406 1st 2nd 3rd Last 3rd 2nd 1st
+3407 1st 2nd 3rd Last 3rd 2nd 1st
+3408 1st 2nd 3rd Last 3rd 2nd 1st
+3409 1st 2nd 3rd Last 3rd 2nd 1st
+3410 1st 2nd 3rd Last 3rd 2nd 1st
+3411 1st 2nd 3rd Last 3rd 2nd 1st
+3412 1st 2nd 3rd Last 3rd 2nd 1st
+3413 1st 2nd 3rd Last 3rd 2nd 1st
+3414 1st 2nd 3rd Last 3rd 2nd 1st
+3415 1st 2nd 3rd Last 3rd 2nd 1st
+3416 1st 2nd 3rd Last 3rd 2nd 1st
+3417 1st 2nd 3rd Last 3rd 2nd 1st
+3418 1st 2nd 3rd Last 3rd 2nd 1st
+3419 1st 2nd 3rd Last 3rd 2nd 1st
+3420 1st 2nd 3rd Last 3rd 2nd 1st
+3421 1st 2nd 3rd Last 3rd 2nd 1st
+3422 1st 2nd 3rd Last 3rd 2nd 1st
+3423 1st 2nd 3rd Last 3rd 2nd 1st
+3424 1st 2nd 3rd Last 3rd 2nd 1st
+3425 1st 2nd 3rd Last 3rd 2nd 1st
+3426 1st 2nd 3rd Last 3rd 2nd 1st
+3427 1st 2nd 3rd Last 3rd 2nd 1st
+3428 1st 2nd 3rd Last 3rd 2nd 1st
+3429 1st 2nd 3rd Last 3rd 2nd 1st
+3430 1st 2nd 3rd Last 3rd 2nd 1st
+3431 1st 2nd 3rd Last 3rd 2nd 1st
+3432 1st 2nd 3rd Last 3rd 2nd 1st
+3433 1st 2nd 3rd Last 3rd 2nd 1st
+3434 1st 2nd 3rd Last 3rd 2nd 1st
+3435 1st 2nd 3rd Last 3rd 2nd 1st
+3436 1st 2nd 3rd Last 3rd 2nd 1st
+3437 1st 2nd 3rd Last 3rd 2nd 1st
+3438 1st 2nd 3rd Last 3rd 2nd 1st
+3439 1st 2nd 3rd Last 3rd 2nd 1st
+3440 1st 2nd 3rd Last 3rd 2nd 1st
+3441 1st 2nd 3rd Last 3rd 2nd 1st
+3442 1st 2nd 3rd Last 3rd 2nd 1st
+3443 1st 2nd 3rd Last 3rd 2nd 1st
+3444 1st 2nd 3rd Last 3rd 2nd 1st
+3445 1st 2nd 3rd Last 3rd 2nd 1st
+3446 1st 2nd 3rd Last 3rd 2nd 1st
+3447 1st 2nd 3rd Last 3rd 2nd 1st
+3448 1st 2nd 3rd Last 3rd 2nd 1st
+3449 1st 2nd 3rd Last 3rd 2nd 1st
+3450 1st 2nd 3rd Last 3rd 2nd 1st
+3451 1st 2nd 3rd Last 3rd 2nd 1st
+3452 1st 2nd 3rd Last 3rd 2nd 1st
+3453 1st 2nd 3rd Last 3rd 2nd 1st
+3454 1st 2nd 3rd Last 3rd 2nd 1st
+3455 1st 2nd 3rd Last 3rd 2nd 1st
+3456 1st 2nd 3rd Last 3rd 2nd 1st
+3457 1st 2nd 3rd Last 3rd 2nd 1st
+3458 1st 2nd 3rd Last 3rd 2nd 1st
+3459 1st 2nd 3rd Last 3rd 2nd 1st
+3460 1st 2nd 3rd Last 3rd 2nd 1st
+3461 1st 2nd 3rd Last 3rd 2nd 1st
+3462 1st 2nd 3rd Last 3rd 2nd 1st
+3463 1st 2nd 3rd Last 3rd 2nd 1st
+3464 1st 2nd 3rd Last 3rd 2nd 1st
+3465 1st 2nd 3rd Last 3rd 2nd 1st
+3466 1st 2nd 3rd Last 3rd 2nd 1st
+3467 1st 2nd 3rd Last 3rd 2nd 1st
+3468 1st 2nd 3rd Last 3rd 2nd 1st
+3469 1st 2nd 3rd Last 3rd 2nd 1st
+3470 1st 2nd 3rd Last 3rd 2nd 1st
+3471 1st 2nd 3rd Last 3rd 2nd 1st
+3472 1st 2nd 3rd Last 3rd 2nd 1st
+3473 1st 2nd 3rd Last 3rd 2nd 1st
+3474 1st 2nd 3rd Last 3rd 2nd 1st
+3475 1st 2nd 3rd Last 3rd 2nd 1st
+3476 1st 2nd 3rd Last 3rd 2nd 1st
+3477 1st 2nd 3rd Last 3rd 2nd 1st
+3478 1st 2nd 3rd Last 3rd 2nd 1st
+3479 1st 2nd 3rd Last 3rd 2nd 1st
+3480 1st 2nd 3rd Last 3rd 2nd 1st
+3481 1st 2nd 3rd Last 3rd 2nd 1st
+3482 1st 2nd 3rd Last 3rd 2nd 1st
+3483 1st 2nd 3rd Last 3rd 2nd 1st
+3484 1st 2nd 3rd Last 3rd 2nd 1st
+3485 1st 2nd 3rd Last 3rd 2nd 1st
+3486 1st 2nd 3rd Last 3rd 2nd 1st
+3487 1st 2nd 3rd Last 3rd 2nd 1st
+3488 1st 2nd 3rd Last 3rd 2nd 1st
+3489 1st 2nd 3rd Last 3rd 2nd 1st
+3490 1st 2nd 3rd Last 3rd 2nd 1st
+3491 1st 2nd 3rd Last 3rd 2nd 1st
+3492 1st 2nd 3rd Last 3rd 2nd 1st
+3493 1st 2nd 3rd Last 3rd 2nd 1st
+3494 1st 2nd 3rd Last 3rd 2nd 1st
+3495 1st 2nd 3rd Last 3rd 2nd 1st
+3496 1st 2nd 3rd Last 3rd 2nd 1st
+3497 1st 2nd 3rd Last 3rd 2nd 1st
+3498 1st 2nd 3rd Last 3rd 2nd 1st
+3499 1st 2nd 3rd Last 3rd 2nd 1st
+3500 1st 2nd 3rd Last 3rd 2nd 1st
+3501 1st 2nd 3rd Last 3rd 2nd 1st
+3502 1st 2nd 3rd Last 3rd 2nd 1st
+3503 1st 2nd 3rd Last 3rd 2nd 1st
+3504 1st 2nd 3rd Last 3rd 2nd 1st
+3505 1st 2nd 3rd Last 3rd 2nd 1st
+3506 1st 2nd 3rd Last 3rd 2nd 1st
+3507 1st 2nd 3rd Last 3rd 2nd 1st
+3508 1st 2nd 3rd Last 3rd 2nd 1st
+3509 1st 2nd 3rd Last 3rd 2nd 1st
+3510 1st 2nd 3rd Last 3rd 2nd 1st
+3511 1st 2nd 3rd Last 3rd 2nd 1st
+3512 1st 2nd 3rd Last 3rd 2nd 1st
+3513 1st 2nd 3rd Last 3rd 2nd 1st
+3514 1st 2nd 3rd Last 3rd 2nd 1st
+3515 1st 2nd 3rd Last 3rd 2nd 1st
+3516 1st 2nd 3rd Last 3rd 2nd 1st
+3517 1st 2nd 3rd Last 3rd 2nd 1st
+3518 1st 2nd 3rd Last 3rd 2nd 1st
+3519 1st 2nd 3rd Last 3rd 2nd 1st
+3520 1st 2nd 3rd Last 3rd 2nd 1st
+3521 1st 2nd 3rd Last 3rd 2nd 1st
+3522 1st 2nd 3rd Last 3rd 2nd 1st
+3523 1st 2nd 3rd Last 3rd 2nd 1st
+3524 1st 2nd 3rd Last 3rd 2nd 1st
+3525 1st 2nd 3rd Last 3rd 2nd 1st
+3526 1st 2nd 3rd Last 3rd 2nd 1st
+3527 1st 2nd 3rd Last 3rd 2nd 1st
+3528 1st 2nd 3rd Last 3rd 2nd 1st
+3529 1st 2nd 3rd Last 3rd 2nd 1st
+3530 1st 2nd 3rd Last 3rd 2nd 1st
+3531 1st 2nd 3rd Last 3rd 2nd 1st
+3532 1st 2nd 3rd Last 3rd 2nd 1st
+3533 1st 2nd 3rd Last 3rd 2nd 1st
+3534 1st 2nd 3rd Last 3rd 2nd 1st
+3535 1st 2nd 3rd Last 3rd 2nd 1st
+3536 1st 2nd 3rd Last 3rd 2nd 1st
+3537 1st 2nd 3rd Last 3rd 2nd 1st
+3538 1st 2nd 3rd Last 3rd 2nd 1st
+3539 1st 2nd 3rd Last 3rd 2nd 1st
+3540 1st 2nd 3rd Last 3rd 2nd 1st
+3541 1st 2nd 3rd Last 3rd 2nd 1st
+3542 1st 2nd 3rd Last 3rd 2nd 1st
+3543 1st 2nd 3rd Last 3rd 2nd 1st
+3544 1st 2nd 3rd Last 3rd 2nd 1st
+3545 1st 2nd 3rd Last 3rd 2nd 1st
+3546 1st 2nd 3rd Last 3rd 2nd 1st
+3547 1st 2nd 3rd Last 3rd 2nd 1st
+3548 1st 2nd 3rd Last 3rd 2nd 1st
+3549 1st 2nd 3rd Last 3rd 2nd 1st
+3550 1st 2nd 3rd Last 3rd 2nd 1st
+3551 1st 2nd 3rd Last 3rd 2nd 1st
+3552 1st 2nd 3rd Last 3rd 2nd 1st
+3553 1st 2nd 3rd Last 3rd 2nd 1st
+3554 1st 2nd 3rd Last 3rd 2nd 1st
+3555 1st 2nd 3rd Last 3rd 2nd 1st
+3556 1st 2nd 3rd Last 3rd 2nd 1st
+3557 1st 2nd 3rd Last 3rd 2nd 1st
+3558 1st 2nd 3rd Last 3rd 2nd 1st
+3559 1st 2nd 3rd Last 3rd 2nd 1st
+3560 1st 2nd 3rd Last 3rd 2nd 1st
+3561 1st 2nd 3rd Last 3rd 2nd 1st
+3562 1st 2nd 3rd Last 3rd 2nd 1st
+3563 1st 2nd 3rd Last 3rd 2nd 1st
+3564 1st 2nd 3rd Last 3rd 2nd 1st
+3565 1st 2nd 3rd Last 3rd 2nd 1st
+3566 1st 2nd 3rd Last 3rd 2nd 1st
+3567 1st 2nd 3rd Last 3rd 2nd 1st
+3568 1st 2nd 3rd Last 3rd 2nd 1st
+3569 1st 2nd 3rd Last 3rd 2nd 1st
+3570 1st 2nd 3rd Last 3rd 2nd 1st
+3571 1st 2nd 3rd Last 3rd 2nd 1st
+3572 1st 2nd 3rd Last 3rd 2nd 1st
+3573 1st 2nd 3rd Last 3rd 2nd 1st
+3574 1st 2nd 3rd Last 3rd 2nd 1st
+3575 1st 2nd 3rd Last 3rd 2nd 1st
+3576 1st 2nd 3rd Last 3rd 2nd 1st
+3577 1st 2nd 3rd Last 3rd 2nd 1st
+3578 1st 2nd 3rd Last 3rd 2nd 1st
+3579 1st 2nd 3rd Last 3rd 2nd 1st
+3580 1st 2nd 3rd Last 3rd 2nd 1st
+3581 1st 2nd 3rd Last 3rd 2nd 1st
+3582 1st 2nd 3rd Last 3rd 2nd 1st
+3583 1st 2nd 3rd Last 3rd 2nd 1st
+3584 1st 2nd 3rd Last 3rd 2nd 1st
+3585 1st 2nd 3rd Last 3rd 2nd 1st
+3586 1st 2nd 3rd Last 3rd 2nd 1st
+3587 1st 2nd 3rd Last 3rd 2nd 1st
+3588 1st 2nd 3rd Last 3rd 2nd 1st
+3589 1st 2nd 3rd Last 3rd 2nd 1st
+3590 1st 2nd 3rd Last 3rd 2nd 1st
+3591 1st 2nd 3rd Last 3rd 2nd 1st
+3592 1st 2nd 3rd Last 3rd 2nd 1st
+3593 1st 2nd 3rd Last 3rd 2nd 1st
+3594 1st 2nd 3rd Last 3rd 2nd 1st
+3595 1st 2nd 3rd Last 3rd 2nd 1st
+3596 1st 2nd 3rd Last 3rd 2nd 1st
+3597 1st 2nd 3rd Last 3rd 2nd 1st
+3598 1st 2nd 3rd Last 3rd 2nd 1st
+3599 1st 2nd 3rd Last 3rd 2nd 1st
+3600 1st 2nd 3rd Last 3rd 2nd 1st
+3601 1st 2nd 3rd Last 3rd 2nd 1st
+3602 1st 2nd 3rd Last 3rd 2nd 1st
+3603 1st 2nd 3rd Last 3rd 2nd 1st
+3604 1st 2nd 3rd Last 3rd 2nd 1st
+3605 1st 2nd 3rd Last 3rd 2nd 1st
+3606 1st 2nd 3rd Last 3rd 2nd 1st
+3607 1st 2nd 3rd Last 3rd 2nd 1st
+3608 1st 2nd 3rd Last 3rd 2nd 1st
+3609 1st 2nd 3rd Last 3rd 2nd 1st
+3610 1st 2nd 3rd Last 3rd 2nd 1st
+3611 1st 2nd 3rd Last 3rd 2nd 1st
+3612 1st 2nd 3rd Last 3rd 2nd 1st
+3613 1st 2nd 3rd Last 3rd 2nd 1st
+3614 1st 2nd 3rd Last 3rd 2nd 1st
+3615 1st 2nd 3rd Last 3rd 2nd 1st
+3616 1st 2nd 3rd Last 3rd 2nd 1st
+3617 1st 2nd 3rd Last 3rd 2nd 1st
+3618 1st 2nd 3rd Last 3rd 2nd 1st
+3619 1st 2nd 3rd Last 3rd 2nd 1st
+3620 1st 2nd 3rd Last 3rd 2nd 1st
+3621 1st 2nd 3rd Last 3rd 2nd 1st
+3622 1st 2nd 3rd Last 3rd 2nd 1st
+3623 1st 2nd 3rd Last 3rd 2nd 1st
+3624 1st 2nd 3rd Last 3rd 2nd 1st
+3625 1st 2nd 3rd Last 3rd 2nd 1st
+3626 1st 2nd 3rd Last 3rd 2nd 1st
+3627 1st 2nd 3rd Last 3rd 2nd 1st
+3628 1st 2nd 3rd Last 3rd 2nd 1st
+3629 1st 2nd 3rd Last 3rd 2nd 1st
+3630 1st 2nd 3rd Last 3rd 2nd 1st
+3631 1st 2nd 3rd Last 3rd 2nd 1st
+3632 1st 2nd 3rd Last 3rd 2nd 1st
+3633 1st 2nd 3rd Last 3rd 2nd 1st
+3634 1st 2nd 3rd Last 3rd 2nd 1st
+3635 1st 2nd 3rd Last 3rd 2nd 1st
+3636 1st 2nd 3rd Last 3rd 2nd 1st
+3637 1st 2nd 3rd Last 3rd 2nd 1st
+3638 1st 2nd 3rd Last 3rd 2nd 1st
+3639 1st 2nd 3rd Last 3rd 2nd 1st
+3640 1st 2nd 3rd Last 3rd 2nd 1st
+3641 1st 2nd 3rd Last 3rd 2nd 1st
+3642 1st 2nd 3rd Last 3rd 2nd 1st
+3643 1st 2nd 3rd Last 3rd 2nd 1st
+3644 1st 2nd 3rd Last 3rd 2nd 1st
+3645 1st 2nd 3rd Last 3rd 2nd 1st
+3646 1st 2nd 3rd Last 3rd 2nd 1st
+3647 1st 2nd 3rd Last 3rd 2nd 1st
+3648 1st 2nd 3rd Last 3rd 2nd 1st
+3649 1st 2nd 3rd Last 3rd 2nd 1st
+3650 1st 2nd 3rd Last 3rd 2nd 1st
+3651 1st 2nd 3rd Last 3rd 2nd 1st
+3652 1st 2nd 3rd Last 3rd 2nd 1st
+3653 1st 2nd 3rd Last 3rd 2nd 1st
+3654 1st 2nd 3rd Last 3rd 2nd 1st
+3655 1st 2nd 3rd Last 3rd 2nd 1st
+3656 1st 2nd 3rd Last 3rd 2nd 1st
+3657 1st 2nd 3rd Last 3rd 2nd 1st
+3658 1st 2nd 3rd Last 3rd 2nd 1st
+3659 1st 2nd 3rd Last 3rd 2nd 1st
+3660 1st 2nd 3rd Last 3rd 2nd 1st
+3661 1st 2nd 3rd Last 3rd 2nd 1st
+3662 1st 2nd 3rd Last 3rd 2nd 1st
+3663 1st 2nd 3rd Last 3rd 2nd 1st
+3664 1st 2nd 3rd Last 3rd 2nd 1st
+3665 1st 2nd 3rd Last 3rd 2nd 1st
+3666 1st 2nd 3rd Last 3rd 2nd 1st
+3667 1st 2nd 3rd Last 3rd 2nd 1st
+3668 1st 2nd 3rd Last 3rd 2nd 1st
+3669 1st 2nd 3rd Last 3rd 2nd 1st
+3670 1st 2nd 3rd Last 3rd 2nd 1st
+3671 1st 2nd 3rd Last 3rd 2nd 1st
+3672 1st 2nd 3rd Last 3rd 2nd 1st
+3673 1st 2nd 3rd Last 3rd 2nd 1st
+3674 1st 2nd 3rd Last 3rd 2nd 1st
+3675 1st 2nd 3rd Last 3rd 2nd 1st
+3676 1st 2nd 3rd Last 3rd 2nd 1st
+3677 1st 2nd 3rd Last 3rd 2nd 1st
+3678 1st 2nd 3rd Last 3rd 2nd 1st
+3679 1st 2nd 3rd Last 3rd 2nd 1st
+3680 1st 2nd 3rd Last 3rd 2nd 1st
+3681 1st 2nd 3rd Last 3rd 2nd 1st
+3682 1st 2nd 3rd Last 3rd 2nd 1st
+3683 1st 2nd 3rd Last 3rd 2nd 1st
+3684 1st 2nd 3rd Last 3rd 2nd 1st
+3685 1st 2nd 3rd Last 3rd 2nd 1st
+3686 1st 2nd 3rd Last 3rd 2nd 1st
+3687 1st 2nd 3rd Last 3rd 2nd 1st
+3688 1st 2nd 3rd Last 3rd 2nd 1st
+3689 1st 2nd 3rd Last 3rd 2nd 1st
+3690 1st 2nd 3rd Last 3rd 2nd 1st
+3691 1st 2nd 3rd Last 3rd 2nd 1st
+3692 1st 2nd 3rd Last 3rd 2nd 1st
+3693 1st 2nd 3rd Last 3rd 2nd 1st
+3694 1st 2nd 3rd Last 3rd 2nd 1st
+3695 1st 2nd 3rd Last 3rd 2nd 1st
+3696 1st 2nd 3rd Last 3rd 2nd 1st
+3697 1st 2nd 3rd Last 3rd 2nd 1st
+3698 1st 2nd 3rd Last 3rd 2nd 1st
+3699 1st 2nd 3rd Last 3rd 2nd 1st
+3700 1st 2nd 3rd Last 3rd 2nd 1st
+3701 1st 2nd 3rd Last 3rd 2nd 1st
+3702 1st 2nd 3rd Last 3rd 2nd 1st
+3703 1st 2nd 3rd Last 3rd 2nd 1st
+3704 1st 2nd 3rd Last 3rd 2nd 1st
+3705 1st 2nd 3rd Last 3rd 2nd 1st
+3706 1st 2nd 3rd Last 3rd 2nd 1st
+3707 1st 2nd 3rd Last 3rd 2nd 1st
+3708 1st 2nd 3rd Last 3rd 2nd 1st
+3709 1st 2nd 3rd Last 3rd 2nd 1st
+3710 1st 2nd 3rd Last 3rd 2nd 1st
+3711 1st 2nd 3rd Last 3rd 2nd 1st
+3712 1st 2nd 3rd Last 3rd 2nd 1st
+3713 1st 2nd 3rd Last 3rd 2nd 1st
+3714 1st 2nd 3rd Last 3rd 2nd 1st
+3715 1st 2nd 3rd Last 3rd 2nd 1st
+3716 1st 2nd 3rd Last 3rd 2nd 1st
+3717 1st 2nd 3rd Last 3rd 2nd 1st
+3718 1st 2nd 3rd Last 3rd 2nd 1st
+3719 1st 2nd 3rd Last 3rd 2nd 1st
+3720 1st 2nd 3rd Last 3rd 2nd 1st
+3721 1st 2nd 3rd Last 3rd 2nd 1st
+3722 1st 2nd 3rd Last 3rd 2nd 1st
+3723 1st 2nd 3rd Last 3rd 2nd 1st
+3724 1st 2nd 3rd Last 3rd 2nd 1st
+3725 1st 2nd 3rd Last 3rd 2nd 1st
+3726 1st 2nd 3rd Last 3rd 2nd 1st
+3727 1st 2nd 3rd Last 3rd 2nd 1st
+3728 1st 2nd 3rd Last 3rd 2nd 1st
+3729 1st 2nd 3rd Last 3rd 2nd 1st
+3730 1st 2nd 3rd Last 3rd 2nd 1st
+3731 1st 2nd 3rd Last 3rd 2nd 1st
+3732 1st 2nd 3rd Last 3rd 2nd 1st
+3733 1st 2nd 3rd Last 3rd 2nd 1st
+3734 1st 2nd 3rd Last 3rd 2nd 1st
+3735 1st 2nd 3rd Last 3rd 2nd 1st
+3736 1st 2nd 3rd Last 3rd 2nd 1st
+3737 1st 2nd 3rd Last 3rd 2nd 1st
+3738 1st 2nd 3rd Last 3rd 2nd 1st
+3739 1st 2nd 3rd Last 3rd 2nd 1st
+3740 1st 2nd 3rd Last 3rd 2nd 1st
+3741 1st 2nd 3rd Last 3rd 2nd 1st
+3742 1st 2nd 3rd Last 3rd 2nd 1st
+3743 1st 2nd 3rd Last 3rd 2nd 1st
+3744 1st 2nd 3rd Last 3rd 2nd 1st
+3745 1st 2nd 3rd Last 3rd 2nd 1st
+3746 1st 2nd 3rd Last 3rd 2nd 1st
+3747 1st 2nd 3rd Last 3rd 2nd 1st
+3748 1st 2nd 3rd Last 3rd 2nd 1st
+3749 1st 2nd 3rd Last 3rd 2nd 1st
+3750 1st 2nd 3rd Last 3rd 2nd 1st
+3751 1st 2nd 3rd Last 3rd 2nd 1st
+3752 1st 2nd 3rd Last 3rd 2nd 1st
+3753 1st 2nd 3rd Last 3rd 2nd 1st
+3754 1st 2nd 3rd Last 3rd 2nd 1st
+3755 1st 2nd 3rd Last 3rd 2nd 1st
+3756 1st 2nd 3rd Last 3rd 2nd 1st
+3757 1st 2nd 3rd Last 3rd 2nd 1st
+3758 1st 2nd 3rd Last 3rd 2nd 1st
+3759 1st 2nd 3rd Last 3rd 2nd 1st
+3760 1st 2nd 3rd Last 3rd 2nd 1st
+3761 1st 2nd 3rd Last 3rd 2nd 1st
+3762 1st 2nd 3rd Last 3rd 2nd 1st
+3763 1st 2nd 3rd Last 3rd 2nd 1st
+3764 1st 2nd 3rd Last 3rd 2nd 1st
+3765 1st 2nd 3rd Last 3rd 2nd 1st
+3766 1st 2nd 3rd Last 3rd 2nd 1st
+3767 1st 2nd 3rd Last 3rd 2nd 1st
+3768 1st 2nd 3rd Last 3rd 2nd 1st
+3769 1st 2nd 3rd Last 3rd 2nd 1st
+3770 1st 2nd 3rd Last 3rd 2nd 1st
+3771 1st 2nd 3rd Last 3rd 2nd 1st
+3772 1st 2nd 3rd Last 3rd 2nd 1st
+3773 1st 2nd 3rd Last 3rd 2nd 1st
+3774 1st 2nd 3rd Last 3rd 2nd 1st
+3775 1st 2nd 3rd Last 3rd 2nd 1st
+3776 1st 2nd 3rd Last 3rd 2nd 1st
+3777 1st 2nd 3rd Last 3rd 2nd 1st
+3778 1st 2nd 3rd Last 3rd 2nd 1st
+3779 1st 2nd 3rd Last 3rd 2nd 1st
+3780 1st 2nd 3rd Last 3rd 2nd 1st
+3781 1st 2nd 3rd Last 3rd 2nd 1st
+3782 1st 2nd 3rd Last 3rd 2nd 1st
+3783 1st 2nd 3rd Last 3rd 2nd 1st
+3784 1st 2nd 3rd Last 3rd 2nd 1st
+3785 1st 2nd 3rd Last 3rd 2nd 1st
+3786 1st 2nd 3rd Last 3rd 2nd 1st
+3787 1st 2nd 3rd Last 3rd 2nd 1st
+3788 1st 2nd 3rd Last 3rd 2nd 1st
+3789 1st 2nd 3rd Last 3rd 2nd 1st
+3790 1st 2nd 3rd Last 3rd 2nd 1st
+3791 1st 2nd 3rd Last 3rd 2nd 1st
+3792 1st 2nd 3rd Last 3rd 2nd 1st
+3793 1st 2nd 3rd Last 3rd 2nd 1st
+3794 1st 2nd 3rd Last 3rd 2nd 1st
+3795 1st 2nd 3rd Last 3rd 2nd 1st
+3796 1st 2nd 3rd Last 3rd 2nd 1st
+3797 1st 2nd 3rd Last 3rd 2nd 1st
+3798 1st 2nd 3rd Last 3rd 2nd 1st
+3799 1st 2nd 3rd Last 3rd 2nd 1st
+3800 1st 2nd 3rd Last 3rd 2nd 1st
+3801 1st 2nd 3rd Last 3rd 2nd 1st
+3802 1st 2nd 3rd Last 3rd 2nd 1st
+3803 1st 2nd 3rd Last 3rd 2nd 1st
+3804 1st 2nd 3rd Last 3rd 2nd 1st
+3805 1st 2nd 3rd Last 3rd 2nd 1st
+3806 1st 2nd 3rd Last 3rd 2nd 1st
+3807 1st 2nd 3rd Last 3rd 2nd 1st
+3808 1st 2nd 3rd Last 3rd 2nd 1st
+3809 1st 2nd 3rd Last 3rd 2nd 1st
+3810 1st 2nd 3rd Last 3rd 2nd 1st
+3811 1st 2nd 3rd Last 3rd 2nd 1st
+3812 1st 2nd 3rd Last 3rd 2nd 1st
+3813 1st 2nd 3rd Last 3rd 2nd 1st
+3814 1st 2nd 3rd Last 3rd 2nd 1st
+3815 1st 2nd 3rd Last 3rd 2nd 1st
+3816 1st 2nd 3rd Last 3rd 2nd 1st
+3817 1st 2nd 3rd Last 3rd 2nd 1st
+3818 1st 2nd 3rd Last 3rd 2nd 1st
+3819 1st 2nd 3rd Last 3rd 2nd 1st
+3820 1st 2nd 3rd Last 3rd 2nd 1st
+3821 1st 2nd 3rd Last 3rd 2nd 1st
+3822 1st 2nd 3rd Last 3rd 2nd 1st
+3823 1st 2nd 3rd Last 3rd 2nd 1st
+3824 1st 2nd 3rd Last 3rd 2nd 1st
+3825 1st 2nd 3rd Last 3rd 2nd 1st
+3826 1st 2nd 3rd Last 3rd 2nd 1st
+3827 1st 2nd 3rd Last 3rd 2nd 1st
+3828 1st 2nd 3rd Last 3rd 2nd 1st
+3829 1st 2nd 3rd Last 3rd 2nd 1st
+3830 1st 2nd 3rd Last 3rd 2nd 1st
+3831 1st 2nd 3rd Last 3rd 2nd 1st
+3832 1st 2nd 3rd Last 3rd 2nd 1st
+3833 1st 2nd 3rd Last 3rd 2nd 1st
+3834 1st 2nd 3rd Last 3rd 2nd 1st
+3835 1st 2nd 3rd Last 3rd 2nd 1st
+3836 1st 2nd 3rd Last 3rd 2nd 1st
+3837 1st 2nd 3rd Last 3rd 2nd 1st
+3838 1st 2nd 3rd Last 3rd 2nd 1st
+3839 1st 2nd 3rd Last 3rd 2nd 1st
+3840 1st 2nd 3rd Last 3rd 2nd 1st
+3841 1st 2nd 3rd Last 3rd 2nd 1st
+3842 1st 2nd 3rd Last 3rd 2nd 1st
+3843 1st 2nd 3rd Last 3rd 2nd 1st
+3844 1st 2nd 3rd Last 3rd 2nd 1st
+3845 1st 2nd 3rd Last 3rd 2nd 1st
+3846 1st 2nd 3rd Last 3rd 2nd 1st
+3847 1st 2nd 3rd Last 3rd 2nd 1st
+3848 1st 2nd 3rd Last 3rd 2nd 1st
+3849 1st 2nd 3rd Last 3rd 2nd 1st
+3850 1st 2nd 3rd Last 3rd 2nd 1st
+3851 1st 2nd 3rd Last 3rd 2nd 1st
+3852 1st 2nd 3rd Last 3rd 2nd 1st
+3853 1st 2nd 3rd Last 3rd 2nd 1st
+3854 1st 2nd 3rd Last 3rd 2nd 1st
+3855 1st 2nd 3rd Last 3rd 2nd 1st
+3856 1st 2nd 3rd Last 3rd 2nd 1st
+3857 1st 2nd 3rd Last 3rd 2nd 1st
+3858 1st 2nd 3rd Last 3rd 2nd 1st
+3859 1st 2nd 3rd Last 3rd 2nd 1st
+3860 1st 2nd 3rd Last 3rd 2nd 1st
+3861 1st 2nd 3rd Last 3rd 2nd 1st
+3862 1st 2nd 3rd Last 3rd 2nd 1st
+3863 1st 2nd 3rd Last 3rd 2nd 1st
+3864 1st 2nd 3rd Last 3rd 2nd 1st
+3865 1st 2nd 3rd Last 3rd 2nd 1st
+3866 1st 2nd 3rd Last 3rd 2nd 1st
+3867 1st 2nd 3rd Last 3rd 2nd 1st
+3868 1st 2nd 3rd Last 3rd 2nd 1st
+3869 1st 2nd 3rd Last 3rd 2nd 1st
+3870 1st 2nd 3rd Last 3rd 2nd 1st
+3871 1st 2nd 3rd Last 3rd 2nd 1st
+3872 1st 2nd 3rd Last 3rd 2nd 1st
+3873 1st 2nd 3rd Last 3rd 2nd 1st
+3874 1st 2nd 3rd Last 3rd 2nd 1st
+3875 1st 2nd 3rd Last 3rd 2nd 1st
+3876 1st 2nd 3rd Last 3rd 2nd 1st
+3877 1st 2nd 3rd Last 3rd 2nd 1st
+3878 1st 2nd 3rd Last 3rd 2nd 1st
+3879 1st 2nd 3rd Last 3rd 2nd 1st
+3880 1st 2nd 3rd Last 3rd 2nd 1st
+3881 1st 2nd 3rd Last 3rd 2nd 1st
+3882 1st 2nd 3rd Last 3rd 2nd 1st
+3883 1st 2nd 3rd Last 3rd 2nd 1st
+3884 1st 2nd 3rd Last 3rd 2nd 1st
+3885 1st 2nd 3rd Last 3rd 2nd 1st
+3886 1st 2nd 3rd Last 3rd 2nd 1st
+3887 1st 2nd 3rd Last 3rd 2nd 1st
+3888 1st 2nd 3rd Last 3rd 2nd 1st
+3889 1st 2nd 3rd Last 3rd 2nd 1st
+3890 1st 2nd 3rd Last 3rd 2nd 1st
+3891 1st 2nd 3rd Last 3rd 2nd 1st
+3892 1st 2nd 3rd Last 3rd 2nd 1st
+3893 1st 2nd 3rd Last 3rd 2nd 1st
+3894 1st 2nd 3rd Last 3rd 2nd 1st
+3895 1st 2nd 3rd Last 3rd 2nd 1st
+3896 1st 2nd 3rd Last 3rd 2nd 1st
+3897 1st 2nd 3rd Last 3rd 2nd 1st
+3898 1st 2nd 3rd Last 3rd 2nd 1st
+3899 1st 2nd 3rd Last 3rd 2nd 1st
+3900 1st 2nd 3rd Last 3rd 2nd 1st
+3901 1st 2nd 3rd Last 3rd 2nd 1st
+3902 1st 2nd 3rd Last 3rd 2nd 1st
+3903 1st 2nd 3rd Last 3rd 2nd 1st
+3904 1st 2nd 3rd Last 3rd 2nd 1st
+3905 1st 2nd 3rd Last 3rd 2nd 1st
+3906 1st 2nd 3rd Last 3rd 2nd 1st
+3907 1st 2nd 3rd Last 3rd 2nd 1st
+3908 1st 2nd 3rd Last 3rd 2nd 1st
+3909 1st 2nd 3rd Last 3rd 2nd 1st
+3910 1st 2nd 3rd Last 3rd 2nd 1st
+3911 1st 2nd 3rd Last 3rd 2nd 1st
+3912 1st 2nd 3rd Last 3rd 2nd 1st
+3913 1st 2nd 3rd Last 3rd 2nd 1st
+3914 1st 2nd 3rd Last 3rd 2nd 1st
+3915 1st 2nd 3rd Last 3rd 2nd 1st
+3916 1st 2nd 3rd Last 3rd 2nd 1st
+3917 1st 2nd 3rd Last 3rd 2nd 1st
+3918 1st 2nd 3rd Last 3rd 2nd 1st
+3919 1st 2nd 3rd Last 3rd 2nd 1st
+3920 1st 2nd 3rd Last 3rd 2nd 1st
+3921 1st 2nd 3rd Last 3rd 2nd 1st
+3922 1st 2nd 3rd Last 3rd 2nd 1st
+3923 1st 2nd 3rd Last 3rd 2nd 1st
+3924 1st 2nd 3rd Last 3rd 2nd 1st
+3925 1st 2nd 3rd Last 3rd 2nd 1st
+3926 1st 2nd 3rd Last 3rd 2nd 1st
+3927 1st 2nd 3rd Last 3rd 2nd 1st
+3928 1st 2nd 3rd Last 3rd 2nd 1st
+3929 1st 2nd 3rd Last 3rd 2nd 1st
+3930 1st 2nd 3rd Last 3rd 2nd 1st
+3931 1st 2nd 3rd Last 3rd 2nd 1st
+3932 1st 2nd 3rd Last 3rd 2nd 1st
+3933 1st 2nd 3rd Last 3rd 2nd 1st
+3934 1st 2nd 3rd Last 3rd 2nd 1st
+3935 1st 2nd 3rd Last 3rd 2nd 1st
+3936 1st 2nd 3rd Last 3rd 2nd 1st
+3937 1st 2nd 3rd Last 3rd 2nd 1st
+3938 1st 2nd 3rd Last 3rd 2nd 1st
+3939 1st 2nd 3rd Last 3rd 2nd 1st
+3940 1st 2nd 3rd Last 3rd 2nd 1st
+3941 1st 2nd 3rd Last 3rd 2nd 1st
+3942 1st 2nd 3rd Last 3rd 2nd 1st
+3943 1st 2nd 3rd Last 3rd 2nd 1st
+3944 1st 2nd 3rd Last 3rd 2nd 1st
+3945 1st 2nd 3rd Last 3rd 2nd 1st
+3946 1st 2nd 3rd Last 3rd 2nd 1st
+3947 1st 2nd 3rd Last 3rd 2nd 1st
+3948 1st 2nd 3rd Last 3rd 2nd 1st
+3949 1st 2nd 3rd Last 3rd 2nd 1st
+3950 1st 2nd 3rd Last 3rd 2nd 1st
+3951 1st 2nd 3rd Last 3rd 2nd 1st
+3952 1st 2nd 3rd Last 3rd 2nd 1st
+3953 1st 2nd 3rd Last 3rd 2nd 1st
+3954 1st 2nd 3rd Last 3rd 2nd 1st
+3955 1st 2nd 3rd Last 3rd 2nd 1st
+3956 1st 2nd 3rd Last 3rd 2nd 1st
+3957 1st 2nd 3rd Last 3rd 2nd 1st
+3958 1st 2nd 3rd Last 3rd 2nd 1st
+3959 1st 2nd 3rd Last 3rd 2nd 1st
+3960 1st 2nd 3rd Last 3rd 2nd 1st
+3961 1st 2nd 3rd Last 3rd 2nd 1st
+3962 1st 2nd 3rd Last 3rd 2nd 1st
+3963 1st 2nd 3rd Last 3rd 2nd 1st
+3964 1st 2nd 3rd Last 3rd 2nd 1st
+3965 1st 2nd 3rd Last 3rd 2nd 1st
+3966 1st 2nd 3rd Last 3rd 2nd 1st
+3967 1st 2nd 3rd Last 3rd 2nd 1st
+3968 1st 2nd 3rd Last 3rd 2nd 1st
+3969 1st 2nd 3rd Last 3rd 2nd 1st
+3970 1st 2nd 3rd Last 3rd 2nd 1st
+3971 1st 2nd 3rd Last 3rd 2nd 1st
+3972 1st 2nd 3rd Last 3rd 2nd 1st
+3973 1st 2nd 3rd Last 3rd 2nd 1st
+3974 1st 2nd 3rd Last 3rd 2nd 1st
+3975 1st 2nd 3rd Last 3rd 2nd 1st
+3976 1st 2nd 3rd Last 3rd 2nd 1st
+3977 1st 2nd 3rd Last 3rd 2nd 1st
+3978 1st 2nd 3rd Last 3rd 2nd 1st
+3979 1st 2nd 3rd Last 3rd 2nd 1st
+3980 1st 2nd 3rd Last 3rd 2nd 1st
+3981 1st 2nd 3rd Last 3rd 2nd 1st
+3982 1st 2nd 3rd Last 3rd 2nd 1st
+3983 1st 2nd 3rd Last 3rd 2nd 1st
+3984 1st 2nd 3rd Last 3rd 2nd 1st
+3985 1st 2nd 3rd Last 3rd 2nd 1st
+3986 1st 2nd 3rd Last 3rd 2nd 1st
+3987 1st 2nd 3rd Last 3rd 2nd 1st
+3988 1st 2nd 3rd Last 3rd 2nd 1st
+3989 1st 2nd 3rd Last 3rd 2nd 1st
+3990 1st 2nd 3rd Last 3rd 2nd 1st
+3991 1st 2nd 3rd Last 3rd 2nd 1st
+3992 1st 2nd 3rd Last 3rd 2nd 1st
+3993 1st 2nd 3rd Last 3rd 2nd 1st
+3994 1st 2nd 3rd Last 3rd 2nd 1st
+3995 1st 2nd 3rd Last 3rd 2nd 1st
+3996 1st 2nd 3rd Last 3rd 2nd 1st
+3997 1st 2nd 3rd Last 3rd 2nd 1st
+3998 1st 2nd 3rd Last 3rd 2nd 1st
+3999 1st 2nd 3rd Last 3rd 2nd 1st
+4000 1st 2nd 3rd Last 3rd 2nd 1st
+4001 1st 2nd 3rd Last 3rd 2nd 1st
+4002 1st 2nd 3rd Last 3rd 2nd 1st
+4003 1st 2nd 3rd Last 3rd 2nd 1st
+4004 1st 2nd 3rd Last 3rd 2nd 1st
+4005 1st 2nd 3rd Last 3rd 2nd 1st
+4006 1st 2nd 3rd Last 3rd 2nd 1st
+4007 1st 2nd 3rd Last 3rd 2nd 1st
+4008 1st 2nd 3rd Last 3rd 2nd 1st
+4009 1st 2nd 3rd Last 3rd 2nd 1st
+4010 1st 2nd 3rd Last 3rd 2nd 1st
+4011 1st 2nd 3rd Last 3rd 2nd 1st
+4012 1st 2nd 3rd Last 3rd 2nd 1st
+4013 1st 2nd 3rd Last 3rd 2nd 1st
+4014 1st 2nd 3rd Last 3rd 2nd 1st
+4015 1st 2nd 3rd Last 3rd 2nd 1st
+4016 1st 2nd 3rd Last 3rd 2nd 1st
+4017 1st 2nd 3rd Last 3rd 2nd 1st
+4018 1st 2nd 3rd Last 3rd 2nd 1st
+4019 1st 2nd 3rd Last 3rd 2nd 1st
+4020 1st 2nd 3rd Last 3rd 2nd 1st
+4021 1st 2nd 3rd Last 3rd 2nd 1st
+4022 1st 2nd 3rd Last 3rd 2nd 1st
+4023 1st 2nd 3rd Last 3rd 2nd 1st
+4024 1st 2nd 3rd Last 3rd 2nd 1st
+4025 1st 2nd 3rd Last 3rd 2nd 1st
+4026 1st 2nd 3rd Last 3rd 2nd 1st
+4027 1st 2nd 3rd Last 3rd 2nd 1st
+4028 1st 2nd 3rd Last 3rd 2nd 1st
+4029 1st 2nd 3rd Last 3rd 2nd 1st
+4030 1st 2nd 3rd Last 3rd 2nd 1st
+4031 1st 2nd 3rd Last 3rd 2nd 1st
+4032 1st 2nd 3rd Last 3rd 2nd 1st
+4033 1st 2nd 3rd Last 3rd 2nd 1st
+4034 1st 2nd 3rd Last 3rd 2nd 1st
+4035 1st 2nd 3rd Last 3rd 2nd 1st
+4036 1st 2nd 3rd Last 3rd 2nd 1st
+4037 1st 2nd 3rd Last 3rd 2nd 1st
+4038 1st 2nd 3rd Last 3rd 2nd 1st
+4039 1st 2nd 3rd Last 3rd 2nd 1st
+4040 1st 2nd 3rd Last 3rd 2nd 1st
+4041 1st 2nd 3rd Last 3rd 2nd 1st
+4042 1st 2nd 3rd Last 3rd 2nd 1st
+4043 1st 2nd 3rd Last 3rd 2nd 1st
+4044 1st 2nd 3rd Last 3rd 2nd 1st
+4045 1st 2nd 3rd Last 3rd 2nd 1st
+4046 1st 2nd 3rd Last 3rd 2nd 1st
+4047 1st 2nd 3rd Last 3rd 2nd 1st
+4048 1st 2nd 3rd Last 3rd 2nd 1st
+4049 1st 2nd 3rd Last 3rd 2nd 1st
+4050 1st 2nd 3rd Last 3rd 2nd 1st
+4051 1st 2nd 3rd Last 3rd 2nd 1st
+4052 1st 2nd 3rd Last 3rd 2nd 1st
+4053 1st 2nd 3rd Last 3rd 2nd 1st
+4054 1st 2nd 3rd Last 3rd 2nd 1st
+4055 1st 2nd 3rd Last 3rd 2nd 1st
+4056 1st 2nd 3rd Last 3rd 2nd 1st
+4057 1st 2nd 3rd Last 3rd 2nd 1st
+4058 1st 2nd 3rd Last 3rd 2nd 1st
+4059 1st 2nd 3rd Last 3rd 2nd 1st
+4060 1st 2nd 3rd Last 3rd 2nd 1st
+4061 1st 2nd 3rd Last 3rd 2nd 1st
+4062 1st 2nd 3rd Last 3rd 2nd 1st
+4063 1st 2nd 3rd Last 3rd 2nd 1st
+4064 1st 2nd 3rd Last 3rd 2nd 1st
+4065 1st 2nd 3rd Last 3rd 2nd 1st
+4066 1st 2nd 3rd Last 3rd 2nd 1st
+4067 1st 2nd 3rd Last 3rd 2nd 1st
+4068 1st 2nd 3rd Last 3rd 2nd 1st
+4069 1st 2nd 3rd Last 3rd 2nd 1st
+4070 1st 2nd 3rd Last 3rd 2nd 1st
+4071 1st 2nd 3rd Last 3rd 2nd 1st
+4072 1st 2nd 3rd Last 3rd 2nd 1st
+4073 1st 2nd 3rd Last 3rd 2nd 1st
+4074 1st 2nd 3rd Last 3rd 2nd 1st
+4075 1st 2nd 3rd Last 3rd 2nd 1st
+4076 1st 2nd 3rd Last 3rd 2nd 1st
+4077 1st 2nd 3rd Last 3rd 2nd 1st
+4078 1st 2nd 3rd Last 3rd 2nd 1st
+4079 1st 2nd 3rd Last 3rd 2nd 1st
+4080 1st 2nd 3rd Last 3rd 2nd 1st
+4081 1st 2nd 3rd Last 3rd 2nd 1st
+4082 1st 2nd 3rd Last 3rd 2nd 1st
+4083 1st 2nd 3rd Last 3rd 2nd 1st
+4084 1st 2nd 3rd Last 3rd 2nd 1st
+4085 1st 2nd 3rd Last 3rd 2nd 1st
+4086 1st 2nd 3rd Last 3rd 2nd 1st
+4087 1st 2nd 3rd Last 3rd 2nd 1st
+4088 1st 2nd 3rd Last 3rd 2nd 1st
+4089 1st 2nd 3rd Last 3rd 2nd 1st
+4090 1st 2nd 3rd Last 3rd 2nd 1st
+4091 1st 2nd 3rd Last 3rd 2nd 1st
+4092 1st 2nd 3rd Last 3rd 2nd 1st
+4093 1st 2nd 3rd Last 3rd 2nd 1st
+4094 1st 2nd 3rd Last 3rd 2nd 1st
+4095 1st 2nd 3rd Last 3rd 2nd 1st
+4096 1st 2nd 3rd Last 3rd 2nd 1st
+4097 1st 2nd 3rd Last 3rd 2nd 1st
+4098 1st 2nd 3rd Last 3rd 2nd 1st
+4099 1st 2nd 3rd Last 3rd 2nd 1st
+4100 1st 2nd 3rd Last 3rd 2nd 1st
+4101 1st 2nd 3rd Last 3rd 2nd 1st
+4102 1st 2nd 3rd Last 3rd 2nd 1st
+4103 1st 2nd 3rd Last 3rd 2nd 1st
+4104 1st 2nd 3rd Last 3rd 2nd 1st
+4105 1st 2nd 3rd Last 3rd 2nd 1st
+4106 1st 2nd 3rd Last 3rd 2nd 1st
+4107 1st 2nd 3rd Last 3rd 2nd 1st
+4108 1st 2nd 3rd Last 3rd 2nd 1st
+4109 1st 2nd 3rd Last 3rd 2nd 1st
+4110 1st 2nd 3rd Last 3rd 2nd 1st
+4111 1st 2nd 3rd Last 3rd 2nd 1st
+4112 1st 2nd 3rd Last 3rd 2nd 1st
+4113 1st 2nd 3rd Last 3rd 2nd 1st
+4114 1st 2nd 3rd Last 3rd 2nd 1st
+4115 1st 2nd 3rd Last 3rd 2nd 1st
+4116 1st 2nd 3rd Last 3rd 2nd 1st
+4117 1st 2nd 3rd Last 3rd 2nd 1st
+4118 1st 2nd 3rd Last 3rd 2nd 1st
+4119 1st 2nd 3rd Last 3rd 2nd 1st
+4120 1st 2nd 3rd Last 3rd 2nd 1st
+4121 1st 2nd 3rd Last 3rd 2nd 1st
+4122 1st 2nd 3rd Last 3rd 2nd 1st
+4123 1st 2nd 3rd Last 3rd 2nd 1st
+4124 1st 2nd 3rd Last 3rd 2nd 1st
+4125 1st 2nd 3rd Last 3rd 2nd 1st
+4126 1st 2nd 3rd Last 3rd 2nd 1st
+4127 1st 2nd 3rd Last 3rd 2nd 1st
+4128 1st 2nd 3rd Last 3rd 2nd 1st
+4129 1st 2nd 3rd Last 3rd 2nd 1st
+4130 1st 2nd 3rd Last 3rd 2nd 1st
+4131 1st 2nd 3rd Last 3rd 2nd 1st
+4132 1st 2nd 3rd Last 3rd 2nd 1st
+4133 1st 2nd 3rd Last 3rd 2nd 1st
+4134 1st 2nd 3rd Last 3rd 2nd 1st
+4135 1st 2nd 3rd Last 3rd 2nd 1st
+4136 1st 2nd 3rd Last 3rd 2nd 1st
+4137 1st 2nd 3rd Last 3rd 2nd 1st
+4138 1st 2nd 3rd Last 3rd 2nd 1st
+4139 1st 2nd 3rd Last 3rd 2nd 1st
+4140 1st 2nd 3rd Last 3rd 2nd 1st
+4141 1st 2nd 3rd Last 3rd 2nd 1st
+4142 1st 2nd 3rd Last 3rd 2nd 1st
+4143 1st 2nd 3rd Last 3rd 2nd 1st
+4144 1st 2nd 3rd Last 3rd 2nd 1st
+4145 1st 2nd 3rd Last 3rd 2nd 1st
+4146 1st 2nd 3rd Last 3rd 2nd 1st
+4147 1st 2nd 3rd Last 3rd 2nd 1st
+4148 1st 2nd 3rd Last 3rd 2nd 1st
+4149 1st 2nd 3rd Last 3rd 2nd 1st
+4150 1st 2nd 3rd Last 3rd 2nd 1st
+4151 1st 2nd 3rd Last 3rd 2nd 1st
+4152 1st 2nd 3rd Last 3rd 2nd 1st
+4153 1st 2nd 3rd Last 3rd 2nd 1st
+4154 1st 2nd 3rd Last 3rd 2nd 1st
+4155 1st 2nd 3rd Last 3rd 2nd 1st
+4156 1st 2nd 3rd Last 3rd 2nd 1st
+4157 1st 2nd 3rd Last 3rd 2nd 1st
+4158 1st 2nd 3rd Last 3rd 2nd 1st
+4159 1st 2nd 3rd Last 3rd 2nd 1st
+4160 1st 2nd 3rd Last 3rd 2nd 1st
+4161 1st 2nd 3rd Last 3rd 2nd 1st
+4162 1st 2nd 3rd Last 3rd 2nd 1st
+4163 1st 2nd 3rd Last 3rd 2nd 1st
+4164 1st 2nd 3rd Last 3rd 2nd 1st
+4165 1st 2nd 3rd Last 3rd 2nd 1st
+4166 1st 2nd 3rd Last 3rd 2nd 1st
+4167 1st 2nd 3rd Last 3rd 2nd 1st
+4168 1st 2nd 3rd Last 3rd 2nd 1st
+4169 1st 2nd 3rd Last 3rd 2nd 1st
+4170 1st 2nd 3rd Last 3rd 2nd 1st
+4171 1st 2nd 3rd Last 3rd 2nd 1st
+4172 1st 2nd 3rd Last 3rd 2nd 1st
+4173 1st 2nd 3rd Last 3rd 2nd 1st
+4174 1st 2nd 3rd Last 3rd 2nd 1st
+4175 1st 2nd 3rd Last 3rd 2nd 1st
+4176 1st 2nd 3rd Last 3rd 2nd 1st
+4177 1st 2nd 3rd Last 3rd 2nd 1st
+4178 1st 2nd 3rd Last 3rd 2nd 1st
+4179 1st 2nd 3rd Last 3rd 2nd 1st
+4180 1st 2nd 3rd Last 3rd 2nd 1st
+4181 1st 2nd 3rd Last 3rd 2nd 1st
+4182 1st 2nd 3rd Last 3rd 2nd 1st
+4183 1st 2nd 3rd Last 3rd 2nd 1st
+4184 1st 2nd 3rd Last 3rd 2nd 1st
+4185 1st 2nd 3rd Last 3rd 2nd 1st
+4186 1st 2nd 3rd Last 3rd 2nd 1st
+4187 1st 2nd 3rd Last 3rd 2nd 1st
+4188 1st 2nd 3rd Last 3rd 2nd 1st
+4189 1st 2nd 3rd Last 3rd 2nd 1st
+4190 1st 2nd 3rd Last 3rd 2nd 1st
+4191 1st 2nd 3rd Last 3rd 2nd 1st
+4192 1st 2nd 3rd Last 3rd 2nd 1st
+4193 1st 2nd 3rd Last 3rd 2nd 1st
+4194 1st 2nd 3rd Last 3rd 2nd 1st
+4195 1st 2nd 3rd Last 3rd 2nd 1st
+4196 1st 2nd 3rd Last 3rd 2nd 1st
+4197 1st 2nd 3rd Last 3rd 2nd 1st
+4198 1st 2nd 3rd Last 3rd 2nd 1st
+4199 1st 2nd 3rd Last 3rd 2nd 1st
+4200 1st 2nd 3rd Last 3rd 2nd 1st
+4201 1st 2nd 3rd Last 3rd 2nd 1st
+4202 1st 2nd 3rd Last 3rd 2nd 1st
+4203 1st 2nd 3rd Last 3rd 2nd 1st
+4204 1st 2nd 3rd Last 3rd 2nd 1st
+4205 1st 2nd 3rd Last 3rd 2nd 1st
+4206 1st 2nd 3rd Last 3rd 2nd 1st
+4207 1st 2nd 3rd Last 3rd 2nd 1st
+4208 1st 2nd 3rd Last 3rd 2nd 1st
+4209 1st 2nd 3rd Last 3rd 2nd 1st
+4210 1st 2nd 3rd Last 3rd 2nd 1st
+4211 1st 2nd 3rd Last 3rd 2nd 1st
+4212 1st 2nd 3rd Last 3rd 2nd 1st
+4213 1st 2nd 3rd Last 3rd 2nd 1st
+4214 1st 2nd 3rd Last 3rd 2nd 1st
+4215 1st 2nd 3rd Last 3rd 2nd 1st
+4216 1st 2nd 3rd Last 3rd 2nd 1st
+4217 1st 2nd 3rd Last 3rd 2nd 1st
+4218 1st 2nd 3rd Last 3rd 2nd 1st
+4219 1st 2nd 3rd Last 3rd 2nd 1st
+4220 1st 2nd 3rd Last 3rd 2nd 1st
+4221 1st 2nd 3rd Last 3rd 2nd 1st
+4222 1st 2nd 3rd Last 3rd 2nd 1st
+4223 1st 2nd 3rd Last 3rd 2nd 1st
+4224 1st 2nd 3rd Last 3rd 2nd 1st
+4225 1st 2nd 3rd Last 3rd 2nd 1st
+4226 1st 2nd 3rd Last 3rd 2nd 1st
+4227 1st 2nd 3rd Last 3rd 2nd 1st
+4228 1st 2nd 3rd Last 3rd 2nd 1st
+4229 1st 2nd 3rd Last 3rd 2nd 1st
+4230 1st 2nd 3rd Last 3rd 2nd 1st
+4231 1st 2nd 3rd Last 3rd 2nd 1st
+4232 1st 2nd 3rd Last 3rd 2nd 1st
+4233 1st 2nd 3rd Last 3rd 2nd 1st
+4234 1st 2nd 3rd Last 3rd 2nd 1st
+4235 1st 2nd 3rd Last 3rd 2nd 1st
+4236 1st 2nd 3rd Last 3rd 2nd 1st
+4237 1st 2nd 3rd Last 3rd 2nd 1st
+4238 1st 2nd 3rd Last 3rd 2nd 1st
+4239 1st 2nd 3rd Last 3rd 2nd 1st
+4240 1st 2nd 3rd Last 3rd 2nd 1st
+4241 1st 2nd 3rd Last 3rd 2nd 1st
+4242 1st 2nd 3rd Last 3rd 2nd 1st
+4243 1st 2nd 3rd Last 3rd 2nd 1st
+4244 1st 2nd 3rd Last 3rd 2nd 1st
+4245 1st 2nd 3rd Last 3rd 2nd 1st
+4246 1st 2nd 3rd Last 3rd 2nd 1st
+4247 1st 2nd 3rd Last 3rd 2nd 1st
+4248 1st 2nd 3rd Last 3rd 2nd 1st
+4249 1st 2nd 3rd Last 3rd 2nd 1st
+4250 1st 2nd 3rd Last 3rd 2nd 1st
+4251 1st 2nd 3rd Last 3rd 2nd 1st
+4252 1st 2nd 3rd Last 3rd 2nd 1st
+4253 1st 2nd 3rd Last 3rd 2nd 1st
+4254 1st 2nd 3rd Last 3rd 2nd 1st
+4255 1st 2nd 3rd Last 3rd 2nd 1st
+4256 1st 2nd 3rd Last 3rd 2nd 1st
+4257 1st 2nd 3rd Last 3rd 2nd 1st
+4258 1st 2nd 3rd Last 3rd 2nd 1st
+4259 1st 2nd 3rd Last 3rd 2nd 1st
+4260 1st 2nd 3rd Last 3rd 2nd 1st
+4261 1st 2nd 3rd Last 3rd 2nd 1st
+4262 1st 2nd 3rd Last 3rd 2nd 1st
+4263 1st 2nd 3rd Last 3rd 2nd 1st
+4264 1st 2nd 3rd Last 3rd 2nd 1st
+4265 1st 2nd 3rd Last 3rd 2nd 1st
+4266 1st 2nd 3rd Last 3rd 2nd 1st
+4267 1st 2nd 3rd Last 3rd 2nd 1st
+4268 1st 2nd 3rd Last 3rd 2nd 1st
+4269 1st 2nd 3rd Last 3rd 2nd 1st
+4270 1st 2nd 3rd Last 3rd 2nd 1st
+4271 1st 2nd 3rd Last 3rd 2nd 1st
+4272 1st 2nd 3rd Last 3rd 2nd 1st
+4273 1st 2nd 3rd Last 3rd 2nd 1st
+4274 1st 2nd 3rd Last 3rd 2nd 1st
+4275 1st 2nd 3rd Last 3rd 2nd 1st
+4276 1st 2nd 3rd Last 3rd 2nd 1st
+4277 1st 2nd 3rd Last 3rd 2nd 1st
+4278 1st 2nd 3rd Last 3rd 2nd 1st
+4279 1st 2nd 3rd Last 3rd 2nd 1st
+4280 1st 2nd 3rd Last 3rd 2nd 1st
+4281 1st 2nd 3rd Last 3rd 2nd 1st
+4282 1st 2nd 3rd Last 3rd 2nd 1st
+4283 1st 2nd 3rd Last 3rd 2nd 1st
+4284 1st 2nd 3rd Last 3rd 2nd 1st
+4285 1st 2nd 3rd Last 3rd 2nd 1st
+4286 1st 2nd 3rd Last 3rd 2nd 1st
+4287 1st 2nd 3rd Last 3rd 2nd 1st
+4288 1st 2nd 3rd Last 3rd 2nd 1st
+4289 1st 2nd 3rd Last 3rd 2nd 1st
+4290 1st 2nd 3rd Last 3rd 2nd 1st
+4291 1st 2nd 3rd Last 3rd 2nd 1st
+4292 1st 2nd 3rd Last 3rd 2nd 1st
+4293 1st 2nd 3rd Last 3rd 2nd 1st
+4294 1st 2nd 3rd Last 3rd 2nd 1st
+4295 1st 2nd 3rd Last 3rd 2nd 1st
+4296 1st 2nd 3rd Last 3rd 2nd 1st
+4297 1st 2nd 3rd Last 3rd 2nd 1st
+4298 1st 2nd 3rd Last 3rd 2nd 1st
+4299 1st 2nd 3rd Last 3rd 2nd 1st
+4300 1st 2nd 3rd Last 3rd 2nd 1st
+4301 1st 2nd 3rd Last 3rd 2nd 1st
+4302 1st 2nd 3rd Last 3rd 2nd 1st
+4303 1st 2nd 3rd Last 3rd 2nd 1st
+4304 1st 2nd 3rd Last 3rd 2nd 1st
+4305 1st 2nd 3rd Last 3rd 2nd 1st
+4306 1st 2nd 3rd Last 3rd 2nd 1st
+4307 1st 2nd 3rd Last 3rd 2nd 1st
+4308 1st 2nd 3rd Last 3rd 2nd 1st
+4309 1st 2nd 3rd Last 3rd 2nd 1st
+4310 1st 2nd 3rd Last 3rd 2nd 1st
+4311 1st 2nd 3rd Last 3rd 2nd 1st
+4312 1st 2nd 3rd Last 3rd 2nd 1st
+4313 1st 2nd 3rd Last 3rd 2nd 1st
+4314 1st 2nd 3rd Last 3rd 2nd 1st
+4315 1st 2nd 3rd Last 3rd 2nd 1st
+4316 1st 2nd 3rd Last 3rd 2nd 1st
+4317 1st 2nd 3rd Last 3rd 2nd 1st
+4318 1st 2nd 3rd Last 3rd 2nd 1st
+4319 1st 2nd 3rd Last 3rd 2nd 1st
+4320 1st 2nd 3rd Last 3rd 2nd 1st
+4321 1st 2nd 3rd Last 3rd 2nd 1st
+4322 1st 2nd 3rd Last 3rd 2nd 1st
+4323 1st 2nd 3rd Last 3rd 2nd 1st
+4324 1st 2nd 3rd Last 3rd 2nd 1st
+4325 1st 2nd 3rd Last 3rd 2nd 1st
+4326 1st 2nd 3rd Last 3rd 2nd 1st
+4327 1st 2nd 3rd Last 3rd 2nd 1st
+4328 1st 2nd 3rd Last 3rd 2nd 1st
+4329 1st 2nd 3rd Last 3rd 2nd 1st
+4330 1st 2nd 3rd Last 3rd 2nd 1st
+4331 1st 2nd 3rd Last 3rd 2nd 1st
+4332 1st 2nd 3rd Last 3rd 2nd 1st
+4333 1st 2nd 3rd Last 3rd 2nd 1st
+4334 1st 2nd 3rd Last 3rd 2nd 1st
+4335 1st 2nd 3rd Last 3rd 2nd 1st
+4336 1st 2nd 3rd Last 3rd 2nd 1st
+4337 1st 2nd 3rd Last 3rd 2nd 1st
+4338 1st 2nd 3rd Last 3rd 2nd 1st
+4339 1st 2nd 3rd Last 3rd 2nd 1st
+4340 1st 2nd 3rd Last 3rd 2nd 1st
+4341 1st 2nd 3rd Last 3rd 2nd 1st
+4342 1st 2nd 3rd Last 3rd 2nd 1st
+4343 1st 2nd 3rd Last 3rd 2nd 1st
+4344 1st 2nd 3rd Last 3rd 2nd 1st
+4345 1st 2nd 3rd Last 3rd 2nd 1st
+4346 1st 2nd 3rd Last 3rd 2nd 1st
+4347 1st 2nd 3rd Last 3rd 2nd 1st
+4348 1st 2nd 3rd Last 3rd 2nd 1st
+4349 1st 2nd 3rd Last 3rd 2nd 1st
+4350 1st 2nd 3rd Last 3rd 2nd 1st
+4351 1st 2nd 3rd Last 3rd 2nd 1st
+4352 1st 2nd 3rd Last 3rd 2nd 1st
+4353 1st 2nd 3rd Last 3rd 2nd 1st
+4354 1st 2nd 3rd Last 3rd 2nd 1st
+4355 1st 2nd 3rd Last 3rd 2nd 1st
+4356 1st 2nd 3rd Last 3rd 2nd 1st
+4357 1st 2nd 3rd Last 3rd 2nd 1st
+4358 1st 2nd 3rd Last 3rd 2nd 1st
+4359 1st 2nd 3rd Last 3rd 2nd 1st
+4360 1st 2nd 3rd Last 3rd 2nd 1st
+4361 1st 2nd 3rd Last 3rd 2nd 1st
+4362 1st 2nd 3rd Last 3rd 2nd 1st
+4363 1st 2nd 3rd Last 3rd 2nd 1st
+4364 1st 2nd 3rd Last 3rd 2nd 1st
+4365 1st 2nd 3rd Last 3rd 2nd 1st
+4366 1st 2nd 3rd Last 3rd 2nd 1st
+4367 1st 2nd 3rd Last 3rd 2nd 1st
+4368 1st 2nd 3rd Last 3rd 2nd 1st
+4369 1st 2nd 3rd Last 3rd 2nd 1st
+4370 1st 2nd 3rd Last 3rd 2nd 1st
+4371 1st 2nd 3rd Last 3rd 2nd 1st
+4372 1st 2nd 3rd Last 3rd 2nd 1st
+4373 1st 2nd 3rd Last 3rd 2nd 1st
+4374 1st 2nd 3rd Last 3rd 2nd 1st
+4375 1st 2nd 3rd Last 3rd 2nd 1st
+4376 1st 2nd 3rd Last 3rd 2nd 1st
+4377 1st 2nd 3rd Last 3rd 2nd 1st
+4378 1st 2nd 3rd Last 3rd 2nd 1st
+4379 1st 2nd 3rd Last 3rd 2nd 1st
+4380 1st 2nd 3rd Last 3rd 2nd 1st
+4381 1st 2nd 3rd Last 3rd 2nd 1st
+4382 1st 2nd 3rd Last 3rd 2nd 1st
+4383 1st 2nd 3rd Last 3rd 2nd 1st
+4384 1st 2nd 3rd Last 3rd 2nd 1st
+4385 1st 2nd 3rd Last 3rd 2nd 1st
+4386 1st 2nd 3rd Last 3rd 2nd 1st
+4387 1st 2nd 3rd Last 3rd 2nd 1st
+4388 1st 2nd 3rd Last 3rd 2nd 1st
+4389 1st 2nd 3rd Last 3rd 2nd 1st
+4390 1st 2nd 3rd Last 3rd 2nd 1st
+4391 1st 2nd 3rd Last 3rd 2nd 1st
+4392 1st 2nd 3rd Last 3rd 2nd 1st
+4393 1st 2nd 3rd Last 3rd 2nd 1st
+4394 1st 2nd 3rd Last 3rd 2nd 1st
+4395 1st 2nd 3rd Last 3rd 2nd 1st
+4396 1st 2nd 3rd Last 3rd 2nd 1st
+4397 1st 2nd 3rd Last 3rd 2nd 1st
+4398 1st 2nd 3rd Last 3rd 2nd 1st
+4399 1st 2nd 3rd Last 3rd 2nd 1st
+4400 1st 2nd 3rd Last 3rd 2nd 1st
+4401 1st 2nd 3rd Last 3rd 2nd 1st
+4402 1st 2nd 3rd Last 3rd 2nd 1st
+4403 1st 2nd 3rd Last 3rd 2nd 1st
+4404 1st 2nd 3rd Last 3rd 2nd 1st
+4405 1st 2nd 3rd Last 3rd 2nd 1st
+4406 1st 2nd 3rd Last 3rd 2nd 1st
+4407 1st 2nd 3rd Last 3rd 2nd 1st
+4408 1st 2nd 3rd Last 3rd 2nd 1st
+4409 1st 2nd 3rd Last 3rd 2nd 1st
+4410 1st 2nd 3rd Last 3rd 2nd 1st
+4411 1st 2nd 3rd Last 3rd 2nd 1st
+4412 1st 2nd 3rd Last 3rd 2nd 1st
+4413 1st 2nd 3rd Last 3rd 2nd 1st
+4414 1st 2nd 3rd Last 3rd 2nd 1st
+4415 1st 2nd 3rd Last 3rd 2nd 1st
+4416 1st 2nd 3rd Last 3rd 2nd 1st
+4417 1st 2nd 3rd Last 3rd 2nd 1st
+4418 1st 2nd 3rd Last 3rd 2nd 1st
+4419 1st 2nd 3rd Last 3rd 2nd 1st
+4420 1st 2nd 3rd Last 3rd 2nd 1st
+4421 1st 2nd 3rd Last 3rd 2nd 1st
+4422 1st 2nd 3rd Last 3rd 2nd 1st
+4423 1st 2nd 3rd Last 3rd 2nd 1st
+4424 1st 2nd 3rd Last 3rd 2nd 1st
+4425 1st 2nd 3rd Last 3rd 2nd 1st
+4426 1st 2nd 3rd Last 3rd 2nd 1st
+4427 1st 2nd 3rd Last 3rd 2nd 1st
+4428 1st 2nd 3rd Last 3rd 2nd 1st
+4429 1st 2nd 3rd Last 3rd 2nd 1st
+4430 1st 2nd 3rd Last 3rd 2nd 1st
+4431 1st 2nd 3rd Last 3rd 2nd 1st
+4432 1st 2nd 3rd Last 3rd 2nd 1st
+4433 1st 2nd 3rd Last 3rd 2nd 1st
+4434 1st 2nd 3rd Last 3rd 2nd 1st
+4435 1st 2nd 3rd Last 3rd 2nd 1st
+4436 1st 2nd 3rd Last 3rd 2nd 1st
+4437 1st 2nd 3rd Last 3rd 2nd 1st
+4438 1st 2nd 3rd Last 3rd 2nd 1st
+4439 1st 2nd 3rd Last 3rd 2nd 1st
+4440 1st 2nd 3rd Last 3rd 2nd 1st
+4441 1st 2nd 3rd Last 3rd 2nd 1st
+4442 1st 2nd 3rd Last 3rd 2nd 1st
+4443 1st 2nd 3rd Last 3rd 2nd 1st
+4444 1st 2nd 3rd Last 3rd 2nd 1st
+4445 1st 2nd 3rd Last 3rd 2nd 1st
+4446 1st 2nd 3rd Last 3rd 2nd 1st
+4447 1st 2nd 3rd Last 3rd 2nd 1st
+4448 1st 2nd 3rd Last 3rd 2nd 1st
+4449 1st 2nd 3rd Last 3rd 2nd 1st
+4450 1st 2nd 3rd Last 3rd 2nd 1st
+4451 1st 2nd 3rd Last 3rd 2nd 1st
+4452 1st 2nd 3rd Last 3rd 2nd 1st
+4453 1st 2nd 3rd Last 3rd 2nd 1st
+4454 1st 2nd 3rd Last 3rd 2nd 1st
+4455 1st 2nd 3rd Last 3rd 2nd 1st
+4456 1st 2nd 3rd Last 3rd 2nd 1st
+4457 1st 2nd 3rd Last 3rd 2nd 1st
+4458 1st 2nd 3rd Last 3rd 2nd 1st
+4459 1st 2nd 3rd Last 3rd 2nd 1st
+4460 1st 2nd 3rd Last 3rd 2nd 1st
+4461 1st 2nd 3rd Last 3rd 2nd 1st
+4462 1st 2nd 3rd Last 3rd 2nd 1st
+4463 1st 2nd 3rd Last 3rd 2nd 1st
+4464 1st 2nd 3rd Last 3rd 2nd 1st
+4465 1st 2nd 3rd Last 3rd 2nd 1st
+4466 1st 2nd 3rd Last 3rd 2nd 1st
+4467 1st 2nd 3rd Last 3rd 2nd 1st
+4468 1st 2nd 3rd Last 3rd 2nd 1st
+4469 1st 2nd 3rd Last 3rd 2nd 1st
+4470 1st 2nd 3rd Last 3rd 2nd 1st
+4471 1st 2nd 3rd Last 3rd 2nd 1st
+4472 1st 2nd 3rd Last 3rd 2nd 1st
+4473 1st 2nd 3rd Last 3rd 2nd 1st
+4474 1st 2nd 3rd Last 3rd 2nd 1st
+4475 1st 2nd 3rd Last 3rd 2nd 1st
+4476 1st 2nd 3rd Last 3rd 2nd 1st
+4477 1st 2nd 3rd Last 3rd 2nd 1st
+4478 1st 2nd 3rd Last 3rd 2nd 1st
+4479 1st 2nd 3rd Last 3rd 2nd 1st
+4480 1st 2nd 3rd Last 3rd 2nd 1st
+4481 1st 2nd 3rd Last 3rd 2nd 1st
+4482 1st 2nd 3rd Last 3rd 2nd 1st
+4483 1st 2nd 3rd Last 3rd 2nd 1st
+4484 1st 2nd 3rd Last 3rd 2nd 1st
+4485 1st 2nd 3rd Last 3rd 2nd 1st
+4486 1st 2nd 3rd Last 3rd 2nd 1st
+4487 1st 2nd 3rd Last 3rd 2nd 1st
+4488 1st 2nd 3rd Last 3rd 2nd 1st
+4489 1st 2nd 3rd Last 3rd 2nd 1st
+4490 1st 2nd 3rd Last 3rd 2nd 1st
+4491 1st 2nd 3rd Last 3rd 2nd 1st
+4492 1st 2nd 3rd Last 3rd 2nd 1st
+4493 1st 2nd 3rd Last 3rd 2nd 1st
+4494 1st 2nd 3rd Last 3rd 2nd 1st
+4495 1st 2nd 3rd Last 3rd 2nd 1st
+4496 1st 2nd 3rd Last 3rd 2nd 1st
+4497 1st 2nd 3rd Last 3rd 2nd 1st
+4498 1st 2nd 3rd Last 3rd 2nd 1st
+4499 1st 2nd 3rd Last 3rd 2nd 1st
+4500 1st 2nd 3rd Last 3rd 2nd 1st
+4501 1st 2nd 3rd Last 3rd 2nd 1st
+4502 1st 2nd 3rd Last 3rd 2nd 1st
+4503 1st 2nd 3rd Last 3rd 2nd 1st
+4504 1st 2nd 3rd Last 3rd 2nd 1st
+4505 1st 2nd 3rd Last 3rd 2nd 1st
+4506 1st 2nd 3rd Last 3rd 2nd 1st
+4507 1st 2nd 3rd Last 3rd 2nd 1st
+4508 1st 2nd 3rd Last 3rd 2nd 1st
+4509 1st 2nd 3rd Last 3rd 2nd 1st
+4510 1st 2nd 3rd Last 3rd 2nd 1st
+4511 1st 2nd 3rd Last 3rd 2nd 1st
+4512 1st 2nd 3rd Last 3rd 2nd 1st
+4513 1st 2nd 3rd Last 3rd 2nd 1st
+4514 1st 2nd 3rd Last 3rd 2nd 1st
+4515 1st 2nd 3rd Last 3rd 2nd 1st
+4516 1st 2nd 3rd Last 3rd 2nd 1st
+4517 1st 2nd 3rd Last 3rd 2nd 1st
+4518 1st 2nd 3rd Last 3rd 2nd 1st
+4519 1st 2nd 3rd Last 3rd 2nd 1st
+4520 1st 2nd 3rd Last 3rd 2nd 1st
+4521 1st 2nd 3rd Last 3rd 2nd 1st
+4522 1st 2nd 3rd Last 3rd 2nd 1st
+4523 1st 2nd 3rd Last 3rd 2nd 1st
+4524 1st 2nd 3rd Last 3rd 2nd 1st
+4525 1st 2nd 3rd Last 3rd 2nd 1st
+4526 1st 2nd 3rd Last 3rd 2nd 1st
+4527 1st 2nd 3rd Last 3rd 2nd 1st
+4528 1st 2nd 3rd Last 3rd 2nd 1st
+4529 1st 2nd 3rd Last 3rd 2nd 1st
+4530 1st 2nd 3rd Last 3rd 2nd 1st
+4531 1st 2nd 3rd Last 3rd 2nd 1st
+4532 1st 2nd 3rd Last 3rd 2nd 1st
+4533 1st 2nd 3rd Last 3rd 2nd 1st
+4534 1st 2nd 3rd Last 3rd 2nd 1st
+4535 1st 2nd 3rd Last 3rd 2nd 1st
+4536 1st 2nd 3rd Last 3rd 2nd 1st
+4537 1st 2nd 3rd Last 3rd 2nd 1st
+4538 1st 2nd 3rd Last 3rd 2nd 1st
+4539 1st 2nd 3rd Last 3rd 2nd 1st
+4540 1st 2nd 3rd Last 3rd 2nd 1st
+4541 1st 2nd 3rd Last 3rd 2nd 1st
+4542 1st 2nd 3rd Last 3rd 2nd 1st
+4543 1st 2nd 3rd Last 3rd 2nd 1st
+4544 1st 2nd 3rd Last 3rd 2nd 1st
+4545 1st 2nd 3rd Last 3rd 2nd 1st
+4546 1st 2nd 3rd Last 3rd 2nd 1st
+4547 1st 2nd 3rd Last 3rd 2nd 1st
+4548 1st 2nd 3rd Last 3rd 2nd 1st
+4549 1st 2nd 3rd Last 3rd 2nd 1st
+4550 1st 2nd 3rd Last 3rd 2nd 1st
+4551 1st 2nd 3rd Last 3rd 2nd 1st
+4552 1st 2nd 3rd Last 3rd 2nd 1st
+4553 1st 2nd 3rd Last 3rd 2nd 1st
+4554 1st 2nd 3rd Last 3rd 2nd 1st
+4555 1st 2nd 3rd Last 3rd 2nd 1st
+4556 1st 2nd 3rd Last 3rd 2nd 1st
+4557 1st 2nd 3rd Last 3rd 2nd 1st
+4558 1st 2nd 3rd Last 3rd 2nd 1st
+4559 1st 2nd 3rd Last 3rd 2nd 1st
+4560 1st 2nd 3rd Last 3rd 2nd 1st
+4561 1st 2nd 3rd Last 3rd 2nd 1st
+4562 1st 2nd 3rd Last 3rd 2nd 1st
+4563 1st 2nd 3rd Last 3rd 2nd 1st
+4564 1st 2nd 3rd Last 3rd 2nd 1st
+4565 1st 2nd 3rd Last 3rd 2nd 1st
+4566 1st 2nd 3rd Last 3rd 2nd 1st
+4567 1st 2nd 3rd Last 3rd 2nd 1st
+4568 1st 2nd 3rd Last 3rd 2nd 1st
+4569 1st 2nd 3rd Last 3rd 2nd 1st
+4570 1st 2nd 3rd Last 3rd 2nd 1st
+4571 1st 2nd 3rd Last 3rd 2nd 1st
+4572 1st 2nd 3rd Last 3rd 2nd 1st
+4573 1st 2nd 3rd Last 3rd 2nd 1st
+4574 1st 2nd 3rd Last 3rd 2nd 1st
+4575 1st 2nd 3rd Last 3rd 2nd 1st
+4576 1st 2nd 3rd Last 3rd 2nd 1st
+4577 1st 2nd 3rd Last 3rd 2nd 1st
+4578 1st 2nd 3rd Last 3rd 2nd 1st
+4579 1st 2nd 3rd Last 3rd 2nd 1st
+4580 1st 2nd 3rd Last 3rd 2nd 1st
+4581 1st 2nd 3rd Last 3rd 2nd 1st
+4582 1st 2nd 3rd Last 3rd 2nd 1st
+4583 1st 2nd 3rd Last 3rd 2nd 1st
+4584 1st 2nd 3rd Last 3rd 2nd 1st
+4585 1st 2nd 3rd Last 3rd 2nd 1st
+4586 1st 2nd 3rd Last 3rd 2nd 1st
+4587 1st 2nd 3rd Last 3rd 2nd 1st
+4588 1st 2nd 3rd Last 3rd 2nd 1st
+4589 1st 2nd 3rd Last 3rd 2nd 1st
+4590 1st 2nd 3rd Last 3rd 2nd 1st
+4591 1st 2nd 3rd Last 3rd 2nd 1st
+4592 1st 2nd 3rd Last 3rd 2nd 1st
+4593 1st 2nd 3rd Last 3rd 2nd 1st
+4594 1st 2nd 3rd Last 3rd 2nd 1st
+4595 1st 2nd 3rd Last 3rd 2nd 1st
+4596 1st 2nd 3rd Last 3rd 2nd 1st
+4597 1st 2nd 3rd Last 3rd 2nd 1st
+4598 1st 2nd 3rd Last 3rd 2nd 1st
+4599 1st 2nd 3rd Last 3rd 2nd 1st
+4600 1st 2nd 3rd Last 3rd 2nd 1st
+4601 1st 2nd 3rd Last 3rd 2nd 1st
+4602 1st 2nd 3rd Last 3rd 2nd 1st
+4603 1st 2nd 3rd Last 3rd 2nd 1st
+4604 1st 2nd 3rd Last 3rd 2nd 1st
+4605 1st 2nd 3rd Last 3rd 2nd 1st
+4606 1st 2nd 3rd Last 3rd 2nd 1st
+4607 1st 2nd 3rd Last 3rd 2nd 1st
+4608 1st 2nd 3rd Last 3rd 2nd 1st
+4609 1st 2nd 3rd Last 3rd 2nd 1st
+4610 1st 2nd 3rd Last 3rd 2nd 1st
+4611 1st 2nd 3rd Last 3rd 2nd 1st
+4612 1st 2nd 3rd Last 3rd 2nd 1st
+4613 1st 2nd 3rd Last 3rd 2nd 1st
+4614 1st 2nd 3rd Last 3rd 2nd 1st
+4615 1st 2nd 3rd Last 3rd 2nd 1st
+4616 1st 2nd 3rd Last 3rd 2nd 1st
+4617 1st 2nd 3rd Last 3rd 2nd 1st
+4618 1st 2nd 3rd Last 3rd 2nd 1st
+4619 1st 2nd 3rd Last 3rd 2nd 1st
+4620 1st 2nd 3rd Last 3rd 2nd 1st
+4621 1st 2nd 3rd Last 3rd 2nd 1st
+4622 1st 2nd 3rd Last 3rd 2nd 1st
+4623 1st 2nd 3rd Last 3rd 2nd 1st
+4624 1st 2nd 3rd Last 3rd 2nd 1st
+4625 1st 2nd 3rd Last 3rd 2nd 1st
+4626 1st 2nd 3rd Last 3rd 2nd 1st
+4627 1st 2nd 3rd Last 3rd 2nd 1st
+4628 1st 2nd 3rd Last 3rd 2nd 1st
+4629 1st 2nd 3rd Last 3rd 2nd 1st
+4630 1st 2nd 3rd Last 3rd 2nd 1st
+4631 1st 2nd 3rd Last 3rd 2nd 1st
+4632 1st 2nd 3rd Last 3rd 2nd 1st
+4633 1st 2nd 3rd Last 3rd 2nd 1st
+4634 1st 2nd 3rd Last 3rd 2nd 1st
+4635 1st 2nd 3rd Last 3rd 2nd 1st
+4636 1st 2nd 3rd Last 3rd 2nd 1st
+4637 1st 2nd 3rd Last 3rd 2nd 1st
+4638 1st 2nd 3rd Last 3rd 2nd 1st
+4639 1st 2nd 3rd Last 3rd 2nd 1st
+4640 1st 2nd 3rd Last 3rd 2nd 1st
+4641 1st 2nd 3rd Last 3rd 2nd 1st
+4642 1st 2nd 3rd Last 3rd 2nd 1st
+4643 1st 2nd 3rd Last 3rd 2nd 1st
+4644 1st 2nd 3rd Last 3rd 2nd 1st
+4645 1st 2nd 3rd Last 3rd 2nd 1st
+4646 1st 2nd 3rd Last 3rd 2nd 1st
+4647 1st 2nd 3rd Last 3rd 2nd 1st
+4648 1st 2nd 3rd Last 3rd 2nd 1st
+4649 1st 2nd 3rd Last 3rd 2nd 1st
+4650 1st 2nd 3rd Last 3rd 2nd 1st
+4651 1st 2nd 3rd Last 3rd 2nd 1st
+4652 1st 2nd 3rd Last 3rd 2nd 1st
+4653 1st 2nd 3rd Last 3rd 2nd 1st
+4654 1st 2nd 3rd Last 3rd 2nd 1st
+4655 1st 2nd 3rd Last 3rd 2nd 1st
+4656 1st 2nd 3rd Last 3rd 2nd 1st
+4657 1st 2nd 3rd Last 3rd 2nd 1st
+4658 1st 2nd 3rd Last 3rd 2nd 1st
+4659 1st 2nd 3rd Last 3rd 2nd 1st
+4660 1st 2nd 3rd Last 3rd 2nd 1st
+4661 1st 2nd 3rd Last 3rd 2nd 1st
+4662 1st 2nd 3rd Last 3rd 2nd 1st
+4663 1st 2nd 3rd Last 3rd 2nd 1st
+4664 1st 2nd 3rd Last 3rd 2nd 1st
+4665 1st 2nd 3rd Last 3rd 2nd 1st
+4666 1st 2nd 3rd Last 3rd 2nd 1st
+4667 1st 2nd 3rd Last 3rd 2nd 1st
+4668 1st 2nd 3rd Last 3rd 2nd 1st
+4669 1st 2nd 3rd Last 3rd 2nd 1st
+4670 1st 2nd 3rd Last 3rd 2nd 1st
+4671 1st 2nd 3rd Last 3rd 2nd 1st
+4672 1st 2nd 3rd Last 3rd 2nd 1st
+4673 1st 2nd 3rd Last 3rd 2nd 1st
+4674 1st 2nd 3rd Last 3rd 2nd 1st
+4675 1st 2nd 3rd Last 3rd 2nd 1st
+4676 1st 2nd 3rd Last 3rd 2nd 1st
+4677 1st 2nd 3rd Last 3rd 2nd 1st
+4678 1st 2nd 3rd Last 3rd 2nd 1st
+4679 1st 2nd 3rd Last 3rd 2nd 1st
+4680 1st 2nd 3rd Last 3rd 2nd 1st
+4681 1st 2nd 3rd Last 3rd 2nd 1st
+4682 1st 2nd 3rd Last 3rd 2nd 1st
+4683 1st 2nd 3rd Last 3rd 2nd 1st
+4684 1st 2nd 3rd Last 3rd 2nd 1st
+4685 1st 2nd 3rd Last 3rd 2nd 1st
+4686 1st 2nd 3rd Last 3rd 2nd 1st
+4687 1st 2nd 3rd Last 3rd 2nd 1st
+4688 1st 2nd 3rd Last 3rd 2nd 1st
+4689 1st 2nd 3rd Last 3rd 2nd 1st
+4690 1st 2nd 3rd Last 3rd 2nd 1st
+4691 1st 2nd 3rd Last 3rd 2nd 1st
+4692 1st 2nd 3rd Last 3rd 2nd 1st
+4693 1st 2nd 3rd Last 3rd 2nd 1st
+4694 1st 2nd 3rd Last 3rd 2nd 1st
+4695 1st 2nd 3rd Last 3rd 2nd 1st
+4696 1st 2nd 3rd Last 3rd 2nd 1st
+4697 1st 2nd 3rd Last 3rd 2nd 1st
+4698 1st 2nd 3rd Last 3rd 2nd 1st
+4699 1st 2nd 3rd Last 3rd 2nd 1st
+4700 1st 2nd 3rd Last 3rd 2nd 1st
+4701 1st 2nd 3rd Last 3rd 2nd 1st
+4702 1st 2nd 3rd Last 3rd 2nd 1st
+4703 1st 2nd 3rd Last 3rd 2nd 1st
+4704 1st 2nd 3rd Last 3rd 2nd 1st
+4705 1st 2nd 3rd Last 3rd 2nd 1st
+4706 1st 2nd 3rd Last 3rd 2nd 1st
+4707 1st 2nd 3rd Last 3rd 2nd 1st
+4708 1st 2nd 3rd Last 3rd 2nd 1st
+4709 1st 2nd 3rd Last 3rd 2nd 1st
+4710 1st 2nd 3rd Last 3rd 2nd 1st
+4711 1st 2nd 3rd Last 3rd 2nd 1st
+4712 1st 2nd 3rd Last 3rd 2nd 1st
+4713 1st 2nd 3rd Last 3rd 2nd 1st
+4714 1st 2nd 3rd Last 3rd 2nd 1st
+4715 1st 2nd 3rd Last 3rd 2nd 1st
+4716 1st 2nd 3rd Last 3rd 2nd 1st
+4717 1st 2nd 3rd Last 3rd 2nd 1st
+4718 1st 2nd 3rd Last 3rd 2nd 1st
+4719 1st 2nd 3rd Last 3rd 2nd 1st
+4720 1st 2nd 3rd Last 3rd 2nd 1st
+4721 1st 2nd 3rd Last 3rd 2nd 1st
+4722 1st 2nd 3rd Last 3rd 2nd 1st
+4723 1st 2nd 3rd Last 3rd 2nd 1st
+4724 1st 2nd 3rd Last 3rd 2nd 1st
+4725 1st 2nd 3rd Last 3rd 2nd 1st
+4726 1st 2nd 3rd Last 3rd 2nd 1st
+4727 1st 2nd 3rd Last 3rd 2nd 1st
+4728 1st 2nd 3rd Last 3rd 2nd 1st
+4729 1st 2nd 3rd Last 3rd 2nd 1st
+4730 1st 2nd 3rd Last 3rd 2nd 1st
+4731 1st 2nd 3rd Last 3rd 2nd 1st
+4732 1st 2nd 3rd Last 3rd 2nd 1st
+4733 1st 2nd 3rd Last 3rd 2nd 1st
+4734 1st 2nd 3rd Last 3rd 2nd 1st
+4735 1st 2nd 3rd Last 3rd 2nd 1st
+4736 1st 2nd 3rd Last 3rd 2nd 1st
+4737 1st 2nd 3rd Last 3rd 2nd 1st
+4738 1st 2nd 3rd Last 3rd 2nd 1st
+4739 1st 2nd 3rd Last 3rd 2nd 1st
+4740 1st 2nd 3rd Last 3rd 2nd 1st
+4741 1st 2nd 3rd Last 3rd 2nd 1st
+4742 1st 2nd 3rd Last 3rd 2nd 1st
+4743 1st 2nd 3rd Last 3rd 2nd 1st
+4744 1st 2nd 3rd Last 3rd 2nd 1st
+4745 1st 2nd 3rd Last 3rd 2nd 1st
+4746 1st 2nd 3rd Last 3rd 2nd 1st
+4747 1st 2nd 3rd Last 3rd 2nd 1st
+4748 1st 2nd 3rd Last 3rd 2nd 1st
+4749 1st 2nd 3rd Last 3rd 2nd 1st
+4750 1st 2nd 3rd Last 3rd 2nd 1st
+4751 1st 2nd 3rd Last 3rd 2nd 1st
+4752 1st 2nd 3rd Last 3rd 2nd 1st
+4753 1st 2nd 3rd Last 3rd 2nd 1st
+4754 1st 2nd 3rd Last 3rd 2nd 1st
+4755 1st 2nd 3rd Last 3rd 2nd 1st
+4756 1st 2nd 3rd Last 3rd 2nd 1st
+4757 1st 2nd 3rd Last 3rd 2nd 1st
+4758 1st 2nd 3rd Last 3rd 2nd 1st
+4759 1st 2nd 3rd Last 3rd 2nd 1st
+4760 1st 2nd 3rd Last 3rd 2nd 1st
+4761 1st 2nd 3rd Last 3rd 2nd 1st
+4762 1st 2nd 3rd Last 3rd 2nd 1st
+4763 1st 2nd 3rd Last 3rd 2nd 1st
+4764 1st 2nd 3rd Last 3rd 2nd 1st
+4765 1st 2nd 3rd Last 3rd 2nd 1st
+4766 1st 2nd 3rd Last 3rd 2nd 1st
+4767 1st 2nd 3rd Last 3rd 2nd 1st
+4768 1st 2nd 3rd Last 3rd 2nd 1st
+4769 1st 2nd 3rd Last 3rd 2nd 1st
+4770 1st 2nd 3rd Last 3rd 2nd 1st
+4771 1st 2nd 3rd Last 3rd 2nd 1st
+4772 1st 2nd 3rd Last 3rd 2nd 1st
+4773 1st 2nd 3rd Last 3rd 2nd 1st
+4774 1st 2nd 3rd Last 3rd 2nd 1st
+4775 1st 2nd 3rd Last 3rd 2nd 1st
+4776 1st 2nd 3rd Last 3rd 2nd 1st
+4777 1st 2nd 3rd Last 3rd 2nd 1st
+4778 1st 2nd 3rd Last 3rd 2nd 1st
+4779 1st 2nd 3rd Last 3rd 2nd 1st
+4780 1st 2nd 3rd Last 3rd 2nd 1st
+4781 1st 2nd 3rd Last 3rd 2nd 1st
+4782 1st 2nd 3rd Last 3rd 2nd 1st
+4783 1st 2nd 3rd Last 3rd 2nd 1st
+4784 1st 2nd 3rd Last 3rd 2nd 1st
+4785 1st 2nd 3rd Last 3rd 2nd 1st
+4786 1st 2nd 3rd Last 3rd 2nd 1st
+4787 1st 2nd 3rd Last 3rd 2nd 1st
+4788 1st 2nd 3rd Last 3rd 2nd 1st
+4789 1st 2nd 3rd Last 3rd 2nd 1st
+4790 1st 2nd 3rd Last 3rd 2nd 1st
+4791 1st 2nd 3rd Last 3rd 2nd 1st
+4792 1st 2nd 3rd Last 3rd 2nd 1st
+4793 1st 2nd 3rd Last 3rd 2nd 1st
+4794 1st 2nd 3rd Last 3rd 2nd 1st
+4795 1st 2nd 3rd Last 3rd 2nd 1st
+4796 1st 2nd 3rd Last 3rd 2nd 1st
+4797 1st 2nd 3rd Last 3rd 2nd 1st
+4798 1st 2nd 3rd Last 3rd 2nd 1st
+4799 1st 2nd 3rd Last 3rd 2nd 1st
+4800 1st 2nd 3rd Last 3rd 2nd 1st
+4801 1st 2nd 3rd Last 3rd 2nd 1st
+4802 1st 2nd 3rd Last 3rd 2nd 1st
+4803 1st 2nd 3rd Last 3rd 2nd 1st
+4804 1st 2nd 3rd Last 3rd 2nd 1st
+4805 1st 2nd 3rd Last 3rd 2nd 1st
+4806 1st 2nd 3rd Last 3rd 2nd 1st
+4807 1st 2nd 3rd Last 3rd 2nd 1st
+4808 1st 2nd 3rd Last 3rd 2nd 1st
+4809 1st 2nd 3rd Last 3rd 2nd 1st
+4810 1st 2nd 3rd Last 3rd 2nd 1st
+4811 1st 2nd 3rd Last 3rd 2nd 1st
+4812 1st 2nd 3rd Last 3rd 2nd 1st
+4813 1st 2nd 3rd Last 3rd 2nd 1st
+4814 1st 2nd 3rd Last 3rd 2nd 1st
+4815 1st 2nd 3rd Last 3rd 2nd 1st
+4816 1st 2nd 3rd Last 3rd 2nd 1st
+4817 1st 2nd 3rd Last 3rd 2nd 1st
+4818 1st 2nd 3rd Last 3rd 2nd 1st
+4819 1st 2nd 3rd Last 3rd 2nd 1st
+4820 1st 2nd 3rd Last 3rd 2nd 1st
+4821 1st 2nd 3rd Last 3rd 2nd 1st
+4822 1st 2nd 3rd Last 3rd 2nd 1st
+4823 1st 2nd 3rd Last 3rd 2nd 1st
+4824 1st 2nd 3rd Last 3rd 2nd 1st
+4825 1st 2nd 3rd Last 3rd 2nd 1st
+4826 1st 2nd 3rd Last 3rd 2nd 1st
+4827 1st 2nd 3rd Last 3rd 2nd 1st
+4828 1st 2nd 3rd Last 3rd 2nd 1st
+4829 1st 2nd 3rd Last 3rd 2nd 1st
+4830 1st 2nd 3rd Last 3rd 2nd 1st
+4831 1st 2nd 3rd Last 3rd 2nd 1st
+4832 1st 2nd 3rd Last 3rd 2nd 1st
+4833 1st 2nd 3rd Last 3rd 2nd 1st
+4834 1st 2nd 3rd Last 3rd 2nd 1st
+4835 1st 2nd 3rd Last 3rd 2nd 1st
+4836 1st 2nd 3rd Last 3rd 2nd 1st
+4837 1st 2nd 3rd Last 3rd 2nd 1st
+4838 1st 2nd 3rd Last 3rd 2nd 1st
+4839 1st 2nd 3rd Last 3rd 2nd 1st
+4840 1st 2nd 3rd Last 3rd 2nd 1st
+4841 1st 2nd 3rd Last 3rd 2nd 1st
+4842 1st 2nd 3rd Last 3rd 2nd 1st
+4843 1st 2nd 3rd Last 3rd 2nd 1st
+4844 1st 2nd 3rd Last 3rd 2nd 1st
+4845 1st 2nd 3rd Last 3rd 2nd 1st
+4846 1st 2nd 3rd Last 3rd 2nd 1st
+4847 1st 2nd 3rd Last 3rd 2nd 1st
+4848 1st 2nd 3rd Last 3rd 2nd 1st
+4849 1st 2nd 3rd Last 3rd 2nd 1st
+4850 1st 2nd 3rd Last 3rd 2nd 1st
+4851 1st 2nd 3rd Last 3rd 2nd 1st
+4852 1st 2nd 3rd Last 3rd 2nd 1st
+4853 1st 2nd 3rd Last 3rd 2nd 1st
+4854 1st 2nd 3rd Last 3rd 2nd 1st
+4855 1st 2nd 3rd Last 3rd 2nd 1st
+4856 1st 2nd 3rd Last 3rd 2nd 1st
+4857 1st 2nd 3rd Last 3rd 2nd 1st
+4858 1st 2nd 3rd Last 3rd 2nd 1st
+4859 1st 2nd 3rd Last 3rd 2nd 1st
+4860 1st 2nd 3rd Last 3rd 2nd 1st
+4861 1st 2nd 3rd Last 3rd 2nd 1st
+4862 1st 2nd 3rd Last 3rd 2nd 1st
+4863 1st 2nd 3rd Last 3rd 2nd 1st
+4864 1st 2nd 3rd Last 3rd 2nd 1st
+4865 1st 2nd 3rd Last 3rd 2nd 1st
+4866 1st 2nd 3rd Last 3rd 2nd 1st
+4867 1st 2nd 3rd Last 3rd 2nd 1st
+4868 1st 2nd 3rd Last 3rd 2nd 1st
+4869 1st 2nd 3rd Last 3rd 2nd 1st
+4870 1st 2nd 3rd Last 3rd 2nd 1st
+4871 1st 2nd 3rd Last 3rd 2nd 1st
+4872 1st 2nd 3rd Last 3rd 2nd 1st
+4873 1st 2nd 3rd Last 3rd 2nd 1st
+4874 1st 2nd 3rd Last 3rd 2nd 1st
+4875 1st 2nd 3rd Last 3rd 2nd 1st
+4876 1st 2nd 3rd Last 3rd 2nd 1st
+4877 1st 2nd 3rd Last 3rd 2nd 1st
+4878 1st 2nd 3rd Last 3rd 2nd 1st
+4879 1st 2nd 3rd Last 3rd 2nd 1st
+4880 1st 2nd 3rd Last 3rd 2nd 1st
+4881 1st 2nd 3rd Last 3rd 2nd 1st
+4882 1st 2nd 3rd Last 3rd 2nd 1st
+4883 1st 2nd 3rd Last 3rd 2nd 1st
+4884 1st 2nd 3rd Last 3rd 2nd 1st
+4885 1st 2nd 3rd Last 3rd 2nd 1st
+4886 1st 2nd 3rd Last 3rd 2nd 1st
+4887 1st 2nd 3rd Last 3rd 2nd 1st
+4888 1st 2nd 3rd Last 3rd 2nd 1st
+4889 1st 2nd 3rd Last 3rd 2nd 1st
+4890 1st 2nd 3rd Last 3rd 2nd 1st
+4891 1st 2nd 3rd Last 3rd 2nd 1st
+4892 1st 2nd 3rd Last 3rd 2nd 1st
+4893 1st 2nd 3rd Last 3rd 2nd 1st
+4894 1st 2nd 3rd Last 3rd 2nd 1st
+4895 1st 2nd 3rd Last 3rd 2nd 1st
+4896 1st 2nd 3rd Last 3rd 2nd 1st
+4897 1st 2nd 3rd Last 3rd 2nd 1st
+4898 1st 2nd 3rd Last 3rd 2nd 1st
+4899 1st 2nd 3rd Last 3rd 2nd 1st
+4900 1st 2nd 3rd Last 3rd 2nd 1st
+4901 1st 2nd 3rd Last 3rd 2nd 1st
+4902 1st 2nd 3rd Last 3rd 2nd 1st
+4903 1st 2nd 3rd Last 3rd 2nd 1st
+4904 1st 2nd 3rd Last 3rd 2nd 1st
+4905 1st 2nd 3rd Last 3rd 2nd 1st
+4906 1st 2nd 3rd Last 3rd 2nd 1st
+4907 1st 2nd 3rd Last 3rd 2nd 1st
+4908 1st 2nd 3rd Last 3rd 2nd 1st
+4909 1st 2nd 3rd Last 3rd 2nd 1st
+4910 1st 2nd 3rd Last 3rd 2nd 1st
+4911 1st 2nd 3rd Last 3rd 2nd 1st
+4912 1st 2nd 3rd Last 3rd 2nd 1st
+4913 1st 2nd 3rd Last 3rd 2nd 1st
+4914 1st 2nd 3rd Last 3rd 2nd 1st
+4915 1st 2nd 3rd Last 3rd 2nd 1st
+4916 1st 2nd 3rd Last 3rd 2nd 1st
+4917 1st 2nd 3rd Last 3rd 2nd 1st
+4918 1st 2nd 3rd Last 3rd 2nd 1st
+4919 1st 2nd 3rd Last 3rd 2nd 1st
+4920 1st 2nd 3rd Last 3rd 2nd 1st
+4921 1st 2nd 3rd Last 3rd 2nd 1st
+4922 1st 2nd 3rd Last 3rd 2nd 1st
+4923 1st 2nd 3rd Last 3rd 2nd 1st
+4924 1st 2nd 3rd Last 3rd 2nd 1st
+4925 1st 2nd 3rd Last 3rd 2nd 1st
+4926 1st 2nd 3rd Last 3rd 2nd 1st
+4927 1st 2nd 3rd Last 3rd 2nd 1st
+4928 1st 2nd 3rd Last 3rd 2nd 1st
+4929 1st 2nd 3rd Last 3rd 2nd 1st
+4930 1st 2nd 3rd Last 3rd 2nd 1st
+4931 1st 2nd 3rd Last 3rd 2nd 1st
+4932 1st 2nd 3rd Last 3rd 2nd 1st
+4933 1st 2nd 3rd Last 3rd 2nd 1st
+4934 1st 2nd 3rd Last 3rd 2nd 1st
+4935 1st 2nd 3rd Last 3rd 2nd 1st
+4936 1st 2nd 3rd Last 3rd 2nd 1st
+4937 1st 2nd 3rd Last 3rd 2nd 1st
+4938 1st 2nd 3rd Last 3rd 2nd 1st
+4939 1st 2nd 3rd Last 3rd 2nd 1st
+4940 1st 2nd 3rd Last 3rd 2nd 1st
+4941 1st 2nd 3rd Last 3rd 2nd 1st
+4942 1st 2nd 3rd Last 3rd 2nd 1st
+4943 1st 2nd 3rd Last 3rd 2nd 1st
+4944 1st 2nd 3rd Last 3rd 2nd 1st
+4945 1st 2nd 3rd Last 3rd 2nd 1st
+4946 1st 2nd 3rd Last 3rd 2nd 1st
+4947 1st 2nd 3rd Last 3rd 2nd 1st
+4948 1st 2nd 3rd Last 3rd 2nd 1st
+4949 1st 2nd 3rd Last 3rd 2nd 1st
+4950 1st 2nd 3rd Last 3rd 2nd 1st
+4951 1st 2nd 3rd Last 3rd 2nd 1st
+4952 1st 2nd 3rd Last 3rd 2nd 1st
+4953 1st 2nd 3rd Last 3rd 2nd 1st
+4954 1st 2nd 3rd Last 3rd 2nd 1st
+4955 1st 2nd 3rd Last 3rd 2nd 1st
+4956 1st 2nd 3rd Last 3rd 2nd 1st
+4957 1st 2nd 3rd Last 3rd 2nd 1st
+4958 1st 2nd 3rd Last 3rd 2nd 1st
+4959 1st 2nd 3rd Last 3rd 2nd 1st
+4960 1st 2nd 3rd Last 3rd 2nd 1st
+4961 1st 2nd 3rd Last 3rd 2nd 1st
+4962 1st 2nd 3rd Last 3rd 2nd 1st
+4963 1st 2nd 3rd Last 3rd 2nd 1st
+4964 1st 2nd 3rd Last 3rd 2nd 1st
+4965 1st 2nd 3rd Last 3rd 2nd 1st
+4966 1st 2nd 3rd Last 3rd 2nd 1st
+4967 1st 2nd 3rd Last 3rd 2nd 1st
+4968 1st 2nd 3rd Last 3rd 2nd 1st
+4969 1st 2nd 3rd Last 3rd 2nd 1st
+4970 1st 2nd 3rd Last 3rd 2nd 1st
+4971 1st 2nd 3rd Last 3rd 2nd 1st
+4972 1st 2nd 3rd Last 3rd 2nd 1st
+4973 1st 2nd 3rd Last 3rd 2nd 1st
+4974 1st 2nd 3rd Last 3rd 2nd 1st
+4975 1st 2nd 3rd Last 3rd 2nd 1st
+4976 1st 2nd 3rd Last 3rd 2nd 1st
+4977 1st 2nd 3rd Last 3rd 2nd 1st
+4978 1st 2nd 3rd Last 3rd 2nd 1st
+4979 1st 2nd 3rd Last 3rd 2nd 1st
+4980 1st 2nd 3rd Last 3rd 2nd 1st
+4981 1st 2nd 3rd Last 3rd 2nd 1st
+4982 1st 2nd 3rd Last 3rd 2nd 1st
+4983 1st 2nd 3rd Last 3rd 2nd 1st
+4984 1st 2nd 3rd Last 3rd 2nd 1st
+4985 1st 2nd 3rd Last 3rd 2nd 1st
+4986 1st 2nd 3rd Last 3rd 2nd 1st
+4987 1st 2nd 3rd Last 3rd 2nd 1st
+4988 1st 2nd 3rd Last 3rd 2nd 1st
+4989 1st 2nd 3rd Last 3rd 2nd 1st
+4990 1st 2nd 3rd Last 3rd 2nd 1st
+4991 1st 2nd 3rd Last 3rd 2nd 1st
+4992 1st 2nd 3rd Last 3rd 2nd 1st
+4993 1st 2nd 3rd Last 3rd 2nd 1st
+4994 1st 2nd 3rd Last 3rd 2nd 1st
+4995 1st 2nd 3rd Last 3rd 2nd 1st
+4996 1st 2nd 3rd Last 3rd 2nd 1st
+4997 1st 2nd 3rd Last 3rd 2nd 1st
+4998 1st 2nd 3rd Last 3rd 2nd 1st
+4999 1st 2nd 3rd Last 3rd 2nd 1st
+Stopping
Index: tests/concurrency/waitfor/.expect/statment.txt
===================================================================
--- tests/concurrency/waitfor/.expect/statment.txt	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
+++ tests/concurrency/waitfor/.expect/statment.txt	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
@@ -0,0 +1,702 @@
+Starting
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Statement
+Stopping
Index: tests/concurrency/waitfor/.expect/when.txt
===================================================================
--- tests/concurrency/waitfor/.expect/when.txt	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
+++ tests/concurrency/waitfor/.expect/when.txt	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
@@ -0,0 +1,5000 @@
+Starting
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+1
+2
+3
+4
+5
+6
+Stopping
Index: tests/concurrency/waitfor/barge.cfa
===================================================================
--- tests/concurrency/waitfor/barge.cfa	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
+++ tests/concurrency/waitfor/barge.cfa	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
@@ -0,0 +1,92 @@
+//---------------------------------------------------------
+// Barging test
+// Ensures that no barging can occur between :
+//   - the frontend of the waitfor and the waited call
+//   - the waited call and the backend of the waitfor
+//---------------------------------------------------------
+
+#include <fstream.hfa>
+#include <kernel.hfa>
+#include <monitor.hfa>
+#include <stdlib.hfa>
+#include <thread.hfa>
+
+#include <stdbool.h>
+
+static const unsigned long N = 5_000ul;
+
+enum state_t { WAITFOR, CALL, BARGE };
+
+monitor global_t {
+	bool done;
+	bool started;
+	state_t state;
+};
+
+void ?{} ( global_t & this ) {
+	this.done = false;
+	this.started = false;
+	this.state = BARGE;
+}
+
+void ^?{} ( global_t & mutex this ) {}
+
+global_t global;
+
+bool barge( global_t & mutex this ) {
+	this.state = BARGE;
+	return !this.done;
+}
+
+thread barger_t {};
+void main( barger_t & this ) {
+	yield();
+	while( barge( global ) ) { yield(random( 10 )); }
+}
+
+bool do_call( global_t & mutex this ) {
+	yield(random( 10 ));
+	if( this.state != WAITFOR && !this.done && this.started ) {
+		serr | "Barging before caller detected";
+	}
+
+	this.state = CALL;
+	return !this.done;
+}
+
+thread caller_t {};
+void main( caller_t & this ) {
+	while( do_call(global) ) { yield(random( 10 )); }
+}
+
+void do_wait( global_t & mutex this ) {
+	this.started = true;
+	for( int i = 0; i < N; i++) {
+		yield(random( 10 ));
+		this.state = WAITFOR;
+		waitfor(do_call : this) {
+			sout | i;
+		}
+
+		if( this.state != CALL ) {
+			serr | "Barging after caller detected";
+		}
+	}
+
+	this.done = true;
+}
+
+thread waiter_t{};
+void main( waiter_t & this ) {
+	do_wait(global);
+}
+
+int main() {
+	sout | "Starting";
+	{
+		barger_t bargers[17];
+		caller_t callers[7];
+		waiter_t waiters;
+	}
+	sout | "Stopping";
+}
Index: tests/concurrency/waitfor/dtor.cfa
===================================================================
--- tests/concurrency/waitfor/dtor.cfa	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
+++ tests/concurrency/waitfor/dtor.cfa	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
@@ -0,0 +1,63 @@
+//---------------------------------------------------------
+// Barging test
+// Ensures the statement order is reverse when using waitfor ^?{}
+//---------------------------------------------------------
+
+#include <fstream.hfa>
+#include <kernel.hfa>
+#include <monitor.hfa>
+#include <stdlib.hfa>
+#include <thread.hfa>
+
+#include <stdbool.h>
+
+static const unsigned long N = 5_000ul;
+
+enum state_t {
+	CTOR,
+	MAIN,
+	AFTER,
+	END,
+	DTOR
+};
+
+thread dummy_t {
+	state_t state;
+};
+
+static inline void set_state( dummy_t & this, state_t state) {
+	switch(state) {
+		case CTOR  : break;
+		case MAIN  : if( this.state != CTOR  ) { serr | "ERROR Expected state to be CTOR" ; abort(); } this.state = state; break;
+		case AFTER : if( this.state != MAIN  ) { serr | "ERROR Expected state to be MAIN" ; abort(); } this.state = state; break;
+		case END   : if( this.state != AFTER ) { serr | "ERROR Expected state to be AFTER"; abort(); } this.state = state; break;
+		case DTOR  : if( this.state != END   ) { serr | "ERROR Expected state to be END"  ; abort(); } this.state = state; break;
+	}
+}
+
+void ^?{}( dummy_t & mutex this ) {
+	set_state( this, DTOR );
+}
+
+void ?{}( dummy_t & this ) {
+	this.state = CTOR;
+}
+
+void main( dummy_t & this ) {
+	yield(random( 10 ));
+	set_state( this, MAIN );
+	waitfor( ^?{} : this ) {
+		set_state( this, AFTER );
+	}
+	set_state( this, END );
+}
+
+int main() {
+	sout | "Starting";
+	processor p;
+	for( int i = 0; i < N; i++ ){
+		dummy_t dummy[4];
+		yield( random( 100 ) );
+	}
+	sout | "Stopping";
+}
Index: tests/concurrency/waitfor/else.cfa
===================================================================
--- tests/concurrency/waitfor/else.cfa	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
+++ tests/concurrency/waitfor/else.cfa	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
@@ -0,0 +1,48 @@
+#include <fstream.hfa>
+#include <monitor.hfa>
+
+#include <stdbool.h>
+
+monitor M {};
+
+void notcalled( M & mutex m ) {
+	abort();
+}
+
+void test( M & mutex m ) {
+	int i = 0;
+	sout | "Starting";
+
+	when( false ) waitfor( notcalled : m );
+
+	sout | "Step" | i++;
+
+	waitfor( notcalled : m ); or else {
+		sout | "else called";
+	}
+
+	sout | "Step" | i++;
+
+	when( true ) waitfor( notcalled : m ); or when( true ) else {
+		sout | "else called";
+	}
+
+	sout | "Step" | i++;
+
+	when( false ) waitfor( notcalled : m ); or when( true ) else {
+		sout | "else called";
+	}
+
+	sout | "Step" | i++;
+
+	when( false ) waitfor( notcalled : m ); or when( false ) else {
+		sout | "else called";
+	}
+
+	sout | "Done";
+}
+
+int main() {
+	M m;
+	test(m);
+}
Index: tests/concurrency/waitfor/parse.cfa
===================================================================
--- tests/concurrency/waitfor/parse.cfa	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
+++ tests/concurrency/waitfor/parse.cfa	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
@@ -0,0 +1,261 @@
+// 
+// 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.
+// 
+// waitfor.c -- 
+// 
+// Author           : Peter A. Buhr
+// Created On       : Wed Aug 30 17:53:29 2017
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Mon Apr 10 22:52:18 2023
+// Update Count     : 64
+// 
+
+#include <monitor.hfa>
+
+monitor M {};
+
+void notcalled( M & mutex m1, M & mutex m2 ) {
+	abort();
+}
+void or( M & mutex m ) {
+	abort();
+}
+void timeout( M & mutex m ) {
+	abort();
+}
+
+void fred( M & mutex m, M & mutex or, M & mutex timeout ) {
+	// test waitfor and when
+
+	waitfor( notcalled : m, m );
+
+	waitfor( notcalled : m, m ) {
+	}
+
+	waitfor( notcalled : m, m ) {
+	}
+
+	when( true ) waitfor( notcalled : m, m );
+
+	when( true ) waitfor( notcalled : m, m ) {
+	}
+
+	waitfor( notcalled : m, m );
+	or waitfor( notcalled : m, m );
+
+	when( true ) waitfor( notcalled : m, m );
+	or when( true ) waitfor( notcalled : m, m );
+
+	waitfor( notcalled : m, m ) {
+	} or waitfor( notcalled : m, m ) {
+	}
+
+	waitfor( notcalled : m, m ) {
+	} or waitfor( notcalled : m, m ) {
+	}
+
+	when( true ) waitfor( notcalled : m, m ) {
+	} or when( true ) waitfor( notcalled : m, m ) {
+	}
+
+	waitfor( notcalled : m, m );
+	or waitfor( notcalled : m, m ) {
+	}
+
+	when( true ) waitfor( notcalled : m, m );
+	or when( true ) waitfor( notcalled : m, m ) {
+	}
+
+	waitfor( notcalled : m, m ) {
+	} or waitfor( notcalled : m, m );
+
+	when( true ) waitfor( notcalled : m, m ) {
+	} or when( true ) waitfor( notcalled : m, m );
+
+	// test when, waitfor and else
+
+	waitfor( notcalled : m, m );
+	or else;
+
+	when( true ) waitfor( notcalled : m, m );
+	or else;
+
+	when( true ) waitfor( notcalled : m, m );
+	or else;
+
+	waitfor( notcalled : m, m ) {
+	} or else {
+	}
+
+	when( true ) waitfor( notcalled : m, m ) {
+	} or else {
+	}
+
+	waitfor( notcalled : m, m );
+	or else {
+	}
+
+	when( true ) waitfor( notcalled : m, m );
+	or else {
+	}
+
+	when( true ) waitfor( notcalled : m, m );
+	or else {
+	}
+
+	waitfor( notcalled : m, m ) {
+	} or else;
+
+	when( true ) waitfor( notcalled : m, m ) {
+	} or else;
+
+	waitfor( notcalled : m, m );
+	or when( true ) else;
+
+	when( true ) waitfor( notcalled : m, m );
+	or when( true ) else;
+
+	when( true ) waitfor( notcalled : m, m );
+	or when( true ) else;
+
+	waitfor( notcalled : m, m ) {
+	} or when( true ) else {
+	}
+
+	when( true ) waitfor( notcalled : m, m ) {
+	} or when( true ) else {
+	}
+
+	waitfor( notcalled : m, m );
+	or when( true ) else {
+	}
+
+	when( true ) waitfor( notcalled : m, m );
+	or when( true ) else {
+	}
+
+	when( true ) waitfor( notcalled : m, m );
+	or when( true ) else {
+	}
+
+	waitfor( notcalled : m, m ) {
+	} or when( true ) else;
+
+	when( true ) waitfor( notcalled : m, m ) {
+	} or when( true ) else;
+
+	// test when, waitfor and timeout
+
+	waitfor( notcalled : m, m );
+	or timeout( 3 );
+
+	waitfor( notcalled : m, m );
+	or timeout( 3 );
+
+	when( true ) waitfor( notcalled : m, m );
+	or timeout( 3 );
+
+	waitfor( notcalled : m, m ) {
+	} or timeout( 3 ) {
+	}
+
+	when( true ) waitfor( notcalled : m, m ) {
+	} or timeout( 3 ) {
+	}
+
+	when( true ) waitfor( notcalled : m, m ) {
+	} or timeout( 3 ) {
+	}
+
+	when( true ) waitfor( notcalled : m, m ) {
+	} or when ( true ) timeout( 3 ) {
+	}
+
+	when( true ) waitfor( notcalled : m, m ) {
+	} or when ( true ) timeout( 3 ) {
+	}
+
+	waitfor( notcalled : m, m );
+	or timeout( 3 ) {
+	}
+
+	when( true ) waitfor( notcalled : m, m );
+	or timeout( 3 ) {
+	}
+
+	when( true ) waitfor( notcalled : m, m );
+	or when( true ) timeout( 3 ) {
+	}
+
+	waitfor( notcalled : m, m ) {
+	} or timeout( 3 );
+
+	when( true ) waitfor( notcalled : m, m ) {
+	} or timeout( 3 );
+
+	when( true ) waitfor( notcalled : m, m ) {
+	} or when( true ) timeout( 3 );
+
+	// test when, waitfor, timeout and else
+
+	waitfor( notcalled : m, m ) {
+	} or timeout( 3 ) {
+	} or when( true ) else {}
+
+	when( true ) waitfor( notcalled : m, m ) {
+	} or timeout( 3 ) {
+	} or when( true ) else {}
+
+	waitfor( notcalled : m, m ) {
+	} or timeout( 3 ) {
+	} or when( true ) else {}
+
+	waitfor( notcalled : m, m ) {
+	} or when( true ) timeout( 3 ) {
+	} or when( true ) else {}
+
+	when( true ) waitfor( notcalled : m, m ) {
+	} or timeout( 3 ) {
+	} or when( true ) else {}
+
+	waitfor( notcalled : m, m ) {
+	} or when( true ) timeout( 3 ) {
+	} or when( true ) else {}
+
+	when( true ) waitfor( notcalled : m, m ) {
+	} or when( true ) timeout( 3 ) {
+	} or when( true ) else {}
+
+	// test quasi-keywords "or" and "timeout"
+
+	int or = 0, timeout = 0;
+	waitfor( timeout : timeout ) timeout += 1; or timeout( timeout );
+	waitfor( notcalled : or, or ) or += 1; or timeout( or ) 3;
+	when( or ) waitfor( or : m ) { 4; } or timeout( or ) or += 1;
+	when( timeout ) waitfor( notcalled : timeout, timeout ) or += 1; or else timeout += 1;
+	when( or + timeout ) waitfor( or : m ) 4; or when( or ) timeout( or ) 4; or when( or ) else timeout += 1;
+	when( 3 ) waitfor( or : or ) 3; or when( or ) waitfor( notcalled : or, or ) 4; or else 4;
+	when( timeout ) waitfor( or : timeout ) 3; or waitfor( notcalled : timeout, or ) 4; or when( or ) timeout( timeout ) 4;
+	when( 3 ) waitfor( or : timeout ) or += 1;
+	or waitfor( or : or ) timeout += 1;
+	or timeout( timeout ) or += 1;
+	or when( 3 ) else or += 1;
+
+	// test else selection
+
+	if ( or > timeout ) waitfor( or : or ) 3;
+	else waitfor( timeout : timeout ) 4;
+}
+
+//Dummy main
+int main( int argc, char const * argv[] ) {
+    #pragma GCC warning "Compiled"                      // force non-empty .expect file, NO TABS!!!
+}
+
+// Local Variables: //
+// tab-width: 4 //
+// compile-command: "cfa waitfor.cfa" //
+// End: //
Index: tests/concurrency/waitfor/recurse.cfa
===================================================================
--- tests/concurrency/waitfor/recurse.cfa	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
+++ tests/concurrency/waitfor/recurse.cfa	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
@@ -0,0 +1,146 @@
+//----------------------------------------------------------------
+// Recursion test
+// Ensures that proper ordering occurs between the nested waitfors
+//-----------------------------------------------------------------
+
+#include <fstream.hfa>
+#include <kernel.hfa>
+#include <monitor.hfa>
+#include <stdlib.hfa>
+#include <thread.hfa>
+
+#include <stdbool.h>
+#include <time.h>
+
+static const unsigned long N = 5_000ul;
+
+static inline void rand_yield() { yield(random( 10 )); }
+
+enum state_t { FIRST, SECOND, THIRD, LAST, STOP };
+void shuffle(enum state_t * array)
+{
+	int i;
+	for (i = 0; i < 4; i++)
+	{
+		int j = random( 4 );
+		enum state_t t = array[j];
+		array[j] = array[i];
+		array[i] = t;
+	}
+}
+
+
+monitor global_t {
+	int counter;
+	volatile bool ready;
+	state_t actions[4];
+};
+
+void ?{} ( global_t & this ) {
+	this.counter = 0;
+	this.ready = false;
+	this.actions[0] = FIRST;
+	this.actions[1] = SECOND;
+	this.actions[2] = THIRD;
+	this.actions[3] = LAST;
+	shuffle( this.actions );
+}
+
+void ^?{} ( global_t & mutex this ) {}
+
+global_t global;
+
+state_t call4( global_t & mutex this, int idx ) {
+	sout | "Last";
+
+	rand_yield();
+	this.counter++;
+	this.ready = false;
+	shuffle( this.actions );
+
+	return this.counter < N ? (state_t)this.actions[idx] : (state_t)STOP;
+}
+
+state_t call3( global_t & mutex this, int idx ) {
+	sout | "3rd";
+
+	rand_yield();
+	waitfor( call4 : this );
+	rand_yield();
+
+	sout | "3rd";
+
+	return this.counter < N ? (state_t)this.actions[idx] : (state_t)STOP;
+}
+
+state_t call2( global_t & mutex this, int idx ) {
+	sout | "2nd";
+
+	rand_yield();
+	waitfor( call3 : this );
+	rand_yield();
+
+	sout | "2nd";
+
+	return this.counter < N ? (state_t)this.actions[idx] : (state_t)STOP;
+}
+
+state_t call1( global_t & mutex this, int idx ) {
+	this.ready = true;
+
+	sout | this.counter | "1st";
+
+	rand_yield();
+	waitfor( call2 : this );
+	rand_yield();
+
+	sout | "1st" | nl;
+
+	return this.counter < N ? (state_t)this.actions[idx] : (state_t)STOP;
+}
+
+thread waiter_t{
+	int     idx;
+	state_t state;
+};
+
+void ^?{} ( waiter_t & mutex this ) {}
+void ?{} ( waiter_t & this ) {}
+
+void ?{}( waiter_t & this, int idx, state_t state ) {
+	this.idx   = idx;
+	this.state = state;
+}
+
+
+void main( waiter_t & this ) {
+	while( this.state != STOP ) {
+		rand_yield();
+
+		switch( this.state ) {
+			case FIRST  :                                     this.state = call1( global, this.idx ); break;
+			case SECOND : while( !global.ready ) { yield(); } this.state = call2( global, this.idx ); break;
+			case THIRD  : while( !global.ready ) { yield(); } this.state = call3( global, this.idx ); break;
+			case LAST   : while( !global.ready ) { yield(); } this.state = call4( global, this.idx ); break;
+			case STOP   : serr | "This should not happen" | nl;
+		}
+	}
+}
+
+static waiter_t * volatile the_threads;
+
+int main() {
+	srandom( time(NULL) );
+	sout | nlOff;					// turn off auto newline
+	sout | "Starting" | nl;
+	{
+		waiter_t waiters[4] = {
+			{ 0, FIRST  },
+			{ 1, SECOND },
+			{ 2, THIRD  },
+			{ 3, LAST   }
+		};
+		the_threads = waiters;
+	}
+	sout | "Stopping" | nl;
+}
Index: tests/concurrency/waitfor/simple.cfa
===================================================================
--- tests/concurrency/waitfor/simple.cfa	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
+++ tests/concurrency/waitfor/simple.cfa	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
@@ -0,0 +1,85 @@
+#include <fstream.hfa>
+#include <kernel.hfa>
+#include <monitor.hfa>
+#include <stdlib.hfa>
+#include <thread.hfa>
+
+#include <time.h>
+
+static const unsigned long N = 500ul;
+
+#ifndef PREEMPTION_RATE
+#define PREEMPTION_RATE 10`ms
+#endif
+
+Duration default_preemption() {
+	return PREEMPTION_RATE;
+}
+
+monitor global_t {};
+
+global_t globalA;
+
+thread Acceptor {};
+thread Acceptee {};
+
+volatile bool done;
+
+//----------------------------------------------------------------------------------------------------
+// Acceptor
+void do_notify( global_t * mutex a );
+
+void do_wait( global_t * mutex a ) {
+	sout | "Waiting to accept";
+	yield( random( 10 ) );
+
+	sout | "Accepting";
+
+	__acceptable_t acceptable;
+	acceptable.func          = (fptr_t)do_notify;
+	acceptable.count         = 1;
+	acceptable.monitors      = &a;
+
+	__waitfor_internal( 1, &acceptable );
+
+	sout | "Accepted";
+	yield( random( 10 ) );
+}
+
+void main( Acceptor* this ) {
+	for( int i = 0; i < N; i++ ) {
+		do_wait( &globalA );
+		sout | i;
+	}
+
+	done = true;
+}
+
+//----------------------------------------------------------------------------------------------------
+// Acceptee
+void do_notify( global_t * mutex a ) {
+
+}
+
+void main( Acceptee* this ) {
+	while( !done ) {
+		yield( random( 10 ) );
+		do_notify( &globalA );
+		yield( random( 10 ) );
+	}
+}
+
+//----------------------------------------------------------------------------------------------------
+// Main
+int main(int argc, char* argv[]) {
+	done = false;
+	srandom( time( NULL ) );
+	printf("%p\n", &globalA);
+	sout | "Starting";
+	{
+		Acceptor r;
+		Acceptee e[13];
+
+	}
+	sout | "Done";
+}
Index: tests/concurrency/waitfor/statment.cfa
===================================================================
--- tests/concurrency/waitfor/statment.cfa	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
+++ tests/concurrency/waitfor/statment.cfa	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
@@ -0,0 +1,136 @@
+#include <fstream.hfa>
+#include <kernel.hfa>
+#include <monitor.hfa>
+#include <thread.hfa>
+
+#include <stdbool.h>
+
+monitor M {
+	int index;
+	int last_val;
+	int calls[7];
+};
+
+volatile bool start = false;
+
+void ?{}( M & this ) {
+	this.index = 0;
+	this.last_val = 0;
+	for( int i = 0; i < 7; i++ ) {
+		this.calls[i] = 100; //10_000;
+	}
+}
+
+void ^?{} ( M &  mutex this ) {}
+
+int get_index( M & mutex this ) {
+	this.index += 1;
+	return this.index;
+}
+
+bool call1( M & mutex this ) {
+	this.last_val = 1;
+	this.calls[0] -= 1;
+	return this.calls[0] > 0;
+}
+
+bool call2( M & mutex this ) {
+	this.last_val = 2;
+	this.calls[1] -= 1;
+	return this.calls[1] > 0;
+}
+
+bool call3( M & mutex this ) {
+	this.last_val = 3;
+	this.calls[2] -= 1;
+	return this.calls[2] > 0;
+}
+
+bool call4( M & mutex this ) {
+	this.last_val = 4;
+	this.calls[3] -= 1;
+	return this.calls[3] > 0;
+}
+
+bool call5( M & mutex this ) {
+	this.last_val = 5;
+	this.calls[4] -= 1;
+	return this.calls[4] > 0;
+}
+
+bool call6( M & mutex this ) {
+	this.last_val = 6;
+	this.calls[5] -= 1;
+	return this.calls[5] > 0;
+}
+
+bool call7( M & mutex this ) {
+	this.last_val = 7;
+	this.calls[6] -= 1;
+	return this.calls[6] > 0;
+}
+
+M m;
+thread caller{};
+
+bool call( int index ) {
+	switch( index ) {
+		case 1: return call1( m );
+		case 2: return call2( m );
+		case 3: return call3( m );
+		case 4: return call4( m );
+		case 5: return call5( m );
+		case 6: return call6( m );
+		case 7: return call7( m );
+		default :
+			serr | "Incorrect index" | index;
+			abort();
+	}
+}
+
+void main( caller & this ) {
+	int index = get_index( m );
+	while( !start ) yield();
+	while( call( index ) );
+}
+
+void do_wait( M & mutex this ) {
+	bool done = false;
+
+	start = true;
+
+	while( !done ) {
+		   waitfor( get_index : this );
+		or waitfor( call1 : this ) { sout | "Statement"; if( this.last_val != 1 ) { serr | "Incorrect index: expected" | 1 | "got" | this.last_val; } }
+		or waitfor( call2 : this ) { sout | "Statement"; if( this.last_val != 2 ) { serr | "Incorrect index: expected" | 2 | "got" | this.last_val; } }
+		or waitfor( call3 : this ) { sout | "Statement"; if( this.last_val != 3 ) { serr | "Incorrect index: expected" | 3 | "got" | this.last_val; } }
+		or waitfor( call4 : this ) { sout | "Statement"; if( this.last_val != 4 ) { serr | "Incorrect index: expected" | 4 | "got" | this.last_val; } }
+		or waitfor( call5 : this ) { sout | "Statement"; if( this.last_val != 5 ) { serr | "Incorrect index: expected" | 5 | "got" | this.last_val; } }
+		or waitfor( call6 : this ) { sout | "Statement"; if( this.last_val != 6 ) { serr | "Incorrect index: expected" | 6 | "got" | this.last_val; } }
+		or waitfor( call7 : this ) { sout | "Statement"; if( this.last_val != 7 ) { serr | "Incorrect index: expected" | 7 | "got" | this.last_val; } }
+
+		done = true;
+		for( int i = 0; i < 7; i++ ) {
+			if( this.calls[i] > 0 ) {
+				done = false;
+				break;
+			}
+		}
+	}
+}
+
+thread waiter{};
+
+void main( waiter & this ) {
+	do_wait( m );
+}
+
+int main() {
+	processor p[2];
+	sout | "Starting";
+	{
+		caller c[7];
+		waiter w;
+	}
+	sout | "Stopping";
+}
Index: tests/concurrency/waitfor/when.cfa
===================================================================
--- tests/concurrency/waitfor/when.cfa	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
+++ tests/concurrency/waitfor/when.cfa	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
@@ -0,0 +1,91 @@
+//----------------------------------------------------------------
+// When test
+// Ensures that when clauses on waitfor are respected
+//-----------------------------------------------------------------
+
+#include <fstream.hfa>
+#include <kernel.hfa>
+#include <monitor.hfa>
+#include <stdlib.hfa>
+#include <thread.hfa>
+
+#include <stdbool.h>
+#include <time.h>
+
+static const unsigned long N = 4_998ul;
+
+static inline void rand_yield() { yield(random( 10 )); }
+
+monitor global_t {
+	int last_call;
+	bool done;
+};
+
+void ?{} ( global_t & this ) {
+	this.last_call = 6;
+	this.done = false;
+}
+
+void ^?{} ( global_t & mutex this ) {}
+
+global_t global;
+
+bool call1( global_t & mutex this ) { this.last_call = 1; return this.done; }
+bool call2( global_t & mutex this ) { this.last_call = 2; return this.done; }
+bool call3( global_t & mutex this ) { this.last_call = 3; return this.done; }
+bool call4( global_t & mutex this ) { this.last_call = 4; return this.done; }
+bool call5( global_t & mutex this ) { this.last_call = 5; return this.done; }
+bool call6( global_t & mutex this ) { this.last_call = 6; return this.done; }
+
+thread caller_t{};
+void main( caller_t & this ) {
+	while( true ) {
+		rand_yield();
+		if( call1( global ) ) return;
+		rand_yield();
+		if( call2( global ) ) return;
+		rand_yield();
+		if( call3( global ) ) return;
+		rand_yield();
+		if( call4( global ) ) return;
+		rand_yield();
+		if( call5( global ) ) return;
+		rand_yield();
+		if( call6( global ) ) return;
+	}
+}
+
+void arbiter( global_t & mutex this ) {
+	// There is a race at start where callers can get in before the arbiter.
+	// It doesn't really matter here so just restart the loop correctly and move on
+	this.last_call = 6;
+
+	for( int i = 0; i < N; i++ ) {
+		   when( this.last_call == 6 ) waitfor( call1 : this ) { if( this.last_call != 1) { serr | "Expected last_call to be 1 got" | this.last_call; } }
+		or when( this.last_call == 1 ) waitfor( call2 : this ) { if( this.last_call != 2) { serr | "Expected last_call to be 2 got" | this.last_call; } }
+		or when( this.last_call == 2 ) waitfor( call3 : this ) { if( this.last_call != 3) { serr | "Expected last_call to be 3 got" | this.last_call; } }
+		or when( this.last_call == 3 ) waitfor( call4 : this ) { if( this.last_call != 4) { serr | "Expected last_call to be 4 got" | this.last_call; } }
+		or when( this.last_call == 4 ) waitfor( call5 : this ) { if( this.last_call != 5) { serr | "Expected last_call to be 5 got" | this.last_call; } }
+		or when( this.last_call == 5 ) waitfor( call6 : this ) { if( this.last_call != 6) { serr | "Expected last_call to be 6 got" | this.last_call; } }
+
+		sout | this.last_call;
+	}
+
+	this.done = true;
+}
+
+thread arbiter_t{};
+void main( arbiter_t & this ) {
+	arbiter( global );
+}
+
+int main() {
+	srandom( time(NULL) );
+	sout | "Starting";
+	{
+		arbiter_t arbiter;
+		caller_t callers[7];
+
+	}
+	sout | "Stopping";
+}
Index: tests/concurrency/waituntil/.expect/all_types.txt
===================================================================
--- tests/concurrency/waituntil/.expect/all_types.txt	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
+++ tests/concurrency/waituntil/.expect/all_types.txt	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
@@ -0,0 +1,6 @@
+start
+terminating churner
+waiting for empty channels
+sending sentinels
+joining servers
+done
Index: tests/concurrency/waituntil/.expect/basic_else.txt
===================================================================
--- tests/concurrency/waituntil/.expect/basic_else.txt	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
+++ tests/concurrency/waituntil/.expect/basic_else.txt	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
@@ -0,0 +1,5 @@
+else1
+A2
+else3
+A4
+A5
Index: tests/concurrency/waituntil/.expect/channel_close.txt
===================================================================
--- tests/concurrency/waituntil/.expect/channel_close.txt	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
+++ tests/concurrency/waituntil/.expect/channel_close.txt	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
@@ -0,0 +1,10 @@
+start OR
+done sleep
+closing A
+closing B
+done
+start AND
+done sleep
+closing A
+closing B
+done
Index: tests/concurrency/waituntil/.expect/channel_zero_size.txt
===================================================================
--- tests/concurrency/waituntil/.expect/channel_zero_size.txt	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
+++ tests/concurrency/waituntil/.expect/channel_zero_size.txt	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
@@ -0,0 +1,4 @@
+start
+sending sentinels
+joining servers
+done
Index: tests/concurrency/waituntil/.expect/channels.txt
===================================================================
--- tests/concurrency/waituntil/.expect/channels.txt	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
+++ tests/concurrency/waituntil/.expect/channels.txt	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
@@ -0,0 +1,6 @@
+start
+terminating churner
+waiting for empty channels
+sending sentinels
+joining servers
+done
Index: tests/concurrency/waituntil/.expect/futures.txt
===================================================================
--- tests/concurrency/waituntil/.expect/futures.txt	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
+++ tests/concurrency/waituntil/.expect/futures.txt	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
@@ -0,0 +1,2 @@
+start
+end
Index: tests/concurrency/waituntil/.expect/locks.txt
===================================================================
--- tests/concurrency/waituntil/.expect/locks.txt	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
+++ tests/concurrency/waituntil/.expect/locks.txt	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
@@ -0,0 +1,6 @@
+start
+DONE
+DONE
+DONE
+start recursive acq test
+done
Index: tests/concurrency/waituntil/.expect/one_chan.txt
===================================================================
--- tests/concurrency/waituntil/.expect/one_chan.txt	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
+++ tests/concurrency/waituntil/.expect/one_chan.txt	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
@@ -0,0 +1,5 @@
+start
+waiting for empty channels
+sending sentinels
+joining servers
+done
Index: tests/concurrency/waituntil/.expect/timeout.txt
===================================================================
--- tests/concurrency/waituntil/.expect/timeout.txt	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
+++ tests/concurrency/waituntil/.expect/timeout.txt	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
@@ -0,0 +1,6 @@
+timeout
+timeout
+else
+timeout
+timeout
+done
Index: tests/concurrency/waituntil/all_types.cfa
===================================================================
--- tests/concurrency/waituntil/all_types.cfa	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
+++ tests/concurrency/waituntil/all_types.cfa	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
@@ -0,0 +1,119 @@
+#include <select.hfa>
+#include <thread.hfa>
+#include <channel.hfa>
+#include <locks.hfa>
+#include <future.hfa>
+#include <mutex_stmt.hfa>
+
+future( long long int ) F;
+const long long int val_to_deliver = 42;
+
+channel(long long int) A, C;
+
+multiple_acquisition_lock B;
+volatile long long int b_val = 0;
+volatile long long int old_b_val = -1;
+
+volatile bool done = false;
+long long int globalTotal = 0;
+
+void consume_b_val( long long int & myTotal ) {
+    if ( b_val != old_b_val ) {
+        myTotal += b_val;
+        old_b_val++;
+    }
+}
+
+void produce_b_val( long long int & myTotal ) {
+    if ( b_val == old_b_val ) {
+        myTotal += b_val;
+        b_val++;
+    }
+}
+
+thread Server1 {};
+void main( Server1 & this ) {
+    long long int a, b, c, i = 0, myTotal = 0;
+    for( ;;i++ ) {
+        when( i % 2 == 0 ) waituntil( a << A ) { myTotal += a; }
+        or when( i % 4 < 2 ) waituntil( B ) { consume_b_val( myTotal ); }
+        or waituntil( c << C ) { if ( c == -1 ) break; myTotal += c; }
+        or when( i % 3 ) waituntil( timeout( 1`ms ) ) {}
+        or when( i % 8 < 4 ) else {}
+    }
+    __atomic_fetch_add( &globalTotal, myTotal, __ATOMIC_SEQ_CST );
+}
+
+thread Drainer {}; // ensures that the changing when states of Server1 don't result in a deadlock
+void main( Drainer & this ) {
+    long long int a, b, c, myTotal = 0;
+    for( ;; ) {
+        waituntil( F ) { myTotal += get(F); reset( F ); }
+        or waituntil( a << A ) { myTotal += a; }
+        or waituntil( c << C ) { if ( c == -1 ) break; myTotal += c; }
+        or waituntil( B ) { consume_b_val( myTotal ); }
+        or waituntil( timeout( 100`ns ) ) { }
+    }
+    __atomic_fetch_add( &globalTotal, myTotal, __ATOMIC_SEQ_CST );
+}
+
+thread Churner {}; // performs non-waituntil try insert/remove operations to add churn/interference
+void main( Churner & this ) {
+    long long int out, myTotal = 0;
+    bool success;
+    while( !done ) {
+        try_insert( A, 0 );
+        if ( try_lock( B ) ) {
+            consume_b_val( myTotal );
+            unlock( B );
+        }
+        mutex( B ) { consume_b_val( myTotal ); }
+        try_insert( C, 0 );
+        [out, success] = try_remove( A );
+        if ( success ) myTotal += out;
+        [out, success] = try_remove( C );
+        if ( success ) myTotal += out;
+    }
+    __atomic_fetch_add( &globalTotal, myTotal, __ATOMIC_SEQ_CST );
+}
+
+size_t numtimes = 5000;
+size_t numServers = 3;
+int main( int argc, char * argv[] ) {
+    if ( argc == 2 )
+        numtimes = atoi( argv[1] );
+
+    processor p[numServers + 2];
+    A{5};
+    C{5};
+
+    long long int total = 0;
+    printf("start\n");
+    {
+        Server1 s[numServers];
+        Drainer d;
+        {
+            Churner c;
+            for( long long int j = 0; j < numtimes; j++ ) {
+                when( j % 2 == 0 ) waituntil( j >> A ) { total += j; }
+                or when( j % 4 < 2 ) waituntil( B ) { produce_b_val( total ); }
+                and when( j % 8 < 4 ) waituntil( j >> C ) { total += j; }
+                and waituntil( timeout( 1`ns ) ) {}
+                if ( j == numtimes / 2 )
+                    fulfil( F, val_to_deliver );
+            }
+            done = true;
+            printf("terminating churner\n");
+        }
+        printf("waiting for empty channels\n");
+        while( get_count( A ) > 0 || get_count( C ) > 0 ) { }
+        printf("sending sentinels\n");
+        for ( i; numServers + 1 ) insert( C, -1 );
+        printf("joining servers\n");
+    }
+    if ( b_val == old_b_val ) total += b_val;       // handle if last value wasn't produced
+    if ( !available( F ) ) total += val_to_deliver; // handle if future was consumed
+    if ( total != globalTotal ) 
+        printf("CHECKSUM MISMATCH!! Main thread got %lld, server sum is %lld\n", total, globalTotal);
+    printf("done\n");
+}
Index: tests/concurrency/waituntil/basic_else.cfa
===================================================================
--- tests/concurrency/waituntil/basic_else.cfa	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
+++ tests/concurrency/waituntil/basic_else.cfa	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
@@ -0,0 +1,17 @@
+#include <select.hfa>
+#include <future.hfa>
+
+future(int) A, B, C;
+
+int main() {
+    waituntil( A ) { printf("A1\n"); } or else { printf("else1\n"); }
+    fulfil( A, 1 );
+    waituntil( A ) { printf("A2\n"); } or else { printf("else2\n"); }
+    reset( A );
+    waituntil( A ) { printf("A3\n"); } or when(true) else { printf("else3\n"); }
+    fulfil( A, 1 );
+    waituntil( A ) { printf("A4\n"); } or when(false) else { printf("else4\n"); }
+    reset( A );
+    fulfil( A, 1 );
+    waituntil( A ) { printf("A5\n"); }
+}
Index: tests/concurrency/waituntil/channel_close.cfa
===================================================================
--- tests/concurrency/waituntil/channel_close.cfa	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
+++ tests/concurrency/waituntil/channel_close.cfa	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
@@ -0,0 +1,94 @@
+#include <select.hfa>
+#include <thread.hfa>
+#include <channel.hfa>
+#include <time.hfa>
+
+channel(long long int) A, B;
+
+volatile long long int inserts = 0;
+volatile long long int removes = 0;
+
+thread Producer {};
+void main( Producer & this ) {
+    try {
+        for( long long int i = 0;;i++ ) {
+            waituntil( (i >> A) ) { inserts++; }
+            and waituntil( (i >> B) ) { inserts++; }
+        }
+    } catch ( channel_closed * e ) {} 
+}
+
+bool useAnd = false;
+thread Consumer {}; // ensures that the changing when states of Server1 don't result in a deadlock
+void main( Consumer & this ) {
+    long long int in, in2, A_removes = 0, B_removes = 0;
+    try {
+        for( ;; ) {
+            if ( useAnd ) {
+                waituntil( (in << A) ) { assert( A_removes == in ); A_removes++; removes++; }
+                and waituntil( (in2 << B) ) { assert( B_removes == in2 ); B_removes++; removes++; }
+                continue;
+            }
+            waituntil( (in << A) ) { assert( A_removes == in ); A_removes++; removes++; }
+            or waituntil( (in2 << B) ) { assert( B_removes == in2 ); B_removes++; removes++; }
+        }
+    } catchResume ( channel_closed * e ) {} // continue to remove until would block
+    catch ( channel_closed * e ) {} 
+    try {
+        for( ;; )
+            waituntil( (in << A) ) { assert( A_removes == in ); A_removes++; removes++; }
+    } catchResume ( channel_closed * e ) {} // continue to remove until would block
+    catch ( channel_closed * e ) {} 
+    try {
+        for( ;; )
+            waituntil( (in << B) ) { assert( B_removes == in ); B_removes++; removes++; }
+    } catchResume ( channel_closed * e ) {} // continue to remove until would block
+    catch ( channel_closed * e ) {} 
+}
+
+
+size_t time = 5;
+int main( int argc, char * argv[] ) {
+    if ( argc == 2 )
+        time = atoi( argv[1] );
+
+    processor p[2];
+    A{5};
+    B{5};
+
+    printf("start OR\n");
+    {
+        Producer p;
+        Consumer c;
+        sleep(time`s);
+        printf("done sleep\n");
+        printf("closing A\n");
+        close(A);
+        printf("closing B\n");
+        close(B);
+    }
+    if ( inserts != removes ) 
+        printf("CHECKSUM MISMATCH!! Producer got: %lld, Consumer got: %lld\n", inserts, removes);
+    printf("done\n");
+    ^A{};
+    ^B{};
+
+    inserts = 0;
+    removes = 0;
+    A{5};
+    B{5};
+    printf("start AND\n");
+    {
+        Producer p;
+        Consumer c;
+        sleep(time`s);
+        printf("done sleep\n");
+        printf("closing A\n");
+        close(A);
+        printf("closing B\n");
+        close(B);
+    }
+    if ( inserts != removes ) 
+        printf("CHECKSUM MISMATCH!! Producer got: %lld, Consumer got: %lld\n", inserts, removes);
+    printf("done\n");
+}
Index: tests/concurrency/waituntil/channel_zero_size.cfa
===================================================================
--- tests/concurrency/waituntil/channel_zero_size.cfa	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
+++ tests/concurrency/waituntil/channel_zero_size.cfa	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
@@ -0,0 +1,50 @@
+#include <select.hfa>
+#include <thread.hfa>
+#include <channel.hfa>
+
+channel(long long int) A, B, C;
+
+volatile bool done = false;
+long long int globalTotal = 0;
+
+thread Server1 {};
+void main( Server1 & this ) {
+    long long int a, b, c, i = 0, myTotal = 0;
+    for( ;;i++ ) {
+        // printf("loop S\n");
+        waituntil( a << A ) { myTotal += a; }
+        or waituntil( b << B ) { myTotal += b; }
+        or waituntil( c << C ) { if ( c == -1 ) break; myTotal += c; }
+    }
+    __atomic_fetch_add( &globalTotal, myTotal, __ATOMIC_SEQ_CST );
+}
+
+size_t numtimes = 100000;
+size_t numServers = 1;
+int main( int argc, char * argv[] ) {
+    if ( argc == 2 )
+        numtimes = atoi( argv[1] );
+
+    processor p[numServers];
+    A{0};
+    B{0};
+    C{0};
+
+    long long int total = 0;
+    printf("start\n");
+    {
+        Server1 s[numServers];
+        for( long long int j = 0; j < numtimes; j++ ) {
+            // printf("loop\n");
+            waituntil( j >> A ) { total += j; }
+            or waituntil( j >> B ) { total += j; }
+            or waituntil( j >> C ) { total += j; }
+        }
+        printf("sending sentinels\n");
+        for ( i; numServers ) insert( C, -1 );
+        printf("joining servers\n");
+    }
+    if ( total != globalTotal ) 
+        printf("CHECKSUM MISMATCH!! Main thread got %lld, server sum is %lld\n", total, globalTotal);
+    printf("done\n");
+}
Index: tests/concurrency/waituntil/channels.cfa
===================================================================
--- tests/concurrency/waituntil/channels.cfa	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
+++ tests/concurrency/waituntil/channels.cfa	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
@@ -0,0 +1,87 @@
+#include <select.hfa>
+#include <thread.hfa>
+#include <channel.hfa>
+
+channel(long long int) A, B, C;
+
+volatile bool done = false;
+long long int globalTotal = 0;
+
+thread Server1 {};
+void main( Server1 & this ) {
+    long long int a, b, c, i = 0, myTotal = 0;
+    for( ;;i++ ) {
+        when( i % 2 == 0 ) waituntil( a << A ) { myTotal += a; }
+        or when( i % 4 < 2 ) waituntil( b << B ) { myTotal += b; }
+        or waituntil( c << C ) { if ( c == -1 ) break; myTotal += c; }
+        or when( i % 8 < 4 ) else {}
+    }
+    __atomic_fetch_add( &globalTotal, myTotal, __ATOMIC_SEQ_CST );
+}
+
+thread Drainer {}; // ensures that the changing when states of Server1 don't result in a deadlock
+void main( Drainer & this ) {
+    long long int a, b, c, myTotal = 0;
+    for( ;; ) {
+        waituntil( a << A ) { myTotal += a; }
+        or waituntil( b << B ) { myTotal += b; }
+        or waituntil( c << C ) { if ( c == -1 ) break; myTotal += c; }
+        or else {}
+    }
+    __atomic_fetch_add( &globalTotal, myTotal, __ATOMIC_SEQ_CST );
+}
+
+thread Churner {}; // performs non-waituntil try insert/remove operations to add churn/interference
+void main( Churner & this ) {
+    long long int out, myTotal = 0;
+    bool success;
+    while( !done ) {
+        try_insert( A, 0 );
+        try_insert( B, 0 );
+        try_insert( C, 0 );
+        [out, success] = try_remove( A );
+        if ( success ) myTotal += out;
+        [out, success] = try_remove( B );
+        if ( success ) myTotal += out;
+        [out, success] = try_remove( C );
+        if ( success ) myTotal += out;
+    }
+    __atomic_fetch_add( &globalTotal, myTotal, __ATOMIC_SEQ_CST );
+}
+
+size_t numtimes = 100000;
+size_t numServers = 3;
+int main( int argc, char * argv[] ) {
+    if ( argc == 2 )
+        numtimes = atoi( argv[1] );
+
+    processor p[numServers + 2];
+    A{5};
+    B{5};
+    C{5};
+
+    long long int total = 0;
+    printf("start\n");
+    {
+        Server1 s[numServers];
+        Drainer d;
+        {
+            Churner c;
+            for( long long int j = 0; j < numtimes; j++ ) {
+                when( j % 2 == 0 ) waituntil( j >> A ) { total += j; }
+                or when( j % 4 < 2 ) waituntil( j >> B ) { total += j; }
+                and when( j % 8 < 4 ) waituntil( j >> C ) { total += j; }
+            }
+            done = true;
+            printf("terminating churner\n");
+        }
+        printf("waiting for empty channels\n");
+        while( get_count( A ) > 0 || get_count( B ) > 0 || get_count( C ) > 0 ) { }
+        printf("sending sentinels\n");
+        for ( i; numServers + 1 ) insert( C, -1 );
+        printf("joining servers\n");
+    }
+    if ( total != globalTotal ) 
+        printf("CHECKSUM MISMATCH!! Main thread got %lld, server sum is %lld\n", total, globalTotal);
+    printf("done\n");
+}
Index: tests/concurrency/waituntil/futures.cfa
===================================================================
--- tests/concurrency/waituntil/futures.cfa	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
+++ tests/concurrency/waituntil/futures.cfa	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
@@ -0,0 +1,61 @@
+#include <select.hfa>
+#include <future.hfa>
+#include <thread.hfa>
+
+future(int) A, B, C;
+
+semaphore s{0};
+
+thread Server1 {};
+void main( Server1 & this ) {
+    fulfil(B, 3);
+    P( s );
+    fulfil(A, 2);
+    fulfil(C, 4);
+}
+
+thread Server2 {};
+void main( Server2 & this ) {
+    fulfil(B, 6);
+    fulfil(A, 5);
+    fulfil(C, 7);
+}
+
+int main() {
+    processor proc[1];
+    printf("start\n"); // currently not working
+    {
+        Server1 s1;
+        waituntil( A ) { get(A); }
+        or waituntil( B ) { get(B); V( s ); }
+        and waituntil( C ) { get(C); }
+    }
+    reset(A);
+    reset(B);
+    reset(C);
+    for ( int i = 0; i < 8; i++ ) {
+        {
+            Server2 s2;
+            when( i % 2 == 0 ) waituntil( A ) { get(A); }
+            or when( i % 4 < 2 ) waituntil( B ) { get(B); }
+            and when( i < 4 ) waituntil( C ) { get(C); }
+        }
+        reset(A);
+        reset(B);
+        reset(C);
+        {
+            Server2 s2;
+            (
+                when( i % 2 == 0 ) waituntil( A ) { get(A); }
+                or when( i % 4 < 2 ) waituntil( B ) { get(B); }
+            )
+            and when( i < 4 ) waituntil( C ) { get(C); }
+        }
+        reset(A);
+        reset(B);
+        reset(C);
+    }
+
+    printf("end\n");
+    return 0;
+}
Index: tests/concurrency/waituntil/locks.cfa
===================================================================
--- tests/concurrency/waituntil/locks.cfa	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
+++ tests/concurrency/waituntil/locks.cfa	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
@@ -0,0 +1,73 @@
+#include <select.hfa>
+#include <thread.hfa>
+#include <locks.hfa>
+#include <mutex_stmt.hfa>
+
+multiple_acquisition_lock A;
+simple_owner_lock B;
+simple_owner_lock C;
+
+volatile bool done = false;
+
+thread Server1 {};
+void main( Server1 & this ) {
+    while( !done ) {
+        lock(A);
+        unlock(A);
+        lock(B);
+        unlock(B);
+        lock(C);
+        unlock(C);
+        mutex(A,B,C) {};
+    }
+    mutex(sout) sout | "DONE";
+}
+
+size_t numtimes = 10000;
+int main() {
+    processor p[3];
+    int a = 0, b = 0, c = 0;
+    printf("start\n");
+    {
+        Server1 s[3];
+        for( j; numtimes ) {
+            for ( int i = 0; i < 8; i++ ) {
+
+                when( i % 2 == 0 ) waituntil( A ) { a++; }
+                or when( i % 4 < 2 ) waituntil( B ) { b++; }
+                and when( i < 4 ) waituntil( C ) { c++; }
+
+                (
+                    when( i % 2 == 0 ) waituntil( A ) { a++; }
+                    or when( i % 4 < 2 ) waituntil( B ) { b++; }
+                )
+                and when( i < 4 ) waituntil( C ) { c++; }
+                
+                when( i % 2 == 0 ) waituntil( A ) { a++; }
+                and when( i % 4 < 2 ) waituntil( B ) { b++; }
+                and when( i < 4 ) waituntil( C ) { c++; }
+
+                when( i % 2 == 0 ) waituntil( A ) { a++; }
+                or when( i % 4 < 2 ) waituntil( B ) { b++; }
+                or when( i < 4 ) waituntil( C ) { c++; }
+            }
+        }
+        done = true;
+    }
+    printf("start recursive acq test\n");
+    {
+        for( j; 10 ) {
+            lock( A );
+            lock( B );
+        }
+        for ( j; 10 ) {
+            waituntil( A ) { a++; } or waituntil( B ) { b++; }
+            waituntil( B ) { b++; } or waituntil( A ) { a++; }
+        }
+        for( j; 10 ) {
+            unlock( A );
+            unlock( B );
+        }
+    }
+    printf("done\n");
+}
Index: tests/concurrency/waituntil/one_chan.cfa
===================================================================
--- tests/concurrency/waituntil/one_chan.cfa	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
+++ tests/concurrency/waituntil/one_chan.cfa	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
@@ -0,0 +1,44 @@
+#include <select.hfa>
+#include <thread.hfa>
+#include <channel.hfa>
+
+channel(long long int) C;
+
+volatile bool done = false;
+long long int globalTotal = 0;
+
+thread Server1 {};
+void main( Server1 & this ) {
+    long long int c, i = 0, myTotal = 0;
+    for( ;;i++ ) {
+        waituntil( c << C ) { if ( c == -1 ) break; myTotal += c; }
+    }
+    __atomic_fetch_add( &globalTotal, myTotal, __ATOMIC_SEQ_CST );
+}
+
+size_t numtimes = 100000;
+size_t numServers = 1;
+int main( int argc, char * argv[] ) {
+    if ( argc == 2 )
+        numtimes = atoi( argv[1] );
+
+    processor p[numServers];
+    C{5};
+
+    long long int total = 0;
+    printf("start\n");
+    {
+        Server1 s[numServers];
+        for( long long int j = 0; j < numtimes; j++ ) {
+            waituntil( j >> C ) { total += j; }
+        }
+        printf("waiting for empty channels\n");
+        printf("sending sentinels\n");
+        for ( i; numServers ) insert( C, -1 );
+        printf("joining servers\n");
+    }
+    assert(get_count( C ) == 0);
+    if ( total != globalTotal ) 
+        printf("CHECKSUM MISMATCH!! Main thread got %lld, server sum is %lld\n", total, globalTotal);
+    printf("done\n");
+}
Index: tests/concurrency/waituntil/timeout.cfa
===================================================================
--- tests/concurrency/waituntil/timeout.cfa	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
+++ tests/concurrency/waituntil/timeout.cfa	(revision c26bea2aa0f87b4b070349c5801adc32fb0d4cf9)
@@ -0,0 +1,18 @@
+#include <time.hfa>
+#include <alarm.hfa>
+#include <select.hfa>
+#include <stdbool.h>
+#include <stdio.h>
+
+int main() {
+    waituntil( sleep( 1`ms ) ) { printf("timeout\n"); }
+    waituntil( timeout( 1`s ) ) { printf("timeout\n"); } or waituntil( timeout( 2`s ) ) { printf("timeout\n"); }
+    waituntil( timeout( 100`s ) ) { printf("timeout 1\n"); } or else { printf("else\n"); }
+    waituntil( timeout( 1`ns ) ) { printf("timeout\n"); } and waituntil( timeout( 2`s ) ) { printf("timeout\n"); }
+    int count = 0;
+    for ( i; 1000 )
+        waituntil( timeout( 1`ns ) ) { count++; } or else { count++; }
+
+    assert( count == 1000 );
+    printf("done\n");
+}
Index: tests/concurrent/.expect/clib.txt
===================================================================
--- tests/concurrent/.expect/clib.txt	(revision 8a919cfec5f277378c3bc7e5d16717f7d44058c6)
+++ 	(revision )
@@ -1,21 +1,0 @@
-Done
-Done
-Done
-Done
-Done
-Done
-Done
-Done
-Done
-Done
-Done
-Done
-Done
-Done
-Done
-Done
-Done
-Done
-Done
-Done
-Done Unparker
Index: tests/concurrent/.expect/clib_tls.txt
===================================================================
--- tests/concurrent/.expect/clib_tls.txt	(revision 8a919cfec5f277378c3bc7e5d16717f7d44058c6)
+++ 	(revision )
@@ -1,12 +1,0 @@
-Local Init
-Local Init
-Local Init
-Local Init
-Starting Checkers
-Done
-Done
-Done
-Done
-Done
-Done
-Done
Index: tests/concurrent/.expect/cluster.txt
===================================================================
--- tests/concurrent/.expect/cluster.txt	(revision 8a919cfec5f277378c3bc7e5d16717f7d44058c6)
+++ 	(revision )
@@ -1,1 +1,0 @@
-done
Index: tests/concurrent/.expect/coroutineYield.txt
===================================================================
--- tests/concurrent/.expect/coroutineYield.txt	(revision 8a919cfec5f277378c3bc7e5d16717f7d44058c6)
+++ 	(revision )
@@ -1,4000 +1,0 @@
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
-Thread 1
-Coroutine 1
-Coroutine 2
-Thread 2
Index: tests/concurrent/.expect/ctor-check.txt
===================================================================
--- tests/concurrent/.expect/ctor-check.txt	(revision 8a919cfec5f277378c3bc7e5d16717f7d44058c6)
+++ 	(revision )
@@ -1,8 +1,0 @@
-concurrent/ctor-check.cfa:11:1 error: constructors cannot have mutex parameters
-?{}: function
-... with parameters
-  this: mutex reference to instance of struct Empty with body
-... returning nothing
- with body
-  Compound Statement:
-
Index: tests/concurrent/.expect/join.txt
===================================================================
--- tests/concurrent/.expect/join.txt	(revision 8a919cfec5f277378c3bc7e5d16717f7d44058c6)
+++ 	(revision )
@@ -1,2 +1,0 @@
-All workers got 42
-All other workers got 27
Index: tests/concurrent/.expect/keywordErrors.txt
===================================================================
--- tests/concurrent/.expect/keywordErrors.txt	(revision 8a919cfec5f277378c3bc7e5d16717f7d44058c6)
+++ 	(revision )
@@ -1,6 +1,0 @@
-concurrent/keywordErrors.cfa:1:1 error: thread keyword requires threads to be in scope, add #include <thread.hfa>
-thread A with body
-
-concurrent/keywordErrors.cfa:6:1 error: thread keyword requires threads to be in scope, add #include <thread.hfa>
-thread B with body
-
Index: tests/concurrent/.expect/lockfree_stack.txt
===================================================================
--- tests/concurrent/.expect/lockfree_stack.txt	(revision 8a919cfec5f277378c3bc7e5d16717f7d44058c6)
+++ 	(revision )
@@ -1,1 +1,0 @@
-done
Index: tests/concurrent/.expect/mainError.txt
===================================================================
--- tests/concurrent/.expect/mainError.txt	(revision 8a919cfec5f277378c3bc7e5d16717f7d44058c6)
+++ 	(revision )
@@ -1,11 +1,0 @@
-concurrent/mainError.cfa:1:1 error: thread keyword requires threads to be in scope, add #include <thread.hfa>
-thread Test with body
-
-concurrent/mainError.cfa:2:1 error: thread keyword requires threads to be in scope, add #include <thread.hfa>
-main: function
-... with parameters
-  reference to instance of struct Test with body
-... returning nothing
- with body
-  Compound Statement:
-
Index: tests/concurrent/.expect/migrate.txt
===================================================================
--- tests/concurrent/.expect/migrate.txt	(revision 8a919cfec5f277378c3bc7e5d16717f7d44058c6)
+++ 	(revision )
@@ -1,1 +1,0 @@
-done
Index: tests/concurrent/.expect/monitor.txt
===================================================================
--- tests/concurrent/.expect/monitor.txt	(revision 8a919cfec5f277378c3bc7e5d16717f7d44058c6)
+++ 	(revision )
@@ -1,1 +1,0 @@
-3000000
Index: tests/concurrent/.expect/multi-monitor.txt
===================================================================
--- tests/concurrent/.expect/multi-monitor.txt	(revision 8a919cfec5f277378c3bc7e5d16717f7d44058c6)
+++ 	(revision )
@@ -1,1 +1,0 @@
-2000000 2000000 2000000
Index: tests/concurrent/.expect/once.txt
===================================================================
--- tests/concurrent/.expect/once.txt	(revision 8a919cfec5f277378c3bc7e5d16717f7d44058c6)
+++ 	(revision )
@@ -1,2 +1,0 @@
-starting
-done
Index: tests/concurrent/.expect/preempt.txt
===================================================================
--- tests/concurrent/.expect/preempt.txt	(revision 8a919cfec5f277378c3bc7e5d16717f7d44058c6)
+++ 	(revision )
@@ -1,5 +1,0 @@
-100
-200
-300
-400
-500
Index: tests/concurrent/.expect/preempt2.txt
===================================================================
--- tests/concurrent/.expect/preempt2.txt	(revision 8a919cfec5f277378c3bc7e5d16717f7d44058c6)
+++ 	(revision )
@@ -1,1 +1,0 @@
-Done
Index: tests/concurrent/.expect/sleep.txt
===================================================================
--- tests/concurrent/.expect/sleep.txt	(revision 8a919cfec5f277378c3bc7e5d16717f7d44058c6)
+++ 	(revision )
@@ -1,2 +1,0 @@
-start
-done
Index: tests/concurrent/.expect/suspend_then.txt
===================================================================
--- tests/concurrent/.expect/suspend_then.txt	(revision 8a919cfec5f277378c3bc7e5d16717f7d44058c6)
+++ 	(revision )
@@ -1,4001 +1,0 @@
-T - took
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
-C - Suspending
-C - Publishing
-T - took
-C - Back
Index: tests/concurrent/.expect/thread.txt
===================================================================
--- tests/concurrent/.expect/thread.txt	(revision 8a919cfec5f277378c3bc7e5d16717f7d44058c6)
+++ 	(revision )
@@ -1,22 +1,0 @@
-User main begin
-First : Suspend No. 1
-First : Suspend No. 2
-First : Suspend No. 3
-First : Suspend No. 4
-First : Suspend No. 5
-First : Suspend No. 6
-First : Suspend No. 7
-First : Suspend No. 8
-First : Suspend No. 9
-First : Suspend No. 10
-Second : Suspend No. 1
-Second : Suspend No. 2
-Second : Suspend No. 3
-Second : Suspend No. 4
-Second : Suspend No. 5
-Second : Suspend No. 6
-Second : Suspend No. 7
-Second : Suspend No. 8
-Second : Suspend No. 9
-Second : Suspend No. 10
-User main end
Index: tests/concurrent/actors/.expect/dynamic.txt
===================================================================
--- tests/concurrent/actors/.expect/dynamic.txt	(revision 8a919cfec5f277378c3bc7e5d16717f7d44058c6)
+++ 	(revision )
@@ -1,5 +1,0 @@
-starting
-started
-stopping
-Done
-stopped
Index: tests/concurrent/actors/.expect/executor.txt
===================================================================
--- tests/concurrent/actors/.expect/executor.txt	(revision 8a919cfec5f277378c3bc7e5d16717f7d44058c6)
+++ 	(revision )
@@ -1,4 +1,0 @@
-starting
-started
-stopping
-stopped
Index: tests/concurrent/actors/.expect/inherit.txt
===================================================================
--- tests/concurrent/actors/.expect/inherit.txt	(revision 8a919cfec5f277378c3bc7e5d16717f7d44058c6)
+++ 	(revision )
@@ -1,6 +1,0 @@
-Start
-A
-A
-A
-A
-Finished
Index: tests/concurrent/actors/.expect/matrix.txt
===================================================================
--- tests/concurrent/actors/.expect/matrix.txt	(revision 8a919cfec5f277378c3bc7e5d16717f7d44058c6)
+++ 	(revision )
@@ -1,4 +1,0 @@
-starting
-started
-stopping
-stopped
Index: tests/concurrent/actors/.expect/pingpong.txt
===================================================================
--- tests/concurrent/actors/.expect/pingpong.txt	(revision 8a919cfec5f277378c3bc7e5d16717f7d44058c6)
+++ 	(revision )
@@ -1,2 +1,0 @@
-start
-end
Index: tests/concurrent/actors/.expect/poison.txt
===================================================================
--- tests/concurrent/actors/.expect/poison.txt	(revision 8a919cfec5f277378c3bc7e5d16717f7d44058c6)
+++ 	(revision )
@@ -1,5 +1,0 @@
-Start
-Finished
-Delete
-Destroy
-Done
Index: tests/concurrent/actors/.expect/static.txt
===================================================================
--- tests/concurrent/actors/.expect/static.txt	(revision 8a919cfec5f277378c3bc7e5d16717f7d44058c6)
+++ 	(revision )
@@ -1,5 +1,0 @@
-starting
-started
-stopping
-Done
-stopped
Index: tests/concurrent/actors/.expect/types.txt
===================================================================
--- tests/concurrent/actors/.expect/types.txt	(revision 8a919cfec5f277378c3bc7e5d16717f7d44058c6)
+++ 	(revision )
@@ -1,17 +1,0 @@
-start
-basic test
-1
-2
-same message and different actors test
-3
-3
-same message and different actor types test
-4
-4
-different message types, one actor test
--1
-5
-nested inheritance actor test
--1
-5
-end
Index: tests/concurrent/actors/dynamic.cfa
===================================================================
--- tests/concurrent/actors/dynamic.cfa	(revision 8a919cfec5f277378c3bc7e5d16717f7d44058c6)
+++ 	(revision )
@@ -1,69 +1,0 @@
-#include <actor.hfa>
-#include <fstream.hfa>
-#include <stdlib.hfa>
-#include <string.h>
-#include <stdio.h>
-
-int Times = 1000000;								// default values
-
-struct derived_actor { inline actor; };
-struct derived_msg {
-    inline message;
-    int cnt;
-};
-
-void ?{}( derived_msg & this, int cnt ) {
-    ((message &) this){ Delete };
-    this.cnt = cnt;
-}
-void ?{}( derived_msg & this ) { ((derived_msg &)this){ 0 }; }
-
-Allocation receive( derived_actor & receiver, derived_msg & msg ) {
-    if ( msg.cnt >= Times ) {
-        sout | "Done";
-        return Delete;
-    }
-    derived_msg * d_msg = alloc();
-    (*d_msg){ msg.cnt + 1 };
-    derived_actor * d_actor = alloc();
-    (*d_actor){};
-    *d_actor << *d_msg;
-    return Delete;
-}
-
-int main( int argc, char * argv[] ) {
-    switch ( argc ) {
-	  case 2:
-		if ( strcmp( argv[1], "d" ) != 0 ) {			// default ?
-			Times = atoi( argv[1] );
-			if ( Times < 1 ) goto Usage;
-		} // if
-	  case 1:											// use defaults
-		break;
-	  default:
-	  Usage:
-		sout | "Usage: " | argv[0] | " [ times (> 0) ]";
-		exit( EXIT_FAILURE );
-	} // switch
-
-    printf("starting\n");
-
-    executor e{ 0, 1, 1, false };
-    start_actor_system( e );
-
-    printf("started\n");
-
-    derived_msg * d_msg = alloc();
-    (*d_msg){};
-    derived_actor * d_actor = alloc();
-    (*d_actor){};
-    *d_actor << *d_msg;
-
-    printf("stopping\n");
-
-    stop_actor_system();
-
-    printf("stopped\n");
-
-    return 0;
-}
Index: tests/concurrent/actors/executor.cfa
===================================================================
--- tests/concurrent/actors/executor.cfa	(revision 8a919cfec5f277378c3bc7e5d16717f7d44058c6)
+++ 	(revision )
@@ -1,106 +1,0 @@
-#include <actor.hfa>
-#include <fstream.hfa>
-#include <stdlib.hfa>
-#include <string.h>
-#include <stdio.h>
-
-// int Actors = 40000, Set = 100, Rounds = 100, Processors = 1, Batch = 1, BufSize = 10; // default values
-int Actors = 1000, Set = 20, Rounds = 10, Processors = 1, Batch = 1, BufSize = 10; // other defaults for test to run in reasonable time
-
-static int ids = 0;
-struct d_actor { 
-    inline actor;
-    d_actor * gstart;
-    int id, rounds, recs, sends;
-};
-void ?{}( d_actor & this ) with(this) {
-    id = ids++;
-    gstart = (&this + (id / Set * Set - id)); // remember group-start array-element
-    rounds = Set * Rounds;	// send at least one message to each group member
-    recs = 0;
-    sends = 0;
-}
-
-struct d_msg { inline message; } shared_msg;
-
-Allocation receive( d_actor & this, d_msg & msg ) with( this ) {
-    if ( recs == rounds ) return Finished;
-    if ( recs % Batch == 0 ) {
-        for ( i; Batch ) {
-            gstart[sends % Set] << shared_msg;
-            sends += 1;
-        }
-    }
-    recs += 1;
-    return Nodelete;
-}
-
-int main( int argc, char * argv[] ) {
-    switch ( argc ) {
-	  case 7:
-		if ( strcmp( argv[6], "d" ) != 0 ) {			// default ?
-			BufSize = atoi( argv[6] );
-			if ( BufSize < 0 ) goto Usage;
-		} // if
-	  case 6:
-		if ( strcmp( argv[5], "d" ) != 0 ) {			// default ?
-			Batch = atoi( argv[5] );
-			if ( Batch < 1 ) goto Usage;
-		} // if
-	  case 5:
-		if ( strcmp( argv[4], "d" ) != 0 ) {			// default ?
-			Processors = atoi( argv[4] );
-			if ( Processors < 1 ) goto Usage;
-		} // if
-	  case 4:
-		if ( strcmp( argv[3], "d" ) != 0 ) {			// default ?
-			Rounds = atoi( argv[3] );
-			if ( Rounds < 1 ) goto Usage;
-		} // if
-	  case 3:
-		if ( strcmp( argv[2], "d" ) != 0 ) {			// default ?
-			Set = atoi( argv[2] );
-			if ( Set < 1 ) goto Usage;
-		} // if
-	  case 2:
-		if ( strcmp( argv[1], "d" ) != 0 ) {			// default ?
-			Actors = atoi( argv[1] );
-			if ( Actors < 1 || Actors <= Set || Actors % Set != 0 ) goto Usage;
-		} // if
-	  case 1:											// use defaults
-		break;
-	  default:
-	  Usage:
-		sout | "Usage: " | argv[0]
-             | " [ actors (> 0 && > set && actors % set == 0 ) | 'd' (default " | Actors
-			 | ") ] [ set (> 0) | 'd' (default " | Set
-			 | ") ] [ rounds (> 0) | 'd' (default " | Rounds
-			 | ") ] [ processors (> 0) | 'd' (default " | Processors
-			 | ") ] [ batch (> 0) | 'd' (default " | Batch
-			 | ") ] [ buffer size (>= 0) | 'd' (default " | BufSize
-			 | ") ]" ;
-		exit( EXIT_FAILURE );
-	} // switch
-
-    executor e{ Processors, Processors, Processors == 1 ? 1 : Processors * 512, true };
-
-    printf("starting\n");
-
-    start_actor_system( e );
-
-    printf("started\n");
-
-    d_actor actors[ Actors ];
-
-	for ( i; Actors ) {
-		actors[i] << shared_msg;
-	} // for
-
-    printf("stopping\n");
-
-    stop_actor_system();
-
-    printf("stopped\n");
-
-    return 0;
-}
Index: tests/concurrent/actors/inherit.cfa
===================================================================
--- tests/concurrent/actors/inherit.cfa	(revision 8a919cfec5f277378c3bc7e5d16717f7d44058c6)
+++ 	(revision )
@@ -1,52 +1,0 @@
-#include <actor.hfa>
-#include <fstream.hfa>
-#include <stdlib.hfa>
-#include <string.h>
-#include <stdio.h>
-#include <mutex_stmt.hfa>
-
-struct Server { inline actor; };
-struct Server2 { inline Server; int b; };
-struct D_msg { int a; inline message; };
-struct D_msg2 { inline D_msg; };
-
-void ^?{}( Server2 & this ) { mutex(sout) sout | 'A'; }
-void ?{}( D_msg & this ) { set_allocation( this, Delete ); }
-void ^?{}( D_msg & this ) { mutex(sout) sout | 'A'; }
-
-Allocation handle() {
-    return Finished;
-}
-
-Allocation receive( Server & receiver, D_msg & msg ) { return handle(); }
-Allocation receive( Server & receiver, D_msg2 & msg ) { return handle(); }
-Allocation receive( Server2 & receiver, D_msg & msg ) { return Delete; }
-Allocation receive( Server2 & receiver, D_msg2 & msg ) { return Delete; }
-
-int main() {
-    sout | "Start";
-    {
-        start_actor_system();
-        D_msg * dm = alloc();
-        (*dm){};
-        D_msg2 dm2;
-        Server2 * s = alloc();
-        (*s){};
-        Server2 * s2 = alloc();
-        (*s2){};
-        *s << *dm;
-        *s2 << dm2;
-        stop_actor_system();
-    }
-    {
-        start_actor_system();
-        Server s[2];
-        D_msg * dm = alloc();
-        (*dm){};
-        D_msg2 dm2;
-        s[0] << *dm;
-        s[1] << dm2;
-        stop_actor_system();
-    }
-    sout | "Finished";
-}
Index: tests/concurrent/actors/matrix.cfa
===================================================================
--- tests/concurrent/actors/matrix.cfa	(revision 8a919cfec5f277378c3bc7e5d16717f7d44058c6)
+++ 	(revision )
@@ -1,125 +1,0 @@
-#include <actor.hfa>
-#include <fstream.hfa>
-#include <stdlib.hfa>
-#include <string.h>
-#include <stdio.h>
-
-unsigned int xr = 500, xc = 500, yc = 500, Processors = 1; // default values
-
-struct derived_actor { inline actor; };
-
-struct derived_msg {
-    inline message;
-    int * Z;
-	int * X;
-    int ** Y;
-};
-
-void ?{}( derived_msg & this ) {}
-void ?{}( derived_msg & this, int * Z, int * X, int ** Y ) {
-    ((message &) this){ Nodelete };
-    this.Z = Z;
-    this.X = X;
-    this.Y = Y;
-}
-
-Allocation receive( derived_actor & receiver, derived_msg & msg ) {
-    for ( unsigned int i = 0; i < yc; i += 1 ) { // multiply X_row by Y_col and sum products
-        msg.Z[i] = 0;
-        for ( unsigned int j = 0; j < xc; j += 1 ) {
-            msg.Z[i] += msg.X[j] * msg.Y[j][i];
-        } // for
-    } // for
-    return Finished;
-}
-
-int main( int argc, char * argv[] ) {
-    switch ( argc ) {
-	  case 5:
-		if ( strcmp( argv[4], "d" ) != 0 ) {			// default ?
-			Processors = atoi( argv[4] );
-			if ( Processors < 1 ) goto Usage;
-		} // if
-	  case 4:
-		if ( strcmp( argv[3], "d" ) != 0 ) {			// default ?
-			xr = atoi( argv[3] );
-			if ( xr < 1 ) goto Usage;
-		} // if
-	  case 3:
-		if ( strcmp( argv[2], "d" ) != 0 ) {			// default ?
-			xc = atoi( argv[2] );
-			if ( xc < 1 ) goto Usage;
-		} // if
-	  case 2:
-		if ( strcmp( argv[1], "d" ) != 0 ) {			// default ?
-			yc = atoi( argv[1] );
-			if ( yc < 1 ) goto Usage;
-		} // if
-	  case 1:											// use defaults
-		break;
-	  default:
-	  Usage:
-		sout | "Usage: " | argv[0]
-			 | " [ yc (> 0) | 'd' (default " | yc
-			 | ") ] [ xc (> 0) | 'd' (default " | xc
-			 | ") ] [ xr (> 0) | 'd' (default " | xr
-			 | ") ] [ processors (> 0) | 'd' (default " | Processors
-			 | ") ]" ;
-		exit( EXIT_FAILURE );
-	} // switch
-
-    unsigned int r, c;
-	int * Z[xr], * X[xr], * Y[xc];
-
-	for ( r = 0; r < xr; r += 1 ) {						// create/initialize X matrix
-		X[r] = aalloc( xc );
-		for ( c = 0; c < xc; c += 1 ) {
-			X[r][c] = r * c % 37;						// for timing
-		} // for
-	} // for
-	for ( r = 0; r < xc; r += 1 ) {						// create/initialize Y matrix
-		Y[r] = aalloc( yc );
-		for ( c = 0; c < yc; c += 1 ) {
-			Y[r][c] = r * c % 37;						// for timing
-		} // for
-	} // for
-	for ( r = 0; r < xr; r += 1 ) {						// create Z matrix
-		Z[r] = aalloc( yc );
-	} // for
-
-    executor e{ Processors, Processors, Processors == 1 ? 1 : Processors * 16, true };
-
-    printf("starting\n");
-
-    start_actor_system( e );
-
-    printf("started\n");
-
-    derived_msg messages[xr];
-
-    derived_actor actors[xr];
-
-	for ( unsigned int r = 0; r < xr; r += 1 ) {
-		messages[r]{ Z[r], X[r], Y };
-	} // for
-
-	for ( unsigned int r = 0; r < xr; r += 1 ) {
-		actors[r] << messages[r];
-	} // for
-
-    printf("stopping\n");
-
-    stop_actor_system();
-
-    printf("stopped\n");
-
-    for ( r = 0; r < xr; r += 1 ) {						// deallocate X and Z matrices
-		free( X[r] );
-        free( Z[r] );
-	} // for
-	for ( r = 0; r < xc; r += 1 ) {						// deallocate Y matrix
-        free( Y[r] );
-	} // for
-
-    return 0;
-}
Index: tests/concurrent/actors/pingpong.cfa
===================================================================
--- tests/concurrent/actors/pingpong.cfa	(revision 8a919cfec5f277378c3bc7e5d16717f7d44058c6)
+++ 	(revision )
@@ -1,60 +1,0 @@
-#include <fstream.hfa>
-#include <stdlib.hfa>
-#include <string.h>
-#include <stdio.h>
-#include <mutex_stmt.hfa>
-#include <actor.hfa>
-
-struct ping { inline actor; };
-struct pong { inline actor; };
-
-struct p_msg {
-    inline message;
-    size_t count;
-};
-static inline void ?{}( p_msg & this ) { ((message &)this){}; this.count = 0; }
-
-ping * pi;
-pong * po;
-size_t times = 100000;
-
-Allocation receive( ping & receiver, p_msg & msg ) {
-    msg.count++;
-    if ( msg.count > times ) return Finished;
-
-    Allocation retval = Nodelete;
-    if ( msg.count == times ) retval = Finished;
-    *po << msg;
-    return retval;
-}
-
-Allocation receive( pong & receiver, p_msg & msg ) {
-    msg.count++;
-    if ( msg.count > times ) return Finished;
-    
-    Allocation retval = Nodelete;
-    if ( msg.count == times ) retval = Finished;
-    *pi << msg;
-    return retval;
-}
-
-size_t Processors = 2;
-
-int main( int argc, char * argv[] ) {
-    printf("start\n");
-
-    processor p[Processors - 1];
-
-    start_actor_system( Processors ); // test passing number of processors
-
-    ping pi_actor;
-    pong po_actor;
-    po = &po_actor;
-    pi = &pi_actor;
-    p_msg m;
-    pi_actor << m;
-    stop_actor_system();
-
-    printf("end\n");
-    return 0;
-}
Index: tests/concurrent/actors/poison.cfa
===================================================================
--- tests/concurrent/actors/poison.cfa	(revision 8a919cfec5f277378c3bc7e5d16717f7d44058c6)
+++ 	(revision )
@@ -1,50 +1,0 @@
-#include <actor.hfa>
-#include <fstream.hfa>
-#include <stdlib.hfa>
-#include <string.h>
-#include <stdio.h>
-
-struct Server { int val; inline actor; };
-
-void ?{}( Server & this ) { this.val = 999; }
-void ^?{}( Server & this ) { this.val = 777; }
-
-int main() {
-    sout | "Start";
-
-    sout | "Finished";
-    {
-        start_actor_system();
-        Server s[10];
-        for ( i; 10 ) {
-            s[i] << FinishedMsg;
-        }
-        stop_actor_system();
-    }
-
-    sout | "Delete";
-    {
-        start_actor_system();
-        for ( i; 10 ) {
-            Server * s = alloc();
-            (*s){};
-            (*s) << DeleteMsg;
-        }
-        stop_actor_system();
-    }
-
-    sout | "Destroy";
-    {
-        start_actor_system();
-        Server s[10];
-        for ( i; 10 )
-            s[i] << DestroyMsg;
-        stop_actor_system();
-        for ( i; 10 )
-            if (s[i].val != 777)
-                sout | "Error: dtor not called correctly.";
-    }
-
-    sout | "Done";
-    return 0;
-}
Index: tests/concurrent/actors/static.cfa
===================================================================
--- tests/concurrent/actors/static.cfa	(revision 8a919cfec5f277378c3bc7e5d16717f7d44058c6)
+++ 	(revision )
@@ -1,66 +1,0 @@
-#include <actor.hfa>
-#include <fstream.hfa>
-#include <stdlib.hfa>
-#include <string.h>
-#include <stdio.h>
-
-int Times = 1000000;								// default values
-
-struct derived_actor { inline actor; };
-struct derived_msg {
-    inline message;
-    int cnt;
-};
-
-void ?{}( derived_msg & this, int cnt ) {
-    ((message &) this){ Nodelete };
-    this.cnt = cnt;
-}
-void ?{}( derived_msg & this ) { ((derived_msg &)this){ 0 }; }
-
-Allocation receive( derived_actor & receiver, derived_msg & msg ) {
-    if ( msg.cnt >= Times ) {
-        sout | "Done";
-        return Finished;
-    }
-    msg.cnt++;
-    receiver << msg;
-    return Nodelete;
-}
-
-int main( int argc, char * argv[] ) {
-    switch ( argc ) {
-	  case 2:
-		if ( strcmp( argv[1], "d" ) != 0 ) {			// default ?
-			Times = atoi( argv[1] );
-			if ( Times < 1 ) goto Usage;
-		} // if
-	  case 1:											// use defaults
-		break;
-	  default:
-	  Usage:
-		sout | "Usage: " | argv[0] | " [ times (> 0) ]";
-		exit( EXIT_FAILURE );
-	} // switch
-
-    printf("starting\n");
-
-    executor e{ 0, 1, 1, false };
-    start_actor_system( e );
-
-    printf("started\n");
-
-    derived_msg msg;
-
-    derived_actor actor;
-
-    actor << msg;
-
-    printf("stopping\n");
-
-    stop_actor_system();
-
-    printf("stopped\n");
-
-    return 0;
-}
Index: tests/concurrent/actors/types.cfa
===================================================================
--- tests/concurrent/actors/types.cfa	(revision 8a919cfec5f277378c3bc7e5d16717f7d44058c6)
+++ 	(revision )
@@ -1,128 +1,0 @@
-#include <actor.hfa>
-#include <fstream.hfa>
-#include <stdlib.hfa>
-#include <string.h>
-#include <stdio.h>
-#include <mutex_stmt.hfa>
-
-struct dummy_actor { actor a; }; // this won't work since the actor isn't inlined
-
-struct derived_actor {
-    inline actor;
-    int counter;
-};
-static inline void ?{}( derived_actor & this ) { ((actor &)this){}; this.counter = 0; }
-
-struct d_msg {
-    inline message;
-    int num;
-};
-
-// this isn't a valid receive routine since int is not a message type
-Allocation receive( derived_actor & receiver, int i ) with( receiver ) {
-    mutex(sout) sout | i;
-    counter++;
-    if ( counter == 2 ) return Finished;
-    return Nodelete; 
-}
-
-Allocation receive( derived_actor & receiver, d_msg & msg ) {
-    return receive( receiver, msg.num );
-}
-
-struct derived_actor2 {
-    struct nested { int i; }; // testing nested before inline
-    inline actor;
-};
-
-Allocation receive( derived_actor2 & receiver, d_msg & msg ) {
-    mutex(sout) sout | msg.num;
-    return Finished;
-}
-
-struct derived_actor3 { inline actor; };
-struct derived_actor4 { inline derived_actor3; };
-struct d_msg2 {
-    inline message;
-    int num;
-};
-
-Allocation receive( derived_actor3 & receiver, d_msg & msg ) {
-    mutex(sout) sout | msg.num;
-    if ( msg.num == -1 ) return Nodelete;
-    return Finished;
-}
-
-Allocation receive( derived_actor3 & receiver, d_msg2 & msg ) {
-    mutex(sout) sout | msg.num;
-    return Finished;
-}
-
-size_t Processors = 3;
-
-int main( int argc, char * argv[] ) {
-    printf("start\n");
-
-    processor p[Processors - 1];
-
-    printf("basic test\n"); 
-    start_actor_system( Processors ); // test passing number of processors
-    derived_actor a;
-    d_msg b, c;
-    b.num = 1;
-    c.num = 2;
-    a << b << c;
-    stop_actor_system();
-
-    printf("same message and different actors test\n");
-    start_actor_system(); // let system detect # of processors
-    derived_actor2 d_ac2_0, d_ac2_1;
-    d_msg d_ac2_msg;
-    d_ac2_msg.num = 3;
-    d_ac2_0 << d_ac2_msg;
-    d_ac2_1 << d_ac2_msg;
-    stop_actor_system();
-
-    
-    {
-        printf("same message and different actor types test\n");
-        executor e{ 0, Processors, Processors == 1 ? 1 : Processors * 4, false };
-        start_actor_system( e ); // pass an explicit executor
-        derived_actor2 d_ac2_2;
-        derived_actor3 d_ac3_0;
-        d_msg d_ac23_msg;
-        d_ac23_msg.num = 4;
-        d_ac3_0 << d_ac23_msg;
-        d_ac2_2 << d_ac23_msg;
-        stop_actor_system();
-    } // RAII to clean up executor
-
-    {
-        printf("different message types, one actor test\n");
-        executor e{ 1, Processors, Processors == 1 ? 1 : Processors * 4, true };
-        start_actor_system( Processors );
-        derived_actor3 a3;
-        d_msg b1;
-        d_msg2 c2;
-        b1.num = -1;
-        c2.num = 5;
-        a3 << b1 << c2;
-        stop_actor_system();
-    } // RAII to clean up executor
-
-    {
-        printf("nested inheritance actor test\n");
-        executor e{ 1, Processors, Processors == 1 ? 1 : Processors * 4, true };
-        start_actor_system( Processors );
-        derived_actor4 a4;
-        d_msg b1;
-        d_msg2 c2;
-        b1.num = -1;
-        c2.num = 5;
-        a4 << b1 << c2;
-        stop_actor_system();
-    } // RAII to clean up executor
-
-    printf("end\n");
-    return 0;
-}
Index: tests/concurrent/barrier/.expect/generation.txt
===================================================================
--- tests/concurrent/barrier/.expect/generation.txt	(revision 8a919cfec5f277378c3bc7e5d16717f7d44058c6)
+++ 	(revision )
@@ -1,1 +1,0 @@
-AAAAAAAAABBBBBBBBBCCCCCCCCCDDDDDDDDDEEEEEEEEEFFFFFFFFFGGGGGGGGGHHHHHHHHHIIIIIIIIIJJJJJJJJJKKKKKKKKKLLLLLLLLLMMMMMMMMMNNNNNNNNNOOOOOOOOOPPPPPPPPPQQQQQQQQQRRRRRRRRRSSSSSSSSSTTTTTTTTTUUUUUUUUUVVVVVVVVVWWWWWWWWWXXXXXXXXXYYYYYYYYYZZZZZZZZZAAAAAAAAABBBBBBBBBCCCCCCCCCDDDDDDDDDEEEEEEEEEFFFFFFFFFGGGGGGGGGHHHHHHHHHIIIIIIIIIJJJJJJJJJKKKKKKKKKLLLLLLLLLMMMMMMMMMNNNNNNNNNOOOOOOOOOPPPPPPPPPQQQQQQQQQRRRRRRRRRSSSSSSSSSTTTTTTTTTUUUUUUUUUVVVVVVVVVWWWWWWWWWXXXXXXXXXYYYYYYYYYZZZZZZZZZAAAAAAAAABBBBBBBBBCCCCCCCCCDDDDDDDDDEEEEEEEEEFFFFFFFFFGGGGGGGGGHHHHHHHHHIIIIIIIIIJJJJJJJJJKKKKKKKKKLLLLLLLLLMMMMMMMMMNNNNNNNNNOOOOOOOOOPPPPPPPPPQQQQQQQQQRRRRRRRRRSSSSSSSSSTTTTTTTTTUUUUUUUUUVVVVVVVVVWWWWWWWWWXXXXXXXXXYYYYYYYYYZZZZZZZZZAAAAAAAAABBBBBBBBBCCCCCCCCCDDDDDDDDDEEEEEEEEEFFFFFFFFFGGGGGGGGGHHHHHHHHHIIIIIIIIIJJJJJJJJJKKKKKKKKKLLLLLLLLLMMMMMMMMMNNNNNNNNNOOOOOOOOOPPPPPPPPPQQQQQQQQQRRRRRRRRRSSSSSSSSSTTTTTTTTTUUUUUUUUUVVVVVVVVVWWWWWWWWWXXXXXXXXXYYYYYYYYYZZZZZZZZZAAAAAAAAABBBBBBBBBCCCCCCCCCDDDDDDDDDEEEEEEEEEFFFFFFFFFGGGGGGGGGHHHHHHHHHIIIIIIIIIJJJJJJJJJKKKKKKKKKLLLLLLLLLMMMMMMMMMNNNNNNNNNOOOOOOOOOPPPPPPPPPQQQQQQQQQRRRRRRRRRSSSSSSSSSTTTTTTTTTUUUUUUUUUVVVVVVVVVWWWWWWWWWXXXXXXXXXYYYYYYYYYZZZZZZZZZAAAAAAAAABBBBBBBBBCCCCCCCCCDDDDDDDDDEEEEEEEEEFFFFFFFFFGGGGGGGGGHHHHHHHHHIIIIIIIIIJJJJJJJJJKKKKKKKKKLLLLLLLLLMMMMMMMMMNNNNNNNNNOOOOOOOOOPPPPPPPPPQQQQQQQQQRRRRRRRRRSSSSSSSSSTTTTTTTTTUUUUUUUUUVVVVVVVVVWWWWWWWWWXXXXXXXXXYYYYYYYYYZZZZZZZZZAAAAAAAAABBBBBBBBBCCCCCCCCCDDDDDDDDDEEEEEEEEEFFFFFFFFFGGGGGGGGGHHHHHHHHHIIIIIIIIIJJJJJJJJJKKKKKKKKKLLLLLLLLLMMMMMMMMMNNNNNNNNNOOOOOOOOOPPPPPPPPPQQQQQQQQQRRRRRRRRRSSSSSSSSSTTTTTTTTTUUUUUUUUUVVVVVVVVVWWWWWWWWWXXXXXXXXXYYYYYYYYYZZZZZZZZZAAAAAAAAABBBBBBBBBCCCCCCCCCDDDDDDDDDEEEEEEEEEFFFFFFFFFGGGGGGGGGHHHHHHHHHIIIIIIIIIJJJJJJJJJKKKKKKKKKLLLLLLLLLMMMMMMMMMNNNNNNNNNOOOOOOOOOPPPPPPPPPQQQQQQQQQRRRRRRRRRSSSSSSSSSTTTTTTTTTUUUUUUUUUVVVVVVVVVWWWWWWWWWXXXXXXXXXYYYYYYYYYZZZZZZZZZAAAAAAAAABBBBBBBBBCCCCCCCCCDDDDDDDDDEEEEEEEEEFFFFFFFFFGGGGGGGGGHHHHHHHHHIIIIIIIIIJJJJJJJJJKKKKKKKKKLLLLLLLLLMMMMMMMMMNNNNNNNNNOOOOOOOOOPPPPPPPPPQQQQQQQQQRRRRRRRRRSSSSSSSSSTTTTTTTTTUUUUUUUUUVVVVVVVVVWWWWWWWWWXXXXXXXXXYYYYYYYYYZZZZZZZZZAAAAAAAAABBBBBBBBBCCCCCCCCCDDDDDDDDDEEEEEEEEEFFFFFFFFFGGGGGGGGGHHHHHHHHHIIIIIIIIIJJJJJJJJJKKKKKKKKKLLLLLLLLLMMMMMMMMMNNNNNNNNNOOOOOOOOOPPPPPPPPPQQQQQQQQQRRRRRRRRRSSSSSSSSSTTTTTTTTTUUUUUUUUUVVVVVVVVVWWWWWWWWWXXXXXXXXXYYYYYYYYYZZZZZZZZZAAAAAAAAABBBBBBBBBCCCCCCCCCDDDDDDDDDEEEEEEEEEFFFFFFFFFGGGGGGGGGHHHHHHHHHIIIIIIIIIJJJJJJJJJKKKKKKKKKLLLLLLLLLMMMMMMMMMNNNNNNNNNOOOOOOOOOPPPPPPPPPQQQQQQQQQRRRRRRRRRSSSSSSSSSTTTTTTTTTUUUUUUUUUVVVVVVVVVWWWWWWWWWXXXXXXXXXYYYYYYYYYZZZZZZZZZAAAAAAAAABBBBBBBBBCCCCCCCCCDDDDDDDDDEEEEEEEEEFFFFFFFFFGGGGGGGGGHHHHHHHHHIIIIIIIIIJJJJJJJJJKKKKKKKKKLLLLLLLLLMMMMMMMMMNNNNNNNNNOOOOOOOOOPPPPPPPPPQQQQQQQQQRRRRRRRRRSSSSSSSSSTTTTTTTTTUUUUUUUUUVVVVVVVVVWWWWWWWWWXXXXXXXXXYYYYYYYYYZZZZZZZZZAAAAAAAAABBBBBBBBBCCCCCCCCCDDDDDDDDDEEEEEEEEEFFFFFFFFFGGGGGGGGGHHHHHHHHHIIIIIIIIIJJJJJJJJJKKKKKKKKKLLLLLLLLLMMMMMMMMMNNNNNNNNNOOOOOOOOOPPPPPPPPPQQQQQQQQQRRRRRRRRRSSSSSSSSSTTTTTTTTTUUUUUUUUUVVVVVVVVVWWWWWWWWWXXXXXXXXXYYYYYYYYYZZZZZZZZZAAAAAAAAABBBBBBBBBCCCCCCCCCDDDDDDDDDEEEEEEEEEFFFFFFFFFGGGGGGGGGHHHHHHHHHIIIIIIIIIJJJJJJJJJKKKKKKKKKLLLLLLLLLMMMMMMMMMNNNNNNNNNOOOOOOOOOPPPPPPPPPQQQQQQQQQRRRRRRRRRSSSSSSSSSTTTTTTTTTUUUUUUUUUVVVVVVVVVWWWWWWWWWXXXXXXXXXYYYYYYYYYZZZZZZZZZAAAAAAAAABBBBBBBBBCCCCCCCCCDDDDDDDDDEEEEEEEEEFFFFFFFFFGGGGGGGGGHHHHHHHHHIIIIIIIIIJJJJJJJJJKKKKKKKKKLLLLLLLLLMMMMMMMMMNNNNNNNNNOOOOOOOOOPPPPPPPPPQQQQQQQQQRRRRRRRRRSSSSSSSSSTTTTTTTTTUUUUUUUUUVVVVVVVVVWWWWWWWWWXXXXXXXXXYYYYYYYYYZZZZZZZZZAAAAAAAAABBBBBBBBBCCCCCCCCCDDDDDDDDDEEEEEEEEEFFFFFFFFFGGGGGGGGGHHHHHHHHHIIIIIIIIIJJJJJJJJJKKKKKKKKKLLLLLLLLLMMMMMMMMMNNNNNNNNNOOOOOOOOOPPPPPPPPPQQQQQQQQQRRRRRRRRRSSSSSSSSSTTTTTTTTTUUUUUUUUUVVVVVVVVVWWWWWWWWWXXXXXXXXXYYYYYYYYYZZZZZZZZZAAAAAAAAABBBBBBBBBCCCCCCCCCDDDDDDDDDEEEEEEEEEFFFFFFFFFGGGGGGGGGHHHHHHHHHIIIIIIIIIJJJJJJJJJKKKKKKKKKLLLLLLLLLMMMMMMMMMNNNNNNNNNOOOOOOOOOPPPPPPPPPQQQQQQQQQRRRRRRRRRSSSSSSSSSTTTTTTTTTUUUUUUUUUVVVVVVVVVWWWWWWWWWXXXXXXXXXYYYYYYYYYZZZZZZZZZAAAAAAAAABBBBBBBBBCCCCCCCCCDDDDDDDDDEEEEEEEEEFFFFFFFFFGGGGGGGGGHHHHHHHHHIIIIIIIIIJJJJJJJJJKKKKKKKKKLLLLLLLLLMMMMMMMMMNNNNNNNNNOOOOOOOOOPPPPPPPPPQQQQQQQQQRRRRRRRRRSSSSSSSSSTTTTTTTTTUUUUUUUUUVVVVVVVVVWWWWWWWWWXXXXXXXXXYYYYYYYYYZZZZZZZZZAAAAAAAAABBBBBBBBBCCCCCCCCCDDDDDDDDDEEEEEEEEEFFFFFFFFFGGGGGGGGGHHHHHHHHHIIIIIIIIIJJJJJJJJJKKKKKKKKKLLLLLLLLLMMMMMMMMMNNNNNNNNNOOOOOOOOOPPPPPPPPPQQQQQQQQQRRRRRRRRRSSSSSSSSSTTTTTTTTTUUUUUUUUUVVVVVVVVVWWWWWWWWWXXXXXXXXXYYYYYYYYYZZZZZZZZZAAAAAAAAABBBBBBBBBCCCCCCCCCDDDDDDDDDEEEEEEEEEFFFFFFFFFGGGGGGGGGHHHHHHHHHIIIIIIIIIJJJJJJJJJKKKKKKKKKLLLLLLLLLMMMMMMMMMNNNNNNNNNOOOOOOOOOPPPPPPPPPQQQQQQQQQRRRRRRRRRSSSSSSSSSTTTTTTTTTUUUUUUUUUVVVVVVVVVWWWWWWWWWXXXXXXXXXYYYYYYYYYZZZZZZZZZAAAAAAAAABBBBBBBBBCCCCCCCCCDDDDDDDDDEEEEEEEEEFFFFFFFFFGGGGGGGGGHHHHHHHHHIIIIIIIIIJJJJJJJJJKKKKKKKKKLLLLLLLLLMMMMMMMMMNNNNNNNNNOOOOOOOOOPPPPPPPPPQQQQQQQQQRRRRRRRRRSSSSSSSSSTTTTTTTTTUUUUUUUUUVVVVVVVVVWWWWWWWWWXXXXXXXXXYYYYYYYYYZZZZZZZZZAAAAAAAAABBBBBBBBBCCCCCCCCCDDDDDDDDDEEEEEEEEEFFFFFFFFFGGGGGGGGGHHHHHHHHHIIIIIIIIIJJJJJJJJJKKKKKKKKKLLLLLLLLLMMMMMMMMMNNNNNNNNNOOOOOOOOOPPPPPPPPPQQQQQQQQQRRRRRRRRRSSSSSSSSSTTTTTTTTTUUUUUUUUUVVVVVVVVVWWWWWWWWWXXXXXXXXXYYYYYYYYYZZZZZZZZZAAAAAAAAABBBBBBBBBCCCCCCCCCDDDDDDDDDEEEEEEEEEFFFFFFFFFGGGGGGGGGHHHHHHHHHIIIIIIIIIJJJJJJJJJKKKKKKKKKLLLLLLLLLMMMMMMMMMNNNNNNNNNOOOOOOOOOPPPPPPPPPQQQQQQQQQRRRRRRRRRSSSSSSSSSTTTTTTTTTUUUUUUUUUVVVVVVVVVWWWWWWWWWXXXXXXXXXYYYYYYYYYZZZZZZZZZAAAAAAAAABBBBBBBBBCCCCCCCCCDDDDDDDDDEEEEEEEEEFFFFFFFFFGGGGGGGGGHHHHHHHHHIIIIIIIIIJJJJJJJJJKKKKKKKKKLLLLLLLLLMMMMMMMMMNNNNNNNNNOOOOOOOOOPPPPPPPPPQQQQQQQQQRRRRRRRRRSSSSSSSSSTTTTTTTTTUUUUUUUUUVVVVVVVVVWWWWWWWWWXXXXXXXXXYYYYYYYYYZZZZZZZZZAAAAAAAAABBBBBBBBBCCCCCCCCCDDDDDDDDDEEEEEEEEEFFFFFFFFFGGGGGGGGGHHHHHHHHHIIIIIIIIIJJJJJJJJJKKKKKKKKKLLLLLLLLLMMMMMMMMMNNNNNNNNNOOOOOOOOOPPPPPPPPPQQQQQQQQQRRRRRRRRRSSSSSSSSSTTTTTTTTTUUUUUUUUUVVVVVVVVVWWWWWWWWWXXXXXXXXXYYYYYYYYYZZZZZZZZZAAAAAAAAABBBBBBBBBCCCCCCCCCDDDDDDDDDEEEEEEEEEFFFFFFFFFGGGGGGGGGHHHHHHHHHIIIIIIIIIJJJJJJJJJKKKKKKKKKLLLLLLLLLMMMMMMMMMNNNNNNNNNOOOOOOOOOPPPPPPPPPQQQQQQQQQRRRRRRRRRSSSSSSSSSTTTTTTTTTUUUUUUUUUVVVVVVVVVWWWWWWWWWXXXXXXXXXYYYYYYYYYZZZZZZZZZAAAAAAAAABBBBBBBBBCCCCCCCCCDDDDDDDDDEEEEEEEEEFFFFFFFFFGGGGGGGGGHHHHHHHHHIIIIIIIIIJJJJJJJJJKKKKKKKKKLLLLLLLLLMMMMMMMMMNNNNNNNNNOOOOOOOOOPPPPPPPPPQQQQQQQQQRRRRRRRRRSSSSSSSSSTTTTTTTTTUUUUUUUUUVVVVVVVVVWWWWWWWWWXXXXXXXXXYYYYYYYYYZZZZZZZZZAAAAAAAAABBBBBBBBBCCCCCCCCCDDDDDDDDDEEEEEEEEEFFFFFFFFFGGGGGGGGGHHHHHHHHHIIIIIIIIIJJJJJJJJJKKKKKKKKKLLLLLLLLLMMMMMMMMMNNNNNNNNNOOOOOOOOOPPPPPPPPPQQQQQQQQQRRRRRRRRRSSSSSSSSSTTTTTTTTTUUUUUUUUUVVVVVVVVVWWWWWWWWWXXXXXXXXXYYYYYYYYYZZZZZZZZZAAAAAAAAABBBBBBBBBCCCCCCCCCDDDDDDDDDEEEEEEEEEFFFFFFFFFGGGGGGGGGHHHHHHHHHIIIIIIIIIJJJJJJJJJKKKKKKKKKLLLLLLLLLMMMMMMMMMNNNNNNNNNOOOOOOOOOPPPPPPPPPQQQQQQQQQRRRRRRRRRSSSSSSSSSTTTTTTTTTUUUUUUUUUVVVVVVVVVWWWWWWWWWXXXXXXXXXYYYYYYYYYZZZZZZZZZAAAAAAAAABBBBBBBBBCCCCCCCCCDDDDDDDDDEEEEEEEEEFFFFFFFFFGGGGGGGGGHHHHHHHHHIIIIIIIIIJJJJJJJJJKKKKKKKKKLLLLLLLLLMMMMMMMMMNNNNNNNNNOOOOOOOOOPPPPPPPPPQQQQQQQQQRRRRRRRRRSSSSSSSSSTTTTTTTTTUUUUUUUUUVVVVVVVVVWWWWWWWWWXXXXXXXXXYYYYYYYYYZZZZZZZZZAAAAAAAAABBBBBBBBBCCCCCCCCCDDDDDDDDDEEEEEEEEEFFFFFFFFFGGGGGGGGGHHHHHHHHHIIIIIIIIIJJJJJJJJJKKKKKKKKKLLLLLLLLLMMMMMMMMMNNNNNNNNNOOOOOOOOOPPPPPPPPPQQQQQQQQQRRRRRRRRRSSSSSSSSSTTTTTTTTTUUUUUUUUUVVVVVVVVVWWWWWWWWWXXXXXXXXXYYYYYYYYYZZZZZZZZZAAAAAAAAABBBBBBBBBCCCCCCCCCDDDDDDDDDEEEEEEEEEFFFFFFFFFGGGGGGGGGHHHHHHHHHIIIIIIIIIJJJJJJJJJKKKKKKKKKLLLLLLLLLMMMMMMMMMNNNNNNNNNOOOOOOOOOPPPPPPPPPQQQQQQQQQRRRRRRRRRSSSSSSSSSTTTTTTTTTUUUUUUUUUVVVVVVVVVWWWWWWWWWXXXXXXXXXYYYYYYYYYZZZZZZZZZAAAAAAAAABBBBBBBBBCCCCCCCCCDDDDDDDDDEEEEEEEEEFFFFFFFFFGGGGGGGGGHHHHHHHHHIIIIIIIIIJJJJJJJJJKKKKKKKKKLLLLLLLLLMMMMMMMMMNNNNNNNNNOOOOOOOOOPPPPPPPPPQQQQQQQQQRRRRRRRRRSSSSSSSSSTTTTTTTTTUUUUUUUUUVVVVVVVVVWWWWWWWWWXXXXXXXXXYYYYYYYYYZZZZZZZZZAAAAAAAAABBBBBBBBBCCCCCCCCCDDDDDDDDDEEEEEEEEEFFFFFFFFFGGGGGGGGGHHHHHHHHHIIIIIIIIIJJJJJJJJJKKKKKKKKKLLLLLLLLLMMMMMMMMMNNNNNNNNNOOOOOOOOOPPPPPPPPPQQQQQQQQQRRRRRRRRRSSSSSSSSSTTTTTTTTTUUUUUUUUUVVVVVVVVVWWWWWWWWWXXXXXXXXXYYYYYYYYYZZZZZZZZZAAAAAAAAABBBBBBBBBCCCCCCCCCDDDDDDDDDEEEEEEEEEFFFFFFFFFGGGGGGGGGHHHHHHHHHIIIIIIIIIJJJJJJJJJKKKKKKKKKLLLLLLLLLMMMMMMMMMNNNNNNNNNOOOOOOOOOPPPPPPPPPQQQQQQQQQRRRRRRRRRSSSSSSSSSTTTTTTTTTUUUUUUUUUVVVVVVVVVWWWWWWWWWXXXXXXXXXYYYYYYYYYZZZZZZZZZAAAAAAAAABBBBBBBBBCCCCCCCCCDDDDDDDDDEEEEEEEEEFFFFFFFFFGGGGGGGGGHHHHHHHHHIIIIIIIIIJJJJJJJJJKKKKKKKKKLLLLLLLLLMMMMMMMMMNNNNNNNNNOOOOOOOOOPPPPPPPPPQQQQQQQQQRRRRRRRRRSSSSSSSSSTTTTTTTTTUUUUUUUUUVVVVVVVVVWWWWWWWWWXXXXXXXXXYYYYYYYYYZZZZZZZZZAAAAAAAAABBBBBBBBBCCCCCCCCCDDDDDDDDDEEEEEEEEEFFFFFFFFFGGGGGGGGGHHHHHHHHHIIIIIIIIIJJJJJJJJJKKKKKKKKKLLLLLLLLLMMMMMMMMMNNNNNNNNNOOOOOOOOOPPPPPPPPPQQQQQQQQQRRRRRRRRRSSSSSSSSSTTTTTTTTTUUUUUUUUUVVVVVVVVVWWWWWWWWWXXXXXXXXXYYYYYYYYYZZZZZZZZZAAAAAAAAABBBBBBBBBCCCCCCCCCDDDDDDDDDEEEEEEEEEFFFFFFFFFGGGGGGGGGHHHHHHHHHIIIIIIIIIJJJJJJJJJKKKKKKKKKLLLLLLLLLMMMMMMMMMNNNNNNNNNOOOOOOOOOPPPPPPPPPQQQQQQQQQRRRRRRRRRSSSSSSSSSTTTTTTTTTUUUUUUUUUVVVVVVVVVWWWWWWWWWXXXXXXXXXYYYYYYYYYZZZZZZZZZAAAAAAAAABBBBBBBBBCCCCCCCCCDDDDDDDDDEEEEEEEEEFFFFFFFFFGGGGGGGGGHHHHHHHHHIIIIIIIIIJJJJJJJJJKKKKKKKKKLLLLLLLLLMMMMMMMMMNNNNNNNNNOOOOOOOOOPPPPPPPPPQQQQQQQQQRRRRRRRRRSSSSSSSSSTTTTTTTTTUUUUUUUUUVVVVVVVVVWWWWWWWWWXXXXXXXXXYYYYYYYYYZZZZZZZZZAAAAAAAAABBBBBBBBBCCCCCCCCCDDDDDDDDDEEEEEEEEEFFFFFFFFFGGGGGGGGGHHHHHHHHHIIIIIIIIIJJJJJJJJJKKKKKKKKKLLLLLLLLLMMMMMMMMMNNNNNNNNNOOOOOOOOOPPPPPPPPPQQQQQQQQQRRRRRRRRRSSSSSSSSSTTTTTTTTTUUUUUUUUUVVVVVVVVVWWWWWWWWWXXXXXXXXXYYYYYYYYYZZZZZZZZZAAAAAAAAABBBBBBBBBCCCCCCCCCDDDDDDDDDEEEEEEEEEFFFFFFFFFGGGGGGGGGHHHHHHHHHIIIIIIIIIJJJJJJJJJKKKKKKKKKLLLLLLLLLMMMMMMMMMNNNNNNNNNOOOOOOOOOPPPPPPPPPQQQQQQQQQRRRRRRRRRSSSSSSSSSTTTTTTTTTUUUUUUUUUVVVVVVVVVWWWWWWWWWXXXXXXXXXYYYYYYYYYZZZZZZZZZAAAAAAAAABBBBBBBBBCCCCCCCCCDDDDDDDDDEEEEEEEEEFFFFFFFFFGGGGGGGGGHHHHHHHHHIIIIIIIIIJJJJJJJJJKKKKKKKKKLLLLLLLLLMMMMMMMMMNNNNNNNNNOOOOOOOOOPPPPPPPPPQQQQQQQQQRRRRRRRRRSSSSSSSSSTTTTTTTTTUUUUUUUUUVVVVVVVVVWWWWWWWWWXXXXXXXXXYYYYYYYYYZZZZZZZZZAAAAAAAAABBBBBBBBBCCCCCCCCCDDDDDDDDDEEEEEEEEEFFFFFFFFFGGGGGGGGGHHHHHHHHHIIIIIIIIIJJJJJJJJJKKKKKKKKKLLLLLLLLLMMMMMMMMMNNNNNNNNNOOOOOOOOOPPPPPPPPPQQQQQQQQQRRRRRRRRRSSSSSSSSSTTTTTTTTTUUUUUUUUUVVVVVVVVVWWWWWWWWWXXXXXXXXXYYYYYYYYYZZZZZZZZZAAAAAAAAABBBBBBBBBCCCCCCCCCDDDDDDDDDEEEEEEEEEFFFFFFFFFGGGGGGGGGHHHHHHHHHIIIIIIIIIJJJJJJJJJKKKKKKKKKLLLLLLLLLMMMMMMMMMNNNNNNNNNOOOOOOOOOPPPPPPPPPQQQQQQQQQRRRRRRRRRSSSSSSSSSTTTTTTTTTUUUUUUUUUVVVVVVVVVWWWWWWWWWXXXXXXXXXYYYYYYYYYZZZZZZZZZAAAAAAAAABBBBBBBBBCCCCCCCCCDDDDDDDDDEEEEEEEEEFFFFFFFFFGGGGGGGGGHHHHHHHHHIIIIIIIIIJJJJJJJJJKKKKKKKKKLLLLLLLLLMMMMMMMMMNNNNNNNNNOOOOOOOOOPPPPPPPPPQQQQQQQQQRRRRRRRRRSSSSSSSSSTTTTTTTTTUUUUUUUUUVVVVVVVVVWWWWWWWWWXXXXXXXXXYYYYYYYYYZZZZZZZZZAAAAAAAAABBBBBBBBBCCCCCCCCCDDDDDDDDDEEEEEEEEEFFFFFFFFFGGGGGGGGGHHHHHHHHHIIIIIIIIIJJJJJJJJJKKKKKKKKKLLLLLLLLLMMMMMMMMMNNNNNNNNNOOOOOOOOOPPPPPPPPPQQQQQQQQQRRRRRRRRRSSSSSSSSSTTTTTTTTTUUUUUUUUUVVVVVVVVVWWWWWWWWWXXXXXXXXXYYYYYYYYYZZZZZZZZZAAAAAAAAABBBBBBBBBCCCCCCCCCDDDDDDDDDEEEEEEEEEFFFFFFFFFGGGGGGGGGHHHHHHHHHIIIIIIIIIJJJJJJJJJKKKKKKKKKLLLLLLLLLMMMMMMMMMNNNNNNNNNOOOOOOOOOPPPPPPPPPQQQQQQQQQRRRRRRRRRSSSSSSSSSTTTTTTTTTUUUUUUUUUVVVVVVVVVWWWWWWWWWXXXXXXXXXYYYYYYYYYZZZZZZZZZAAAAAAAAABBBBBBBBBCCCCCCCCCDDDDDDDDDEEEEEEEEEFFFFFFFFFGGGGGGGGGHHHHHHHHHIIIIIIIIIJJJJJJJJJKKKKKKKKKLLLLLLLLLMMMMMMMMMNNNNNNNNNOOOOOOOOOPPPPPPPPPQQQQQQQQQRRRRRRRRRSSSSSSSSSTTTTTTTTTUUUUUUUUUVVVVVVVVVWWWWWWWWWXXXXXXXXXYYYYYYYYYZZZZZZZZZAAAAAAAAABBBBBBBBBCCCCCCCCCDDDDDDDDDEEEEEEEEEFFFFFFFFFGGGGGGGGGHHHHHHHHHIIIIIIIIIJJJJJJJJJKKKKKKKKKLLLLLLLLLMMMMMMMMMNNNNNNNNNOOOOOOOOOPPPPPPPPPQQQQQQQQQRRRRRRRRRSSSSSSSSSTTTTTTTTTUUUUUUUUUVVVVVVVVVWWWWWWWWWXXXXXXXXXYYYYYYYYYZZZZZZZZZAAAAAAAAABBBBBBBBBCCCCCCCCCDDDDDDDDDEEEEEEEEEFFFFFFFFFGGGGGGGGGHHHHHHHHHIIIIIIIIIJJJJJJJJJKKKKKKKKKLLLLLLLLLMMMMMMMMMNNNNNNNNNOOOOOOOOOPPPPPPPPPQQQQQQQQQRRRRRRRRRSSSSSSSSSTTTTTTTTTUUUUUUUUUVVVVVVVVVWWWWWWWWWXXXXXXXXXYYYYYYYYYZZZZZZZZZAAAAAAAAABBBBBBBBBCCCCCCCCCDDDDDDDDDEEEEEEEEEFFFFFFFFFGGGGGGGGGHHHHHHHHHIIIIIIIIIJJJJJJJJJKKKKKKKKKLLLLLLLLLMMMMMMMMMNNNNNNNNNOOOOOOOOOPPPPPPPPPQQQQQQQQQRRRRRRRRRSSSSSSSSSTTTTTTTTTUUUUUUUUUVVVVVVVVVWWWWWWWWWXXXXXXXXXYYYYYYYYYZZZZZZZZZAAAAAAAAABBBBBBBBBCCCCCCCCCDDDDDDDDDEEEEEEEEEFFFFFFFFFGGGGGGGGGHHHHHHHHHIIIIIIIIIJJJJJJJJJKKKKKKKKKLLLLLLLLLMMMMMMMMMNNNNNNNNNOOOOOOOOOPPPPPPPPPQQQQQQQQQRRRRRRRRRSSSSSSSSSTTTTTTTTTUUUUUUUUUVVVVVVVVVWWWWWWWWWXXXXXXXXXYYYYYYYYYZZZZZZZZZAAAAAAAAABBBBBBBBBCCCCCCCCCDDDDDDDDDEEEEEEEEEFFFFFFFFFGGGGGGGGGHHHHHHHHHIIIIIIIIIJJJJJJJJJKKKKKKKKKLLLLLLLLLMMMMMMMMMNNNNNNNNNOOOOOOOOOPPPPPPPPPQQQQQQQQQRRRRRRRRRSSSSSSSSSTTTTTTTTTUUUUUUUUUVVVVVVVVVWWWWWWWWWXXXXXXXXXYYYYYYYYYZZZZZZZZZ
Index: tests/concurrent/barrier/.expect/last.txt
===================================================================
--- tests/concurrent/barrier/.expect/last.txt	(revision 8a919cfec5f277378c3bc7e5d16717f7d44058c6)
+++ 	(revision )
@@ -1,1 +1,0 @@
-done
Index: tests/concurrent/barrier/.expect/order.txt
===================================================================
--- tests/concurrent/barrier/.expect/order.txt	(revision 8a919cfec5f277378c3bc7e5d16717f7d44058c6)
+++ 	(revision )
@@ -1,1 +1,0 @@
-done
Index: tests/concurrent/barrier/gen_generation_expect.cfa
===================================================================
--- tests/concurrent/barrier/gen_generation_expect.cfa	(revision 8a919cfec5f277378c3bc7e5d16717f7d44058c6)
+++ 	(revision )
@@ -1,31 +1,0 @@
-//
-// Cforall Version 1.0.0 Copyright (C) 2022 University of Waterloo
-//
-// The contents of this file are covered under the licence agreement in the
-// file "LICENCE" distributed with Cforall.
-//
-// gen_generation_expect.cfa -- simple 'script' generates the expect file for concurrent/barrier/generation
-//
-// Author           : Thierry Delisle
-// Created On       : Thu Mar 31 16:44:43 2022
-// Last Modified By :
-// Last Modified On :
-// Update Count     :
-//
-
-
-#include <fstream.hfa>
-
-int NUM_THREADS = 9;
-int NUM_LAPS = 53;
-
-int main() {
-
-	for(NUM_LAPS)
-		for(c; 'A' ~= 'Z') {
-			for(NUM_THREADS) {
-				sout | c | nonl;
-			}
-		}
-	sout | nl;
-}
Index: tests/concurrent/barrier/generation.cfa
===================================================================
--- tests/concurrent/barrier/generation.cfa	(revision 8a919cfec5f277378c3bc7e5d16717f7d44058c6)
+++ 	(revision )
@@ -1,58 +1,0 @@
-//
-// Cforall Version 1.0.0 Copyright (C) 2022 University of Waterloo
-//
-// The contents of this file are covered under the licence agreement in the
-// file "LICENCE" distributed with Cforall.
-//
-// concurrent/barrier/generation.cfa -- simple test that validates barriers by printing
-//                                      alphabetical generations
-//
-// Author           : Thierry Delisle
-// Created On       : Thu Mar 31 16:43:45 2022
-// Last Modified By :
-// Last Modified On :
-// Update Count     :
-//
-
-// Test validates barrier by having each thread print ABCD...
-// If the barrier is correct it should print all As, all Bs, etc.
-
-unsigned NUM_THREADS = 9;
-unsigned NUM_LAPS = 53;
-
-#include <concurrency/barrier.hfa>
-#include <fstream.hfa>
-#include <mutex_stmt.hfa>
-#include <thread.hfa>
-
-// The barrier we are testing
-barrier bar = { NUM_THREADS };
-
-
-thread Tester {};
-void main( Tester & this ) {
-	// Repeat the experiment a few times
-	for(NUM_LAPS)
-		// For each letters
-		for(c; 'A' ~= 'Z') {
-			// Yield for chaos
-			yield( prng(this, 10) );
-
-			// Print the generation, no newline because
-			mutex(sout) sout | c | nonl;
-
-			// Yield again for more chaos
-			yield( prng(this, 10) );
-
-			// Block on the barrier
-			block(bar);
-		}
-}
-
-int main() {
-	processor p[4];
-	{
-		Tester testers[NUM_THREADS];
-	}
-	sout | nl;
-}
Index: tests/concurrent/barrier/last.cfa
===================================================================
--- tests/concurrent/barrier/last.cfa	(revision 8a919cfec5f277378c3bc7e5d16717f7d44058c6)
+++ 	(revision )
@@ -1,84 +1,0 @@
-//
-// Cforall Version 1.0.0 Copyright (C) 2022 University of Waterloo
-//
-// The contents of this file are covered under the licence agreement in the
-// file "LICENCE" distributed with Cforall.
-//
-// concurrent/barrier/last.cfa -- validates barrier's last hook functionality
-//
-// Author           : Thierry Delisle
-// Created On       : Fri Apr 01 14:24:28 2022
-// Last Modified By :
-// Last Modified On :
-// Update Count     :
-//
-
-// Test validates barrier correctly blocks threads, and that the last
-// function is called at the appropriate time.
-
-#include <concurrency/barrier.hfa>
-#include <fstream.hfa>
-#include <mutex_stmt.hfa>
-#include <thread.hfa>
-
-const unsigned NUM_LAPS = 223;
-const unsigned NUM_THREADS = 13;
-
-// The barrier we are testing
-barrier bar = { NUM_THREADS };
-
-// The return values of the previous generation.
-volatile unsigned * generation;
-
-// Check that validate is actually getting called as expected;
-volatile unsigned validate_calls = 0;
-
-void validate() {
-	unsigned vc = validate_calls;
-	unsigned expected = generation[0];
-	for(i; 1 ~ NUM_THREADS) {
-		unsigned obtained = generation[i];
-		if( obtained != expected ) {
-			sout | "Index 0 and" | i | "disagree on current generation:" | expected | "vs" | obtained;
-		}
-	}
-	validate_calls = vc + 1;
-}
-
-thread Tester {
-	unsigned id;
-};
-void main( Tester & this) {
-	park();
-	// Repeat a few times
-	for(l; NUM_LAPS) {
-		// Block
-		block(bar, validate);
-
-		// Update what we thing the generation is
-		generation[this.id]++;
-	}
-}
-
-int main() {
-	// Create the data ans zero it.
-	volatile unsigned gen_data[NUM_THREADS];
-	for(t; NUM_THREADS)
-		gen_data[t] = 0;
-
-	generation = gen_data;
-
-	// Run the experiment
-	processor p[6];
-	{
-		Tester testers[NUM_THREADS];
-		for(i; NUM_THREADS) {
-			testers[i].id = i;
-			unpark(testers[i]);
-		}
-	}
-	if(validate_calls != NUM_LAPS) {
-		sout | "Unexpected number of calls to validate: expcted" | NUM_LAPS | ", got" | validate_calls;
-	}
-	sout | "done";
-}
Index: tests/concurrent/barrier/order.cfa
===================================================================
--- tests/concurrent/barrier/order.cfa	(revision 8a919cfec5f277378c3bc7e5d16717f7d44058c6)
+++ 	(revision )
@@ -1,72 +1,0 @@
-//
-// Cforall Version 1.0.0 Copyright (C) 2022 University of Waterloo
-//
-// The contents of this file are covered under the licence agreement in the
-// file "LICENCE" distributed with Cforall.
-//
-// concurrent/barrier/order.cfa -- validates barriers the return value of
-//                                 barrier block
-//
-// Author           : Thierry Delisle
-// Created On       : Fri Apr 01 11:39:09 2022
-// Last Modified By :
-// Last Modified On :
-// Update Count     :
-//
-
-// Test validates barrier and block return value by checking
-// that no more than one thread gets the same return value
-
-#include <concurrency/barrier.hfa>
-#include <fstream.hfa>
-#include <mutex_stmt.hfa>
-#include <thread.hfa>
-
-const unsigned NUM_LAPS = 173;
-const unsigned NUM_THREADS = 11;
-
-// The barrier we are testing
-barrier bar = { NUM_THREADS };
-
-// The return values of the previous generation.
-volatile unsigned * generation;
-
-thread Tester {};
-void main( Tester & this ) {
-	// Repeat a few times
-	for(l; NUM_LAPS) {
-		// Yield for chaos
-		yield( prng(this, 10) );
-
-		// Block and what order we arrived
-		unsigned ret = block(bar);
-
-		// Check what was the last generation of that last thread in this position
-		unsigned g = generation[ret];
-
-		// Is it what we expect?
-		if(g != l) {
-			// Complain that they are different
-			sout | "Gen" | l | ": Expeced generation at" | ret | "to be" | l | "was" | g;
-		}
-
-		// Mark the expected next generation
-		generation[ret] = l+1;
-	}
-}
-
-int main() {
-	// Create the data ans zero it.
-	volatile unsigned gen_data[NUM_THREADS];
-	for(t; NUM_THREADS)
-		gen_data[t] = 0;
-
-	generation = gen_data;
-
-	// Run the experiment
-	processor p[4];
-	{
-		Tester testers[NUM_THREADS];
-	}
-	sout | "done";
-}
Index: tests/concurrent/channels/.expect/big_elems.txt
===================================================================
--- tests/concurrent/channels/.expect/big_elems.txt	(revision 8a919cfec5f277378c3bc7e5d16717f7d44058c6)
+++ 	(revision )
@@ -1,5 +1,0 @@
-start
-prods
-cons
-flush
-done
Index: tests/concurrent/channels/.expect/churn.txt
===================================================================
--- tests/concurrent/channels/.expect/churn.txt	(revision 8a919cfec5f277378c3bc7e5d16717f7d44058c6)
+++ 	(revision )
@@ -1,2 +1,0 @@
-start
-done
Index: tests/concurrent/channels/.expect/contend.txt
===================================================================
--- tests/concurrent/channels/.expect/contend.txt	(revision 8a919cfec5f277378c3bc7e5d16717f7d44058c6)
+++ 	(revision )
@@ -1,2 +1,0 @@
-start
-done
Index: tests/concurrent/channels/.expect/daisy_chain.txt
===================================================================
--- tests/concurrent/channels/.expect/daisy_chain.txt	(revision 8a919cfec5f277378c3bc7e5d16717f7d44058c6)
+++ 	(revision )
@@ -1,2 +1,0 @@
-start
-done
Index: tests/concurrent/channels/.expect/hot_potato.txt
===================================================================
--- tests/concurrent/channels/.expect/hot_potato.txt	(revision 8a919cfec5f277378c3bc7e5d16717f7d44058c6)
+++ 	(revision )
@@ -1,2 +1,0 @@
-start
-done
Index: tests/concurrent/channels/.expect/ping_pong.txt
===================================================================
--- tests/concurrent/channels/.expect/ping_pong.txt	(revision 8a919cfec5f277378c3bc7e5d16717f7d44058c6)
+++ 	(revision )
@@ -1,2 +1,0 @@
-start
-done
Index: tests/concurrent/channels/.expect/pub_sub.txt
===================================================================
--- tests/concurrent/channels/.expect/pub_sub.txt	(revision 8a919cfec5f277378c3bc7e5d16717f7d44058c6)
+++ 	(revision )
@@ -1,2 +1,0 @@
-start
-done
Index: tests/concurrent/channels/.expect/zero_size.txt
===================================================================
--- tests/concurrent/channels/.expect/zero_size.txt	(revision 8a919cfec5f277378c3bc7e5d16717f7d44058c6)
+++ 	(revision )
@@ -1,5 +1,0 @@
-start
-prods
-cons
-flush
-done
Index: tests/concurrent/channels/barrier.cfa
===================================================================
--- tests/concurrent/channels/barrier.cfa	(revision 8a919cfec5f277378c3bc7e5d16717f7d44058c6)
+++ 	(revision )
@@ -1,130 +1,0 @@
-#include <locks.hfa>
-#include <fstream.hfa>
-#include <stdio.h>
-#include <channel.hfa>
-#include <thread.hfa>
-#include <time.hfa>
-#include <string.h>
-
-size_t total_operations = 0;
-int Processors = 1, Tasks = 5, BarrierSize = 2;
-
-typedef channel( int ) Channel;
-
-Channel * barWait;
-Channel * entryWait;
-owner_lock o;
-
-bool done = false;
-size_t tasks_done = 0;
-
-static inline void initBarrier() {
-    for ( j; BarrierSize )
-        insert( *entryWait, j );
-}
-
-static inline void barrier() {
-    int ticket = remove( *entryWait );
-
-    if ( ticket == BarrierSize - 1 ) {
-		for ( j; BarrierSize - 1 )
-            insert( *barWait, j );
-        return;
-	}
-    ticket = remove( *barWait );
-
-	// last one out
-	if ( BarrierSize == 1 || ticket == BarrierSize - 2 ) {
-		for ( j; BarrierSize )
-            insert( *entryWait, j );
-	}
-}
-
-thread Task {};
-static inline void ?{}( Task & p, cluster & clu ) {
-    ((thread &)p){ clu };
-}
-void main(Task & this) {
-    size_t runs = 0;
-    try {
-        for ( ;; ) {
-            if ( done ) break;
-            barrier();
-            runs++;
-        }
-    } catch ( channel_closed * e ) {} 
-    lock(o);
-    total_operations += runs;
-    // sout | "P: " | runs;
-    unlock(o);
-}
-
-
-int main( int argc, char * argv[] ) {
-    switch ( argc ) {
-	  case 3:
-		if ( strcmp( argv[2], "d" ) != 0 ) {			// default ?
-			BarrierSize = atoi( argv[2] );
-            if ( Processors < 1 ) goto Usage;
-		} // if
-	  case 2:
-		if ( strcmp( argv[1], "d" ) != 0 ) {			// default ?
-			Processors = atoi( argv[1] );
-			if ( Processors < 1 ) goto Usage;
-		} // if
-	  case 1:											// use defaults
-		break;
-	  default:
-	  Usage:
-		sout | "Usage: " | argv[0]
-             | " [ processors (> 0) | 'd' (default " | Processors
-			 | ") ] [ BarrierSize (> 0) | 'd' (default " | BarrierSize
-			 | ") ]" ;
-		exit( EXIT_FAILURE );
-	} // switch
-    if ( Tasks < BarrierSize )
-        Tasks = BarrierSize;
-
-    size_t Clusters = 1;
-    // create a cluster
-    cluster clus[Clusters];
-    processor * proc[Processors];
-    for ( i; Processors ) {
-        (*(proc[i] = malloc())){clus[i % Clusters]};
-    }
-
-    Channel entry{ BarrierSize };
-    Channel wait{ BarrierSize };
-
-    entryWait = &entry;
-    barWait = &wait;
-
-    initBarrier();
-
-    sout | "start";
-    Task * t[Tasks];
-
-    for ( i; Tasks ) {
-        (*(t[i] = malloc())){ clus[i % Clusters] };
-    }
-
-    sleep(10`s);
-    done = true;
-
-    sout | "sleep";
-
-    close( entry );
-    close( wait );
-
-    for ( i; Tasks ) {
-        delete(t[i]);
-    }
-    
-    // sout | total_operations;
-
-    for ( i; Processors ) {
-        delete(proc[i]);
-    }
-    sout | "done";
-    return 0;
-}
Index: tests/concurrent/channels/big_elems.cfa
===================================================================
--- tests/concurrent/channels/big_elems.cfa	(revision 8a919cfec5f277378c3bc7e5d16717f7d44058c6)
+++ 	(revision )
@@ -1,8 +1,0 @@
-#define BIG 1
-#include "parallel_harness.hfa"
-
-size_t Processors = 10, Channels = 10, Producers = 40, Consumers = 40, ChannelSize = 128;
-
-int main() {
-    test(Processors, Channels, Producers, Consumers, ChannelSize);
-}
Index: tests/concurrent/channels/churn.cfa
===================================================================
--- tests/concurrent/channels/churn.cfa	(revision 8a919cfec5f277378c3bc7e5d16717f7d44058c6)
+++ 	(revision )
@@ -1,145 +1,0 @@
-#include <locks.hfa>
-#include <fstream.hfa>
-#include <stdio.h>
-#include <string.h>
-#include <channel.hfa>
-#include <thread.hfa>
-#include <time.hfa>
-
-size_t Processors = 1, Channels = 4, Producers = 2, Consumers = 2, ChannelSize = 128;
-
-owner_lock o;
-
-size_t total_operations = 0;
-size_t cons_check = 0, prod_check = 0;
-
-channel( size_t ) * channels;
-thread Consumer {};
-
-void getRandArray( int * chanIndices ) {
-    for ( int i = 0; i < Channels; i++ ) {
-        chanIndices[i] = i;
-    }
-    for ( int i = 0; i < Channels; i++ ) {
-        int loc_1 = prng() % Channels;
-        int loc_2 = prng() % Channels;
-        int temp = chanIndices[ loc_1 ];
-        chanIndices[ loc_1 ] = chanIndices[ loc_2 ];
-        chanIndices[ loc_2 ] = temp;
-    }
-}
-
-void main(Consumer & this) {
-    size_t i = 0;
-    size_t runs = 0;
-    size_t my_check = 0;
-    int chanIndices[Channels];
-    getRandArray( chanIndices );
-    try {
-        for ( ;;i++ ) {
-            size_t j = remove( channels[ chanIndices[ i % Channels ] ] );
-            my_check = my_check ^ j;
-            runs++;
-        }
-    } catch ( channel_closed * e ) {}
-
-    // flush out rest of channels
-    for ( i; Channels ) {
-        try {
-            for ( ;; ) {
-                size_t j = remove( channels[ i ] );
-                my_check = my_check ^ j;
-                runs++;
-            }
-        } catchResume ( channel_closed * e ) {} // continue to remove until would block
-        catch ( channel_closed * e ) {} 
-    }
-
-    lock(o);
-    total_operations += runs;
-    cons_check = cons_check ^ my_check;
-    // sout | "Cons: " | runs;
-    unlock(o);
-}
-
-thread Producer {};
-
-void main(Producer & this) {
-    size_t i = 0;
-    size_t runs = 0;
-    size_t my_check = 0;
-    int chanIndices[Channels];
-    getRandArray( chanIndices );
-    try {
-        for ( ;;i++ ) {
-            insert( channels[ chanIndices[ i % Channels ] ], i );
-            my_check = my_check ^ i;
-            runs++;
-        }
-    } catch ( channel_closed * e ) {} 
-    lock(o);
-    total_operations += runs;
-    prod_check = prod_check ^ my_check;
-    // sout | "Prods: " | runs;
-    unlock(o);
-}
-
-
-int main( int argc, char *argv[] ) {
-    switch( argc ) {
-      case 4:
-		if ( strcmp( argv[3], "d" ) != 0 ) {			// default ?
-			if ( atoi( argv[3] ) < 1 ) goto Usage;
-			ChannelSize = atoi( argv[3] );
-		} // if
-      case 3:
-		if ( strcmp( argv[2], "d" ) != 0 ) {			// default ?
-			if ( atoi( argv[2] ) < 1 ) goto Usage;
-			Channels = atoi( argv[2] );
-		} // if
-      case 2:
-		if ( strcmp( argv[1], "d" ) != 0 ) {			// default ?
-			if ( atoi( argv[1] ) < 1 ) goto Usage;
-			Processors = atoi( argv[1] );
-		} // if
-	  case 1:											// use defaults
-		break;
-	  default:
-	  Usage:
-		sout | "Usage: " | argv[0]
-             | " [ processors > 0 | d ]"
-             | " [ producers > 0 | d ]"
-             | " [ consumers > 0 | d ]"
-             | " [ channels > 0 | d ]";
-		exit( EXIT_FAILURE );
-    }
-    processor p[Processors - 1];
-    channels = aalloc( Channels );
-
-    // sout | "Processors: " | Processors | " Producers: " | Producers | " Consumers: " | Consumers | "Channels: " | Channels | " Channel Size: " | ChannelSize;
-
-    for ( i; Channels )
-        channels[i]{ ChannelSize };
-
-    sout | "start";
-    {   
-        Consumer c[Consumers];
-        {
-            Producer p[Producers];
-            sleep(10`s);
-            for ( i; Channels )
-                close( channels[i] );
-        }
-    }
-
-    adelete( channels );
-
-    if ( cons_check != prod_check )
-        sout | "CHECKSUM MISMATCH !!!";
-
-    // sout | total_operations;
-    // print_stats_now( *active_cluster(), CFA_STATS_READY_Q );
-
-    sout | "done";
-    return 0;
-}
Index: tests/concurrent/channels/contend.cfa
===================================================================
--- tests/concurrent/channels/contend.cfa	(revision 8a919cfec5f277378c3bc7e5d16717f7d44058c6)
+++ 	(revision )
@@ -1,147 +1,0 @@
-#include <locks.hfa>
-#include <fstream.hfa>
-#include <stdio.h>
-#include <channel.hfa>
-#include <thread.hfa>
-#include <time.hfa>
-#include <string.h>
-
-owner_lock o;
-
-size_t total_operations = 0;
-
-typedef channel( size_t ) Channel;
-
-Channel * channels;
-
-size_t cons_check = 0, prod_check = 0;
-
-thread Consumer {
-    size_t i;
-};
-static inline void ?{}( Consumer & c, size_t i, cluster & clu ) {
-    ((thread &)c){ clu };
-    c.i = i; 
-}
-void main(Consumer & this) {
-    size_t runs = 0;
-    size_t my_check = 0;
-    try {
-        for ( ;; ) {
-            size_t j = remove( channels[ this.i ] );
-            my_check = my_check ^ j;
-            runs++;
-        }
-    } catchResume ( channel_closed * e ) {} // continue to remove until would block
-    catch ( channel_closed * e ) {} 
-    lock(o);
-    total_operations += runs;
-    cons_check = cons_check ^ my_check;
-    // sout | "C: " | runs;
-    unlock(o);
-}
-
-thread Producer {
-    size_t i;
-};
-static inline void ?{}( Producer & p, size_t i, cluster & clu ) {
-    ((thread &)p){ clu };
-    p.i = i;
-}
-void main(Producer & this) {
-    size_t runs = 0;
-    size_t my_check = 0;
-    try {
-        for ( ;; ) {
-            insert( channels[ this.i  ], (size_t)runs );
-            my_check = my_check ^ ((size_t)runs);
-            runs++;
-        }
-    } catch ( channel_closed * e ) {} 
-    lock(o);
-    total_operations += runs;
-    prod_check = prod_check ^ my_check;
-    // sout | "P: " | runs;
-    unlock(o);
-}
-
-static inline int test( size_t Processors, size_t Channels, size_t Producers, size_t Consumers, size_t ChannelSize ) {
-    size_t Clusters = Channels;
-    // create a cluster
-    cluster clus[Clusters];
-    processor * proc[Processors];
-    for ( i; Processors ) {
-        (*(proc[i] = malloc())){clus[i % Clusters]};
-    }
-
-    channels = aalloc( Channels );
-
-    // sout | "Processors: " | Processors | " ProdsPerChan: " | Producers | " ConsPerChan: " | Consumers | "Channels: " | Channels | " Channel Size: " | ChannelSize;
-    
-    for ( i; Channels ) {
-        channels[i]{ ChannelSize };
-    }
-
-    sout | "start";
-    Consumer * c[Consumers * Channels];
-    Producer * p[Producers * Channels];
-
-    for ( j; Channels ) {
-        for ( i; Producers ) {
-            (*(p[i] = malloc())){ j, clus[j % Clusters] };
-        }
-
-        for ( i; Consumers ) {
-            (*(c[i] = malloc())){ j, clus[j % Clusters] };
-        }
-    }
-
-    sleep(10`s);
-
-    for ( i; Channels )
-        close( channels[i] );
-
-    for ( i; Producers * Channels ) {
-        delete(p[i]);
-    }
-    for ( i; Consumers * Channels ) {
-        delete(c[i]);
-    }
-
-    adelete( channels );
-    // sout | total_operations;
-    if ( cons_check != prod_check )
-        sout | "CHECKSUM MISMATCH !!!";
-    // print_stats_now( *active_cluster(), CFA_STATS_READY_Q);
-
-    for ( i; Processors ) {
-        delete(proc[i]);
-    }
-    sout | "done";
-    return 0;
-}
-
-int main( int argc, char * argv[] ) {
-    size_t Processors = 1, Channels = 1, Producers = 4, Consumers = 4, ChannelSize = 128;
-    switch ( argc ) {
-	  case 3:
-		if ( strcmp( argv[2], "d" ) != 0 ) {			// default ?
-			ChannelSize = atoi( argv[2] );
-		} // if
-	  case 2:
-		if ( strcmp( argv[1], "d" ) != 0 ) {			// default ?
-			Processors = atoi( argv[1] );
-			if ( Processors < 1 ) goto Usage;
-		} // if
-	  case 1:											// use defaults
-		break;
-	  default:
-	  Usage:
-		sout | "Usage: " | argv[0]
-             | " [ processors (> 0) | 'd' (default " | Processors
-			 | ") ] [ channel size (>= 0) | 'd' (default " | ChannelSize
-			 | ") ]" ;
-		exit( EXIT_FAILURE );
-	} // switch
-    test(Processors, Channels, Producers, Consumers, ChannelSize);
-}
Index: tests/concurrent/channels/daisy_chain.cfa
===================================================================
--- tests/concurrent/channels/daisy_chain.cfa	(revision 8a919cfec5f277378c3bc7e5d16717f7d44058c6)
+++ 	(revision )
@@ -1,74 +1,0 @@
-#include <locks.hfa>
-#include <fstream.hfa>
-#include <stdio.h>
-#include <channel.hfa>
-#include <thread.hfa>
-#include <time.hfa>
-#include <string.h>
-
-size_t total_operations = 0;
-size_t Processors = 1, Tasks = 4;
-
-owner_lock o;
-
-typedef channel( int ) Channel;
-
-Channel * chain;
-
-thread Task {};
-void main(Task & this) {
-    size_t runs = 0;
-    try{
-        for ( ;; ) {
-            remove( *chain );
-            insert( *chain, 0 );
-            runs++;
-        }
-    } catch ( channel_closed * e ) {}
-    lock( o );
-    total_operations += runs;
-    unlock( o );
-}
-
-
-int main( int argc, char * argv[] ) {
-    switch ( argc ) {
-	  case 3:
-		if ( strcmp( argv[2], "d" ) != 0 ) {			// default ?
-			Tasks = atoi( argv[2] );
-            if ( Tasks < 1 ) goto Usage;
-		} // if
-	  case 2:
-		if ( strcmp( argv[1], "d" ) != 0 ) {			// default ?
-			Processors = atoi( argv[1] );
-			if ( Processors < 1 ) goto Usage;
-		} // if
-	  case 1:											// use defaults
-		break;
-	  default:
-	  Usage:
-		sout | "Usage: " | argv[0]
-             | " [ processors (> 0) | 'd' (default " | Processors
-			 | ") ] [ channel size (>= 0) | 'd' (default " | Tasks
-			 | ") ]" ;
-		exit( EXIT_FAILURE );
-	} // switch
-    processor proc[Processors - 1];
-
-    sout | "start";
-    Channel chainChan{ 1 };
-
-    insert( chainChan, 0 );
-
-    chain = &chainChan;    
-    {
-        Task t[Tasks];
-        sleep(10`s);
-        close( chainChan );
-    }
-    
-    // sout | total_operations;
-    sout | "done";
-
-    return 0;
-}
Index: tests/concurrent/channels/hot_potato.cfa
===================================================================
--- tests/concurrent/channels/hot_potato.cfa	(revision 8a919cfec5f277378c3bc7e5d16717f7d44058c6)
+++ 	(revision )
@@ -1,88 +1,0 @@
-#include <locks.hfa>
-#include <fstream.hfa>
-#include <stdio.h>
-#include <channel.hfa>
-#include <thread.hfa>
-#include <time.hfa>
-#include <string.h>
-
-size_t total_operations = 0;
-size_t Processors = 1, Tasks = 4;
-
-owner_lock o;
-
-typedef channel( int ) Channel;
-
-Channel * chain;
-
-bool done = false;
-int id_counter = 0;
-thread Task { int id; int right; };
-static inline void ?{}( Task & this ) with(this) {
-    id = __atomic_fetch_add( &id_counter, 1, __ATOMIC_SEQ_CST );
-    right = (id + 1) % Tasks;
-}
-void main(Task & this) with(this) {
-    size_t runs = 0;
-    try {
-        for ( ;; ) {
-            if ( done ) break;
-            remove( chain[id] );
-            insert( chain[right], 0 );
-            runs++;
-        }
-    } catch ( channel_closed * e ) {}
-    lock( o );
-    total_operations += runs;
-    unlock( o );
-}
-
-
-int main( int argc, char * argv[] ) {
-    switch ( argc ) {
-	  case 3:
-		if ( strcmp( argv[2], "d" ) != 0 ) {			// default ?
-			Tasks = atoi( argv[2] );
-            if ( Tasks < 1 ) goto Usage;
-		} // if
-	  case 2:
-		if ( strcmp( argv[1], "d" ) != 0 ) {			// default ?
-			Processors = atoi( argv[1] );
-			if ( Processors < 1 ) goto Usage;
-		} // if
-	  case 1:											// use defaults
-		break;
-	  default:
-	  Usage:
-		sout | "Usage: " | argv[0]
-             | " [ processors (> 0) | 'd' (default " | Processors
-			 | ") ] [ channel size (>= 0) | 'd' (default " | Tasks
-			 | ") ]" ;
-		exit( EXIT_FAILURE );
-	} // switch
-    processor proc[Processors - 1];
-
-    sout | "start";
-
-    chain = aalloc( Tasks );
-    for ( i; Tasks ) {
-        chain[i]{ 1 };
-    }
-
-    insert( chain[0], 0 );
-    {
-        Task t[Tasks];
-        sleep(10`s);
-        done = true;
-        for ( j; Tasks )
-            close( chain[j] );
-    }
-    
-    // sout | total_operations;
-
-    sout | "done";
-
-    adelete(chain);
-
-    return 0;
-}
Index: tests/concurrent/channels/parallel_harness.hfa
===================================================================
--- tests/concurrent/channels/parallel_harness.hfa	(revision 8a919cfec5f277378c3bc7e5d16717f7d44058c6)
+++ 	(revision )
@@ -1,184 +1,0 @@
-#include <locks.hfa>
-#include <fstream.hfa>
-#include <stdio.h>
-#include <channel.hfa>
-#include <thread.hfa>
-#include <time.hfa>
-
-// user defines this
-// #define BIG 1
-
-owner_lock o;
-
-unsigned long long total_operations = 0;
-
-struct bigObject {
-    size_t a;
-    size_t b;
-    size_t c;
-    size_t d;
-    size_t e;
-    size_t f;
-    size_t g;
-    size_t h;
-};
-
-void ?{}( bigObject & this, size_t i ) with(this) { a = i; b = i; c = i; d = i; e = i; f = i; g = i; h = i; }
-void ?{}( bigObject & this ) { this{0}; }
-
-#ifdef BIG
-typedef channel( bigObject ) Channel;
-#else
-typedef channel( size_t ) Channel;
-#endif
-
-Channel * channels;
-
-volatile bool cons_done = false, prod_done = false;
-volatile int cons_done_count = 0;
-size_t cons_check = 0, prod_check = 0;
-
-thread Consumer {
-    size_t i;
-};
-static inline void ?{}( Consumer & c, size_t i, cluster & clu ) {
-    ((thread &)c){ clu };
-    c.i = i; 
-}
-void main(Consumer & this) {
-    unsigned long long runs = 0;
-    size_t my_check = 0;
-    for ( ;; ) {
-        if ( cons_done ) break;
-        #ifdef BIG
-        bigObject j = remove( channels[ this.i ] );
-        my_check = my_check ^ (j.a + j.b + j.c + j.d + j.d + j.e + j.f + j.g + j.h);
-        #else
-        size_t j = remove( channels[ this.i ] );
-        my_check = my_check ^ j;
-        #endif
-        
-        if ( !prod_done ) runs++;
-    }
-    lock(o);
-    total_operations += runs;
-    cons_done_count++;
-    cons_check = cons_check ^ my_check;
-    // sout | "C: " | runs;
-    unlock(o);
-}
-
-thread Producer {
-    size_t i;
-};
-static inline void ?{}( Producer & p, size_t i, cluster & clu ) {
-    ((thread &)p){ clu };
-    p.i = i;
-}
-void main(Producer & this) {
-    unsigned long long runs = 0;
-    size_t my_check = 0;
-    for ( ;; ) {
-        if ( prod_done ) break;
-        #ifdef BIG
-        bigObject j{(size_t)runs};
-        insert( channels[ this.i ], j );
-        my_check = my_check ^ (j.a + j.b + j.c + j.d + j.d + j.e + j.f + j.g + j.h);
-        #else
-        insert( channels[ this.i ], (size_t)runs );
-        my_check = my_check ^ ((size_t)runs);
-        #endif
-        runs++;
-    }
-    lock(o);
-    total_operations += runs;
-    prod_check = prod_check ^ my_check;
-    // sout | "P: " | runs;
-    unlock(o);
-}
-
-
-int test( size_t Processors, size_t Channels, size_t Producers, size_t Consumers, size_t ChannelSize ) {
-    size_t Clusters = Processors;
-    // create a cluster
-    cluster clus[Clusters];
-    processor * proc[Processors];
-    for ( i; Processors ) {
-        (*(proc[i] = alloc())){clus[i % Clusters]};
-    }
-
-    channels = aalloc( Channels );
-
-    // sout | "Processors: " | Processors | " ProdsPerChan: " | Producers | " ConsPerChan: " | Consumers | "Channels: " | Channels | " Channel Size: " | ChannelSize;
-    
-    for ( i; Channels ) {
-        channels[i]{ ChannelSize };
-    }
-
-    sout | "start";
-    Consumer * c[Consumers * Channels];
-    Producer * p[Producers * Channels];
-
-    for ( i; Consumers * Channels ) {
-        (*(c[i] = alloc())){ i % Channels, clus[i % Clusters] };
-    }
-
-    for ( i; Producers * Channels ) {
-        (*(p[i] = alloc())){ i % Channels, clus[i % Clusters] };
-    }
-
-    sleep(10`s);
-    prod_done = true;
-
-    for ( i; Producers * Channels ) {
-        delete(p[i]);
-    }
-
-    sout | "prods";
-    cons_done = true;
-    while( cons_done_count != Consumers * Channels ) {
-        for ( i; Channels ) {
-            if ( has_waiters( channels[i] ) ){
-                #ifdef BIG
-                bigObject b{0};
-                insert( channels[i], b );
-                #else
-                insert( channels[i], 0 );
-                #endif
-            }
-        }
-        
-    }
-
-    sout | "cons";
-    for ( i; Consumers * Channels ) {
-        delete(c[i]);
-    }
-
-    sout | "flush";
-    for ( i; Channels ) {
-        for ( ;; ) {
-            if ( get_count( channels[i] ) > 0 ) {
-                #ifdef BIG
-                bigObject j = remove( channels[ i ] );
-                cons_check = cons_check ^ (j.a + j.b + j.c + j.d + j.d + j.e + j.f + j.g + j.h);
-                #else
-                size_t j = remove( channels[ i ] );
-                cons_check = cons_check ^ j;
-                #endif
-            } else break;
-        }
-    }
-
-    adelete( channels );
-    // sout | "total channel ops: " | total_operations;
-    if ( cons_check != prod_check )
-        sout | "CHECKSUM MISMATCH !!!";
-    // print_stats_now( *active_cluster(), CFA_STATS_READY_Q);
-
-    for ( i; Processors ) {
-        delete(proc[i]);
-    }
-    sout | "done";
-    return 0;
-}
Index: tests/concurrent/channels/ping_pong.cfa
===================================================================
--- tests/concurrent/channels/ping_pong.cfa	(revision 8a919cfec5f277378c3bc7e5d16717f7d44058c6)
+++ 	(revision )
@@ -1,64 +1,0 @@
-#include <locks.hfa>
-#include <fstream.hfa>
-#include <stdio.h>
-#include <channel.hfa>
-#include <thread.hfa>
-#include <time.hfa>
-#include <string.h>
-
-typedef channel( int ) Channel;
-
-Channel * ping;
-Channel * pong;
-
-bool done = false;
-size_t total_operations = 0;
-
-thread Pong {};
-void main(Pong & this) {
-    try {
-        for ( ;; ) {
-            if ( done ) break;
-            insert( *ping, 0 );
-            remove( *pong );
-        }
-    } catch ( channel_closed * e ) {} 
-}
-
-thread Ping {};
-void main(Ping & this) {
-    try {
-        for ( ;; ) {
-            if ( done ) break;
-            remove( *ping );
-            insert( *pong, 1 );
-            total_operations++;
-        }
-    } catch ( channel_closed * e ) {} 
-}
-
-
-int main( int argc, char * argv[] ) {
-    sout | "start";
-    processor proc[1];
-
-    Channel pingChan{ 1 };
-    Channel pongChan{ 1 };
-
-    ping = &pingChan;
-    pong = &pongChan;
-    
-    {
-        Ping pi;
-        Pong po;
-        sleep(10`s);
-        done = true;
-        close( *pong );
-        close( *ping );
-    }
-
-    // sout | total_operations;
-    
-    sout | "done";
-    return 0;
-}
Index: tests/concurrent/channels/pub_sub.cfa
===================================================================
--- tests/concurrent/channels/pub_sub.cfa	(revision 8a919cfec5f277378c3bc7e5d16717f7d44058c6)
+++ 	(revision )
@@ -1,155 +1,0 @@
-#include <locks.hfa>
-#include <fstream.hfa>
-#include <stdio.h>
-#include <channel.hfa>
-#include <thread.hfa>
-#include <time.hfa>
-#include <string.h>
-#include <mutex_stmt.hfa>
-
-size_t total_operations = 0;
-size_t Processors = 1, Tasks = 4;
-
-typedef channel( size_t ) Channel;
-
-channel( int ) * barWait;
-channel( int ) * entryWait;
-int BarrierSize = 4;
-static inline void closeBarrier() {
-    close(*entryWait);
-    close(*barWait);
-}
-
-static inline void initBarrier() {
-    barWait = malloc();
-    entryWait = malloc();
-    (*barWait){ BarrierSize };
-    (*entryWait){ BarrierSize };
-    for ( j; BarrierSize )
-        insert( *entryWait, j );
-}
-
-static inline void deleteBarrier() {
-    delete(barWait);
-    delete(entryWait);
-}
-
-static inline void barrier() {
-    int ticket = remove( *entryWait );
-    if ( ticket == BarrierSize - 1 ) {
-		for ( j; BarrierSize - 1 )
-            insert( *barWait, j );
-        return;
-	}
-    ticket = remove( *barWait );
-
-	// last one out
-	if ( BarrierSize == 1 || ticket == BarrierSize - 2 ) {
-		for ( j; BarrierSize )
-            insert( *entryWait, j );
-	}
-}
-
-Channel * chans;
-owner_lock o;
-
-thread Task { size_t id; };
-static inline void ?{}( Task & p, size_t i, cluster & clu ) {
-    ((thread &)p){ clu };
-    p.id = i;
-}
-void main(Task & this) with(this) {
-    size_t runs = 0;
-    try {
-        for ( ;; ) {
-            // publish
-            for ( i; Tasks ) {
-                insert(chans[id], i);
-            }
-
-            // subscribe
-            for ( i; Tasks ) {
-                remove( chans[i] );
-            }
-            barrier();
-            runs++;
-        }
-    } catch ( channel_closed * e ) { }
-    lock(o);
-    total_operations += runs;
-    // sout | runs;
-    unlock(o);
-}
-
-
-int main( int argc, char * argv[] ) {
-    switch ( argc ) {
-	  case 3:
-		if ( strcmp( argv[2], "d" ) != 0 ) {			// default ?
-			Tasks = atoi( argv[2] );
-            if ( Tasks < 1 ) goto Usage;
-		} // if
-	  case 2:
-		if ( strcmp( argv[1], "d" ) != 0 ) {			// default ?
-			Processors = atoi( argv[1] );
-			if ( Processors < 1 ) goto Usage;
-		} // if
-	  case 1:											// use defaults
-		break;
-	  default:
-	  Usage:
-		sout | "Usage: " | argv[0]
-             | " [ processors (> 0) | 'd' (default " | Processors
-			 | ") ] [ Tasks (> 0) | 'd' (default " | Tasks
-			 | ") ]" ;
-		exit( EXIT_FAILURE );
-	} // switch
-    BarrierSize = Tasks;
-
-    size_t Clusters = 1;
-    // create a cluster
-    cluster clus[Clusters];
-    processor * proc[Processors];
-
-    // setup processors
-    for ( i; Processors )
-        (*(proc[i] = malloc())){clus[i % Clusters]};
-
-    // setup pub/sub chans
-    chans = aalloc( Tasks );
-    for ( i; Tasks )
-        chans[i]{ Tasks };
-
-    // setup barrier
-    initBarrier();
-
-    // sout | "Processors: " | Processors | " ProdsPerChan: " | Producers | " ConsPerChan: " | Consumers | "Channels: " | Channels | " Channel Size: " | ChannelSize;
-
-    sout | "start";
-    Task * t[Tasks];
-
-    // create tasks
-    for ( i; Tasks )
-        (*(t[i] = malloc())){ i, clus[i % Clusters] };
-
-    sleep(10`s);
-
-    closeBarrier();
-    for ( i; Tasks )
-        close( chans[i] );
-
-    for ( i; Tasks ) {
-        delete(t[i]);
-    }
-
-    deleteBarrier();
-    
-    // sout | total_operations;
-
-    for ( i; Processors ) {
-        delete(proc[i]);
-    }
-    adelete( chans );
-    sout | "done";
-    return 0;
-}
Index: tests/concurrent/channels/zero_size.cfa
===================================================================
--- tests/concurrent/channels/zero_size.cfa	(revision 8a919cfec5f277378c3bc7e5d16717f7d44058c6)
+++ 	(revision )
@@ -1,7 +1,0 @@
-#include "parallel_harness.hfa"
-
-size_t Processors = 10, Channels = 1, Producers = 10, Consumers = 10, ChannelSize = 0;
-
-int main() {
-    test(Processors, Channels, Producers, Consumers, ChannelSize);
-}
Index: tests/concurrent/clib.c
===================================================================
--- tests/concurrent/clib.c	(revision 8a919cfec5f277378c3bc7e5d16717f7d44058c6)
+++ 	(revision )
@@ -1,85 +1,0 @@
-#include <stdio.h>
-#include <stdlib.h>
-#include <clib/cfathread.h>
-#include <bits/defs.hfa>
-
-extern "C" {
-void _exit(int status);
-}
-
-_Thread_local struct drand48_data buffer = { 0 };
-int myrand() {
-	long int result;
-	lrand48_r(&buffer, &result);
-	return result;
-}
-
-
-enum Constants { blocked_size = 20 };
-cfathread_t volatile blocked[blocked_size];
-
-void * Worker( void * ) {
-	for(int i = 0; i < 1000; i++) {
-		int idx = myrand() % blocked_size;
-		if(blocked[idx]) {
-			cfathread_t thrd = __atomic_exchange_n(&blocked[idx], NULL, __ATOMIC_SEQ_CST);
-			cfathread_unpark( thrd );
-		} else {
-			cfathread_t thrd = __atomic_exchange_n(&blocked[idx], cfathread_self(), __ATOMIC_SEQ_CST);
-			cfathread_unpark( thrd );
-			cfathread_park();
-		}
-	}
-	printf("Done\n");
-	return NULL;
-}
-
-volatile bool stop;
-void * Unparker( void * ) {
-	while(!stop) {
-		int idx = myrand() % blocked_size;
-		cfathread_t thrd = __atomic_exchange_n(&blocked[idx], NULL, __ATOMIC_SEQ_CST);
-		cfathread_unpark( thrd );
-		int r = myrand() % 20;
-		for( int i = 0; i < r; i++ ) {
-			cfathread_yield();
-		}
-	}
-	printf("Done Unparker\n");
-	return NULL;
-}
-
-
-int main() {
-	stop = false;
-	for(int i = 0; i < blocked_size; i++) {
-		blocked[i] = NULL;
-	}
-
-	cfathread_cluster_t cl = cfathread_cluster_self();
-
-	cfathread_cluster_add_worker( cl, NULL, NULL, NULL );
-	cfathread_cluster_add_worker( cl, NULL, NULL, NULL );
-	cfathread_cluster_add_worker( cl, NULL, NULL, NULL );
-
-	cfathread_attr_t attr;
-	cfathread_attr_init(&attr);
-	cfathread_attr_setcluster(&attr, cl);
-
-	cfathread_t u;
-	cfathread_create( &u, &attr, Unparker, NULL );
-	{
-		cfathread_t t[20];
-		for(int i = 0; i < 20; i++) {
-			cfathread_create( &t[i], &attr, Worker, NULL );
-		}
-		for(int i = 0; i < 20; i++) {
-			cfathread_join( t[i], NULL );
-		}
-	}
-	stop = true;
-	cfathread_join(u, NULL);
-	cfathread_attr_destroy(&attr);
-	fflush(stdout);
-	_exit(0);
-}
Index: tests/concurrent/clib_tls.c
===================================================================
--- tests/concurrent/clib_tls.c	(revision 8a919cfec5f277378c3bc7e5d16717f7d44058c6)
+++ 	(revision )
@@ -1,58 +1,0 @@
-#include <stdio.h>
-#include <stdlib.h>
-#include <clib/cfathread.h>
-#include <bits/defs.hfa>
-#include <time_t.hfa>
-
-extern "C" {
-void _exit(int status);
-}
-
-Duration default_preemption(){
-	return 0;
-}
-
-
-__thread int checkval = 0xBAADF00D;
-
-void init(void * ) {
-	printf("Local Init\n");
-	checkval = 0xFEEDFACE;
-}
-
-void * checker( void * ) {
-	for(int i = 0; i < 50; i++) {
-		if(checkval != 0xFeedFace) {
-			printf("Bad Food!\n");
-		}
-		cfathread_yield();
-	}
-	printf("Done\n");
-	return NULL;
-}
-
-int main() {
-	init(NULL);
-	cfathread_cluster_t cl = cfathread_cluster_self();
-
-	cfathread_cluster_add_worker( cl, NULL, init, NULL );
-	cfathread_cluster_add_worker( cl, NULL, init, NULL );
-	cfathread_cluster_add_worker( cl, NULL, init, NULL );
-
-	cfathread_attr_t attr;
-	cfathread_attr_init(&attr);
-	cfathread_attr_setcluster(&attr, cl);
-	{
-		printf("Starting Checkers\n");
-		cfathread_t t[7];
-		for(int i = 0; i < 7; i++) {
-			cfathread_create( &t[i], &attr, checker, NULL );
-		}
-		for(int i = 0; i < 7; i++) {
-			cfathread_join( t[i], NULL );
-		}
-	}
-	cfathread_attr_destroy(&attr);
-	fflush(stdout);
-	_exit(0);
-}
Index: tests/concurrent/cluster.cfa
===================================================================
--- tests/concurrent/cluster.cfa	(revision 8a919cfec5f277378c3bc7e5d16717f7d44058c6)
+++ 	(revision )
@@ -1,35 +1,0 @@
-#include <kernel.hfa>
-#include <thread.hfa>
-
-static cluster * the_cluster;
-
-thread MyThread {};
-void ?{}( MyThread & this ) {
-	((thread&)this){ *the_cluster };
-}
-
-void main( MyThread & this ) {
-	for(50) {
-		yield();
-	}
-}
-
-struct MyProc {
-	processor self;
-};
-
-void ?{}( MyProc & this ) {
-	(this.self){ *the_cluster };
-}
-
-int main() {
-	cluster cl;
-	the_cluster = &cl;
-	{
-		MyProc procs[4];
-		{
-			MyThread threads[17];
-		}
-	}
-	printf( "done\n" );				// non-empty .expect file
-}
Index: tests/concurrent/coroutineYield.cfa
===================================================================
--- tests/concurrent/coroutineYield.cfa	(revision 8a919cfec5f277378c3bc7e5d16717f7d44058c6)
+++ 	(revision )
@@ -1,53 +1,0 @@
-#include <fstream.hfa>
-#include <kernel.hfa>
-#include <stdlib.hfa>
-#include <thread.hfa>
-#include <time.hfa>
-
-#define __kick_rate 150000ul
-#include "long_tests.hfa"
-
-#ifndef PREEMPTION_RATE
-#define PREEMPTION_RATE 10`ms
-#endif
-
-Duration default_preemption() {
-	return PREEMPTION_RATE;
-}
-
-#ifdef TEST_LONG
-static const unsigned long N = 600_000ul;
-#else
-static const unsigned long N = 1_000ul;
-#endif
-
-coroutine Coroutine {};
-
-void main(Coroutine& this) {
-	while(true) {
-		#if !defined(TEST_FOREVER)
-			sout | "Coroutine 1";
-		#endif
-		yield();
-		#if !defined(TEST_FOREVER)
-			sout | "Coroutine 2";
-		#endif
-		suspend;
-	}
-}
-
-
-Coroutine c;
-int main(int argc, char* argv[]) {
-	for(int i = 0; TEST(i < N); i++) {
-		#if !defined(TEST_FOREVER)
-			sout | "Thread 1";
-		#endif
-		resume(c);
-		#if !defined(TEST_FOREVER)
-			sout | "Thread 2";
-		#endif
-		yield();
-		KICK_WATCHDOG;
-	}
-}
Index: tests/concurrent/ctor-check.cfa
===================================================================
--- tests/concurrent/ctor-check.cfa	(revision 8a919cfec5f277378c3bc7e5d16717f7d44058c6)
+++ 	(revision )
@@ -1,15 +1,0 @@
-#include <monitor.hfa>
-
-monitor Empty {};
-
-struct Test {};
-
-// Should work:
-void ?{}(Test & this, Empty & mutex mon) {}
-
-// Should not work:
-void ?{}(Empty & mutex this) {}
-
-int main(void) {
-	printf("done\n");
-}
Index: tests/concurrent/examples/.expect/boundedBufferEXT.txt
===================================================================
--- tests/concurrent/examples/.expect/boundedBufferEXT.txt	(revision 8a919cfec5f277378c3bc7e5d16717f7d44058c6)
+++ 	(revision )
@@ -1,1 +1,0 @@
-total:400000
Index: tests/concurrent/examples/.expect/boundedBufferINT.txt
===================================================================
--- tests/concurrent/examples/.expect/boundedBufferINT.txt	(revision 8a919cfec5f277378c3bc7e5d16717f7d44058c6)
+++ 	(revision )
@@ -1,1 +1,0 @@
-total:400000
Index: tests/concurrent/examples/.expect/datingService.txt
===================================================================
--- tests/concurrent/examples/.expect/datingService.txt	(revision 8a919cfec5f277378c3bc7e5d16717f7d44058c6)
+++ 	(revision )
@@ -1,1 +1,0 @@
-done
Index: tests/concurrent/examples/.expect/gortn.txt
===================================================================
--- tests/concurrent/examples/.expect/gortn.txt	(revision 8a919cfec5f277378c3bc7e5d16717f7d44058c6)
+++ 	(revision )
@@ -1,3 +1,0 @@
-0
-2.5
-1 2
Index: tests/concurrent/examples/.expect/matrixSum.txt
===================================================================
--- tests/concurrent/examples/.expect/matrixSum.txt	(revision 8a919cfec5f277378c3bc7e5d16717f7d44058c6)
+++ 	(revision )
@@ -1,1 +1,0 @@
-10000
Index: tests/concurrent/examples/.expect/quickSort.txt
===================================================================
--- tests/concurrent/examples/.expect/quickSort.txt	(revision 8a919cfec5f277378c3bc7e5d16717f7d44058c6)
+++ 	(revision )
@@ -1,32 +1,0 @@
-25 6 8 -5 99 100 101 7
--5 6 7 8 25 99 100 101
-
-1 -3 5
--3 1 5
-
-
-
-
-9 8 7 6 5 4 3 2 1 0
-0 1 2 3 4 5 6 7 8 9
-
-1 2 3 4 5
-1 2 3 4 5
-
-5 4 3 2 1
-1 2 3 4 5
-
-3 1 5 4 2
-1 2 3 4 5
-
-
-
-
-1 1 1 1 1
-1 1 1 1 1
-
-29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8
-  7 6 5 4 3 2 1 0
-0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
-  22 23 24 25 26 27 28 29
-
Index: tests/concurrent/examples/.in/quickSort.txt
===================================================================
--- tests/concurrent/examples/.in/quickSort.txt	(revision 8a919cfec5f277378c3bc7e5d16717f7d44058c6)
+++ 	(revision )
@@ -1,10 +1,0 @@
-8 25 6 8 -5 99 100 101 7
-3 1 -3 5
-0
-10 9 8 7 6 5 4 3 2 1 0
-5 1 2 3 4 5
-5 5 4 3 2 1
-5 3 1 5 4 2
-0
-5 1 1 1 1 1
-30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Index: tests/concurrent/examples/boundedBufferEXT.cfa
===================================================================
--- tests/concurrent/examples/boundedBufferEXT.cfa	(revision 8a919cfec5f277378c3bc7e5d16717f7d44058c6)
+++ 	(revision )
@@ -1,126 +1,0 @@
-//
-// Cforall Version 1.0.0 Copyright (C) 2018 University of Waterloo
-//
-// The contents of this file are covered under the licence agreement in the
-// file "LICENCE" distributed with Cforall.
-//
-// boundedBufferEXT.c --
-//
-// Author           : Peter A. Buhr
-// Created On       : Wed Apr 18 22:52:12 2018
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Thu Jan 16 22:36:34 2020
-// Update Count     : 15
-//
-
-#include <stdlib.hfa>									// random
-#include <fstream.hfa>
-#include <kernel.hfa>
-#include <thread.hfa>
-#include <unistd.h>										// getpid
-
-//Duration default_preemption() { return 0; }
-
-enum { BufferSize = 50 };
-
-forall( T ) {
-	monitor Buffer {
-		int front, back, count;
-		T elements[BufferSize];
-	}; // Buffer
-
-	void ?{}( Buffer(T) & buffer ) with( buffer ) { [front, back, count] = 0; }
-
-	int query( Buffer(T) & buffer ) { return buffer.count; } // read-only, no mutual exclusion
-
-	T remove( Buffer(T) & mutex buffer );				// forward
-
-	void insert( Buffer(T) & mutex buffer, T elem ) with( buffer ) {
-		if ( count == BufferSize ) waitfor( remove : buffer );
-		elements[back] = elem;
-		back = ( back + 1 ) % BufferSize;
-		count += 1;
-	} // insert
-
-	T remove( Buffer(T) & mutex buffer ) with( buffer ) {
-		if ( count == 0 ) waitfor( insert : buffer );
-		T elem = elements[front];
-		front = ( front + 1 ) % BufferSize;
-		count -= 1;
-		return elem;
-	} // remove
-}
-
-enum { Sentinel = -1 };
-
-thread Producer {
-	Buffer(int) & buffer;
-	unsigned int N;
-};
-void main( Producer & prod ) with( prod ) {
-	for ( i; 1 ~= N ) {
-		yield( random( 5 ) );
-		insert( buffer, 1 );
-	} // for
-}
-void ?{}( Producer & prod, Buffer(int) * buffer, int N ) {
-	&prod.buffer = buffer;
-	prod.N = N;
-}
-
-thread Consumer {
-	Buffer(int) & buffer;
-	int & sum;											// summation of producer values
-};
-void main( Consumer & cons ) with( cons ) {
-	sum = 0;
-	for () {
-		yield( random( 5 ) );
-		int item = remove( buffer );
-	  if ( item == Sentinel ) break;					// sentinel ?
-		sum += item;
-	} // for
-}
-void ?{}( Consumer & cons, Buffer(int) * buffer, int & sum ) {
-	&cons.buffer = buffer;
-	&cons.sum = &sum;
-}
-
-enum { Prods = 4, Cons = 5 };
-Producer * prods[Prods];
-Consumer * cons[Cons];
-
-int main() {
-	Buffer(int) buffer;
-	int sums[Cons];
-	int i;
-	processor p;
-
-	//srandom( getpid() );
-	srandom( 1003 );
-
-	for ( i; Cons ) {									// create consumers
-		cons[i] = new( &buffer, sums[i] );
-	} // for
-	for ( i; Prods ) {									// create producers
-		prods[i] = new( &buffer, 100000 );
-	} // for
-
-	for ( i; Prods ) {									// wait for producers to finish
-		delete( prods[i] );
-	} // for
-	for ( i; Cons ) {									// generate sentinal values to stop consumers
-		insert( buffer, Sentinel );
-	} // for
-	int sum = 0;
-	for ( i; Cons ) {									// wait for consumers to finish
-		delete( cons[i] );
-		sum += sums[i];
-	} // for
-	sout | "total:" | sum;
-}
-
-// Local Variables: //
-// tab-width: 4 //
-// compile-command: "cfa boundedBufferEXT.cfa" //
-// End: //
Index: tests/concurrent/examples/boundedBufferINT.cfa
===================================================================
--- tests/concurrent/examples/boundedBufferINT.cfa	(revision 8a919cfec5f277378c3bc7e5d16717f7d44058c6)
+++ 	(revision )
@@ -1,126 +1,0 @@
-//
-// 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.
-//
-// boundedBuffer.c --
-//
-// Author           : Peter A. Buhr
-// Created On       : Mon Oct 30 12:45:13 2017
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Fri Jun 21 08:20:46 2019
-// Update Count     : 90
-//
-
-#include <stdlib.hfa>									// random
-#include <fstream.hfa>
-#include <kernel.hfa>
-#include <thread.hfa>
-#include <unistd.h>										// getpid
-
-//Duration default_preemption() { return 0; }
-
-enum { BufferSize = 50 };
-
-forall( T ) {
-	monitor Buffer {
-		condition full, empty;
-		int front, back, count;
-		T elements[BufferSize];
-	}; // Buffer
-
-	void ?{}( Buffer(T) & buffer ) with( buffer ) { [front, back, count] = 0; }
-
-	int query( Buffer(T) & buffer ) { return buffer.count; } // read-only, no mutual exclusion
-
-	void insert( Buffer(T) & mutex buffer, T elem ) with( buffer ) {
-		if ( count == BufferSize ) wait( empty );
-		elements[back] = elem;
-		back = ( back + 1 ) % BufferSize;
-		count += 1;
-		signal( full );
-	} // insert
-
-	T remove( Buffer(T) & mutex buffer ) with( buffer ) {
-		if ( count == 0 ) wait( full );
-		T elem = elements[front];
-		front = ( front + 1 ) % BufferSize;
-		count -= 1;
-		signal( empty );
-		return elem;
-	} // remove
-}
-
-enum { Sentinel = -1 };
-
-thread Producer {
-	Buffer(int) & buffer;
-	unsigned int N;
-};
-void main( Producer & prod ) with( prod ) {
-	for ( i; 1 ~= N ) {
-		yield( random( 5 ) );
-		insert( buffer, 1 );
-	} // for
-}
-void ?{}( Producer & prod, Buffer(int) * buffer, int N ) {
-	&prod.buffer = buffer;
-	prod.N = N;
-}
-
-thread Consumer {
-	Buffer(int) & buffer;
-	int & sum;											// summation of producer values
-};
-void main( Consumer & cons ) with( cons ) {
-	sum = 0;
-	for () {
-		yield( random( 5 ) );
-		int item = remove( buffer );
-	  if ( item == Sentinel ) break;					// sentinel ?
-		sum += item;
-	} // for
-}
-void ?{}( Consumer & cons, Buffer(int) * buffer, int & sum ) {
-	&cons.buffer = buffer;
-	&cons.sum = &sum;
-}
-
-int main() {
-	Buffer(int) buffer;
-	enum { Prods = 4, Cons = 5 };
-	Producer * prods[Prods];
-	Consumer * cons[Cons];
-	int sums[Cons];
-	int i;
-	processor p;
-
-	//srandom( getpid() );
-	srandom( 1003 );
-
-	for ( i; Cons ) {									// create consumers
-		cons[i] = new( &buffer, sums[i] );
-	} // for
-	for ( i; Prods ) {									// create producers
-		prods[i] = new( &buffer, 100000 );
-	} // for
-
-	for ( i; Prods ) {									// wait for producers to finish
-		delete( prods[i] );
-	} // for
-	for ( i; Cons ) {									// generate sentinal values to stop consumers
-		insert( buffer, Sentinel );
-	} // for
-	int sum = 0;
-	for ( i; Cons ) {									// wait for consumers to finish
-		delete( cons[i] );
-		sum += sums[i];
-	} // for
-	sout | "total:" | sum;
-}
-
-// Local Variables: //
-// tab-width: 4 //
-// compile-command: "cfa boundedBufferINT.cfa" //
-// End: //
Index: tests/concurrent/examples/boundedBufferTHREAD.cfa
===================================================================
--- tests/concurrent/examples/boundedBufferTHREAD.cfa	(revision 8a919cfec5f277378c3bc7e5d16717f7d44058c6)
+++ 	(revision )
@@ -1,130 +1,0 @@
-//
-// Cforall Version 1.0.0 Copyright (C) 2018 University of Waterloo
-// 
-// The contents of this file are covered under the licence agreement in the
-// file "LICENCE" distributed with Cforall.
-//
-// boundedBufferTHREAD.c --
-//
-// Author           : Peter A. Buhr
-// Created On       : Wed Apr 18 22:52:12 2018
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Thu Jan 16 23:09:43 2020
-// Update Count     : 25
-//
-
-#include <stdlib.hfa>									// random
-#include <fstream.hfa>
-#include <kernel.hfa>
-#include <thread.hfa>
-#include <unistd.h>										// getpid
-
-//Duration default_preemption() { return 0; }
-
-enum { BufferSize = 50 };
-
-//forall( otype T ) {
-	thread Buffer {
-		int front, back, count;
-		int elements[BufferSize];
-	}; // Buffer
-
-	void ?{}( Buffer & buffer ) with( buffer ) { [front, back, count] = 0; }
-
-	int query( Buffer & buffer ) { return buffer.count; } // read-only, no mutual exclusion
-
-	void insert( Buffer & mutex buffer, int elem ) with( buffer ) {
-		elements[back] = elem;
-	} // insert
-
-	int remove( Buffer & mutex buffer ) with( buffer ) {
-		return elements[front];
-	} // remove
-
-	void main( Buffer & buffer ) with( buffer ) {
-		for () {
-			waitfor( ^?{} : buffer ) {
-				break;
-			} or when ( count != 20 ) waitfor( insert : buffer ) {
-				back = (back + 1) % 20;
-				count += 1;
-			} or when ( count != 0 ) waitfor( remove : buffer ) {
-				front = (front + 1) % 20;
-				count -= 1;
-			} // waitfor
-		} // for
-	} // main
-//}
-
-enum { Sentinel = -1 };
-
-thread Producer {
-	Buffer & buffer;
-	unsigned int N;
-};
-void main( Producer & prod ) with( prod ) {
-	for ( i; 1 ~= N ) {
-		yield( random( 5 ) );
-		insert( buffer, 1 );
-	} // for
-}
-void ?{}( Producer & prod, Buffer * buffer, int N ) {
-	&prod.buffer = buffer;
-	prod.N = N;
-}
-
-thread Consumer {
-	Buffer & buffer;
-	int & sum;											// summation of producer values
-};
-void main( Consumer & cons ) with( cons ) {
-	sum = 0;
-	for () {
-		yield( random( 5 ) );
-		int item = remove( buffer );
-	  if ( item == Sentinel ) break;					// sentinel ?
-		sum += item;
-	} // for
-}
-void ?{}( Consumer & cons, Buffer * buffer, int & sum ) {
-	&cons.buffer = buffer;
-	&cons.sum = &sum;
-}
-
-int main() {
-	Buffer buffer;
-	enum { Prods = 4, Cons = 5 };
-	Producer * prods[Prods];
-	Consumer * cons[Cons];
-	int sums[Cons];
-	int i;
-	processor p;
-
-	//srandom( getpid() );
-	srandom( 1003 );
-
-	for ( i; Cons ) {									// create consumers
-		cons[i] = new( &buffer, sums[i] );
-	} // for
-	for ( i; Prods ) {									// create producers
-		prods[i] = new( &buffer, 100000 );
-	} // for
-
-	for ( i; Prods ) {									// wait for producers to finish
-		delete( prods[i] );
-	} // for
-	for ( i; Cons ) {									// generate sentinal values to stop consumers
-		insert( buffer, Sentinel );
-	} // for
-	int sum = 0;
-	for ( i; Cons ) {									// wait for consumers to finish
-		delete( cons[i] );
-		sum += sums[i];
-	} // for
-	sout | "total:" | sum;
-}
-
-// Local Variables: //
-// tab-width: 4 //
-// compile-command: "cfa boundedBufferTHREAD.cfa" //
-// End: //
Index: tests/concurrent/examples/datingService.cfa
===================================================================
--- tests/concurrent/examples/datingService.cfa	(revision 8a919cfec5f277378c3bc7e5d16717f7d44058c6)
+++ 	(revision )
@@ -1,117 +1,0 @@
-//
-// 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.
-//
-// datingService.c --
-//
-// Author           : Peter A. Buhr
-// Created On       : Mon Oct 30 12:56:20 2017
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Sun Sep 27 15:42:25 2020
-// Update Count     : 40
-//
-
-#include <stdlib.hfa>									// random
-#include <fstream.hfa>
-#include <kernel.hfa>
-#include <thread.hfa>
-#include <unistd.h>										// getpid
-
-enum { CompCodes = 20 };								// number of compatibility codes
-
-monitor DatingService {
-	condition Girls[CompCodes], Boys[CompCodes];
-	unsigned int GirlPhoneNo, BoyPhoneNo;
-}; // DatingService
-
-unsigned int girl( DatingService & mutex ds, unsigned int PhoneNo, unsigned int ccode ) with( ds ) {
-	if ( is_empty( Boys[ccode] ) ) {					// no compatible boy ?
-		wait( Girls[ccode] );							// wait for boy
-		GirlPhoneNo = PhoneNo;							// make phone number available
-	} else {
-		GirlPhoneNo = PhoneNo;							// make phone number available
-		signal_block( Boys[ccode] );					// restart boy to set phone number
-	} // if
-	// sout | "Girl:" | PhoneNo | "is dating Boy at" | BoyPhoneNo | "with ccode" | ccode;
-	return BoyPhoneNo;
-} // DatingService girl
-
-unsigned int boy( DatingService & mutex ds, unsigned int PhoneNo, unsigned int ccode ) with( ds ) {
-	if ( is_empty( Girls[ccode] ) ) {					// no compatible girl ?
-		wait( Boys[ccode] );							// wait for girl
-		BoyPhoneNo = PhoneNo;							// make phone number available
-	} else {
-		BoyPhoneNo = PhoneNo;							// make phone number available
-		signal_block( Girls[ccode] );					// restart girl to set phone number
-	} // if
-	// sout | " Boy:" | PhoneNo | "is dating Girl" | GirlPhoneNo | "with ccode" | ccode;
-	return GirlPhoneNo;
-} // DatingService boy
-
-unsigned int girlck[CompCodes];
-unsigned int boyck[CompCodes];
-
-thread Girl {
-	DatingService & TheExchange;
-	unsigned int id, ccode;
-}; // Girl
-
-void main( Girl & g ) with( g ) {
-	yield( random( 100 ) );								// don't all start at the same time
-	unsigned int partner = girl( TheExchange, id, ccode );
-	girlck[id] = partner;
-} // Girl main
-
-void ?{}( Girl & g, DatingService * TheExchange, unsigned int id, unsigned int ccode ) {
-	&g.TheExchange = TheExchange;
-	g.id = id;
-	g.ccode = ccode;
-} // Girl ?{}
-
-thread Boy {
-	DatingService & TheExchange;
-	unsigned int id, ccode;
-}; // Boy
-
-void main( Boy & b ) with( b ) {
-	yield( random( 100 ) );								// don't all start at the same time
-	unsigned int partner = boy( TheExchange, id, ccode );
-	boyck[id] = partner;
-} // Boy main
-
-void ?{}( Boy & b, DatingService * TheExchange, unsigned int id, unsigned int ccode ) {
-	&b.TheExchange = TheExchange;
-	b.id = id;
-	b.ccode = ccode;
-} // Boy ?{}
-
-int main() {
-	DatingService TheExchange;
-	Girl * girls[CompCodes];
-	Boy  * boys[CompCodes];
-
-	srandom( /*getpid()*/ 103 );
-
-	for ( i; (unsigned int)CompCodes ) {
-		girls[i] = new( &TheExchange, i, i );			// TheExchange constructor needs unsigned int
-		boys[i]  = new( &TheExchange, i, CompCodes - ( i + 1 ) );
-	} // for
-
-	for ( i; CompCodes ) {
-		delete( boys[i] );
-		delete( girls[i] );
-	} // for
-
-	for ( i; CompCodes ) {
-		if ( girlck[ boyck[i] ] != boyck[ girlck[i] ] ) abort();
-	} // for
-
-	printf( "done\n" );									// non-empty .expect file
-} // main
-
-// Local Variables: //
-// tab-width: 4 //
-// compile-command: "cfa datingService.cfa" //
-// End: //
Index: tests/concurrent/examples/gortn.cfa
===================================================================
--- tests/concurrent/examples/gortn.cfa	(revision 8a919cfec5f277378c3bc7e5d16717f7d44058c6)
+++ 	(revision )
@@ -1,43 +1,0 @@
-//
-// Cforall Version 1.0.0 Copyright (C) 2019 University of Waterloo
-// 
-// The contents of this file are covered under the licence agreement in the
-// file "LICENCE" distributed with Cforall.
-// 
-// gortn.cfa -- compare waitfor and go channels
-// 
-// Author           : Peter A. Buhr
-// Created On       : Wed Feb 20 08:02:37 2019
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Thu Jan 16 22:43:40 2020
-// Update Count     : 5
-// 
-
-#include <fstream.hfa>
-#include <thread.hfa>
-
-struct Msg { int i, j; };
-thread GoRtn { int i;  float f;  Msg m; };
-void ^?{}( GoRtn & mutex ) {}
-void mem1( GoRtn & mutex gortn, int i ) { gortn.i = i; }
-void mem2( GoRtn & mutex gortn, float f ) { gortn.f = f; }
-void mem3( GoRtn & mutex gortn, Msg m ) { gortn.m = m; }
-
-void main( GoRtn & gortn ) with( gortn ) {
-	for () {
-		waitfor( mem1 : gortn ) sout | i;
-		or waitfor( mem2 : gortn ) sout | f;
-		or waitfor( mem3 : gortn ) sout | m.i | m.j;
-		or waitfor( ^?{} : gortn ) break;
-	}
-}
-int main() {
-	GoRtn gortn;										// start thread
-	mem1( gortn, 0 );
-	mem2( gortn, 2.5 );
-	mem3( gortn, (Msg){ 1, 2} );
-} // wait for completion
-
-// Local Variables: //
-// tab-width: 4 //
-// End: //
Index: tests/concurrent/examples/matrixSum.cfa
===================================================================
--- tests/concurrent/examples/matrixSum.cfa	(revision 8a919cfec5f277378c3bc7e5d16717f7d44058c6)
+++ 	(revision )
@@ -1,61 +1,0 @@
-//
-// 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.
-//
-// matrixSum.cfa --
-//
-// Author           : Peter A. Buhr
-// Created On       : Mon Oct  9 08:29:28 2017
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Wed Feb 20 08:37:53 2019
-// Update Count     : 16
-//
-
-#include <fstream.hfa>
-#include <kernel.hfa>
-#include <thread.hfa>
-
-thread Adder {
-	int * row, cols, & subtotal;						// communication
-};
-
-void ?{}( Adder & adder, int row[], int cols, int & subtotal ) {
-	adder.[ row, cols ] = [ row, cols ];				// expression disallowed in multi-member access
-	&adder.subtotal = &subtotal;
-}
-
-void main( Adder & adder ) with( adder ) {				// thread starts here
-	subtotal = 0;
-	for ( c; cols ) {
-		subtotal += row[c];
-	} // for
-}
-
-int main() {
-	/* const */ int rows = 10, cols = 1000;
-	int matrix[rows][cols], subtotals[rows], total = 0;
-	processor p;										// add kernel thread
-
-	for ( r; rows ) {
-		for ( c; cols ) {
-			matrix[r][c] = 1;
-		} // for
-	} // for
-	Adder * adders[rows];
-	for ( r; rows ) {									// start threads to sum rows
-		adders[r] = &(*malloc()){ matrix[r], cols, subtotals[r] };
-//		adders[r] = new( matrix[r], cols, &subtotals[r] );
-	} // for
-	for ( r; rows ) {									// wait for threads to finish
-		delete( adders[r] );
-		total += subtotals[r];							// total subtotals
-	} // for
-	sout | total;
-}
-
-// Local Variables: //
-// tab-width: 4 //
-// compile-command: "cfa matrixSum.cfa" //
-// End: //
Index: tests/concurrent/examples/multiSort.cfa
===================================================================
--- tests/concurrent/examples/multiSort.cfa	(revision 8a919cfec5f277378c3bc7e5d16717f7d44058c6)
+++ 	(revision )
@@ -1,121 +1,0 @@
-//
-// Cforall Version 1.0.0 Copyright (C) 2022 University of Waterloo
-//
-// The contents of this file are covered under the licence agreement in the
-// file "LICENCE" distributed with Cforall.
-//
-// multiSort.c -- compute sort single array multiple times
-//			make sure sorting works, thread don't screw up
-//			and trampolines work on thread stacks
-//
-// Author           : Peter A. Buhr
-// Created On       : Tue 05 24 11:34:23 2022
-// Last Modified By :
-// Last Modified On :
-// Update Count     :
-//
-
-#include <barrier.hfa>
-#include <fstream.hfa>
-#include <math.trait.hfa>
-#include <stdlib.hfa>
-#include <thread.hfa>
-
-forall(T) {
-	struct MyVec2 {
-		T val1;
-		T val2;
-	};
-
-	forall(| Equality( T ))
-	int ?!=?( MyVec2(T) lhs, MyVec2(T) rhs ) { return lhs.val1 != rhs.val1 || lhs.val2 != rhs.val2; }
-
-	forall(| Relational(T)) {
-		static inline int ?<?( MyVec2(T) lhs, MyVec2(T) rhs ) {
-			if(lhs.val1 < rhs.val1) return true;
-			if(lhs.val1 > rhs.val1) return false;
-			if(lhs.val2 < rhs.val2) return true;
-			if(lhs.val2 > rhs.val2) return false;
-			return false;
-		}
-	}
-
-	forall(| { T random( void ); })
-	MyVec2(T) random( void ) {
-		MyVec2(T) r;
-		r.val1 = random();
-		r.val2 = random();
-		return r;
-	}
-}
-
-
-
-const unsigned nthreads = 7;
-const unsigned nvecs = 313;
-barrier bar = { nthreads + 1 };
-const MyVec2(long int) * original;
-
-thread Sorter {
-	MyVec2(long int) * copy;
-};
-
-void ^?{}( Sorter & mutex this ) {
-	free(this.copy);
-}
-
-// Make this a polymorphic call to prevent thunks from being hosted
-forall( T | Relational(T) | sized(MyVec2(T)) )
-void block_sort( MyVec2(T) * vals, size_t dim ) __attribute__((noinline)) {
-	MyVec2(T) dummy = vals[0];
-	block( bar );
-
-	qsort(vals, dim);
-}
-
-
-void main( Sorter & this ) {
-	this.copy = aalloc(nvecs);
-	for(i; nvecs) {
-		this.copy[i] = original[i];
-	}
-
-	block_sort(this.copy, nvecs);
-}
-
-int main() {
-	sout | "Generating";
-	MyVec2(long int) * local = aalloc( nvecs );
-	for(i; nvecs) {
-		local[i] = random();
-	}
-
-	original = local;
-
-	sout | "Launching";
-
-	processor p; {
-		Sorter sorters[nthreads];
-
-		block( bar );
-
-		sout | "Sorting";
-
-		qsort(local, nvecs);
-
-		sout | "Checking";
-
-		for(i; nthreads) {
-			const MyVec2(long int) * copy = join( sorters[i] ).copy;
-			for(j; nvecs) {
-				if(copy[j] != original[j]) {
-					sout | "Error at thread" | i | ", index" | j | ": data doesn't match!";
-				}
-			}
-		}
-	}
-
-	free(local);
-
-	sout | "Done";
-}
Index: tests/concurrent/examples/quickSort.cfa
===================================================================
--- tests/concurrent/examples/quickSort.cfa	(revision 8a919cfec5f277378c3bc7e5d16717f7d44058c6)
+++ 	(revision )
@@ -1,189 +1,0 @@
-//
-// 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 : Wed Feb 12 18:24:47 2020
-// Update Count     : 177
-//
-
-#include <fstream.hfa>
-#include <stdlib.hfa>
-#include <kernel.hfa>
-#include <thread.hfa>
-#include <string.h>										// strcmp
-
-thread Quicksort {
-	int * values;										// communication variables
-	int low, high, depth;
-};
-
-void ?{}( Quicksort & qs, int values[], int size, int depth ) {
-	qs.[values, low, high, depth] = [values, 0, size, depth];
-} // Quicksort
-
-void main( Quicksort & qs ) {							// thread starts here
-	// nested routines: information hiding
-
-	void ?{}( Quicksort & qs, int values[], int low, int high, int depth ) {
-		qs.values = values;  qs.low = low;  qs.high = high;  qs.depth = depth;
-	} // Quicksort
-
-	void sort( int values[], int low, int high, int depth ) {
-		int left, right;								// index to left/right-hand side of the values
-		int pivot;										// pivot value of values
-		int 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 lqs = { values, low, right, depth }; // concurrently sort lower half
-				Quicksort rqs = { values, left, high, depth }; // concurrently sort upper half
-				// Quicksort lqs = { values, low, right, depth }; // concurrently sort lower half
-				// sort( values, left, high, depth );		// concurrently sort upper 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
-
-
-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;
-			int * values = alloc( size );				// values to be sorted, too large to put on stack
-			for ( counter; size ) {						// 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 QS = { values, size - 1, 0 }; // sort values
-			} // wait until sort tasks terminate
-			for ( counter; size ) {						// 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
-
-		int * values = alloc( size );					// values to be sorted, too large to put on stack
-		for ( counter; size ) {							// generate unsorted numbers
-			values[counter] = size - counter;			// descending values
-		} // for
-		for ( i; 200 ) {								// random shuffle a few values
-			swap( values[rand() % size], values[rand() % size] );
-		} // for
-		{
-			Quicksort QS = { values, size - 1, depth }; // sort values
-		} // wait until sort tasks terminate
-
-		// for ( counter; size - 1 ) {				// check sorting
-		// 	if ( values[counter] > values[counter + 1] ) abort();
-		// } // for
-
-		delete( values );
-	} // if
-} // main
-
-// for depth in 0 1 2 3 4 5 ; do echo "sort 500000000 values with ${depth} depth" ; time -f "%Uu %Ss %E %Mkb" a.out -t 500000000 ${depth} ; done
-
-// Local Variables: //
-// tab-width: 4 //
-// compile-command: "cfa quickSort.cfa" //
-// End: //
Index: tests/concurrent/examples/quickSort.generic.cfa
===================================================================
--- tests/concurrent/examples/quickSort.generic.cfa	(revision 8a919cfec5f277378c3bc7e5d16717f7d44058c6)
+++ 	(revision )
@@ -1,186 +1,0 @@
-//
-// 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 Jun 21 08:28:20 2019
-// Update Count     : 149
-//
-
-#include <fstream.hfa>
-#include <stdlib.hfa>
-#include <kernel.hfa>
-#include <thread.hfa>
-#include <string.h>										// strcmp
-
-forall( 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 ( counter; size ) {						// 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 ( counter; size ) {						// 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 ( counter; size ) {							// 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 ( counter; size - 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/concurrent/futures/.expect/abandon.txt
===================================================================
--- tests/concurrent/futures/.expect/abandon.txt	(revision 8a919cfec5f277378c3bc7e5d16717f7d44058c6)
+++ 	(revision )
@@ -1,2 +1,0 @@
-start
-done
Index: tests/concurrent/futures/.expect/basic.txt
===================================================================
--- tests/concurrent/futures/.expect/basic.txt	(revision 8a919cfec5f277378c3bc7e5d16717f7d44058c6)
+++ 	(revision )
@@ -1,2 +1,0 @@
-start
-done
Index: tests/concurrent/futures/.expect/multi.txt
===================================================================
--- tests/concurrent/futures/.expect/multi.txt	(revision 8a919cfec5f277378c3bc7e5d16717f7d44058c6)
+++ 	(revision )
@@ -1,2 +1,0 @@
-start
-done
Index: tests/concurrent/futures/.expect/select_future.txt
===================================================================
--- tests/concurrent/futures/.expect/select_future.txt	(revision 8a919cfec5f277378c3bc7e5d16717f7d44058c6)
+++ 	(revision )
@@ -1,6 +1,0 @@
-start 1: blocking path future test
-done 1
-start 2: nonblocking path future test
-done 2
-start 3: try_get future test
-done 3
Index: tests/concurrent/futures/.expect/typed.txt
===================================================================
--- tests/concurrent/futures/.expect/typed.txt	(revision 8a919cfec5f277378c3bc7e5d16717f7d44058c6)
+++ 	(revision )
@@ -1,2 +1,0 @@
-start
-done
Index: tests/concurrent/futures/.expect/wait_any.txt
===================================================================
--- tests/concurrent/futures/.expect/wait_any.txt	(revision 8a919cfec5f277378c3bc7e5d16717f7d44058c6)
+++ 	(revision )
@@ -1,2 +1,0 @@
-start
-done
Index: tests/concurrent/futures/abandon.cfa
===================================================================
--- tests/concurrent/futures/abandon.cfa	(revision 8a919cfec5f277378c3bc7e5d16717f7d44058c6)
+++ 	(revision )
@@ -1,102 +1,0 @@
-#include <thread.hfa>
-
-enum {NFUTURES = 10};
-
-thread Server {
-	int cnt;
-	future_t * requests[NFUTURES];
-};
-
-void ?{}( Server & this ) {
-	this.cnt = 0;
-	for(i; NFUTURES) {
-		this.requests[i] = 0p;
-	}
-}
-
-void ^?{}( Server & mutex this ) {
-	assert(this.cnt == 0);
-	for(i; NFUTURES) {
-		this.requests[i] = 0p;
-	}
-}
-
-void process( Server & this, int i ) {
-	if( this.requests[i] == 0p ) return;
-	future_t * f = this.requests[i];
-	this.requests[i] = 0p;
-	this.cnt--;
-	fulfil( *f );
-}
-
-void call( Server & mutex this, future_t & f ) {
-	for(i; NFUTURES) {
-		if( this.requests[i] == 0p ) {
-			this.requests[i] = &f;
-			this.cnt++;
-			return;
-		}
-	}
-	abort("Monitor Error");
-}
-
-void main( Server & this ) {
-	unsigned i = 0;
-	for() {
-		waitfor( ^?{} : this ) {
-			break;
-		}
-		or when( this.cnt < NFUTURES ) waitfor( call: this ) {}
-		or else {
-			process( this, i % NFUTURES );
-			i++;
-		}
-	}
-
-	for(i; NFUTURES) {
-		process( this, i );
-	}
-}
-
-Server * the_server;
-thread Worker {};
-
-void thrash(void) {
-	volatile int locals[250];
-	for(i; 250) {
-		locals[i] = 0xdeadbeef;
-	}
-}
-
-void work(int i) {
-	future_t *mine = new();
-	call( *the_server, *mine );
-	if (i % 2 == 0) {
-		abandon( *mine );
-	} else {
-		wait( *mine );
-		delete( mine );
-	}
-}
-
-void main( Worker & ) {
-	for(i;150) {
-		thrash();
-		work(i);
-		thrash();
-	}
-}
-
-int main() {
-	printf( "start\n" );				// non-empty .expect file
-	processor procs[2];
-	{
-		Server server;
-		the_server = &server;
-		{
-			Worker workers[17];
-		}
-	}
-	printf( "done\n" );				// non-empty .expect file
-
-}
Index: tests/concurrent/futures/basic.cfa
===================================================================
--- tests/concurrent/futures/basic.cfa	(revision 8a919cfec5f277378c3bc7e5d16717f7d44058c6)
+++ 	(revision )
@@ -1,97 +1,0 @@
-#include <thread.hfa>
-
-enum {NFUTURES = 10};
-
-thread Server {
-	int cnt;
-	future_t * requests[NFUTURES];
-};
-
-void ?{}( Server & this ) {
-	this.cnt = 0;
-	for(i; NFUTURES) {
-		this.requests[i] = 0p;
-	}
-}
-
-void ^?{}( Server & mutex this ) {
-	assert(this.cnt == 0);
-	for(i; NFUTURES) {
-		this.requests[i] = 0p;
-	}
-}
-
-void process( Server & this, int i ) {
-	if( this.requests[i] == 0p ) return;
-	future_t * f = this.requests[i];
-	this.requests[i] = 0p;
-	this.cnt--;
-	fulfil( *f );
-}
-
-void call( Server & mutex this, future_t & f ) {
-	for(i; NFUTURES) {
-		if( this.requests[i] == 0p ) {
-			this.requests[i] = &f;
-			this.cnt++;
-			return;
-		}
-	}
-	abort("Monitor Error");
-}
-
-void main( Server & this ) {
-	unsigned i = 0;
-	for() {
-		waitfor( ^?{} : this ) {
-			break;
-		}
-		or when( this.cnt < NFUTURES ) waitfor( call: this ) {}
-		or else {
-			process( this, i % NFUTURES );
-			i++;
-		}
-	}
-
-	for(i; NFUTURES) {
-		process( this, i );
-	}
-}
-
-Server * the_server;
-thread Worker {};
-
-void thrash(void) {
-	volatile int locals[250];
-	for(i; 250) {
-		locals[i] = 0xdeadbeef;
-	}
-}
-
-void work(void) {
-	future_t mine;
-	call( *the_server, mine );
-	wait( mine );
-}
-
-void main( Worker & ) {
-	for(150) {
-		thrash();
-		work();
-		thrash();
-	}
-}
-
-int main() {
-	printf( "start\n" );				// non-empty .expect file
-	processor procs[2];
-	{
-		Server server;
-		the_server = &server;
-		{
-			Worker workers[17];
-		}
-	}
-	printf( "done\n" );				// non-empty .expect file
-
-}
Index: tests/concurrent/futures/multi.cfa
===================================================================
--- tests/concurrent/futures/multi.cfa	(revision 8a919cfec5f277378c3bc7e5d16717f7d44058c6)
+++ 	(revision )
@@ -1,104 +1,0 @@
-#include <thread.hfa>
-#include <future.hfa>
-
-enum {NFUTURES = 10};
-
-thread Server {
-	int pending, done, iteration;
-	multi_future(int) * request;
-};
-
-void ?{}( Server & this ) {
-	((thread&)this){"Server Thread"};
-	this.pending = 0;
-	this.done = 0;
-	this.iteration = 0;
-	this.request = 0p;
-}
-
-void ^?{}( Server & mutex this ) {
-	assert(this.pending == 0);
-	this.request = 0p;
-}
-
-void init( Server & this , multi_future(int) * f ) {
-	this.request = f;
-}
-
-void call( Server & mutex this ) {
-	this.pending++;
-}
-
-void finish( Server & mutex this ) {
-	this.done++;
-}
-
-void main( Server & this ) {
-	MAIN_LOOP:
-	for() {
-		waitfor( ^?{} : this ) {
-			break;
-		}
-		or waitfor( call: this ) {
-			if (this.pending != NFUTURES) { continue MAIN_LOOP; }
-
-			this.pending = 0;
-			fulfil( *this.request, this.iteration );
-			this.iteration++;
-
-			for(NFUTURES) {
-				waitfor( finish: this );
-			}
-
-			reset( *this.request );
-			this.done = 0;
-		}
-	}
-
-}
-
-Server * the_server;
-thread Worker {};
-void ?{}(Worker & this) {
-	((thread&)this){"Worker Thread"};
-}
-
-multi_future(int) * shared_future;
-
-void thrash(void) {
-	volatile int locals[250];
-	for(i; 250) {
-		locals[i] = 0xdeadbeef;
-	}
-}
-
-void work(int num) {
-	call( *the_server );
-	int res = wait( *shared_future );
-	if( res != num ) abort();
-	finish( *the_server );
-}
-
-void main( Worker & ) {
-	for (i; 10) {
-		thrash();
-		work(i);
-		thrash();
-	}
-}
-
-int main() {
-	printf( "start\n" );				// non-empty .expect file
-	processor procs[2];
-	shared_future = new();
-	{
-		Server server;
-		the_server = &server;
-		init(server, shared_future);
-		{
-			Worker workers[NFUTURES];
-		}
-	}
-	delete( shared_future );
-	printf( "done\n" );				// non-empty .expect file
-}
Index: tests/concurrent/futures/select_future.cfa
===================================================================
--- tests/concurrent/futures/select_future.cfa	(revision 8a919cfec5f277378c3bc7e5d16717f7d44058c6)
+++ 	(revision )
@@ -1,198 +1,0 @@
-#include <thread.hfa>
-#include <future.hfa>
-#include <concurrency/barrier.hfa>
-
-enum {NFUTURES = 10};
-
-thread Server {
-	int pending, done, iteration;
-	future(int) * request;
-};
-
-void ?{}( Server & this ) {
-	((thread&)this){"Server Thread"};
-	this.pending = 0;
-	this.done = 0;
-	this.iteration = 0;
-	this.request = 0p;
-}
-
-void ^?{}( Server & mutex this ) {
-	assert(this.pending == 0);
-	this.request = 0p;
-}
-
-void init( Server & this , future(int) * f ) {
-	this.request = f;
-}
-
-void call( Server & mutex this ) {
-	this.pending++;
-}
-
-void finish( Server & mutex this ) {
-	this.done++;
-}
-
-void main( Server & this ) {
-	MAIN_LOOP:
-	for() {
-		waitfor( ^?{} : this ) {
-			break;
-		}
-		or waitfor( call: this ) {
-			if (this.pending != NFUTURES) { continue MAIN_LOOP; }
-
-			this.pending = 0;
-			fulfil( *this.request, this.iteration );
-			this.iteration++;
-
-			for(NFUTURES) {
-				waitfor( finish: this );
-			}
-
-			reset( *this.request );
-			this.done = 0;
-		}
-	}
-
-}
-
-Server * the_server;
-thread Worker {};
-void ?{}(Worker & this) {
-	((thread&)this){"Worker Thread"};
-}
-
-future(int) * shared_future;
-
-void thrash(void) {
-	volatile int locals[250];
-	for(i; 250) {
-		locals[i] = 0xdeadbeef;
-	}
-}
-
-void work(int num) {
-	call( *the_server );
-	int res = get( *shared_future );
-	if( res != num ) abort();
-	finish( *the_server );
-}
-
-void main( Worker & ) {
-	for (i; 10) {
-		thrash();
-		work(i);
-		thrash();
-	}
-}
-
-thread Worker2 {};
-
-semaphore before{0};
-semaphore after_server{0};
-semaphore after_worker{0};
-
-void work2( int num ) {
-    P( before );
-	int res = get( *shared_future );
-	if( res != num ) abort();
-	V( after_server );
-    P( after_worker );
-}
-
-void main( Worker2 & ) {
-	for (i; 10) {
-		thrash();
-		work2(i);
-		thrash();
-	}
-}
-
-thread Server2 {};
-
-void main( Server2 & ) {
-	for (i; 10) {
-		fulfil( *shared_future , i );
-        V( before, NFUTURES );
-        for ( i; NFUTURES ) P( after_server );
-        reset( *shared_future );
-        V( after_worker, NFUTURES );
-	}
-}
-
-barrier bar = { NFUTURES + 1 };
-
-thread Worker3 {};
-
-void work3( int num ) {
-    [int, bool] tt;
-    do {
-        tt = try_get( *shared_future );
-    } while ( ! tt.1 );
-	if( tt.0 != num ) abort();
-	V( after_server );
-    block(bar);
-}
-
-void main( Worker3 & ) {
-	for (i; 10) {
-		thrash();
-		work3(i);
-		thrash();
-	}
-}
-
-thread Server3 {};
-
-void main( Server3 & ) {
-	for (i; 10) {
-		fulfil( *shared_future , i );
-        for ( i; NFUTURES ) P( after_server );
-        reset( *shared_future );
-        block(bar);
-	}
-}
-
-int main() {
-	printf( "start 1: blocking path future test\n" );
-	processor procs[11];
-	shared_future = new();
-	{
-		Server server;
-		the_server = &server;
-		init(server, shared_future);
-		{
-			Worker workers[NFUTURES];
-		}
-	}
-	delete( shared_future );
-	printf( "done 1\n" );
-
-    printf( "start 2: nonblocking path future test\n" );
-    shared_future = new();
-
-    {
-        Server2 server;
-		{
-			Worker2 workers[NFUTURES];
-		}
-	}
-
-    delete( shared_future );
-	printf( "done 2\n" );
-
-    printf( "start 3: try_get future test\n" );
-    shared_future = new();
-
-    {
-        Worker3 workers[NFUTURES];
-		{
-			Server3 server;
-		}
-	}
-
-    delete( shared_future );
-	printf( "done 3\n" );
-}
Index: tests/concurrent/futures/typed.cfa
===================================================================
--- tests/concurrent/futures/typed.cfa	(revision 8a919cfec5f277378c3bc7e5d16717f7d44058c6)
+++ 	(revision )
@@ -1,97 +1,0 @@
-#include <thread.hfa>
-#include <future.hfa>
-enum {NFUTURES = 10};
-
-thread Server {
-	int cnt;
-	single_future(int) * requests[NFUTURES];
-};
-
-void ?{}( Server & this ) {
-	this.cnt = 0;
-	for(i; NFUTURES) {
-		this.requests[i] = 0p;
-	}
-}
-
-void ^?{}( Server & mutex this ) {
-	assert(this.cnt == 0);
-	for(i; NFUTURES) {
-		this.requests[i] = 0p;
-	}
-}
-
-void process( Server & this, int i ) {
-	if( this.requests[i] == 0p ) return;
-	single_future(int) * f = this.requests[i];
-	this.requests[i] = 0p;
-	this.cnt--;
-	fulfil( *f , i);
-}
-
-void call( Server & mutex this, single_future(int) & f ) {
-	for(i; NFUTURES) {
-		if( this.requests[i] == 0p ) {
-			this.requests[i] = &f;
-			this.cnt++;
-			return;
-		}
-	}
-	abort("Monitor Error");
-}
-
-void main( Server & this ) {
-	unsigned i = 0;
-	for() {
-		waitfor( ^?{} : this ) {
-			break;
-		}
-		or when( this.cnt < NFUTURES ) waitfor( call: this ) {}
-		or else {
-			process( this, i % NFUTURES );
-			i++;
-		}
-	}
-
-	for(i; NFUTURES) {
-		process( this, i );
-	}
-}
-
-Server * the_server;
-thread Worker {};
-
-void thrash(void) {
-	volatile int locals[250];
-	for(i; 250) {
-		locals[i] = 0xdeadbeef;
-	}
-}
-
-void work(void) {
-	single_future(int) mine;
-	call( *the_server, mine );
-	wait( mine );
-}
-
-void main( Worker & ) {
-	for(150) {
-		thrash();
-		work();
-		thrash();
-	}
-}
-
-int main() {
-	printf( "start\n" );				// non-empty .expect file
-	processor procs[2];
-	{
-		Server server;
-		the_server = &server;
-		{
-			Worker workers[17];
-		}
-	}
-	printf( "done\n" );				// non-empty .expect file
-
-}
Index: tests/concurrent/futures/wait_any.cfa
===================================================================
--- tests/concurrent/futures/wait_any.cfa	(revision 8a919cfec5f277378c3bc7e5d16717f7d44058c6)
+++ 	(revision )
@@ -1,77 +1,0 @@
-#include <thread.hfa>
-#include <fstream.hfa>
-#include <stdlib.hfa>
-#include <mutex_stmt.hfa>
-#include <locks.hfa>
-
-simple_owner_lock l;
-pthread_cond_var( simple_owner_lock ) c;
-
-size_t num_futures = 10;
-
-future_t * futures;
-
-size_t * shuffle_arr;
-
-size_t numtimes = 10;
-
-volatile bool done = false;
-
-void synchronize() {
-    lock(l);
-    if (empty(c)) {
-        wait(c,l);
-    } else {
-        for ( i; num_futures ) {
-            reset(futures[i]);
-        }
-        notify_one(c);
-    }
-    unlock(l);
-}
-
-thread Waiter {};
-void main( Waiter & this ) {
-    for (numtimes) {
-        wait_any(futures, num_futures);
-        synchronize();
-    }
-    done = true;
-    while (done) notify_one(c);
-}
-
-thread Deliverer {};
-void main( Deliverer & this ) {
-    while (!done) {
-        size_t num_satisfy = random(1,num_futures);
-        for ( i; num_satisfy ) {								// random shuffle a few values
-			swap( shuffle_arr[random(num_futures)], shuffle_arr[random(num_futures)] );
-		}
-        for ( i; num_satisfy ) {
-            fulfil(futures[shuffle_arr[i]]);
-        }
-        synchronize();
-    }
-    done = false;
-}
-
-int main() {
-	sout | "start";
-    futures = alloc( num_futures );
-    shuffle_arr = alloc( num_futures );
-    for ( i; num_futures ) {								// random shuffle a few values
-        futures[i]{};
-        swap( shuffle_arr[random(num_futures)], shuffle_arr[random(num_futures)] );
-    }
-    for ( i; num_futures ) {
-        shuffle_arr[i] = i;
-    }
-	processor procs[1];
-	{
-		Waiter w;
-		Deliverer d;
-	}
-    free( futures );
-    free( shuffle_arr );
-	sout | "done";
-}
Index: tests/concurrent/join.cfa
===================================================================
--- tests/concurrent/join.cfa	(revision 8a919cfec5f277378c3bc7e5d16717f7d44058c6)
+++ 	(revision )
@@ -1,52 +1,0 @@
-#include <fstream.hfa>
-#include <thread.hfa>
-
-thread Worker { volatile int result; };
-
-void main(Worker & this) {
-	this.result = -10;
-	for(50) {
-		yield();
-	}
-	this.result = 42;
-}
-
-thread OtherWorker { volatile int result; };
-
-void main(OtherWorker & this) {
-	this.result = -10;
-	LOOP: for() {
-		waitfor( ^?{} : this) {
-			break LOOP;
-		}
-		or else {
-			yield();
-		}
-	}
-	this.result = 27;
-}
-
-
-int main(int argc, char* argv[]) {
-	{
-		Worker workers[17];
-		for(i; 17) {
-			int res = join( workers[i] ).result;
-			if( res != 42 ) {
-				sout | "Worker" | i | "got incorrect result:" | res;
-			}
-		}
-	}
-	sout | "All workers got 42";
-
-	{
-		OtherWorker workers[17];
-		for(i; 17) {
-			int res = join( workers[i] ).result;
-			if( res != 27 ) {
-				sout | "Other Worker" | i | "got incorrect result:" | res;
-			}
-		}
-	}
-	sout | "All other workers got 27";
-}
Index: tests/concurrent/joinerror.cfa
===================================================================
--- tests/concurrent/joinerror.cfa	(revision 8a919cfec5f277378c3bc7e5d16717f7d44058c6)
+++ 	(revision )
@@ -1,61 +1,0 @@
-#include <fstream.hfa>
-#include <thread.hfa>
-
-thread Worker { volatile int result; };
-
-void main(Worker & this) {
-	this.result = -10;
-	for(50) {
-		yield();
-	}
-	this.result = 42;
-}
-
-int get_result( Worker & mutex this ) {
-	return this.result;
-}
-
-thread OtherWorker { volatile int result; };
-
-void main(OtherWorker & this) {
-	this.result = -10;
-	LOOP: for() {
-		waitfor( ^?{} : this) {
-			break LOOP;
-		}
-		or else {
-			yield();
-		}
-	}
-	this.result = 27;
-}
-
-int get_result( OtherWorker & mutex this ) {
-	return this.result;
-}
-
-int main(int argc, char* argv[]) {
-	{
-		Worker workers[17];
-		for(i; 17) {
-			join( workers[i] );
-			int res = get_result( workers[i] );
-			if( res != 42 ) {
-				sout | "Worker" | i | "got incorrect result:" | res;
-			}
-		}
-	}
-	sout | "All workers got 42";
-
-	{
-		OtherWorker workers[17];
-		for(i; 17) {
-			join( workers[i] );
-			int res = get_result( workers[i] );
-			if( res != 27 ) {
-				sout | "Other Worker" | i | "got incorrect result:" | res;
-			}
-		}
-	}
-	sout | "All other workers got 27";
-}
Index: tests/concurrent/keywordErrors.cfa
===================================================================
--- tests/concurrent/keywordErrors.cfa	(revision 8a919cfec5f277378c3bc7e5d16717f7d44058c6)
+++ 	(revision )
@@ -1,6 +1,0 @@
-thread A {};
-
-// This include isn't enough but used to fool the check
-#include <invoke.h>
-
-thread B {};
Index: tests/concurrent/lockfree_stack.cfa
===================================================================
--- tests/concurrent/lockfree_stack.cfa	(revision 8a919cfec5f277378c3bc7e5d16717f7d44058c6)
+++ 	(revision )
@@ -1,87 +1,0 @@
-//
-// Cforall Version 1.0.0 Copyright (C) 2022 University of Waterloo
-//
-// The contents of this file are covered under the licence agreement in the
-// file "LICENCE" distributed with Cforall.
-//
-// lockfree_stack.cfa -- 
-//
-// Author           : Peter A. Buhr
-// Created On       : Thu May 25 15:36:50 2023
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Thu May 25 16:20:23 2023
-// Update Count     : 2
-// 
-
-#include <thread.hfa>
-#include <atomic.hfa>									// CASV
-#include <fstream.hfa>
-
-struct Node;											// forward declaration
-union Link {
-	struct {											// 64-bit x 2
-		Node * volatile top;							// pointer to stack top
-		uintptr_t count;								// count each push
-	};
-	__int128 atom;										// gcc, 128-bit integer
-} __attribute__(( aligned( 16 ) ));
-
-struct Node {
-	// resource data
-	Link next;											// pointer to next node/count (resource)
-};
-struct Stack {
-	Link stack;
-};
-
-void push( Stack & s, Node & n ) with(s) {
-	n.next = stack;										// atomic assignment unnecessary
-	for () {											// busy wait
-		if ( CASV( stack.atom, n.next.atom, ((Link){ &n, n.next.count + 1 }.atom) ) ) break; // attempt to update top node
-	}
-}
-
-Node * pop( Stack & s ) with(s) {
-	Link t = stack;										// atomic assignment unnecessary
-	for () {											// busy wait
-		if ( t.top == NULL ) return NULL;				// empty stack ?
-		if ( CASV( stack.atom, t.atom, ((Link){ t.top->next.top, t.count }.atom) ) ) return t.top; // attempt to update top node
-	}
-}
-void ?{}( Stack & s ) with(s) { stack.atom = 0; }
-
-Stack stack;											// global stack
-
-thread Worker {};
-void main( Worker & w ) {
-	for ( i; 100000 ) {
-		Node & n = *pop( stack );
-		assert( &n != NULL );
-		n.next.top = 0p;								// shrub fields
-		n.next.count = 0;
-		//yield( rand() % 3 );
-		push( stack, n );
-	}
-}
-
-
-int main() {
-	enum { N = 10 };
-	processor p[N - 1];									// kernel threads
-
-	for ( i; N ) {										// push N values on stack
-		// storage must be 16-bytes aligned for cmpxchg16b
-		push( stack, *(Node *)memalign( 16, sizeof( Node ) ) );
-	}
-	{
-		Worker workers[N];								// run test
-	}
-	for ( i; N ) {										// pop N nodes from list
-		free( pop( stack ) );
-	}
-	sout | "done";										// non-empty .expect file
-}
-
-// Local Variables: //
-// compile-command: "cfa -g -O3 lockfree_stack.cfa" //
-// End: //
Index: tests/concurrent/mainError.cfa
===================================================================
--- tests/concurrent/mainError.cfa	(revision 8a919cfec5f277378c3bc7e5d16717f7d44058c6)
+++ 	(revision )
@@ -1,2 +1,0 @@
-thread Test {};
-void main(Test&) {}
Index: tests/concurrent/migrate.cfa
===================================================================
--- tests/concurrent/migrate.cfa	(revision 8a919cfec5f277378c3bc7e5d16717f7d44058c6)
+++ 	(revision )
@@ -1,85 +1,0 @@
-#include <fstream.hfa>
-#include <kernel.hfa>
-#include <thread.hfa>
-
-#include <stdatomic.h>
-#include <assert.h>
-
-struct cluster_wrapper {
-	cluster self;
-	const uint64_t canary;
-	struct {
-		volatile uint64_t want;
-		volatile uint64_t have;
-	} checksum;
-};
-
-void ?{}( cluster_wrapper & this ) {
-	(this.self){};
-	(*(uint64_t *)&this.canary) = 0xDEAD2BADDEAD2BAD;
-	this.checksum.want = 0;
-	this.checksum.have = 0;
-}
-
-void ^?{}( cluster_wrapper & this ) {
-	assert(this.canary == 0xDEAD2BADDEAD2BAD);
-}
-
-static cluster_wrapper * the_clusters;
-static unsigned cluster_cnt;
-
-thread MyThread {
-
-};
-
-void ?{}( MyThread & this ) {}
-
-void checkcl( MyThread & this, cluster * cl) {
-	if(((thread&)this).curr_cluster != cl) {
-		abort | "Thread has unexpected cluster";
-	}
-}
-
-void main( MyThread & this ) {
-	waitfor( migrate : this ) {
-		assert( ((thread&)this).curr_cluster == active_cluster() );
-		assert( ((thread&)this).curr_cluster == active_processor()->cltr );
-	}
-
-	struct cluster_wrapper * curr = (struct cluster_wrapper *)&the_clusters[0];
-
-	for(100) {
-		unsigned idx = prng( this, cluster_cnt );
-
-		struct cluster_wrapper * next = &the_clusters[ idx ];
-		assert(next->canary == 0xDEAD2BADDEAD2BAD);
-
-		// next->
-
-		migrate( this, next->self );
-
-		assert( active_cluster() == &next->self );
-		assert( ((thread&)this).curr_cluster == active_cluster() );
-		assert( ((thread&)this).curr_cluster == active_processor()->cltr );
-	}
-}
-
-int main() {
-	cluster_cnt = 3;
-	cluster_wrapper cl[cluster_cnt];
-	the_clusters = cl;
-
-	{
-		set_concurrency( cl[0].self, 2 );
-		set_concurrency( cl[1].self, 2 );
-		set_concurrency( cl[2].self, 1 );
-
-		MyThread threads[17];
-		for(i;17) {
-			migrate( threads[i], cl[0].self );
-		}
-
-	}
-	// non-empty .expect file
-	printf( "done\n" );
-}
Index: tests/concurrent/monitor.cfa
===================================================================
--- tests/concurrent/monitor.cfa	(revision 8a919cfec5f277378c3bc7e5d16717f7d44058c6)
+++ 	(revision )
@@ -1,43 +1,0 @@
-#include <fstream.hfa>
-#include <kernel.hfa>
-#include <monitor.hfa>
-#include <thread.hfa>
-
-monitor global_t {
-	int value;
-};
-
-void ?{}(global_t & this) {
-	this.value = 0;
-}
-
-static global_t global;
-
-void increment3( global_t & mutex this ) {
-	this.value += 1;
-}
-
-void increment2( global_t & mutex this ) {
-	increment3( this );
-}
-
-void increment( global_t & mutex this ) {
-	increment2( this );
-}
-
-thread MyThread {};
-
-void main( MyThread & this ) {
-	for(int i = 0; i < 750_000; i++) {
-		increment( global );
-	}
-}
-
-int main(int argc, char* argv[]) {
-	assert( global.__mon.entry_queue.tail != NULL );
-	processor p;
-	{
-		MyThread f[4];
-	}
-	sout | global.value;
-}
Index: tests/concurrent/multi-monitor.cfa
===================================================================
--- tests/concurrent/multi-monitor.cfa	(revision 8a919cfec5f277378c3bc7e5d16717f7d44058c6)
+++ 	(revision )
@@ -1,59 +1,0 @@
-#include <fstream.hfa>
-#include <kernel.hfa>
-#include <monitor.hfa>
-#include <thread.hfa>
-
-static int global12, global23, global13;
-
-monitor monitor_t {};
-
-static monitor_t m1, m2, m3;
-
-void increment( monitor_t & mutex p1, monitor_t & mutex p2, int & value ) {
-	assert(active_thread() == get_monitor(p1)->owner);
-	assert(active_thread() == get_monitor(p2)->owner);
-	value += 1;
-	assert(active_thread() == get_monitor(p1)->owner);
-	assert(active_thread() == get_monitor(p2)->owner);
-}
-
-thread MyThread {
-	int target;
-};
-
-void ?{}( MyThread & this, int target ) {
-	this.target = target;
-}
-
-void ^?{}( MyThread & mutex this ) {}
-
-void main( MyThread & this ) {
-	for(int i = 0; i < 1000000; i++) {
-		choose(this.target) {
-			case 0: increment( m1, m2, global12 );
-			case 1: increment( m2, m3, global23 );
-			case 2: increment( m1, m3, global13 );
-		}
-	}
-}
-
-forall(T & | sized(T) | { void ^?{}(T & mutex); })
-void delete_mutex(T * x) {
-	^(*x){};
-	free(x);
-}
-
-int main(int argc, char* argv[]) {
-	processor p;
-	{
-		MyThread * f[6];
-		for(int i = 0; i < 6; i++) {
-			f[i] = new(i % 3);
-		}
-
-		for(int i = 0; i < 6; i++) {
-			delete_mutex( f[i] );
-		}
-	}
-	sout | global12 | global23 | global13;
-}
Index: tests/concurrent/mutexstmt/.expect/locks.txt
===================================================================
--- tests/concurrent/mutexstmt/.expect/locks.txt	(revision 8a919cfec5f277378c3bc7e5d16717f7d44058c6)
+++ 	(revision )
@@ -1,6 +1,0 @@
-Start Test: single lock mutual exclusion
-End Test: single lock mutual exclusion
-Start Test: multi lock deadlock/mutual exclusion
-End Test: multi lock deadlock/mutual exclusion
-Start Test: multi polymorphic lock deadlock/mutual exclusion
-End Test: multi polymorphic lock deadlock/mutual exclusion
Index: tests/concurrent/mutexstmt/.expect/monitors.txt
===================================================================
--- tests/concurrent/mutexstmt/.expect/monitors.txt	(revision 8a919cfec5f277378c3bc7e5d16717f7d44058c6)
+++ 	(revision )
@@ -1,4 +1,0 @@
-Start Test: single monitor mutual exclusion
-End Test: single monitor mutual exclusion
-Start Test: multi monitor deadlock/mutual exclusion
-End Test: multi monitor deadlock/mutual exclusion
Index: tests/concurrent/mutexstmt/locks.cfa
===================================================================
--- tests/concurrent/mutexstmt/locks.cfa	(revision 8a919cfec5f277378c3bc7e5d16717f7d44058c6)
+++ 	(revision )
@@ -1,133 +1,0 @@
-#include <mutex_stmt.hfa>
-#include <locks.hfa>
-
-const unsigned int num_times = 10000;
-
-Duration default_preemption() { return 0; }
-
-single_acquisition_lock m1, m2, m3, m4, m5;
-
-thread T_Mutex {};
-bool insideFlag = false;
-int count = 0;
-
-void main( T_Mutex & this ) {
-	for (unsigned int i = 0; i < num_times; i++) {
-		mutex ( m1 ) count++;
-		mutex ( m1 ) { 
-			assert(!insideFlag);
-			insideFlag = true;
-			assert(insideFlag);
-			insideFlag = false;
-		}
-	}
-}
-
-void refTest( single_acquisition_lock & m ) {
-	mutex ( m ) {
-		assert(!insideFlag);
-		insideFlag = true;
-		assert(insideFlag);
-		insideFlag = false;
-	}
-}
-
-thread T_Multi {};
-
-void main( T_Multi & this ) {
-	for (unsigned int i = 0; i < num_times; i++) {
-		refTest( m1 );
-		mutex ( m1 ) {
-			assert(!insideFlag);
-			insideFlag = true;
-			assert(insideFlag);
-			insideFlag = false;
-		}
-		mutex ( m1, m2, m3, m4, m5 ) {
-			assert(!insideFlag);
-			insideFlag = true;
-			assert(insideFlag);
-			insideFlag = false;
-		}
-		mutex ( m3, m1 ) {
-			assert(!insideFlag);
-			insideFlag = true;
-			assert(insideFlag);
-			insideFlag = false;
-		}
-		mutex ( m1, m2, m4 ) {
-			assert(!insideFlag);
-			insideFlag = true;
-			assert(insideFlag);
-			insideFlag = false;
-		}
-		mutex ( m1, m3, m4, m5 ) {
-			assert(!insideFlag);
-			insideFlag = true;
-			assert(insideFlag);
-			insideFlag = false;
-		}
-	}
-}
-
-single_acquisition_lock l1;
-exp_backoff_then_block_lock l2;
-owner_lock l3;
-
-monitor monitor_t {};
-
-monitor_t l4;
-
-thread T_Multi_Poly {};
-
-void main( T_Multi_Poly & this ) {
-	for (unsigned int i = 0; i < num_times; i++) {
-		refTest( l1 );
-		mutex ( l1, l4 ) {
-			assert(!insideFlag);
-			insideFlag = true;
-			assert(insideFlag);
-			insideFlag = false;
-		}
-		mutex ( l1, l2, l3 ) {
-			assert(!insideFlag);
-			insideFlag = true;
-			assert(insideFlag);
-			insideFlag = false;
-		}
-		mutex ( l3, l1, l4 ) {
-			assert(!insideFlag);
-			insideFlag = true;
-			assert(insideFlag);
-			insideFlag = false;
-		}
-		mutex ( l1, l2, l4 ) {
-			assert(!insideFlag);
-			insideFlag = true;
-			assert(insideFlag);
-			insideFlag = false;
-		}
-	}
-}
-
-int num_tasks = 10;
-int main() {
-	processor p[num_tasks - 1];
-
-	printf("Start Test: single lock mutual exclusion\n");
-	{
-		T_Mutex t[num_tasks];
-	}
-	assert(count == num_tasks * num_times);
-	printf("End Test: single lock mutual exclusion\n");
-	printf("Start Test: multi lock deadlock/mutual exclusion\n");
-	{
-		T_Multi t[num_tasks];
-	}
-	printf("End Test: multi lock deadlock/mutual exclusion\n");
-	printf("Start Test: multi polymorphic lock deadlock/mutual exclusion\n");
-	{
-		T_Multi_Poly t[num_tasks];
-	}
-	printf("End Test: multi polymorphic lock deadlock/mutual exclusion\n");
-}
Index: tests/concurrent/mutexstmt/monitors.cfa
===================================================================
--- tests/concurrent/mutexstmt/monitors.cfa	(revision 8a919cfec5f277378c3bc7e5d16717f7d44058c6)
+++ 	(revision )
@@ -1,81 +1,0 @@
-#include <monitor.hfa>
-#include <mutex_stmt.hfa>
-#include <stdio.h>
-#include <stdlib.hfa>
-#include <thread.hfa>
-
-const unsigned int num_times = 10000;
-
-monitor monitor_t {};
-
-monitor_t m1, m2, m3, m4, m5;
-
-thread T_Mutex {};
-bool insideFlag = false;
-int count = 0;
-bool startFlag = false;
-
-void main( T_Mutex & this ) {
-	for (unsigned int i = 0; i < num_times; i++) {
-		mutex ( m1 ) count++;
-		mutex ( m1 ) {
-			assert(!insideFlag);
-			insideFlag = true;
-			assert(insideFlag);
-			insideFlag = false;
-		}
-	}
-}
-
-thread T_Multi {};
-
-void main( T_Multi & this ) {
-	for (unsigned int i = 0; i < num_times; i++) {
-		mutex ( m1 ) {
-			assert(!insideFlag);
-			insideFlag = true;
-			assert(insideFlag);
-			insideFlag = false;
-		}
-		mutex ( m1, m2, m3, m4, m5 ) {
-			assert(!insideFlag);
-			insideFlag = true;
-			assert(insideFlag);
-			insideFlag = false;
-		}
-		mutex ( m3, m1 ) {
-			assert(!insideFlag);
-			insideFlag = true;
-			assert(insideFlag);
-			insideFlag = false;
-		}
-		mutex ( m1, m2, m4 ) {
-			assert(!insideFlag);
-			insideFlag = true;
-			assert(insideFlag);
-			insideFlag = false;
-		}
-		mutex ( m1, m3, m4, m5 ) {
-			assert(!insideFlag);
-			insideFlag = true;
-			assert(insideFlag);
-			insideFlag = false;
-		}
-	}
-}
-
-
-int main() {
-	processor p[10];
-
-	printf("Start Test: single monitor mutual exclusion\n");
-	{
-		T_Mutex t[10];
-	}
-	printf("End Test: single monitor mutual exclusion\n");
-	printf("Start Test: multi monitor deadlock/mutual exclusion\n");
-	{
-		T_Multi t[10];
-	}
-	printf("End Test: multi monitor deadlock/mutual exclusion\n");
-}
Index: tests/concurrent/once.cfa
===================================================================
--- tests/concurrent/once.cfa	(revision 8a919cfec5f277378c3bc7e5d16717f7d44058c6)
+++ 	(revision )
@@ -1,44 +1,0 @@
-#include <barrier.hfa>
-#include <fstream.hfa>
-#include <kernel.hfa>
-#include <once.hfa>
-#include <thread.hfa>
-
-once_flag global;
-
-volatile int check;
-
-void reset() {
-	(global){};
-	check = 0;
-}
-
-void must_once(void) {
-	int prev = __atomic_fetch_add( &check, 1, __ATOMIC_SEQ_CST );
-	if(prev != 0) {
-		abort | "'must_once' appears to have been called more than once, check was" | prev;
-	}
-}
-
-barrier barr = { 11 };
-
-thread Tester {};
-
-void main( Tester & this ) {
-	for(500) {
-		block( barr, reset );
-
-		// sometime yields
-		yield( prng(this, 3) );
-	}
-}
-
-int main() {
-	processor p[2];
-
-	sout | "starting";
-	{
-		Tester testers[11];
-	}
-	sout | "done";
-}
Index: tests/concurrent/park/.expect/contention.txt
===================================================================
--- tests/concurrent/park/.expect/contention.txt	(revision 8a919cfec5f277378c3bc7e5d16717f7d44058c6)
+++ 	(revision )
@@ -1,21 +1,0 @@
-Done
-Done
-Done
-Done
-Done
-Done
-Done
-Done
-Done
-Done
-Done
-Done
-Done
-Done
-Done
-Done
-Done
-Done
-Done
-Done
-Done Unparker
Index: tests/concurrent/park/.expect/force_preempt.txt
===================================================================
--- tests/concurrent/park/.expect/force_preempt.txt	(revision 8a919cfec5f277378c3bc7e5d16717f7d44058c6)
+++ 	(revision )
@@ -1,1 +1,0 @@
-done
Index: tests/concurrent/park/.expect/start_parked.txt
===================================================================
--- tests/concurrent/park/.expect/start_parked.txt	(revision 8a919cfec5f277378c3bc7e5d16717f7d44058c6)
+++ 	(revision )
@@ -1,1 +1,0 @@
-done
Index: tests/concurrent/park/contention.cfa
===================================================================
--- tests/concurrent/park/contention.cfa	(revision 8a919cfec5f277378c3bc7e5d16717f7d44058c6)
+++ 	(revision )
@@ -1,62 +1,0 @@
-#include <kernel.hfa>
-#include <thread.hfa>
-
-__thread drand48_data buffer = { 0 };
-int myrand() {
-	long int result;
-	lrand48_r(&buffer, &result);
-	return result;
-}
-
-
-thread Thread {};
-void ^?{}(Thread & mutex this) {}
-
-enum Constants { blocked_size = 20 };
-Thread * volatile blocked[blocked_size];
-
-void main( Thread & this ) {
-	for(int i = 0; i < 1000; i++) {
-		int idx = myrand() % blocked_size;
-		if(blocked[idx]) {
-			Thread * thrd = __atomic_exchange_n(&blocked[idx], 0p, __ATOMIC_SEQ_CST);
-			unpark( *thrd );
-		} else {
-			Thread * thrd = __atomic_exchange_n(&blocked[idx], &this, __ATOMIC_SEQ_CST);
-			unpark( *thrd );
-			park();
-		}
-	}
-	printf("Done\n");
-}
-
-// Extra thread to avoid deadlocking
-thread Unparker {};
-
-void main( Unparker & this ) {
-	while(true) {
-		waitfor( ^?{} : this ) {
-			break;
-		} or else {
-			int idx = myrand() % blocked_size;
-			Thread * thrd = __atomic_exchange_n(&blocked[idx], 0p, __ATOMIC_SEQ_CST);
-			unpark( *thrd );
-			yield( myrand() % 20 );
-		}
-	}
-	printf("Done Unparker\n");
-}
-
-
-int main() {
-	for(i ; blocked_size) {
-		blocked[i] = 0p;
-	}
-
-	processor p[3];
-
-	Unparker u;
-	{
-		Thread t[20];
-	}
-}
Index: tests/concurrent/park/force_preempt.cfa
===================================================================
--- tests/concurrent/park/force_preempt.cfa	(revision 8a919cfec5f277378c3bc7e5d16717f7d44058c6)
+++ 	(revision )
@@ -1,60 +1,0 @@
-#include <thread.hfa>
-#include <fstream.hfa>
-
-volatile int global = 0;
-
-thread Poller {};
-void main(Poller & this) {
-	while(true) {
-		waitfor( ^?{} : this ) {
-			break;
-		} or else {
-			global = (global + 1) % 10;
-			yield();
-		}
-	}
-}
-
-thread Waiter {};
-
-volatile int count = 0;
-
-void main(Waiter & this) {
-	// Get a unique id
-	int id = __atomic_fetch_add(&count, 1, __ATOMIC_SEQ_CST);
-	int id_hash = id | (id << 8) | (id << 16) | (id << 24);
-	int mask = 0xCAFEBABA;
-
-	for(int i = 0; i < 5; i++) {
-		assert(mask == 0xCAFEBABA);
-
-		// Unpark this thread, don't force a yield
-		unpark( this );
-		assert(mask == 0xCAFEBABA);
-
-		// Hash the mask to make sure no one else messes with them
-		mask ^= id_hash;
-		assert(mask == (id_hash ^ 0xCAFEBABA));
-
-		// Force a preemption before the call to park
-		int prev = global;
-		while(prev == global) {}
-
-		// Park this thread,
-		assert(mask == (id_hash ^ 0xCAFEBABA));
-		park();
-		assert(mask == (id_hash ^ 0xCAFEBABA));
-
-		// Reset the hash and recheck it
-		mask ^= id_hash;
-		assert(mask == 0xCAFEBABA);
-	}
-}
-
-int main() {
-	Poller p;
-	{
-		Waiter waiters[5];
-	}
-	printf( "done\n" );				// non-empty .expect file
-}
Index: tests/concurrent/park/start_parked.cfa
===================================================================
--- tests/concurrent/park/start_parked.cfa	(revision 8a919cfec5f277378c3bc7e5d16717f7d44058c6)
+++ 	(revision )
@@ -1,14 +1,0 @@
-#include <thread.hfa>
-
-thread Parker {};
-void main( Parker & ) {
-	park();
-}
-
-int main() {
-	for(1000) {
-		Parker parker;
-		unpark( parker );
-	}
-	printf( "done\n" );									// non-empty .expect file
-}
Index: tests/concurrent/preempt.cfa
===================================================================
--- tests/concurrent/preempt.cfa	(revision 8a919cfec5f277378c3bc7e5d16717f7d44058c6)
+++ 	(revision )
@@ -1,92 +1,0 @@
-#include <clock.hfa>
-#include <fstream.hfa>
-#include <kernel.hfa>
-#include <thread.hfa>
-#include <time.hfa>
-
-#include "long_tests.hfa"
-
-#ifndef PREEMPTION_RATE
-#define PREEMPTION_RATE 10`ms
-#endif
-
-Duration default_preemption() {
-	return PREEMPTION_RATE;
-}
-
-#ifdef TEST_LONG
-static const unsigned long N = 30_000ul;
-#else
-static const unsigned long N = 500ul;
-#endif
-
-extern void __cfaabi_check_preemption();
-
-static struct {
-	volatile int counter;
-	volatile Time prev;
-	Duration durations[6];
-} globals;
-
-thread worker_t {
-	int value;
-	unsigned long long spin;
-};
-
-void ?{}( worker_t & this, int value ) {
-	this.value = value;
-	this.spin = 0;
-}
-
-void main(worker_t & this) {
-	while(TEST(globals.counter < N)) {
-		if(this.spin > 50_000_000_000) abort | "Worker" | this.value | "has been spinning too long! (" | this.spin | ")";
-		__cfaabi_check_preemption();
-		if( (globals.counter % 7) == this.value ) {
-			__cfaabi_check_preemption();
-			#if !defined(TEST_LONG)
-				Time now = timeHiRes();
-				Duration diff = now - globals.prev;
-				globals.prev = now;
-			#endif
-			int next = __atomic_add_fetch( &globals.counter, 1, __ATOMIC_SEQ_CST );
-			__cfaabi_check_preemption();
-			if( (next % 100) == 0 ) {
-				#if !defined(TEST_LONG)
-					unsigned idx = next / 100;
-					if (idx >= 6) abort | "Idx from next is invalid: " | idx | "vs" | next;
-					globals.durations[idx] = diff;
-					if(diff > 12`s) serr | "Duration suspiciously large:" | diff;
-				#endif
-				printf("%d\n", (int)next);
-
-			}
-			__cfaabi_check_preemption();
-			this.spin = 0;
-		}
-		__cfaabi_check_preemption();
-		KICK_WATCHDOG;
-		this.spin++;
-	}
-}
-
-int main(int argc, char* argv[]) {
-	processor p;
-	globals.counter = 0;
-	globals.durations[0] = 0;
-	globals.durations[1] = 0;
-	globals.durations[2] = 0;
-	globals.durations[3] = 0;
-	globals.durations[4] = 0;
-	globals.durations[5] = 0;
-	{
-		globals.prev = timeHiRes();
-		worker_t w0 = 0;
-		worker_t w1 = 1;
-		worker_t w2 = 2;
-		worker_t w3 = 3;
-		worker_t w4 = 4;
-		worker_t w5 = 5;
-		worker_t w6 = 6;
-	}
-}
Index: tests/concurrent/preempt2.cfa
===================================================================
--- tests/concurrent/preempt2.cfa	(revision 8a919cfec5f277378c3bc7e5d16717f7d44058c6)
+++ 	(revision )
@@ -1,50 +1,0 @@
-#include <fstream.hfa>
-#include <thread.hfa>
-#include <time.hfa>
-
-#include "long_tests.hfa"
-
-#ifndef PREEMPTION_RATE
-#define PREEMPTION_RATE 10`ms
-#endif
-
-Duration default_preemption() {
-	return PREEMPTION_RATE;
-}
-
-#ifdef TEST_LONG
-static const unsigned long N = 30_000ul;
-#else
-static const unsigned long N = 500ul;
-#endif
-
-extern void __cfaabi_check_preemption();
-
-static struct {
-	volatile int x;
-	volatile int y;
-} globals;
-
-thread T1 {};
-void main(T1 &) {
-	for() {
-		if ( globals.x == N ) break;
-		if ( globals.x < globals.y ) globals.x += 1;
-	}
-}
-
-thread T2 {};
-void main(T2 &) {
-	for() {
-		if ( globals.y == N ) break;
-		if ( globals.y == globals.x ) globals.y += 1;
-	}
-}
-
-int main() {
-	{
-		T1 t1;
-		T2 t2;
-	}
-	sout | "Done";
-} // main
Index: tests/concurrent/pthread/.expect/bounded_buffer.x64.txt
===================================================================
--- tests/concurrent/pthread/.expect/bounded_buffer.x64.txt	(revision 8a919cfec5f277378c3bc7e5d16717f7d44058c6)
+++ 	(revision )
@@ -1,2 +1,0 @@
-producer total value is 39780
-consumer total value is 39780
Index: tests/concurrent/pthread/.expect/bounded_buffer.x86.txt
===================================================================
--- tests/concurrent/pthread/.expect/bounded_buffer.x86.txt	(revision 8a919cfec5f277378c3bc7e5d16717f7d44058c6)
+++ 	(revision )
@@ -1,2 +1,0 @@
-producer total value is 1770
-consumer total value is 1770
Index: tests/concurrent/pthread/.expect/pthread_attr_test.txt
===================================================================
--- tests/concurrent/pthread/.expect/pthread_attr_test.txt	(revision 8a919cfec5f277378c3bc7e5d16717f7d44058c6)
+++ 	(revision )
@@ -1,1 +1,0 @@
-stack size is 123456789
Index: tests/concurrent/pthread/.expect/pthread_cond_test.txt
===================================================================
--- tests/concurrent/pthread/.expect/pthread_cond_test.txt	(revision 8a919cfec5f277378c3bc7e5d16717f7d44058c6)
+++ 	(revision )
@@ -1,1001 +1,0 @@
-S1 done 0
-S1 done 1
-S1 done 2
-S1 done 3
-S1 done 4
-S1 done 5
-S1 done 6
-S1 done 7
-S1 done 8
-S1 done 9
-S1 done 10
-S1 done 11
-S1 done 12
-S1 done 13
-S1 done 14
-S1 done 15
-S1 done 16
-S1 done 17
-S1 done 18
-S1 done 19
-S1 done 20
-S1 done 21
-S1 done 22
-S1 done 23
-S1 done 24
-S1 done 25
-S1 done 26
-S1 done 27
-S1 done 28
-S1 done 29
-S1 done 30
-S1 done 31
-S1 done 32
-S1 done 33
-S1 done 34
-S1 done 35
-S1 done 36
-S1 done 37
-S1 done 38
-S1 done 39
-S1 done 40
-S1 done 41
-S1 done 42
-S1 done 43
-S1 done 44
-S1 done 45
-S1 done 46
-S1 done 47
-S1 done 48
-S1 done 49
-S1 done 50
-S1 done 51
-S1 done 52
-S1 done 53
-S1 done 54
-S1 done 55
-S1 done 56
-S1 done 57
-S1 done 58
-S1 done 59
-S1 done 60
-S1 done 61
-S1 done 62
-S1 done 63
-S1 done 64
-S1 done 65
-S1 done 66
-S1 done 67
-S1 done 68
-S1 done 69
-S1 done 70
-S1 done 71
-S1 done 72
-S1 done 73
-S1 done 74
-S1 done 75
-S1 done 76
-S1 done 77
-S1 done 78
-S1 done 79
-S1 done 80
-S1 done 81
-S1 done 82
-S1 done 83
-S1 done 84
-S1 done 85
-S1 done 86
-S1 done 87
-S1 done 88
-S1 done 89
-S1 done 90
-S1 done 91
-S1 done 92
-S1 done 93
-S1 done 94
-S1 done 95
-S1 done 96
-S1 done 97
-S1 done 98
-S1 done 99
-S1 done 100
-S1 done 101
-S1 done 102
-S1 done 103
-S1 done 104
-S1 done 105
-S1 done 106
-S1 done 107
-S1 done 108
-S1 done 109
-S1 done 110
-S1 done 111
-S1 done 112
-S1 done 113
-S1 done 114
-S1 done 115
-S1 done 116
-S1 done 117
-S1 done 118
-S1 done 119
-S1 done 120
-S1 done 121
-S1 done 122
-S1 done 123
-S1 done 124
-S1 done 125
-S1 done 126
-S1 done 127
-S1 done 128
-S1 done 129
-S1 done 130
-S1 done 131
-S1 done 132
-S1 done 133
-S1 done 134
-S1 done 135
-S1 done 136
-S1 done 137
-S1 done 138
-S1 done 139
-S1 done 140
-S1 done 141
-S1 done 142
-S1 done 143
-S1 done 144
-S1 done 145
-S1 done 146
-S1 done 147
-S1 done 148
-S1 done 149
-S1 done 150
-S1 done 151
-S1 done 152
-S1 done 153
-S1 done 154
-S1 done 155
-S1 done 156
-S1 done 157
-S1 done 158
-S1 done 159
-S1 done 160
-S1 done 161
-S1 done 162
-S1 done 163
-S1 done 164
-S1 done 165
-S1 done 166
-S1 done 167
-S1 done 168
-S1 done 169
-S1 done 170
-S1 done 171
-S1 done 172
-S1 done 173
-S1 done 174
-S1 done 175
-S1 done 176
-S1 done 177
-S1 done 178
-S1 done 179
-S1 done 180
-S1 done 181
-S1 done 182
-S1 done 183
-S1 done 184
-S1 done 185
-S1 done 186
-S1 done 187
-S1 done 188
-S1 done 189
-S1 done 190
-S1 done 191
-S1 done 192
-S1 done 193
-S1 done 194
-S1 done 195
-S1 done 196
-S1 done 197
-S1 done 198
-S1 done 199
-S1 done 200
-S1 done 201
-S1 done 202
-S1 done 203
-S1 done 204
-S1 done 205
-S1 done 206
-S1 done 207
-S1 done 208
-S1 done 209
-S1 done 210
-S1 done 211
-S1 done 212
-S1 done 213
-S1 done 214
-S1 done 215
-S1 done 216
-S1 done 217
-S1 done 218
-S1 done 219
-S1 done 220
-S1 done 221
-S1 done 222
-S1 done 223
-S1 done 224
-S1 done 225
-S1 done 226
-S1 done 227
-S1 done 228
-S1 done 229
-S1 done 230
-S1 done 231
-S1 done 232
-S1 done 233
-S1 done 234
-S1 done 235
-S1 done 236
-S1 done 237
-S1 done 238
-S1 done 239
-S1 done 240
-S1 done 241
-S1 done 242
-S1 done 243
-S1 done 244
-S1 done 245
-S1 done 246
-S1 done 247
-S1 done 248
-S1 done 249
-S1 done 250
-S1 done 251
-S1 done 252
-S1 done 253
-S1 done 254
-S1 done 255
-S1 done 256
-S1 done 257
-S1 done 258
-S1 done 259
-S1 done 260
-S1 done 261
-S1 done 262
-S1 done 263
-S1 done 264
-S1 done 265
-S1 done 266
-S1 done 267
-S1 done 268
-S1 done 269
-S1 done 270
-S1 done 271
-S1 done 272
-S1 done 273
-S1 done 274
-S1 done 275
-S1 done 276
-S1 done 277
-S1 done 278
-S1 done 279
-S1 done 280
-S1 done 281
-S1 done 282
-S1 done 283
-S1 done 284
-S1 done 285
-S1 done 286
-S1 done 287
-S1 done 288
-S1 done 289
-S1 done 290
-S1 done 291
-S1 done 292
-S1 done 293
-S1 done 294
-S1 done 295
-S1 done 296
-S1 done 297
-S1 done 298
-S1 done 299
-S1 done 300
-S1 done 301
-S1 done 302
-S1 done 303
-S1 done 304
-S1 done 305
-S1 done 306
-S1 done 307
-S1 done 308
-S1 done 309
-S1 done 310
-S1 done 311
-S1 done 312
-S1 done 313
-S1 done 314
-S1 done 315
-S1 done 316
-S1 done 317
-S1 done 318
-S1 done 319
-S1 done 320
-S1 done 321
-S1 done 322
-S1 done 323
-S1 done 324
-S1 done 325
-S1 done 326
-S1 done 327
-S1 done 328
-S1 done 329
-S1 done 330
-S1 done 331
-S1 done 332
-S1 done 333
-S1 done 334
-S1 done 335
-S1 done 336
-S1 done 337
-S1 done 338
-S1 done 339
-S1 done 340
-S1 done 341
-S1 done 342
-S1 done 343
-S1 done 344
-S1 done 345
-S1 done 346
-S1 done 347
-S1 done 348
-S1 done 349
-S1 done 350
-S1 done 351
-S1 done 352
-S1 done 353
-S1 done 354
-S1 done 355
-S1 done 356
-S1 done 357
-S1 done 358
-S1 done 359
-S1 done 360
-S1 done 361
-S1 done 362
-S1 done 363
-S1 done 364
-S1 done 365
-S1 done 366
-S1 done 367
-S1 done 368
-S1 done 369
-S1 done 370
-S1 done 371
-S1 done 372
-S1 done 373
-S1 done 374
-S1 done 375
-S1 done 376
-S1 done 377
-S1 done 378
-S1 done 379
-S1 done 380
-S1 done 381
-S1 done 382
-S1 done 383
-S1 done 384
-S1 done 385
-S1 done 386
-S1 done 387
-S1 done 388
-S1 done 389
-S1 done 390
-S1 done 391
-S1 done 392
-S1 done 393
-S1 done 394
-S1 done 395
-S1 done 396
-S1 done 397
-S1 done 398
-S1 done 399
-S1 done 400
-S1 done 401
-S1 done 402
-S1 done 403
-S1 done 404
-S1 done 405
-S1 done 406
-S1 done 407
-S1 done 408
-S1 done 409
-S1 done 410
-S1 done 411
-S1 done 412
-S1 done 413
-S1 done 414
-S1 done 415
-S1 done 416
-S1 done 417
-S1 done 418
-S1 done 419
-S1 done 420
-S1 done 421
-S1 done 422
-S1 done 423
-S1 done 424
-S1 done 425
-S1 done 426
-S1 done 427
-S1 done 428
-S1 done 429
-S1 done 430
-S1 done 431
-S1 done 432
-S1 done 433
-S1 done 434
-S1 done 435
-S1 done 436
-S1 done 437
-S1 done 438
-S1 done 439
-S1 done 440
-S1 done 441
-S1 done 442
-S1 done 443
-S1 done 444
-S1 done 445
-S1 done 446
-S1 done 447
-S1 done 448
-S1 done 449
-S1 done 450
-S1 done 451
-S1 done 452
-S1 done 453
-S1 done 454
-S1 done 455
-S1 done 456
-S1 done 457
-S1 done 458
-S1 done 459
-S1 done 460
-S1 done 461
-S1 done 462
-S1 done 463
-S1 done 464
-S1 done 465
-S1 done 466
-S1 done 467
-S1 done 468
-S1 done 469
-S1 done 470
-S1 done 471
-S1 done 472
-S1 done 473
-S1 done 474
-S1 done 475
-S1 done 476
-S1 done 477
-S1 done 478
-S1 done 479
-S1 done 480
-S1 done 481
-S1 done 482
-S1 done 483
-S1 done 484
-S1 done 485
-S1 done 486
-S1 done 487
-S1 done 488
-S1 done 489
-S1 done 490
-S1 done 491
-S1 done 492
-S1 done 493
-S1 done 494
-S1 done 495
-S1 done 496
-S1 done 497
-S1 done 498
-S1 done 499
-S1 done 500
-S1 done 501
-S1 done 502
-S1 done 503
-S1 done 504
-S1 done 505
-S1 done 506
-S1 done 507
-S1 done 508
-S1 done 509
-S1 done 510
-S1 done 511
-S1 done 512
-S1 done 513
-S1 done 514
-S1 done 515
-S1 done 516
-S1 done 517
-S1 done 518
-S1 done 519
-S1 done 520
-S1 done 521
-S1 done 522
-S1 done 523
-S1 done 524
-S1 done 525
-S1 done 526
-S1 done 527
-S1 done 528
-S1 done 529
-S1 done 530
-S1 done 531
-S1 done 532
-S1 done 533
-S1 done 534
-S1 done 535
-S1 done 536
-S1 done 537
-S1 done 538
-S1 done 539
-S1 done 540
-S1 done 541
-S1 done 542
-S1 done 543
-S1 done 544
-S1 done 545
-S1 done 546
-S1 done 547
-S1 done 548
-S1 done 549
-S1 done 550
-S1 done 551
-S1 done 552
-S1 done 553
-S1 done 554
-S1 done 555
-S1 done 556
-S1 done 557
-S1 done 558
-S1 done 559
-S1 done 560
-S1 done 561
-S1 done 562
-S1 done 563
-S1 done 564
-S1 done 565
-S1 done 566
-S1 done 567
-S1 done 568
-S1 done 569
-S1 done 570
-S1 done 571
-S1 done 572
-S1 done 573
-S1 done 574
-S1 done 575
-S1 done 576
-S1 done 577
-S1 done 578
-S1 done 579
-S1 done 580
-S1 done 581
-S1 done 582
-S1 done 583
-S1 done 584
-S1 done 585
-S1 done 586
-S1 done 587
-S1 done 588
-S1 done 589
-S1 done 590
-S1 done 591
-S1 done 592
-S1 done 593
-S1 done 594
-S1 done 595
-S1 done 596
-S1 done 597
-S1 done 598
-S1 done 599
-S1 done 600
-S1 done 601
-S1 done 602
-S1 done 603
-S1 done 604
-S1 done 605
-S1 done 606
-S1 done 607
-S1 done 608
-S1 done 609
-S1 done 610
-S1 done 611
-S1 done 612
-S1 done 613
-S1 done 614
-S1 done 615
-S1 done 616
-S1 done 617
-S1 done 618
-S1 done 619
-S1 done 620
-S1 done 621
-S1 done 622
-S1 done 623
-S1 done 624
-S1 done 625
-S1 done 626
-S1 done 627
-S1 done 628
-S1 done 629
-S1 done 630
-S1 done 631
-S1 done 632
-S1 done 633
-S1 done 634
-S1 done 635
-S1 done 636
-S1 done 637
-S1 done 638
-S1 done 639
-S1 done 640
-S1 done 641
-S1 done 642
-S1 done 643
-S1 done 644
-S1 done 645
-S1 done 646
-S1 done 647
-S1 done 648
-S1 done 649
-S1 done 650
-S1 done 651
-S1 done 652
-S1 done 653
-S1 done 654
-S1 done 655
-S1 done 656
-S1 done 657
-S1 done 658
-S1 done 659
-S1 done 660
-S1 done 661
-S1 done 662
-S1 done 663
-S1 done 664
-S1 done 665
-S1 done 666
-S1 done 667
-S1 done 668
-S1 done 669
-S1 done 670
-S1 done 671
-S1 done 672
-S1 done 673
-S1 done 674
-S1 done 675
-S1 done 676
-S1 done 677
-S1 done 678
-S1 done 679
-S1 done 680
-S1 done 681
-S1 done 682
-S1 done 683
-S1 done 684
-S1 done 685
-S1 done 686
-S1 done 687
-S1 done 688
-S1 done 689
-S1 done 690
-S1 done 691
-S1 done 692
-S1 done 693
-S1 done 694
-S1 done 695
-S1 done 696
-S1 done 697
-S1 done 698
-S1 done 699
-S1 done 700
-S1 done 701
-S1 done 702
-S1 done 703
-S1 done 704
-S1 done 705
-S1 done 706
-S1 done 707
-S1 done 708
-S1 done 709
-S1 done 710
-S1 done 711
-S1 done 712
-S1 done 713
-S1 done 714
-S1 done 715
-S1 done 716
-S1 done 717
-S1 done 718
-S1 done 719
-S1 done 720
-S1 done 721
-S1 done 722
-S1 done 723
-S1 done 724
-S1 done 725
-S1 done 726
-S1 done 727
-S1 done 728
-S1 done 729
-S1 done 730
-S1 done 731
-S1 done 732
-S1 done 733
-S1 done 734
-S1 done 735
-S1 done 736
-S1 done 737
-S1 done 738
-S1 done 739
-S1 done 740
-S1 done 741
-S1 done 742
-S1 done 743
-S1 done 744
-S1 done 745
-S1 done 746
-S1 done 747
-S1 done 748
-S1 done 749
-S1 done 750
-S1 done 751
-S1 done 752
-S1 done 753
-S1 done 754
-S1 done 755
-S1 done 756
-S1 done 757
-S1 done 758
-S1 done 759
-S1 done 760
-S1 done 761
-S1 done 762
-S1 done 763
-S1 done 764
-S1 done 765
-S1 done 766
-S1 done 767
-S1 done 768
-S1 done 769
-S1 done 770
-S1 done 771
-S1 done 772
-S1 done 773
-S1 done 774
-S1 done 775
-S1 done 776
-S1 done 777
-S1 done 778
-S1 done 779
-S1 done 780
-S1 done 781
-S1 done 782
-S1 done 783
-S1 done 784
-S1 done 785
-S1 done 786
-S1 done 787
-S1 done 788
-S1 done 789
-S1 done 790
-S1 done 791
-S1 done 792
-S1 done 793
-S1 done 794
-S1 done 795
-S1 done 796
-S1 done 797
-S1 done 798
-S1 done 799
-S1 done 800
-S1 done 801
-S1 done 802
-S1 done 803
-S1 done 804
-S1 done 805
-S1 done 806
-S1 done 807
-S1 done 808
-S1 done 809
-S1 done 810
-S1 done 811
-S1 done 812
-S1 done 813
-S1 done 814
-S1 done 815
-S1 done 816
-S1 done 817
-S1 done 818
-S1 done 819
-S1 done 820
-S1 done 821
-S1 done 822
-S1 done 823
-S1 done 824
-S1 done 825
-S1 done 826
-S1 done 827
-S1 done 828
-S1 done 829
-S1 done 830
-S1 done 831
-S1 done 832
-S1 done 833
-S1 done 834
-S1 done 835
-S1 done 836
-S1 done 837
-S1 done 838
-S1 done 839
-S1 done 840
-S1 done 841
-S1 done 842
-S1 done 843
-S1 done 844
-S1 done 845
-S1 done 846
-S1 done 847
-S1 done 848
-S1 done 849
-S1 done 850
-S1 done 851
-S1 done 852
-S1 done 853
-S1 done 854
-S1 done 855
-S1 done 856
-S1 done 857
-S1 done 858
-S1 done 859
-S1 done 860
-S1 done 861
-S1 done 862
-S1 done 863
-S1 done 864
-S1 done 865
-S1 done 866
-S1 done 867
-S1 done 868
-S1 done 869
-S1 done 870
-S1 done 871
-S1 done 872
-S1 done 873
-S1 done 874
-S1 done 875
-S1 done 876
-S1 done 877
-S1 done 878
-S1 done 879
-S1 done 880
-S1 done 881
-S1 done 882
-S1 done 883
-S1 done 884
-S1 done 885
-S1 done 886
-S1 done 887
-S1 done 888
-S1 done 889
-S1 done 890
-S1 done 891
-S1 done 892
-S1 done 893
-S1 done 894
-S1 done 895
-S1 done 896
-S1 done 897
-S1 done 898
-S1 done 899
-S1 done 900
-S1 done 901
-S1 done 902
-S1 done 903
-S1 done 904
-S1 done 905
-S1 done 906
-S1 done 907
-S1 done 908
-S1 done 909
-S1 done 910
-S1 done 911
-S1 done 912
-S1 done 913
-S1 done 914
-S1 done 915
-S1 done 916
-S1 done 917
-S1 done 918
-S1 done 919
-S1 done 920
-S1 done 921
-S1 done 922
-S1 done 923
-S1 done 924
-S1 done 925
-S1 done 926
-S1 done 927
-S1 done 928
-S1 done 929
-S1 done 930
-S1 done 931
-S1 done 932
-S1 done 933
-S1 done 934
-S1 done 935
-S1 done 936
-S1 done 937
-S1 done 938
-S1 done 939
-S1 done 940
-S1 done 941
-S1 done 942
-S1 done 943
-S1 done 944
-S1 done 945
-S1 done 946
-S1 done 947
-S1 done 948
-S1 done 949
-S1 done 950
-S1 done 951
-S1 done 952
-S1 done 953
-S1 done 954
-S1 done 955
-S1 done 956
-S1 done 957
-S1 done 958
-S1 done 959
-S1 done 960
-S1 done 961
-S1 done 962
-S1 done 963
-S1 done 964
-S1 done 965
-S1 done 966
-S1 done 967
-S1 done 968
-S1 done 969
-S1 done 970
-S1 done 971
-S1 done 972
-S1 done 973
-S1 done 974
-S1 done 975
-S1 done 976
-S1 done 977
-S1 done 978
-S1 done 979
-S1 done 980
-S1 done 981
-S1 done 982
-S1 done 983
-S1 done 984
-S1 done 985
-S1 done 986
-S1 done 987
-S1 done 988
-S1 done 989
-S1 done 990
-S1 done 991
-S1 done 992
-S1 done 993
-S1 done 994
-S1 done 995
-S1 done 996
-S1 done 997
-S1 done 998
-S1 done 999
-S2 statement done!
Index: tests/concurrent/pthread/.expect/pthread_demo_create_join.txt
===================================================================
--- tests/concurrent/pthread/.expect/pthread_demo_create_join.txt	(revision 8a919cfec5f277378c3bc7e5d16717f7d44058c6)
+++ 	(revision )
@@ -1,1 +1,0 @@
-final res is 190
Index: tests/concurrent/pthread/.expect/pthread_demo_lock.txt
===================================================================
--- tests/concurrent/pthread/.expect/pthread_demo_lock.txt	(revision 8a919cfec5f277378c3bc7e5d16717f7d44058c6)
+++ 	(revision )
@@ -1,6 +1,0 @@
-lock res is 2000000000
-in trylocktest1 res1 is 0
-in trylocktest1 res2 is 0
-in trylocktest2 res1 is 16
-in trylocktest2 res2 is 16
-cnt_trylock is 200000000
Index: tests/concurrent/pthread/.expect/pthread_key_test.txt
===================================================================
--- tests/concurrent/pthread/.expect/pthread_key_test.txt	(revision 8a919cfec5f277378c3bc7e5d16717f7d44058c6)
+++ 	(revision )
@@ -1,6 +1,0 @@
-Destructor function invoked
-Destructor function invoked
-Destructor function invoked
-Destructor function invoked
-Destructor function invoked
-total value is 207, total value by pthread_getspecific is 207
Index: tests/concurrent/pthread/.expect/pthread_once_test.txt
===================================================================
--- tests/concurrent/pthread/.expect/pthread_once_test.txt	(revision 8a919cfec5f277378c3bc7e5d16717f7d44058c6)
+++ 	(revision )
@@ -1,1 +1,0 @@
-in once_fn
Index: tests/concurrent/pthread/bounded_buffer.cfa
===================================================================
--- tests/concurrent/pthread/bounded_buffer.cfa	(revision 8a919cfec5f277378c3bc7e5d16717f7d44058c6)
+++ 	(revision )
@@ -1,156 +1,0 @@
-#include <stdlib.h>										// prototype: rand
-#include <fstream.hfa>
-#include <thread.hfa>
-#include <pthread.h>
-#include <errno.h>
-// tested pthread mutex related routines, pthread cond related routines
-// tested pthread_create/join
-
-enum { BufferSize = 50 };
-
-volatile int producer_val_total;
-volatile int consumer_val_total;
-
-pthread_mutex_t producer_cnt_lock, consumer_cnt_lock;
-
-
-forall( T ){
-    struct Buffer
-    {
-        int front, back, count;
-		T elements[BufferSize];
-        pthread_mutex_t _mutex;
-	    pthread_cond_t Full, Empty;							// waiting consumers & producers
-    };
-
-    void ?{}( Buffer(T) & buffer ) with( buffer ) {
-         [front, back, count] = 0; 
-         pthread_mutex_init(&_mutex, NULL);
-         pthread_cond_init(&Full, NULL);
-         pthread_cond_init(&Empty, NULL);
-    }
-
-    void ^?{}( Buffer(T) & buffer ) with( buffer ){
-        pthread_mutex_destroy(&_mutex);
-        pthread_cond_destroy(&Full);
-        pthread_cond_destroy(&Empty);
-    }
-
-    int query( Buffer(T) & buffer ) { return buffer.count; } // read-only, no mutual exclusion
-    
-    void insert( Buffer(T) & buffer, T elem ) with(buffer) {
-		pthread_mutex_lock(&_mutex);
-		while ( count == 20 ) pthread_cond_wait( &Empty, &_mutex ); // block producer
-		elements[back] = elem;
-		back = ( back + 1 ) % 20;
-		count += 1;
-		pthread_cond_signal( &Full );					// unblock consumer
-        pthread_mutex_unlock(&_mutex);
-	}
-
-    T remove(Buffer(T) & buffer) with(buffer) {
-		pthread_mutex_lock(&_mutex);
-		while ( count == 0 ) pthread_cond_wait( &Full, &_mutex ); // block consumer
-		T elem = elements[front];
-		front = ( front + 1 ) % 20;
-		count -= 1;
-		pthread_cond_signal( &Empty );					// unblock producer
-        pthread_mutex_unlock(&_mutex);
-		return elem;
-	}
-
-}
-
-void *producer( void *arg ) {
-    Buffer(int) &buf = *(Buffer(int)*)arg;
-	const int NoOfItems = prng(*active_thread(), 40);
-	int item;
-	for ( int i = 1; i <= NoOfItems; i += 1 ) {			// produce a bunch of items
-		item = prng(*active_thread(), 1, 101);			// produce a random number
-		//sout | "Producer:" | pthread_self() | " value:" | item;
-		insert( buf,item );								// insert element into queue
-        pthread_mutex_lock(&producer_cnt_lock);
-        producer_val_total += item;
-        pthread_mutex_unlock(&producer_cnt_lock);
-	} // for
-	//sout | "Producer:" | pthread_self() | " is finished";
-	return NULL;
-} // producer
-
-void *consumer( void *arg ) {
-	Buffer(int) &buf = *(Buffer(int) *)arg;
-	int item;
-	for ( ;; ) {										// consume until a negative element appears
-		item = remove(buf);							// remove from front of queue
-		//sout | "Consumer:" | pthread_self() | " value:" | item;
-	  if ( item == -1 ) break;
-        pthread_mutex_lock(&consumer_cnt_lock);
-        consumer_val_total += item;
-        pthread_mutex_unlock(&consumer_cnt_lock);
-	} // for
-	//sout | "Consumer:" | pthread_self() | " is finished";
-	return NULL;
-} // consumer
-
-int main() {
-	const int NoOfCons = 20, NoOfProds = 30;
-	Buffer(int) buf;								// create a buffer monitor
-	pthread_t cons[NoOfCons];							// pointer to an array of consumers
-	pthread_t prods[NoOfProds];							// pointer to an array of producers
-    pthread_mutex_init(&producer_cnt_lock, NULL);
-    pthread_mutex_init(&consumer_cnt_lock, NULL);
-	// parallelism
-    set_seed( 1003 );
-
-	processor p[5];
-    {
-        // create/join and mutex/condition test
-        //sout | "create/join and mutex/condition test";
-        for ( int i = 0; i < NoOfCons; i += 1 ) {			// create consumers
-            if ( pthread_create( &cons[i], NULL, consumer, (void*)&buf ) != 0 ) {
-                sout | "create thread failure, errno:" | errno;
-                exit( EXIT_FAILURE );
-            } // if
-        } // for
-        for ( int i = 0; i < NoOfProds; i += 1 ) {			// 	create producers
-            if ( pthread_create( &prods[i], NULL, producer, (void*)&buf ) != 0 ) {
-                sout | "create thread failure";
-                exit( EXIT_FAILURE );
-            } // if
-        } // for
-
-        void *result;
-        for ( int i = 0; i < NoOfProds; i += 1 ) {			// wait for producers to end
-            if ( pthread_join( prods[i], &result ) != 0 ) {
-                sout | " producers join thread failure";
-                exit( EXIT_FAILURE );
-            } // if
-            if ( (uint64_t)result != 0 ) {
-                sout | "producers" | prods[i] |" bad return value " | result;
-                exit( EXIT_FAILURE );
-            } // if
-            //sout | "join prods[" | i | "]:" | prods[i] | " result:" | result;
-        } // for
-
-        for ( int i = 0; i < NoOfCons; i += 1 ) {			// terminate each consumer
-            insert(buf, -1 );
-        } // for
-
-        for ( int i = 0; i < NoOfCons; i += 1 ) {			// wait for consumer to end
-            if ( pthread_join( cons[i], &result ) != 0 ) {
-                sout| "consumers join thread failure" ;
-                exit( EXIT_FAILURE );
-            } // if
-            if ( (uint64_t)result != 0 ) {
-                sout| "consumers bad return value" | result;
-                exit( EXIT_FAILURE );
-            } // if
-        } // for
-        sout | "producer total value is " | producer_val_total;
-        sout | "consumer total value is " | consumer_val_total;
-    }
-
-	
-
-	
-}
Index: tests/concurrent/pthread/pthread_attr_test.cfa
===================================================================
--- tests/concurrent/pthread/pthread_attr_test.cfa	(revision 8a919cfec5f277378c3bc7e5d16717f7d44058c6)
+++ 	(revision )
@@ -1,29 +1,0 @@
-/* test attr init; set stack; get stack */
-
-#include <fstream.hfa>
-#include <thread.hfa>
-
-void* foo(void* _attr){
-    size_t size;
-    pthread_attr_t* attr = (pthread_attr_t*)_attr;
-    int status = pthread_attr_getstacksize(attr, &size);
-    if (status != 0){
-        sout | "error return code";
-        exit(1);
-    }
-    sout | "stack size is " | size;
-    return NULL;
-}
-
-int main(int argc, char const *argv[])
-{
-    pthread_attr_t attr;
-    pthread_attr_init(&attr);
-    pthread_attr_setstacksize(&attr, 123456789);
-    pthread_t thr;
-    void* res;
-    pthread_create(&thr, &attr, foo, (void*)&attr);
-    pthread_join(thr, &res);
-    pthread_attr_destroy(&attr);
-    return 0;
-}
Index: tests/concurrent/pthread/pthread_cond_test.cfa
===================================================================
--- tests/concurrent/pthread/pthread_cond_test.cfa	(revision 8a919cfec5f277378c3bc7e5d16717f7d44058c6)
+++ 	(revision )
@@ -1,46 +1,0 @@
-/* small test of pthread cond */
-
-#include <fstream.hfa>
-#include <thread.hfa>
-#include <pthread.h>
-
-int done_flag = 0;
-pthread_mutex_t _mutex;
-pthread_cond_t cond;
-
-extern "C"{
-    void* S1(void* arg){
-        pthread_mutex_lock(&_mutex);
-        for (int i = 0; i < 1000; i++) sout | "S1 done " | i;
-        done_flag = 1;
-        pthread_mutex_unlock(&_mutex);
-        pthread_cond_signal(&cond);
-        return NULL;
-    }
-
-    void* S2(void* arg){
-        pthread_mutex_lock(&_mutex);
-        if (!done_flag) pthread_cond_wait(&cond, &_mutex);
-        sout | "S2 statement done!";
-        pthread_mutex_unlock(&_mutex);
-        return NULL;
-    }
-}
-
-
-
-int main(int argc, char const *argv[])
-{
-    /* code */
-    pthread_mutex_init(&_mutex, NULL);
-    pthread_cond_init(&cond, NULL);
-    pthread_t s1,s2;
-    pthread_create(&s1, NULL, S1, NULL);
-    pthread_create(&s2, NULL, S2, NULL);
-    void* res = NULL;
-    pthread_join(s1, &res);
-    pthread_join(s2, &res);
-    pthread_mutex_destroy(&_mutex);
-    pthread_cond_destroy(&cond);
-    return 0;
-}
Index: tests/concurrent/pthread/pthread_demo_create_join.cfa
===================================================================
--- tests/concurrent/pthread/pthread_demo_create_join.cfa	(revision 8a919cfec5f277378c3bc7e5d16717f7d44058c6)
+++ 	(revision )
@@ -1,41 +1,0 @@
-#include <fstream.hfa>
-#include <thread.hfa>
-/* test pthread create/join/exit */
-
-int arr[20];
-
-void* fetch(void* idx){
-    int res = arr[(uint64_t)idx];
-    pthread_exit((void*)res);
-    sout | "it should not be here";
-    exit(1);
-    //return (void*)res;
-}
-
-void arr_init(){
-    for (int i = 0; i < 20; i++){
-        arr[i] = i;
-    }
-}
-
-int main(int argc, char const *argv[])
-{
-    pthread_t threads[20];
-    arr_init();
-    int status;
-    for (int i = 0; i < 20; i++){
-        status = pthread_create(&threads[i], NULL, fetch, (void*)i);
-        if (status != 0) exit(1);
-    }
-    int res = 0;
-    for (int i = 0; i < 20; i++){
-        void* _res = NULL;
-        status = pthread_join(threads[i], &_res);
-        if (status != 0) exit(2);
-        if (((uint64_t)_res) != i) exit(3);
-        res += (uint64_t)_res;
-    }
-    sout | "final res is" | res;
-
-    return 0;
-}
Index: tests/concurrent/pthread/pthread_demo_lock.cfa
===================================================================
--- tests/concurrent/pthread/pthread_demo_lock.cfa	(revision 8a919cfec5f277378c3bc7e5d16717f7d44058c6)
+++ 	(revision )
@@ -1,124 +1,0 @@
-#include <fstream.hfa>
-#include <thread.hfa>
-/* 
-    test pthread_mutex to provide mutual exclusion
-    test pthread_mutex_trylock not block when lock is acquired by others; test pthread_mutex_trylock can acquire the lock
-*/
-volatile int cnt_nolock = 0;
-volatile int cnt_lock = 0;
-volatile int cnt_trylock = 0;
-extern "C"{
-    static pthread_mutex_t _mutex;
-}
-
-/* mutex pthread routine  */
-// unlocked increnment
-void* inc_unlock(void* cnt){
-    for (int i = 0; i < (uint64_t)cnt; i++){
-        cnt_nolock++;
-    }   // for
-    return NULL;
-}   
-// locked increment
-void* inc_lock(void* cnt){
-    pthread_mutex_lock(&_mutex);
-    for (int i = 0; i < (uint64_t)cnt; i++){
-        cnt_lock++;
-    }   // for
-    pthread_mutex_unlock(&_mutex);
-    return NULL;
-}
-
-/* test lock vs unlock */
-void test_unlock(){
-    pthread_t threads[20];
-    for (int i = 0; i < 20; i++){
-        pthread_create(&threads[i], NULL, inc_unlock, (void*)100000000);
-    }
-    for (int i = 0; i < 20; i++){
-        void * res = NULL;
-        pthread_join(threads[i], &res);
-    }
-    sout | "unlock res is" | cnt_nolock;
-    cnt_nolock = 0;
-}
-extern "C"{
-    void test_lock(){
-        pthread_mutex_init(&_mutex, NULL);
-        pthread_t threads[20];
-        for (int i = 0; i < 20; i++){
-            
-            pthread_create(&threads[i], NULL, inc_lock, (void*)100000000);
-        }
-        for (int i = 0; i < 20; i++){
-            void * res = NULL;
-            pthread_join(threads[i], &res);
-        }
-        sout | "lock res is" | cnt_lock;
-        pthread_mutex_destroy(&_mutex);
-        if (cnt_lock != 100000000 * 20) {
-            sout | "pthread mutex not working";
-            exit(1);
-        }
-        cnt_lock = 0;
-    }
-}
-
-
-/* mutex trylock pthread routine  */
-void* trylock_test2(void* arg){
-    int res = pthread_mutex_trylock(&_mutex);
-    sout | "in trylocktest2 res1 is" | res;
-    res = pthread_mutex_trylock(&_mutex);
-    sout | "in trylocktest2 res2 is" | res;
-    pthread_mutex_lock(&_mutex);
-    for (int i = 0; i < (uint64_t)arg; i++) cnt_trylock++;
-    pthread_mutex_unlock(&_mutex);
-    return NULL;
-}
-
-void* trylock_test1(void* arg){
-    int res = pthread_mutex_trylock(&_mutex);
-    sout | "in trylocktest1 res1 is" | res;
-    res = pthread_mutex_trylock(&_mutex);
-    sout | "in trylocktest1 res2 is" | res;
-    pthread_t task2;
-    pthread_create(&task2, NULL, trylock_test2, (void*)100000000);
-
-    // inc cnt then release the lock
-    for (int i = 0; i < (uint64_t)arg; i++) cnt_trylock++;
-    pthread_mutex_unlock(&_mutex);
-    pthread_mutex_unlock(&_mutex);
-    void * dummy = NULL;
-    pthread_join(task2, &dummy);
-    sout | "cnt_trylock is " | cnt_trylock;
-    return NULL;
-}
-
-// trylock test
-void test_trylock(){
-    pthread_mutex_init(&_mutex, NULL);
-    pthread_t task1;
-    pthread_create(&task1, NULL, trylock_test1, (void*)100000000);
-    void * dummy = NULL;
-    pthread_join(task1,&dummy);
-    pthread_mutex_destroy(&_mutex);
-    if (cnt_trylock != 100000000 * 2) {
-        sout | "pthread try mutex not working";
-        exit(1);
-    }
-    cnt_trylock = 0;
-}
-
-
-
-int main(int argc, char const *argv[])
-{
-    
-    // compare unlock vs lock
-    test_lock();
-    // test trylock
-    test_trylock();
-    
-    return 0;
-}
Index: tests/concurrent/pthread/pthread_key_test.cfa
===================================================================
--- tests/concurrent/pthread/pthread_key_test.cfa	(revision 8a919cfec5f277378c3bc7e5d16717f7d44058c6)
+++ 	(revision )
@@ -1,126 +1,0 @@
-
-/* test pthread_key_create/set_specific/get_specific
-    get specific == set specific
-    dtor is invoked (no mem leak)
-*/
-
-
-extern "C"{
-
-    #include <stdio.h>
-    #include <stdlib.h>
-    #include <errno.h>
-    #include <pthread.h>
-
-    #define THREADS 5
-    #define BUFFSZ  48
-    pthread_key_t   key;
-    volatile int total_value,total_value_getspec;
-    pthread_mutex_t value_mutex;
-
-    void            *threadfunc(void *parm)
-    {
-        int        status;
-        void      *value;
-        int        threadnum;
-        int       *tnum;
-        void      *getvalue;
-        char       Buffer[BUFFSZ];
-
-        tnum = (int*)parm;
-        threadnum = *tnum;
-
-        //printf("Thread %d executing\n", threadnum);
-        value = (void *)(rand()%100);
-        status = pthread_setspecific(key, (void *) value);
-        if ( status !=  0) {
-            printf("pthread_setspecific failed, thread %d, errno %d",
-                                                        threadnum, errno);
-            return (void*)12;
-        }
-        pthread_mutex_lock(&value_mutex);
-        total_value_getspec += (int)value;
-        total_value += (int)pthread_getspecific(key);
-        pthread_mutex_unlock(&value_mutex);
-
-
-        if (!(value = malloc(sizeof(Buffer))))
-            printf("Thread %d could not allocate storage, errno = %d\n",
-                                                        threadnum, errno);
-        status = pthread_setspecific(key, (void *) value);
-        if ( status !=  0) {
-            printf("pthread_setspecific failed, thread %d, errno %d",
-                                                        threadnum, errno);
-            return (void*)12;
-        }
-        //printf("Thread %d setspecific value: %d\n", threadnum, value);
-
-        getvalue = 0;
-        getvalue = pthread_getspecific(key);
-
-        if (getvalue != value) {
-        printf("getvalue not valid, getvalue=%d", (u_int64_t)getvalue);
-            return (void*)68;
-        }
-
-        pthread_exit((void *)0);
-    }
-
-    void  destr_fn(void *parm)
-    {
-
-        printf("Destructor function invoked\n");
-        free(parm);
-    }
-
-
-    int main() {
-        int          getvalue;
-        int          status;
-        int          i;
-        int          threadparm[THREADS];
-        pthread_t    threadid[THREADS];
-        void*          thread_stat[THREADS];
-
-        // rand seed for testing
-        srand(1003);
-        pthread_mutex_init(&value_mutex, NULL);
-
-        // testing getspec and setspec
-        total_value = 0;
-        total_value_getspec = 0;
-
-        if ((status = pthread_key_create(&key, destr_fn )) < 0) {
-            printf("pthread_key_create failed, errno=%d", errno);
-            exit(1);
-        }
-
-        // create 3 THREADS, pass each its number
-        for (i=0; i<THREADS; i++) {
-            threadparm[i] = i+1;
-            status = pthread_create( &threadid[i],
-                                    NULL,
-                                    threadfunc,
-                                    (void *)&threadparm[i]);
-            if ( status <  0) {
-            printf("pthread_create failed, errno=%d", errno);
-            exit(2);
-            }
-        }
-
-        for ( i=0; i<THREADS; i++) {
-            status = pthread_join( threadid[i], (void **)&thread_stat[i]);
-            if ( status <  0) {
-            printf("pthread_join failed, thread %d, errno=%d\n", i+1, errno);
-            }
-
-            if (thread_stat[i] != 0)   {
-                printf("bad thread status, thread %d, status=%d\n", i+1,
-                                                        (u_int64_t)thread_stat[i]);
-            }
-        }
-        printf("total value is %d, total value by pthread_getspecific is %d\n", total_value, total_value_getspec);
-        exit(0);
-    }   // main
-}
-
Index: tests/concurrent/pthread/pthread_once_test.cfa
===================================================================
--- tests/concurrent/pthread/pthread_once_test.cfa	(revision 8a919cfec5f277378c3bc7e5d16717f7d44058c6)
+++ 	(revision )
@@ -1,96 +1,0 @@
-// tested pthread once,create,join
-
-                                                          
-                                                                                
-                                                            
-#include <fstream.hfa>
-#include <thread.hfa>                                                                    
-#define THREADS 20                                                                                                                                                    
-
-extern "C"{
-    #include <pthread.h>
-    #include <stdio.h>
-    #include <errno.h> 
-    int             once_counter=0;                                                 
-    pthread_once_t  once_control = PTHREAD_ONCE_INIT;                               
-                                                                                    
-    void  once_fn(void)                                                             
-    {                                                                               
-    puts("in once_fn");                                                            
-    once_counter++;                                                                
-    }                                                                               
-                                                                                    
-    void            *threadfunc(void *parm)                                         
-    {                                                                               
-    int        status;                                                             
-    int        threadnum;                                                          
-    int        *tnum;                                                              
-                                                                                    
-    tnum = (int *)parm;                                                                   
-    threadnum = *tnum;                                                             
-                                                                                    
-    //printf("Thread %d executing\n", threadnum);                                    
-                                                                                    
-    status = pthread_once(&once_control, once_fn);                                 
-    if ( status <  0)                                                              
-        printf("pthread_once failed, thread %d, errno=%d\n", threadnum,             
-                                                                errno);             
-                                                                                    
-    //pthread_exit((void *)0);  
-    return NULL;                                                     
-    }  
-
-
-    void once_rtn(){
-        printf("in once init\n");
-    }
-    void test(){
-
-        processor p[10];
-        
-
-        int          status;                                                           
-        int          i;                                                                
-        int          threadparm[THREADS];                                              
-        pthread_t    threadid[THREADS];                                                
-        void*          thread_stat[THREADS];                                             
-                                                                                        
-        for (i=0; i<THREADS; i++) {                                                    
-            threadparm[i] = i+1;                                                        
-            status = pthread_create( &threadid[i],                                      
-                                    NULL,                                              
-                                    threadfunc,                                        
-                                    (void *)&threadparm[i]);                           
-            if ( status <  0) {                                                         
-            printf("pthread_create failed, errno=%d", errno);                        
-            exit(2);                                                                 
-            }                                                                           
-        }                                                                             
-                                                                                        
-        for ( i=0; i<THREADS; i++) {                                                   
-            status = pthread_join( threadid[i], (void **)&thread_stat[i]);               
-            if ( status <  0)                                                           
-            printf("pthread_join failed, thread %d, errno=%d\n", i+1, errno);        
-                                                                                        
-            if (thread_stat[i] != 0)                                                    
-                printf("bad thread status, thread %d, status=%d\n", i+1,                
-                                                        (int)thread_stat[i]);             
-        }                                                                             
-                                                                                        
-        if (once_counter != 1) {
-            printf("once_fn did not get control once, counter=%d",once_counter);         
-            exit(1);
-        }                                                        
-        
-        exit(0);
-        
-    }
-}
-
-
-
-int main(int argc, char const *argv[])
-{
-    test();
-    return 0;
-}
Index: tests/concurrent/readyQ/.expect/barrier_sleeper.txt
===================================================================
--- tests/concurrent/readyQ/.expect/barrier_sleeper.txt	(revision 8a919cfec5f277378c3bc7e5d16717f7d44058c6)
+++ 	(revision )
@@ -1,1 +1,0 @@
-Done
Index: tests/concurrent/readyQ/.expect/leader_spin.txt
===================================================================
--- tests/concurrent/readyQ/.expect/leader_spin.txt	(revision 8a919cfec5f277378c3bc7e5d16717f7d44058c6)
+++ 	(revision )
@@ -1,2 +1,0 @@
-Leader done
-done
Index: tests/concurrent/readyQ/barrier_sleeper.cfa
===================================================================
--- tests/concurrent/readyQ/barrier_sleeper.cfa	(revision 8a919cfec5f277378c3bc7e5d16717f7d44058c6)
+++ 	(revision )
@@ -1,59 +1,0 @@
-//
-// Cforall Version 1.0.0 Copyright (C) 2022 University of Waterloo
-//
-// The contents of this file are covered under the licence agreement in the
-// file "LICENCE" distributed with Cforall.
-//
-// concurrent/readyQ/barrier_sleeper.cfa -- testing the ready-queue
-//
-// Author           : Thierry Delisle
-// Created On       : Fri Apr 01 14:01:00 2022
-// Last Modified By :
-// Last Modified On :
-// Update Count     :
-//
-
-// Test validates that processors running out of work repeatedly won't deadlock
-// Processors and thread are removed in an interleaved fashion for a weirder case.
-
-#include <concurrency/barrier.hfa>
-#include <fstream.hfa>
-#include <time.hfa>
-#include <thread.hfa>
-
-const unsigned NUM_LAPS = 173;
-const unsigned NUM_THREADS = 11;
-
-barrier bar = { NUM_THREADS };
-
-thread Eager {};
-void main( Eager & ) {
-	for(NUM_LAPS) {
-		block(bar);
-	}
-}
-
-thread Sleeper{};
-void main( Sleeper & ) {
-	for(NUM_LAPS) {
-		sleep(500`us);
-		block(bar);
-	}
-}
-
-int main() {
-	{
-		processor p1[2];
-		{
-			if (NUM_THREADS <= 4) sout | "Insufficient threads";
-			Eager e[NUM_THREADS - 3];
-			{
-				processor p2[2];
-				{
-					Sleeper s[3];
-				}
-			}
-		}
-	}
-	sout | "Done";
-}
Index: tests/concurrent/readyQ/leader_spin.cfa
===================================================================
--- tests/concurrent/readyQ/leader_spin.cfa	(revision 8a919cfec5f277378c3bc7e5d16717f7d44058c6)
+++ 	(revision )
@@ -1,128 +1,0 @@
-//
-// Cforall Version 1.0.0 Copyright (C) 2022 University of Waterloo
-//
-// The contents of this file are covered under the licence agreement in the
-// file "LICENCE" distributed with Cforall.
-//
-// concurrent/readyQ/leader_spin.cfa -- validates ready queue fairness
-//
-// Author           : Thierry Delisle
-// Created On       : Fri Apr 01 11:39:09 2022
-// Last Modified By :
-// Last Modified On :
-// Update Count     :
-//
-
-#include <stdlib.hfa>
-#include <fstream.hfa>
-#include <thread.hfa>
-
-// Test validates that all cores being constantly active doesn't prevent starvation.
-// This test is very similar to the transfer benchmark, without all the benchmark bells and whistle.
-
-// Deactivate preemption because it could fix starvation issues.
-Duration default_preemption() {
-	return 0;
-}
-
-PRNG64 lead_rng;
-volatile unsigned leader;
-volatile size_t lead_idx;
-
-const uint64_t nthreads = 17;
-const uint64_t stop_count = 327;
-
-thread$ * the_main;
-
-thread __attribute__((aligned(128))) MyThread {
-	unsigned id;
-	volatile size_t idx;
-};
-
-void ?{}( MyThread & this, unsigned id ) {
-	this.id = id;
-	this.idx = 0;
-}
-
-MyThread ** threads;
-
-static void waitgroup() {
-	for(i; nthreads) {
-		while( threads[i]->idx != lead_idx ) {
-			sched_yield();
-		}
-	}
-}
-
-static void lead(MyThread & this) {
-	this.idx = ++lead_idx;
-	if(lead_idx > stop_count) {
-		sout | "Leader done";
-		unpark( the_main );
-		return;
-	}
-
-	waitgroup();
-
-	unsigned nleader = prng( lead_rng, nthreads );
-	__atomic_store_n( &leader, nleader, __ATOMIC_SEQ_CST );
-}
-
-static void wait(MyThread & this) {
-	yield();
-	if(lead_idx == this.idx) {
-		return;
-	}
-
-	assert( (lead_idx - 1) == this.idx );
-	__atomic_add_fetch( &this.idx, 1, __ATOMIC_SEQ_CST );
-	yield();
-}
-
-void main(MyThread & this) {
-	park();
-
-	unsigned me = this.id;
-
-	for() {
-		if(leader == me) {
-			lead( this );
-		}
-		else {
-			wait( this );
-		}
-		if(lead_idx > stop_count) break;
-	}
-}
-
-// ==================================================
-int main(int argc, char * argv[]) {
-	lead_idx = 0;
-	leader = prng( lead_rng, nthreads );
-
-	the_main = active_thread();
-	processor procs[2];
-	{
-		threads = alloc(nthreads);
-		for(i; nthreads) {
-			threads[i] = malloc();
-			(*threads[i]){
-				i
-			};
-		}
-
-		for(i; nthreads) unpark(*threads[i]);
-
-		park();
-
-		for(i; nthreads) {
-			MyThread * thrd = threads[i];
-			join(*thrd);
-			^( *thrd ){};
-			free(thrd);
-		}
-
-		free(threads);
-	}
-	sout | "done";
-}
Index: tests/concurrent/signal/.expect/block.txt
===================================================================
--- tests/concurrent/signal/.expect/block.txt	(revision 8a919cfec5f277378c3bc7e5d16717f7d44058c6)
+++ 	(revision )
@@ -1,2 +1,0 @@
-Starting waiters
-Waiters done
Index: tests/concurrent/signal/.expect/disjoint.txt
===================================================================
--- tests/concurrent/signal/.expect/disjoint.txt	(revision 8a919cfec5f277378c3bc7e5d16717f7d44058c6)
+++ 	(revision )
@@ -1,11 +1,0 @@
-1000
-2000
-3000
-4000
-5000
-6000
-7000
-8000
-9000
-10000
-All waiter done
Index: tests/concurrent/signal/.expect/wait.txt
===================================================================
--- tests/concurrent/signal/.expect/wait.txt	(revision 8a919cfec5f277378c3bc7e5d16717f7d44058c6)
+++ 	(revision )
@@ -1,2 +1,0 @@
-Starting
-Done
Index: tests/concurrent/signal/block.cfa
===================================================================
--- tests/concurrent/signal/block.cfa	(revision 8a919cfec5f277378c3bc7e5d16717f7d44058c6)
+++ 	(revision )
@@ -1,139 +1,0 @@
-//---------------------------------------------------------
-// Barging test
-// Ensures that no barging can occur between :
-//   - the frontend of the signal_block and the signaled thread
-//   - the signaled  threadand the backend of the signal_block
-//---------------------------------------------------------
-
-
-#include <fstream.hfa>
-#include <kernel.hfa>
-#include <monitor.hfa>
-#include <stdlib.hfa>
-#include <thread.hfa>
-#include <time.hfa>
-
-#include "long_tests.hfa"
-
-#ifndef PREEMPTION_RATE
-#define PREEMPTION_RATE 10`ms
-#endif
-
-Duration default_preemption() {
-	return PREEMPTION_RATE;
-}
-
-#ifdef TEST_LONG
-static const unsigned long N = 150_000ul;
-#else
-static const unsigned long N = 5_000ul;
-#endif
-
-enum state_t { WAITED, SIGNAL, BARGE };
-
-monitor global_data_t {
-	thread$ * last_thread;
-	thread$ * last_signaller;
-};
-
-void ?{} ( global_data_t & this ) {
-	this.last_thread = NULL;
-	this.last_signaller = NULL;
-}
-
-void ^?{} ( global_data_t & mutex this ) {}
-
-global_data_t globalA, globalB;
-
-condition cond;
-
-volatile bool done;
-
-//------------------------------------------------------------------------------
-void wait_op( global_data_t & mutex a, global_data_t & mutex b, unsigned i ) {
-    wait( cond, (uintptr_t)active_thread() );
-
-	yield( random( 10 ) );
-
-	if(a.last_thread != a.last_signaller || b.last_thread != b.last_signaller ) {
-		sout | "ERROR Barging detected, expected" | a.last_signaller | b.last_signaller | "got" | a.last_thread | b.last_thread;
-		abort();
-	}
-
-	a.last_thread = b.last_thread = active_thread();
-
-	yield( random( 10 ) );
-}
-
-thread Waiter {};
-void main( Waiter & this ) {
-	for( int i = 0; TEST(i < N); i++ ) {
-		wait_op( globalA, globalB, i );
-		KICK_WATCHDOG;
-	}
-}
-
-//------------------------------------------------------------------------------
-void signal_op( global_data_t & mutex a, global_data_t & mutex b ) {
-	yield( random( 10 ) );
-
-	[a.last_thread, b.last_thread, a.last_signaller, b.last_signaller] = active_thread();
-
-	if( !is_empty( cond ) ) {
-
-		thread$ * next = ( thread$ * ) front( cond );
-
-		if( ! signal_block( cond ) ) {
-			sout | "ERROR expected to be able to signal";
-			abort();
-		}
-
-		yield( random( 10 ) );
-
-		if(a.last_thread != next || b.last_thread != next) {
-			sout | "ERROR Barging detected, expected" | next | "got" | a.last_thread | b.last_thread;
-			abort();
-		}
-	}
-
-}
-
-thread Signaller {};
-void main( Signaller & this ) {
-	while( !done ) {
-		signal_op( globalA, globalB );
-	}
-}
-
-//------------------------------------------------------------------------------
-void barge_op( global_data_t & mutex a ) {
-	a.last_thread = active_thread();
-}
-
-thread Barger {};
-void main( Barger & this ) {
-	for( unsigned i = 0; !done; i++ ) {
-		//Choose some monitor to barge into with some irregular pattern
-		bool choose_a = (i % 13) > (i % 17);
-		if ( choose_a ) barge_op( globalA );
-		else barge_op( globalB );
-	}
-}
-
-//------------------------------------------------------------------------------
-
-int main(int argc, char* argv[]) {
-	srandom( time( NULL ) );
-	done = false;
-	processor p;
-	{
-		Signaller s[4];
-		Barger b[13];
-		sout | "Starting waiters";
-		{
-			Waiter w[3];
-		}
-		sout | "Waiters done";
-		done = true;
-	}
-}
Index: tests/concurrent/signal/disjoint.cfa
===================================================================
--- tests/concurrent/signal/disjoint.cfa	(revision 8a919cfec5f277378c3bc7e5d16717f7d44058c6)
+++ 	(revision )
@@ -1,146 +1,0 @@
-#include <fstream.hfa>
-#include <kernel.hfa>
-#include <monitor.hfa>
-#include <thread.hfa>
-#include <time.hfa>
-
-#include "long_tests.hfa"
-
-#ifndef PREEMPTION_RATE
-#define PREEMPTION_RATE 10`ms
-#endif
-
-Duration default_preemption() {
-	return PREEMPTION_RATE;
-}
-
-#ifdef TEST_LONG
-static const unsigned long N = 300_000ul;
-#else
-static const unsigned long N = 10_000ul;
-#endif
-
-// This tests checks what happens when someone barges in the midle of the release
-// of a bulk of monitors.
-
-enum state_t { WAIT, SIGNAL, BARGE };
-
-monitor global_t {};
-
-monitor global_data_t;
-void ?{}( global_data_t & this );
-void ^?{} ( global_data_t & mutex this );
-
-monitor global_data_t {
-	int counter;
-	state_t state;
-};
-
-// Use a global struct because the order needs to match with Signaller thread
-static struct {
-	global_t mut;
-	global_data_t data;
-} globals;
-
-condition cond;
-
-volatile bool all_done;
-
-void ?{}( global_data_t & this ) {
-	this.counter = 0;
-	this.state = BARGE;
-}
-
-void ^?{} ( global_data_t & mutex this ) {}
-
-//------------------------------------------------------------------------------
-// Barging logic
-void barge( global_data_t & mutex d ) {
-	d.state = BARGE;
-}
-
-thread Barger {};
-void ?{}( Barger & this ) {
-	((thread&)this){ "Barger Thread" };
-}
-
-void main( Barger & this ) {
-	while( !all_done ) {
-		barge( globals.data );
-		yield();
-	}
-}
-
-//------------------------------------------------------------------------------
-// Waiting logic
-bool wait( global_t & mutex m, global_data_t & mutex d ) {
-	wait( cond );
-	if( d.state != SIGNAL ) {
-		abort | "ERROR barging!";
-	}
-
-	#if !defined(TEST_FOREVER)
-		d.counter++;
-		if( (d.counter % 1000) == 0 ) sout | d.counter;
-	#endif
-
-	return TEST(d.counter < N);
-}
-
-thread Waiter {};
-void ?{}( Waiter & this ) {
-	((thread&)this){ "Waiter Thread" };
-}
-
-void main( Waiter & this ) {
-	while( wait( globals.mut, globals.data ) ) { KICK_WATCHDOG; yield(); }
-}
-
-
-//------------------------------------------------------------------------------
-// Signalling logic
-void signal( condition & cond, global_t & mutex a, global_data_t & mutex b ) {
-	b.state = SIGNAL;
-	signal( cond );
-}
-
-void logic( global_t & mutex a ) {
-	signal( cond, a, globals.data );
-
-	yield( random( 10 ) );
-
-	//This is technically a mutual exclusion violation but the mutex monitor protects us
-	bool running = TEST(globals.data.counter < N) && globals.data.counter > 0;
-	if( globals.data.state != SIGNAL && running ) {
-		abort | "ERROR Eager signal" | globals.data.state;
-	}
-}
-
-thread Signaller {};
-void ?{}( Signaller & this ) {
-	((thread&)this){ "Signaller Thread" };
-}
-
-void main( Signaller & this ) {
-	while( !all_done ) {
-		logic( globals.mut );
-		yield();
-	}
-}
-
-//------------------------------------------------------------------------------
-// Main loop
-int main(int argc, char* argv[]) {
-	srandom( time( NULL ) );
-	all_done = false;
-	processor p;
-	{
-		Signaller s;
-		Barger b[17];
-		{
-			Waiter w[4];
-		}
-		sout | "All waiter done";
-		all_done = true;
-	}
-}
Index: tests/concurrent/signal/wait.cfa
===================================================================
--- tests/concurrent/signal/wait.cfa	(revision 8a919cfec5f277378c3bc7e5d16717f7d44058c6)
+++ 	(revision )
@@ -1,153 +1,0 @@
-//---------------------------------------------------------
-// Multi wait test
-// Ensures that no deadlock from waiting/signalling conditions
-//---------------------------------------------------------
-
-
-#include <fstream.hfa>
-#include <kernel.hfa>
-#include <monitor.hfa>
-#include <stdlib.hfa>
-#include <thread.hfa>
-#include <time.hfa>
-
-#define __kick_rate 12000ul
-#include "long_tests.hfa"
-
-#ifndef PREEMPTION_RATE
-#define PREEMPTION_RATE 10`ms
-#endif
-
-Duration default_preemption() {
-	return PREEMPTION_RATE;
-}
-
-#ifdef TEST_LONG
-static const unsigned long N = 375_000ul;
-#else
-static const unsigned long N = 2_500ul;
-#endif
-
-monitor global_t {};
-
-global_t globalA;
-global_t globalB;
-global_t globalC;
-
-condition condAB, condAC, condBC, condABC;
-
-thread Signaler {};
-thread WaiterAB {};
-thread WaiterAC {};
-thread WaiterBC {};
-thread WaiterABC{};
-
-volatile int waiter_left;
-
-//----------------------------------------------------------------------------------------------------
-// Tools
-void signal( condition & cond, global_t & mutex a, global_t & mutex b ) {
-	signal( cond );
-}
-
-void signal( condition & cond, global_t & mutex a, global_t & mutex b, global_t & mutex c ) {
-	signal( cond );
-}
-
-void wait( condition & cond, global_t & mutex a, global_t & mutex b ) {
-	wait( cond );
-}
-
-void wait( condition & cond, global_t & mutex a, global_t & mutex b, global_t & mutex c ) {
-	wait( cond );
-}
-
-//----------------------------------------------------------------------------------------------------
-// Signaler
-void main( Signaler & this ) {
-
-	while( waiter_left != 0 ) {
-		unsigned action = random( 4 );
-		switch( action ) {
-			case 0:
-				signal( condABC, globalA, globalB, globalC );
-				break;
-			case 1:
-				signal( condAB , globalA, globalB );
-				break;
-			case 2:
-				signal( condBC , globalB, globalC );
-				break;
-			case 3:
-				signal( condAC , globalA, globalC );
-				break;
-			default:
-				sout | "Something went wrong";
-				abort();
-		}
-		yield();
-	}
-}
-
-//----------------------------------------------------------------------------------------------------
-// Waiter ABC
-void main( WaiterABC & this ) {
-	for( int i = 0; TEST(i < N); i++ ) {
-		wait( condABC, globalA, globalB, globalC );
-		KICK_WATCHDOG;
-	}
-
-	__atomic_fetch_sub( &waiter_left, 1,  __ATOMIC_SEQ_CST );
-}
-
-//----------------------------------------------------------------------------------------------------
-// Waiter AB
-void main( WaiterAB & this ) {
-	for( int i = 0; TEST(i < N); i++ ) {
-		wait( condAB , globalA, globalB );
-		KICK_WATCHDOG;
-	}
-
-	__atomic_fetch_sub( &waiter_left, 1,  __ATOMIC_SEQ_CST );
-}
-
-//----------------------------------------------------------------------------------------------------
-// Waiter AC
-void main( WaiterAC & this ) {
-	for( int i = 0; TEST(i < N); i++ ) {
-		wait( condAC , globalA, globalC );
-		KICK_WATCHDOG;
-	}
-
-	__atomic_fetch_sub( &waiter_left, 1,  __ATOMIC_SEQ_CST );
-}
-
-//----------------------------------------------------------------------------------------------------
-// Waiter BC
-void main( WaiterBC & this ) {
-	for( int i = 0; TEST(i < N); i++ ) {
-		wait( condBC , globalB, globalC );
-		KICK_WATCHDOG;
-	}
-
-	__atomic_fetch_sub( &waiter_left, 1,  __ATOMIC_SEQ_CST );
-}
-
-//----------------------------------------------------------------------------------------------------
-// Main
-int main(int argc, char* argv[]) {
-	srandom( time( NULL ) );
-	waiter_left = 4;
-	processor p[2];
-	sout | "Starting";
-	{
-		Signaler  e;
-		{
-			WaiterABC a;
-			WaiterAB  b;
-			WaiterBC  c;
-			WaiterAC  d;
-		}
-	}
-	sout | "Done";
-}
Index: tests/concurrent/sleep.cfa
===================================================================
--- tests/concurrent/sleep.cfa	(revision 8a919cfec5f277378c3bc7e5d16717f7d44058c6)
+++ 	(revision )
@@ -1,41 +1,0 @@
-#include <fstream.hfa>
-#include <thread.hfa>
-#include <mutex_stmt.hfa>
-#include <time.hfa>
-
-Duration default_preemption() {
-	return 0;
-}
-
-volatile int counter = 0;
-
-thread fast_sleeper {};
-void main(fast_sleeper &) {
-	Duration wait = 47`ms;
-	for(i; 20) {
-		sleep(wait);
-		__atomic_fetch_add( &counter, 1, __ATOMIC_RELAXED );
-	}
-}
-
-thread slow_sleeper {};
-void main(slow_sleeper &) {
-	Duration wait = 277`ms;
-	for(i; 4) {
-		sleep(wait);
-		int val = __atomic_add_fetch( &counter, -5, __ATOMIC_RELAXED );
-		if(val < -9) abort | "Value reached negative value:" | val;
-	}
-}
-
-int main() {
-	mutex( sout ) sout | "start";
-	{
-		slow_sleeper slow;
-		yield();
-		fast_sleeper fast;
-		yield();
-	}
-	mutex( sout ) sout | "done";
-}
-
Index: tests/concurrent/suspend_then.cfa
===================================================================
--- tests/concurrent/suspend_then.cfa	(revision 8a919cfec5f277378c3bc7e5d16717f7d44058c6)
+++ 	(revision )
@@ -1,88 +1,0 @@
-#include <fstream.hfa>
-#include <kernel.hfa>
-#include <thread.hfa>
-#include <time.hfa>
-#include <stdlib.hfa>
-#include <string.h>
-
-#define __kick_rate 150000ul
-#include "long_tests.hfa"
-
-Duration default_preemption() {
-	return 0;
-}
-
-#ifdef TEST_LONG
-static const unsigned long N = 600_000ul;
-#else
-static const unsigned long N = 1_000ul;
-#endif
-
-#if !defined(TEST_FOREVER)
-	static inline void print(const char * const text ) {
-		write( STDOUT_FILENO, text, strlen(text) );
-	}
-#else
-	static inline void print(Printer & this, const char * const text ) {}
-#endif
-
-generator Coroutine { int i; };
-
-volatile bool done = false;
-Coroutine * volatile the_cor = 0p;
-
-void store(Coroutine & cor) {
-	__atomic_store_n(&the_cor, &cor, __ATOMIC_SEQ_CST);
-}
-
-Coroutine * take(void) {
-	Coroutine * val = 0p;
-	Coroutine * ret = __atomic_exchange_n(&the_cor, val, __ATOMIC_SEQ_CST);
-	assert(!ret || !the_cor);
-	return ret;
-}
-
-void main(Coroutine& this) {
-	this.i = 0;
-	suspend;
-	for(;TEST(this.i < N); this.i++) {
-
-		print("C - Suspending\n");
-		suspend{
-			print("C - Publishing\n");
-			assert(!the_cor);
-			store( this );
-		}
-		assert(!the_cor);
-		print("C - Back\n");
-		KICK_WATCHDOG;
-		yield();
-	}
-	done = true;
-	suspend;
-}
-
-thread Thread {};
-void main(Thread & this) {
-	Coroutine * mine = 0p;
-	while(!done) {
-		yield();
-
-		mine = take();
-		if(!mine) continue;
-
-		print("T - took\n");
-		resume(*mine);
-	}
-}
-
-
-int main(int argc, char* argv[]) {
-	processor p[2];
-	Coroutine c;
-	resume(c); // Prime the coroutine to avoid one of the threads being its starter
-	the_cor = &c;
-	{
-		Thread t[2];
-	}
-}
Index: tests/concurrent/thread.cfa
===================================================================
--- tests/concurrent/thread.cfa	(revision 8a919cfec5f277378c3bc7e5d16717f7d44058c6)
+++ 	(revision )
@@ -1,41 +1,0 @@
-#include <fstream.hfa>
-#include <kernel.hfa>
-#include <locks.hfa>
-#include <stdlib.hfa>
-#include <thread.hfa>
-
-thread First  { semaphore* lock; };
-thread Second { semaphore* lock; };
-
-void ?{}( First  & this, semaphore & lock ) { ((thread&)this){ "Thread 1" }; this.lock = &lock; }
-void ?{}( Second & this, semaphore & lock ) { ((thread&)this){ "Thread 2" }; this.lock = &lock; }
-
-void main(First& this) {
-	for(int i = 0; i < 10; i++) {
-		sout | "First : Suspend No." | i + 1;
-		yield();
-	}
-	V(*this.lock);
-}
-
-void main(Second& this) {
-	P(*this.lock);
-	for(int i = 0; i < 10; i++) {
-		sout | "Second : Suspend No." | i + 1;
-		yield();
-	}
-}
-
-
-int main(int argc, char* argv[]) {
-	semaphore lock = { 0 };
-	sout | "User main begin";
-	{
-		processor p;
-		{
-			First  f = { lock };
-			Second s = { lock };
-		}
-	}
-	sout | "User main end";
-}
Index: tests/concurrent/unified_locking/.expect/block_spin_lock.txt
===================================================================
--- tests/concurrent/unified_locking/.expect/block_spin_lock.txt	(revision 8a919cfec5f277378c3bc7e5d16717f7d44058c6)
+++ 	(revision )
@@ -1,3 +1,0 @@
-Starting
-Done!
-Match!
Index: tests/concurrent/unified_locking/.expect/exp_backoff.txt
===================================================================
--- tests/concurrent/unified_locking/.expect/exp_backoff.txt	(revision 8a919cfec5f277378c3bc7e5d16717f7d44058c6)
+++ 	(revision )
@@ -1,3 +1,0 @@
-Starting
-Done!
-Match!
Index: tests/concurrent/unified_locking/.expect/fast_block_lock.txt
===================================================================
--- tests/concurrent/unified_locking/.expect/fast_block_lock.txt	(revision 8a919cfec5f277378c3bc7e5d16717f7d44058c6)
+++ 	(revision )
@@ -1,3 +1,0 @@
-Starting
-Done!
-Match!
Index: tests/concurrent/unified_locking/.expect/futex_mutex.txt
===================================================================
--- tests/concurrent/unified_locking/.expect/futex_mutex.txt	(revision 8a919cfec5f277378c3bc7e5d16717f7d44058c6)
+++ 	(revision )
@@ -1,3 +1,0 @@
-Starting
-Done!
-Match!
Index: tests/concurrent/unified_locking/.expect/locks.txt
===================================================================
--- tests/concurrent/unified_locking/.expect/locks.txt	(revision 8a919cfec5f277378c3bc7e5d16717f7d44058c6)
+++ 	(revision )
@@ -1,26 +1,0 @@
-Start Test 1: multi acquisition lock and condition variable single wait/notify
-Done Test 1
-Start Test 2: multi acquisition lock and condition variable 3 wait/notify all
-Done Test 2
-Start Test 3: single acquisition lock and condition variable single wait/notify
-Done Test 3
-Start Test 4: single acquisition lock and condition variable 3 wait/notify all
-Done Test 4
-Start Test 5: owner lock and condition variable single wait/notify
-Done Test 5
-Start Test 6: owner lock and condition variable 3 wait/notify all
-Done Test 6
-Start Test 7: linear backoff lock and condition variable single wait/notify
-Done Test 7
-Start Test 8: linear backoff lock and condition variable 3 wait/notify all
-Done Test 8
-Start Test 9: multi acquisiton lock and condition variable multiple acquire and wait/notify
-Done Test 9
-Start Test 10: owner lock and condition variable multiple acquire and wait/notify
-Done Test 10
-Start Test 11: no lock condition variable wait/notify
-Done Test 11
-Start Test 12: locked condition variable wait/notify with front()
-Done Test 12
-Start Test 13: fast block lock and fast cond var single wait/notify
-Done Test 13
Index: tests/concurrent/unified_locking/.expect/mcs.txt
===================================================================
--- tests/concurrent/unified_locking/.expect/mcs.txt	(revision 8a919cfec5f277378c3bc7e5d16717f7d44058c6)
+++ 	(revision )
@@ -1,3 +1,0 @@
-Starting
-Done!
-Match!
Index: tests/concurrent/unified_locking/.expect/mcs_block_spin_lock.txt
===================================================================
--- tests/concurrent/unified_locking/.expect/mcs_block_spin_lock.txt	(revision 8a919cfec5f277378c3bc7e5d16717f7d44058c6)
+++ 	(revision )
@@ -1,3 +1,0 @@
-Starting
-Done!
-Match!
Index: tests/concurrent/unified_locking/.expect/mcs_spin.txt
===================================================================
--- tests/concurrent/unified_locking/.expect/mcs_spin.txt	(revision 8a919cfec5f277378c3bc7e5d16717f7d44058c6)
+++ 	(revision )
@@ -1,3 +1,0 @@
-Starting
-Done!
-Match!
Index: tests/concurrent/unified_locking/.expect/pthread_locks.txt
===================================================================
--- tests/concurrent/unified_locking/.expect/pthread_locks.txt	(revision 8a919cfec5f277378c3bc7e5d16717f7d44058c6)
+++ 	(revision )
@@ -1,8 +1,0 @@
-Start Test 1: lock and condition variable single wait/notify
-Done Test 1
-Start Test 2: lock and condition variable 3 wait/notify all
-Done Test 2
-Start Test 3: lock and condition variable multiple acquire and wait/notify
-Done Test 3
-Start Test 4: lock and condition variable single timed wait/notify
-Done Test 4
Index: tests/concurrent/unified_locking/.expect/simple_owner_lock.txt
===================================================================
--- tests/concurrent/unified_locking/.expect/simple_owner_lock.txt	(revision 8a919cfec5f277378c3bc7e5d16717f7d44058c6)
+++ 	(revision )
@@ -1,3 +1,0 @@
-Starting
-Done!
-Match!
Index: tests/concurrent/unified_locking/.expect/spin_queue_lock.txt
===================================================================
--- tests/concurrent/unified_locking/.expect/spin_queue_lock.txt	(revision 8a919cfec5f277378c3bc7e5d16717f7d44058c6)
+++ 	(revision )
@@ -1,3 +1,0 @@
-Starting
-Done!
-Match!
Index: tests/concurrent/unified_locking/.expect/timeout_lock.txt
===================================================================
--- tests/concurrent/unified_locking/.expect/timeout_lock.txt	(revision 8a919cfec5f277378c3bc7e5d16717f7d44058c6)
+++ 	(revision )
@@ -1,4 +1,0 @@
-Start Test 1: surface testing condition variable timeout routines
-Done Test 1
-Start Test 2: testing timeout vs signalling with varying timeout durations
-Done Test 2
Index: tests/concurrent/unified_locking/block_spin_lock.cfa
===================================================================
--- tests/concurrent/unified_locking/block_spin_lock.cfa	(revision 8a919cfec5f277378c3bc7e5d16717f7d44058c6)
+++ 	(revision )
@@ -1,8 +1,0 @@
-#include <locks.hfa>
-
-#define LOCK block_spin_lock
-#include "mutex_test.hfa"
-
-int main() {
-    test();
-}
Index: tests/concurrent/unified_locking/exp_backoff.cfa
===================================================================
--- tests/concurrent/unified_locking/exp_backoff.cfa	(revision 8a919cfec5f277378c3bc7e5d16717f7d44058c6)
+++ 	(revision )
@@ -1,8 +1,0 @@
-#include <locks.hfa>
-
-#define LOCK exp_backoff_then_block_lock
-#include "mutex_test.hfa"
-
-int main() {
-    test();
-}
Index: tests/concurrent/unified_locking/fast_block_lock.cfa
===================================================================
--- tests/concurrent/unified_locking/fast_block_lock.cfa	(revision 8a919cfec5f277378c3bc7e5d16717f7d44058c6)
+++ 	(revision )
@@ -1,8 +1,0 @@
-#include <locks.hfa>
-
-#define LOCK fast_block_lock
-#include "mutex_test.hfa"
-
-int main() {
-    test();
-}
Index: tests/concurrent/unified_locking/futex_mutex.cfa
===================================================================
--- tests/concurrent/unified_locking/futex_mutex.cfa	(revision 8a919cfec5f277378c3bc7e5d16717f7d44058c6)
+++ 	(revision )
@@ -1,8 +1,0 @@
-#include <locks.hfa>
-
-#define LOCK futex_mutex
-#include "mutex_test.hfa"
-
-int main() {
-    test();
-}
Index: tests/concurrent/unified_locking/locks.cfa
===================================================================
--- tests/concurrent/unified_locking/locks.cfa	(revision 8a919cfec5f277378c3bc7e5d16717f7d44058c6)
+++ 	(revision )
@@ -1,348 +1,0 @@
-#include <stdio.h>
-#include "locks.hfa"
-#include <stdlib.hfa>
-#include <thread.hfa>
-
-const unsigned int num_times = 50000;
-
-multiple_acquisition_lock m;
-condition_variable( multiple_acquisition_lock ) c_m;
-
-single_acquisition_lock s;
-condition_variable( single_acquisition_lock ) c_s;
-
-owner_lock o;
-condition_variable( owner_lock ) c_o;
-
-exp_backoff_then_block_lock l;
-condition_variable( exp_backoff_then_block_lock ) c_l;
-
-fast_block_lock f;
-fast_cond_var( fast_block_lock ) f_c_f;
-
-thread T_C_M_WS1 {};
-
-void main( T_C_M_WS1 & this ) {
-	for (unsigned int i = 0; i < num_times; i++) {
-		lock(m);
-		if(empty(c_m) && i != num_times - 1) {
-			wait(c_m,m);
-		}else{
-			notify_one(c_m);
-		}
-		unlock(m);
-	}
-}
-
-thread T_C_M_WB1 {};
-
-void main( T_C_M_WB1 & this ) {
-	for (unsigned int i = 0; i < num_times; i++) {
-		lock(m);
-		if(counter(c_m) == 3 || i == num_times - 1) {
-			notify_all(c_m);
-		}else{
-			wait(c_m,m);
-		}
-		unlock(m);
-	}
-}
-
-thread T_C_S_WS1 {};
-
-void main( T_C_S_WS1 & this ) {
-	for (unsigned int i = 0; i < num_times; i++) {
-		lock(s);
-		if(empty(c_s) && i != num_times - 1) {
-			wait(c_s,s);
-		}else{
-			notify_one(c_s);
-		}
-		unlock(s);
-	}
-}
-
-thread T_C_S_WB1 {};
-
-void main( T_C_S_WB1 & this ) {
-	for (unsigned int i = 0; i < num_times; i++) {
-		lock(s);
-		if(counter(c_s) == 3 || i == num_times - 1) {
-			notify_all(c_s);
-		}else{
-			wait(c_s,s);
-		}
-		unlock(s);
-	}
-}
-
-thread T_C_L_WS1 {};
-
-void main( T_C_L_WS1 & this ) {
-	for (unsigned int i = 0; i < num_times; i++) {
-		lock(l);
-		if(empty(c_l) && i != num_times - 1) {
-			wait(c_l,l);
-		}else{
-			notify_one(c_l);
-		}
-		unlock(l);
-	}
-}
-
-thread T_C_L_WB1 {};
-
-void main( T_C_L_WB1 & this ) {
-	for (unsigned int i = 0; i < num_times; i++) {
-		lock(l);
-		if(counter(c_l) == 3 || i == num_times - 1) {
-			notify_all(c_l);
-		}else{
-			wait(c_l,l);
-		}
-		unlock(l);
-	}
-}
-
-thread T_F_C_F_WS1 {};
-
-void main( T_F_C_F_WS1 & this ) {
-	for (unsigned int i = 0; i < num_times; i++) {
-		lock(f);
-		if(empty(f_c_f) && i != num_times - 1) {
-			wait(f_c_f,f);
-		}else{
-			notify_one(f_c_f);
-		}
-		unlock(f);
-	}
-}
-
-thread T_C_O_WS1 {};
-
-void main( T_C_O_WS1 & this ) {
-	for (unsigned int i = 0; i < num_times; i++) {
-		lock(o);
-		if(empty(c_o) && i != num_times - 1) {
-			wait(c_o,o);
-		}else{
-			notify_one(c_o);
-		}
-		unlock(o);
-	}
-}
-
-thread T_C_O_WB1 {};
-
-void main( T_C_O_WB1 & this ) {
-	for (unsigned int i = 0; i < num_times; i++) {
-		lock(o);
-		if(counter(c_o) == 3 || i == num_times - 1) {
-			notify_all(c_o);
-		}else{
-			wait(c_o,o);
-		}
-		unlock(o);
-	}
-}
-
-thread T_C_M_WS2 {};
-
-void main( T_C_M_WS2 & this ) {
-	for (unsigned int i = 0; i < num_times; i++) {
-		lock(m);
-		lock(m);
-		lock(m);
-		if(empty(c_m) && i != num_times - 1) {
-			wait(c_m,m);
-		}else{
-			notify_one(c_m);
-		}
-		unlock(m);
-		unlock(m);
-		unlock(m);
-	}
-}
-
-thread T_C_O_WS2 {};
-
-void main( T_C_O_WS2 & this ) {
-	for (unsigned int i = 0; i < num_times; i++) {
-		lock(o);
-		lock(o);
-		lock(o);
-		if(empty(c_o) && i != num_times - 1) {
-			wait(c_o,o);
-		}else{
-			notify_one(c_o);
-		}
-		unlock(o);
-		unlock(o);
-		unlock(o);
-	}
-}
-
-thread T_C_NLW {};
-
-void main( T_C_NLW & this ) {
-	for (unsigned int i = 0; i < num_times; i++) {
-		wait(c_o);
-	}
-}
-
-thread T_C_NLS {};
-
-void main( T_C_NLS & this ) {
-	for (unsigned int i = 0; i < num_times; i++) {
-		while (empty(c_o)) { }
-		notify_one(c_o);
-	}
-}
-
-thread T_C_S_WNF {};
-
-void main( T_C_S_WNF & this ) {
-	for (unsigned int i = 0; i < num_times; i++) {
-		lock(s);
-		if(empty(c_s) && i != num_times - 1) {
-			wait(c_s, s, 10);
-		}else{
-			if(!empty(c_s)) assert(front(c_s) == 10);
-			notify_one(c_s);
-		}
-		unlock(s);
-	}
-}
-
-bool done = false;
-
-thread T_C_NLWD {};
-
-void main( T_C_NLWD & this ) {
-	done = false;
-	for (unsigned int i = 0; i < num_times/5; i++) {
-		if (i % 1000 == 0) printf("Iteration: %d\n", i);
-		wait(c_s, 1`ns);
-	}
-	done = true;
-}
-
-thread T_C_WDS {};
-
-void main( T_C_WDS & this ) {
-	for (unsigned int i = 0; i < num_times; i++) {
-		while (empty(c_s) && !done) { }
-		notify_one(c_s);
-		sleep(1`ns);
-		if(done) break;
-	}
-}
-
-thread T_C_LWD {};
-
-void main( T_C_LWD & this ) {
-	done = false;
-	for (unsigned int i = 0; i < num_times/5; i++) {
-		if (i % 1000 == 0) printf("Iteration: %d\n", i);
-		lock(s);
-		wait(c_s, s, 1`ns);
-		unlock(s);
-	}
-	done = true;
-}
-
-thread T_C_LWDS {};
-
-void main( T_C_LWDS & this ) {
-	for (unsigned int i = 0; i < num_times; i++) {
-		while (empty(c_s) && !done) { }
-		lock(s);
-		notify_one(c_s);
-		unlock(s);
-		sleep(1`ns);
-		if(done) break;
-	}
-}
-
-int main() {
-	processor p[2];
-	printf("Start Test 1: multi acquisition lock and condition variable single wait/notify\n");
-	{
-		T_C_M_WS1 t1[2];
-	}
-	printf("Done Test 1\n");
-
-	printf("Start Test 2: multi acquisition lock and condition variable 3 wait/notify all\n");
-	{
-		T_C_M_WB1 t1[4];
-	}
-	printf("Done Test 2\n");
-
-	printf("Start Test 3: single acquisition lock and condition variable single wait/notify\n");
-	{
-		T_C_S_WS1 t1[2];
-	}
-	printf("Done Test 3\n");
-
-	printf("Start Test 4: single acquisition lock and condition variable 3 wait/notify all\n");
-	{
-		T_C_S_WB1 t1[4];
-	}
-	printf("Done Test 4\n");
-
-	printf("Start Test 5: owner lock and condition variable single wait/notify\n");
-	{
-		T_C_O_WS1 t1[2];
-	}
-	printf("Done Test 5\n");
-
-	printf("Start Test 6: owner lock and condition variable 3 wait/notify all\n");
-	{
-		T_C_O_WB1 t1[4];
-	}
-	printf("Done Test 6\n");
-
-	printf("Start Test 7: linear backoff lock and condition variable single wait/notify\n");
-	{
-		T_C_L_WS1 t1[2];
-	}
-	printf("Done Test 7\n");
-
-	printf("Start Test 8: linear backoff lock and condition variable 3 wait/notify all\n");
-	{
-		T_C_L_WB1 t1[4];
-	}
-	printf("Done Test 8\n");
-
-	printf("Start Test 9: multi acquisiton lock and condition variable multiple acquire and wait/notify\n");
-	{
-		T_C_M_WS2 t1[2];
-	}
-	printf("Done Test 9\n");
-
-	printf("Start Test 10: owner lock and condition variable multiple acquire and wait/notify\n");
-	{
-		T_C_O_WS2 t1[2];
-	}
-	printf("Done Test 10\n");
-
-	printf("Start Test 11: no lock condition variable wait/notify\n");
-	{
-		T_C_NLW t1;
-		T_C_NLS t2;
-	}
-	printf("Done Test 11\n");
-
-	printf("Start Test 12: locked condition variable wait/notify with front()\n");
-	{
-		T_C_S_WNF t1[2];
-	}
-	printf("Done Test 12\n");
-
-	printf("Start Test 13: fast block lock and fast cond var single wait/notify\n");
-	{
-		T_F_C_F_WS1 t1[2];
-	}
-	printf("Done Test 13\n");
-	
-}
Index: tests/concurrent/unified_locking/mcs.cfa
===================================================================
--- tests/concurrent/unified_locking/mcs.cfa	(revision 8a919cfec5f277378c3bc7e5d16717f7d44058c6)
+++ 	(revision )
@@ -1,66 +1,0 @@
-#include <fstream.hfa>
-#include <locks.hfa>
-#include <thread.hfa>
-
-const unsigned int num_times = 50000;
-
-struct MutexObj {
-	mcs_lock l;
-	thread$ * id;
-	size_t sum;
-};
-
-MutexObj mo;
-
-void trash() {
-	unsigned t[100];
-	for(i; 100) {
-		t[i] = 0xDEADBEEF;
-	}
-}
-
-unsigned cs() {
-	thread$ * me = active_thread();
-	unsigned value = (unsigned)me;
-	mcs_node n;
-	lock(mo.l, n);
-	{
-		size_t tsum = mo.sum;
-		mo.id = me;
-		yield(random(5));
-		if(mo.id != me) sout | "Intruder!";
-		mo.sum = tsum + value;
-	}
-	unlock(mo.l, n);
-	return value;
-}
-
-thread LockCheck {
-	size_t sum;
-};
-
-void main(LockCheck & this) {
-	this.sum = 0;
-	for(num_times) {
-		trash();
-		this.sum += cs();
-		trash();
-		yield(random(10));
-	}
-}
-
-int main() {
-	size_t sum = -32;
-	mo.sum = -32;
-	processor p[2];
-	sout | "Starting";
-	{
-		LockCheck checkers[13];
-		for(i;13) {
-			sum += join(checkers[i]).sum;
-		}
-	}
-	sout | "Done!";
-	if(sum == mo.sum) sout | "Match!";
-	else sout | "No Match!" | sum | "vs" | mo.sum;
-}
Index: tests/concurrent/unified_locking/mcs_block_spin_lock.cfa
===================================================================
--- tests/concurrent/unified_locking/mcs_block_spin_lock.cfa	(revision 8a919cfec5f277378c3bc7e5d16717f7d44058c6)
+++ 	(revision )
@@ -1,8 +1,0 @@
-#include <locks.hfa>
-
-#define LOCK mcs_block_spin_lock
-#include "mutex_test.hfa"
-
-int main() {
-    test();
-}
Index: tests/concurrent/unified_locking/mcs_spin.cfa
===================================================================
--- tests/concurrent/unified_locking/mcs_spin.cfa	(revision 8a919cfec5f277378c3bc7e5d16717f7d44058c6)
+++ 	(revision )
@@ -1,78 +1,0 @@
-
-#include <fstream.hfa>
-#include <locks.hfa>
-#include <thread.hfa>
-
-const unsigned int num_times = 50;
-
-struct MutexObj {
-	mcs_spin_lock l;
-	thread$ * id;
-	uint32_t sum;
-	uint32_t cnt;
-};
-
-MutexObj mo;
-
-void trash() {
-	unsigned t[100];
-	for(i; 100) {
-		t[i] = 0xDEADBEEF;
-	}
-}
-
-uint32_t cs() {
-	thread$ * me = active_thread();
-	uint32_t value;
-    mcs_spin_node node;
-	lock(mo.l, node);
-	{
-		uint32_t tsum = mo.sum;
-		uint32_t cnt = mo.cnt;
-		mo.id = me;
-		yield(random(5));
-		value = ((uint32_t)random()) ^ ((uint32_t)me);
-		if(mo.id != me) sout | "Intruder!";
-		mo.cnt = cnt + 1;
-		mo.sum = tsum + value;
-	}
-	unlock(mo.l, node);
-	return value;
-}
-
-thread LockCheck {
-	uint32_t sum;
-};
-
-void main(LockCheck & this) {
-	this.sum = 0;
-	for(num_times) {
-		trash();
-		this.sum += cs();
-		trash();
-		yield(random(10));
-	}
-}
-
-void test() {
-	uint32_t sum = -32;
-	mo.sum = -32;
-	mo.cnt = 0;
-	processor p[2];
-	sout | "Starting";
-	{
-		LockCheck checkers[13];
-		for(i;13) {
-			sum += join(checkers[i]).sum;
-		}
-	}
-	sout | "Done!";
-	if(mo.cnt != (13 * num_times)) sout | "Invalid cs count!" | mo.cnt | "vs "| (13 * num_times) | "(13 *" | num_times | ')';
-	if(sum == mo.sum) sout | "Match!";
-	else sout | "No Match!" | sum | "vs" | mo.sum;
-}
-
-int main() {
-    test();
-	return 0;
-}
Index: tests/concurrent/unified_locking/mutex_test.hfa
===================================================================
--- tests/concurrent/unified_locking/mutex_test.hfa	(revision 8a919cfec5f277378c3bc7e5d16717f7d44058c6)
+++ 	(revision )
@@ -1,79 +1,0 @@
-
-#include <fstream.hfa>
-#include <locks.hfa>
-#include <thread.hfa>
-
-const unsigned int num_times = 50;
-
-struct MutexObj {
-	LOCK l;
-	thread$ * id;
-	uint32_t sum;
-	uint32_t cnt;
-};
-
-MutexObj mo;
-
-void trash() {
-	unsigned t[100];
-	for(i; 100) {
-		t[i] = 0xDEADBEEF;
-	}
-}
-
-uint32_t cs(uint32_t & entries) {
-	thread$ * me = active_thread();
-	uint32_t value;
-	lock(mo.l);
-	{
-		entries++;
-		uint32_t tsum = mo.sum;
-		uint32_t cnt = mo.cnt;
-		mo.id = me;
-		yield(random(5));
-		value = ((uint32_t)random()) ^ ((uint32_t)me);
-		if(mo.id != me) sout | "Intruder!";
-		mo.cnt = cnt + 1;
-		mo.sum = tsum + value;
-	}
-	unlock(mo.l);
-	return value;
-}
-
-thread LockCheck {
-	uint32_t sum;
-	uint32_t entries;
-};
-
-void main(LockCheck & this) {
-	this.sum = 0;
-	this.entries = 0;
-	for(num_times) {
-		trash();
-		this.sum += cs( this.entries );
-		trash();
-		yield(random(10));
-	}
-}
-
-void test() {
-	uint32_t sum = -32;
-	mo.sum = -32;
-	mo.cnt = 0;
-	uint32_t real_entries = 0;
-	processor p[2];
-	sout | "Starting";
-	{
-		LockCheck checkers[13];
-		for(i;13) {
-			LockCheck & curr = join(checkers[i]);
-			sum += curr.sum;
-			real_entries += curr.entries;
-		}
-	}
-	sout | "Done!";
-	if(real_entries != (13 * num_times)) sout | "Invalid real cs count!" | mo.cnt | "vs "| (13 * num_times) | "(13 *" | num_times | ')';
-	if(mo.cnt != (13 * num_times)) sout | "Invalid concurrent cs count!" | mo.cnt | "vs "| (13 * num_times) | "(13 *" | num_times | ')';
-	if(sum == mo.sum) sout | "Match!";
-	else sout | "No Match!" | sum | "vs" | mo.sum;
-}
Index: tests/concurrent/unified_locking/pthread_locks.cfa
===================================================================
--- tests/concurrent/unified_locking/pthread_locks.cfa	(revision 8a919cfec5f277378c3bc7e5d16717f7d44058c6)
+++ 	(revision )
@@ -1,108 +1,0 @@
-#include <stdio.h>
-#include "locks.hfa"
-#include <stdlib.hfa>
-#include <thread.hfa>
-#include <time.h>
-#include <stdlib.hfa>
-
-const unsigned int num_times = 50;
-
-simple_owner_lock l;
-pthread_cond_var( simple_owner_lock ) c;
-
-owner_lock l2;
-condition_variable( owner_lock ) c2;
-
-volatile int counter = 0;
-
-thread Wait_Signal_1 {};
-
-void main( Wait_Signal_1 & this ) {
-	for (unsigned int i = 0; i < num_times; i++) {
-		lock(l);
-		if(empty(c) && i != num_times - 1) {
-			wait(c,l);
-		}else{
-			notify_one(c);
-		}
-		unlock(l);
-	}
-}
-
-thread Wait_3_Signal_3 {};
-
-void main( Wait_3_Signal_3 & this ) {
-	for (unsigned int i = 0; i < num_times; i++) {
-		lock(l);
-        counter++;
-		if(counter == 4 || i == num_times - 1) {
-            counter = 0;
-			notify_all(c);
-		}else{
-			wait(c,l);
-		}
-		unlock(l);
-	}
-}
-
-thread Rec_Lock_Wait_Signal_1 {};
-
-void main( Rec_Lock_Wait_Signal_1 & this ) {
-	for (unsigned int i = 0; i < num_times; i++) {
-		lock(l);
-		lock(l);
-		lock(l);
-		if(empty(c) && i != num_times - 1) {
-			wait(c,l);
-		}else{
-			notify_one(c);
-		}
-		unlock(l);
-		unlock(l);
-		unlock(l);
-	}
-}
-
-thread Wait_Time_Signal_1 {};
-
-void main( Wait_Time_Signal_1 & this ) {
-	for (unsigned int i = 0; i < num_times; i++) {
-		lock(l);
-		if(empty(c) || random(10) >= 9 ) {
-			timespec t;
-			clock_gettime(CLOCK_REALTIME, &t);
-			timespec waitTime{0,1};
-			bool woken = wait(c,l, t + waitTime);
-		}else{
-			notify_one(c);
-		}
-		unlock(l);
-	}
-}
-
-int main() {
-	processor p[1];
-	printf("Start Test 1: lock and condition variable single wait/notify\n");
-	{
-		Wait_Signal_1 t1[2];
-	}
-	printf("Done Test 1\n");
-
-	printf("Start Test 2: lock and condition variable 3 wait/notify all\n");
-	{
-		Wait_3_Signal_3 t1[4];
-	}
-	printf("Done Test 2\n");
-
-	printf("Start Test 3: lock and condition variable multiple acquire and wait/notify\n");
-	{
-		Rec_Lock_Wait_Signal_1 t1[2];
-	}
-	printf("Done Test 3\n");
-
-	printf("Start Test 4: lock and condition variable single timed wait/notify\n");
-	{
-		Wait_Time_Signal_1 t1[2];
-	}
-	printf("Done Test 4\n");
-}
Index: tests/concurrent/unified_locking/simple_owner_lock.cfa
===================================================================
--- tests/concurrent/unified_locking/simple_owner_lock.cfa	(revision 8a919cfec5f277378c3bc7e5d16717f7d44058c6)
+++ 	(revision )
@@ -1,8 +1,0 @@
-#include <locks.hfa>
-
-#define LOCK simple_owner_lock
-#include "mutex_test.hfa"
-
-int main() {
-    test();
-}
Index: tests/concurrent/unified_locking/spin_queue_lock.cfa
===================================================================
--- tests/concurrent/unified_locking/spin_queue_lock.cfa	(revision 8a919cfec5f277378c3bc7e5d16717f7d44058c6)
+++ 	(revision )
@@ -1,8 +1,0 @@
-#include <locks.hfa>
-
-#define LOCK spin_queue_lock
-#include "mutex_test.hfa"
-
-int main() {
-    test();
-}
Index: tests/concurrent/unified_locking/test_debug.cfa
===================================================================
--- tests/concurrent/unified_locking/test_debug.cfa	(revision 8a919cfec5f277378c3bc7e5d16717f7d44058c6)
+++ 	(revision )
@@ -1,31 +1,0 @@
-#include "locks.hfa"
-
-fast_block_lock f;
-fast_block_lock f2;
-fast_cond_var( fast_block_lock ) f_c_f;
-
-thread T1 {};
-bool wait = true;
-bool wait2 = true;
-void main( T1 & this ) {
-    lock(f);
-    if (wait) {
-        wait = false;
-        wait(f_c_f, f);
-    } else {
-        notify_one(f_c_f);
-        unlock(f);
-    }
-    lock(f2);
-    if (wait2) {
-        wait2 = false;
-        wait(f_c_f, f2);
-    } else {
-        notify_one(f_c_f);
-        unlock(f2);
-    }
-}
-
-int main() {
-    T1 t[2];
-}
Index: tests/concurrent/unified_locking/thread_test.cfa
===================================================================
--- tests/concurrent/unified_locking/thread_test.cfa	(revision 8a919cfec5f277378c3bc7e5d16717f7d44058c6)
+++ 	(revision )
@@ -1,108 +1,0 @@
-#include <stdio.h>
-#include "locks.hfa"
-#include <stdlib.hfa>
-#include <thread.hfa>
-#include <containers/array.hfa>
-
-static unsigned int taskCount = 4;
-static unsigned int threadCount = 2;
-static unsigned int lockCount = 1;
-static unsigned int total_times = 320000;
-static unsigned int num_times;
-static const int workBufferSize = 16;
-static unsigned int work_unlocked = 10000;
-static unsigned int work_locked = 10000;
-
-// taken from martin's thread_test
-static inline void dowork(volatile int* buffer, unsigned int steps) {
-  int value = 0;
-  for (unsigned int i = 0; i < steps; i += 1) {
-    // a little more work than just a single memory access helps with stability
-    value += (buffer[i % workBufferSize] * 17) / 23 + 55;
-  }
-  buffer[0] += value;
-}
-
-thread worker {
-    exp_backoff_then_block_lock * locks;
-    bool improved;
-};
-
-void ?{}( worker & w, exp_backoff_then_block_lock * locks, bool improved ) {
-	w.locks = locks;
-    w.improved = improved;
-}
-
-
-void main( worker & this ) with(this) {
-	int buffer[workBufferSize];
-    for (int i = 0; i < workBufferSize; i += 1) buffer[i] = rand() % 1024;
-    unsigned int lck = rand() % lockCount;
-    exp_backoff_then_block_lock * curr_lock = &locks[lck];
-    for (unsigned int i = 0; i < num_times; i++) {
-        dowork(buffer, work_unlocked);
-        if (improved) lock_improved(*curr_lock);
-        else lock(*curr_lock);
-        dowork(buffer, work_locked);
-        unlock(*curr_lock);
-        lck = rand() % lockCount;
-        curr_lock = &locks[lck];
-    }
-}
-
-int doOne = 0;
-int main(int argc, char* argv[]) {
-    switch (argc) {
-        case 8:
-            doOne = atoi(argv[7]);
-        case 7:
-            work_unlocked = atoi(argv[6]);
-        case 6:
-            work_locked = atoi(argv[5]);
-        case 5:
-            total_times = atoi(argv[4]);
-        case 4:
-            lockCount = atoi(argv[3]);
-        case 3:
-            threadCount = atoi(argv[2]);
-        case 2:
-            taskCount = atoi(argv[1]);
-        case 1:
-            break;
-        default:
-            break;
-    }
-	processor p[threadCount];
-    exp_backoff_then_block_lock locks[lockCount];
-    worker * worker_arr[taskCount];
-    num_times = total_times  / taskCount;
-    //printf("%d\n", doOne);
-	//
-	//clock_t begin = clock();
-    if (doOne == 1) {
-        printf("Start Test: martin lock simple %d\n", num_times);
-	for (unsigned int i = 0; i < taskCount; i++) {
-        worker_arr[i] = new( locks, false );
-    }
-    for (unsigned int i = 0; i < taskCount; i++) {
-        delete( worker_arr[i] );
-    }
-    }
-	//clock_t end = clock();
-	//double time_spent = (double)(end - begin) / CLOCKS_PER_SEC;
-	//printf("norm: %f\n", time_spent);
-
-    //printf("Start Test: martin lock improved\n");
-	//begin = clock();
-    if (doOne == 2) {
-	for (unsigned int i = 0; i < taskCount; i++) {
-        worker_arr[i] = new( locks, true );
-    }
-    for (unsigned int i = 0; i < taskCount; i++) {
-        delete( worker_arr[i] );
-    }
-    }
-	//end = clock();
-	//time_spent = (double)(end - begin) / CLOCKS_PER_SEC;
-	//printf("improved: %f\n", time_spent);
-}
Index: tests/concurrent/unified_locking/timeout_lock.cfa
===================================================================
--- tests/concurrent/unified_locking/timeout_lock.cfa	(revision 8a919cfec5f277378c3bc7e5d16717f7d44058c6)
+++ 	(revision )
@@ -1,87 +1,0 @@
-#include <stdio.h>
-#include <locks.hfa>
-#include <alarm.hfa>
-#include <stdlib.hfa>
-#include <thread.hfa>
-#include <kernel.hfa>
-
-multiple_acquisition_lock m, n;
-condition_variable( multiple_acquisition_lock ) c_m, c_n;
-
-const unsigned int NoOfTimes = 20;
-
-void block() { // used for barrier like behaviour
-	lock(n);
-	if (empty( c_n )) {
-		wait( c_n, n );
-	} else {
-		notify_one( c_n );
-	}
-	unlock(n);
-}
-
-thread T1 {};
-
-void main( T1 & this ) {
-	lock(m);
-	wait( c_m, m, 1`s );
-	// printf("Thread: %p timedout\n", active_thread()); // removed since can't expect non deterministic output
-
-	block();
-
-	// Test calls which occur increasingly close to timeout value.
-
-	for ( unsigned int i = 0; i < NoOfTimes + 3; i += 1 ) {
-	    if ( wait( c_m, m, 1000000`ns ) ) {
-			// printf("Thread: %p signalled\n", active_thread()); // removed since can't expect non deterministic output
-	    } else {
-			// printf("Thread: %p timedout\n", active_thread()); // removed since can't expect non deterministic output
-	    } // if
-
-	    block();
-	} // for
-}
-
-
-thread T2 {};
-
-void main( T2 & this ) {
-	block();
-
-	// Test calls which occur increasingly close to timeout value.
-
-	sleep( 100000`ns );
-	notify_one(c_m);
-	block();
-
-	sleep( 500000`ns );
-	notify_one(c_m);
-	block();
-
-	sleep( 900000`ns );
-	notify_one(c_m);
-	block();
-
-	for ( unsigned int i = 0; i < NoOfTimes; i += 1 ) {
-	    sleep( 999700`ns );
-		notify_one(c_m);
-	    block();
-	} // for
-}
-
-int main() {
-	processor p[2];
-	printf("Start Test 1: surface testing condition variable timeout routines\n");
-	wait( c_m, 1`ns );														// bool wait( condition_variable(L) & this, Duration duration );
-	wait( c_m, 10, 1`ns );													// bool wait( condition_variable(L) & this, uintptr_t info, Duration duration );
-	lock(m); wait( c_m, m, 1`ns ); unlock(m); 								// bool wait( condition_variable(L) & this, L & l, Duration duration );
-	lock(m); wait( c_m, m, 10, 1`ns ); unlock(m);							// bool wait( condition_variable(L) & this, L & l, uintptr_t info, Duration duration );
-	printf("Done Test 1\n");
-
-	printf("Start Test 2: testing timeout vs signalling with varying timeout durations\n");
-	{
-		T1 t1;
-		T2 t2;
-	}
-	printf("Done Test 2\n");
-}
Index: tests/concurrent/waitfor/.expect/barge.txt
===================================================================
--- tests/concurrent/waitfor/.expect/barge.txt	(revision 8a919cfec5f277378c3bc7e5d16717f7d44058c6)
+++ 	(revision )
@@ -1,5002 +1,0 @@
-Starting
-0
-1
-2
-3
-4
-5
-6
-7
-8
-9
-10
-11
-12
-13
-14
-15
-16
-17
-18
-19
-20
-21
-22
-23
-24
-25
-26
-27
-28
-29
-30
-31
-32
-33
-34
-35
-36
-37
-38
-39
-40
-41
-42
-43
-44
-45
-46
-47
-48
-49
-50
-51
-52
-53
-54
-55
-56
-57
-58
-59
-60
-61
-62
-63
-64
-65
-66
-67
-68
-69
-70
-71
-72
-73
-74
-75
-76
-77
-78
-79
-80
-81
-82
-83
-84
-85
-86
-87
-88
-89
-90
-91
-92
-93
-94
-95
-96
-97
-98
-99
-100
-101
-102
-103
-104
-105
-106
-107
-108
-109
-110
-111
-112
-113
-114
-115
-116
-117
-118
-119
-120
-121
-122
-123
-124
-125
-126
-127
-128
-129
-130
-131
-132
-133
-134
-135
-136
-137
-138
-139
-140
-141
-142
-143
-144
-145
-146
-147
-148
-149
-150
-151
-152
-153
-154
-155
-156
-157
-158
-159
-160
-161
-162
-163
-164
-165
-166
-167
-168
-169
-170
-171
-172
-173
-174
-175
-176
-177
-178
-179
-180
-181
-182
-183
-184
-185
-186
-187
-188
-189
-190
-191
-192
-193
-194
-195
-196
-197
-198
-199
-200
-201
-202
-203
-204
-205
-206
-207
-208
-209
-210
-211
-212
-213
-214
-215
-216
-217
-218
-219
-220
-221
-222
-223
-224
-225
-226
-227
-228
-229
-230
-231
-232
-233
-234
-235
-236
-237
-238
-239
-240
-241
-242
-243
-244
-245
-246
-247
-248
-249
-250
-251
-252
-253
-254
-255
-256
-257
-258
-259
-260
-261
-262
-263
-264
-265
-266
-267
-268
-269
-270
-271
-272
-273
-274
-275
-276
-277
-278
-279
-280
-281
-282
-283
-284
-285
-286
-287
-288
-289
-290
-291
-292
-293
-294
-295
-296
-297
-298
-299
-300
-301
-302
-303
-304
-305
-306
-307
-308
-309
-310
-311
-312
-313
-314
-315
-316
-317
-318
-319
-320
-321
-322
-323
-324
-325
-326
-327
-328
-329
-330
-331
-332
-333
-334
-335
-336
-337
-338
-339
-340
-341
-342
-343
-344
-345
-346
-347
-348
-349
-350
-351
-352
-353
-354
-355
-356
-357
-358
-359
-360
-361
-362
-363
-364
-365
-366
-367
-368
-369
-370
-371
-372
-373
-374
-375
-376
-377
-378
-379
-380
-381
-382
-383
-384
-385
-386
-387
-388
-389
-390
-391
-392
-393
-394
-395
-396
-397
-398
-399
-400
-401
-402
-403
-404
-405
-406
-407
-408
-409
-410
-411
-412
-413
-414
-415
-416
-417
-418
-419
-420
-421
-422
-423
-424
-425
-426
-427
-428
-429
-430
-431
-432
-433
-434
-435
-436
-437
-438
-439
-440
-441
-442
-443
-444
-445
-446
-447
-448
-449
-450
-451
-452
-453
-454
-455
-456
-457
-458
-459
-460
-461
-462
-463
-464
-465
-466
-467
-468
-469
-470
-471
-472
-473
-474
-475
-476
-477
-478
-479
-480
-481
-482
-483
-484
-485
-486
-487
-488
-489
-490
-491
-492
-493
-494
-495
-496
-497
-498
-499
-500
-501
-502
-503
-504
-505
-506
-507
-508
-509
-510
-511
-512
-513
-514
-515
-516
-517
-518
-519
-520
-521
-522
-523
-524
-525
-526
-527
-528
-529
-530
-531
-532
-533
-534
-535
-536
-537
-538
-539
-540
-541
-542
-543
-544
-545
-546
-547
-548
-549
-550
-551
-552
-553
-554
-555
-556
-557
-558
-559
-560
-561
-562
-563
-564
-565
-566
-567
-568
-569
-570
-571
-572
-573
-574
-575
-576
-577
-578
-579
-580
-581
-582
-583
-584
-585
-586
-587
-588
-589
-590
-591
-592
-593
-594
-595
-596
-597
-598
-599
-600
-601
-602
-603
-604
-605
-606
-607
-608
-609
-610
-611
-612
-613
-614
-615
-616
-617
-618
-619
-620
-621
-622
-623
-624
-625
-626
-627
-628
-629
-630
-631
-632
-633
-634
-635
-636
-637
-638
-639
-640
-641
-642
-643
-644
-645
-646
-647
-648
-649
-650
-651
-652
-653
-654
-655
-656
-657
-658
-659
-660
-661
-662
-663
-664
-665
-666
-667
-668
-669
-670
-671
-672
-673
-674
-675
-676
-677
-678
-679
-680
-681
-682
-683
-684
-685
-686
-687
-688
-689
-690
-691
-692
-693
-694
-695
-696
-697
-698
-699
-700
-701
-702
-703
-704
-705
-706
-707
-708
-709
-710
-711
-712
-713
-714
-715
-716
-717
-718
-719
-720
-721
-722
-723
-724
-725
-726
-727
-728
-729
-730
-731
-732
-733
-734
-735
-736
-737
-738
-739
-740
-741
-742
-743
-744
-745
-746
-747
-748
-749
-750
-751
-752
-753
-754
-755
-756
-757
-758
-759
-760
-761
-762
-763
-764
-765
-766
-767
-768
-769
-770
-771
-772
-773
-774
-775
-776
-777
-778
-779
-780
-781
-782
-783
-784
-785
-786
-787
-788
-789
-790
-791
-792
-793
-794
-795
-796
-797
-798
-799
-800
-801
-802
-803
-804
-805
-806
-807
-808
-809
-810
-811
-812
-813
-814
-815
-816
-817
-818
-819
-820
-821
-822
-823
-824
-825
-826
-827
-828
-829
-830
-831
-832
-833
-834
-835
-836
-837
-838
-839
-840
-841
-842
-843
-844
-845
-846
-847
-848
-849
-850
-851
-852
-853
-854
-855
-856
-857
-858
-859
-860
-861
-862
-863
-864
-865
-866
-867
-868
-869
-870
-871
-872
-873
-874
-875
-876
-877
-878
-879
-880
-881
-882
-883
-884
-885
-886
-887
-888
-889
-890
-891
-892
-893
-894
-895
-896
-897
-898
-899
-900
-901
-902
-903
-904
-905
-906
-907
-908
-909
-910
-911
-912
-913
-914
-915
-916
-917
-918
-919
-920
-921
-922
-923
-924
-925
-926
-927
-928
-929
-930
-931
-932
-933
-934
-935
-936
-937
-938
-939
-940
-941
-942
-943
-944
-945
-946
-947
-948
-949
-950
-951
-952
-953
-954
-955
-956
-957
-958
-959
-960
-961
-962
-963
-964
-965
-966
-967
-968
-969
-970
-971
-972
-973
-974
-975
-976
-977
-978
-979
-980
-981
-982
-983
-984
-985
-986
-987
-988
-989
-990
-991
-992
-993
-994
-995
-996
-997
-998
-999
-1000
-1001
-1002
-1003
-1004
-1005
-1006
-1007
-1008
-1009
-1010
-1011
-1012
-1013
-1014
-1015
-1016
-1017
-1018
-1019
-1020
-1021
-1022
-1023
-1024
-1025
-1026
-1027
-1028
-1029
-1030
-1031
-1032
-1033
-1034
-1035
-1036
-1037
-1038
-1039
-1040
-1041
-1042
-1043
-1044
-1045
-1046
-1047
-1048
-1049
-1050
-1051
-1052
-1053
-1054
-1055
-1056
-1057
-1058
-1059
-1060
-1061
-1062
-1063
-1064
-1065
-1066
-1067
-1068
-1069
-1070
-1071
-1072
-1073
-1074
-1075
-1076
-1077
-1078
-1079
-1080
-1081
-1082
-1083
-1084
-1085
-1086
-1087
-1088
-1089
-1090
-1091
-1092
-1093
-1094
-1095
-1096
-1097
-1098
-1099
-1100
-1101
-1102
-1103
-1104
-1105
-1106
-1107
-1108
-1109
-1110
-1111
-1112
-1113
-1114
-1115
-1116
-1117
-1118
-1119
-1120
-1121
-1122
-1123
-1124
-1125
-1126
-1127
-1128
-1129
-1130
-1131
-1132
-1133
-1134
-1135
-1136
-1137
-1138
-1139
-1140
-1141
-1142
-1143
-1144
-1145
-1146
-1147
-1148
-1149
-1150
-1151
-1152
-1153
-1154
-1155
-1156
-1157
-1158
-1159
-1160
-1161
-1162
-1163
-1164
-1165
-1166
-1167
-1168
-1169
-1170
-1171
-1172
-1173
-1174
-1175
-1176
-1177
-1178
-1179
-1180
-1181
-1182
-1183
-1184
-1185
-1186
-1187
-1188
-1189
-1190
-1191
-1192
-1193
-1194
-1195
-1196
-1197
-1198
-1199
-1200
-1201
-1202
-1203
-1204
-1205
-1206
-1207
-1208
-1209
-1210
-1211
-1212
-1213
-1214
-1215
-1216
-1217
-1218
-1219
-1220
-1221
-1222
-1223
-1224
-1225
-1226
-1227
-1228
-1229
-1230
-1231
-1232
-1233
-1234
-1235
-1236
-1237
-1238
-1239
-1240
-1241
-1242
-1243
-1244
-1245
-1246
-1247
-1248
-1249
-1250
-1251
-1252
-1253
-1254
-1255
-1256
-1257
-1258
-1259
-1260
-1261
-1262
-1263
-1264
-1265
-1266
-1267
-1268
-1269
-1270
-1271
-1272
-1273
-1274
-1275
-1276
-1277
-1278
-1279
-1280
-1281
-1282
-1283
-1284
-1285
-1286
-1287
-1288
-1289
-1290
-1291
-1292
-1293
-1294
-1295
-1296
-1297
-1298
-1299
-1300
-1301
-1302
-1303
-1304
-1305
-1306
-1307
-1308
-1309
-1310
-1311
-1312
-1313
-1314
-1315
-1316
-1317
-1318
-1319
-1320
-1321
-1322
-1323
-1324
-1325
-1326
-1327
-1328
-1329
-1330
-1331
-1332
-1333
-1334
-1335
-1336
-1337
-1338
-1339
-1340
-1341
-1342
-1343
-1344
-1345
-1346
-1347
-1348
-1349
-1350
-1351
-1352
-1353
-1354
-1355
-1356
-1357
-1358
-1359
-1360
-1361
-1362
-1363
-1364
-1365
-1366
-1367
-1368
-1369
-1370
-1371
-1372
-1373
-1374
-1375
-1376
-1377
-1378
-1379
-1380
-1381
-1382
-1383
-1384
-1385
-1386
-1387
-1388
-1389
-1390
-1391
-1392
-1393
-1394
-1395
-1396
-1397
-1398
-1399
-1400
-1401
-1402
-1403
-1404
-1405
-1406
-1407
-1408
-1409
-1410
-1411
-1412
-1413
-1414
-1415
-1416
-1417
-1418
-1419
-1420
-1421
-1422
-1423
-1424
-1425
-1426
-1427
-1428
-1429
-1430
-1431
-1432
-1433
-1434
-1435
-1436
-1437
-1438
-1439
-1440
-1441
-1442
-1443
-1444
-1445
-1446
-1447
-1448
-1449
-1450
-1451
-1452
-1453
-1454
-1455
-1456
-1457
-1458
-1459
-1460
-1461
-1462
-1463
-1464
-1465
-1466
-1467
-1468
-1469
-1470
-1471
-1472
-1473
-1474
-1475
-1476
-1477
-1478
-1479
-1480
-1481
-1482
-1483
-1484
-1485
-1486
-1487
-1488
-1489
-1490
-1491
-1492
-1493
-1494
-1495
-1496
-1497
-1498
-1499
-1500
-1501
-1502
-1503
-1504
-1505
-1506
-1507
-1508
-1509
-1510
-1511
-1512
-1513
-1514
-1515
-1516
-1517
-1518
-1519
-1520
-1521
-1522
-1523
-1524
-1525
-1526
-1527
-1528
-1529
-1530
-1531
-1532
-1533
-1534
-1535
-1536
-1537
-1538
-1539
-1540
-1541
-1542
-1543
-1544
-1545
-1546
-1547
-1548
-1549
-1550
-1551
-1552
-1553
-1554
-1555
-1556
-1557
-1558
-1559
-1560
-1561
-1562
-1563
-1564
-1565
-1566
-1567
-1568
-1569
-1570
-1571
-1572
-1573
-1574
-1575
-1576
-1577
-1578
-1579
-1580
-1581
-1582
-1583
-1584
-1585
-1586
-1587
-1588
-1589
-1590
-1591
-1592
-1593
-1594
-1595
-1596
-1597
-1598
-1599
-1600
-1601
-1602
-1603
-1604
-1605
-1606
-1607
-1608
-1609
-1610
-1611
-1612
-1613
-1614
-1615
-1616
-1617
-1618
-1619
-1620
-1621
-1622
-1623
-1624
-1625
-1626
-1627
-1628
-1629
-1630
-1631
-1632
-1633
-1634
-1635
-1636
-1637
-1638
-1639
-1640
-1641
-1642
-1643
-1644
-1645
-1646
-1647
-1648
-1649
-1650
-1651
-1652
-1653
-1654
-1655
-1656
-1657
-1658
-1659
-1660
-1661
-1662
-1663
-1664
-1665
-1666
-1667
-1668
-1669
-1670
-1671
-1672
-1673
-1674
-1675
-1676
-1677
-1678
-1679
-1680
-1681
-1682
-1683
-1684
-1685
-1686
-1687
-1688
-1689
-1690
-1691
-1692
-1693
-1694
-1695
-1696
-1697
-1698
-1699
-1700
-1701
-1702
-1703
-1704
-1705
-1706
-1707
-1708
-1709
-1710
-1711
-1712
-1713
-1714
-1715
-1716
-1717
-1718
-1719
-1720
-1721
-1722
-1723
-1724
-1725
-1726
-1727
-1728
-1729
-1730
-1731
-1732
-1733
-1734
-1735
-1736
-1737
-1738
-1739
-1740
-1741
-1742
-1743
-1744
-1745
-1746
-1747
-1748
-1749
-1750
-1751
-1752
-1753
-1754
-1755
-1756
-1757
-1758
-1759
-1760
-1761
-1762
-1763
-1764
-1765
-1766
-1767
-1768
-1769
-1770
-1771
-1772
-1773
-1774
-1775
-1776
-1777
-1778
-1779
-1780
-1781
-1782
-1783
-1784
-1785
-1786
-1787
-1788
-1789
-1790
-1791
-1792
-1793
-1794
-1795
-1796
-1797
-1798
-1799
-1800
-1801
-1802
-1803
-1804
-1805
-1806
-1807
-1808
-1809
-1810
-1811
-1812
-1813
-1814
-1815
-1816
-1817
-1818
-1819
-1820
-1821
-1822
-1823
-1824
-1825
-1826
-1827
-1828
-1829
-1830
-1831
-1832
-1833
-1834
-1835
-1836
-1837
-1838
-1839
-1840
-1841
-1842
-1843
-1844
-1845
-1846
-1847
-1848
-1849
-1850
-1851
-1852
-1853
-1854
-1855
-1856
-1857
-1858
-1859
-1860
-1861
-1862
-1863
-1864
-1865
-1866
-1867
-1868
-1869
-1870
-1871
-1872
-1873
-1874
-1875
-1876
-1877
-1878
-1879
-1880
-1881
-1882
-1883
-1884
-1885
-1886
-1887
-1888
-1889
-1890
-1891
-1892
-1893
-1894
-1895
-1896
-1897
-1898
-1899
-1900
-1901
-1902
-1903
-1904
-1905
-1906
-1907
-1908
-1909
-1910
-1911
-1912
-1913
-1914
-1915
-1916
-1917
-1918
-1919
-1920
-1921
-1922
-1923
-1924
-1925
-1926
-1927
-1928
-1929
-1930
-1931
-1932
-1933
-1934
-1935
-1936
-1937
-1938
-1939
-1940
-1941
-1942
-1943
-1944
-1945
-1946
-1947
-1948
-1949
-1950
-1951
-1952
-1953
-1954
-1955
-1956
-1957
-1958
-1959
-1960
-1961
-1962
-1963
-1964
-1965
-1966
-1967
-1968
-1969
-1970
-1971
-1972
-1973
-1974
-1975
-1976
-1977
-1978
-1979
-1980
-1981
-1982
-1983
-1984
-1985
-1986
-1987
-1988
-1989
-1990
-1991
-1992
-1993
-1994
-1995
-1996
-1997
-1998
-1999
-2000
-2001
-2002
-2003
-2004
-2005
-2006
-2007
-2008
-2009
-2010
-2011
-2012
-2013
-2014
-2015
-2016
-2017
-2018
-2019
-2020
-2021
-2022
-2023
-2024
-2025
-2026
-2027
-2028
-2029
-2030
-2031
-2032
-2033
-2034
-2035
-2036
-2037
-2038
-2039
-2040
-2041
-2042
-2043
-2044
-2045
-2046
-2047
-2048
-2049
-2050
-2051
-2052
-2053
-2054
-2055
-2056
-2057
-2058
-2059
-2060
-2061
-2062
-2063
-2064
-2065
-2066
-2067
-2068
-2069
-2070
-2071
-2072
-2073
-2074
-2075
-2076
-2077
-2078
-2079
-2080
-2081
-2082
-2083
-2084
-2085
-2086
-2087
-2088
-2089
-2090
-2091
-2092
-2093
-2094
-2095
-2096
-2097
-2098
-2099
-2100
-2101
-2102
-2103
-2104
-2105
-2106
-2107
-2108
-2109
-2110
-2111
-2112
-2113
-2114
-2115
-2116
-2117
-2118
-2119
-2120
-2121
-2122
-2123
-2124
-2125
-2126
-2127
-2128
-2129
-2130
-2131
-2132
-2133
-2134
-2135
-2136
-2137
-2138
-2139
-2140
-2141
-2142
-2143
-2144
-2145
-2146
-2147
-2148
-2149
-2150
-2151
-2152
-2153
-2154
-2155
-2156
-2157
-2158
-2159
-2160
-2161
-2162
-2163
-2164
-2165
-2166
-2167
-2168
-2169
-2170
-2171
-2172
-2173
-2174
-2175
-2176
-2177
-2178
-2179
-2180
-2181
-2182
-2183
-2184
-2185
-2186
-2187
-2188
-2189
-2190
-2191
-2192
-2193
-2194
-2195
-2196
-2197
-2198
-2199
-2200
-2201
-2202
-2203
-2204
-2205
-2206
-2207
-2208
-2209
-2210
-2211
-2212
-2213
-2214
-2215
-2216
-2217
-2218
-2219
-2220
-2221
-2222
-2223
-2224
-2225
-2226
-2227
-2228
-2229
-2230
-2231
-2232
-2233
-2234
-2235
-2236
-2237
-2238
-2239
-2240
-2241
-2242
-2243
-2244
-2245
-2246
-2247
-2248
-2249
-2250
-2251
-2252
-2253
-2254
-2255
-2256
-2257
-2258
-2259
-2260
-2261
-2262
-2263
-2264
-2265
-2266
-2267
-2268
-2269
-2270
-2271
-2272
-2273
-2274
-2275
-2276
-2277
-2278
-2279
-2280
-2281
-2282
-2283
-2284
-2285
-2286
-2287
-2288
-2289
-2290
-2291
-2292
-2293
-2294
-2295
-2296
-2297
-2298
-2299
-2300
-2301
-2302
-2303
-2304
-2305
-2306
-2307
-2308
-2309
-2310
-2311
-2312
-2313
-2314
-2315
-2316
-2317
-2318
-2319
-2320
-2321
-2322
-2323
-2324
-2325
-2326
-2327
-2328
-2329
-2330
-2331
-2332
-2333
-2334
-2335
-2336
-2337
-2338
-2339
-2340
-2341
-2342
-2343
-2344
-2345
-2346
-2347
-2348
-2349
-2350
-2351
-2352
-2353
-2354
-2355
-2356
-2357
-2358
-2359
-2360
-2361
-2362
-2363
-2364
-2365
-2366
-2367
-2368
-2369
-2370
-2371
-2372
-2373
-2374
-2375
-2376
-2377
-2378
-2379
-2380
-2381
-2382
-2383
-2384
-2385
-2386
-2387
-2388
-2389
-2390
-2391
-2392
-2393
-2394
-2395
-2396
-2397
-2398
-2399
-2400
-2401
-2402
-2403
-2404
-2405
-2406
-2407
-2408
-2409
-2410
-2411
-2412
-2413
-2414
-2415
-2416
-2417
-2418
-2419
-2420
-2421
-2422
-2423
-2424
-2425
-2426
-2427
-2428
-2429
-2430
-2431
-2432
-2433
-2434
-2435
-2436
-2437
-2438
-2439
-2440
-2441
-2442
-2443
-2444
-2445
-2446
-2447
-2448
-2449
-2450
-2451
-2452
-2453
-2454
-2455
-2456
-2457
-2458
-2459
-2460
-2461
-2462
-2463
-2464
-2465
-2466
-2467
-2468
-2469
-2470
-2471
-2472
-2473
-2474
-2475
-2476
-2477
-2478
-2479
-2480
-2481
-2482
-2483
-2484
-2485
-2486
-2487
-2488
-2489
-2490
-2491
-2492
-2493
-2494
-2495
-2496
-2497
-2498
-2499
-2500
-2501
-2502
-2503
-2504
-2505
-2506
-2507
-2508
-2509
-2510
-2511
-2512
-2513
-2514
-2515
-2516
-2517
-2518
-2519
-2520
-2521
-2522
-2523
-2524
-2525
-2526
-2527
-2528
-2529
-2530
-2531
-2532
-2533
-2534
-2535
-2536
-2537
-2538
-2539
-2540
-2541
-2542
-2543
-2544
-2545
-2546
-2547
-2548
-2549
-2550
-2551
-2552
-2553
-2554
-2555
-2556
-2557
-2558
-2559
-2560
-2561
-2562
-2563
-2564
-2565
-2566
-2567
-2568
-2569
-2570
-2571
-2572
-2573
-2574
-2575
-2576
-2577
-2578
-2579
-2580
-2581
-2582
-2583
-2584
-2585
-2586
-2587
-2588
-2589
-2590
-2591
-2592
-2593
-2594
-2595
-2596
-2597
-2598
-2599
-2600
-2601
-2602
-2603
-2604
-2605
-2606
-2607
-2608
-2609
-2610
-2611
-2612
-2613
-2614
-2615
-2616
-2617
-2618
-2619
-2620
-2621
-2622
-2623
-2624
-2625
-2626
-2627
-2628
-2629
-2630
-2631
-2632
-2633
-2634
-2635
-2636
-2637
-2638
-2639
-2640
-2641
-2642
-2643
-2644
-2645
-2646
-2647
-2648
-2649
-2650
-2651
-2652
-2653
-2654
-2655
-2656
-2657
-2658
-2659
-2660
-2661
-2662
-2663
-2664
-2665
-2666
-2667
-2668
-2669
-2670
-2671
-2672
-2673
-2674
-2675
-2676
-2677
-2678
-2679
-2680
-2681
-2682
-2683
-2684
-2685
-2686
-2687
-2688
-2689
-2690
-2691
-2692
-2693
-2694
-2695
-2696
-2697
-2698
-2699
-2700
-2701
-2702
-2703
-2704
-2705
-2706
-2707
-2708
-2709
-2710
-2711
-2712
-2713
-2714
-2715
-2716
-2717
-2718
-2719
-2720
-2721
-2722
-2723
-2724
-2725
-2726
-2727
-2728
-2729
-2730
-2731
-2732
-2733
-2734
-2735
-2736
-2737
-2738
-2739
-2740
-2741
-2742
-2743
-2744
-2745
-2746
-2747
-2748
-2749
-2750
-2751
-2752
-2753
-2754
-2755
-2756
-2757
-2758
-2759
-2760
-2761
-2762
-2763
-2764
-2765
-2766
-2767
-2768
-2769
-2770
-2771
-2772
-2773
-2774
-2775
-2776
-2777
-2778
-2779
-2780
-2781
-2782
-2783
-2784
-2785
-2786
-2787
-2788
-2789
-2790
-2791
-2792
-2793
-2794
-2795
-2796
-2797
-2798
-2799
-2800
-2801
-2802
-2803
-2804
-2805
-2806
-2807
-2808
-2809
-2810
-2811
-2812
-2813
-2814
-2815
-2816
-2817
-2818
-2819
-2820
-2821
-2822
-2823
-2824
-2825
-2826
-2827
-2828
-2829
-2830
-2831
-2832
-2833
-2834
-2835
-2836
-2837
-2838
-2839
-2840
-2841
-2842
-2843
-2844
-2845
-2846
-2847
-2848
-2849
-2850
-2851
-2852
-2853
-2854
-2855
-2856
-2857
-2858
-2859
-2860
-2861
-2862
-2863
-2864
-2865
-2866
-2867
-2868
-2869
-2870
-2871
-2872
-2873
-2874
-2875
-2876
-2877
-2878
-2879
-2880
-2881
-2882
-2883
-2884
-2885
-2886
-2887
-2888
-2889
-2890
-2891
-2892
-2893
-2894
-2895
-2896
-2897
-2898
-2899
-2900
-2901
-2902
-2903
-2904
-2905
-2906
-2907
-2908
-2909
-2910
-2911
-2912
-2913
-2914
-2915
-2916
-2917
-2918
-2919
-2920
-2921
-2922
-2923
-2924
-2925
-2926
-2927
-2928
-2929
-2930
-2931
-2932
-2933
-2934
-2935
-2936
-2937
-2938
-2939
-2940
-2941
-2942
-2943
-2944
-2945
-2946
-2947
-2948
-2949
-2950
-2951
-2952
-2953
-2954
-2955
-2956
-2957
-2958
-2959
-2960
-2961
-2962
-2963
-2964
-2965
-2966
-2967
-2968
-2969
-2970
-2971
-2972
-2973
-2974
-2975
-2976
-2977
-2978
-2979
-2980
-2981
-2982
-2983
-2984
-2985
-2986
-2987
-2988
-2989
-2990
-2991
-2992
-2993
-2994
-2995
-2996
-2997
-2998
-2999
-3000
-3001
-3002
-3003
-3004
-3005
-3006
-3007
-3008
-3009
-3010
-3011
-3012
-3013
-3014
-3015
-3016
-3017
-3018
-3019
-3020
-3021
-3022
-3023
-3024
-3025
-3026
-3027
-3028
-3029
-3030
-3031
-3032
-3033
-3034
-3035
-3036
-3037
-3038
-3039
-3040
-3041
-3042
-3043
-3044
-3045
-3046
-3047
-3048
-3049
-3050
-3051
-3052
-3053
-3054
-3055
-3056
-3057
-3058
-3059
-3060
-3061
-3062
-3063
-3064
-3065
-3066
-3067
-3068
-3069
-3070
-3071
-3072
-3073
-3074
-3075
-3076
-3077
-3078
-3079
-3080
-3081
-3082
-3083
-3084
-3085
-3086
-3087
-3088
-3089
-3090
-3091
-3092
-3093
-3094
-3095
-3096
-3097
-3098
-3099
-3100
-3101
-3102
-3103
-3104
-3105
-3106
-3107
-3108
-3109
-3110
-3111
-3112
-3113
-3114
-3115
-3116
-3117
-3118
-3119
-3120
-3121
-3122
-3123
-3124
-3125
-3126
-3127
-3128
-3129
-3130
-3131
-3132
-3133
-3134
-3135
-3136
-3137
-3138
-3139
-3140
-3141
-3142
-3143
-3144
-3145
-3146
-3147
-3148
-3149
-3150
-3151
-3152
-3153
-3154
-3155
-3156
-3157
-3158
-3159
-3160
-3161
-3162
-3163
-3164
-3165
-3166
-3167
-3168
-3169
-3170
-3171
-3172
-3173
-3174
-3175
-3176
-3177
-3178
-3179
-3180
-3181
-3182
-3183
-3184
-3185
-3186
-3187
-3188
-3189
-3190
-3191
-3192
-3193
-3194
-3195
-3196
-3197
-3198
-3199
-3200
-3201
-3202
-3203
-3204
-3205
-3206
-3207
-3208
-3209
-3210
-3211
-3212
-3213
-3214
-3215
-3216
-3217
-3218
-3219
-3220
-3221
-3222
-3223
-3224
-3225
-3226
-3227
-3228
-3229
-3230
-3231
-3232
-3233
-3234
-3235
-3236
-3237
-3238
-3239
-3240
-3241
-3242
-3243
-3244
-3245
-3246
-3247
-3248
-3249
-3250
-3251
-3252
-3253
-3254
-3255
-3256
-3257
-3258
-3259
-3260
-3261
-3262
-3263
-3264
-3265
-3266
-3267
-3268
-3269
-3270
-3271
-3272
-3273
-3274
-3275
-3276
-3277
-3278
-3279
-3280
-3281
-3282
-3283
-3284
-3285
-3286
-3287
-3288
-3289
-3290
-3291
-3292
-3293
-3294
-3295
-3296
-3297
-3298
-3299
-3300
-3301
-3302
-3303
-3304
-3305
-3306
-3307
-3308
-3309
-3310
-3311
-3312
-3313
-3314
-3315
-3316
-3317
-3318
-3319
-3320
-3321
-3322
-3323
-3324
-3325
-3326
-3327
-3328
-3329
-3330
-3331
-3332
-3333
-3334
-3335
-3336
-3337
-3338
-3339
-3340
-3341
-3342
-3343
-3344
-3345
-3346
-3347
-3348
-3349
-3350
-3351
-3352
-3353
-3354
-3355
-3356
-3357
-3358
-3359
-3360
-3361
-3362
-3363
-3364
-3365
-3366
-3367
-3368
-3369
-3370
-3371
-3372
-3373
-3374
-3375
-3376
-3377
-3378
-3379
-3380
-3381
-3382
-3383
-3384
-3385
-3386
-3387
-3388
-3389
-3390
-3391
-3392
-3393
-3394
-3395
-3396
-3397
-3398
-3399
-3400
-3401
-3402
-3403
-3404
-3405
-3406
-3407
-3408
-3409
-3410
-3411
-3412
-3413
-3414
-3415
-3416
-3417
-3418
-3419
-3420
-3421
-3422
-3423
-3424
-3425
-3426
-3427
-3428
-3429
-3430
-3431
-3432
-3433
-3434
-3435
-3436
-3437
-3438
-3439
-3440
-3441
-3442
-3443
-3444
-3445
-3446
-3447
-3448
-3449
-3450
-3451
-3452
-3453
-3454
-3455
-3456
-3457
-3458
-3459
-3460
-3461
-3462
-3463
-3464
-3465
-3466
-3467
-3468
-3469
-3470
-3471
-3472
-3473
-3474
-3475
-3476
-3477
-3478
-3479
-3480
-3481
-3482
-3483
-3484
-3485
-3486
-3487
-3488
-3489
-3490
-3491
-3492
-3493
-3494
-3495
-3496
-3497
-3498
-3499
-3500
-3501
-3502
-3503
-3504
-3505
-3506
-3507
-3508
-3509
-3510
-3511
-3512
-3513
-3514
-3515
-3516
-3517
-3518
-3519
-3520
-3521
-3522
-3523
-3524
-3525
-3526
-3527
-3528
-3529
-3530
-3531
-3532
-3533
-3534
-3535
-3536
-3537
-3538
-3539
-3540
-3541
-3542
-3543
-3544
-3545
-3546
-3547
-3548
-3549
-3550
-3551
-3552
-3553
-3554
-3555
-3556
-3557
-3558
-3559
-3560
-3561
-3562
-3563
-3564
-3565
-3566
-3567
-3568
-3569
-3570
-3571
-3572
-3573
-3574
-3575
-3576
-3577
-3578
-3579
-3580
-3581
-3582
-3583
-3584
-3585
-3586
-3587
-3588
-3589
-3590
-3591
-3592
-3593
-3594
-3595
-3596
-3597
-3598
-3599
-3600
-3601
-3602
-3603
-3604
-3605
-3606
-3607
-3608
-3609
-3610
-3611
-3612
-3613
-3614
-3615
-3616
-3617
-3618
-3619
-3620
-3621
-3622
-3623
-3624
-3625
-3626
-3627
-3628
-3629
-3630
-3631
-3632
-3633
-3634
-3635
-3636
-3637
-3638
-3639
-3640
-3641
-3642
-3643
-3644
-3645
-3646
-3647
-3648
-3649
-3650
-3651
-3652
-3653
-3654
-3655
-3656
-3657
-3658
-3659
-3660
-3661
-3662
-3663
-3664
-3665
-3666
-3667
-3668
-3669
-3670
-3671
-3672
-3673
-3674
-3675
-3676
-3677
-3678
-3679
-3680
-3681
-3682
-3683
-3684
-3685
-3686
-3687
-3688
-3689
-3690
-3691
-3692
-3693
-3694
-3695
-3696
-3697
-3698
-3699
-3700
-3701
-3702
-3703
-3704
-3705
-3706
-3707
-3708
-3709
-3710
-3711
-3712
-3713
-3714
-3715
-3716
-3717
-3718
-3719
-3720
-3721
-3722
-3723
-3724
-3725
-3726
-3727
-3728
-3729
-3730
-3731
-3732
-3733
-3734
-3735
-3736
-3737
-3738
-3739
-3740
-3741
-3742
-3743
-3744
-3745
-3746
-3747
-3748
-3749
-3750
-3751
-3752
-3753
-3754
-3755
-3756
-3757
-3758
-3759
-3760
-3761
-3762
-3763
-3764
-3765
-3766
-3767
-3768
-3769
-3770
-3771
-3772
-3773
-3774
-3775
-3776
-3777
-3778
-3779
-3780
-3781
-3782
-3783
-3784
-3785
-3786
-3787
-3788
-3789
-3790
-3791
-3792
-3793
-3794
-3795
-3796
-3797
-3798
-3799
-3800
-3801
-3802
-3803
-3804
-3805
-3806
-3807
-3808
-3809
-3810
-3811
-3812
-3813
-3814
-3815
-3816
-3817
-3818
-3819
-3820
-3821
-3822
-3823
-3824
-3825
-3826
-3827
-3828
-3829
-3830
-3831
-3832
-3833
-3834
-3835
-3836
-3837
-3838
-3839
-3840
-3841
-3842
-3843
-3844
-3845
-3846
-3847
-3848
-3849
-3850
-3851
-3852
-3853
-3854
-3855
-3856
-3857
-3858
-3859
-3860
-3861
-3862
-3863
-3864
-3865
-3866
-3867
-3868
-3869
-3870
-3871
-3872
-3873
-3874
-3875
-3876
-3877
-3878
-3879
-3880
-3881
-3882
-3883
-3884
-3885
-3886
-3887
-3888
-3889
-3890
-3891
-3892
-3893
-3894
-3895
-3896
-3897
-3898
-3899
-3900
-3901
-3902
-3903
-3904
-3905
-3906
-3907
-3908
-3909
-3910
-3911
-3912
-3913
-3914
-3915
-3916
-3917
-3918
-3919
-3920
-3921
-3922
-3923
-3924
-3925
-3926
-3927
-3928
-3929
-3930
-3931
-3932
-3933
-3934
-3935
-3936
-3937
-3938
-3939
-3940
-3941
-3942
-3943
-3944
-3945
-3946
-3947
-3948
-3949
-3950
-3951
-3952
-3953
-3954
-3955
-3956
-3957
-3958
-3959
-3960
-3961
-3962
-3963
-3964
-3965
-3966
-3967
-3968
-3969
-3970
-3971
-3972
-3973
-3974
-3975
-3976
-3977
-3978
-3979
-3980
-3981
-3982
-3983
-3984
-3985
-3986
-3987
-3988
-3989
-3990
-3991
-3992
-3993
-3994
-3995
-3996
-3997
-3998
-3999
-4000
-4001
-4002
-4003
-4004
-4005
-4006
-4007
-4008
-4009
-4010
-4011
-4012
-4013
-4014
-4015
-4016
-4017
-4018
-4019
-4020
-4021
-4022
-4023
-4024
-4025
-4026
-4027
-4028
-4029
-4030
-4031
-4032
-4033
-4034
-4035
-4036
-4037
-4038
-4039
-4040
-4041
-4042
-4043
-4044
-4045
-4046
-4047
-4048
-4049
-4050
-4051
-4052
-4053
-4054
-4055
-4056
-4057
-4058
-4059
-4060
-4061
-4062
-4063
-4064
-4065
-4066
-4067
-4068
-4069
-4070
-4071
-4072
-4073
-4074
-4075
-4076
-4077
-4078
-4079
-4080
-4081
-4082
-4083
-4084
-4085
-4086
-4087
-4088
-4089
-4090
-4091
-4092
-4093
-4094
-4095
-4096
-4097
-4098
-4099
-4100
-4101
-4102
-4103
-4104
-4105
-4106
-4107
-4108
-4109
-4110
-4111
-4112
-4113
-4114
-4115
-4116
-4117
-4118
-4119
-4120
-4121
-4122
-4123
-4124
-4125
-4126
-4127
-4128
-4129
-4130
-4131
-4132
-4133
-4134
-4135
-4136
-4137
-4138
-4139
-4140
-4141
-4142
-4143
-4144
-4145
-4146
-4147
-4148
-4149
-4150
-4151
-4152
-4153
-4154
-4155
-4156
-4157
-4158
-4159
-4160
-4161
-4162
-4163
-4164
-4165
-4166
-4167
-4168
-4169
-4170
-4171
-4172
-4173
-4174
-4175
-4176
-4177
-4178
-4179
-4180
-4181
-4182
-4183
-4184
-4185
-4186
-4187
-4188
-4189
-4190
-4191
-4192
-4193
-4194
-4195
-4196
-4197
-4198
-4199
-4200
-4201
-4202
-4203
-4204
-4205
-4206
-4207
-4208
-4209
-4210
-4211
-4212
-4213
-4214
-4215
-4216
-4217
-4218
-4219
-4220
-4221
-4222
-4223
-4224
-4225
-4226
-4227
-4228
-4229
-4230
-4231
-4232
-4233
-4234
-4235
-4236
-4237
-4238
-4239
-4240
-4241
-4242
-4243
-4244
-4245
-4246
-4247
-4248
-4249
-4250
-4251
-4252
-4253
-4254
-4255
-4256
-4257
-4258
-4259
-4260
-4261
-4262
-4263
-4264
-4265
-4266
-4267
-4268
-4269
-4270
-4271
-4272
-4273
-4274
-4275
-4276
-4277
-4278
-4279
-4280
-4281
-4282
-4283
-4284
-4285
-4286
-4287
-4288
-4289
-4290
-4291
-4292
-4293
-4294
-4295
-4296
-4297
-4298
-4299
-4300
-4301
-4302
-4303
-4304
-4305
-4306
-4307
-4308
-4309
-4310
-4311
-4312
-4313
-4314
-4315
-4316
-4317
-4318
-4319
-4320
-4321
-4322
-4323
-4324
-4325
-4326
-4327
-4328
-4329
-4330
-4331
-4332
-4333
-4334
-4335
-4336
-4337
-4338
-4339
-4340
-4341
-4342
-4343
-4344
-4345
-4346
-4347
-4348
-4349
-4350
-4351
-4352
-4353
-4354
-4355
-4356
-4357
-4358
-4359
-4360
-4361
-4362
-4363
-4364
-4365
-4366
-4367
-4368
-4369
-4370
-4371
-4372
-4373
-4374
-4375
-4376
-4377
-4378
-4379
-4380
-4381
-4382
-4383
-4384
-4385
-4386
-4387
-4388
-4389
-4390
-4391
-4392
-4393
-4394
-4395
-4396
-4397
-4398
-4399
-4400
-4401
-4402
-4403
-4404
-4405
-4406
-4407
-4408
-4409
-4410
-4411
-4412
-4413
-4414
-4415
-4416
-4417
-4418
-4419
-4420
-4421
-4422
-4423
-4424
-4425
-4426
-4427
-4428
-4429
-4430
-4431
-4432
-4433
-4434
-4435
-4436
-4437
-4438
-4439
-4440
-4441
-4442
-4443
-4444
-4445
-4446
-4447
-4448
-4449
-4450
-4451
-4452
-4453
-4454
-4455
-4456
-4457
-4458
-4459
-4460
-4461
-4462
-4463
-4464
-4465
-4466
-4467
-4468
-4469
-4470
-4471
-4472
-4473
-4474
-4475
-4476
-4477
-4478
-4479
-4480
-4481
-4482
-4483
-4484
-4485
-4486
-4487
-4488
-4489
-4490
-4491
-4492
-4493
-4494
-4495
-4496
-4497
-4498
-4499
-4500
-4501
-4502
-4503
-4504
-4505
-4506
-4507
-4508
-4509
-4510
-4511
-4512
-4513
-4514
-4515
-4516
-4517
-4518
-4519
-4520
-4521
-4522
-4523
-4524
-4525
-4526
-4527
-4528
-4529
-4530
-4531
-4532
-4533
-4534
-4535
-4536
-4537
-4538
-4539
-4540
-4541
-4542
-4543
-4544
-4545
-4546
-4547
-4548
-4549
-4550
-4551
-4552
-4553
-4554
-4555
-4556
-4557
-4558
-4559
-4560
-4561
-4562
-4563
-4564
-4565
-4566
-4567
-4568
-4569
-4570
-4571
-4572
-4573
-4574
-4575
-4576
-4577
-4578
-4579
-4580
-4581
-4582
-4583
-4584
-4585
-4586
-4587
-4588
-4589
-4590
-4591
-4592
-4593
-4594
-4595
-4596
-4597
-4598
-4599
-4600
-4601
-4602
-4603
-4604
-4605
-4606
-4607
-4608
-4609
-4610
-4611
-4612
-4613
-4614
-4615
-4616
-4617
-4618
-4619
-4620
-4621
-4622
-4623
-4624
-4625
-4626
-4627
-4628
-4629
-4630
-4631
-4632
-4633
-4634
-4635
-4636
-4637
-4638
-4639
-4640
-4641
-4642
-4643
-4644
-4645
-4646
-4647
-4648
-4649
-4650
-4651
-4652
-4653
-4654
-4655
-4656
-4657
-4658
-4659
-4660
-4661
-4662
-4663
-4664
-4665
-4666
-4667
-4668
-4669
-4670
-4671
-4672
-4673
-4674
-4675
-4676
-4677
-4678
-4679
-4680
-4681
-4682
-4683
-4684
-4685
-4686
-4687
-4688
-4689
-4690
-4691
-4692
-4693
-4694
-4695
-4696
-4697
-4698
-4699
-4700
-4701
-4702
-4703
-4704
-4705
-4706
-4707
-4708
-4709
-4710
-4711
-4712
-4713
-4714
-4715
-4716
-4717
-4718
-4719
-4720
-4721
-4722
-4723
-4724
-4725
-4726
-4727
-4728
-4729
-4730
-4731
-4732
-4733
-4734
-4735
-4736
-4737
-4738
-4739
-4740
-4741
-4742
-4743
-4744
-4745
-4746
-4747
-4748
-4749
-4750
-4751
-4752
-4753
-4754
-4755
-4756
-4757
-4758
-4759
-4760
-4761
-4762
-4763
-4764
-4765
-4766
-4767
-4768
-4769
-4770
-4771
-4772
-4773
-4774
-4775
-4776
-4777
-4778
-4779
-4780
-4781
-4782
-4783
-4784
-4785
-4786
-4787
-4788
-4789
-4790
-4791
-4792
-4793
-4794
-4795
-4796
-4797
-4798
-4799
-4800
-4801
-4802
-4803
-4804
-4805
-4806
-4807
-4808
-4809
-4810
-4811
-4812
-4813
-4814
-4815
-4816
-4817
-4818
-4819
-4820
-4821
-4822
-4823
-4824
-4825
-4826
-4827
-4828
-4829
-4830
-4831
-4832
-4833
-4834
-4835
-4836
-4837
-4838
-4839
-4840
-4841
-4842
-4843
-4844
-4845
-4846
-4847
-4848
-4849
-4850
-4851
-4852
-4853
-4854
-4855
-4856
-4857
-4858
-4859
-4860
-4861
-4862
-4863
-4864
-4865
-4866
-4867
-4868
-4869
-4870
-4871
-4872
-4873
-4874
-4875
-4876
-4877
-4878
-4879
-4880
-4881
-4882
-4883
-4884
-4885
-4886
-4887
-4888
-4889
-4890
-4891
-4892
-4893
-4894
-4895
-4896
-4897
-4898
-4899
-4900
-4901
-4902
-4903
-4904
-4905
-4906
-4907
-4908
-4909
-4910
-4911
-4912
-4913
-4914
-4915
-4916
-4917
-4918
-4919
-4920
-4921
-4922
-4923
-4924
-4925
-4926
-4927
-4928
-4929
-4930
-4931
-4932
-4933
-4934
-4935
-4936
-4937
-4938
-4939
-4940
-4941
-4942
-4943
-4944
-4945
-4946
-4947
-4948
-4949
-4950
-4951
-4952
-4953
-4954
-4955
-4956
-4957
-4958
-4959
-4960
-4961
-4962
-4963
-4964
-4965
-4966
-4967
-4968
-4969
-4970
-4971
-4972
-4973
-4974
-4975
-4976
-4977
-4978
-4979
-4980
-4981
-4982
-4983
-4984
-4985
-4986
-4987
-4988
-4989
-4990
-4991
-4992
-4993
-4994
-4995
-4996
-4997
-4998
-4999
-Stopping
Index: tests/concurrent/waitfor/.expect/dtor.txt
===================================================================
--- tests/concurrent/waitfor/.expect/dtor.txt	(revision 8a919cfec5f277378c3bc7e5d16717f7d44058c6)
+++ 	(revision )
@@ -1,2 +1,0 @@
-Starting
-Stopping
Index: tests/concurrent/waitfor/.expect/else.txt
===================================================================
--- tests/concurrent/waitfor/.expect/else.txt	(revision 8a919cfec5f277378c3bc7e5d16717f7d44058c6)
+++ 	(revision )
@@ -1,9 +1,0 @@
-Starting
-Step 0
-else called
-Step 1
-else called
-Step 2
-else called
-Step 3
-Done
Index: tests/concurrent/waitfor/.expect/recurse.txt
===================================================================
--- tests/concurrent/waitfor/.expect/recurse.txt	(revision 8a919cfec5f277378c3bc7e5d16717f7d44058c6)
+++ 	(revision )
@@ -1,5002 +1,0 @@
-Starting
-0 1st 2nd 3rd Last 3rd 2nd 1st
-1 1st 2nd 3rd Last 3rd 2nd 1st
-2 1st 2nd 3rd Last 3rd 2nd 1st
-3 1st 2nd 3rd Last 3rd 2nd 1st
-4 1st 2nd 3rd Last 3rd 2nd 1st
-5 1st 2nd 3rd Last 3rd 2nd 1st
-6 1st 2nd 3rd Last 3rd 2nd 1st
-7 1st 2nd 3rd Last 3rd 2nd 1st
-8 1st 2nd 3rd Last 3rd 2nd 1st
-9 1st 2nd 3rd Last 3rd 2nd 1st
-10 1st 2nd 3rd Last 3rd 2nd 1st
-11 1st 2nd 3rd Last 3rd 2nd 1st
-12 1st 2nd 3rd Last 3rd 2nd 1st
-13 1st 2nd 3rd Last 3rd 2nd 1st
-14 1st 2nd 3rd Last 3rd 2nd 1st
-15 1st 2nd 3rd Last 3rd 2nd 1st
-16 1st 2nd 3rd Last 3rd 2nd 1st
-17 1st 2nd 3rd Last 3rd 2nd 1st
-18 1st 2nd 3rd Last 3rd 2nd 1st
-19 1st 2nd 3rd Last 3rd 2nd 1st
-20 1st 2nd 3rd Last 3rd 2nd 1st
-21 1st 2nd 3rd Last 3rd 2nd 1st
-22 1st 2nd 3rd Last 3rd 2nd 1st
-23 1st 2nd 3rd Last 3rd 2nd 1st
-24 1st 2nd 3rd Last 3rd 2nd 1st
-25 1st 2nd 3rd Last 3rd 2nd 1st
-26 1st 2nd 3rd Last 3rd 2nd 1st
-27 1st 2nd 3rd Last 3rd 2nd 1st
-28 1st 2nd 3rd Last 3rd 2nd 1st
-29 1st 2nd 3rd Last 3rd 2nd 1st
-30 1st 2nd 3rd Last 3rd 2nd 1st
-31 1st 2nd 3rd Last 3rd 2nd 1st
-32 1st 2nd 3rd Last 3rd 2nd 1st
-33 1st 2nd 3rd Last 3rd 2nd 1st
-34 1st 2nd 3rd Last 3rd 2nd 1st
-35 1st 2nd 3rd Last 3rd 2nd 1st
-36 1st 2nd 3rd Last 3rd 2nd 1st
-37 1st 2nd 3rd Last 3rd 2nd 1st
-38 1st 2nd 3rd Last 3rd 2nd 1st
-39 1st 2nd 3rd Last 3rd 2nd 1st
-40 1st 2nd 3rd Last 3rd 2nd 1st
-41 1st 2nd 3rd Last 3rd 2nd 1st
-42 1st 2nd 3rd Last 3rd 2nd 1st
-43 1st 2nd 3rd Last 3rd 2nd 1st
-44 1st 2nd 3rd Last 3rd 2nd 1st
-45 1st 2nd 3rd Last 3rd 2nd 1st
-46 1st 2nd 3rd Last 3rd 2nd 1st
-47 1st 2nd 3rd Last 3rd 2nd 1st
-48 1st 2nd 3rd Last 3rd 2nd 1st
-49 1st 2nd 3rd Last 3rd 2nd 1st
-50 1st 2nd 3rd Last 3rd 2nd 1st
-51 1st 2nd 3rd Last 3rd 2nd 1st
-52 1st 2nd 3rd Last 3rd 2nd 1st
-53 1st 2nd 3rd Last 3rd 2nd 1st
-54 1st 2nd 3rd Last 3rd 2nd 1st
-55 1st 2nd 3rd Last 3rd 2nd 1st
-56 1st 2nd 3rd Last 3rd 2nd 1st
-57 1st 2nd 3rd Last 3rd 2nd 1st
-58 1st 2nd 3rd Last 3rd 2nd 1st
-59 1st 2nd 3rd Last 3rd 2nd 1st
-60 1st 2nd 3rd Last 3rd 2nd 1st
-61 1st 2nd 3rd Last 3rd 2nd 1st
-62 1st 2nd 3rd Last 3rd 2nd 1st
-63 1st 2nd 3rd Last 3rd 2nd 1st
-64 1st 2nd 3rd Last 3rd 2nd 1st
-65 1st 2nd 3rd Last 3rd 2nd 1st
-66 1st 2nd 3rd Last 3rd 2nd 1st
-67 1st 2nd 3rd Last 3rd 2nd 1st
-68 1st 2nd 3rd Last 3rd 2nd 1st
-69 1st 2nd 3rd Last 3rd 2nd 1st
-70 1st 2nd 3rd Last 3rd 2nd 1st
-71 1st 2nd 3rd Last 3rd 2nd 1st
-72 1st 2nd 3rd Last 3rd 2nd 1st
-73 1st 2nd 3rd Last 3rd 2nd 1st
-74 1st 2nd 3rd Last 3rd 2nd 1st
-75 1st 2nd 3rd Last 3rd 2nd 1st
-76 1st 2nd 3rd Last 3rd 2nd 1st
-77 1st 2nd 3rd Last 3rd 2nd 1st
-78 1st 2nd 3rd Last 3rd 2nd 1st
-79 1st 2nd 3rd Last 3rd 2nd 1st
-80 1st 2nd 3rd Last 3rd 2nd 1st
-81 1st 2nd 3rd Last 3rd 2nd 1st
-82 1st 2nd 3rd Last 3rd 2nd 1st
-83 1st 2nd 3rd Last 3rd 2nd 1st
-84 1st 2nd 3rd Last 3rd 2nd 1st
-85 1st 2nd 3rd Last 3rd 2nd 1st
-86 1st 2nd 3rd Last 3rd 2nd 1st
-87 1st 2nd 3rd Last 3rd 2nd 1st
-88 1st 2nd 3rd Last 3rd 2nd 1st
-89 1st 2nd 3rd Last 3rd 2nd 1st
-90 1st 2nd 3rd Last 3rd 2nd 1st
-91 1st 2nd 3rd Last 3rd 2nd 1st
-92 1st 2nd 3rd Last 3rd 2nd 1st
-93 1st 2nd 3rd Last 3rd 2nd 1st
-94 1st 2nd 3rd Last 3rd 2nd 1st
-95 1st 2nd 3rd Last 3rd 2nd 1st
-96 1st 2nd 3rd Last 3rd 2nd 1st
-97 1st 2nd 3rd Last 3rd 2nd 1st
-98 1st 2nd 3rd Last 3rd 2nd 1st
-99 1st 2nd 3rd Last 3rd 2nd 1st
-100 1st 2nd 3rd Last 3rd 2nd 1st
-101 1st 2nd 3rd Last 3rd 2nd 1st
-102 1st 2nd 3rd Last 3rd 2nd 1st
-103 1st 2nd 3rd Last 3rd 2nd 1st
-104 1st 2nd 3rd Last 3rd 2nd 1st
-105 1st 2nd 3rd Last 3rd 2nd 1st
-106 1st 2nd 3rd Last 3rd 2nd 1st
-107 1st 2nd 3rd Last 3rd 2nd 1st
-108 1st 2nd 3rd Last 3rd 2nd 1st
-109 1st 2nd 3rd Last 3rd 2nd 1st
-110 1st 2nd 3rd Last 3rd 2nd 1st
-111 1st 2nd 3rd Last 3rd 2nd 1st
-112 1st 2nd 3rd Last 3rd 2nd 1st
-113 1st 2nd 3rd Last 3rd 2nd 1st
-114 1st 2nd 3rd Last 3rd 2nd 1st
-115 1st 2nd 3rd Last 3rd 2nd 1st
-116 1st 2nd 3rd Last 3rd 2nd 1st
-117 1st 2nd 3rd Last 3rd 2nd 1st
-118 1st 2nd 3rd Last 3rd 2nd 1st
-119 1st 2nd 3rd Last 3rd 2nd 1st
-120 1st 2nd 3rd Last 3rd 2nd 1st
-121 1st 2nd 3rd Last 3rd 2nd 1st
-122 1st 2nd 3rd Last 3rd 2nd 1st
-123 1st 2nd 3rd Last 3rd 2nd 1st
-124 1st 2nd 3rd Last 3rd 2nd 1st
-125 1st 2nd 3rd Last 3rd 2nd 1st
-126 1st 2nd 3rd Last 3rd 2nd 1st
-127 1st 2nd 3rd Last 3rd 2nd 1st
-128 1st 2nd 3rd Last 3rd 2nd 1st
-129 1st 2nd 3rd Last 3rd 2nd 1st
-130 1st 2nd 3rd Last 3rd 2nd 1st
-131 1st 2nd 3rd Last 3rd 2nd 1st
-132 1st 2nd 3rd Last 3rd 2nd 1st
-133 1st 2nd 3rd Last 3rd 2nd 1st
-134 1st 2nd 3rd Last 3rd 2nd 1st
-135 1st 2nd 3rd Last 3rd 2nd 1st
-136 1st 2nd 3rd Last 3rd 2nd 1st
-137 1st 2nd 3rd Last 3rd 2nd 1st
-138 1st 2nd 3rd Last 3rd 2nd 1st
-139 1st 2nd 3rd Last 3rd 2nd 1st
-140 1st 2nd 3rd Last 3rd 2nd 1st
-141 1st 2nd 3rd Last 3rd 2nd 1st
-142 1st 2nd 3rd Last 3rd 2nd 1st
-143 1st 2nd 3rd Last 3rd 2nd 1st
-144 1st 2nd 3rd Last 3rd 2nd 1st
-145 1st 2nd 3rd Last 3rd 2nd 1st
-146 1st 2nd 3rd Last 3rd 2nd 1st
-147 1st 2nd 3rd Last 3rd 2nd 1st
-148 1st 2nd 3rd Last 3rd 2nd 1st
-149 1st 2nd 3rd Last 3rd 2nd 1st
-150 1st 2nd 3rd Last 3rd 2nd 1st
-151 1st 2nd 3rd Last 3rd 2nd 1st
-152 1st 2nd 3rd Last 3rd 2nd 1st
-153 1st 2nd 3rd Last 3rd 2nd 1st
-154 1st 2nd 3rd Last 3rd 2nd 1st
-155 1st 2nd 3rd Last 3rd 2nd 1st
-156 1st 2nd 3rd Last 3rd 2nd 1st
-157 1st 2nd 3rd Last 3rd 2nd 1st
-158 1st 2nd 3rd Last 3rd 2nd 1st
-159 1st 2nd 3rd Last 3rd 2nd 1st
-160 1st 2nd 3rd Last 3rd 2nd 1st
-161 1st 2nd 3rd Last 3rd 2nd 1st
-162 1st 2nd 3rd Last 3rd 2nd 1st
-163 1st 2nd 3rd Last 3rd 2nd 1st
-164 1st 2nd 3rd Last 3rd 2nd 1st
-165 1st 2nd 3rd Last 3rd 2nd 1st
-166 1st 2nd 3rd Last 3rd 2nd 1st
-167 1st 2nd 3rd Last 3rd 2nd 1st
-168 1st 2nd 3rd Last 3rd 2nd 1st
-169 1st 2nd 3rd Last 3rd 2nd 1st
-170 1st 2nd 3rd Last 3rd 2nd 1st
-171 1st 2nd 3rd Last 3rd 2nd 1st
-172 1st 2nd 3rd Last 3rd 2nd 1st
-173 1st 2nd 3rd Last 3rd 2nd 1st
-174 1st 2nd 3rd Last 3rd 2nd 1st
-175 1st 2nd 3rd Last 3rd 2nd 1st
-176 1st 2nd 3rd Last 3rd 2nd 1st
-177 1st 2nd 3rd Last 3rd 2nd 1st
-178 1st 2nd 3rd Last 3rd 2nd 1st
-179 1st 2nd 3rd Last 3rd 2nd 1st
-180 1st 2nd 3rd Last 3rd 2nd 1st
-181 1st 2nd 3rd Last 3rd 2nd 1st
-182 1st 2nd 3rd Last 3rd 2nd 1st
-183 1st 2nd 3rd Last 3rd 2nd 1st
-184 1st 2nd 3rd Last 3rd 2nd 1st
-185 1st 2nd 3rd Last 3rd 2nd 1st
-186 1st 2nd 3rd Last 3rd 2nd 1st
-187 1st 2nd 3rd Last 3rd 2nd 1st
-188 1st 2nd 3rd Last 3rd 2nd 1st
-189 1st 2nd 3rd Last 3rd 2nd 1st
-190 1st 2nd 3rd Last 3rd 2nd 1st
-191 1st 2nd 3rd Last 3rd 2nd 1st
-192 1st 2nd 3rd Last 3rd 2nd 1st
-193 1st 2nd 3rd Last 3rd 2nd 1st
-194 1st 2nd 3rd Last 3rd 2nd 1st
-195 1st 2nd 3rd Last 3rd 2nd 1st
-196 1st 2nd 3rd Last 3rd 2nd 1st
-197 1st 2nd 3rd Last 3rd 2nd 1st
-198 1st 2nd 3rd Last 3rd 2nd 1st
-199 1st 2nd 3rd Last 3rd 2nd 1st
-200 1st 2nd 3rd Last 3rd 2nd 1st
-201 1st 2nd 3rd Last 3rd 2nd 1st
-202 1st 2nd 3rd Last 3rd 2nd 1st
-203 1st 2nd 3rd Last 3rd 2nd 1st
-204 1st 2nd 3rd Last 3rd 2nd 1st
-205 1st 2nd 3rd Last 3rd 2nd 1st
-206 1st 2nd 3rd Last 3rd 2nd 1st
-207 1st 2nd 3rd Last 3rd 2nd 1st
-208 1st 2nd 3rd Last 3rd 2nd 1st
-209 1st 2nd 3rd Last 3rd 2nd 1st
-210 1st 2nd 3rd Last 3rd 2nd 1st
-211 1st 2nd 3rd Last 3rd 2nd 1st
-212 1st 2nd 3rd Last 3rd 2nd 1st
-213 1st 2nd 3rd Last 3rd 2nd 1st
-214 1st 2nd 3rd Last 3rd 2nd 1st
-215 1st 2nd 3rd Last 3rd 2nd 1st
-216 1st 2nd 3rd Last 3rd 2nd 1st
-217 1st 2nd 3rd Last 3rd 2nd 1st
-218 1st 2nd 3rd Last 3rd 2nd 1st
-219 1st 2nd 3rd Last 3rd 2nd 1st
-220 1st 2nd 3rd Last 3rd 2nd 1st
-221 1st 2nd 3rd Last 3rd 2nd 1st
-222 1st 2nd 3rd Last 3rd 2nd 1st
-223 1st 2nd 3rd Last 3rd 2nd 1st
-224 1st 2nd 3rd Last 3rd 2nd 1st
-225 1st 2nd 3rd Last 3rd 2nd 1st
-226 1st 2nd 3rd Last 3rd 2nd 1st
-227 1st 2nd 3rd Last 3rd 2nd 1st
-228 1st 2nd 3rd Last 3rd 2nd 1st
-229 1st 2nd 3rd Last 3rd 2nd 1st
-230 1st 2nd 3rd Last 3rd 2nd 1st
-231 1st 2nd 3rd Last 3rd 2nd 1st
-232 1st 2nd 3rd Last 3rd 2nd 1st
-233 1st 2nd 3rd Last 3rd 2nd 1st
-234 1st 2nd 3rd Last 3rd 2nd 1st
-235 1st 2nd 3rd Last 3rd 2nd 1st
-236 1st 2nd 3rd Last 3rd 2nd 1st
-237 1st 2nd 3rd Last 3rd 2nd 1st
-238 1st 2nd 3rd Last 3rd 2nd 1st
-239 1st 2nd 3rd Last 3rd 2nd 1st
-240 1st 2nd 3rd Last 3rd 2nd 1st
-241 1st 2nd 3rd Last 3rd 2nd 1st
-242 1st 2nd 3rd Last 3rd 2nd 1st
-243 1st 2nd 3rd Last 3rd 2nd 1st
-244 1st 2nd 3rd Last 3rd 2nd 1st
-245 1st 2nd 3rd Last 3rd 2nd 1st
-246 1st 2nd 3rd Last 3rd 2nd 1st
-247 1st 2nd 3rd Last 3rd 2nd 1st
-248 1st 2nd 3rd Last 3rd 2nd 1st
-249 1st 2nd 3rd Last 3rd 2nd 1st
-250 1st 2nd 3rd Last 3rd 2nd 1st
-251 1st 2nd 3rd Last 3rd 2nd 1st
-252 1st 2nd 3rd Last 3rd 2nd 1st
-253 1st 2nd 3rd Last 3rd 2nd 1st
-254 1st 2nd 3rd Last 3rd 2nd 1st
-255 1st 2nd 3rd Last 3rd 2nd 1st
-256 1st 2nd 3rd Last 3rd 2nd 1st
-257 1st 2nd 3rd Last 3rd 2nd 1st
-258 1st 2nd 3rd Last 3rd 2nd 1st
-259 1st 2nd 3rd Last 3rd 2nd 1st
-260 1st 2nd 3rd Last 3rd 2nd 1st
-261 1st 2nd 3rd Last 3rd 2nd 1st
-262 1st 2nd 3rd Last 3rd 2nd 1st
-263 1st 2nd 3rd Last 3rd 2nd 1st
-264 1st 2nd 3rd Last 3rd 2nd 1st
-265 1st 2nd 3rd Last 3rd 2nd 1st
-266 1st 2nd 3rd Last 3rd 2nd 1st
-267 1st 2nd 3rd Last 3rd 2nd 1st
-268 1st 2nd 3rd Last 3rd 2nd 1st
-269 1st 2nd 3rd Last 3rd 2nd 1st
-270 1st 2nd 3rd Last 3rd 2nd 1st
-271 1st 2nd 3rd Last 3rd 2nd 1st
-272 1st 2nd 3rd Last 3rd 2nd 1st
-273 1st 2nd 3rd Last 3rd 2nd 1st
-274 1st 2nd 3rd Last 3rd 2nd 1st
-275 1st 2nd 3rd Last 3rd 2nd 1st
-276 1st 2nd 3rd Last 3rd 2nd 1st
-277 1st 2nd 3rd Last 3rd 2nd 1st
-278 1st 2nd 3rd Last 3rd 2nd 1st
-279 1st 2nd 3rd Last 3rd 2nd 1st
-280 1st 2nd 3rd Last 3rd 2nd 1st
-281 1st 2nd 3rd Last 3rd 2nd 1st
-282 1st 2nd 3rd Last 3rd 2nd 1st
-283 1st 2nd 3rd Last 3rd 2nd 1st
-284 1st 2nd 3rd Last 3rd 2nd 1st
-285 1st 2nd 3rd Last 3rd 2nd 1st
-286 1st 2nd 3rd Last 3rd 2nd 1st
-287 1st 2nd 3rd Last 3rd 2nd 1st
-288 1st 2nd 3rd Last 3rd 2nd 1st
-289 1st 2nd 3rd Last 3rd 2nd 1st
-290 1st 2nd 3rd Last 3rd 2nd 1st
-291 1st 2nd 3rd Last 3rd 2nd 1st
-292 1st 2nd 3rd Last 3rd 2nd 1st
-293 1st 2nd 3rd Last 3rd 2nd 1st
-294 1st 2nd 3rd Last 3rd 2nd 1st
-295 1st 2nd 3rd Last 3rd 2nd 1st
-296 1st 2nd 3rd Last 3rd 2nd 1st
-297 1st 2nd 3rd Last 3rd 2nd 1st
-298 1st 2nd 3rd Last 3rd 2nd 1st
-299 1st 2nd 3rd Last 3rd 2nd 1st
-300 1st 2nd 3rd Last 3rd 2nd 1st
-301 1st 2nd 3rd Last 3rd 2nd 1st
-302 1st 2nd 3rd Last 3rd 2nd 1st
-303 1st 2nd 3rd Last 3rd 2nd 1st
-304 1st 2nd 3rd Last 3rd 2nd 1st
-305 1st 2nd 3rd Last 3rd 2nd 1st
-306 1st 2nd 3rd Last 3rd 2nd 1st
-307 1st 2nd 3rd Last 3rd 2nd 1st
-308 1st 2nd 3rd Last 3rd 2nd 1st
-309 1st 2nd 3rd Last 3rd 2nd 1st
-310 1st 2nd 3rd Last 3rd 2nd 1st
-311 1st 2nd 3rd Last 3rd 2nd 1st
-312 1st 2nd 3rd Last 3rd 2nd 1st
-313 1st 2nd 3rd Last 3rd 2nd 1st
-314 1st 2nd 3rd Last 3rd 2nd 1st
-315 1st 2nd 3rd Last 3rd 2nd 1st
-316 1st 2nd 3rd Last 3rd 2nd 1st
-317 1st 2nd 3rd Last 3rd 2nd 1st
-318 1st 2nd 3rd Last 3rd 2nd 1st
-319 1st 2nd 3rd Last 3rd 2nd 1st
-320 1st 2nd 3rd Last 3rd 2nd 1st
-321 1st 2nd 3rd Last 3rd 2nd 1st
-322 1st 2nd 3rd Last 3rd 2nd 1st
-323 1st 2nd 3rd Last 3rd 2nd 1st
-324 1st 2nd 3rd Last 3rd 2nd 1st
-325 1st 2nd 3rd Last 3rd 2nd 1st
-326 1st 2nd 3rd Last 3rd 2nd 1st
-327 1st 2nd 3rd Last 3rd 2nd 1st
-328 1st 2nd 3rd Last 3rd 2nd 1st
-329 1st 2nd 3rd Last 3rd 2nd 1st
-330 1st 2nd 3rd Last 3rd 2nd 1st
-331 1st 2nd 3rd Last 3rd 2nd 1st
-332 1st 2nd 3rd Last 3rd 2nd 1st
-333 1st 2nd 3rd Last 3rd 2nd 1st
-334 1st 2nd 3rd Last 3rd 2nd 1st
-335 1st 2nd 3rd Last 3rd 2nd 1st
-336 1st 2nd 3rd Last 3rd 2nd 1st
-337 1st 2nd 3rd Last 3rd 2nd 1st
-338 1st 2nd 3rd Last 3rd 2nd 1st
-339 1st 2nd 3rd Last 3rd 2nd 1st
-340 1st 2nd 3rd Last 3rd 2nd 1st
-341 1st 2nd 3rd Last 3rd 2nd 1st
-342 1st 2nd 3rd Last 3rd 2nd 1st
-343 1st 2nd 3rd Last 3rd 2nd 1st
-344 1st 2nd 3rd Last 3rd 2nd 1st
-345 1st 2nd 3rd Last 3rd 2nd 1st
-346 1st 2nd 3rd Last 3rd 2nd 1st
-347 1st 2nd 3rd Last 3rd 2nd 1st
-348 1st 2nd 3rd Last 3rd 2nd 1st
-349 1st 2nd 3rd Last 3rd 2nd 1st
-350 1st 2nd 3rd Last 3rd 2nd 1st
-351 1st 2nd 3rd Last 3rd 2nd 1st
-352 1st 2nd 3rd Last 3rd 2nd 1st
-353 1st 2nd 3rd Last 3rd 2nd 1st
-354 1st 2nd 3rd Last 3rd 2nd 1st
-355 1st 2nd 3rd Last 3rd 2nd 1st
-356 1st 2nd 3rd Last 3rd 2nd 1st
-357 1st 2nd 3rd Last 3rd 2nd 1st
-358 1st 2nd 3rd Last 3rd 2nd 1st
-359 1st 2nd 3rd Last 3rd 2nd 1st
-360 1st 2nd 3rd Last 3rd 2nd 1st
-361 1st 2nd 3rd Last 3rd 2nd 1st
-362 1st 2nd 3rd Last 3rd 2nd 1st
-363 1st 2nd 3rd Last 3rd 2nd 1st
-364 1st 2nd 3rd Last 3rd 2nd 1st
-365 1st 2nd 3rd Last 3rd 2nd 1st
-366 1st 2nd 3rd Last 3rd 2nd 1st
-367 1st 2nd 3rd Last 3rd 2nd 1st
-368 1st 2nd 3rd Last 3rd 2nd 1st
-369 1st 2nd 3rd Last 3rd 2nd 1st
-370 1st 2nd 3rd Last 3rd 2nd 1st
-371 1st 2nd 3rd Last 3rd 2nd 1st
-372 1st 2nd 3rd Last 3rd 2nd 1st
-373 1st 2nd 3rd Last 3rd 2nd 1st
-374 1st 2nd 3rd Last 3rd 2nd 1st
-375 1st 2nd 3rd Last 3rd 2nd 1st
-376 1st 2nd 3rd Last 3rd 2nd 1st
-377 1st 2nd 3rd Last 3rd 2nd 1st
-378 1st 2nd 3rd Last 3rd 2nd 1st
-379 1st 2nd 3rd Last 3rd 2nd 1st
-380 1st 2nd 3rd Last 3rd 2nd 1st
-381 1st 2nd 3rd Last 3rd 2nd 1st
-382 1st 2nd 3rd Last 3rd 2nd 1st
-383 1st 2nd 3rd Last 3rd 2nd 1st
-384 1st 2nd 3rd Last 3rd 2nd 1st
-385 1st 2nd 3rd Last 3rd 2nd 1st
-386 1st 2nd 3rd Last 3rd 2nd 1st
-387 1st 2nd 3rd Last 3rd 2nd 1st
-388 1st 2nd 3rd Last 3rd 2nd 1st
-389 1st 2nd 3rd Last 3rd 2nd 1st
-390 1st 2nd 3rd Last 3rd 2nd 1st
-391 1st 2nd 3rd Last 3rd 2nd 1st
-392 1st 2nd 3rd Last 3rd 2nd 1st
-393 1st 2nd 3rd Last 3rd 2nd 1st
-394 1st 2nd 3rd Last 3rd 2nd 1st
-395 1st 2nd 3rd Last 3rd 2nd 1st
-396 1st 2nd 3rd Last 3rd 2nd 1st
-397 1st 2nd 3rd Last 3rd 2nd 1st
-398 1st 2nd 3rd Last 3rd 2nd 1st
-399 1st 2nd 3rd Last 3rd 2nd 1st
-400 1st 2nd 3rd Last 3rd 2nd 1st
-401 1st 2nd 3rd Last 3rd 2nd 1st
-402 1st 2nd 3rd Last 3rd 2nd 1st
-403 1st 2nd 3rd Last 3rd 2nd 1st
-404 1st 2nd 3rd Last 3rd 2nd 1st
-405 1st 2nd 3rd Last 3rd 2nd 1st
-406 1st 2nd 3rd Last 3rd 2nd 1st
-407 1st 2nd 3rd Last 3rd 2nd 1st
-408 1st 2nd 3rd Last 3rd 2nd 1st
-409 1st 2nd 3rd Last 3rd 2nd 1st
-410 1st 2nd 3rd Last 3rd 2nd 1st
-411 1st 2nd 3rd Last 3rd 2nd 1st
-412 1st 2nd 3rd Last 3rd 2nd 1st
-413 1st 2nd 3rd Last 3rd 2nd 1st
-414 1st 2nd 3rd Last 3rd 2nd 1st
-415 1st 2nd 3rd Last 3rd 2nd 1st
-416 1st 2nd 3rd Last 3rd 2nd 1st
-417 1st 2nd 3rd Last 3rd 2nd 1st
-418 1st 2nd 3rd Last 3rd 2nd 1st
-419 1st 2nd 3rd Last 3rd 2nd 1st
-420 1st 2nd 3rd Last 3rd 2nd 1st
-421 1st 2nd 3rd Last 3rd 2nd 1st
-422 1st 2nd 3rd Last 3rd 2nd 1st
-423 1st 2nd 3rd Last 3rd 2nd 1st
-424 1st 2nd 3rd Last 3rd 2nd 1st
-425 1st 2nd 3rd Last 3rd 2nd 1st
-426 1st 2nd 3rd Last 3rd 2nd 1st
-427 1st 2nd 3rd Last 3rd 2nd 1st
-428 1st 2nd 3rd Last 3rd 2nd 1st
-429 1st 2nd 3rd Last 3rd 2nd 1st
-430 1st 2nd 3rd Last 3rd 2nd 1st
-431 1st 2nd 3rd Last 3rd 2nd 1st
-432 1st 2nd 3rd Last 3rd 2nd 1st
-433 1st 2nd 3rd Last 3rd 2nd 1st
-434 1st 2nd 3rd Last 3rd 2nd 1st
-435 1st 2nd 3rd Last 3rd 2nd 1st
-436 1st 2nd 3rd Last 3rd 2nd 1st
-437 1st 2nd 3rd Last 3rd 2nd 1st
-438 1st 2nd 3rd Last 3rd 2nd 1st
-439 1st 2nd 3rd Last 3rd 2nd 1st
-440 1st 2nd 3rd Last 3rd 2nd 1st
-441 1st 2nd 3rd Last 3rd 2nd 1st
-442 1st 2nd 3rd Last 3rd 2nd 1st
-443 1st 2nd 3rd Last 3rd 2nd 1st
-444 1st 2nd 3rd Last 3rd 2nd 1st
-445 1st 2nd 3rd Last 3rd 2nd 1st
-446 1st 2nd 3rd Last 3rd 2nd 1st
-447 1st 2nd 3rd Last 3rd 2nd 1st
-448 1st 2nd 3rd Last 3rd 2nd 1st
-449 1st 2nd 3rd Last 3rd 2nd 1st
-450 1st 2nd 3rd Last 3rd 2nd 1st
-451 1st 2nd 3rd Last 3rd 2nd 1st
-452 1st 2nd 3rd Last 3rd 2nd 1st
-453 1st 2nd 3rd Last 3rd 2nd 1st
-454 1st 2nd 3rd Last 3rd 2nd 1st
-455 1st 2nd 3rd Last 3rd 2nd 1st
-456 1st 2nd 3rd Last 3rd 2nd 1st
-457 1st 2nd 3rd Last 3rd 2nd 1st
-458 1st 2nd 3rd Last 3rd 2nd 1st
-459 1st 2nd 3rd Last 3rd 2nd 1st
-460 1st 2nd 3rd Last 3rd 2nd 1st
-461 1st 2nd 3rd Last 3rd 2nd 1st
-462 1st 2nd 3rd Last 3rd 2nd 1st
-463 1st 2nd 3rd Last 3rd 2nd 1st
-464 1st 2nd 3rd Last 3rd 2nd 1st
-465 1st 2nd 3rd Last 3rd 2nd 1st
-466 1st 2nd 3rd Last 3rd 2nd 1st
-467 1st 2nd 3rd Last 3rd 2nd 1st
-468 1st 2nd 3rd Last 3rd 2nd 1st
-469 1st 2nd 3rd Last 3rd 2nd 1st
-470 1st 2nd 3rd Last 3rd 2nd 1st
-471 1st 2nd 3rd Last 3rd 2nd 1st
-472 1st 2nd 3rd Last 3rd 2nd 1st
-473 1st 2nd 3rd Last 3rd 2nd 1st
-474 1st 2nd 3rd Last 3rd 2nd 1st
-475 1st 2nd 3rd Last 3rd 2nd 1st
-476 1st 2nd 3rd Last 3rd 2nd 1st
-477 1st 2nd 3rd Last 3rd 2nd 1st
-478 1st 2nd 3rd Last 3rd 2nd 1st
-479 1st 2nd 3rd Last 3rd 2nd 1st
-480 1st 2nd 3rd Last 3rd 2nd 1st
-481 1st 2nd 3rd Last 3rd 2nd 1st
-482 1st 2nd 3rd Last 3rd 2nd 1st
-483 1st 2nd 3rd Last 3rd 2nd 1st
-484 1st 2nd 3rd Last 3rd 2nd 1st
-485 1st 2nd 3rd Last 3rd 2nd 1st
-486 1st 2nd 3rd Last 3rd 2nd 1st
-487 1st 2nd 3rd Last 3rd 2nd 1st
-488 1st 2nd 3rd Last 3rd 2nd 1st
-489 1st 2nd 3rd Last 3rd 2nd 1st
-490 1st 2nd 3rd Last 3rd 2nd 1st
-491 1st 2nd 3rd Last 3rd 2nd 1st
-492 1st 2nd 3rd Last 3rd 2nd 1st
-493 1st 2nd 3rd Last 3rd 2nd 1st
-494 1st 2nd 3rd Last 3rd 2nd 1st
-495 1st 2nd 3rd Last 3rd 2nd 1st
-496 1st 2nd 3rd Last 3rd 2nd 1st
-497 1st 2nd 3rd Last 3rd 2nd 1st
-498 1st 2nd 3rd Last 3rd 2nd 1st
-499 1st 2nd 3rd Last 3rd 2nd 1st
-500 1st 2nd 3rd Last 3rd 2nd 1st
-501 1st 2nd 3rd Last 3rd 2nd 1st
-502 1st 2nd 3rd Last 3rd 2nd 1st
-503 1st 2nd 3rd Last 3rd 2nd 1st
-504 1st 2nd 3rd Last 3rd 2nd 1st
-505 1st 2nd 3rd Last 3rd 2nd 1st
-506 1st 2nd 3rd Last 3rd 2nd 1st
-507 1st 2nd 3rd Last 3rd 2nd 1st
-508 1st 2nd 3rd Last 3rd 2nd 1st
-509 1st 2nd 3rd Last 3rd 2nd 1st
-510 1st 2nd 3rd Last 3rd 2nd 1st
-511 1st 2nd 3rd Last 3rd 2nd 1st
-512 1st 2nd 3rd Last 3rd 2nd 1st
-513 1st 2nd 3rd Last 3rd 2nd 1st
-514 1st 2nd 3rd Last 3rd 2nd 1st
-515 1st 2nd 3rd Last 3rd 2nd 1st
-516 1st 2nd 3rd Last 3rd 2nd 1st
-517 1st 2nd 3rd Last 3rd 2nd 1st
-518 1st 2nd 3rd Last 3rd 2nd 1st
-519 1st 2nd 3rd Last 3rd 2nd 1st
-520 1st 2nd 3rd Last 3rd 2nd 1st
-521 1st 2nd 3rd Last 3rd 2nd 1st
-522 1st 2nd 3rd Last 3rd 2nd 1st
-523 1st 2nd 3rd Last 3rd 2nd 1st
-524 1st 2nd 3rd Last 3rd 2nd 1st
-525 1st 2nd 3rd Last 3rd 2nd 1st
-526 1st 2nd 3rd Last 3rd 2nd 1st
-527 1st 2nd 3rd Last 3rd 2nd 1st
-528 1st 2nd 3rd Last 3rd 2nd 1st
-529 1st 2nd 3rd Last 3rd 2nd 1st
-530 1st 2nd 3rd Last 3rd 2nd 1st
-531 1st 2nd 3rd Last 3rd 2nd 1st
-532 1st 2nd 3rd Last 3rd 2nd 1st
-533 1st 2nd 3rd Last 3rd 2nd 1st
-534 1st 2nd 3rd Last 3rd 2nd 1st
-535 1st 2nd 3rd Last 3rd 2nd 1st
-536 1st 2nd 3rd Last 3rd 2nd 1st
-537 1st 2nd 3rd Last 3rd 2nd 1st
-538 1st 2nd 3rd Last 3rd 2nd 1st
-539 1st 2nd 3rd Last 3rd 2nd 1st
-540 1st 2nd 3rd Last 3rd 2nd 1st
-541 1st 2nd 3rd Last 3rd 2nd 1st
-542 1st 2nd 3rd Last 3rd 2nd 1st
-543 1st 2nd 3rd Last 3rd 2nd 1st
-544 1st 2nd 3rd Last 3rd 2nd 1st
-545 1st 2nd 3rd Last 3rd 2nd 1st
-546 1st 2nd 3rd Last 3rd 2nd 1st
-547 1st 2nd 3rd Last 3rd 2nd 1st
-548 1st 2nd 3rd Last 3rd 2nd 1st
-549 1st 2nd 3rd Last 3rd 2nd 1st
-550 1st 2nd 3rd Last 3rd 2nd 1st
-551 1st 2nd 3rd Last 3rd 2nd 1st
-552 1st 2nd 3rd Last 3rd 2nd 1st
-553 1st 2nd 3rd Last 3rd 2nd 1st
-554 1st 2nd 3rd Last 3rd 2nd 1st
-555 1st 2nd 3rd Last 3rd 2nd 1st
-556 1st 2nd 3rd Last 3rd 2nd 1st
-557 1st 2nd 3rd Last 3rd 2nd 1st
-558 1st 2nd 3rd Last 3rd 2nd 1st
-559 1st 2nd 3rd Last 3rd 2nd 1st
-560 1st 2nd 3rd Last 3rd 2nd 1st
-561 1st 2nd 3rd Last 3rd 2nd 1st
-562 1st 2nd 3rd Last 3rd 2nd 1st
-563 1st 2nd 3rd Last 3rd 2nd 1st
-564 1st 2nd 3rd Last 3rd 2nd 1st
-565 1st 2nd 3rd Last 3rd 2nd 1st
-566 1st 2nd 3rd Last 3rd 2nd 1st
-567 1st 2nd 3rd Last 3rd 2nd 1st
-568 1st 2nd 3rd Last 3rd 2nd 1st
-569 1st 2nd 3rd Last 3rd 2nd 1st
-570 1st 2nd 3rd Last 3rd 2nd 1st
-571 1st 2nd 3rd Last 3rd 2nd 1st
-572 1st 2nd 3rd Last 3rd 2nd 1st
-573 1st 2nd 3rd Last 3rd 2nd 1st
-574 1st 2nd 3rd Last 3rd 2nd 1st
-575 1st 2nd 3rd Last 3rd 2nd 1st
-576 1st 2nd 3rd Last 3rd 2nd 1st
-577 1st 2nd 3rd Last 3rd 2nd 1st
-578 1st 2nd 3rd Last 3rd 2nd 1st
-579 1st 2nd 3rd Last 3rd 2nd 1st
-580 1st 2nd 3rd Last 3rd 2nd 1st
-581 1st 2nd 3rd Last 3rd 2nd 1st
-582 1st 2nd 3rd Last 3rd 2nd 1st
-583 1st 2nd 3rd Last 3rd 2nd 1st
-584 1st 2nd 3rd Last 3rd 2nd 1st
-585 1st 2nd 3rd Last 3rd 2nd 1st
-586 1st 2nd 3rd Last 3rd 2nd 1st
-587 1st 2nd 3rd Last 3rd 2nd 1st
-588 1st 2nd 3rd Last 3rd 2nd 1st
-589 1st 2nd 3rd Last 3rd 2nd 1st
-590 1st 2nd 3rd Last 3rd 2nd 1st
-591 1st 2nd 3rd Last 3rd 2nd 1st
-592 1st 2nd 3rd Last 3rd 2nd 1st
-593 1st 2nd 3rd Last 3rd 2nd 1st
-594 1st 2nd 3rd Last 3rd 2nd 1st
-595 1st 2nd 3rd Last 3rd 2nd 1st
-596 1st 2nd 3rd Last 3rd 2nd 1st
-597 1st 2nd 3rd Last 3rd 2nd 1st
-598 1st 2nd 3rd Last 3rd 2nd 1st
-599 1st 2nd 3rd Last 3rd 2nd 1st
-600 1st 2nd 3rd Last 3rd 2nd 1st
-601 1st 2nd 3rd Last 3rd 2nd 1st
-602 1st 2nd 3rd Last 3rd 2nd 1st
-603 1st 2nd 3rd Last 3rd 2nd 1st
-604 1st 2nd 3rd Last 3rd 2nd 1st
-605 1st 2nd 3rd Last 3rd 2nd 1st
-606 1st 2nd 3rd Last 3rd 2nd 1st
-607 1st 2nd 3rd Last 3rd 2nd 1st
-608 1st 2nd 3rd Last 3rd 2nd 1st
-609 1st 2nd 3rd Last 3rd 2nd 1st
-610 1st 2nd 3rd Last 3rd 2nd 1st
-611 1st 2nd 3rd Last 3rd 2nd 1st
-612 1st 2nd 3rd Last 3rd 2nd 1st
-613 1st 2nd 3rd Last 3rd 2nd 1st
-614 1st 2nd 3rd Last 3rd 2nd 1st
-615 1st 2nd 3rd Last 3rd 2nd 1st
-616 1st 2nd 3rd Last 3rd 2nd 1st
-617 1st 2nd 3rd Last 3rd 2nd 1st
-618 1st 2nd 3rd Last 3rd 2nd 1st
-619 1st 2nd 3rd Last 3rd 2nd 1st
-620 1st 2nd 3rd Last 3rd 2nd 1st
-621 1st 2nd 3rd Last 3rd 2nd 1st
-622 1st 2nd 3rd Last 3rd 2nd 1st
-623 1st 2nd 3rd Last 3rd 2nd 1st
-624 1st 2nd 3rd Last 3rd 2nd 1st
-625 1st 2nd 3rd Last 3rd 2nd 1st
-626 1st 2nd 3rd Last 3rd 2nd 1st
-627 1st 2nd 3rd Last 3rd 2nd 1st
-628 1st 2nd 3rd Last 3rd 2nd 1st
-629 1st 2nd 3rd Last 3rd 2nd 1st
-630 1st 2nd 3rd Last 3rd 2nd 1st
-631 1st 2nd 3rd Last 3rd 2nd 1st
-632 1st 2nd 3rd Last 3rd 2nd 1st
-633 1st 2nd 3rd Last 3rd 2nd 1st
-634 1st 2nd 3rd Last 3rd 2nd 1st
-635 1st 2nd 3rd Last 3rd 2nd 1st
-636 1st 2nd 3rd Last 3rd 2nd 1st
-637 1st 2nd 3rd Last 3rd 2nd 1st
-638 1st 2nd 3rd Last 3rd 2nd 1st
-639 1st 2nd 3rd Last 3rd 2nd 1st
-640 1st 2nd 3rd Last 3rd 2nd 1st
-641 1st 2nd 3rd Last 3rd 2nd 1st
-642 1st 2nd 3rd Last 3rd 2nd 1st
-643 1st 2nd 3rd Last 3rd 2nd 1st
-644 1st 2nd 3rd Last 3rd 2nd 1st
-645 1st 2nd 3rd Last 3rd 2nd 1st
-646 1st 2nd 3rd Last 3rd 2nd 1st
-647 1st 2nd 3rd Last 3rd 2nd 1st
-648 1st 2nd 3rd Last 3rd 2nd 1st
-649 1st 2nd 3rd Last 3rd 2nd 1st
-650 1st 2nd 3rd Last 3rd 2nd 1st
-651 1st 2nd 3rd Last 3rd 2nd 1st
-652 1st 2nd 3rd Last 3rd 2nd 1st
-653 1st 2nd 3rd Last 3rd 2nd 1st
-654 1st 2nd 3rd Last 3rd 2nd 1st
-655 1st 2nd 3rd Last 3rd 2nd 1st
-656 1st 2nd 3rd Last 3rd 2nd 1st
-657 1st 2nd 3rd Last 3rd 2nd 1st
-658 1st 2nd 3rd Last 3rd 2nd 1st
-659 1st 2nd 3rd Last 3rd 2nd 1st
-660 1st 2nd 3rd Last 3rd 2nd 1st
-661 1st 2nd 3rd Last 3rd 2nd 1st
-662 1st 2nd 3rd Last 3rd 2nd 1st
-663 1st 2nd 3rd Last 3rd 2nd 1st
-664 1st 2nd 3rd Last 3rd 2nd 1st
-665 1st 2nd 3rd Last 3rd 2nd 1st
-666 1st 2nd 3rd Last 3rd 2nd 1st
-667 1st 2nd 3rd Last 3rd 2nd 1st
-668 1st 2nd 3rd Last 3rd 2nd 1st
-669 1st 2nd 3rd Last 3rd 2nd 1st
-670 1st 2nd 3rd Last 3rd 2nd 1st
-671 1st 2nd 3rd Last 3rd 2nd 1st
-672 1st 2nd 3rd Last 3rd 2nd 1st
-673 1st 2nd 3rd Last 3rd 2nd 1st
-674 1st 2nd 3rd Last 3rd 2nd 1st
-675 1st 2nd 3rd Last 3rd 2nd 1st
-676 1st 2nd 3rd Last 3rd 2nd 1st
-677 1st 2nd 3rd Last 3rd 2nd 1st
-678 1st 2nd 3rd Last 3rd 2nd 1st
-679 1st 2nd 3rd Last 3rd 2nd 1st
-680 1st 2nd 3rd Last 3rd 2nd 1st
-681 1st 2nd 3rd Last 3rd 2nd 1st
-682 1st 2nd 3rd Last 3rd 2nd 1st
-683 1st 2nd 3rd Last 3rd 2nd 1st
-684 1st 2nd 3rd Last 3rd 2nd 1st
-685 1st 2nd 3rd Last 3rd 2nd 1st
-686 1st 2nd 3rd Last 3rd 2nd 1st
-687 1st 2nd 3rd Last 3rd 2nd 1st
-688 1st 2nd 3rd Last 3rd 2nd 1st
-689 1st 2nd 3rd Last 3rd 2nd 1st
-690 1st 2nd 3rd Last 3rd 2nd 1st
-691 1st 2nd 3rd Last 3rd 2nd 1st
-692 1st 2nd 3rd Last 3rd 2nd 1st
-693 1st 2nd 3rd Last 3rd 2nd 1st
-694 1st 2nd 3rd Last 3rd 2nd 1st
-695 1st 2nd 3rd Last 3rd 2nd 1st
-696 1st 2nd 3rd Last 3rd 2nd 1st
-697 1st 2nd 3rd Last 3rd 2nd 1st
-698 1st 2nd 3rd Last 3rd 2nd 1st
-699 1st 2nd 3rd Last 3rd 2nd 1st
-700 1st 2nd 3rd Last 3rd 2nd 1st
-701 1st 2nd 3rd Last 3rd 2nd 1st
-702 1st 2nd 3rd Last 3rd 2nd 1st
-703 1st 2nd 3rd Last 3rd 2nd 1st
-704 1st 2nd 3rd Last 3rd 2nd 1st
-705 1st 2nd 3rd Last 3rd 2nd 1st
-706 1st 2nd 3rd Last 3rd 2nd 1st
-707 1st 2nd 3rd Last 3rd 2nd 1st
-708 1st 2nd 3rd Last 3rd 2nd 1st
-709 1st 2nd 3rd Last 3rd 2nd 1st
-710 1st 2nd 3rd Last 3rd 2nd 1st
-711 1st 2nd 3rd Last 3rd 2nd 1st
-712 1st 2nd 3rd Last 3rd 2nd 1st
-713 1st 2nd 3rd Last 3rd 2nd 1st
-714 1st 2nd 3rd Last 3rd 2nd 1st
-715 1st 2nd 3rd Last 3rd 2nd 1st
-716 1st 2nd 3rd Last 3rd 2nd 1st
-717 1st 2nd 3rd Last 3rd 2nd 1st
-718 1st 2nd 3rd Last 3rd 2nd 1st
-719 1st 2nd 3rd Last 3rd 2nd 1st
-720 1st 2nd 3rd Last 3rd 2nd 1st
-721 1st 2nd 3rd Last 3rd 2nd 1st
-722 1st 2nd 3rd Last 3rd 2nd 1st
-723 1st 2nd 3rd Last 3rd 2nd 1st
-724 1st 2nd 3rd Last 3rd 2nd 1st
-725 1st 2nd 3rd Last 3rd 2nd 1st
-726 1st 2nd 3rd Last 3rd 2nd 1st
-727 1st 2nd 3rd Last 3rd 2nd 1st
-728 1st 2nd 3rd Last 3rd 2nd 1st
-729 1st 2nd 3rd Last 3rd 2nd 1st
-730 1st 2nd 3rd Last 3rd 2nd 1st
-731 1st 2nd 3rd Last 3rd 2nd 1st
-732 1st 2nd 3rd Last 3rd 2nd 1st
-733 1st 2nd 3rd Last 3rd 2nd 1st
-734 1st 2nd 3rd Last 3rd 2nd 1st
-735 1st 2nd 3rd Last 3rd 2nd 1st
-736 1st 2nd 3rd Last 3rd 2nd 1st
-737 1st 2nd 3rd Last 3rd 2nd 1st
-738 1st 2nd 3rd Last 3rd 2nd 1st
-739 1st 2nd 3rd Last 3rd 2nd 1st
-740 1st 2nd 3rd Last 3rd 2nd 1st
-741 1st 2nd 3rd Last 3rd 2nd 1st
-742 1st 2nd 3rd Last 3rd 2nd 1st
-743 1st 2nd 3rd Last 3rd 2nd 1st
-744 1st 2nd 3rd Last 3rd 2nd 1st
-745 1st 2nd 3rd Last 3rd 2nd 1st
-746 1st 2nd 3rd Last 3rd 2nd 1st
-747 1st 2nd 3rd Last 3rd 2nd 1st
-748 1st 2nd 3rd Last 3rd 2nd 1st
-749 1st 2nd 3rd Last 3rd 2nd 1st
-750 1st 2nd 3rd Last 3rd 2nd 1st
-751 1st 2nd 3rd Last 3rd 2nd 1st
-752 1st 2nd 3rd Last 3rd 2nd 1st
-753 1st 2nd 3rd Last 3rd 2nd 1st
-754 1st 2nd 3rd Last 3rd 2nd 1st
-755 1st 2nd 3rd Last 3rd 2nd 1st
-756 1st 2nd 3rd Last 3rd 2nd 1st
-757 1st 2nd 3rd Last 3rd 2nd 1st
-758 1st 2nd 3rd Last 3rd 2nd 1st
-759 1st 2nd 3rd Last 3rd 2nd 1st
-760 1st 2nd 3rd Last 3rd 2nd 1st
-761 1st 2nd 3rd Last 3rd 2nd 1st
-762 1st 2nd 3rd Last 3rd 2nd 1st
-763 1st 2nd 3rd Last 3rd 2nd 1st
-764 1st 2nd 3rd Last 3rd 2nd 1st
-765 1st 2nd 3rd Last 3rd 2nd 1st
-766 1st 2nd 3rd Last 3rd 2nd 1st
-767 1st 2nd 3rd Last 3rd 2nd 1st
-768 1st 2nd 3rd Last 3rd 2nd 1st
-769 1st 2nd 3rd Last 3rd 2nd 1st
-770 1st 2nd 3rd Last 3rd 2nd 1st
-771 1st 2nd 3rd Last 3rd 2nd 1st
-772 1st 2nd 3rd Last 3rd 2nd 1st
-773 1st 2nd 3rd Last 3rd 2nd 1st
-774 1st 2nd 3rd Last 3rd 2nd 1st
-775 1st 2nd 3rd Last 3rd 2nd 1st
-776 1st 2nd 3rd Last 3rd 2nd 1st
-777 1st 2nd 3rd Last 3rd 2nd 1st
-778 1st 2nd 3rd Last 3rd 2nd 1st
-779 1st 2nd 3rd Last 3rd 2nd 1st
-780 1st 2nd 3rd Last 3rd 2nd 1st
-781 1st 2nd 3rd Last 3rd 2nd 1st
-782 1st 2nd 3rd Last 3rd 2nd 1st
-783 1st 2nd 3rd Last 3rd 2nd 1st
-784 1st 2nd 3rd Last 3rd 2nd 1st
-785 1st 2nd 3rd Last 3rd 2nd 1st
-786 1st 2nd 3rd Last 3rd 2nd 1st
-787 1st 2nd 3rd Last 3rd 2nd 1st
-788 1st 2nd 3rd Last 3rd 2nd 1st
-789 1st 2nd 3rd Last 3rd 2nd 1st
-790 1st 2nd 3rd Last 3rd 2nd 1st
-791 1st 2nd 3rd Last 3rd 2nd 1st
-792 1st 2nd 3rd Last 3rd 2nd 1st
-793 1st 2nd 3rd Last 3rd 2nd 1st
-794 1st 2nd 3rd Last 3rd 2nd 1st
-795 1st 2nd 3rd Last 3rd 2nd 1st
-796 1st 2nd 3rd Last 3rd 2nd 1st
-797 1st 2nd 3rd Last 3rd 2nd 1st
-798 1st 2nd 3rd Last 3rd 2nd 1st
-799 1st 2nd 3rd Last 3rd 2nd 1st
-800 1st 2nd 3rd Last 3rd 2nd 1st
-801 1st 2nd 3rd Last 3rd 2nd 1st
-802 1st 2nd 3rd Last 3rd 2nd 1st
-803 1st 2nd 3rd Last 3rd 2nd 1st
-804 1st 2nd 3rd Last 3rd 2nd 1st
-805 1st 2nd 3rd Last 3rd 2nd 1st
-806 1st 2nd 3rd Last 3rd 2nd 1st
-807 1st 2nd 3rd Last 3rd 2nd 1st
-808 1st 2nd 3rd Last 3rd 2nd 1st
-809 1st 2nd 3rd Last 3rd 2nd 1st
-810 1st 2nd 3rd Last 3rd 2nd 1st
-811 1st 2nd 3rd Last 3rd 2nd 1st
-812 1st 2nd 3rd Last 3rd 2nd 1st
-813 1st 2nd 3rd Last 3rd 2nd 1st
-814 1st 2nd 3rd Last 3rd 2nd 1st
-815 1st 2nd 3rd Last 3rd 2nd 1st
-816 1st 2nd 3rd Last 3rd 2nd 1st
-817 1st 2nd 3rd Last 3rd 2nd 1st
-818 1st 2nd 3rd Last 3rd 2nd 1st
-819 1st 2nd 3rd Last 3rd 2nd 1st
-820 1st 2nd 3rd Last 3rd 2nd 1st
-821 1st 2nd 3rd Last 3rd 2nd 1st
-822 1st 2nd 3rd Last 3rd 2nd 1st
-823 1st 2nd 3rd Last 3rd 2nd 1st
-824 1st 2nd 3rd Last 3rd 2nd 1st
-825 1st 2nd 3rd Last 3rd 2nd 1st
-826 1st 2nd 3rd Last 3rd 2nd 1st
-827 1st 2nd 3rd Last 3rd 2nd 1st
-828 1st 2nd 3rd Last 3rd 2nd 1st
-829 1st 2nd 3rd Last 3rd 2nd 1st
-830 1st 2nd 3rd Last 3rd 2nd 1st
-831 1st 2nd 3rd Last 3rd 2nd 1st
-832 1st 2nd 3rd Last 3rd 2nd 1st
-833 1st 2nd 3rd Last 3rd 2nd 1st
-834 1st 2nd 3rd Last 3rd 2nd 1st
-835 1st 2nd 3rd Last 3rd 2nd 1st
-836 1st 2nd 3rd Last 3rd 2nd 1st
-837 1st 2nd 3rd Last 3rd 2nd 1st
-838 1st 2nd 3rd Last 3rd 2nd 1st
-839 1st 2nd 3rd Last 3rd 2nd 1st
-840 1st 2nd 3rd Last 3rd 2nd 1st
-841 1st 2nd 3rd Last 3rd 2nd 1st
-842 1st 2nd 3rd Last 3rd 2nd 1st
-843 1st 2nd 3rd Last 3rd 2nd 1st
-844 1st 2nd 3rd Last 3rd 2nd 1st
-845 1st 2nd 3rd Last 3rd 2nd 1st
-846 1st 2nd 3rd Last 3rd 2nd 1st
-847 1st 2nd 3rd Last 3rd 2nd 1st
-848 1st 2nd 3rd Last 3rd 2nd 1st
-849 1st 2nd 3rd Last 3rd 2nd 1st
-850 1st 2nd 3rd Last 3rd 2nd 1st
-851 1st 2nd 3rd Last 3rd 2nd 1st
-852 1st 2nd 3rd Last 3rd 2nd 1st
-853 1st 2nd 3rd Last 3rd 2nd 1st
-854 1st 2nd 3rd Last 3rd 2nd 1st
-855 1st 2nd 3rd Last 3rd 2nd 1st
-856 1st 2nd 3rd Last 3rd 2nd 1st
-857 1st 2nd 3rd Last 3rd 2nd 1st
-858 1st 2nd 3rd Last 3rd 2nd 1st
-859 1st 2nd 3rd Last 3rd 2nd 1st
-860 1st 2nd 3rd Last 3rd 2nd 1st
-861 1st 2nd 3rd Last 3rd 2nd 1st
-862 1st 2nd 3rd Last 3rd 2nd 1st
-863 1st 2nd 3rd Last 3rd 2nd 1st
-864 1st 2nd 3rd Last 3rd 2nd 1st
-865 1st 2nd 3rd Last 3rd 2nd 1st
-866 1st 2nd 3rd Last 3rd 2nd 1st
-867 1st 2nd 3rd Last 3rd 2nd 1st
-868 1st 2nd 3rd Last 3rd 2nd 1st
-869 1st 2nd 3rd Last 3rd 2nd 1st
-870 1st 2nd 3rd Last 3rd 2nd 1st
-871 1st 2nd 3rd Last 3rd 2nd 1st
-872 1st 2nd 3rd Last 3rd 2nd 1st
-873 1st 2nd 3rd Last 3rd 2nd 1st
-874 1st 2nd 3rd Last 3rd 2nd 1st
-875 1st 2nd 3rd Last 3rd 2nd 1st
-876 1st 2nd 3rd Last 3rd 2nd 1st
-877 1st 2nd 3rd Last 3rd 2nd 1st
-878 1st 2nd 3rd Last 3rd 2nd 1st
-879 1st 2nd 3rd Last 3rd 2nd 1st
-880 1st 2nd 3rd Last 3rd 2nd 1st
-881 1st 2nd 3rd Last 3rd 2nd 1st
-882 1st 2nd 3rd Last 3rd 2nd 1st
-883 1st 2nd 3rd Last 3rd 2nd 1st
-884 1st 2nd 3rd Last 3rd 2nd 1st
-885 1st 2nd 3rd Last 3rd 2nd 1st
-886 1st 2nd 3rd Last 3rd 2nd 1st
-887 1st 2nd 3rd Last 3rd 2nd 1st
-888 1st 2nd 3rd Last 3rd 2nd 1st
-889 1st 2nd 3rd Last 3rd 2nd 1st
-890 1st 2nd 3rd Last 3rd 2nd 1st
-891 1st 2nd 3rd Last 3rd 2nd 1st
-892 1st 2nd 3rd Last 3rd 2nd 1st
-893 1st 2nd 3rd Last 3rd 2nd 1st
-894 1st 2nd 3rd Last 3rd 2nd 1st
-895 1st 2nd 3rd Last 3rd 2nd 1st
-896 1st 2nd 3rd Last 3rd 2nd 1st
-897 1st 2nd 3rd Last 3rd 2nd 1st
-898 1st 2nd 3rd Last 3rd 2nd 1st
-899 1st 2nd 3rd Last 3rd 2nd 1st
-900 1st 2nd 3rd Last 3rd 2nd 1st
-901 1st 2nd 3rd Last 3rd 2nd 1st
-902 1st 2nd 3rd Last 3rd 2nd 1st
-903 1st 2nd 3rd Last 3rd 2nd 1st
-904 1st 2nd 3rd Last 3rd 2nd 1st
-905 1st 2nd 3rd Last 3rd 2nd 1st
-906 1st 2nd 3rd Last 3rd 2nd 1st
-907 1st 2nd 3rd Last 3rd 2nd 1st
-908 1st 2nd 3rd Last 3rd 2nd 1st
-909 1st 2nd 3rd Last 3rd 2nd 1st
-910 1st 2nd 3rd Last 3rd 2nd 1st
-911 1st 2nd 3rd Last 3rd 2nd 1st
-912 1st 2nd 3rd Last 3rd 2nd 1st
-913 1st 2nd 3rd Last 3rd 2nd 1st
-914 1st 2nd 3rd Last 3rd 2nd 1st
-915 1st 2nd 3rd Last 3rd 2nd 1st
-916 1st 2nd 3rd Last 3rd 2nd 1st
-917 1st 2nd 3rd Last 3rd 2nd 1st
-918 1st 2nd 3rd Last 3rd 2nd 1st
-919 1st 2nd 3rd Last 3rd 2nd 1st
-920 1st 2nd 3rd Last 3rd 2nd 1st
-921 1st 2nd 3rd Last 3rd 2nd 1st
-922 1st 2nd 3rd Last 3rd 2nd 1st
-923 1st 2nd 3rd Last 3rd 2nd 1st
-924 1st 2nd 3rd Last 3rd 2nd 1st
-925 1st 2nd 3rd Last 3rd 2nd 1st
-926 1st 2nd 3rd Last 3rd 2nd 1st
-927 1st 2nd 3rd Last 3rd 2nd 1st
-928 1st 2nd 3rd Last 3rd 2nd 1st
-929 1st 2nd 3rd Last 3rd 2nd 1st
-930 1st 2nd 3rd Last 3rd 2nd 1st
-931 1st 2nd 3rd Last 3rd 2nd 1st
-932 1st 2nd 3rd Last 3rd 2nd 1st
-933 1st 2nd 3rd Last 3rd 2nd 1st
-934 1st 2nd 3rd Last 3rd 2nd 1st
-935 1st 2nd 3rd Last 3rd 2nd 1st
-936 1st 2nd 3rd Last 3rd 2nd 1st
-937 1st 2nd 3rd Last 3rd 2nd 1st
-938 1st 2nd 3rd Last 3rd 2nd 1st
-939 1st 2nd 3rd Last 3rd 2nd 1st
-940 1st 2nd 3rd Last 3rd 2nd 1st
-941 1st 2nd 3rd Last 3rd 2nd 1st
-942 1st 2nd 3rd Last 3rd 2nd 1st
-943 1st 2nd 3rd Last 3rd 2nd 1st
-944 1st 2nd 3rd Last 3rd 2nd 1st
-945 1st 2nd 3rd Last 3rd 2nd 1st
-946 1st 2nd 3rd Last 3rd 2nd 1st
-947 1st 2nd 3rd Last 3rd 2nd 1st
-948 1st 2nd 3rd Last 3rd 2nd 1st
-949 1st 2nd 3rd Last 3rd 2nd 1st
-950 1st 2nd 3rd Last 3rd 2nd 1st
-951 1st 2nd 3rd Last 3rd 2nd 1st
-952 1st 2nd 3rd Last 3rd 2nd 1st
-953 1st 2nd 3rd Last 3rd 2nd 1st
-954 1st 2nd 3rd Last 3rd 2nd 1st
-955 1st 2nd 3rd Last 3rd 2nd 1st
-956 1st 2nd 3rd Last 3rd 2nd 1st
-957 1st 2nd 3rd Last 3rd 2nd 1st
-958 1st 2nd 3rd Last 3rd 2nd 1st
-959 1st 2nd 3rd Last 3rd 2nd 1st
-960 1st 2nd 3rd Last 3rd 2nd 1st
-961 1st 2nd 3rd Last 3rd 2nd 1st
-962 1st 2nd 3rd Last 3rd 2nd 1st
-963 1st 2nd 3rd Last 3rd 2nd 1st
-964 1st 2nd 3rd Last 3rd 2nd 1st
-965 1st 2nd 3rd Last 3rd 2nd 1st
-966 1st 2nd 3rd Last 3rd 2nd 1st
-967 1st 2nd 3rd Last 3rd 2nd 1st
-968 1st 2nd 3rd Last 3rd 2nd 1st
-969 1st 2nd 3rd Last 3rd 2nd 1st
-970 1st 2nd 3rd Last 3rd 2nd 1st
-971 1st 2nd 3rd Last 3rd 2nd 1st
-972 1st 2nd 3rd Last 3rd 2nd 1st
-973 1st 2nd 3rd Last 3rd 2nd 1st
-974 1st 2nd 3rd Last 3rd 2nd 1st
-975 1st 2nd 3rd Last 3rd 2nd 1st
-976 1st 2nd 3rd Last 3rd 2nd 1st
-977 1st 2nd 3rd Last 3rd 2nd 1st
-978 1st 2nd 3rd Last 3rd 2nd 1st
-979 1st 2nd 3rd Last 3rd 2nd 1st
-980 1st 2nd 3rd Last 3rd 2nd 1st
-981 1st 2nd 3rd Last 3rd 2nd 1st
-982 1st 2nd 3rd Last 3rd 2nd 1st
-983 1st 2nd 3rd Last 3rd 2nd 1st
-984 1st 2nd 3rd Last 3rd 2nd 1st
-985 1st 2nd 3rd Last 3rd 2nd 1st
-986 1st 2nd 3rd Last 3rd 2nd 1st
-987 1st 2nd 3rd Last 3rd 2nd 1st
-988 1st 2nd 3rd Last 3rd 2nd 1st
-989 1st 2nd 3rd Last 3rd 2nd 1st
-990 1st 2nd 3rd Last 3rd 2nd 1st
-991 1st 2nd 3rd Last 3rd 2nd 1st
-992 1st 2nd 3rd Last 3rd 2nd 1st
-993 1st 2nd 3rd Last 3rd 2nd 1st
-994 1st 2nd 3rd Last 3rd 2nd 1st
-995 1st 2nd 3rd Last 3rd 2nd 1st
-996 1st 2nd 3rd Last 3rd 2nd 1st
-997 1st 2nd 3rd Last 3rd 2nd 1st
-998 1st 2nd 3rd Last 3rd 2nd 1st
-999 1st 2nd 3rd Last 3rd 2nd 1st
-1000 1st 2nd 3rd Last 3rd 2nd 1st
-1001 1st 2nd 3rd Last 3rd 2nd 1st
-1002 1st 2nd 3rd Last 3rd 2nd 1st
-1003 1st 2nd 3rd Last 3rd 2nd 1st
-1004 1st 2nd 3rd Last 3rd 2nd 1st
-1005 1st 2nd 3rd Last 3rd 2nd 1st
-1006 1st 2nd 3rd Last 3rd 2nd 1st
-1007 1st 2nd 3rd Last 3rd 2nd 1st
-1008 1st 2nd 3rd Last 3rd 2nd 1st
-1009 1st 2nd 3rd Last 3rd 2nd 1st
-1010 1st 2nd 3rd Last 3rd 2nd 1st
-1011 1st 2nd 3rd Last 3rd 2nd 1st
-1012 1st 2nd 3rd Last 3rd 2nd 1st
-1013 1st 2nd 3rd Last 3rd 2nd 1st
-1014 1st 2nd 3rd Last 3rd 2nd 1st
-1015 1st 2nd 3rd Last 3rd 2nd 1st
-1016 1st 2nd 3rd Last 3rd 2nd 1st
-1017 1st 2nd 3rd Last 3rd 2nd 1st
-1018 1st 2nd 3rd Last 3rd 2nd 1st
-1019 1st 2nd 3rd Last 3rd 2nd 1st
-1020 1st 2nd 3rd Last 3rd 2nd 1st
-1021 1st 2nd 3rd Last 3rd 2nd 1st
-1022 1st 2nd 3rd Last 3rd 2nd 1st
-1023 1st 2nd 3rd Last 3rd 2nd 1st
-1024 1st 2nd 3rd Last 3rd 2nd 1st
-1025 1st 2nd 3rd Last 3rd 2nd 1st
-1026 1st 2nd 3rd Last 3rd 2nd 1st
-1027 1st 2nd 3rd Last 3rd 2nd 1st
-1028 1st 2nd 3rd Last 3rd 2nd 1st
-1029 1st 2nd 3rd Last 3rd 2nd 1st
-1030 1st 2nd 3rd Last 3rd 2nd 1st
-1031 1st 2nd 3rd Last 3rd 2nd 1st
-1032 1st 2nd 3rd Last 3rd 2nd 1st
-1033 1st 2nd 3rd Last 3rd 2nd 1st
-1034 1st 2nd 3rd Last 3rd 2nd 1st
-1035 1st 2nd 3rd Last 3rd 2nd 1st
-1036 1st 2nd 3rd Last 3rd 2nd 1st
-1037 1st 2nd 3rd Last 3rd 2nd 1st
-1038 1st 2nd 3rd Last 3rd 2nd 1st
-1039 1st 2nd 3rd Last 3rd 2nd 1st
-1040 1st 2nd 3rd Last 3rd 2nd 1st
-1041 1st 2nd 3rd Last 3rd 2nd 1st
-1042 1st 2nd 3rd Last 3rd 2nd 1st
-1043 1st 2nd 3rd Last 3rd 2nd 1st
-1044 1st 2nd 3rd Last 3rd 2nd 1st
-1045 1st 2nd 3rd Last 3rd 2nd 1st
-1046 1st 2nd 3rd Last 3rd 2nd 1st
-1047 1st 2nd 3rd Last 3rd 2nd 1st
-1048 1st 2nd 3rd Last 3rd 2nd 1st
-1049 1st 2nd 3rd Last 3rd 2nd 1st
-1050 1st 2nd 3rd Last 3rd 2nd 1st
-1051 1st 2nd 3rd Last 3rd 2nd 1st
-1052 1st 2nd 3rd Last 3rd 2nd 1st
-1053 1st 2nd 3rd Last 3rd 2nd 1st
-1054 1st 2nd 3rd Last 3rd 2nd 1st
-1055 1st 2nd 3rd Last 3rd 2nd 1st
-1056 1st 2nd 3rd Last 3rd 2nd 1st
-1057 1st 2nd 3rd Last 3rd 2nd 1st
-1058 1st 2nd 3rd Last 3rd 2nd 1st
-1059 1st 2nd 3rd Last 3rd 2nd 1st
-1060 1st 2nd 3rd Last 3rd 2nd 1st
-1061 1st 2nd 3rd Last 3rd 2nd 1st
-1062 1st 2nd 3rd Last 3rd 2nd 1st
-1063 1st 2nd 3rd Last 3rd 2nd 1st
-1064 1st 2nd 3rd Last 3rd 2nd 1st
-1065 1st 2nd 3rd Last 3rd 2nd 1st
-1066 1st 2nd 3rd Last 3rd 2nd 1st
-1067 1st 2nd 3rd Last 3rd 2nd 1st
-1068 1st 2nd 3rd Last 3rd 2nd 1st
-1069 1st 2nd 3rd Last 3rd 2nd 1st
-1070 1st 2nd 3rd Last 3rd 2nd 1st
-1071 1st 2nd 3rd Last 3rd 2nd 1st
-1072 1st 2nd 3rd Last 3rd 2nd 1st
-1073 1st 2nd 3rd Last 3rd 2nd 1st
-1074 1st 2nd 3rd Last 3rd 2nd 1st
-1075 1st 2nd 3rd Last 3rd 2nd 1st
-1076 1st 2nd 3rd Last 3rd 2nd 1st
-1077 1st 2nd 3rd Last 3rd 2nd 1st
-1078 1st 2nd 3rd Last 3rd 2nd 1st
-1079 1st 2nd 3rd Last 3rd 2nd 1st
-1080 1st 2nd 3rd Last 3rd 2nd 1st
-1081 1st 2nd 3rd Last 3rd 2nd 1st
-1082 1st 2nd 3rd Last 3rd 2nd 1st
-1083 1st 2nd 3rd Last 3rd 2nd 1st
-1084 1st 2nd 3rd Last 3rd 2nd 1st
-1085 1st 2nd 3rd Last 3rd 2nd 1st
-1086 1st 2nd 3rd Last 3rd 2nd 1st
-1087 1st 2nd 3rd Last 3rd 2nd 1st
-1088 1st 2nd 3rd Last 3rd 2nd 1st
-1089 1st 2nd 3rd Last 3rd 2nd 1st
-1090 1st 2nd 3rd Last 3rd 2nd 1st
-1091 1st 2nd 3rd Last 3rd 2nd 1st
-1092 1st 2nd 3rd Last 3rd 2nd 1st
-1093 1st 2nd 3rd Last 3rd 2nd 1st
-1094 1st 2nd 3rd Last 3rd 2nd 1st
-1095 1st 2nd 3rd Last 3rd 2nd 1st
-1096 1st 2nd 3rd Last 3rd 2nd 1st
-1097 1st 2nd 3rd Last 3rd 2nd 1st
-1098 1st 2nd 3rd Last 3rd 2nd 1st
-1099 1st 2nd 3rd Last 3rd 2nd 1st
-1100 1st 2nd 3rd Last 3rd 2nd 1st
-1101 1st 2nd 3rd Last 3rd 2nd 1st
-1102 1st 2nd 3rd Last 3rd 2nd 1st
-1103 1st 2nd 3rd Last 3rd 2nd 1st
-1104 1st 2nd 3rd Last 3rd 2nd 1st
-1105 1st 2nd 3rd Last 3rd 2nd 1st
-1106 1st 2nd 3rd Last 3rd 2nd 1st
-1107 1st 2nd 3rd Last 3rd 2nd 1st
-1108 1st 2nd 3rd Last 3rd 2nd 1st
-1109 1st 2nd 3rd Last 3rd 2nd 1st
-1110 1st 2nd 3rd Last 3rd 2nd 1st
-1111 1st 2nd 3rd Last 3rd 2nd 1st
-1112 1st 2nd 3rd Last 3rd 2nd 1st
-1113 1st 2nd 3rd Last 3rd 2nd 1st
-1114 1st 2nd 3rd Last 3rd 2nd 1st
-1115 1st 2nd 3rd Last 3rd 2nd 1st
-1116 1st 2nd 3rd Last 3rd 2nd 1st
-1117 1st 2nd 3rd Last 3rd 2nd 1st
-1118 1st 2nd 3rd Last 3rd 2nd 1st
-1119 1st 2nd 3rd Last 3rd 2nd 1st
-1120 1st 2nd 3rd Last 3rd 2nd 1st
-1121 1st 2nd 3rd Last 3rd 2nd 1st
-1122 1st 2nd 3rd Last 3rd 2nd 1st
-1123 1st 2nd 3rd Last 3rd 2nd 1st
-1124 1st 2nd 3rd Last 3rd 2nd 1st
-1125 1st 2nd 3rd Last 3rd 2nd 1st
-1126 1st 2nd 3rd Last 3rd 2nd 1st
-1127 1st 2nd 3rd Last 3rd 2nd 1st
-1128 1st 2nd 3rd Last 3rd 2nd 1st
-1129 1st 2nd 3rd Last 3rd 2nd 1st
-1130 1st 2nd 3rd Last 3rd 2nd 1st
-1131 1st 2nd 3rd Last 3rd 2nd 1st
-1132 1st 2nd 3rd Last 3rd 2nd 1st
-1133 1st 2nd 3rd Last 3rd 2nd 1st
-1134 1st 2nd 3rd Last 3rd 2nd 1st
-1135 1st 2nd 3rd Last 3rd 2nd 1st
-1136 1st 2nd 3rd Last 3rd 2nd 1st
-1137 1st 2nd 3rd Last 3rd 2nd 1st
-1138 1st 2nd 3rd Last 3rd 2nd 1st
-1139 1st 2nd 3rd Last 3rd 2nd 1st
-1140 1st 2nd 3rd Last 3rd 2nd 1st
-1141 1st 2nd 3rd Last 3rd 2nd 1st
-1142 1st 2nd 3rd Last 3rd 2nd 1st
-1143 1st 2nd 3rd Last 3rd 2nd 1st
-1144 1st 2nd 3rd Last 3rd 2nd 1st
-1145 1st 2nd 3rd Last 3rd 2nd 1st
-1146 1st 2nd 3rd Last 3rd 2nd 1st
-1147 1st 2nd 3rd Last 3rd 2nd 1st
-1148 1st 2nd 3rd Last 3rd 2nd 1st
-1149 1st 2nd 3rd Last 3rd 2nd 1st
-1150 1st 2nd 3rd Last 3rd 2nd 1st
-1151 1st 2nd 3rd Last 3rd 2nd 1st
-1152 1st 2nd 3rd Last 3rd 2nd 1st
-1153 1st 2nd 3rd Last 3rd 2nd 1st
-1154 1st 2nd 3rd Last 3rd 2nd 1st
-1155 1st 2nd 3rd Last 3rd 2nd 1st
-1156 1st 2nd 3rd Last 3rd 2nd 1st
-1157 1st 2nd 3rd Last 3rd 2nd 1st
-1158 1st 2nd 3rd Last 3rd 2nd 1st
-1159 1st 2nd 3rd Last 3rd 2nd 1st
-1160 1st 2nd 3rd Last 3rd 2nd 1st
-1161 1st 2nd 3rd Last 3rd 2nd 1st
-1162 1st 2nd 3rd Last 3rd 2nd 1st
-1163 1st 2nd 3rd Last 3rd 2nd 1st
-1164 1st 2nd 3rd Last 3rd 2nd 1st
-1165 1st 2nd 3rd Last 3rd 2nd 1st
-1166 1st 2nd 3rd Last 3rd 2nd 1st
-1167 1st 2nd 3rd Last 3rd 2nd 1st
-1168 1st 2nd 3rd Last 3rd 2nd 1st
-1169 1st 2nd 3rd Last 3rd 2nd 1st
-1170 1st 2nd 3rd Last 3rd 2nd 1st
-1171 1st 2nd 3rd Last 3rd 2nd 1st
-1172 1st 2nd 3rd Last 3rd 2nd 1st
-1173 1st 2nd 3rd Last 3rd 2nd 1st
-1174 1st 2nd 3rd Last 3rd 2nd 1st
-1175 1st 2nd 3rd Last 3rd 2nd 1st
-1176 1st 2nd 3rd Last 3rd 2nd 1st
-1177 1st 2nd 3rd Last 3rd 2nd 1st
-1178 1st 2nd 3rd Last 3rd 2nd 1st
-1179 1st 2nd 3rd Last 3rd 2nd 1st
-1180 1st 2nd 3rd Last 3rd 2nd 1st
-1181 1st 2nd 3rd Last 3rd 2nd 1st
-1182 1st 2nd 3rd Last 3rd 2nd 1st
-1183 1st 2nd 3rd Last 3rd 2nd 1st
-1184 1st 2nd 3rd Last 3rd 2nd 1st
-1185 1st 2nd 3rd Last 3rd 2nd 1st
-1186 1st 2nd 3rd Last 3rd 2nd 1st
-1187 1st 2nd 3rd Last 3rd 2nd 1st
-1188 1st 2nd 3rd Last 3rd 2nd 1st
-1189 1st 2nd 3rd Last 3rd 2nd 1st
-1190 1st 2nd 3rd Last 3rd 2nd 1st
-1191 1st 2nd 3rd Last 3rd 2nd 1st
-1192 1st 2nd 3rd Last 3rd 2nd 1st
-1193 1st 2nd 3rd Last 3rd 2nd 1st
-1194 1st 2nd 3rd Last 3rd 2nd 1st
-1195 1st 2nd 3rd Last 3rd 2nd 1st
-1196 1st 2nd 3rd Last 3rd 2nd 1st
-1197 1st 2nd 3rd Last 3rd 2nd 1st
-1198 1st 2nd 3rd Last 3rd 2nd 1st
-1199 1st 2nd 3rd Last 3rd 2nd 1st
-1200 1st 2nd 3rd Last 3rd 2nd 1st
-1201 1st 2nd 3rd Last 3rd 2nd 1st
-1202 1st 2nd 3rd Last 3rd 2nd 1st
-1203 1st 2nd 3rd Last 3rd 2nd 1st
-1204 1st 2nd 3rd Last 3rd 2nd 1st
-1205 1st 2nd 3rd Last 3rd 2nd 1st
-1206 1st 2nd 3rd Last 3rd 2nd 1st
-1207 1st 2nd 3rd Last 3rd 2nd 1st
-1208 1st 2nd 3rd Last 3rd 2nd 1st
-1209 1st 2nd 3rd Last 3rd 2nd 1st
-1210 1st 2nd 3rd Last 3rd 2nd 1st
-1211 1st 2nd 3rd Last 3rd 2nd 1st
-1212 1st 2nd 3rd Last 3rd 2nd 1st
-1213 1st 2nd 3rd Last 3rd 2nd 1st
-1214 1st 2nd 3rd Last 3rd 2nd 1st
-1215 1st 2nd 3rd Last 3rd 2nd 1st
-1216 1st 2nd 3rd Last 3rd 2nd 1st
-1217 1st 2nd 3rd Last 3rd 2nd 1st
-1218 1st 2nd 3rd Last 3rd 2nd 1st
-1219 1st 2nd 3rd Last 3rd 2nd 1st
-1220 1st 2nd 3rd Last 3rd 2nd 1st
-1221 1st 2nd 3rd Last 3rd 2nd 1st
-1222 1st 2nd 3rd Last 3rd 2nd 1st
-1223 1st 2nd 3rd Last 3rd 2nd 1st
-1224 1st 2nd 3rd Last 3rd 2nd 1st
-1225 1st 2nd 3rd Last 3rd 2nd 1st
-1226 1st 2nd 3rd Last 3rd 2nd 1st
-1227 1st 2nd 3rd Last 3rd 2nd 1st
-1228 1st 2nd 3rd Last 3rd 2nd 1st
-1229 1st 2nd 3rd Last 3rd 2nd 1st
-1230 1st 2nd 3rd Last 3rd 2nd 1st
-1231 1st 2nd 3rd Last 3rd 2nd 1st
-1232 1st 2nd 3rd Last 3rd 2nd 1st
-1233 1st 2nd 3rd Last 3rd 2nd 1st
-1234 1st 2nd 3rd Last 3rd 2nd 1st
-1235 1st 2nd 3rd Last 3rd 2nd 1st
-1236 1st 2nd 3rd Last 3rd 2nd 1st
-1237 1st 2nd 3rd Last 3rd 2nd 1st
-1238 1st 2nd 3rd Last 3rd 2nd 1st
-1239 1st 2nd 3rd Last 3rd 2nd 1st
-1240 1st 2nd 3rd Last 3rd 2nd 1st
-1241 1st 2nd 3rd Last 3rd 2nd 1st
-1242 1st 2nd 3rd Last 3rd 2nd 1st
-1243 1st 2nd 3rd Last 3rd 2nd 1st
-1244 1st 2nd 3rd Last 3rd 2nd 1st
-1245 1st 2nd 3rd Last 3rd 2nd 1st
-1246 1st 2nd 3rd Last 3rd 2nd 1st
-1247 1st 2nd 3rd Last 3rd 2nd 1st
-1248 1st 2nd 3rd Last 3rd 2nd 1st
-1249 1st 2nd 3rd Last 3rd 2nd 1st
-1250 1st 2nd 3rd Last 3rd 2nd 1st
-1251 1st 2nd 3rd Last 3rd 2nd 1st
-1252 1st 2nd 3rd Last 3rd 2nd 1st
-1253 1st 2nd 3rd Last 3rd 2nd 1st
-1254 1st 2nd 3rd Last 3rd 2nd 1st
-1255 1st 2nd 3rd Last 3rd 2nd 1st
-1256 1st 2nd 3rd Last 3rd 2nd 1st
-1257 1st 2nd 3rd Last 3rd 2nd 1st
-1258 1st 2nd 3rd Last 3rd 2nd 1st
-1259 1st 2nd 3rd Last 3rd 2nd 1st
-1260 1st 2nd 3rd Last 3rd 2nd 1st
-1261 1st 2nd 3rd Last 3rd 2nd 1st
-1262 1st 2nd 3rd Last 3rd 2nd 1st
-1263 1st 2nd 3rd Last 3rd 2nd 1st
-1264 1st 2nd 3rd Last 3rd 2nd 1st
-1265 1st 2nd 3rd Last 3rd 2nd 1st
-1266 1st 2nd 3rd Last 3rd 2nd 1st
-1267 1st 2nd 3rd Last 3rd 2nd 1st
-1268 1st 2nd 3rd Last 3rd 2nd 1st
-1269 1st 2nd 3rd Last 3rd 2nd 1st
-1270 1st 2nd 3rd Last 3rd 2nd 1st
-1271 1st 2nd 3rd Last 3rd 2nd 1st
-1272 1st 2nd 3rd Last 3rd 2nd 1st
-1273 1st 2nd 3rd Last 3rd 2nd 1st
-1274 1st 2nd 3rd Last 3rd 2nd 1st
-1275 1st 2nd 3rd Last 3rd 2nd 1st
-1276 1st 2nd 3rd Last 3rd 2nd 1st
-1277 1st 2nd 3rd Last 3rd 2nd 1st
-1278 1st 2nd 3rd Last 3rd 2nd 1st
-1279 1st 2nd 3rd Last 3rd 2nd 1st
-1280 1st 2nd 3rd Last 3rd 2nd 1st
-1281 1st 2nd 3rd Last 3rd 2nd 1st
-1282 1st 2nd 3rd Last 3rd 2nd 1st
-1283 1st 2nd 3rd Last 3rd 2nd 1st
-1284 1st 2nd 3rd Last 3rd 2nd 1st
-1285 1st 2nd 3rd Last 3rd 2nd 1st
-1286 1st 2nd 3rd Last 3rd 2nd 1st
-1287 1st 2nd 3rd Last 3rd 2nd 1st
-1288 1st 2nd 3rd Last 3rd 2nd 1st
-1289 1st 2nd 3rd Last 3rd 2nd 1st
-1290 1st 2nd 3rd Last 3rd 2nd 1st
-1291 1st 2nd 3rd Last 3rd 2nd 1st
-1292 1st 2nd 3rd Last 3rd 2nd 1st
-1293 1st 2nd 3rd Last 3rd 2nd 1st
-1294 1st 2nd 3rd Last 3rd 2nd 1st
-1295 1st 2nd 3rd Last 3rd 2nd 1st
-1296 1st 2nd 3rd Last 3rd 2nd 1st
-1297 1st 2nd 3rd Last 3rd 2nd 1st
-1298 1st 2nd 3rd Last 3rd 2nd 1st
-1299 1st 2nd 3rd Last 3rd 2nd 1st
-1300 1st 2nd 3rd Last 3rd 2nd 1st
-1301 1st 2nd 3rd Last 3rd 2nd 1st
-1302 1st 2nd 3rd Last 3rd 2nd 1st
-1303 1st 2nd 3rd Last 3rd 2nd 1st
-1304 1st 2nd 3rd Last 3rd 2nd 1st
-1305 1st 2nd 3rd Last 3rd 2nd 1st
-1306 1st 2nd 3rd Last 3rd 2nd 1st
-1307 1st 2nd 3rd Last 3rd 2nd 1st
-1308 1st 2nd 3rd Last 3rd 2nd 1st
-1309 1st 2nd 3rd Last 3rd 2nd 1st
-1310 1st 2nd 3rd Last 3rd 2nd 1st
-1311 1st 2nd 3rd Last 3rd 2nd 1st
-1312 1st 2nd 3rd Last 3rd 2nd 1st
-1313 1st 2nd 3rd Last 3rd 2nd 1st
-1314 1st 2nd 3rd Last 3rd 2nd 1st
-1315 1st 2nd 3rd Last 3rd 2nd 1st
-1316 1st 2nd 3rd Last 3rd 2nd 1st
-1317 1st 2nd 3rd Last 3rd 2nd 1st
-1318 1st 2nd 3rd Last 3rd 2nd 1st
-1319 1st 2nd 3rd Last 3rd 2nd 1st
-1320 1st 2nd 3rd Last 3rd 2nd 1st
-1321 1st 2nd 3rd Last 3rd 2nd 1st
-1322 1st 2nd 3rd Last 3rd 2nd 1st
-1323 1st 2nd 3rd Last 3rd 2nd 1st
-1324 1st 2nd 3rd Last 3rd 2nd 1st
-1325 1st 2nd 3rd Last 3rd 2nd 1st
-1326 1st 2nd 3rd Last 3rd 2nd 1st
-1327 1st 2nd 3rd Last 3rd 2nd 1st
-1328 1st 2nd 3rd Last 3rd 2nd 1st
-1329 1st 2nd 3rd Last 3rd 2nd 1st
-1330 1st 2nd 3rd Last 3rd 2nd 1st
-1331 1st 2nd 3rd Last 3rd 2nd 1st
-1332 1st 2nd 3rd Last 3rd 2nd 1st
-1333 1st 2nd 3rd Last 3rd 2nd 1st
-1334 1st 2nd 3rd Last 3rd 2nd 1st
-1335 1st 2nd 3rd Last 3rd 2nd 1st
-1336 1st 2nd 3rd Last 3rd 2nd 1st
-1337 1st 2nd 3rd Last 3rd 2nd 1st
-1338 1st 2nd 3rd Last 3rd 2nd 1st
-1339 1st 2nd 3rd Last 3rd 2nd 1st
-1340 1st 2nd 3rd Last 3rd 2nd 1st
-1341 1st 2nd 3rd Last 3rd 2nd 1st
-1342 1st 2nd 3rd Last 3rd 2nd 1st
-1343 1st 2nd 3rd Last 3rd 2nd 1st
-1344 1st 2nd 3rd Last 3rd 2nd 1st
-1345 1st 2nd 3rd Last 3rd 2nd 1st
-1346 1st 2nd 3rd Last 3rd 2nd 1st
-1347 1st 2nd 3rd Last 3rd 2nd 1st
-1348 1st 2nd 3rd Last 3rd 2nd 1st
-1349 1st 2nd 3rd Last 3rd 2nd 1st
-1350 1st 2nd 3rd Last 3rd 2nd 1st
-1351 1st 2nd 3rd Last 3rd 2nd 1st
-1352 1st 2nd 3rd Last 3rd 2nd 1st
-1353 1st 2nd 3rd Last 3rd 2nd 1st
-1354 1st 2nd 3rd Last 3rd 2nd 1st
-1355 1st 2nd 3rd Last 3rd 2nd 1st
-1356 1st 2nd 3rd Last 3rd 2nd 1st
-1357 1st 2nd 3rd Last 3rd 2nd 1st
-1358 1st 2nd 3rd Last 3rd 2nd 1st
-1359 1st 2nd 3rd Last 3rd 2nd 1st
-1360 1st 2nd 3rd Last 3rd 2nd 1st
-1361 1st 2nd 3rd Last 3rd 2nd 1st
-1362 1st 2nd 3rd Last 3rd 2nd 1st
-1363 1st 2nd 3rd Last 3rd 2nd 1st
-1364 1st 2nd 3rd Last 3rd 2nd 1st
-1365 1st 2nd 3rd Last 3rd 2nd 1st
-1366 1st 2nd 3rd Last 3rd 2nd 1st
-1367 1st 2nd 3rd Last 3rd 2nd 1st
-1368 1st 2nd 3rd Last 3rd 2nd 1st
-1369 1st 2nd 3rd Last 3rd 2nd 1st
-1370 1st 2nd 3rd Last 3rd 2nd 1st
-1371 1st 2nd 3rd Last 3rd 2nd 1st
-1372 1st 2nd 3rd Last 3rd 2nd 1st
-1373 1st 2nd 3rd Last 3rd 2nd 1st
-1374 1st 2nd 3rd Last 3rd 2nd 1st
-1375 1st 2nd 3rd Last 3rd 2nd 1st
-1376 1st 2nd 3rd Last 3rd 2nd 1st
-1377 1st 2nd 3rd Last 3rd 2nd 1st
-1378 1st 2nd 3rd Last 3rd 2nd 1st
-1379 1st 2nd 3rd Last 3rd 2nd 1st
-1380 1st 2nd 3rd Last 3rd 2nd 1st
-1381 1st 2nd 3rd Last 3rd 2nd 1st
-1382 1st 2nd 3rd Last 3rd 2nd 1st
-1383 1st 2nd 3rd Last 3rd 2nd 1st
-1384 1st 2nd 3rd Last 3rd 2nd 1st
-1385 1st 2nd 3rd Last 3rd 2nd 1st
-1386 1st 2nd 3rd Last 3rd 2nd 1st
-1387 1st 2nd 3rd Last 3rd 2nd 1st
-1388 1st 2nd 3rd Last 3rd 2nd 1st
-1389 1st 2nd 3rd Last 3rd 2nd 1st
-1390 1st 2nd 3rd Last 3rd 2nd 1st
-1391 1st 2nd 3rd Last 3rd 2nd 1st
-1392 1st 2nd 3rd Last 3rd 2nd 1st
-1393 1st 2nd 3rd Last 3rd 2nd 1st
-1394 1st 2nd 3rd Last 3rd 2nd 1st
-1395 1st 2nd 3rd Last 3rd 2nd 1st
-1396 1st 2nd 3rd Last 3rd 2nd 1st
-1397 1st 2nd 3rd Last 3rd 2nd 1st
-1398 1st 2nd 3rd Last 3rd 2nd 1st
-1399 1st 2nd 3rd Last 3rd 2nd 1st
-1400 1st 2nd 3rd Last 3rd 2nd 1st
-1401 1st 2nd 3rd Last 3rd 2nd 1st
-1402 1st 2nd 3rd Last 3rd 2nd 1st
-1403 1st 2nd 3rd Last 3rd 2nd 1st
-1404 1st 2nd 3rd Last 3rd 2nd 1st
-1405 1st 2nd 3rd Last 3rd 2nd 1st
-1406 1st 2nd 3rd Last 3rd 2nd 1st
-1407 1st 2nd 3rd Last 3rd 2nd 1st
-1408 1st 2nd 3rd Last 3rd 2nd 1st
-1409 1st 2nd 3rd Last 3rd 2nd 1st
-1410 1st 2nd 3rd Last 3rd 2nd 1st
-1411 1st 2nd 3rd Last 3rd 2nd 1st
-1412 1st 2nd 3rd Last 3rd 2nd 1st
-1413 1st 2nd 3rd Last 3rd 2nd 1st
-1414 1st 2nd 3rd Last 3rd 2nd 1st
-1415 1st 2nd 3rd Last 3rd 2nd 1st
-1416 1st 2nd 3rd Last 3rd 2nd 1st
-1417 1st 2nd 3rd Last 3rd 2nd 1st
-1418 1st 2nd 3rd Last 3rd 2nd 1st
-1419 1st 2nd 3rd Last 3rd 2nd 1st
-1420 1st 2nd 3rd Last 3rd 2nd 1st
-1421 1st 2nd 3rd Last 3rd 2nd 1st
-1422 1st 2nd 3rd Last 3rd 2nd 1st
-1423 1st 2nd 3rd Last 3rd 2nd 1st
-1424 1st 2nd 3rd Last 3rd 2nd 1st
-1425 1st 2nd 3rd Last 3rd 2nd 1st
-1426 1st 2nd 3rd Last 3rd 2nd 1st
-1427 1st 2nd 3rd Last 3rd 2nd 1st
-1428 1st 2nd 3rd Last 3rd 2nd 1st
-1429 1st 2nd 3rd Last 3rd 2nd 1st
-1430 1st 2nd 3rd Last 3rd 2nd 1st
-1431 1st 2nd 3rd Last 3rd 2nd 1st
-1432 1st 2nd 3rd Last 3rd 2nd 1st
-1433 1st 2nd 3rd Last 3rd 2nd 1st
-1434 1st 2nd 3rd Last 3rd 2nd 1st
-1435 1st 2nd 3rd Last 3rd 2nd 1st
-1436 1st 2nd 3rd Last 3rd 2nd 1st
-1437 1st 2nd 3rd Last 3rd 2nd 1st
-1438 1st 2nd 3rd Last 3rd 2nd 1st
-1439 1st 2nd 3rd Last 3rd 2nd 1st
-1440 1st 2nd 3rd Last 3rd 2nd 1st
-1441 1st 2nd 3rd Last 3rd 2nd 1st
-1442 1st 2nd 3rd Last 3rd 2nd 1st
-1443 1st 2nd 3rd Last 3rd 2nd 1st
-1444 1st 2nd 3rd Last 3rd 2nd 1st
-1445 1st 2nd 3rd Last 3rd 2nd 1st
-1446 1st 2nd 3rd Last 3rd 2nd 1st
-1447 1st 2nd 3rd Last 3rd 2nd 1st
-1448 1st 2nd 3rd Last 3rd 2nd 1st
-1449 1st 2nd 3rd Last 3rd 2nd 1st
-1450 1st 2nd 3rd Last 3rd 2nd 1st
-1451 1st 2nd 3rd Last 3rd 2nd 1st
-1452 1st 2nd 3rd Last 3rd 2nd 1st
-1453 1st 2nd 3rd Last 3rd 2nd 1st
-1454 1st 2nd 3rd Last 3rd 2nd 1st
-1455 1st 2nd 3rd Last 3rd 2nd 1st
-1456 1st 2nd 3rd Last 3rd 2nd 1st
-1457 1st 2nd 3rd Last 3rd 2nd 1st
-1458 1st 2nd 3rd Last 3rd 2nd 1st
-1459 1st 2nd 3rd Last 3rd 2nd 1st
-1460 1st 2nd 3rd Last 3rd 2nd 1st
-1461 1st 2nd 3rd Last 3rd 2nd 1st
-1462 1st 2nd 3rd Last 3rd 2nd 1st
-1463 1st 2nd 3rd Last 3rd 2nd 1st
-1464 1st 2nd 3rd Last 3rd 2nd 1st
-1465 1st 2nd 3rd Last 3rd 2nd 1st
-1466 1st 2nd 3rd Last 3rd 2nd 1st
-1467 1st 2nd 3rd Last 3rd 2nd 1st
-1468 1st 2nd 3rd Last 3rd 2nd 1st
-1469 1st 2nd 3rd Last 3rd 2nd 1st
-1470 1st 2nd 3rd Last 3rd 2nd 1st
-1471 1st 2nd 3rd Last 3rd 2nd 1st
-1472 1st 2nd 3rd Last 3rd 2nd 1st
-1473 1st 2nd 3rd Last 3rd 2nd 1st
-1474 1st 2nd 3rd Last 3rd 2nd 1st
-1475 1st 2nd 3rd Last 3rd 2nd 1st
-1476 1st 2nd 3rd Last 3rd 2nd 1st
-1477 1st 2nd 3rd Last 3rd 2nd 1st
-1478 1st 2nd 3rd Last 3rd 2nd 1st
-1479 1st 2nd 3rd Last 3rd 2nd 1st
-1480 1st 2nd 3rd Last 3rd 2nd 1st
-1481 1st 2nd 3rd Last 3rd 2nd 1st
-1482 1st 2nd 3rd Last 3rd 2nd 1st
-1483 1st 2nd 3rd Last 3rd 2nd 1st
-1484 1st 2nd 3rd Last 3rd 2nd 1st
-1485 1st 2nd 3rd Last 3rd 2nd 1st
-1486 1st 2nd 3rd Last 3rd 2nd 1st
-1487 1st 2nd 3rd Last 3rd 2nd 1st
-1488 1st 2nd 3rd Last 3rd 2nd 1st
-1489 1st 2nd 3rd Last 3rd 2nd 1st
-1490 1st 2nd 3rd Last 3rd 2nd 1st
-1491 1st 2nd 3rd Last 3rd 2nd 1st
-1492 1st 2nd 3rd Last 3rd 2nd 1st
-1493 1st 2nd 3rd Last 3rd 2nd 1st
-1494 1st 2nd 3rd Last 3rd 2nd 1st
-1495 1st 2nd 3rd Last 3rd 2nd 1st
-1496 1st 2nd 3rd Last 3rd 2nd 1st
-1497 1st 2nd 3rd Last 3rd 2nd 1st
-1498 1st 2nd 3rd Last 3rd 2nd 1st
-1499 1st 2nd 3rd Last 3rd 2nd 1st
-1500 1st 2nd 3rd Last 3rd 2nd 1st
-1501 1st 2nd 3rd Last 3rd 2nd 1st
-1502 1st 2nd 3rd Last 3rd 2nd 1st
-1503 1st 2nd 3rd Last 3rd 2nd 1st
-1504 1st 2nd 3rd Last 3rd 2nd 1st
-1505 1st 2nd 3rd Last 3rd 2nd 1st
-1506 1st 2nd 3rd Last 3rd 2nd 1st
-1507 1st 2nd 3rd Last 3rd 2nd 1st
-1508 1st 2nd 3rd Last 3rd 2nd 1st
-1509 1st 2nd 3rd Last 3rd 2nd 1st
-1510 1st 2nd 3rd Last 3rd 2nd 1st
-1511 1st 2nd 3rd Last 3rd 2nd 1st
-1512 1st 2nd 3rd Last 3rd 2nd 1st
-1513 1st 2nd 3rd Last 3rd 2nd 1st
-1514 1st 2nd 3rd Last 3rd 2nd 1st
-1515 1st 2nd 3rd Last 3rd 2nd 1st
-1516 1st 2nd 3rd Last 3rd 2nd 1st
-1517 1st 2nd 3rd Last 3rd 2nd 1st
-1518 1st 2nd 3rd Last 3rd 2nd 1st
-1519 1st 2nd 3rd Last 3rd 2nd 1st
-1520 1st 2nd 3rd Last 3rd 2nd 1st
-1521 1st 2nd 3rd Last 3rd 2nd 1st
-1522 1st 2nd 3rd Last 3rd 2nd 1st
-1523 1st 2nd 3rd Last 3rd 2nd 1st
-1524 1st 2nd 3rd Last 3rd 2nd 1st
-1525 1st 2nd 3rd Last 3rd 2nd 1st
-1526 1st 2nd 3rd Last 3rd 2nd 1st
-1527 1st 2nd 3rd Last 3rd 2nd 1st
-1528 1st 2nd 3rd Last 3rd 2nd 1st
-1529 1st 2nd 3rd Last 3rd 2nd 1st
-1530 1st 2nd 3rd Last 3rd 2nd 1st
-1531 1st 2nd 3rd Last 3rd 2nd 1st
-1532 1st 2nd 3rd Last 3rd 2nd 1st
-1533 1st 2nd 3rd Last 3rd 2nd 1st
-1534 1st 2nd 3rd Last 3rd 2nd 1st
-1535 1st 2nd 3rd Last 3rd 2nd 1st
-1536 1st 2nd 3rd Last 3rd 2nd 1st
-1537 1st 2nd 3rd Last 3rd 2nd 1st
-1538 1st 2nd 3rd Last 3rd 2nd 1st
-1539 1st 2nd 3rd Last 3rd 2nd 1st
-1540 1st 2nd 3rd Last 3rd 2nd 1st
-1541 1st 2nd 3rd Last 3rd 2nd 1st
-1542 1st 2nd 3rd Last 3rd 2nd 1st
-1543 1st 2nd 3rd Last 3rd 2nd 1st
-1544 1st 2nd 3rd Last 3rd 2nd 1st
-1545 1st 2nd 3rd Last 3rd 2nd 1st
-1546 1st 2nd 3rd Last 3rd 2nd 1st
-1547 1st 2nd 3rd Last 3rd 2nd 1st
-1548 1st 2nd 3rd Last 3rd 2nd 1st
-1549 1st 2nd 3rd Last 3rd 2nd 1st
-1550 1st 2nd 3rd Last 3rd 2nd 1st
-1551 1st 2nd 3rd Last 3rd 2nd 1st
-1552 1st 2nd 3rd Last 3rd 2nd 1st
-1553 1st 2nd 3rd Last 3rd 2nd 1st
-1554 1st 2nd 3rd Last 3rd 2nd 1st
-1555 1st 2nd 3rd Last 3rd 2nd 1st
-1556 1st 2nd 3rd Last 3rd 2nd 1st
-1557 1st 2nd 3rd Last 3rd 2nd 1st
-1558 1st 2nd 3rd Last 3rd 2nd 1st
-1559 1st 2nd 3rd Last 3rd 2nd 1st
-1560 1st 2nd 3rd Last 3rd 2nd 1st
-1561 1st 2nd 3rd Last 3rd 2nd 1st
-1562 1st 2nd 3rd Last 3rd 2nd 1st
-1563 1st 2nd 3rd Last 3rd 2nd 1st
-1564 1st 2nd 3rd Last 3rd 2nd 1st
-1565 1st 2nd 3rd Last 3rd 2nd 1st
-1566 1st 2nd 3rd Last 3rd 2nd 1st
-1567 1st 2nd 3rd Last 3rd 2nd 1st
-1568 1st 2nd 3rd Last 3rd 2nd 1st
-1569 1st 2nd 3rd Last 3rd 2nd 1st
-1570 1st 2nd 3rd Last 3rd 2nd 1st
-1571 1st 2nd 3rd Last 3rd 2nd 1st
-1572 1st 2nd 3rd Last 3rd 2nd 1st
-1573 1st 2nd 3rd Last 3rd 2nd 1st
-1574 1st 2nd 3rd Last 3rd 2nd 1st
-1575 1st 2nd 3rd Last 3rd 2nd 1st
-1576 1st 2nd 3rd Last 3rd 2nd 1st
-1577 1st 2nd 3rd Last 3rd 2nd 1st
-1578 1st 2nd 3rd Last 3rd 2nd 1st
-1579 1st 2nd 3rd Last 3rd 2nd 1st
-1580 1st 2nd 3rd Last 3rd 2nd 1st
-1581 1st 2nd 3rd Last 3rd 2nd 1st
-1582 1st 2nd 3rd Last 3rd 2nd 1st
-1583 1st 2nd 3rd Last 3rd 2nd 1st
-1584 1st 2nd 3rd Last 3rd 2nd 1st
-1585 1st 2nd 3rd Last 3rd 2nd 1st
-1586 1st 2nd 3rd Last 3rd 2nd 1st
-1587 1st 2nd 3rd Last 3rd 2nd 1st
-1588 1st 2nd 3rd Last 3rd 2nd 1st
-1589 1st 2nd 3rd Last 3rd 2nd 1st
-1590 1st 2nd 3rd Last 3rd 2nd 1st
-1591 1st 2nd 3rd Last 3rd 2nd 1st
-1592 1st 2nd 3rd Last 3rd 2nd 1st
-1593 1st 2nd 3rd Last 3rd 2nd 1st
-1594 1st 2nd 3rd Last 3rd 2nd 1st
-1595 1st 2nd 3rd Last 3rd 2nd 1st
-1596 1st 2nd 3rd Last 3rd 2nd 1st
-1597 1st 2nd 3rd Last 3rd 2nd 1st
-1598 1st 2nd 3rd Last 3rd 2nd 1st
-1599 1st 2nd 3rd Last 3rd 2nd 1st
-1600 1st 2nd 3rd Last 3rd 2nd 1st
-1601 1st 2nd 3rd Last 3rd 2nd 1st
-1602 1st 2nd 3rd Last 3rd 2nd 1st
-1603 1st 2nd 3rd Last 3rd 2nd 1st
-1604 1st 2nd 3rd Last 3rd 2nd 1st
-1605 1st 2nd 3rd Last 3rd 2nd 1st
-1606 1st 2nd 3rd Last 3rd 2nd 1st
-1607 1st 2nd 3rd Last 3rd 2nd 1st
-1608 1st 2nd 3rd Last 3rd 2nd 1st
-1609 1st 2nd 3rd Last 3rd 2nd 1st
-1610 1st 2nd 3rd Last 3rd 2nd 1st
-1611 1st 2nd 3rd Last 3rd 2nd 1st
-1612 1st 2nd 3rd Last 3rd 2nd 1st
-1613 1st 2nd 3rd Last 3rd 2nd 1st
-1614 1st 2nd 3rd Last 3rd 2nd 1st
-1615 1st 2nd 3rd Last 3rd 2nd 1st
-1616 1st 2nd 3rd Last 3rd 2nd 1st
-1617 1st 2nd 3rd Last 3rd 2nd 1st
-1618 1st 2nd 3rd Last 3rd 2nd 1st
-1619 1st 2nd 3rd Last 3rd 2nd 1st
-1620 1st 2nd 3rd Last 3rd 2nd 1st
-1621 1st 2nd 3rd Last 3rd 2nd 1st
-1622 1st 2nd 3rd Last 3rd 2nd 1st
-1623 1st 2nd 3rd Last 3rd 2nd 1st
-1624 1st 2nd 3rd Last 3rd 2nd 1st
-1625 1st 2nd 3rd Last 3rd 2nd 1st
-1626 1st 2nd 3rd Last 3rd 2nd 1st
-1627 1st 2nd 3rd Last 3rd 2nd 1st
-1628 1st 2nd 3rd Last 3rd 2nd 1st
-1629 1st 2nd 3rd Last 3rd 2nd 1st
-1630 1st 2nd 3rd Last 3rd 2nd 1st
-1631 1st 2nd 3rd Last 3rd 2nd 1st
-1632 1st 2nd 3rd Last 3rd 2nd 1st
-1633 1st 2nd 3rd Last 3rd 2nd 1st
-1634 1st 2nd 3rd Last 3rd 2nd 1st
-1635 1st 2nd 3rd Last 3rd 2nd 1st
-1636 1st 2nd 3rd Last 3rd 2nd 1st
-1637 1st 2nd 3rd Last 3rd 2nd 1st
-1638 1st 2nd 3rd Last 3rd 2nd 1st
-1639 1st 2nd 3rd Last 3rd 2nd 1st
-1640 1st 2nd 3rd Last 3rd 2nd 1st
-1641 1st 2nd 3rd Last 3rd 2nd 1st
-1642 1st 2nd 3rd Last 3rd 2nd 1st
-1643 1st 2nd 3rd Last 3rd 2nd 1st
-1644 1st 2nd 3rd Last 3rd 2nd 1st
-1645 1st 2nd 3rd Last 3rd 2nd 1st
-1646 1st 2nd 3rd Last 3rd 2nd 1st
-1647 1st 2nd 3rd Last 3rd 2nd 1st
-1648 1st 2nd 3rd Last 3rd 2nd 1st
-1649 1st 2nd 3rd Last 3rd 2nd 1st
-1650 1st 2nd 3rd Last 3rd 2nd 1st
-1651 1st 2nd 3rd Last 3rd 2nd 1st
-1652 1st 2nd 3rd Last 3rd 2nd 1st
-1653 1st 2nd 3rd Last 3rd 2nd 1st
-1654 1st 2nd 3rd Last 3rd 2nd 1st
-1655 1st 2nd 3rd Last 3rd 2nd 1st
-1656 1st 2nd 3rd Last 3rd 2nd 1st
-1657 1st 2nd 3rd Last 3rd 2nd 1st
-1658 1st 2nd 3rd Last 3rd 2nd 1st
-1659 1st 2nd 3rd Last 3rd 2nd 1st
-1660 1st 2nd 3rd Last 3rd 2nd 1st
-1661 1st 2nd 3rd Last 3rd 2nd 1st
-1662 1st 2nd 3rd Last 3rd 2nd 1st
-1663 1st 2nd 3rd Last 3rd 2nd 1st
-1664 1st 2nd 3rd Last 3rd 2nd 1st
-1665 1st 2nd 3rd Last 3rd 2nd 1st
-1666 1st 2nd 3rd Last 3rd 2nd 1st
-1667 1st 2nd 3rd Last 3rd 2nd 1st
-1668 1st 2nd 3rd Last 3rd 2nd 1st
-1669 1st 2nd 3rd Last 3rd 2nd 1st
-1670 1st 2nd 3rd Last 3rd 2nd 1st
-1671 1st 2nd 3rd Last 3rd 2nd 1st
-1672 1st 2nd 3rd Last 3rd 2nd 1st
-1673 1st 2nd 3rd Last 3rd 2nd 1st
-1674 1st 2nd 3rd Last 3rd 2nd 1st
-1675 1st 2nd 3rd Last 3rd 2nd 1st
-1676 1st 2nd 3rd Last 3rd 2nd 1st
-1677 1st 2nd 3rd Last 3rd 2nd 1st
-1678 1st 2nd 3rd Last 3rd 2nd 1st
-1679 1st 2nd 3rd Last 3rd 2nd 1st
-1680 1st 2nd 3rd Last 3rd 2nd 1st
-1681 1st 2nd 3rd Last 3rd 2nd 1st
-1682 1st 2nd 3rd Last 3rd 2nd 1st
-1683 1st 2nd 3rd Last 3rd 2nd 1st
-1684 1st 2nd 3rd Last 3rd 2nd 1st
-1685 1st 2nd 3rd Last 3rd 2nd 1st
-1686 1st 2nd 3rd Last 3rd 2nd 1st
-1687 1st 2nd 3rd Last 3rd 2nd 1st
-1688 1st 2nd 3rd Last 3rd 2nd 1st
-1689 1st 2nd 3rd Last 3rd 2nd 1st
-1690 1st 2nd 3rd Last 3rd 2nd 1st
-1691 1st 2nd 3rd Last 3rd 2nd 1st
-1692 1st 2nd 3rd Last 3rd 2nd 1st
-1693 1st 2nd 3rd Last 3rd 2nd 1st
-1694 1st 2nd 3rd Last 3rd 2nd 1st
-1695 1st 2nd 3rd Last 3rd 2nd 1st
-1696 1st 2nd 3rd Last 3rd 2nd 1st
-1697 1st 2nd 3rd Last 3rd 2nd 1st
-1698 1st 2nd 3rd Last 3rd 2nd 1st
-1699 1st 2nd 3rd Last 3rd 2nd 1st
-1700 1st 2nd 3rd Last 3rd 2nd 1st
-1701 1st 2nd 3rd Last 3rd 2nd 1st
-1702 1st 2nd 3rd Last 3rd 2nd 1st
-1703 1st 2nd 3rd Last 3rd 2nd 1st
-1704 1st 2nd 3rd Last 3rd 2nd 1st
-1705 1st 2nd 3rd Last 3rd 2nd 1st
-1706 1st 2nd 3rd Last 3rd 2nd 1st
-1707 1st 2nd 3rd Last 3rd 2nd 1st
-1708 1st 2nd 3rd Last 3rd 2nd 1st
-1709 1st 2nd 3rd Last 3rd 2nd 1st
-1710 1st 2nd 3rd Last 3rd 2nd 1st
-1711 1st 2nd 3rd Last 3rd 2nd 1st
-1712 1st 2nd 3rd Last 3rd 2nd 1st
-1713 1st 2nd 3rd Last 3rd 2nd 1st
-1714 1st 2nd 3rd Last 3rd 2nd 1st
-1715 1st 2nd 3rd Last 3rd 2nd 1st
-1716 1st 2nd 3rd Last 3rd 2nd 1st
-1717 1st 2nd 3rd Last 3rd 2nd 1st
-1718 1st 2nd 3rd Last 3rd 2nd 1st
-1719 1st 2nd 3rd Last 3rd 2nd 1st
-1720 1st 2nd 3rd Last 3rd 2nd 1st
-1721 1st 2nd 3rd Last 3rd 2nd 1st
-1722 1st 2nd 3rd Last 3rd 2nd 1st
-1723 1st 2nd 3rd Last 3rd 2nd 1st
-1724 1st 2nd 3rd Last 3rd 2nd 1st
-1725 1st 2nd 3rd Last 3rd 2nd 1st
-1726 1st 2nd 3rd Last 3rd 2nd 1st
-1727 1st 2nd 3rd Last 3rd 2nd 1st
-1728 1st 2nd 3rd Last 3rd 2nd 1st
-1729 1st 2nd 3rd Last 3rd 2nd 1st
-1730 1st 2nd 3rd Last 3rd 2nd 1st
-1731 1st 2nd 3rd Last 3rd 2nd 1st
-1732 1st 2nd 3rd Last 3rd 2nd 1st
-1733 1st 2nd 3rd Last 3rd 2nd 1st
-1734 1st 2nd 3rd Last 3rd 2nd 1st
-1735 1st 2nd 3rd Last 3rd 2nd 1st
-1736 1st 2nd 3rd Last 3rd 2nd 1st
-1737 1st 2nd 3rd Last 3rd 2nd 1st
-1738 1st 2nd 3rd Last 3rd 2nd 1st
-1739 1st 2nd 3rd Last 3rd 2nd 1st
-1740 1st 2nd 3rd Last 3rd 2nd 1st
-1741 1st 2nd 3rd Last 3rd 2nd 1st
-1742 1st 2nd 3rd Last 3rd 2nd 1st
-1743 1st 2nd 3rd Last 3rd 2nd 1st
-1744 1st 2nd 3rd Last 3rd 2nd 1st
-1745 1st 2nd 3rd Last 3rd 2nd 1st
-1746 1st 2nd 3rd Last 3rd 2nd 1st
-1747 1st 2nd 3rd Last 3rd 2nd 1st
-1748 1st 2nd 3rd Last 3rd 2nd 1st
-1749 1st 2nd 3rd Last 3rd 2nd 1st
-1750 1st 2nd 3rd Last 3rd 2nd 1st
-1751 1st 2nd 3rd Last 3rd 2nd 1st
-1752 1st 2nd 3rd Last 3rd 2nd 1st
-1753 1st 2nd 3rd Last 3rd 2nd 1st
-1754 1st 2nd 3rd Last 3rd 2nd 1st
-1755 1st 2nd 3rd Last 3rd 2nd 1st
-1756 1st 2nd 3rd Last 3rd 2nd 1st
-1757 1st 2nd 3rd Last 3rd 2nd 1st
-1758 1st 2nd 3rd Last 3rd 2nd 1st
-1759 1st 2nd 3rd Last 3rd 2nd 1st
-1760 1st 2nd 3rd Last 3rd 2nd 1st
-1761 1st 2nd 3rd Last 3rd 2nd 1st
-1762 1st 2nd 3rd Last 3rd 2nd 1st
-1763 1st 2nd 3rd Last 3rd 2nd 1st
-1764 1st 2nd 3rd Last 3rd 2nd 1st
-1765 1st 2nd 3rd Last 3rd 2nd 1st
-1766 1st 2nd 3rd Last 3rd 2nd 1st
-1767 1st 2nd 3rd Last 3rd 2nd 1st
-1768 1st 2nd 3rd Last 3rd 2nd 1st
-1769 1st 2nd 3rd Last 3rd 2nd 1st
-1770 1st 2nd 3rd Last 3rd 2nd 1st
-1771 1st 2nd 3rd Last 3rd 2nd 1st
-1772 1st 2nd 3rd Last 3rd 2nd 1st
-1773 1st 2nd 3rd Last 3rd 2nd 1st
-1774 1st 2nd 3rd Last 3rd 2nd 1st
-1775 1st 2nd 3rd Last 3rd 2nd 1st
-1776 1st 2nd 3rd Last 3rd 2nd 1st
-1777 1st 2nd 3rd Last 3rd 2nd 1st
-1778 1st 2nd 3rd Last 3rd 2nd 1st
-1779 1st 2nd 3rd Last 3rd 2nd 1st
-1780 1st 2nd 3rd Last 3rd 2nd 1st
-1781 1st 2nd 3rd Last 3rd 2nd 1st
-1782 1st 2nd 3rd Last 3rd 2nd 1st
-1783 1st 2nd 3rd Last 3rd 2nd 1st
-1784 1st 2nd 3rd Last 3rd 2nd 1st
-1785 1st 2nd 3rd Last 3rd 2nd 1st
-1786 1st 2nd 3rd Last 3rd 2nd 1st
-1787 1st 2nd 3rd Last 3rd 2nd 1st
-1788 1st 2nd 3rd Last 3rd 2nd 1st
-1789 1st 2nd 3rd Last 3rd 2nd 1st
-1790 1st 2nd 3rd Last 3rd 2nd 1st
-1791 1st 2nd 3rd Last 3rd 2nd 1st
-1792 1st 2nd 3rd Last 3rd 2nd 1st
-1793 1st 2nd 3rd Last 3rd 2nd 1st
-1794 1st 2nd 3rd Last 3rd 2nd 1st
-1795 1st 2nd 3rd Last 3rd 2nd 1st
-1796 1st 2nd 3rd Last 3rd 2nd 1st
-1797 1st 2nd 3rd Last 3rd 2nd 1st
-1798 1st 2nd 3rd Last 3rd 2nd 1st
-1799 1st 2nd 3rd Last 3rd 2nd 1st
-1800 1st 2nd 3rd Last 3rd 2nd 1st
-1801 1st 2nd 3rd Last 3rd 2nd 1st
-1802 1st 2nd 3rd Last 3rd 2nd 1st
-1803 1st 2nd 3rd Last 3rd 2nd 1st
-1804 1st 2nd 3rd Last 3rd 2nd 1st
-1805 1st 2nd 3rd Last 3rd 2nd 1st
-1806 1st 2nd 3rd Last 3rd 2nd 1st
-1807 1st 2nd 3rd Last 3rd 2nd 1st
-1808 1st 2nd 3rd Last 3rd 2nd 1st
-1809 1st 2nd 3rd Last 3rd 2nd 1st
-1810 1st 2nd 3rd Last 3rd 2nd 1st
-1811 1st 2nd 3rd Last 3rd 2nd 1st
-1812 1st 2nd 3rd Last 3rd 2nd 1st
-1813 1st 2nd 3rd Last 3rd 2nd 1st
-1814 1st 2nd 3rd Last 3rd 2nd 1st
-1815 1st 2nd 3rd Last 3rd 2nd 1st
-1816 1st 2nd 3rd Last 3rd 2nd 1st
-1817 1st 2nd 3rd Last 3rd 2nd 1st
-1818 1st 2nd 3rd Last 3rd 2nd 1st
-1819 1st 2nd 3rd Last 3rd 2nd 1st
-1820 1st 2nd 3rd Last 3rd 2nd 1st
-1821 1st 2nd 3rd Last 3rd 2nd 1st
-1822 1st 2nd 3rd Last 3rd 2nd 1st
-1823 1st 2nd 3rd Last 3rd 2nd 1st
-1824 1st 2nd 3rd Last 3rd 2nd 1st
-1825 1st 2nd 3rd Last 3rd 2nd 1st
-1826 1st 2nd 3rd Last 3rd 2nd 1st
-1827 1st 2nd 3rd Last 3rd 2nd 1st
-1828 1st 2nd 3rd Last 3rd 2nd 1st
-1829 1st 2nd 3rd Last 3rd 2nd 1st
-1830 1st 2nd 3rd Last 3rd 2nd 1st
-1831 1st 2nd 3rd Last 3rd 2nd 1st
-1832 1st 2nd 3rd Last 3rd 2nd 1st
-1833 1st 2nd 3rd Last 3rd 2nd 1st
-1834 1st 2nd 3rd Last 3rd 2nd 1st
-1835 1st 2nd 3rd Last 3rd 2nd 1st
-1836 1st 2nd 3rd Last 3rd 2nd 1st
-1837 1st 2nd 3rd Last 3rd 2nd 1st
-1838 1st 2nd 3rd Last 3rd 2nd 1st
-1839 1st 2nd 3rd Last 3rd 2nd 1st
-1840 1st 2nd 3rd Last 3rd 2nd 1st
-1841 1st 2nd 3rd Last 3rd 2nd 1st
-1842 1st 2nd 3rd Last 3rd 2nd 1st
-1843 1st 2nd 3rd Last 3rd 2nd 1st
-1844 1st 2nd 3rd Last 3rd 2nd 1st
-1845 1st 2nd 3rd Last 3rd 2nd 1st
-1846 1st 2nd 3rd Last 3rd 2nd 1st
-1847 1st 2nd 3rd Last 3rd 2nd 1st
-1848 1st 2nd 3rd Last 3rd 2nd 1st
-1849 1st 2nd 3rd Last 3rd 2nd 1st
-1850 1st 2nd 3rd Last 3rd 2nd 1st
-1851 1st 2nd 3rd Last 3rd 2nd 1st
-1852 1st 2nd 3rd Last 3rd 2nd 1st
-1853 1st 2nd 3rd Last 3rd 2nd 1st
-1854 1st 2nd 3rd Last 3rd 2nd 1st
-1855 1st 2nd 3rd Last 3rd 2nd 1st
-1856 1st 2nd 3rd Last 3rd 2nd 1st
-1857 1st 2nd 3rd Last 3rd 2nd 1st
-1858 1st 2nd 3rd Last 3rd 2nd 1st
-1859 1st 2nd 3rd Last 3rd 2nd 1st
-1860 1st 2nd 3rd Last 3rd 2nd 1st
-1861 1st 2nd 3rd Last 3rd 2nd 1st
-1862 1st 2nd 3rd Last 3rd 2nd 1st
-1863 1st 2nd 3rd Last 3rd 2nd 1st
-1864 1st 2nd 3rd Last 3rd 2nd 1st
-1865 1st 2nd 3rd Last 3rd 2nd 1st
-1866 1st 2nd 3rd Last 3rd 2nd 1st
-1867 1st 2nd 3rd Last 3rd 2nd 1st
-1868 1st 2nd 3rd Last 3rd 2nd 1st
-1869 1st 2nd 3rd Last 3rd 2nd 1st
-1870 1st 2nd 3rd Last 3rd 2nd 1st
-1871 1st 2nd 3rd Last 3rd 2nd 1st
-1872 1st 2nd 3rd Last 3rd 2nd 1st
-1873 1st 2nd 3rd Last 3rd 2nd 1st
-1874 1st 2nd 3rd Last 3rd 2nd 1st
-1875 1st 2nd 3rd Last 3rd 2nd 1st
-1876 1st 2nd 3rd Last 3rd 2nd 1st
-1877 1st 2nd 3rd Last 3rd 2nd 1st
-1878 1st 2nd 3rd Last 3rd 2nd 1st
-1879 1st 2nd 3rd Last 3rd 2nd 1st
-1880 1st 2nd 3rd Last 3rd 2nd 1st
-1881 1st 2nd 3rd Last 3rd 2nd 1st
-1882 1st 2nd 3rd Last 3rd 2nd 1st
-1883 1st 2nd 3rd Last 3rd 2nd 1st
-1884 1st 2nd 3rd Last 3rd 2nd 1st
-1885 1st 2nd 3rd Last 3rd 2nd 1st
-1886 1st 2nd 3rd Last 3rd 2nd 1st
-1887 1st 2nd 3rd Last 3rd 2nd 1st
-1888 1st 2nd 3rd Last 3rd 2nd 1st
-1889 1st 2nd 3rd Last 3rd 2nd 1st
-1890 1st 2nd 3rd Last 3rd 2nd 1st
-1891 1st 2nd 3rd Last 3rd 2nd 1st
-1892 1st 2nd 3rd Last 3rd 2nd 1st
-1893 1st 2nd 3rd Last 3rd 2nd 1st
-1894 1st 2nd 3rd Last 3rd 2nd 1st
-1895 1st 2nd 3rd Last 3rd 2nd 1st
-1896 1st 2nd 3rd Last 3rd 2nd 1st
-1897 1st 2nd 3rd Last 3rd 2nd 1st
-1898 1st 2nd 3rd Last 3rd 2nd 1st
-1899 1st 2nd 3rd Last 3rd 2nd 1st
-1900 1st 2nd 3rd Last 3rd 2nd 1st
-1901 1st 2nd 3rd Last 3rd 2nd 1st
-1902 1st 2nd 3rd Last 3rd 2nd 1st
-1903 1st 2nd 3rd Last 3rd 2nd 1st
-1904 1st 2nd 3rd Last 3rd 2nd 1st
-1905 1st 2nd 3rd Last 3rd 2nd 1st
-1906 1st 2nd 3rd Last 3rd 2nd 1st
-1907 1st 2nd 3rd Last 3rd 2nd 1st
-1908 1st 2nd 3rd Last 3rd 2nd 1st
-1909 1st 2nd 3rd Last 3rd 2nd 1st
-1910 1st 2nd 3rd Last 3rd 2nd 1st
-1911 1st 2nd 3rd Last 3rd 2nd 1st
-1912 1st 2nd 3rd Last 3rd 2nd 1st
-1913 1st 2nd 3rd Last 3rd 2nd 1st
-1914 1st 2nd 3rd Last 3rd 2nd 1st
-1915 1st 2nd 3rd Last 3rd 2nd 1st
-1916 1st 2nd 3rd Last 3rd 2nd 1st
-1917 1st 2nd 3rd Last 3rd 2nd 1st
-1918 1st 2nd 3rd Last 3rd 2nd 1st
-1919 1st 2nd 3rd Last 3rd 2nd 1st
-1920 1st 2nd 3rd Last 3rd 2nd 1st
-1921 1st 2nd 3rd Last 3rd 2nd 1st
-1922 1st 2nd 3rd Last 3rd 2nd 1st
-1923 1st 2nd 3rd Last 3rd 2nd 1st
-1924 1st 2nd 3rd Last 3rd 2nd 1st
-1925 1st 2nd 3rd Last 3rd 2nd 1st
-1926 1st 2nd 3rd Last 3rd 2nd 1st
-1927 1st 2nd 3rd Last 3rd 2nd 1st
-1928 1st 2nd 3rd Last 3rd 2nd 1st
-1929 1st 2nd 3rd Last 3rd 2nd 1st
-1930 1st 2nd 3rd Last 3rd 2nd 1st
-1931 1st 2nd 3rd Last 3rd 2nd 1st
-1932 1st 2nd 3rd Last 3rd 2nd 1st
-1933 1st 2nd 3rd Last 3rd 2nd 1st
-1934 1st 2nd 3rd Last 3rd 2nd 1st
-1935 1st 2nd 3rd Last 3rd 2nd 1st
-1936 1st 2nd 3rd Last 3rd 2nd 1st
-1937 1st 2nd 3rd Last 3rd 2nd 1st
-1938 1st 2nd 3rd Last 3rd 2nd 1st
-1939 1st 2nd 3rd Last 3rd 2nd 1st
-1940 1st 2nd 3rd Last 3rd 2nd 1st
-1941 1st 2nd 3rd Last 3rd 2nd 1st
-1942 1st 2nd 3rd Last 3rd 2nd 1st
-1943 1st 2nd 3rd Last 3rd 2nd 1st
-1944 1st 2nd 3rd Last 3rd 2nd 1st
-1945 1st 2nd 3rd Last 3rd 2nd 1st
-1946 1st 2nd 3rd Last 3rd 2nd 1st
-1947 1st 2nd 3rd Last 3rd 2nd 1st
-1948 1st 2nd 3rd Last 3rd 2nd 1st
-1949 1st 2nd 3rd Last 3rd 2nd 1st
-1950 1st 2nd 3rd Last 3rd 2nd 1st
-1951 1st 2nd 3rd Last 3rd 2nd 1st
-1952 1st 2nd 3rd Last 3rd 2nd 1st
-1953 1st 2nd 3rd Last 3rd 2nd 1st
-1954 1st 2nd 3rd Last 3rd 2nd 1st
-1955 1st 2nd 3rd Last 3rd 2nd 1st
-1956 1st 2nd 3rd Last 3rd 2nd 1st
-1957 1st 2nd 3rd Last 3rd 2nd 1st
-1958 1st 2nd 3rd Last 3rd 2nd 1st
-1959 1st 2nd 3rd Last 3rd 2nd 1st
-1960 1st 2nd 3rd Last 3rd 2nd 1st
-1961 1st 2nd 3rd Last 3rd 2nd 1st
-1962 1st 2nd 3rd Last 3rd 2nd 1st
-1963 1st 2nd 3rd Last 3rd 2nd 1st
-1964 1st 2nd 3rd Last 3rd 2nd 1st
-1965 1st 2nd 3rd Last 3rd 2nd 1st
-1966 1st 2nd 3rd Last 3rd 2nd 1st
-1967 1st 2nd 3rd Last 3rd 2nd 1st
-1968 1st 2nd 3rd Last 3rd 2nd 1st
-1969 1st 2nd 3rd Last 3rd 2nd 1st
-1970 1st 2nd 3rd Last 3rd 2nd 1st
-1971 1st 2nd 3rd Last 3rd 2nd 1st
-1972 1st 2nd 3rd Last 3rd 2nd 1st
-1973 1st 2nd 3rd Last 3rd 2nd 1st
-1974 1st 2nd 3rd Last 3rd 2nd 1st
-1975 1st 2nd 3rd Last 3rd 2nd 1st
-1976 1st 2nd 3rd Last 3rd 2nd 1st
-1977 1st 2nd 3rd Last 3rd 2nd 1st
-1978 1st 2nd 3rd Last 3rd 2nd 1st
-1979 1st 2nd 3rd Last 3rd 2nd 1st
-1980 1st 2nd 3rd Last 3rd 2nd 1st
-1981 1st 2nd 3rd Last 3rd 2nd 1st
-1982 1st 2nd 3rd Last 3rd 2nd 1st
-1983 1st 2nd 3rd Last 3rd 2nd 1st
-1984 1st 2nd 3rd Last 3rd 2nd 1st
-1985 1st 2nd 3rd Last 3rd 2nd 1st
-1986 1st 2nd 3rd Last 3rd 2nd 1st
-1987 1st 2nd 3rd Last 3rd 2nd 1st
-1988 1st 2nd 3rd Last 3rd 2nd 1st
-1989 1st 2nd 3rd Last 3rd 2nd 1st
-1990 1st 2nd 3rd Last 3rd 2nd 1st
-1991 1st 2nd 3rd Last 3rd 2nd 1st
-1992 1st 2nd 3rd Last 3rd 2nd 1st
-1993 1st 2nd 3rd Last 3rd 2nd 1st
-1994 1st 2nd 3rd Last 3rd 2nd 1st
-1995 1st 2nd 3rd Last 3rd 2nd 1st
-1996 1st 2nd 3rd Last 3rd 2nd 1st
-1997 1st 2nd 3rd Last 3rd 2nd 1st
-1998 1st 2nd 3rd Last 3rd 2nd 1st
-1999 1st 2nd 3rd Last 3rd 2nd 1st
-2000 1st 2nd 3rd Last 3rd 2nd 1st
-2001 1st 2nd 3rd Last 3rd 2nd 1st
-2002 1st 2nd 3rd Last 3rd 2nd 1st
-2003 1st 2nd 3rd Last 3rd 2nd 1st
-2004 1st 2nd 3rd Last 3rd 2nd 1st
-2005 1st 2nd 3rd Last 3rd 2nd 1st
-2006 1st 2nd 3rd Last 3rd 2nd 1st
-2007 1st 2nd 3rd Last 3rd 2nd 1st
-2008 1st 2nd 3rd Last 3rd 2nd 1st
-2009 1st 2nd 3rd Last 3rd 2nd 1st
-2010 1st 2nd 3rd Last 3rd 2nd 1st
-2011 1st 2nd 3rd Last 3rd 2nd 1st
-2012 1st 2nd 3rd Last 3rd 2nd 1st
-2013 1st 2nd 3rd Last 3rd 2nd 1st
-2014 1st 2nd 3rd Last 3rd 2nd 1st
-2015 1st 2nd 3rd Last 3rd 2nd 1st
-2016 1st 2nd 3rd Last 3rd 2nd 1st
-2017 1st 2nd 3rd Last 3rd 2nd 1st
-2018 1st 2nd 3rd Last 3rd 2nd 1st
-2019 1st 2nd 3rd Last 3rd 2nd 1st
-2020 1st 2nd 3rd Last 3rd 2nd 1st
-2021 1st 2nd 3rd Last 3rd 2nd 1st
-2022 1st 2nd 3rd Last 3rd 2nd 1st
-2023 1st 2nd 3rd Last 3rd 2nd 1st
-2024 1st 2nd 3rd Last 3rd 2nd 1st
-2025 1st 2nd 3rd Last 3rd 2nd 1st
-2026 1st 2nd 3rd Last 3rd 2nd 1st
-2027 1st 2nd 3rd Last 3rd 2nd 1st
-2028 1st 2nd 3rd Last 3rd 2nd 1st
-2029 1st 2nd 3rd Last 3rd 2nd 1st
-2030 1st 2nd 3rd Last 3rd 2nd 1st
-2031 1st 2nd 3rd Last 3rd 2nd 1st
-2032 1st 2nd 3rd Last 3rd 2nd 1st
-2033 1st 2nd 3rd Last 3rd 2nd 1st
-2034 1st 2nd 3rd Last 3rd 2nd 1st
-2035 1st 2nd 3rd Last 3rd 2nd 1st
-2036 1st 2nd 3rd Last 3rd 2nd 1st
-2037 1st 2nd 3rd Last 3rd 2nd 1st
-2038 1st 2nd 3rd Last 3rd 2nd 1st
-2039 1st 2nd 3rd Last 3rd 2nd 1st
-2040 1st 2nd 3rd Last 3rd 2nd 1st
-2041 1st 2nd 3rd Last 3rd 2nd 1st
-2042 1st 2nd 3rd Last 3rd 2nd 1st
-2043 1st 2nd 3rd Last 3rd 2nd 1st
-2044 1st 2nd 3rd Last 3rd 2nd 1st
-2045 1st 2nd 3rd Last 3rd 2nd 1st
-2046 1st 2nd 3rd Last 3rd 2nd 1st
-2047 1st 2nd 3rd Last 3rd 2nd 1st
-2048 1st 2nd 3rd Last 3rd 2nd 1st
-2049 1st 2nd 3rd Last 3rd 2nd 1st
-2050 1st 2nd 3rd Last 3rd 2nd 1st
-2051 1st 2nd 3rd Last 3rd 2nd 1st
-2052 1st 2nd 3rd Last 3rd 2nd 1st
-2053 1st 2nd 3rd Last 3rd 2nd 1st
-2054 1st 2nd 3rd Last 3rd 2nd 1st
-2055 1st 2nd 3rd Last 3rd 2nd 1st
-2056 1st 2nd 3rd Last 3rd 2nd 1st
-2057 1st 2nd 3rd Last 3rd 2nd 1st
-2058 1st 2nd 3rd Last 3rd 2nd 1st
-2059 1st 2nd 3rd Last 3rd 2nd 1st
-2060 1st 2nd 3rd Last 3rd 2nd 1st
-2061 1st 2nd 3rd Last 3rd 2nd 1st
-2062 1st 2nd 3rd Last 3rd 2nd 1st
-2063 1st 2nd 3rd Last 3rd 2nd 1st
-2064 1st 2nd 3rd Last 3rd 2nd 1st
-2065 1st 2nd 3rd Last 3rd 2nd 1st
-2066 1st 2nd 3rd Last 3rd 2nd 1st
-2067 1st 2nd 3rd Last 3rd 2nd 1st
-2068 1st 2nd 3rd Last 3rd 2nd 1st
-2069 1st 2nd 3rd Last 3rd 2nd 1st
-2070 1st 2nd 3rd Last 3rd 2nd 1st
-2071 1st 2nd 3rd Last 3rd 2nd 1st
-2072 1st 2nd 3rd Last 3rd 2nd 1st
-2073 1st 2nd 3rd Last 3rd 2nd 1st
-2074 1st 2nd 3rd Last 3rd 2nd 1st
-2075 1st 2nd 3rd Last 3rd 2nd 1st
-2076 1st 2nd 3rd Last 3rd 2nd 1st
-2077 1st 2nd 3rd Last 3rd 2nd 1st
-2078 1st 2nd 3rd Last 3rd 2nd 1st
-2079 1st 2nd 3rd Last 3rd 2nd 1st
-2080 1st 2nd 3rd Last 3rd 2nd 1st
-2081 1st 2nd 3rd Last 3rd 2nd 1st
-2082 1st 2nd 3rd Last 3rd 2nd 1st
-2083 1st 2nd 3rd Last 3rd 2nd 1st
-2084 1st 2nd 3rd Last 3rd 2nd 1st
-2085 1st 2nd 3rd Last 3rd 2nd 1st
-2086 1st 2nd 3rd Last 3rd 2nd 1st
-2087 1st 2nd 3rd Last 3rd 2nd 1st
-2088 1st 2nd 3rd Last 3rd 2nd 1st
-2089 1st 2nd 3rd Last 3rd 2nd 1st
-2090 1st 2nd 3rd Last 3rd 2nd 1st
-2091 1st 2nd 3rd Last 3rd 2nd 1st
-2092 1st 2nd 3rd Last 3rd 2nd 1st
-2093 1st 2nd 3rd Last 3rd 2nd 1st
-2094 1st 2nd 3rd Last 3rd 2nd 1st
-2095 1st 2nd 3rd Last 3rd 2nd 1st
-2096 1st 2nd 3rd Last 3rd 2nd 1st
-2097 1st 2nd 3rd Last 3rd 2nd 1st
-2098 1st 2nd 3rd Last 3rd 2nd 1st
-2099 1st 2nd 3rd Last 3rd 2nd 1st
-2100 1st 2nd 3rd Last 3rd 2nd 1st
-2101 1st 2nd 3rd Last 3rd 2nd 1st
-2102 1st 2nd 3rd Last 3rd 2nd 1st
-2103 1st 2nd 3rd Last 3rd 2nd 1st
-2104 1st 2nd 3rd Last 3rd 2nd 1st
-2105 1st 2nd 3rd Last 3rd 2nd 1st
-2106 1st 2nd 3rd Last 3rd 2nd 1st
-2107 1st 2nd 3rd Last 3rd 2nd 1st
-2108 1st 2nd 3rd Last 3rd 2nd 1st
-2109 1st 2nd 3rd Last 3rd 2nd 1st
-2110 1st 2nd 3rd Last 3rd 2nd 1st
-2111 1st 2nd 3rd Last 3rd 2nd 1st
-2112 1st 2nd 3rd Last 3rd 2nd 1st
-2113 1st 2nd 3rd Last 3rd 2nd 1st
-2114 1st 2nd 3rd Last 3rd 2nd 1st
-2115 1st 2nd 3rd Last 3rd 2nd 1st
-2116 1st 2nd 3rd Last 3rd 2nd 1st
-2117 1st 2nd 3rd Last 3rd 2nd 1st
-2118 1st 2nd 3rd Last 3rd 2nd 1st
-2119 1st 2nd 3rd Last 3rd 2nd 1st
-2120 1st 2nd 3rd Last 3rd 2nd 1st
-2121 1st 2nd 3rd Last 3rd 2nd 1st
-2122 1st 2nd 3rd Last 3rd 2nd 1st
-2123 1st 2nd 3rd Last 3rd 2nd 1st
-2124 1st 2nd 3rd Last 3rd 2nd 1st
-2125 1st 2nd 3rd Last 3rd 2nd 1st
-2126 1st 2nd 3rd Last 3rd 2nd 1st
-2127 1st 2nd 3rd Last 3rd 2nd 1st
-2128 1st 2nd 3rd Last 3rd 2nd 1st
-2129 1st 2nd 3rd Last 3rd 2nd 1st
-2130 1st 2nd 3rd Last 3rd 2nd 1st
-2131 1st 2nd 3rd Last 3rd 2nd 1st
-2132 1st 2nd 3rd Last 3rd 2nd 1st
-2133 1st 2nd 3rd Last 3rd 2nd 1st
-2134 1st 2nd 3rd Last 3rd 2nd 1st
-2135 1st 2nd 3rd Last 3rd 2nd 1st
-2136 1st 2nd 3rd Last 3rd 2nd 1st
-2137 1st 2nd 3rd Last 3rd 2nd 1st
-2138 1st 2nd 3rd Last 3rd 2nd 1st
-2139 1st 2nd 3rd Last 3rd 2nd 1st
-2140 1st 2nd 3rd Last 3rd 2nd 1st
-2141 1st 2nd 3rd Last 3rd 2nd 1st
-2142 1st 2nd 3rd Last 3rd 2nd 1st
-2143 1st 2nd 3rd Last 3rd 2nd 1st
-2144 1st 2nd 3rd Last 3rd 2nd 1st
-2145 1st 2nd 3rd Last 3rd 2nd 1st
-2146 1st 2nd 3rd Last 3rd 2nd 1st
-2147 1st 2nd 3rd Last 3rd 2nd 1st
-2148 1st 2nd 3rd Last 3rd 2nd 1st
-2149 1st 2nd 3rd Last 3rd 2nd 1st
-2150 1st 2nd 3rd Last 3rd 2nd 1st
-2151 1st 2nd 3rd Last 3rd 2nd 1st
-2152 1st 2nd 3rd Last 3rd 2nd 1st
-2153 1st 2nd 3rd Last 3rd 2nd 1st
-2154 1st 2nd 3rd Last 3rd 2nd 1st
-2155 1st 2nd 3rd Last 3rd 2nd 1st
-2156 1st 2nd 3rd Last 3rd 2nd 1st
-2157 1st 2nd 3rd Last 3rd 2nd 1st
-2158 1st 2nd 3rd Last 3rd 2nd 1st
-2159 1st 2nd 3rd Last 3rd 2nd 1st
-2160 1st 2nd 3rd Last 3rd 2nd 1st
-2161 1st 2nd 3rd Last 3rd 2nd 1st
-2162 1st 2nd 3rd Last 3rd 2nd 1st
-2163 1st 2nd 3rd Last 3rd 2nd 1st
-2164 1st 2nd 3rd Last 3rd 2nd 1st
-2165 1st 2nd 3rd Last 3rd 2nd 1st
-2166 1st 2nd 3rd Last 3rd 2nd 1st
-2167 1st 2nd 3rd Last 3rd 2nd 1st
-2168 1st 2nd 3rd Last 3rd 2nd 1st
-2169 1st 2nd 3rd Last 3rd 2nd 1st
-2170 1st 2nd 3rd Last 3rd 2nd 1st
-2171 1st 2nd 3rd Last 3rd 2nd 1st
-2172 1st 2nd 3rd Last 3rd 2nd 1st
-2173 1st 2nd 3rd Last 3rd 2nd 1st
-2174 1st 2nd 3rd Last 3rd 2nd 1st
-2175 1st 2nd 3rd Last 3rd 2nd 1st
-2176 1st 2nd 3rd Last 3rd 2nd 1st
-2177 1st 2nd 3rd Last 3rd 2nd 1st
-2178 1st 2nd 3rd Last 3rd 2nd 1st
-2179 1st 2nd 3rd Last 3rd 2nd 1st
-2180 1st 2nd 3rd Last 3rd 2nd 1st
-2181 1st 2nd 3rd Last 3rd 2nd 1st
-2182 1st 2nd 3rd Last 3rd 2nd 1st
-2183 1st 2nd 3rd Last 3rd 2nd 1st
-2184 1st 2nd 3rd Last 3rd 2nd 1st
-2185 1st 2nd 3rd Last 3rd 2nd 1st
-2186 1st 2nd 3rd Last 3rd 2nd 1st
-2187 1st 2nd 3rd Last 3rd 2nd 1st
-2188 1st 2nd 3rd Last 3rd 2nd 1st
-2189 1st 2nd 3rd Last 3rd 2nd 1st
-2190 1st 2nd 3rd Last 3rd 2nd 1st
-2191 1st 2nd 3rd Last 3rd 2nd 1st
-2192 1st 2nd 3rd Last 3rd 2nd 1st
-2193 1st 2nd 3rd Last 3rd 2nd 1st
-2194 1st 2nd 3rd Last 3rd 2nd 1st
-2195 1st 2nd 3rd Last 3rd 2nd 1st
-2196 1st 2nd 3rd Last 3rd 2nd 1st
-2197 1st 2nd 3rd Last 3rd 2nd 1st
-2198 1st 2nd 3rd Last 3rd 2nd 1st
-2199 1st 2nd 3rd Last 3rd 2nd 1st
-2200 1st 2nd 3rd Last 3rd 2nd 1st
-2201 1st 2nd 3rd Last 3rd 2nd 1st
-2202 1st 2nd 3rd Last 3rd 2nd 1st
-2203 1st 2nd 3rd Last 3rd 2nd 1st
-2204 1st 2nd 3rd Last 3rd 2nd 1st
-2205 1st 2nd 3rd Last 3rd 2nd 1st
-2206 1st 2nd 3rd Last 3rd 2nd 1st
-2207 1st 2nd 3rd Last 3rd 2nd 1st
-2208 1st 2nd 3rd Last 3rd 2nd 1st
-2209 1st 2nd 3rd Last 3rd 2nd 1st
-2210 1st 2nd 3rd Last 3rd 2nd 1st
-2211 1st 2nd 3rd Last 3rd 2nd 1st
-2212 1st 2nd 3rd Last 3rd 2nd 1st
-2213 1st 2nd 3rd Last 3rd 2nd 1st
-2214 1st 2nd 3rd Last 3rd 2nd 1st
-2215 1st 2nd 3rd Last 3rd 2nd 1st
-2216 1st 2nd 3rd Last 3rd 2nd 1st
-2217 1st 2nd 3rd Last 3rd 2nd 1st
-2218 1st 2nd 3rd Last 3rd 2nd 1st
-2219 1st 2nd 3rd Last 3rd 2nd 1st
-2220 1st 2nd 3rd Last 3rd 2nd 1st
-2221 1st 2nd 3rd Last 3rd 2nd 1st
-2222 1st 2nd 3rd Last 3rd 2nd 1st
-2223 1st 2nd 3rd Last 3rd 2nd 1st
-2224 1st 2nd 3rd Last 3rd 2nd 1st
-2225 1st 2nd 3rd Last 3rd 2nd 1st
-2226 1st 2nd 3rd Last 3rd 2nd 1st
-2227 1st 2nd 3rd Last 3rd 2nd 1st
-2228 1st 2nd 3rd Last 3rd 2nd 1st
-2229 1st 2nd 3rd Last 3rd 2nd 1st
-2230 1st 2nd 3rd Last 3rd 2nd 1st
-2231 1st 2nd 3rd Last 3rd 2nd 1st
-2232 1st 2nd 3rd Last 3rd 2nd 1st
-2233 1st 2nd 3rd Last 3rd 2nd 1st
-2234 1st 2nd 3rd Last 3rd 2nd 1st
-2235 1st 2nd 3rd Last 3rd 2nd 1st
-2236 1st 2nd 3rd Last 3rd 2nd 1st
-2237 1st 2nd 3rd Last 3rd 2nd 1st
-2238 1st 2nd 3rd Last 3rd 2nd 1st
-2239 1st 2nd 3rd Last 3rd 2nd 1st
-2240 1st 2nd 3rd Last 3rd 2nd 1st
-2241 1st 2nd 3rd Last 3rd 2nd 1st
-2242 1st 2nd 3rd Last 3rd 2nd 1st
-2243 1st 2nd 3rd Last 3rd 2nd 1st
-2244 1st 2nd 3rd Last 3rd 2nd 1st
-2245 1st 2nd 3rd Last 3rd 2nd 1st
-2246 1st 2nd 3rd Last 3rd 2nd 1st
-2247 1st 2nd 3rd Last 3rd 2nd 1st
-2248 1st 2nd 3rd Last 3rd 2nd 1st
-2249 1st 2nd 3rd Last 3rd 2nd 1st
-2250 1st 2nd 3rd Last 3rd 2nd 1st
-2251 1st 2nd 3rd Last 3rd 2nd 1st
-2252 1st 2nd 3rd Last 3rd 2nd 1st
-2253 1st 2nd 3rd Last 3rd 2nd 1st
-2254 1st 2nd 3rd Last 3rd 2nd 1st
-2255 1st 2nd 3rd Last 3rd 2nd 1st
-2256 1st 2nd 3rd Last 3rd 2nd 1st
-2257 1st 2nd 3rd Last 3rd 2nd 1st
-2258 1st 2nd 3rd Last 3rd 2nd 1st
-2259 1st 2nd 3rd Last 3rd 2nd 1st
-2260 1st 2nd 3rd Last 3rd 2nd 1st
-2261 1st 2nd 3rd Last 3rd 2nd 1st
-2262 1st 2nd 3rd Last 3rd 2nd 1st
-2263 1st 2nd 3rd Last 3rd 2nd 1st
-2264 1st 2nd 3rd Last 3rd 2nd 1st
-2265 1st 2nd 3rd Last 3rd 2nd 1st
-2266 1st 2nd 3rd Last 3rd 2nd 1st
-2267 1st 2nd 3rd Last 3rd 2nd 1st
-2268 1st 2nd 3rd Last 3rd 2nd 1st
-2269 1st 2nd 3rd Last 3rd 2nd 1st
-2270 1st 2nd 3rd Last 3rd 2nd 1st
-2271 1st 2nd 3rd Last 3rd 2nd 1st
-2272 1st 2nd 3rd Last 3rd 2nd 1st
-2273 1st 2nd 3rd Last 3rd 2nd 1st
-2274 1st 2nd 3rd Last 3rd 2nd 1st
-2275 1st 2nd 3rd Last 3rd 2nd 1st
-2276 1st 2nd 3rd Last 3rd 2nd 1st
-2277 1st 2nd 3rd Last 3rd 2nd 1st
-2278 1st 2nd 3rd Last 3rd 2nd 1st
-2279 1st 2nd 3rd Last 3rd 2nd 1st
-2280 1st 2nd 3rd Last 3rd 2nd 1st
-2281 1st 2nd 3rd Last 3rd 2nd 1st
-2282 1st 2nd 3rd Last 3rd 2nd 1st
-2283 1st 2nd 3rd Last 3rd 2nd 1st
-2284 1st 2nd 3rd Last 3rd 2nd 1st
-2285 1st 2nd 3rd Last 3rd 2nd 1st
-2286 1st 2nd 3rd Last 3rd 2nd 1st
-2287 1st 2nd 3rd Last 3rd 2nd 1st
-2288 1st 2nd 3rd Last 3rd 2nd 1st
-2289 1st 2nd 3rd Last 3rd 2nd 1st
-2290 1st 2nd 3rd Last 3rd 2nd 1st
-2291 1st 2nd 3rd Last 3rd 2nd 1st
-2292 1st 2nd 3rd Last 3rd 2nd 1st
-2293 1st 2nd 3rd Last 3rd 2nd 1st
-2294 1st 2nd 3rd Last 3rd 2nd 1st
-2295 1st 2nd 3rd Last 3rd 2nd 1st
-2296 1st 2nd 3rd Last 3rd 2nd 1st
-2297 1st 2nd 3rd Last 3rd 2nd 1st
-2298 1st 2nd 3rd Last 3rd 2nd 1st
-2299 1st 2nd 3rd Last 3rd 2nd 1st
-2300 1st 2nd 3rd Last 3rd 2nd 1st
-2301 1st 2nd 3rd Last 3rd 2nd 1st
-2302 1st 2nd 3rd Last 3rd 2nd 1st
-2303 1st 2nd 3rd Last 3rd 2nd 1st
-2304 1st 2nd 3rd Last 3rd 2nd 1st
-2305 1st 2nd 3rd Last 3rd 2nd 1st
-2306 1st 2nd 3rd Last 3rd 2nd 1st
-2307 1st 2nd 3rd Last 3rd 2nd 1st
-2308 1st 2nd 3rd Last 3rd 2nd 1st
-2309 1st 2nd 3rd Last 3rd 2nd 1st
-2310 1st 2nd 3rd Last 3rd 2nd 1st
-2311 1st 2nd 3rd Last 3rd 2nd 1st
-2312 1st 2nd 3rd Last 3rd 2nd 1st
-2313 1st 2nd 3rd Last 3rd 2nd 1st
-2314 1st 2nd 3rd Last 3rd 2nd 1st
-2315 1st 2nd 3rd Last 3rd 2nd 1st
-2316 1st 2nd 3rd Last 3rd 2nd 1st
-2317 1st 2nd 3rd Last 3rd 2nd 1st
-2318 1st 2nd 3rd Last 3rd 2nd 1st
-2319 1st 2nd 3rd Last 3rd 2nd 1st
-2320 1st 2nd 3rd Last 3rd 2nd 1st
-2321 1st 2nd 3rd Last 3rd 2nd 1st
-2322 1st 2nd 3rd Last 3rd 2nd 1st
-2323 1st 2nd 3rd Last 3rd 2nd 1st
-2324 1st 2nd 3rd Last 3rd 2nd 1st
-2325 1st 2nd 3rd Last 3rd 2nd 1st
-2326 1st 2nd 3rd Last 3rd 2nd 1st
-2327 1st 2nd 3rd Last 3rd 2nd 1st
-2328 1st 2nd 3rd Last 3rd 2nd 1st
-2329 1st 2nd 3rd Last 3rd 2nd 1st
-2330 1st 2nd 3rd Last 3rd 2nd 1st
-2331 1st 2nd 3rd Last 3rd 2nd 1st
-2332 1st 2nd 3rd Last 3rd 2nd 1st
-2333 1st 2nd 3rd Last 3rd 2nd 1st
-2334 1st 2nd 3rd Last 3rd 2nd 1st
-2335 1st 2nd 3rd Last 3rd 2nd 1st
-2336 1st 2nd 3rd Last 3rd 2nd 1st
-2337 1st 2nd 3rd Last 3rd 2nd 1st
-2338 1st 2nd 3rd Last 3rd 2nd 1st
-2339 1st 2nd 3rd Last 3rd 2nd 1st
-2340 1st 2nd 3rd Last 3rd 2nd 1st
-2341 1st 2nd 3rd Last 3rd 2nd 1st
-2342 1st 2nd 3rd Last 3rd 2nd 1st
-2343 1st 2nd 3rd Last 3rd 2nd 1st
-2344 1st 2nd 3rd Last 3rd 2nd 1st
-2345 1st 2nd 3rd Last 3rd 2nd 1st
-2346 1st 2nd 3rd Last 3rd 2nd 1st
-2347 1st 2nd 3rd Last 3rd 2nd 1st
-2348 1st 2nd 3rd Last 3rd 2nd 1st
-2349 1st 2nd 3rd Last 3rd 2nd 1st
-2350 1st 2nd 3rd Last 3rd 2nd 1st
-2351 1st 2nd 3rd Last 3rd 2nd 1st
-2352 1st 2nd 3rd Last 3rd 2nd 1st
-2353 1st 2nd 3rd Last 3rd 2nd 1st
-2354 1st 2nd 3rd Last 3rd 2nd 1st
-2355 1st 2nd 3rd Last 3rd 2nd 1st
-2356 1st 2nd 3rd Last 3rd 2nd 1st
-2357 1st 2nd 3rd Last 3rd 2nd 1st
-2358 1st 2nd 3rd Last 3rd 2nd 1st
-2359 1st 2nd 3rd Last 3rd 2nd 1st
-2360 1st 2nd 3rd Last 3rd 2nd 1st
-2361 1st 2nd 3rd Last 3rd 2nd 1st
-2362 1st 2nd 3rd Last 3rd 2nd 1st
-2363 1st 2nd 3rd Last 3rd 2nd 1st
-2364 1st 2nd 3rd Last 3rd 2nd 1st
-2365 1st 2nd 3rd Last 3rd 2nd 1st
-2366 1st 2nd 3rd Last 3rd 2nd 1st
-2367 1st 2nd 3rd Last 3rd 2nd 1st
-2368 1st 2nd 3rd Last 3rd 2nd 1st
-2369 1st 2nd 3rd Last 3rd 2nd 1st
-2370 1st 2nd 3rd Last 3rd 2nd 1st
-2371 1st 2nd 3rd Last 3rd 2nd 1st
-2372 1st 2nd 3rd Last 3rd 2nd 1st
-2373 1st 2nd 3rd Last 3rd 2nd 1st
-2374 1st 2nd 3rd Last 3rd 2nd 1st
-2375 1st 2nd 3rd Last 3rd 2nd 1st
-2376 1st 2nd 3rd Last 3rd 2nd 1st
-2377 1st 2nd 3rd Last 3rd 2nd 1st
-2378 1st 2nd 3rd Last 3rd 2nd 1st
-2379 1st 2nd 3rd Last 3rd 2nd 1st
-2380 1st 2nd 3rd Last 3rd 2nd 1st
-2381 1st 2nd 3rd Last 3rd 2nd 1st
-2382 1st 2nd 3rd Last 3rd 2nd 1st
-2383 1st 2nd 3rd Last 3rd 2nd 1st
-2384 1st 2nd 3rd Last 3rd 2nd 1st
-2385 1st 2nd 3rd Last 3rd 2nd 1st
-2386 1st 2nd 3rd Last 3rd 2nd 1st
-2387 1st 2nd 3rd Last 3rd 2nd 1st
-2388 1st 2nd 3rd Last 3rd 2nd 1st
-2389 1st 2nd 3rd Last 3rd 2nd 1st
-2390 1st 2nd 3rd Last 3rd 2nd 1st
-2391 1st 2nd 3rd Last 3rd 2nd 1st
-2392 1st 2nd 3rd Last 3rd 2nd 1st
-2393 1st 2nd 3rd Last 3rd 2nd 1st
-2394 1st 2nd 3rd Last 3rd 2nd 1st
-2395 1st 2nd 3rd Last 3rd 2nd 1st
-2396 1st 2nd 3rd Last 3rd 2nd 1st
-2397 1st 2nd 3rd Last 3rd 2nd 1st
-2398 1st 2nd 3rd Last 3rd 2nd 1st
-2399 1st 2nd 3rd Last 3rd 2nd 1st
-2400 1st 2nd 3rd Last 3rd 2nd 1st
-2401 1st 2nd 3rd Last 3rd 2nd 1st
-2402 1st 2nd 3rd Last 3rd 2nd 1st
-2403 1st 2nd 3rd Last 3rd 2nd 1st
-2404 1st 2nd 3rd Last 3rd 2nd 1st
-2405 1st 2nd 3rd Last 3rd 2nd 1st
-2406 1st 2nd 3rd Last 3rd 2nd 1st
-2407 1st 2nd 3rd Last 3rd 2nd 1st
-2408 1st 2nd 3rd Last 3rd 2nd 1st
-2409 1st 2nd 3rd Last 3rd 2nd 1st
-2410 1st 2nd 3rd Last 3rd 2nd 1st
-2411 1st 2nd 3rd Last 3rd 2nd 1st
-2412 1st 2nd 3rd Last 3rd 2nd 1st
-2413 1st 2nd 3rd Last 3rd 2nd 1st
-2414 1st 2nd 3rd Last 3rd 2nd 1st
-2415 1st 2nd 3rd Last 3rd 2nd 1st
-2416 1st 2nd 3rd Last 3rd 2nd 1st
-2417 1st 2nd 3rd Last 3rd 2nd 1st
-2418 1st 2nd 3rd Last 3rd 2nd 1st
-2419 1st 2nd 3rd Last 3rd 2nd 1st
-2420 1st 2nd 3rd Last 3rd 2nd 1st
-2421 1st 2nd 3rd Last 3rd 2nd 1st
-2422 1st 2nd 3rd Last 3rd 2nd 1st
-2423 1st 2nd 3rd Last 3rd 2nd 1st
-2424 1st 2nd 3rd Last 3rd 2nd 1st
-2425 1st 2nd 3rd Last 3rd 2nd 1st
-2426 1st 2nd 3rd Last 3rd 2nd 1st
-2427 1st 2nd 3rd Last 3rd 2nd 1st
-2428 1st 2nd 3rd Last 3rd 2nd 1st
-2429 1st 2nd 3rd Last 3rd 2nd 1st
-2430 1st 2nd 3rd Last 3rd 2nd 1st
-2431 1st 2nd 3rd Last 3rd 2nd 1st
-2432 1st 2nd 3rd Last 3rd 2nd 1st
-2433 1st 2nd 3rd Last 3rd 2nd 1st
-2434 1st 2nd 3rd Last 3rd 2nd 1st
-2435 1st 2nd 3rd Last 3rd 2nd 1st
-2436 1st 2nd 3rd Last 3rd 2nd 1st
-2437 1st 2nd 3rd Last 3rd 2nd 1st
-2438 1st 2nd 3rd Last 3rd 2nd 1st
-2439 1st 2nd 3rd Last 3rd 2nd 1st
-2440 1st 2nd 3rd Last 3rd 2nd 1st
-2441 1st 2nd 3rd Last 3rd 2nd 1st
-2442 1st 2nd 3rd Last 3rd 2nd 1st
-2443 1st 2nd 3rd Last 3rd 2nd 1st
-2444 1st 2nd 3rd Last 3rd 2nd 1st
-2445 1st 2nd 3rd Last 3rd 2nd 1st
-2446 1st 2nd 3rd Last 3rd 2nd 1st
-2447 1st 2nd 3rd Last 3rd 2nd 1st
-2448 1st 2nd 3rd Last 3rd 2nd 1st
-2449 1st 2nd 3rd Last 3rd 2nd 1st
-2450 1st 2nd 3rd Last 3rd 2nd 1st
-2451 1st 2nd 3rd Last 3rd 2nd 1st
-2452 1st 2nd 3rd Last 3rd 2nd 1st
-2453 1st 2nd 3rd Last 3rd 2nd 1st
-2454 1st 2nd 3rd Last 3rd 2nd 1st
-2455 1st 2nd 3rd Last 3rd 2nd 1st
-2456 1st 2nd 3rd Last 3rd 2nd 1st
-2457 1st 2nd 3rd Last 3rd 2nd 1st
-2458 1st 2nd 3rd Last 3rd 2nd 1st
-2459 1st 2nd 3rd Last 3rd 2nd 1st
-2460 1st 2nd 3rd Last 3rd 2nd 1st
-2461 1st 2nd 3rd Last 3rd 2nd 1st
-2462 1st 2nd 3rd Last 3rd 2nd 1st
-2463 1st 2nd 3rd Last 3rd 2nd 1st
-2464 1st 2nd 3rd Last 3rd 2nd 1st
-2465 1st 2nd 3rd Last 3rd 2nd 1st
-2466 1st 2nd 3rd Last 3rd 2nd 1st
-2467 1st 2nd 3rd Last 3rd 2nd 1st
-2468 1st 2nd 3rd Last 3rd 2nd 1st
-2469 1st 2nd 3rd Last 3rd 2nd 1st
-2470 1st 2nd 3rd Last 3rd 2nd 1st
-2471 1st 2nd 3rd Last 3rd 2nd 1st
-2472 1st 2nd 3rd Last 3rd 2nd 1st
-2473 1st 2nd 3rd Last 3rd 2nd 1st
-2474 1st 2nd 3rd Last 3rd 2nd 1st
-2475 1st 2nd 3rd Last 3rd 2nd 1st
-2476 1st 2nd 3rd Last 3rd 2nd 1st
-2477 1st 2nd 3rd Last 3rd 2nd 1st
-2478 1st 2nd 3rd Last 3rd 2nd 1st
-2479 1st 2nd 3rd Last 3rd 2nd 1st
-2480 1st 2nd 3rd Last 3rd 2nd 1st
-2481 1st 2nd 3rd Last 3rd 2nd 1st
-2482 1st 2nd 3rd Last 3rd 2nd 1st
-2483 1st 2nd 3rd Last 3rd 2nd 1st
-2484 1st 2nd 3rd Last 3rd 2nd 1st
-2485 1st 2nd 3rd Last 3rd 2nd 1st
-2486 1st 2nd 3rd Last 3rd 2nd 1st
-2487 1st 2nd 3rd Last 3rd 2nd 1st
-2488 1st 2nd 3rd Last 3rd 2nd 1st
-2489 1st 2nd 3rd Last 3rd 2nd 1st
-2490 1st 2nd 3rd Last 3rd 2nd 1st
-2491 1st 2nd 3rd Last 3rd 2nd 1st
-2492 1st 2nd 3rd Last 3rd 2nd 1st
-2493 1st 2nd 3rd Last 3rd 2nd 1st
-2494 1st 2nd 3rd Last 3rd 2nd 1st
-2495 1st 2nd 3rd Last 3rd 2nd 1st
-2496 1st 2nd 3rd Last 3rd 2nd 1st
-2497 1st 2nd 3rd Last 3rd 2nd 1st
-2498 1st 2nd 3rd Last 3rd 2nd 1st
-2499 1st 2nd 3rd Last 3rd 2nd 1st
-2500 1st 2nd 3rd Last 3rd 2nd 1st
-2501 1st 2nd 3rd Last 3rd 2nd 1st
-2502 1st 2nd 3rd Last 3rd 2nd 1st
-2503 1st 2nd 3rd Last 3rd 2nd 1st
-2504 1st 2nd 3rd Last 3rd 2nd 1st
-2505 1st 2nd 3rd Last 3rd 2nd 1st
-2506 1st 2nd 3rd Last 3rd 2nd 1st
-2507 1st 2nd 3rd Last 3rd 2nd 1st
-2508 1st 2nd 3rd Last 3rd 2nd 1st
-2509 1st 2nd 3rd Last 3rd 2nd 1st
-2510 1st 2nd 3rd Last 3rd 2nd 1st
-2511 1st 2nd 3rd Last 3rd 2nd 1st
-2512 1st 2nd 3rd Last 3rd 2nd 1st
-2513 1st 2nd 3rd Last 3rd 2nd 1st
-2514 1st 2nd 3rd Last 3rd 2nd 1st
-2515 1st 2nd 3rd Last 3rd 2nd 1st
-2516 1st 2nd 3rd Last 3rd 2nd 1st
-2517 1st 2nd 3rd Last 3rd 2nd 1st
-2518 1st 2nd 3rd Last 3rd 2nd 1st
-2519 1st 2nd 3rd Last 3rd 2nd 1st
-2520 1st 2nd 3rd Last 3rd 2nd 1st
-2521 1st 2nd 3rd Last 3rd 2nd 1st
-2522 1st 2nd 3rd Last 3rd 2nd 1st
-2523 1st 2nd 3rd Last 3rd 2nd 1st
-2524 1st 2nd 3rd Last 3rd 2nd 1st
-2525 1st 2nd 3rd Last 3rd 2nd 1st
-2526 1st 2nd 3rd Last 3rd 2nd 1st
-2527 1st 2nd 3rd Last 3rd 2nd 1st
-2528 1st 2nd 3rd Last 3rd 2nd 1st
-2529 1st 2nd 3rd Last 3rd 2nd 1st
-2530 1st 2nd 3rd Last 3rd 2nd 1st
-2531 1st 2nd 3rd Last 3rd 2nd 1st
-2532 1st 2nd 3rd Last 3rd 2nd 1st
-2533 1st 2nd 3rd Last 3rd 2nd 1st
-2534 1st 2nd 3rd Last 3rd 2nd 1st
-2535 1st 2nd 3rd Last 3rd 2nd 1st
-2536 1st 2nd 3rd Last 3rd 2nd 1st
-2537 1st 2nd 3rd Last 3rd 2nd 1st
-2538 1st 2nd 3rd Last 3rd 2nd 1st
-2539 1st 2nd 3rd Last 3rd 2nd 1st
-2540 1st 2nd 3rd Last 3rd 2nd 1st
-2541 1st 2nd 3rd Last 3rd 2nd 1st
-2542 1st 2nd 3rd Last 3rd 2nd 1st
-2543 1st 2nd 3rd Last 3rd 2nd 1st
-2544 1st 2nd 3rd Last 3rd 2nd 1st
-2545 1st 2nd 3rd Last 3rd 2nd 1st
-2546 1st 2nd 3rd Last 3rd 2nd 1st
-2547 1st 2nd 3rd Last 3rd 2nd 1st
-2548 1st 2nd 3rd Last 3rd 2nd 1st
-2549 1st 2nd 3rd Last 3rd 2nd 1st
-2550 1st 2nd 3rd Last 3rd 2nd 1st
-2551 1st 2nd 3rd Last 3rd 2nd 1st
-2552 1st 2nd 3rd Last 3rd 2nd 1st
-2553 1st 2nd 3rd Last 3rd 2nd 1st
-2554 1st 2nd 3rd Last 3rd 2nd 1st
-2555 1st 2nd 3rd Last 3rd 2nd 1st
-2556 1st 2nd 3rd Last 3rd 2nd 1st
-2557 1st 2nd 3rd Last 3rd 2nd 1st
-2558 1st 2nd 3rd Last 3rd 2nd 1st
-2559 1st 2nd 3rd Last 3rd 2nd 1st
-2560 1st 2nd 3rd Last 3rd 2nd 1st
-2561 1st 2nd 3rd Last 3rd 2nd 1st
-2562 1st 2nd 3rd Last 3rd 2nd 1st
-2563 1st 2nd 3rd Last 3rd 2nd 1st
-2564 1st 2nd 3rd Last 3rd 2nd 1st
-2565 1st 2nd 3rd Last 3rd 2nd 1st
-2566 1st 2nd 3rd Last 3rd 2nd 1st
-2567 1st 2nd 3rd Last 3rd 2nd 1st
-2568 1st 2nd 3rd Last 3rd 2nd 1st
-2569 1st 2nd 3rd Last 3rd 2nd 1st
-2570 1st 2nd 3rd Last 3rd 2nd 1st
-2571 1st 2nd 3rd Last 3rd 2nd 1st
-2572 1st 2nd 3rd Last 3rd 2nd 1st
-2573 1st 2nd 3rd Last 3rd 2nd 1st
-2574 1st 2nd 3rd Last 3rd 2nd 1st
-2575 1st 2nd 3rd Last 3rd 2nd 1st
-2576 1st 2nd 3rd Last 3rd 2nd 1st
-2577 1st 2nd 3rd Last 3rd 2nd 1st
-2578 1st 2nd 3rd Last 3rd 2nd 1st
-2579 1st 2nd 3rd Last 3rd 2nd 1st
-2580 1st 2nd 3rd Last 3rd 2nd 1st
-2581 1st 2nd 3rd Last 3rd 2nd 1st
-2582 1st 2nd 3rd Last 3rd 2nd 1st
-2583 1st 2nd 3rd Last 3rd 2nd 1st
-2584 1st 2nd 3rd Last 3rd 2nd 1st
-2585 1st 2nd 3rd Last 3rd 2nd 1st
-2586 1st 2nd 3rd Last 3rd 2nd 1st
-2587 1st 2nd 3rd Last 3rd 2nd 1st
-2588 1st 2nd 3rd Last 3rd 2nd 1st
-2589 1st 2nd 3rd Last 3rd 2nd 1st
-2590 1st 2nd 3rd Last 3rd 2nd 1st
-2591 1st 2nd 3rd Last 3rd 2nd 1st
-2592 1st 2nd 3rd Last 3rd 2nd 1st
-2593 1st 2nd 3rd Last 3rd 2nd 1st
-2594 1st 2nd 3rd Last 3rd 2nd 1st
-2595 1st 2nd 3rd Last 3rd 2nd 1st
-2596 1st 2nd 3rd Last 3rd 2nd 1st
-2597 1st 2nd 3rd Last 3rd 2nd 1st
-2598 1st 2nd 3rd Last 3rd 2nd 1st
-2599 1st 2nd 3rd Last 3rd 2nd 1st
-2600 1st 2nd 3rd Last 3rd 2nd 1st
-2601 1st 2nd 3rd Last 3rd 2nd 1st
-2602 1st 2nd 3rd Last 3rd 2nd 1st
-2603 1st 2nd 3rd Last 3rd 2nd 1st
-2604 1st 2nd 3rd Last 3rd 2nd 1st
-2605 1st 2nd 3rd Last 3rd 2nd 1st
-2606 1st 2nd 3rd Last 3rd 2nd 1st
-2607 1st 2nd 3rd Last 3rd 2nd 1st
-2608 1st 2nd 3rd Last 3rd 2nd 1st
-2609 1st 2nd 3rd Last 3rd 2nd 1st
-2610 1st 2nd 3rd Last 3rd 2nd 1st
-2611 1st 2nd 3rd Last 3rd 2nd 1st
-2612 1st 2nd 3rd Last 3rd 2nd 1st
-2613 1st 2nd 3rd Last 3rd 2nd 1st
-2614 1st 2nd 3rd Last 3rd 2nd 1st
-2615 1st 2nd 3rd Last 3rd 2nd 1st
-2616 1st 2nd 3rd Last 3rd 2nd 1st
-2617 1st 2nd 3rd Last 3rd 2nd 1st
-2618 1st 2nd 3rd Last 3rd 2nd 1st
-2619 1st 2nd 3rd Last 3rd 2nd 1st
-2620 1st 2nd 3rd Last 3rd 2nd 1st
-2621 1st 2nd 3rd Last 3rd 2nd 1st
-2622 1st 2nd 3rd Last 3rd 2nd 1st
-2623 1st 2nd 3rd Last 3rd 2nd 1st
-2624 1st 2nd 3rd Last 3rd 2nd 1st
-2625 1st 2nd 3rd Last 3rd 2nd 1st
-2626 1st 2nd 3rd Last 3rd 2nd 1st
-2627 1st 2nd 3rd Last 3rd 2nd 1st
-2628 1st 2nd 3rd Last 3rd 2nd 1st
-2629 1st 2nd 3rd Last 3rd 2nd 1st
-2630 1st 2nd 3rd Last 3rd 2nd 1st
-2631 1st 2nd 3rd Last 3rd 2nd 1st
-2632 1st 2nd 3rd Last 3rd 2nd 1st
-2633 1st 2nd 3rd Last 3rd 2nd 1st
-2634 1st 2nd 3rd Last 3rd 2nd 1st
-2635 1st 2nd 3rd Last 3rd 2nd 1st
-2636 1st 2nd 3rd Last 3rd 2nd 1st
-2637 1st 2nd 3rd Last 3rd 2nd 1st
-2638 1st 2nd 3rd Last 3rd 2nd 1st
-2639 1st 2nd 3rd Last 3rd 2nd 1st
-2640 1st 2nd 3rd Last 3rd 2nd 1st
-2641 1st 2nd 3rd Last 3rd 2nd 1st
-2642 1st 2nd 3rd Last 3rd 2nd 1st
-2643 1st 2nd 3rd Last 3rd 2nd 1st
-2644 1st 2nd 3rd Last 3rd 2nd 1st
-2645 1st 2nd 3rd Last 3rd 2nd 1st
-2646 1st 2nd 3rd Last 3rd 2nd 1st
-2647 1st 2nd 3rd Last 3rd 2nd 1st
-2648 1st 2nd 3rd Last 3rd 2nd 1st
-2649 1st 2nd 3rd Last 3rd 2nd 1st
-2650 1st 2nd 3rd Last 3rd 2nd 1st
-2651 1st 2nd 3rd Last 3rd 2nd 1st
-2652 1st 2nd 3rd Last 3rd 2nd 1st
-2653 1st 2nd 3rd Last 3rd 2nd 1st
-2654 1st 2nd 3rd Last 3rd 2nd 1st
-2655 1st 2nd 3rd Last 3rd 2nd 1st
-2656 1st 2nd 3rd Last 3rd 2nd 1st
-2657 1st 2nd 3rd Last 3rd 2nd 1st
-2658 1st 2nd 3rd Last 3rd 2nd 1st
-2659 1st 2nd 3rd Last 3rd 2nd 1st
-2660 1st 2nd 3rd Last 3rd 2nd 1st
-2661 1st 2nd 3rd Last 3rd 2nd 1st
-2662 1st 2nd 3rd Last 3rd 2nd 1st
-2663 1st 2nd 3rd Last 3rd 2nd 1st
-2664 1st 2nd 3rd Last 3rd 2nd 1st
-2665 1st 2nd 3rd Last 3rd 2nd 1st
-2666 1st 2nd 3rd Last 3rd 2nd 1st
-2667 1st 2nd 3rd Last 3rd 2nd 1st
-2668 1st 2nd 3rd Last 3rd 2nd 1st
-2669 1st 2nd 3rd Last 3rd 2nd 1st
-2670 1st 2nd 3rd Last 3rd 2nd 1st
-2671 1st 2nd 3rd Last 3rd 2nd 1st
-2672 1st 2nd 3rd Last 3rd 2nd 1st
-2673 1st 2nd 3rd Last 3rd 2nd 1st
-2674 1st 2nd 3rd Last 3rd 2nd 1st
-2675 1st 2nd 3rd Last 3rd 2nd 1st
-2676 1st 2nd 3rd Last 3rd 2nd 1st
-2677 1st 2nd 3rd Last 3rd 2nd 1st
-2678 1st 2nd 3rd Last 3rd 2nd 1st
-2679 1st 2nd 3rd Last 3rd 2nd 1st
-2680 1st 2nd 3rd Last 3rd 2nd 1st
-2681 1st 2nd 3rd Last 3rd 2nd 1st
-2682 1st 2nd 3rd Last 3rd 2nd 1st
-2683 1st 2nd 3rd Last 3rd 2nd 1st
-2684 1st 2nd 3rd Last 3rd 2nd 1st
-2685 1st 2nd 3rd Last 3rd 2nd 1st
-2686 1st 2nd 3rd Last 3rd 2nd 1st
-2687 1st 2nd 3rd Last 3rd 2nd 1st
-2688 1st 2nd 3rd Last 3rd 2nd 1st
-2689 1st 2nd 3rd Last 3rd 2nd 1st
-2690 1st 2nd 3rd Last 3rd 2nd 1st
-2691 1st 2nd 3rd Last 3rd 2nd 1st
-2692 1st 2nd 3rd Last 3rd 2nd 1st
-2693 1st 2nd 3rd Last 3rd 2nd 1st
-2694 1st 2nd 3rd Last 3rd 2nd 1st
-2695 1st 2nd 3rd Last 3rd 2nd 1st
-2696 1st 2nd 3rd Last 3rd 2nd 1st
-2697 1st 2nd 3rd Last 3rd 2nd 1st
-2698 1st 2nd 3rd Last 3rd 2nd 1st
-2699 1st 2nd 3rd Last 3rd 2nd 1st
-2700 1st 2nd 3rd Last 3rd 2nd 1st
-2701 1st 2nd 3rd Last 3rd 2nd 1st
-2702 1st 2nd 3rd Last 3rd 2nd 1st
-2703 1st 2nd 3rd Last 3rd 2nd 1st
-2704 1st 2nd 3rd Last 3rd 2nd 1st
-2705 1st 2nd 3rd Last 3rd 2nd 1st
-2706 1st 2nd 3rd Last 3rd 2nd 1st
-2707 1st 2nd 3rd Last 3rd 2nd 1st
-2708 1st 2nd 3rd Last 3rd 2nd 1st
-2709 1st 2nd 3rd Last 3rd 2nd 1st
-2710 1st 2nd 3rd Last 3rd 2nd 1st
-2711 1st 2nd 3rd Last 3rd 2nd 1st
-2712 1st 2nd 3rd Last 3rd 2nd 1st
-2713 1st 2nd 3rd Last 3rd 2nd 1st
-2714 1st 2nd 3rd Last 3rd 2nd 1st
-2715 1st 2nd 3rd Last 3rd 2nd 1st
-2716 1st 2nd 3rd Last 3rd 2nd 1st
-2717 1st 2nd 3rd Last 3rd 2nd 1st
-2718 1st 2nd 3rd Last 3rd 2nd 1st
-2719 1st 2nd 3rd Last 3rd 2nd 1st
-2720 1st 2nd 3rd Last 3rd 2nd 1st
-2721 1st 2nd 3rd Last 3rd 2nd 1st
-2722 1st 2nd 3rd Last 3rd 2nd 1st
-2723 1st 2nd 3rd Last 3rd 2nd 1st
-2724 1st 2nd 3rd Last 3rd 2nd 1st
-2725 1st 2nd 3rd Last 3rd 2nd 1st
-2726 1st 2nd 3rd Last 3rd 2nd 1st
-2727 1st 2nd 3rd Last 3rd 2nd 1st
-2728 1st 2nd 3rd Last 3rd 2nd 1st
-2729 1st 2nd 3rd Last 3rd 2nd 1st
-2730 1st 2nd 3rd Last 3rd 2nd 1st
-2731 1st 2nd 3rd Last 3rd 2nd 1st
-2732 1st 2nd 3rd Last 3rd 2nd 1st
-2733 1st 2nd 3rd Last 3rd 2nd 1st
-2734 1st 2nd 3rd Last 3rd 2nd 1st
-2735 1st 2nd 3rd Last 3rd 2nd 1st
-2736 1st 2nd 3rd Last 3rd 2nd 1st
-2737 1st 2nd 3rd Last 3rd 2nd 1st
-2738 1st 2nd 3rd Last 3rd 2nd 1st
-2739 1st 2nd 3rd Last 3rd 2nd 1st
-2740 1st 2nd 3rd Last 3rd 2nd 1st
-2741 1st 2nd 3rd Last 3rd 2nd 1st
-2742 1st 2nd 3rd Last 3rd 2nd 1st
-2743 1st 2nd 3rd Last 3rd 2nd 1st
-2744 1st 2nd 3rd Last 3rd 2nd 1st
-2745 1st 2nd 3rd Last 3rd 2nd 1st
-2746 1st 2nd 3rd Last 3rd 2nd 1st
-2747 1st 2nd 3rd Last 3rd 2nd 1st
-2748 1st 2nd 3rd Last 3rd 2nd 1st
-2749 1st 2nd 3rd Last 3rd 2nd 1st
-2750 1st 2nd 3rd Last 3rd 2nd 1st
-2751 1st 2nd 3rd Last 3rd 2nd 1st
-2752 1st 2nd 3rd Last 3rd 2nd 1st
-2753 1st 2nd 3rd Last 3rd 2nd 1st
-2754 1st 2nd 3rd Last 3rd 2nd 1st
-2755 1st 2nd 3rd Last 3rd 2nd 1st
-2756 1st 2nd 3rd Last 3rd 2nd 1st
-2757 1st 2nd 3rd Last 3rd 2nd 1st
-2758 1st 2nd 3rd Last 3rd 2nd 1st
-2759 1st 2nd 3rd Last 3rd 2nd 1st
-2760 1st 2nd 3rd Last 3rd 2nd 1st
-2761 1st 2nd 3rd Last 3rd 2nd 1st
-2762 1st 2nd 3rd Last 3rd 2nd 1st
-2763 1st 2nd 3rd Last 3rd 2nd 1st
-2764 1st 2nd 3rd Last 3rd 2nd 1st
-2765 1st 2nd 3rd Last 3rd 2nd 1st
-2766 1st 2nd 3rd Last 3rd 2nd 1st
-2767 1st 2nd 3rd Last 3rd 2nd 1st
-2768 1st 2nd 3rd Last 3rd 2nd 1st
-2769 1st 2nd 3rd Last 3rd 2nd 1st
-2770 1st 2nd 3rd Last 3rd 2nd 1st
-2771 1st 2nd 3rd Last 3rd 2nd 1st
-2772 1st 2nd 3rd Last 3rd 2nd 1st
-2773 1st 2nd 3rd Last 3rd 2nd 1st
-2774 1st 2nd 3rd Last 3rd 2nd 1st
-2775 1st 2nd 3rd Last 3rd 2nd 1st
-2776 1st 2nd 3rd Last 3rd 2nd 1st
-2777 1st 2nd 3rd Last 3rd 2nd 1st
-2778 1st 2nd 3rd Last 3rd 2nd 1st
-2779 1st 2nd 3rd Last 3rd 2nd 1st
-2780 1st 2nd 3rd Last 3rd 2nd 1st
-2781 1st 2nd 3rd Last 3rd 2nd 1st
-2782 1st 2nd 3rd Last 3rd 2nd 1st
-2783 1st 2nd 3rd Last 3rd 2nd 1st
-2784 1st 2nd 3rd Last 3rd 2nd 1st
-2785 1st 2nd 3rd Last 3rd 2nd 1st
-2786 1st 2nd 3rd Last 3rd 2nd 1st
-2787 1st 2nd 3rd Last 3rd 2nd 1st
-2788 1st 2nd 3rd Last 3rd 2nd 1st
-2789 1st 2nd 3rd Last 3rd 2nd 1st
-2790 1st 2nd 3rd Last 3rd 2nd 1st
-2791 1st 2nd 3rd Last 3rd 2nd 1st
-2792 1st 2nd 3rd Last 3rd 2nd 1st
-2793 1st 2nd 3rd Last 3rd 2nd 1st
-2794 1st 2nd 3rd Last 3rd 2nd 1st
-2795 1st 2nd 3rd Last 3rd 2nd 1st
-2796 1st 2nd 3rd Last 3rd 2nd 1st
-2797 1st 2nd 3rd Last 3rd 2nd 1st
-2798 1st 2nd 3rd Last 3rd 2nd 1st
-2799 1st 2nd 3rd Last 3rd 2nd 1st
-2800 1st 2nd 3rd Last 3rd 2nd 1st
-2801 1st 2nd 3rd Last 3rd 2nd 1st
-2802 1st 2nd 3rd Last 3rd 2nd 1st
-2803 1st 2nd 3rd Last 3rd 2nd 1st
-2804 1st 2nd 3rd Last 3rd 2nd 1st
-2805 1st 2nd 3rd Last 3rd 2nd 1st
-2806 1st 2nd 3rd Last 3rd 2nd 1st
-2807 1st 2nd 3rd Last 3rd 2nd 1st
-2808 1st 2nd 3rd Last 3rd 2nd 1st
-2809 1st 2nd 3rd Last 3rd 2nd 1st
-2810 1st 2nd 3rd Last 3rd 2nd 1st
-2811 1st 2nd 3rd Last 3rd 2nd 1st
-2812 1st 2nd 3rd Last 3rd 2nd 1st
-2813 1st 2nd 3rd Last 3rd 2nd 1st
-2814 1st 2nd 3rd Last 3rd 2nd 1st
-2815 1st 2nd 3rd Last 3rd 2nd 1st
-2816 1st 2nd 3rd Last 3rd 2nd 1st
-2817 1st 2nd 3rd Last 3rd 2nd 1st
-2818 1st 2nd 3rd Last 3rd 2nd 1st
-2819 1st 2nd 3rd Last 3rd 2nd 1st
-2820 1st 2nd 3rd Last 3rd 2nd 1st
-2821 1st 2nd 3rd Last 3rd 2nd 1st
-2822 1st 2nd 3rd Last 3rd 2nd 1st
-2823 1st 2nd 3rd Last 3rd 2nd 1st
-2824 1st 2nd 3rd Last 3rd 2nd 1st
-2825 1st 2nd 3rd Last 3rd 2nd 1st
-2826 1st 2nd 3rd Last 3rd 2nd 1st
-2827 1st 2nd 3rd Last 3rd 2nd 1st
-2828 1st 2nd 3rd Last 3rd 2nd 1st
-2829 1st 2nd 3rd Last 3rd 2nd 1st
-2830 1st 2nd 3rd Last 3rd 2nd 1st
-2831 1st 2nd 3rd Last 3rd 2nd 1st
-2832 1st 2nd 3rd Last 3rd 2nd 1st
-2833 1st 2nd 3rd Last 3rd 2nd 1st
-2834 1st 2nd 3rd Last 3rd 2nd 1st
-2835 1st 2nd 3rd Last 3rd 2nd 1st
-2836 1st 2nd 3rd Last 3rd 2nd 1st
-2837 1st 2nd 3rd Last 3rd 2nd 1st
-2838 1st 2nd 3rd Last 3rd 2nd 1st
-2839 1st 2nd 3rd Last 3rd 2nd 1st
-2840 1st 2nd 3rd Last 3rd 2nd 1st
-2841 1st 2nd 3rd Last 3rd 2nd 1st
-2842 1st 2nd 3rd Last 3rd 2nd 1st
-2843 1st 2nd 3rd Last 3rd 2nd 1st
-2844 1st 2nd 3rd Last 3rd 2nd 1st
-2845 1st 2nd 3rd Last 3rd 2nd 1st
-2846 1st 2nd 3rd Last 3rd 2nd 1st
-2847 1st 2nd 3rd Last 3rd 2nd 1st
-2848 1st 2nd 3rd Last 3rd 2nd 1st
-2849 1st 2nd 3rd Last 3rd 2nd 1st
-2850 1st 2nd 3rd Last 3rd 2nd 1st
-2851 1st 2nd 3rd Last 3rd 2nd 1st
-2852 1st 2nd 3rd Last 3rd 2nd 1st
-2853 1st 2nd 3rd Last 3rd 2nd 1st
-2854 1st 2nd 3rd Last 3rd 2nd 1st
-2855 1st 2nd 3rd Last 3rd 2nd 1st
-2856 1st 2nd 3rd Last 3rd 2nd 1st
-2857 1st 2nd 3rd Last 3rd 2nd 1st
-2858 1st 2nd 3rd Last 3rd 2nd 1st
-2859 1st 2nd 3rd Last 3rd 2nd 1st
-2860 1st 2nd 3rd Last 3rd 2nd 1st
-2861 1st 2nd 3rd Last 3rd 2nd 1st
-2862 1st 2nd 3rd Last 3rd 2nd 1st
-2863 1st 2nd 3rd Last 3rd 2nd 1st
-2864 1st 2nd 3rd Last 3rd 2nd 1st
-2865 1st 2nd 3rd Last 3rd 2nd 1st
-2866 1st 2nd 3rd Last 3rd 2nd 1st
-2867 1st 2nd 3rd Last 3rd 2nd 1st
-2868 1st 2nd 3rd Last 3rd 2nd 1st
-2869 1st 2nd 3rd Last 3rd 2nd 1st
-2870 1st 2nd 3rd Last 3rd 2nd 1st
-2871 1st 2nd 3rd Last 3rd 2nd 1st
-2872 1st 2nd 3rd Last 3rd 2nd 1st
-2873 1st 2nd 3rd Last 3rd 2nd 1st
-2874 1st 2nd 3rd Last 3rd 2nd 1st
-2875 1st 2nd 3rd Last 3rd 2nd 1st
-2876 1st 2nd 3rd Last 3rd 2nd 1st
-2877 1st 2nd 3rd Last 3rd 2nd 1st
-2878 1st 2nd 3rd Last 3rd 2nd 1st
-2879 1st 2nd 3rd Last 3rd 2nd 1st
-2880 1st 2nd 3rd Last 3rd 2nd 1st
-2881 1st 2nd 3rd Last 3rd 2nd 1st
-2882 1st 2nd 3rd Last 3rd 2nd 1st
-2883 1st 2nd 3rd Last 3rd 2nd 1st
-2884 1st 2nd 3rd Last 3rd 2nd 1st
-2885 1st 2nd 3rd Last 3rd 2nd 1st
-2886 1st 2nd 3rd Last 3rd 2nd 1st
-2887 1st 2nd 3rd Last 3rd 2nd 1st
-2888 1st 2nd 3rd Last 3rd 2nd 1st
-2889 1st 2nd 3rd Last 3rd 2nd 1st
-2890 1st 2nd 3rd Last 3rd 2nd 1st
-2891 1st 2nd 3rd Last 3rd 2nd 1st
-2892 1st 2nd 3rd Last 3rd 2nd 1st
-2893 1st 2nd 3rd Last 3rd 2nd 1st
-2894 1st 2nd 3rd Last 3rd 2nd 1st
-2895 1st 2nd 3rd Last 3rd 2nd 1st
-2896 1st 2nd 3rd Last 3rd 2nd 1st
-2897 1st 2nd 3rd Last 3rd 2nd 1st
-2898 1st 2nd 3rd Last 3rd 2nd 1st
-2899 1st 2nd 3rd Last 3rd 2nd 1st
-2900 1st 2nd 3rd Last 3rd 2nd 1st
-2901 1st 2nd 3rd Last 3rd 2nd 1st
-2902 1st 2nd 3rd Last 3rd 2nd 1st
-2903 1st 2nd 3rd Last 3rd 2nd 1st
-2904 1st 2nd 3rd Last 3rd 2nd 1st
-2905 1st 2nd 3rd Last 3rd 2nd 1st
-2906 1st 2nd 3rd Last 3rd 2nd 1st
-2907 1st 2nd 3rd Last 3rd 2nd 1st
-2908 1st 2nd 3rd Last 3rd 2nd 1st
-2909 1st 2nd 3rd Last 3rd 2nd 1st
-2910 1st 2nd 3rd Last 3rd 2nd 1st
-2911 1st 2nd 3rd Last 3rd 2nd 1st
-2912 1st 2nd 3rd Last 3rd 2nd 1st
-2913 1st 2nd 3rd Last 3rd 2nd 1st
-2914 1st 2nd 3rd Last 3rd 2nd 1st
-2915 1st 2nd 3rd Last 3rd 2nd 1st
-2916 1st 2nd 3rd Last 3rd 2nd 1st
-2917 1st 2nd 3rd Last 3rd 2nd 1st
-2918 1st 2nd 3rd Last 3rd 2nd 1st
-2919 1st 2nd 3rd Last 3rd 2nd 1st
-2920 1st 2nd 3rd Last 3rd 2nd 1st
-2921 1st 2nd 3rd Last 3rd 2nd 1st
-2922 1st 2nd 3rd Last 3rd 2nd 1st
-2923 1st 2nd 3rd Last 3rd 2nd 1st
-2924 1st 2nd 3rd Last 3rd 2nd 1st
-2925 1st 2nd 3rd Last 3rd 2nd 1st
-2926 1st 2nd 3rd Last 3rd 2nd 1st
-2927 1st 2nd 3rd Last 3rd 2nd 1st
-2928 1st 2nd 3rd Last 3rd 2nd 1st
-2929 1st 2nd 3rd Last 3rd 2nd 1st
-2930 1st 2nd 3rd Last 3rd 2nd 1st
-2931 1st 2nd 3rd Last 3rd 2nd 1st
-2932 1st 2nd 3rd Last 3rd 2nd 1st
-2933 1st 2nd 3rd Last 3rd 2nd 1st
-2934 1st 2nd 3rd Last 3rd 2nd 1st
-2935 1st 2nd 3rd Last 3rd 2nd 1st
-2936 1st 2nd 3rd Last 3rd 2nd 1st
-2937 1st 2nd 3rd Last 3rd 2nd 1st
-2938 1st 2nd 3rd Last 3rd 2nd 1st
-2939 1st 2nd 3rd Last 3rd 2nd 1st
-2940 1st 2nd 3rd Last 3rd 2nd 1st
-2941 1st 2nd 3rd Last 3rd 2nd 1st
-2942 1st 2nd 3rd Last 3rd 2nd 1st
-2943 1st 2nd 3rd Last 3rd 2nd 1st
-2944 1st 2nd 3rd Last 3rd 2nd 1st
-2945 1st 2nd 3rd Last 3rd 2nd 1st
-2946 1st 2nd 3rd Last 3rd 2nd 1st
-2947 1st 2nd 3rd Last 3rd 2nd 1st
-2948 1st 2nd 3rd Last 3rd 2nd 1st
-2949 1st 2nd 3rd Last 3rd 2nd 1st
-2950 1st 2nd 3rd Last 3rd 2nd 1st
-2951 1st 2nd 3rd Last 3rd 2nd 1st
-2952 1st 2nd 3rd Last 3rd 2nd 1st
-2953 1st 2nd 3rd Last 3rd 2nd 1st
-2954 1st 2nd 3rd Last 3rd 2nd 1st
-2955 1st 2nd 3rd Last 3rd 2nd 1st
-2956 1st 2nd 3rd Last 3rd 2nd 1st
-2957 1st 2nd 3rd Last 3rd 2nd 1st
-2958 1st 2nd 3rd Last 3rd 2nd 1st
-2959 1st 2nd 3rd Last 3rd 2nd 1st
-2960 1st 2nd 3rd Last 3rd 2nd 1st
-2961 1st 2nd 3rd Last 3rd 2nd 1st
-2962 1st 2nd 3rd Last 3rd 2nd 1st
-2963 1st 2nd 3rd Last 3rd 2nd 1st
-2964 1st 2nd 3rd Last 3rd 2nd 1st
-2965 1st 2nd 3rd Last 3rd 2nd 1st
-2966 1st 2nd 3rd Last 3rd 2nd 1st
-2967 1st 2nd 3rd Last 3rd 2nd 1st
-2968 1st 2nd 3rd Last 3rd 2nd 1st
-2969 1st 2nd 3rd Last 3rd 2nd 1st
-2970 1st 2nd 3rd Last 3rd 2nd 1st
-2971 1st 2nd 3rd Last 3rd 2nd 1st
-2972 1st 2nd 3rd Last 3rd 2nd 1st
-2973 1st 2nd 3rd Last 3rd 2nd 1st
-2974 1st 2nd 3rd Last 3rd 2nd 1st
-2975 1st 2nd 3rd Last 3rd 2nd 1st
-2976 1st 2nd 3rd Last 3rd 2nd 1st
-2977 1st 2nd 3rd Last 3rd 2nd 1st
-2978 1st 2nd 3rd Last 3rd 2nd 1st
-2979 1st 2nd 3rd Last 3rd 2nd 1st
-2980 1st 2nd 3rd Last 3rd 2nd 1st
-2981 1st 2nd 3rd Last 3rd 2nd 1st
-2982 1st 2nd 3rd Last 3rd 2nd 1st
-2983 1st 2nd 3rd Last 3rd 2nd 1st
-2984 1st 2nd 3rd Last 3rd 2nd 1st
-2985 1st 2nd 3rd Last 3rd 2nd 1st
-2986 1st 2nd 3rd Last 3rd 2nd 1st
-2987 1st 2nd 3rd Last 3rd 2nd 1st
-2988 1st 2nd 3rd Last 3rd 2nd 1st
-2989 1st 2nd 3rd Last 3rd 2nd 1st
-2990 1st 2nd 3rd Last 3rd 2nd 1st
-2991 1st 2nd 3rd Last 3rd 2nd 1st
-2992 1st 2nd 3rd Last 3rd 2nd 1st
-2993 1st 2nd 3rd Last 3rd 2nd 1st
-2994 1st 2nd 3rd Last 3rd 2nd 1st
-2995 1st 2nd 3rd Last 3rd 2nd 1st
-2996 1st 2nd 3rd Last 3rd 2nd 1st
-2997 1st 2nd 3rd Last 3rd 2nd 1st
-2998 1st 2nd 3rd Last 3rd 2nd 1st
-2999 1st 2nd 3rd Last 3rd 2nd 1st
-3000 1st 2nd 3rd Last 3rd 2nd 1st
-3001 1st 2nd 3rd Last 3rd 2nd 1st
-3002 1st 2nd 3rd Last 3rd 2nd 1st
-3003 1st 2nd 3rd Last 3rd 2nd 1st
-3004 1st 2nd 3rd Last 3rd 2nd 1st
-3005 1st 2nd 3rd Last 3rd 2nd 1st
-3006 1st 2nd 3rd Last 3rd 2nd 1st
-3007 1st 2nd 3rd Last 3rd 2nd 1st
-3008 1st 2nd 3rd Last 3rd 2nd 1st
-3009 1st 2nd 3rd Last 3rd 2nd 1st
-3010 1st 2nd 3rd Last 3rd 2nd 1st
-3011 1st 2nd 3rd Last 3rd 2nd 1st
-3012 1st 2nd 3rd Last 3rd 2nd 1st
-3013 1st 2nd 3rd Last 3rd 2nd 1st
-3014 1st 2nd 3rd Last 3rd 2nd 1st
-3015 1st 2nd 3rd Last 3rd 2nd 1st
-3016 1st 2nd 3rd Last 3rd 2nd 1st
-3017 1st 2nd 3rd Last 3rd 2nd 1st
-3018 1st 2nd 3rd Last 3rd 2nd 1st
-3019 1st 2nd 3rd Last 3rd 2nd 1st
-3020 1st 2nd 3rd Last 3rd 2nd 1st
-3021 1st 2nd 3rd Last 3rd 2nd 1st
-3022 1st 2nd 3rd Last 3rd 2nd 1st
-3023 1st 2nd 3rd Last 3rd 2nd 1st
-3024 1st 2nd 3rd Last 3rd 2nd 1st
-3025 1st 2nd 3rd Last 3rd 2nd 1st
-3026 1st 2nd 3rd Last 3rd 2nd 1st
-3027 1st 2nd 3rd Last 3rd 2nd 1st
-3028 1st 2nd 3rd Last 3rd 2nd 1st
-3029 1st 2nd 3rd Last 3rd 2nd 1st
-3030 1st 2nd 3rd Last 3rd 2nd 1st
-3031 1st 2nd 3rd Last 3rd 2nd 1st
-3032 1st 2nd 3rd Last 3rd 2nd 1st
-3033 1st 2nd 3rd Last 3rd 2nd 1st
-3034 1st 2nd 3rd Last 3rd 2nd 1st
-3035 1st 2nd 3rd Last 3rd 2nd 1st
-3036 1st 2nd 3rd Last 3rd 2nd 1st
-3037 1st 2nd 3rd Last 3rd 2nd 1st
-3038 1st 2nd 3rd Last 3rd 2nd 1st
-3039 1st 2nd 3rd Last 3rd 2nd 1st
-3040 1st 2nd 3rd Last 3rd 2nd 1st
-3041 1st 2nd 3rd Last 3rd 2nd 1st
-3042 1st 2nd 3rd Last 3rd 2nd 1st
-3043 1st 2nd 3rd Last 3rd 2nd 1st
-3044 1st 2nd 3rd Last 3rd 2nd 1st
-3045 1st 2nd 3rd Last 3rd 2nd 1st
-3046 1st 2nd 3rd Last 3rd 2nd 1st
-3047 1st 2nd 3rd Last 3rd 2nd 1st
-3048 1st 2nd 3rd Last 3rd 2nd 1st
-3049 1st 2nd 3rd Last 3rd 2nd 1st
-3050 1st 2nd 3rd Last 3rd 2nd 1st
-3051 1st 2nd 3rd Last 3rd 2nd 1st
-3052 1st 2nd 3rd Last 3rd 2nd 1st
-3053 1st 2nd 3rd Last 3rd 2nd 1st
-3054 1st 2nd 3rd Last 3rd 2nd 1st
-3055 1st 2nd 3rd Last 3rd 2nd 1st
-3056 1st 2nd 3rd Last 3rd 2nd 1st
-3057 1st 2nd 3rd Last 3rd 2nd 1st
-3058 1st 2nd 3rd Last 3rd 2nd 1st
-3059 1st 2nd 3rd Last 3rd 2nd 1st
-3060 1st 2nd 3rd Last 3rd 2nd 1st
-3061 1st 2nd 3rd Last 3rd 2nd 1st
-3062 1st 2nd 3rd Last 3rd 2nd 1st
-3063 1st 2nd 3rd Last 3rd 2nd 1st
-3064 1st 2nd 3rd Last 3rd 2nd 1st
-3065 1st 2nd 3rd Last 3rd 2nd 1st
-3066 1st 2nd 3rd Last 3rd 2nd 1st
-3067 1st 2nd 3rd Last 3rd 2nd 1st
-3068 1st 2nd 3rd Last 3rd 2nd 1st
-3069 1st 2nd 3rd Last 3rd 2nd 1st
-3070 1st 2nd 3rd Last 3rd 2nd 1st
-3071 1st 2nd 3rd Last 3rd 2nd 1st
-3072 1st 2nd 3rd Last 3rd 2nd 1st
-3073 1st 2nd 3rd Last 3rd 2nd 1st
-3074 1st 2nd 3rd Last 3rd 2nd 1st
-3075 1st 2nd 3rd Last 3rd 2nd 1st
-3076 1st 2nd 3rd Last 3rd 2nd 1st
-3077 1st 2nd 3rd Last 3rd 2nd 1st
-3078 1st 2nd 3rd Last 3rd 2nd 1st
-3079 1st 2nd 3rd Last 3rd 2nd 1st
-3080 1st 2nd 3rd Last 3rd 2nd 1st
-3081 1st 2nd 3rd Last 3rd 2nd 1st
-3082 1st 2nd 3rd Last 3rd 2nd 1st
-3083 1st 2nd 3rd Last 3rd 2nd 1st
-3084 1st 2nd 3rd Last 3rd 2nd 1st
-3085 1st 2nd 3rd Last 3rd 2nd 1st
-3086 1st 2nd 3rd Last 3rd 2nd 1st
-3087 1st 2nd 3rd Last 3rd 2nd 1st
-3088 1st 2nd 3rd Last 3rd 2nd 1st
-3089 1st 2nd 3rd Last 3rd 2nd 1st
-3090 1st 2nd 3rd Last 3rd 2nd 1st
-3091 1st 2nd 3rd Last 3rd 2nd 1st
-3092 1st 2nd 3rd Last 3rd 2nd 1st
-3093 1st 2nd 3rd Last 3rd 2nd 1st
-3094 1st 2nd 3rd Last 3rd 2nd 1st
-3095 1st 2nd 3rd Last 3rd 2nd 1st
-3096 1st 2nd 3rd Last 3rd 2nd 1st
-3097 1st 2nd 3rd Last 3rd 2nd 1st
-3098 1st 2nd 3rd Last 3rd 2nd 1st
-3099 1st 2nd 3rd Last 3rd 2nd 1st
-3100 1st 2nd 3rd Last 3rd 2nd 1st
-3101 1st 2nd 3rd Last 3rd 2nd 1st
-3102 1st 2nd 3rd Last 3rd 2nd 1st
-3103 1st 2nd 3rd Last 3rd 2nd 1st
-3104 1st 2nd 3rd Last 3rd 2nd 1st
-3105 1st 2nd 3rd Last 3rd 2nd 1st
-3106 1st 2nd 3rd Last 3rd 2nd 1st
-3107 1st 2nd 3rd Last 3rd 2nd 1st
-3108 1st 2nd 3rd Last 3rd 2nd 1st
-3109 1st 2nd 3rd Last 3rd 2nd 1st
-3110 1st 2nd 3rd Last 3rd 2nd 1st
-3111 1st 2nd 3rd Last 3rd 2nd 1st
-3112 1st 2nd 3rd Last 3rd 2nd 1st
-3113 1st 2nd 3rd Last 3rd 2nd 1st
-3114 1st 2nd 3rd Last 3rd 2nd 1st
-3115 1st 2nd 3rd Last 3rd 2nd 1st
-3116 1st 2nd 3rd Last 3rd 2nd 1st
-3117 1st 2nd 3rd Last 3rd 2nd 1st
-3118 1st 2nd 3rd Last 3rd 2nd 1st
-3119 1st 2nd 3rd Last 3rd 2nd 1st
-3120 1st 2nd 3rd Last 3rd 2nd 1st
-3121 1st 2nd 3rd Last 3rd 2nd 1st
-3122 1st 2nd 3rd Last 3rd 2nd 1st
-3123 1st 2nd 3rd Last 3rd 2nd 1st
-3124 1st 2nd 3rd Last 3rd 2nd 1st
-3125 1st 2nd 3rd Last 3rd 2nd 1st
-3126 1st 2nd 3rd Last 3rd 2nd 1st
-3127 1st 2nd 3rd Last 3rd 2nd 1st
-3128 1st 2nd 3rd Last 3rd 2nd 1st
-3129 1st 2nd 3rd Last 3rd 2nd 1st
-3130 1st 2nd 3rd Last 3rd 2nd 1st
-3131 1st 2nd 3rd Last 3rd 2nd 1st
-3132 1st 2nd 3rd Last 3rd 2nd 1st
-3133 1st 2nd 3rd Last 3rd 2nd 1st
-3134 1st 2nd 3rd Last 3rd 2nd 1st
-3135 1st 2nd 3rd Last 3rd 2nd 1st
-3136 1st 2nd 3rd Last 3rd 2nd 1st
-3137 1st 2nd 3rd Last 3rd 2nd 1st
-3138 1st 2nd 3rd Last 3rd 2nd 1st
-3139 1st 2nd 3rd Last 3rd 2nd 1st
-3140 1st 2nd 3rd Last 3rd 2nd 1st
-3141 1st 2nd 3rd Last 3rd 2nd 1st
-3142 1st 2nd 3rd Last 3rd 2nd 1st
-3143 1st 2nd 3rd Last 3rd 2nd 1st
-3144 1st 2nd 3rd Last 3rd 2nd 1st
-3145 1st 2nd 3rd Last 3rd 2nd 1st
-3146 1st 2nd 3rd Last 3rd 2nd 1st
-3147 1st 2nd 3rd Last 3rd 2nd 1st
-3148 1st 2nd 3rd Last 3rd 2nd 1st
-3149 1st 2nd 3rd Last 3rd 2nd 1st
-3150 1st 2nd 3rd Last 3rd 2nd 1st
-3151 1st 2nd 3rd Last 3rd 2nd 1st
-3152 1st 2nd 3rd Last 3rd 2nd 1st
-3153 1st 2nd 3rd Last 3rd 2nd 1st
-3154 1st 2nd 3rd Last 3rd 2nd 1st
-3155 1st 2nd 3rd Last 3rd 2nd 1st
-3156 1st 2nd 3rd Last 3rd 2nd 1st
-3157 1st 2nd 3rd Last 3rd 2nd 1st
-3158 1st 2nd 3rd Last 3rd 2nd 1st
-3159 1st 2nd 3rd Last 3rd 2nd 1st
-3160 1st 2nd 3rd Last 3rd 2nd 1st
-3161 1st 2nd 3rd Last 3rd 2nd 1st
-3162 1st 2nd 3rd Last 3rd 2nd 1st
-3163 1st 2nd 3rd Last 3rd 2nd 1st
-3164 1st 2nd 3rd Last 3rd 2nd 1st
-3165 1st 2nd 3rd Last 3rd 2nd 1st
-3166 1st 2nd 3rd Last 3rd 2nd 1st
-3167 1st 2nd 3rd Last 3rd 2nd 1st
-3168 1st 2nd 3rd Last 3rd 2nd 1st
-3169 1st 2nd 3rd Last 3rd 2nd 1st
-3170 1st 2nd 3rd Last 3rd 2nd 1st
-3171 1st 2nd 3rd Last 3rd 2nd 1st
-3172 1st 2nd 3rd Last 3rd 2nd 1st
-3173 1st 2nd 3rd Last 3rd 2nd 1st
-3174 1st 2nd 3rd Last 3rd 2nd 1st
-3175 1st 2nd 3rd Last 3rd 2nd 1st
-3176 1st 2nd 3rd Last 3rd 2nd 1st
-3177 1st 2nd 3rd Last 3rd 2nd 1st
-3178 1st 2nd 3rd Last 3rd 2nd 1st
-3179 1st 2nd 3rd Last 3rd 2nd 1st
-3180 1st 2nd 3rd Last 3rd 2nd 1st
-3181 1st 2nd 3rd Last 3rd 2nd 1st
-3182 1st 2nd 3rd Last 3rd 2nd 1st
-3183 1st 2nd 3rd Last 3rd 2nd 1st
-3184 1st 2nd 3rd Last 3rd 2nd 1st
-3185 1st 2nd 3rd Last 3rd 2nd 1st
-3186 1st 2nd 3rd Last 3rd 2nd 1st
-3187 1st 2nd 3rd Last 3rd 2nd 1st
-3188 1st 2nd 3rd Last 3rd 2nd 1st
-3189 1st 2nd 3rd Last 3rd 2nd 1st
-3190 1st 2nd 3rd Last 3rd 2nd 1st
-3191 1st 2nd 3rd Last 3rd 2nd 1st
-3192 1st 2nd 3rd Last 3rd 2nd 1st
-3193 1st 2nd 3rd Last 3rd 2nd 1st
-3194 1st 2nd 3rd Last 3rd 2nd 1st
-3195 1st 2nd 3rd Last 3rd 2nd 1st
-3196 1st 2nd 3rd Last 3rd 2nd 1st
-3197 1st 2nd 3rd Last 3rd 2nd 1st
-3198 1st 2nd 3rd Last 3rd 2nd 1st
-3199 1st 2nd 3rd Last 3rd 2nd 1st
-3200 1st 2nd 3rd Last 3rd 2nd 1st
-3201 1st 2nd 3rd Last 3rd 2nd 1st
-3202 1st 2nd 3rd Last 3rd 2nd 1st
-3203 1st 2nd 3rd Last 3rd 2nd 1st
-3204 1st 2nd 3rd Last 3rd 2nd 1st
-3205 1st 2nd 3rd Last 3rd 2nd 1st
-3206 1st 2nd 3rd Last 3rd 2nd 1st
-3207 1st 2nd 3rd Last 3rd 2nd 1st
-3208 1st 2nd 3rd Last 3rd 2nd 1st
-3209 1st 2nd 3rd Last 3rd 2nd 1st
-3210 1st 2nd 3rd Last 3rd 2nd 1st
-3211 1st 2nd 3rd Last 3rd 2nd 1st
-3212 1st 2nd 3rd Last 3rd 2nd 1st
-3213 1st 2nd 3rd Last 3rd 2nd 1st
-3214 1st 2nd 3rd Last 3rd 2nd 1st
-3215 1st 2nd 3rd Last 3rd 2nd 1st
-3216 1st 2nd 3rd Last 3rd 2nd 1st
-3217 1st 2nd 3rd Last 3rd 2nd 1st
-3218 1st 2nd 3rd Last 3rd 2nd 1st
-3219 1st 2nd 3rd Last 3rd 2nd 1st
-3220 1st 2nd 3rd Last 3rd 2nd 1st
-3221 1st 2nd 3rd Last 3rd 2nd 1st
-3222 1st 2nd 3rd Last 3rd 2nd 1st
-3223 1st 2nd 3rd Last 3rd 2nd 1st
-3224 1st 2nd 3rd Last 3rd 2nd 1st
-3225 1st 2nd 3rd Last 3rd 2nd 1st
-3226 1st 2nd 3rd Last 3rd 2nd 1st
-3227 1st 2nd 3rd Last 3rd 2nd 1st
-3228 1st 2nd 3rd Last 3rd 2nd 1st
-3229 1st 2nd 3rd Last 3rd 2nd 1st
-3230 1st 2nd 3rd Last 3rd 2nd 1st
-3231 1st 2nd 3rd Last 3rd 2nd 1st
-3232 1st 2nd 3rd Last 3rd 2nd 1st
-3233 1st 2nd 3rd Last 3rd 2nd 1st
-3234 1st 2nd 3rd Last 3rd 2nd 1st
-3235 1st 2nd 3rd Last 3rd 2nd 1st
-3236 1st 2nd 3rd Last 3rd 2nd 1st
-3237 1st 2nd 3rd Last 3rd 2nd 1st
-3238 1st 2nd 3rd Last 3rd 2nd 1st
-3239 1st 2nd 3rd Last 3rd 2nd 1st
-3240 1st 2nd 3rd Last 3rd 2nd 1st
-3241 1st 2nd 3rd Last 3rd 2nd 1st
-3242 1st 2nd 3rd Last 3rd 2nd 1st
-3243 1st 2nd 3rd Last 3rd 2nd 1st
-3244 1st 2nd 3rd Last 3rd 2nd 1st
-3245 1st 2nd 3rd Last 3rd 2nd 1st
-3246 1st 2nd 3rd Last 3rd 2nd 1st
-3247 1st 2nd 3rd Last 3rd 2nd 1st
-3248 1st 2nd 3rd Last 3rd 2nd 1st
-3249 1st 2nd 3rd Last 3rd 2nd 1st
-3250 1st 2nd 3rd Last 3rd 2nd 1st
-3251 1st 2nd 3rd Last 3rd 2nd 1st
-3252 1st 2nd 3rd Last 3rd 2nd 1st
-3253 1st 2nd 3rd Last 3rd 2nd 1st
-3254 1st 2nd 3rd Last 3rd 2nd 1st
-3255 1st 2nd 3rd Last 3rd 2nd 1st
-3256 1st 2nd 3rd Last 3rd 2nd 1st
-3257 1st 2nd 3rd Last 3rd 2nd 1st
-3258 1st 2nd 3rd Last 3rd 2nd 1st
-3259 1st 2nd 3rd Last 3rd 2nd 1st
-3260 1st 2nd 3rd Last 3rd 2nd 1st
-3261 1st 2nd 3rd Last 3rd 2nd 1st
-3262 1st 2nd 3rd Last 3rd 2nd 1st
-3263 1st 2nd 3rd Last 3rd 2nd 1st
-3264 1st 2nd 3rd Last 3rd 2nd 1st
-3265 1st 2nd 3rd Last 3rd 2nd 1st
-3266 1st 2nd 3rd Last 3rd 2nd 1st
-3267 1st 2nd 3rd Last 3rd 2nd 1st
-3268 1st 2nd 3rd Last 3rd 2nd 1st
-3269 1st 2nd 3rd Last 3rd 2nd 1st
-3270 1st 2nd 3rd Last 3rd 2nd 1st
-3271 1st 2nd 3rd Last 3rd 2nd 1st
-3272 1st 2nd 3rd Last 3rd 2nd 1st
-3273 1st 2nd 3rd Last 3rd 2nd 1st
-3274 1st 2nd 3rd Last 3rd 2nd 1st
-3275 1st 2nd 3rd Last 3rd 2nd 1st
-3276 1st 2nd 3rd Last 3rd 2nd 1st
-3277 1st 2nd 3rd Last 3rd 2nd 1st
-3278 1st 2nd 3rd Last 3rd 2nd 1st
-3279 1st 2nd 3rd Last 3rd 2nd 1st
-3280 1st 2nd 3rd Last 3rd 2nd 1st
-3281 1st 2nd 3rd Last 3rd 2nd 1st
-3282 1st 2nd 3rd Last 3rd 2nd 1st
-3283 1st 2nd 3rd Last 3rd 2nd 1st
-3284 1st 2nd 3rd Last 3rd 2nd 1st
-3285 1st 2nd 3rd Last 3rd 2nd 1st
-3286 1st 2nd 3rd Last 3rd 2nd 1st
-3287 1st 2nd 3rd Last 3rd 2nd 1st
-3288 1st 2nd 3rd Last 3rd 2nd 1st
-3289 1st 2nd 3rd Last 3rd 2nd 1st
-3290 1st 2nd 3rd Last 3rd 2nd 1st
-3291 1st 2nd 3rd Last 3rd 2nd 1st
-3292 1st 2nd 3rd Last 3rd 2nd 1st
-3293 1st 2nd 3rd Last 3rd 2nd 1st
-3294 1st 2nd 3rd Last 3rd 2nd 1st
-3295 1st 2nd 3rd Last 3rd 2nd 1st
-3296 1st 2nd 3rd Last 3rd 2nd 1st
-3297 1st 2nd 3rd Last 3rd 2nd 1st
-3298 1st 2nd 3rd Last 3rd 2nd 1st
-3299 1st 2nd 3rd Last 3rd 2nd 1st
-3300 1st 2nd 3rd Last 3rd 2nd 1st
-3301 1st 2nd 3rd Last 3rd 2nd 1st
-3302 1st 2nd 3rd Last 3rd 2nd 1st
-3303 1st 2nd 3rd Last 3rd 2nd 1st
-3304 1st 2nd 3rd Last 3rd 2nd 1st
-3305 1st 2nd 3rd Last 3rd 2nd 1st
-3306 1st 2nd 3rd Last 3rd 2nd 1st
-3307 1st 2nd 3rd Last 3rd 2nd 1st
-3308 1st 2nd 3rd Last 3rd 2nd 1st
-3309 1st 2nd 3rd Last 3rd 2nd 1st
-3310 1st 2nd 3rd Last 3rd 2nd 1st
-3311 1st 2nd 3rd Last 3rd 2nd 1st
-3312 1st 2nd 3rd Last 3rd 2nd 1st
-3313 1st 2nd 3rd Last 3rd 2nd 1st
-3314 1st 2nd 3rd Last 3rd 2nd 1st
-3315 1st 2nd 3rd Last 3rd 2nd 1st
-3316 1st 2nd 3rd Last 3rd 2nd 1st
-3317 1st 2nd 3rd Last 3rd 2nd 1st
-3318 1st 2nd 3rd Last 3rd 2nd 1st
-3319 1st 2nd 3rd Last 3rd 2nd 1st
-3320 1st 2nd 3rd Last 3rd 2nd 1st
-3321 1st 2nd 3rd Last 3rd 2nd 1st
-3322 1st 2nd 3rd Last 3rd 2nd 1st
-3323 1st 2nd 3rd Last 3rd 2nd 1st
-3324 1st 2nd 3rd Last 3rd 2nd 1st
-3325 1st 2nd 3rd Last 3rd 2nd 1st
-3326 1st 2nd 3rd Last 3rd 2nd 1st
-3327 1st 2nd 3rd Last 3rd 2nd 1st
-3328 1st 2nd 3rd Last 3rd 2nd 1st
-3329 1st 2nd 3rd Last 3rd 2nd 1st
-3330 1st 2nd 3rd Last 3rd 2nd 1st
-3331 1st 2nd 3rd Last 3rd 2nd 1st
-3332 1st 2nd 3rd Last 3rd 2nd 1st
-3333 1st 2nd 3rd Last 3rd 2nd 1st
-3334 1st 2nd 3rd Last 3rd 2nd 1st
-3335 1st 2nd 3rd Last 3rd 2nd 1st
-3336 1st 2nd 3rd Last 3rd 2nd 1st
-3337 1st 2nd 3rd Last 3rd 2nd 1st
-3338 1st 2nd 3rd Last 3rd 2nd 1st
-3339 1st 2nd 3rd Last 3rd 2nd 1st
-3340 1st 2nd 3rd Last 3rd 2nd 1st
-3341 1st 2nd 3rd Last 3rd 2nd 1st
-3342 1st 2nd 3rd Last 3rd 2nd 1st
-3343 1st 2nd 3rd Last 3rd 2nd 1st
-3344 1st 2nd 3rd Last 3rd 2nd 1st
-3345 1st 2nd 3rd Last 3rd 2nd 1st
-3346 1st 2nd 3rd Last 3rd 2nd 1st
-3347 1st 2nd 3rd Last 3rd 2nd 1st
-3348 1st 2nd 3rd Last 3rd 2nd 1st
-3349 1st 2nd 3rd Last 3rd 2nd 1st
-3350 1st 2nd 3rd Last 3rd 2nd 1st
-3351 1st 2nd 3rd Last 3rd 2nd 1st
-3352 1st 2nd 3rd Last 3rd 2nd 1st
-3353 1st 2nd 3rd Last 3rd 2nd 1st
-3354 1st 2nd 3rd Last 3rd 2nd 1st
-3355 1st 2nd 3rd Last 3rd 2nd 1st
-3356 1st 2nd 3rd Last 3rd 2nd 1st
-3357 1st 2nd 3rd Last 3rd 2nd 1st
-3358 1st 2nd 3rd Last 3rd 2nd 1st
-3359 1st 2nd 3rd Last 3rd 2nd 1st
-3360 1st 2nd 3rd Last 3rd 2nd 1st
-3361 1st 2nd 3rd Last 3rd 2nd 1st
-3362 1st 2nd 3rd Last 3rd 2nd 1st
-3363 1st 2nd 3rd Last 3rd 2nd 1st
-3364 1st 2nd 3rd Last 3rd 2nd 1st
-3365 1st 2nd 3rd Last 3rd 2nd 1st
-3366 1st 2nd 3rd Last 3rd 2nd 1st
-3367 1st 2nd 3rd Last 3rd 2nd 1st
-3368 1st 2nd 3rd Last 3rd 2nd 1st
-3369 1st 2nd 3rd Last 3rd 2nd 1st
-3370 1st 2nd 3rd Last 3rd 2nd 1st
-3371 1st 2nd 3rd Last 3rd 2nd 1st
-3372 1st 2nd 3rd Last 3rd 2nd 1st
-3373 1st 2nd 3rd Last 3rd 2nd 1st
-3374 1st 2nd 3rd Last 3rd 2nd 1st
-3375 1st 2nd 3rd Last 3rd 2nd 1st
-3376 1st 2nd 3rd Last 3rd 2nd 1st
-3377 1st 2nd 3rd Last 3rd 2nd 1st
-3378 1st 2nd 3rd Last 3rd 2nd 1st
-3379 1st 2nd 3rd Last 3rd 2nd 1st
-3380 1st 2nd 3rd Last 3rd 2nd 1st
-3381 1st 2nd 3rd Last 3rd 2nd 1st
-3382 1st 2nd 3rd Last 3rd 2nd 1st
-3383 1st 2nd 3rd Last 3rd 2nd 1st
-3384 1st 2nd 3rd Last 3rd 2nd 1st
-3385 1st 2nd 3rd Last 3rd 2nd 1st
-3386 1st 2nd 3rd Last 3rd 2nd 1st
-3387 1st 2nd 3rd Last 3rd 2nd 1st
-3388 1st 2nd 3rd Last 3rd 2nd 1st
-3389 1st 2nd 3rd Last 3rd 2nd 1st
-3390 1st 2nd 3rd Last 3rd 2nd 1st
-3391 1st 2nd 3rd Last 3rd 2nd 1st
-3392 1st 2nd 3rd Last 3rd 2nd 1st
-3393 1st 2nd 3rd Last 3rd 2nd 1st
-3394 1st 2nd 3rd Last 3rd 2nd 1st
-3395 1st 2nd 3rd Last 3rd 2nd 1st
-3396 1st 2nd 3rd Last 3rd 2nd 1st
-3397 1st 2nd 3rd Last 3rd 2nd 1st
-3398 1st 2nd 3rd Last 3rd 2nd 1st
-3399 1st 2nd 3rd Last 3rd 2nd 1st
-3400 1st 2nd 3rd Last 3rd 2nd 1st
-3401 1st 2nd 3rd Last 3rd 2nd 1st
-3402 1st 2nd 3rd Last 3rd 2nd 1st
-3403 1st 2nd 3rd Last 3rd 2nd 1st
-3404 1st 2nd 3rd Last 3rd 2nd 1st
-3405 1st 2nd 3rd Last 3rd 2nd 1st
-3406 1st 2nd 3rd Last 3rd 2nd 1st
-3407 1st 2nd 3rd Last 3rd 2nd 1st
-3408 1st 2nd 3rd Last 3rd 2nd 1st
-3409 1st 2nd 3rd Last 3rd 2nd 1st
-3410 1st 2nd 3rd Last 3rd 2nd 1st
-3411 1st 2nd 3rd Last 3rd 2nd 1st
-3412 1st 2nd 3rd Last 3rd 2nd 1st
-3413 1st 2nd 3rd Last 3rd 2nd 1st
-3414 1st 2nd 3rd Last 3rd 2nd 1st
-3415 1st 2nd 3rd Last 3rd 2nd 1st
-3416 1st 2nd 3rd Last 3rd 2nd 1st
-3417 1st 2nd 3rd Last 3rd 2nd 1st
-3418 1st 2nd 3rd Last 3rd 2nd 1st
-3419 1st 2nd 3rd Last 3rd 2nd 1st
-3420 1st 2nd 3rd Last 3rd 2nd 1st
-3421 1st 2nd 3rd Last 3rd 2nd 1st
-3422 1st 2nd 3rd Last 3rd 2nd 1st
-3423 1st 2nd 3rd Last 3rd 2nd 1st
-3424 1st 2nd 3rd Last 3rd 2nd 1st
-3425 1st 2nd 3rd Last 3rd 2nd 1st
-3426 1st 2nd 3rd Last 3rd 2nd 1st
-3427 1st 2nd 3rd Last 3rd 2nd 1st
-3428 1st 2nd 3rd Last 3rd 2nd 1st
-3429 1st 2nd 3rd Last 3rd 2nd 1st
-3430 1st 2nd 3rd Last 3rd 2nd 1st
-3431 1st 2nd 3rd Last 3rd 2nd 1st
-3432 1st 2nd 3rd Last 3rd 2nd 1st
-3433 1st 2nd 3rd Last 3rd 2nd 1st
-3434 1st 2nd 3rd Last 3rd 2nd 1st
-3435 1st 2nd 3rd Last 3rd 2nd 1st
-3436 1st 2nd 3rd Last 3rd 2nd 1st
-3437 1st 2nd 3rd Last 3rd 2nd 1st
-3438 1st 2nd 3rd Last 3rd 2nd 1st
-3439 1st 2nd 3rd Last 3rd 2nd 1st
-3440 1st 2nd 3rd Last 3rd 2nd 1st
-3441 1st 2nd 3rd Last 3rd 2nd 1st
-3442 1st 2nd 3rd Last 3rd 2nd 1st
-3443 1st 2nd 3rd Last 3rd 2nd 1st
-3444 1st 2nd 3rd Last 3rd 2nd 1st
-3445 1st 2nd 3rd Last 3rd 2nd 1st
-3446 1st 2nd 3rd Last 3rd 2nd 1st
-3447 1st 2nd 3rd Last 3rd 2nd 1st
-3448 1st 2nd 3rd Last 3rd 2nd 1st
-3449 1st 2nd 3rd Last 3rd 2nd 1st
-3450 1st 2nd 3rd Last 3rd 2nd 1st
-3451 1st 2nd 3rd Last 3rd 2nd 1st
-3452 1st 2nd 3rd Last 3rd 2nd 1st
-3453 1st 2nd 3rd Last 3rd 2nd 1st
-3454 1st 2nd 3rd Last 3rd 2nd 1st
-3455 1st 2nd 3rd Last 3rd 2nd 1st
-3456 1st 2nd 3rd Last 3rd 2nd 1st
-3457 1st 2nd 3rd Last 3rd 2nd 1st
-3458 1st 2nd 3rd Last 3rd 2nd 1st
-3459 1st 2nd 3rd Last 3rd 2nd 1st
-3460 1st 2nd 3rd Last 3rd 2nd 1st
-3461 1st 2nd 3rd Last 3rd 2nd 1st
-3462 1st 2nd 3rd Last 3rd 2nd 1st
-3463 1st 2nd 3rd Last 3rd 2nd 1st
-3464 1st 2nd 3rd Last 3rd 2nd 1st
-3465 1st 2nd 3rd Last 3rd 2nd 1st
-3466 1st 2nd 3rd Last 3rd 2nd 1st
-3467 1st 2nd 3rd Last 3rd 2nd 1st
-3468 1st 2nd 3rd Last 3rd 2nd 1st
-3469 1st 2nd 3rd Last 3rd 2nd 1st
-3470 1st 2nd 3rd Last 3rd 2nd 1st
-3471 1st 2nd 3rd Last 3rd 2nd 1st
-3472 1st 2nd 3rd Last 3rd 2nd 1st
-3473 1st 2nd 3rd Last 3rd 2nd 1st
-3474 1st 2nd 3rd Last 3rd 2nd 1st
-3475 1st 2nd 3rd Last 3rd 2nd 1st
-3476 1st 2nd 3rd Last 3rd 2nd 1st
-3477 1st 2nd 3rd Last 3rd 2nd 1st
-3478 1st 2nd 3rd Last 3rd 2nd 1st
-3479 1st 2nd 3rd Last 3rd 2nd 1st
-3480 1st 2nd 3rd Last 3rd 2nd 1st
-3481 1st 2nd 3rd Last 3rd 2nd 1st
-3482 1st 2nd 3rd Last 3rd 2nd 1st
-3483 1st 2nd 3rd Last 3rd 2nd 1st
-3484 1st 2nd 3rd Last 3rd 2nd 1st
-3485 1st 2nd 3rd Last 3rd 2nd 1st
-3486 1st 2nd 3rd Last 3rd 2nd 1st
-3487 1st 2nd 3rd Last 3rd 2nd 1st
-3488 1st 2nd 3rd Last 3rd 2nd 1st
-3489 1st 2nd 3rd Last 3rd 2nd 1st
-3490 1st 2nd 3rd Last 3rd 2nd 1st
-3491 1st 2nd 3rd Last 3rd 2nd 1st
-3492 1st 2nd 3rd Last 3rd 2nd 1st
-3493 1st 2nd 3rd Last 3rd 2nd 1st
-3494 1st 2nd 3rd Last 3rd 2nd 1st
-3495 1st 2nd 3rd Last 3rd 2nd 1st
-3496 1st 2nd 3rd Last 3rd 2nd 1st
-3497 1st 2nd 3rd Last 3rd 2nd 1st
-3498 1st 2nd 3rd Last 3rd 2nd 1st
-3499 1st 2nd 3rd Last 3rd 2nd 1st
-3500 1st 2nd 3rd Last 3rd 2nd 1st
-3501 1st 2nd 3rd Last 3rd 2nd 1st
-3502 1st 2nd 3rd Last 3rd 2nd 1st
-3503 1st 2nd 3rd Last 3rd 2nd 1st
-3504 1st 2nd 3rd Last 3rd 2nd 1st
-3505 1st 2nd 3rd Last 3rd 2nd 1st
-3506 1st 2nd 3rd Last 3rd 2nd 1st
-3507 1st 2nd 3rd Last 3rd 2nd 1st
-3508 1st 2nd 3rd Last 3rd 2nd 1st
-3509 1st 2nd 3rd Last 3rd 2nd 1st
-3510 1st 2nd 3rd Last 3rd 2nd 1st
-3511 1st 2nd 3rd Last 3rd 2nd 1st
-3512 1st 2nd 3rd Last 3rd 2nd 1st
-3513 1st 2nd 3rd Last 3rd 2nd 1st
-3514 1st 2nd 3rd Last 3rd 2nd 1st
-3515 1st 2nd 3rd Last 3rd 2nd 1st
-3516 1st 2nd 3rd Last 3rd 2nd 1st
-3517 1st 2nd 3rd Last 3rd 2nd 1st
-3518 1st 2nd 3rd Last 3rd 2nd 1st
-3519 1st 2nd 3rd Last 3rd 2nd 1st
-3520 1st 2nd 3rd Last 3rd 2nd 1st
-3521 1st 2nd 3rd Last 3rd 2nd 1st
-3522 1st 2nd 3rd Last 3rd 2nd 1st
-3523 1st 2nd 3rd Last 3rd 2nd 1st
-3524 1st 2nd 3rd Last 3rd 2nd 1st
-3525 1st 2nd 3rd Last 3rd 2nd 1st
-3526 1st 2nd 3rd Last 3rd 2nd 1st
-3527 1st 2nd 3rd Last 3rd 2nd 1st
-3528 1st 2nd 3rd Last 3rd 2nd 1st
-3529 1st 2nd 3rd Last 3rd 2nd 1st
-3530 1st 2nd 3rd Last 3rd 2nd 1st
-3531 1st 2nd 3rd Last 3rd 2nd 1st
-3532 1st 2nd 3rd Last 3rd 2nd 1st
-3533 1st 2nd 3rd Last 3rd 2nd 1st
-3534 1st 2nd 3rd Last 3rd 2nd 1st
-3535 1st 2nd 3rd Last 3rd 2nd 1st
-3536 1st 2nd 3rd Last 3rd 2nd 1st
-3537 1st 2nd 3rd Last 3rd 2nd 1st
-3538 1st 2nd 3rd Last 3rd 2nd 1st
-3539 1st 2nd 3rd Last 3rd 2nd 1st
-3540 1st 2nd 3rd Last 3rd 2nd 1st
-3541 1st 2nd 3rd Last 3rd 2nd 1st
-3542 1st 2nd 3rd Last 3rd 2nd 1st
-3543 1st 2nd 3rd Last 3rd 2nd 1st
-3544 1st 2nd 3rd Last 3rd 2nd 1st
-3545 1st 2nd 3rd Last 3rd 2nd 1st
-3546 1st 2nd 3rd Last 3rd 2nd 1st
-3547 1st 2nd 3rd Last 3rd 2nd 1st
-3548 1st 2nd 3rd Last 3rd 2nd 1st
-3549 1st 2nd 3rd Last 3rd 2nd 1st
-3550 1st 2nd 3rd Last 3rd 2nd 1st
-3551 1st 2nd 3rd Last 3rd 2nd 1st
-3552 1st 2nd 3rd Last 3rd 2nd 1st
-3553 1st 2nd 3rd Last 3rd 2nd 1st
-3554 1st 2nd 3rd Last 3rd 2nd 1st
-3555 1st 2nd 3rd Last 3rd 2nd 1st
-3556 1st 2nd 3rd Last 3rd 2nd 1st
-3557 1st 2nd 3rd Last 3rd 2nd 1st
-3558 1st 2nd 3rd Last 3rd 2nd 1st
-3559 1st 2nd 3rd Last 3rd 2nd 1st
-3560 1st 2nd 3rd Last 3rd 2nd 1st
-3561 1st 2nd 3rd Last 3rd 2nd 1st
-3562 1st 2nd 3rd Last 3rd 2nd 1st
-3563 1st 2nd 3rd Last 3rd 2nd 1st
-3564 1st 2nd 3rd Last 3rd 2nd 1st
-3565 1st 2nd 3rd Last 3rd 2nd 1st
-3566 1st 2nd 3rd Last 3rd 2nd 1st
-3567 1st 2nd 3rd Last 3rd 2nd 1st
-3568 1st 2nd 3rd Last 3rd 2nd 1st
-3569 1st 2nd 3rd Last 3rd 2nd 1st
-3570 1st 2nd 3rd Last 3rd 2nd 1st
-3571 1st 2nd 3rd Last 3rd 2nd 1st
-3572 1st 2nd 3rd Last 3rd 2nd 1st
-3573 1st 2nd 3rd Last 3rd 2nd 1st
-3574 1st 2nd 3rd Last 3rd 2nd 1st
-3575 1st 2nd 3rd Last 3rd 2nd 1st
-3576 1st 2nd 3rd Last 3rd 2nd 1st
-3577 1st 2nd 3rd Last 3rd 2nd 1st
-3578 1st 2nd 3rd Last 3rd 2nd 1st
-3579 1st 2nd 3rd Last 3rd 2nd 1st
-3580 1st 2nd 3rd Last 3rd 2nd 1st
-3581 1st 2nd 3rd Last 3rd 2nd 1st
-3582 1st 2nd 3rd Last 3rd 2nd 1st
-3583 1st 2nd 3rd Last 3rd 2nd 1st
-3584 1st 2nd 3rd Last 3rd 2nd 1st
-3585 1st 2nd 3rd Last 3rd 2nd 1st
-3586 1st 2nd 3rd Last 3rd 2nd 1st
-3587 1st 2nd 3rd Last 3rd 2nd 1st
-3588 1st 2nd 3rd Last 3rd 2nd 1st
-3589 1st 2nd 3rd Last 3rd 2nd 1st
-3590 1st 2nd 3rd Last 3rd 2nd 1st
-3591 1st 2nd 3rd Last 3rd 2nd 1st
-3592 1st 2nd 3rd Last 3rd 2nd 1st
-3593 1st 2nd 3rd Last 3rd 2nd 1st
-3594 1st 2nd 3rd Last 3rd 2nd 1st
-3595 1st 2nd 3rd Last 3rd 2nd 1st
-3596 1st 2nd 3rd Last 3rd 2nd 1st
-3597 1st 2nd 3rd Last 3rd 2nd 1st
-3598 1st 2nd 3rd Last 3rd 2nd 1st
-3599 1st 2nd 3rd Last 3rd 2nd 1st
-3600 1st 2nd 3rd Last 3rd 2nd 1st
-3601 1st 2nd 3rd Last 3rd 2nd 1st
-3602 1st 2nd 3rd Last 3rd 2nd 1st
-3603 1st 2nd 3rd Last 3rd 2nd 1st
-3604 1st 2nd 3rd Last 3rd 2nd 1st
-3605 1st 2nd 3rd Last 3rd 2nd 1st
-3606 1st 2nd 3rd Last 3rd 2nd 1st
-3607 1st 2nd 3rd Last 3rd 2nd 1st
-3608 1st 2nd 3rd Last 3rd 2nd 1st
-3609 1st 2nd 3rd Last 3rd 2nd 1st
-3610 1st 2nd 3rd Last 3rd 2nd 1st
-3611 1st 2nd 3rd Last 3rd 2nd 1st
-3612 1st 2nd 3rd Last 3rd 2nd 1st
-3613 1st 2nd 3rd Last 3rd 2nd 1st
-3614 1st 2nd 3rd Last 3rd 2nd 1st
-3615 1st 2nd 3rd Last 3rd 2nd 1st
-3616 1st 2nd 3rd Last 3rd 2nd 1st
-3617 1st 2nd 3rd Last 3rd 2nd 1st
-3618 1st 2nd 3rd Last 3rd 2nd 1st
-3619 1st 2nd 3rd Last 3rd 2nd 1st
-3620 1st 2nd 3rd Last 3rd 2nd 1st
-3621 1st 2nd 3rd Last 3rd 2nd 1st
-3622 1st 2nd 3rd Last 3rd 2nd 1st
-3623 1st 2nd 3rd Last 3rd 2nd 1st
-3624 1st 2nd 3rd Last 3rd 2nd 1st
-3625 1st 2nd 3rd Last 3rd 2nd 1st
-3626 1st 2nd 3rd Last 3rd 2nd 1st
-3627 1st 2nd 3rd Last 3rd 2nd 1st
-3628 1st 2nd 3rd Last 3rd 2nd 1st
-3629 1st 2nd 3rd Last 3rd 2nd 1st
-3630 1st 2nd 3rd Last 3rd 2nd 1st
-3631 1st 2nd 3rd Last 3rd 2nd 1st
-3632 1st 2nd 3rd Last 3rd 2nd 1st
-3633 1st 2nd 3rd Last 3rd 2nd 1st
-3634 1st 2nd 3rd Last 3rd 2nd 1st
-3635 1st 2nd 3rd Last 3rd 2nd 1st
-3636 1st 2nd 3rd Last 3rd 2nd 1st
-3637 1st 2nd 3rd Last 3rd 2nd 1st
-3638 1st 2nd 3rd Last 3rd 2nd 1st
-3639 1st 2nd 3rd Last 3rd 2nd 1st
-3640 1st 2nd 3rd Last 3rd 2nd 1st
-3641 1st 2nd 3rd Last 3rd 2nd 1st
-3642 1st 2nd 3rd Last 3rd 2nd 1st
-3643 1st 2nd 3rd Last 3rd 2nd 1st
-3644 1st 2nd 3rd Last 3rd 2nd 1st
-3645 1st 2nd 3rd Last 3rd 2nd 1st
-3646 1st 2nd 3rd Last 3rd 2nd 1st
-3647 1st 2nd 3rd Last 3rd 2nd 1st
-3648 1st 2nd 3rd Last 3rd 2nd 1st
-3649 1st 2nd 3rd Last 3rd 2nd 1st
-3650 1st 2nd 3rd Last 3rd 2nd 1st
-3651 1st 2nd 3rd Last 3rd 2nd 1st
-3652 1st 2nd 3rd Last 3rd 2nd 1st
-3653 1st 2nd 3rd Last 3rd 2nd 1st
-3654 1st 2nd 3rd Last 3rd 2nd 1st
-3655 1st 2nd 3rd Last 3rd 2nd 1st
-3656 1st 2nd 3rd Last 3rd 2nd 1st
-3657 1st 2nd 3rd Last 3rd 2nd 1st
-3658 1st 2nd 3rd Last 3rd 2nd 1st
-3659 1st 2nd 3rd Last 3rd 2nd 1st
-3660 1st 2nd 3rd Last 3rd 2nd 1st
-3661 1st 2nd 3rd Last 3rd 2nd 1st
-3662 1st 2nd 3rd Last 3rd 2nd 1st
-3663 1st 2nd 3rd Last 3rd 2nd 1st
-3664 1st 2nd 3rd Last 3rd 2nd 1st
-3665 1st 2nd 3rd Last 3rd 2nd 1st
-3666 1st 2nd 3rd Last 3rd 2nd 1st
-3667 1st 2nd 3rd Last 3rd 2nd 1st
-3668 1st 2nd 3rd Last 3rd 2nd 1st
-3669 1st 2nd 3rd Last 3rd 2nd 1st
-3670 1st 2nd 3rd Last 3rd 2nd 1st
-3671 1st 2nd 3rd Last 3rd 2nd 1st
-3672 1st 2nd 3rd Last 3rd 2nd 1st
-3673 1st 2nd 3rd Last 3rd 2nd 1st
-3674 1st 2nd 3rd Last 3rd 2nd 1st
-3675 1st 2nd 3rd Last 3rd 2nd 1st
-3676 1st 2nd 3rd Last 3rd 2nd 1st
-3677 1st 2nd 3rd Last 3rd 2nd 1st
-3678 1st 2nd 3rd Last 3rd 2nd 1st
-3679 1st 2nd 3rd Last 3rd 2nd 1st
-3680 1st 2nd 3rd Last 3rd 2nd 1st
-3681 1st 2nd 3rd Last 3rd 2nd 1st
-3682 1st 2nd 3rd Last 3rd 2nd 1st
-3683 1st 2nd 3rd Last 3rd 2nd 1st
-3684 1st 2nd 3rd Last 3rd 2nd 1st
-3685 1st 2nd 3rd Last 3rd 2nd 1st
-3686 1st 2nd 3rd Last 3rd 2nd 1st
-3687 1st 2nd 3rd Last 3rd 2nd 1st
-3688 1st 2nd 3rd Last 3rd 2nd 1st
-3689 1st 2nd 3rd Last 3rd 2nd 1st
-3690 1st 2nd 3rd Last 3rd 2nd 1st
-3691 1st 2nd 3rd Last 3rd 2nd 1st
-3692 1st 2nd 3rd Last 3rd 2nd 1st
-3693 1st 2nd 3rd Last 3rd 2nd 1st
-3694 1st 2nd 3rd Last 3rd 2nd 1st
-3695 1st 2nd 3rd Last 3rd 2nd 1st
-3696 1st 2nd 3rd Last 3rd 2nd 1st
-3697 1st 2nd 3rd Last 3rd 2nd 1st
-3698 1st 2nd 3rd Last 3rd 2nd 1st
-3699 1st 2nd 3rd Last 3rd 2nd 1st
-3700 1st 2nd 3rd Last 3rd 2nd 1st
-3701 1st 2nd 3rd Last 3rd 2nd 1st
-3702 1st 2nd 3rd Last 3rd 2nd 1st
-3703 1st 2nd 3rd Last 3rd 2nd 1st
-3704 1st 2nd 3rd Last 3rd 2nd 1st
-3705 1st 2nd 3rd Last 3rd 2nd 1st
-3706 1st 2nd 3rd Last 3rd 2nd 1st
-3707 1st 2nd 3rd Last 3rd 2nd 1st
-3708 1st 2nd 3rd Last 3rd 2nd 1st
-3709 1st 2nd 3rd Last 3rd 2nd 1st
-3710 1st 2nd 3rd Last 3rd 2nd 1st
-3711 1st 2nd 3rd Last 3rd 2nd 1st
-3712 1st 2nd 3rd Last 3rd 2nd 1st
-3713 1st 2nd 3rd Last 3rd 2nd 1st
-3714 1st 2nd 3rd Last 3rd 2nd 1st
-3715 1st 2nd 3rd Last 3rd 2nd 1st
-3716 1st 2nd 3rd Last 3rd 2nd 1st
-3717 1st 2nd 3rd Last 3rd 2nd 1st
-3718 1st 2nd 3rd Last 3rd 2nd 1st
-3719 1st 2nd 3rd Last 3rd 2nd 1st
-3720 1st 2nd 3rd Last 3rd 2nd 1st
-3721 1st 2nd 3rd Last 3rd 2nd 1st
-3722 1st 2nd 3rd Last 3rd 2nd 1st
-3723 1st 2nd 3rd Last 3rd 2nd 1st
-3724 1st 2nd 3rd Last 3rd 2nd 1st
-3725 1st 2nd 3rd Last 3rd 2nd 1st
-3726 1st 2nd 3rd Last 3rd 2nd 1st
-3727 1st 2nd 3rd Last 3rd 2nd 1st
-3728 1st 2nd 3rd Last 3rd 2nd 1st
-3729 1st 2nd 3rd Last 3rd 2nd 1st
-3730 1st 2nd 3rd Last 3rd 2nd 1st
-3731 1st 2nd 3rd Last 3rd 2nd 1st
-3732 1st 2nd 3rd Last 3rd 2nd 1st
-3733 1st 2nd 3rd Last 3rd 2nd 1st
-3734 1st 2nd 3rd Last 3rd 2nd 1st
-3735 1st 2nd 3rd Last 3rd 2nd 1st
-3736 1st 2nd 3rd Last 3rd 2nd 1st
-3737 1st 2nd 3rd Last 3rd 2nd 1st
-3738 1st 2nd 3rd Last 3rd 2nd 1st
-3739 1st 2nd 3rd Last 3rd 2nd 1st
-3740 1st 2nd 3rd Last 3rd 2nd 1st
-3741 1st 2nd 3rd Last 3rd 2nd 1st
-3742 1st 2nd 3rd Last 3rd 2nd 1st
-3743 1st 2nd 3rd Last 3rd 2nd 1st
-3744 1st 2nd 3rd Last 3rd 2nd 1st
-3745 1st 2nd 3rd Last 3rd 2nd 1st
-3746 1st 2nd 3rd Last 3rd 2nd 1st
-3747 1st 2nd 3rd Last 3rd 2nd 1st
-3748 1st 2nd 3rd Last 3rd 2nd 1st
-3749 1st 2nd 3rd Last 3rd 2nd 1st
-3750 1st 2nd 3rd Last 3rd 2nd 1st
-3751 1st 2nd 3rd Last 3rd 2nd 1st
-3752 1st 2nd 3rd Last 3rd 2nd 1st
-3753 1st 2nd 3rd Last 3rd 2nd 1st
-3754 1st 2nd 3rd Last 3rd 2nd 1st
-3755 1st 2nd 3rd Last 3rd 2nd 1st
-3756 1st 2nd 3rd Last 3rd 2nd 1st
-3757 1st 2nd 3rd Last 3rd 2nd 1st
-3758 1st 2nd 3rd Last 3rd 2nd 1st
-3759 1st 2nd 3rd Last 3rd 2nd 1st
-3760 1st 2nd 3rd Last 3rd 2nd 1st
-3761 1st 2nd 3rd Last 3rd 2nd 1st
-3762 1st 2nd 3rd Last 3rd 2nd 1st
-3763 1st 2nd 3rd Last 3rd 2nd 1st
-3764 1st 2nd 3rd Last 3rd 2nd 1st
-3765 1st 2nd 3rd Last 3rd 2nd 1st
-3766 1st 2nd 3rd Last 3rd 2nd 1st
-3767 1st 2nd 3rd Last 3rd 2nd 1st
-3768 1st 2nd 3rd Last 3rd 2nd 1st
-3769 1st 2nd 3rd Last 3rd 2nd 1st
-3770 1st 2nd 3rd Last 3rd 2nd 1st
-3771 1st 2nd 3rd Last 3rd 2nd 1st
-3772 1st 2nd 3rd Last 3rd 2nd 1st
-3773 1st 2nd 3rd Last 3rd 2nd 1st
-3774 1st 2nd 3rd Last 3rd 2nd 1st
-3775 1st 2nd 3rd Last 3rd 2nd 1st
-3776 1st 2nd 3rd Last 3rd 2nd 1st
-3777 1st 2nd 3rd Last 3rd 2nd 1st
-3778 1st 2nd 3rd Last 3rd 2nd 1st
-3779 1st 2nd 3rd Last 3rd 2nd 1st
-3780 1st 2nd 3rd Last 3rd 2nd 1st
-3781 1st 2nd 3rd Last 3rd 2nd 1st
-3782 1st 2nd 3rd Last 3rd 2nd 1st
-3783 1st 2nd 3rd Last 3rd 2nd 1st
-3784 1st 2nd 3rd Last 3rd 2nd 1st
-3785 1st 2nd 3rd Last 3rd 2nd 1st
-3786 1st 2nd 3rd Last 3rd 2nd 1st
-3787 1st 2nd 3rd Last 3rd 2nd 1st
-3788 1st 2nd 3rd Last 3rd 2nd 1st
-3789 1st 2nd 3rd Last 3rd 2nd 1st
-3790 1st 2nd 3rd Last 3rd 2nd 1st
-3791 1st 2nd 3rd Last 3rd 2nd 1st
-3792 1st 2nd 3rd Last 3rd 2nd 1st
-3793 1st 2nd 3rd Last 3rd 2nd 1st
-3794 1st 2nd 3rd Last 3rd 2nd 1st
-3795 1st 2nd 3rd Last 3rd 2nd 1st
-3796 1st 2nd 3rd Last 3rd 2nd 1st
-3797 1st 2nd 3rd Last 3rd 2nd 1st
-3798 1st 2nd 3rd Last 3rd 2nd 1st
-3799 1st 2nd 3rd Last 3rd 2nd 1st
-3800 1st 2nd 3rd Last 3rd 2nd 1st
-3801 1st 2nd 3rd Last 3rd 2nd 1st
-3802 1st 2nd 3rd Last 3rd 2nd 1st
-3803 1st 2nd 3rd Last 3rd 2nd 1st
-3804 1st 2nd 3rd Last 3rd 2nd 1st
-3805 1st 2nd 3rd Last 3rd 2nd 1st
-3806 1st 2nd 3rd Last 3rd 2nd 1st
-3807 1st 2nd 3rd Last 3rd 2nd 1st
-3808 1st 2nd 3rd Last 3rd 2nd 1st
-3809 1st 2nd 3rd Last 3rd 2nd 1st
-3810 1st 2nd 3rd Last 3rd 2nd 1st
-3811 1st 2nd 3rd Last 3rd 2nd 1st
-3812 1st 2nd 3rd Last 3rd 2nd 1st
-3813 1st 2nd 3rd Last 3rd 2nd 1st
-3814 1st 2nd 3rd Last 3rd 2nd 1st
-3815 1st 2nd 3rd Last 3rd 2nd 1st
-3816 1st 2nd 3rd Last 3rd 2nd 1st
-3817 1st 2nd 3rd Last 3rd 2nd 1st
-3818 1st 2nd 3rd Last 3rd 2nd 1st
-3819 1st 2nd 3rd Last 3rd 2nd 1st
-3820 1st 2nd 3rd Last 3rd 2nd 1st
-3821 1st 2nd 3rd Last 3rd 2nd 1st
-3822 1st 2nd 3rd Last 3rd 2nd 1st
-3823 1st 2nd 3rd Last 3rd 2nd 1st
-3824 1st 2nd 3rd Last 3rd 2nd 1st
-3825 1st 2nd 3rd Last 3rd 2nd 1st
-3826 1st 2nd 3rd Last 3rd 2nd 1st
-3827 1st 2nd 3rd Last 3rd 2nd 1st
-3828 1st 2nd 3rd Last 3rd 2nd 1st
-3829 1st 2nd 3rd Last 3rd 2nd 1st
-3830 1st 2nd 3rd Last 3rd 2nd 1st
-3831 1st 2nd 3rd Last 3rd 2nd 1st
-3832 1st 2nd 3rd Last 3rd 2nd 1st
-3833 1st 2nd 3rd Last 3rd 2nd 1st
-3834 1st 2nd 3rd Last 3rd 2nd 1st
-3835 1st 2nd 3rd Last 3rd 2nd 1st
-3836 1st 2nd 3rd Last 3rd 2nd 1st
-3837 1st 2nd 3rd Last 3rd 2nd 1st
-3838 1st 2nd 3rd Last 3rd 2nd 1st
-3839 1st 2nd 3rd Last 3rd 2nd 1st
-3840 1st 2nd 3rd Last 3rd 2nd 1st
-3841 1st 2nd 3rd Last 3rd 2nd 1st
-3842 1st 2nd 3rd Last 3rd 2nd 1st
-3843 1st 2nd 3rd Last 3rd 2nd 1st
-3844 1st 2nd 3rd Last 3rd 2nd 1st
-3845 1st 2nd 3rd Last 3rd 2nd 1st
-3846 1st 2nd 3rd Last 3rd 2nd 1st
-3847 1st 2nd 3rd Last 3rd 2nd 1st
-3848 1st 2nd 3rd Last 3rd 2nd 1st
-3849 1st 2nd 3rd Last 3rd 2nd 1st
-3850 1st 2nd 3rd Last 3rd 2nd 1st
-3851 1st 2nd 3rd Last 3rd 2nd 1st
-3852 1st 2nd 3rd Last 3rd 2nd 1st
-3853 1st 2nd 3rd Last 3rd 2nd 1st
-3854 1st 2nd 3rd Last 3rd 2nd 1st
-3855 1st 2nd 3rd Last 3rd 2nd 1st
-3856 1st 2nd 3rd Last 3rd 2nd 1st
-3857 1st 2nd 3rd Last 3rd 2nd 1st
-3858 1st 2nd 3rd Last 3rd 2nd 1st
-3859 1st 2nd 3rd Last 3rd 2nd 1st
-3860 1st 2nd 3rd Last 3rd 2nd 1st
-3861 1st 2nd 3rd Last 3rd 2nd 1st
-3862 1st 2nd 3rd Last 3rd 2nd 1st
-3863 1st 2nd 3rd Last 3rd 2nd 1st
-3864 1st 2nd 3rd Last 3rd 2nd 1st
-3865 1st 2nd 3rd Last 3rd 2nd 1st
-3866 1st 2nd 3rd Last 3rd 2nd 1st
-3867 1st 2nd 3rd Last 3rd 2nd 1st
-3868 1st 2nd 3rd Last 3rd 2nd 1st
-3869 1st 2nd 3rd Last 3rd 2nd 1st
-3870 1st 2nd 3rd Last 3rd 2nd 1st
-3871 1st 2nd 3rd Last 3rd 2nd 1st
-3872 1st 2nd 3rd Last 3rd 2nd 1st
-3873 1st 2nd 3rd Last 3rd 2nd 1st
-3874 1st 2nd 3rd Last 3rd 2nd 1st
-3875 1st 2nd 3rd Last 3rd 2nd 1st
-3876 1st 2nd 3rd Last 3rd 2nd 1st
-3877 1st 2nd 3rd Last 3rd 2nd 1st
-3878 1st 2nd 3rd Last 3rd 2nd 1st
-3879 1st 2nd 3rd Last 3rd 2nd 1st
-3880 1st 2nd 3rd Last 3rd 2nd 1st
-3881 1st 2nd 3rd Last 3rd 2nd 1st
-3882 1st 2nd 3rd Last 3rd 2nd 1st
-3883 1st 2nd 3rd Last 3rd 2nd 1st
-3884 1st 2nd 3rd Last 3rd 2nd 1st
-3885 1st 2nd 3rd Last 3rd 2nd 1st
-3886 1st 2nd 3rd Last 3rd 2nd 1st
-3887 1st 2nd 3rd Last 3rd 2nd 1st
-3888 1st 2nd 3rd Last 3rd 2nd 1st
-3889 1st 2nd 3rd Last 3rd 2nd 1st
-3890 1st 2nd 3rd Last 3rd 2nd 1st
-3891 1st 2nd 3rd Last 3rd 2nd 1st
-3892 1st 2nd 3rd Last 3rd 2nd 1st
-3893 1st 2nd 3rd Last 3rd 2nd 1st
-3894 1st 2nd 3rd Last 3rd 2nd 1st
-3895 1st 2nd 3rd Last 3rd 2nd 1st
-3896 1st 2nd 3rd Last 3rd 2nd 1st
-3897 1st 2nd 3rd Last 3rd 2nd 1st
-3898 1st 2nd 3rd Last 3rd 2nd 1st
-3899 1st 2nd 3rd Last 3rd 2nd 1st
-3900 1st 2nd 3rd Last 3rd 2nd 1st
-3901 1st 2nd 3rd Last 3rd 2nd 1st
-3902 1st 2nd 3rd Last 3rd 2nd 1st
-3903 1st 2nd 3rd Last 3rd 2nd 1st
-3904 1st 2nd 3rd Last 3rd 2nd 1st
-3905 1st 2nd 3rd Last 3rd 2nd 1st
-3906 1st 2nd 3rd Last 3rd 2nd 1st
-3907 1st 2nd 3rd Last 3rd 2nd 1st
-3908 1st 2nd 3rd Last 3rd 2nd 1st
-3909 1st 2nd 3rd Last 3rd 2nd 1st
-3910 1st 2nd 3rd Last 3rd 2nd 1st
-3911 1st 2nd 3rd Last 3rd 2nd 1st
-3912 1st 2nd 3rd Last 3rd 2nd 1st
-3913 1st 2nd 3rd Last 3rd 2nd 1st
-3914 1st 2nd 3rd Last 3rd 2nd 1st
-3915 1st 2nd 3rd Last 3rd 2nd 1st
-3916 1st 2nd 3rd Last 3rd 2nd 1st
-3917 1st 2nd 3rd Last 3rd 2nd 1st
-3918 1st 2nd 3rd Last 3rd 2nd 1st
-3919 1st 2nd 3rd Last 3rd 2nd 1st
-3920 1st 2nd 3rd Last 3rd 2nd 1st
-3921 1st 2nd 3rd Last 3rd 2nd 1st
-3922 1st 2nd 3rd Last 3rd 2nd 1st
-3923 1st 2nd 3rd Last 3rd 2nd 1st
-3924 1st 2nd 3rd Last 3rd 2nd 1st
-3925 1st 2nd 3rd Last 3rd 2nd 1st
-3926 1st 2nd 3rd Last 3rd 2nd 1st
-3927 1st 2nd 3rd Last 3rd 2nd 1st
-3928 1st 2nd 3rd Last 3rd 2nd 1st
-3929 1st 2nd 3rd Last 3rd 2nd 1st
-3930 1st 2nd 3rd Last 3rd 2nd 1st
-3931 1st 2nd 3rd Last 3rd 2nd 1st
-3932 1st 2nd 3rd Last 3rd 2nd 1st
-3933 1st 2nd 3rd Last 3rd 2nd 1st
-3934 1st 2nd 3rd Last 3rd 2nd 1st
-3935 1st 2nd 3rd Last 3rd 2nd 1st
-3936 1st 2nd 3rd Last 3rd 2nd 1st
-3937 1st 2nd 3rd Last 3rd 2nd 1st
-3938 1st 2nd 3rd Last 3rd 2nd 1st
-3939 1st 2nd 3rd Last 3rd 2nd 1st
-3940 1st 2nd 3rd Last 3rd 2nd 1st
-3941 1st 2nd 3rd Last 3rd 2nd 1st
-3942 1st 2nd 3rd Last 3rd 2nd 1st
-3943 1st 2nd 3rd Last 3rd 2nd 1st
-3944 1st 2nd 3rd Last 3rd 2nd 1st
-3945 1st 2nd 3rd Last 3rd 2nd 1st
-3946 1st 2nd 3rd Last 3rd 2nd 1st
-3947 1st 2nd 3rd Last 3rd 2nd 1st
-3948 1st 2nd 3rd Last 3rd 2nd 1st
-3949 1st 2nd 3rd Last 3rd 2nd 1st
-3950 1st 2nd 3rd Last 3rd 2nd 1st
-3951 1st 2nd 3rd Last 3rd 2nd 1st
-3952 1st 2nd 3rd Last 3rd 2nd 1st
-3953 1st 2nd 3rd Last 3rd 2nd 1st
-3954 1st 2nd 3rd Last 3rd 2nd 1st
-3955 1st 2nd 3rd Last 3rd 2nd 1st
-3956 1st 2nd 3rd Last 3rd 2nd 1st
-3957 1st 2nd 3rd Last 3rd 2nd 1st
-3958 1st 2nd 3rd Last 3rd 2nd 1st
-3959 1st 2nd 3rd Last 3rd 2nd 1st
-3960 1st 2nd 3rd Last 3rd 2nd 1st
-3961 1st 2nd 3rd Last 3rd 2nd 1st
-3962 1st 2nd 3rd Last 3rd 2nd 1st
-3963 1st 2nd 3rd Last 3rd 2nd 1st
-3964 1st 2nd 3rd Last 3rd 2nd 1st
-3965 1st 2nd 3rd Last 3rd 2nd 1st
-3966 1st 2nd 3rd Last 3rd 2nd 1st
-3967 1st 2nd 3rd Last 3rd 2nd 1st
-3968 1st 2nd 3rd Last 3rd 2nd 1st
-3969 1st 2nd 3rd Last 3rd 2nd 1st
-3970 1st 2nd 3rd Last 3rd 2nd 1st
-3971 1st 2nd 3rd Last 3rd 2nd 1st
-3972 1st 2nd 3rd Last 3rd 2nd 1st
-3973 1st 2nd 3rd Last 3rd 2nd 1st
-3974 1st 2nd 3rd Last 3rd 2nd 1st
-3975 1st 2nd 3rd Last 3rd 2nd 1st
-3976 1st 2nd 3rd Last 3rd 2nd 1st
-3977 1st 2nd 3rd Last 3rd 2nd 1st
-3978 1st 2nd 3rd Last 3rd 2nd 1st
-3979 1st 2nd 3rd Last 3rd 2nd 1st
-3980 1st 2nd 3rd Last 3rd 2nd 1st
-3981 1st 2nd 3rd Last 3rd 2nd 1st
-3982 1st 2nd 3rd Last 3rd 2nd 1st
-3983 1st 2nd 3rd Last 3rd 2nd 1st
-3984 1st 2nd 3rd Last 3rd 2nd 1st
-3985 1st 2nd 3rd Last 3rd 2nd 1st
-3986 1st 2nd 3rd Last 3rd 2nd 1st
-3987 1st 2nd 3rd Last 3rd 2nd 1st
-3988 1st 2nd 3rd Last 3rd 2nd 1st
-3989 1st 2nd 3rd Last 3rd 2nd 1st
-3990 1st 2nd 3rd Last 3rd 2nd 1st
-3991 1st 2nd 3rd Last 3rd 2nd 1st
-3992 1st 2nd 3rd Last 3rd 2nd 1st
-3993 1st 2nd 3rd Last 3rd 2nd 1st
-3994 1st 2nd 3rd Last 3rd 2nd 1st
-3995 1st 2nd 3rd Last 3rd 2nd 1st
-3996 1st 2nd 3rd Last 3rd 2nd 1st
-3997 1st 2nd 3rd Last 3rd 2nd 1st
-3998 1st 2nd 3rd Last 3rd 2nd 1st
-3999 1st 2nd 3rd Last 3rd 2nd 1st
-4000 1st 2nd 3rd Last 3rd 2nd 1st
-4001 1st 2nd 3rd Last 3rd 2nd 1st
-4002 1st 2nd 3rd Last 3rd 2nd 1st
-4003 1st 2nd 3rd Last 3rd 2nd 1st
-4004 1st 2nd 3rd Last 3rd 2nd 1st
-4005 1st 2nd 3rd Last 3rd 2nd 1st
-4006 1st 2nd 3rd Last 3rd 2nd 1st
-4007 1st 2nd 3rd Last 3rd 2nd 1st
-4008 1st 2nd 3rd Last 3rd 2nd 1st
-4009 1st 2nd 3rd Last 3rd 2nd 1st
-4010 1st 2nd 3rd Last 3rd 2nd 1st
-4011 1st 2nd 3rd Last 3rd 2nd 1st
-4012 1st 2nd 3rd Last 3rd 2nd 1st
-4013 1st 2nd 3rd Last 3rd 2nd 1st
-4014 1st 2nd 3rd Last 3rd 2nd 1st
-4015 1st 2nd 3rd Last 3rd 2nd 1st
-4016 1st 2nd 3rd Last 3rd 2nd 1st
-4017 1st 2nd 3rd Last 3rd 2nd 1st
-4018 1st 2nd 3rd Last 3rd 2nd 1st
-4019 1st 2nd 3rd Last 3rd 2nd 1st
-4020 1st 2nd 3rd Last 3rd 2nd 1st
-4021 1st 2nd 3rd Last 3rd 2nd 1st
-4022 1st 2nd 3rd Last 3rd 2nd 1st
-4023 1st 2nd 3rd Last 3rd 2nd 1st
-4024 1st 2nd 3rd Last 3rd 2nd 1st
-4025 1st 2nd 3rd Last 3rd 2nd 1st
-4026 1st 2nd 3rd Last 3rd 2nd 1st
-4027 1st 2nd 3rd Last 3rd 2nd 1st
-4028 1st 2nd 3rd Last 3rd 2nd 1st
-4029 1st 2nd 3rd Last 3rd 2nd 1st
-4030 1st 2nd 3rd Last 3rd 2nd 1st
-4031 1st 2nd 3rd Last 3rd 2nd 1st
-4032 1st 2nd 3rd Last 3rd 2nd 1st
-4033 1st 2nd 3rd Last 3rd 2nd 1st
-4034 1st 2nd 3rd Last 3rd 2nd 1st
-4035 1st 2nd 3rd Last 3rd 2nd 1st
-4036 1st 2nd 3rd Last 3rd 2nd 1st
-4037 1st 2nd 3rd Last 3rd 2nd 1st
-4038 1st 2nd 3rd Last 3rd 2nd 1st
-4039 1st 2nd 3rd Last 3rd 2nd 1st
-4040 1st 2nd 3rd Last 3rd 2nd 1st
-4041 1st 2nd 3rd Last 3rd 2nd 1st
-4042 1st 2nd 3rd Last 3rd 2nd 1st
-4043 1st 2nd 3rd Last 3rd 2nd 1st
-4044 1st 2nd 3rd Last 3rd 2nd 1st
-4045 1st 2nd 3rd Last 3rd 2nd 1st
-4046 1st 2nd 3rd Last 3rd 2nd 1st
-4047 1st 2nd 3rd Last 3rd 2nd 1st
-4048 1st 2nd 3rd Last 3rd 2nd 1st
-4049 1st 2nd 3rd Last 3rd 2nd 1st
-4050 1st 2nd 3rd Last 3rd 2nd 1st
-4051 1st 2nd 3rd Last 3rd 2nd 1st
-4052 1st 2nd 3rd Last 3rd 2nd 1st
-4053 1st 2nd 3rd Last 3rd 2nd 1st
-4054 1st 2nd 3rd Last 3rd 2nd 1st
-4055 1st 2nd 3rd Last 3rd 2nd 1st
-4056 1st 2nd 3rd Last 3rd 2nd 1st
-4057 1st 2nd 3rd Last 3rd 2nd 1st
-4058 1st 2nd 3rd Last 3rd 2nd 1st
-4059 1st 2nd 3rd Last 3rd 2nd 1st
-4060 1st 2nd 3rd Last 3rd 2nd 1st
-4061 1st 2nd 3rd Last 3rd 2nd 1st
-4062 1st 2nd 3rd Last 3rd 2nd 1st
-4063 1st 2nd 3rd Last 3rd 2nd 1st
-4064 1st 2nd 3rd Last 3rd 2nd 1st
-4065 1st 2nd 3rd Last 3rd 2nd 1st
-4066 1st 2nd 3rd Last 3rd 2nd 1st
-4067 1st 2nd 3rd Last 3rd 2nd 1st
-4068 1st 2nd 3rd Last 3rd 2nd 1st
-4069 1st 2nd 3rd Last 3rd 2nd 1st
-4070 1st 2nd 3rd Last 3rd 2nd 1st
-4071 1st 2nd 3rd Last 3rd 2nd 1st
-4072 1st 2nd 3rd Last 3rd 2nd 1st
-4073 1st 2nd 3rd Last 3rd 2nd 1st
-4074 1st 2nd 3rd Last 3rd 2nd 1st
-4075 1st 2nd 3rd Last 3rd 2nd 1st
-4076 1st 2nd 3rd Last 3rd 2nd 1st
-4077 1st 2nd 3rd Last 3rd 2nd 1st
-4078 1st 2nd 3rd Last 3rd 2nd 1st
-4079 1st 2nd 3rd Last 3rd 2nd 1st
-4080 1st 2nd 3rd Last 3rd 2nd 1st
-4081 1st 2nd 3rd Last 3rd 2nd 1st
-4082 1st 2nd 3rd Last 3rd 2nd 1st
-4083 1st 2nd 3rd Last 3rd 2nd 1st
-4084 1st 2nd 3rd Last 3rd 2nd 1st
-4085 1st 2nd 3rd Last 3rd 2nd 1st
-4086 1st 2nd 3rd Last 3rd 2nd 1st
-4087 1st 2nd 3rd Last 3rd 2nd 1st
-4088 1st 2nd 3rd Last 3rd 2nd 1st
-4089 1st 2nd 3rd Last 3rd 2nd 1st
-4090 1st 2nd 3rd Last 3rd 2nd 1st
-4091 1st 2nd 3rd Last 3rd 2nd 1st
-4092 1st 2nd 3rd Last 3rd 2nd 1st
-4093 1st 2nd 3rd Last 3rd 2nd 1st
-4094 1st 2nd 3rd Last 3rd 2nd 1st
-4095 1st 2nd 3rd Last 3rd 2nd 1st
-4096 1st 2nd 3rd Last 3rd 2nd 1st
-4097 1st 2nd 3rd Last 3rd 2nd 1st
-4098 1st 2nd 3rd Last 3rd 2nd 1st
-4099 1st 2nd 3rd Last 3rd 2nd 1st
-4100 1st 2nd 3rd Last 3rd 2nd 1st
-4101 1st 2nd 3rd Last 3rd 2nd 1st
-4102 1st 2nd 3rd Last 3rd 2nd 1st
-4103 1st 2nd 3rd Last 3rd 2nd 1st
-4104 1st 2nd 3rd Last 3rd 2nd 1st
-4105 1st 2nd 3rd Last 3rd 2nd 1st
-4106 1st 2nd 3rd Last 3rd 2nd 1st
-4107 1st 2nd 3rd Last 3rd 2nd 1st
-4108 1st 2nd 3rd Last 3rd 2nd 1st
-4109 1st 2nd 3rd Last 3rd 2nd 1st
-4110 1st 2nd 3rd Last 3rd 2nd 1st
-4111 1st 2nd 3rd Last 3rd 2nd 1st
-4112 1st 2nd 3rd Last 3rd 2nd 1st
-4113 1st 2nd 3rd Last 3rd 2nd 1st
-4114 1st 2nd 3rd Last 3rd 2nd 1st
-4115 1st 2nd 3rd Last 3rd 2nd 1st
-4116 1st 2nd 3rd Last 3rd 2nd 1st
-4117 1st 2nd 3rd Last 3rd 2nd 1st
-4118 1st 2nd 3rd Last 3rd 2nd 1st
-4119 1st 2nd 3rd Last 3rd 2nd 1st
-4120 1st 2nd 3rd Last 3rd 2nd 1st
-4121 1st 2nd 3rd Last 3rd 2nd 1st
-4122 1st 2nd 3rd Last 3rd 2nd 1st
-4123 1st 2nd 3rd Last 3rd 2nd 1st
-4124 1st 2nd 3rd Last 3rd 2nd 1st
-4125 1st 2nd 3rd Last 3rd 2nd 1st
-4126 1st 2nd 3rd Last 3rd 2nd 1st
-4127 1st 2nd 3rd Last 3rd 2nd 1st
-4128 1st 2nd 3rd Last 3rd 2nd 1st
-4129 1st 2nd 3rd Last 3rd 2nd 1st
-4130 1st 2nd 3rd Last 3rd 2nd 1st
-4131 1st 2nd 3rd Last 3rd 2nd 1st
-4132 1st 2nd 3rd Last 3rd 2nd 1st
-4133 1st 2nd 3rd Last 3rd 2nd 1st
-4134 1st 2nd 3rd Last 3rd 2nd 1st
-4135 1st 2nd 3rd Last 3rd 2nd 1st
-4136 1st 2nd 3rd Last 3rd 2nd 1st
-4137 1st 2nd 3rd Last 3rd 2nd 1st
-4138 1st 2nd 3rd Last 3rd 2nd 1st
-4139 1st 2nd 3rd Last 3rd 2nd 1st
-4140 1st 2nd 3rd Last 3rd 2nd 1st
-4141 1st 2nd 3rd Last 3rd 2nd 1st
-4142 1st 2nd 3rd Last 3rd 2nd 1st
-4143 1st 2nd 3rd Last 3rd 2nd 1st
-4144 1st 2nd 3rd Last 3rd 2nd 1st
-4145 1st 2nd 3rd Last 3rd 2nd 1st
-4146 1st 2nd 3rd Last 3rd 2nd 1st
-4147 1st 2nd 3rd Last 3rd 2nd 1st
-4148 1st 2nd 3rd Last 3rd 2nd 1st
-4149 1st 2nd 3rd Last 3rd 2nd 1st
-4150 1st 2nd 3rd Last 3rd 2nd 1st
-4151 1st 2nd 3rd Last 3rd 2nd 1st
-4152 1st 2nd 3rd Last 3rd 2nd 1st
-4153 1st 2nd 3rd Last 3rd 2nd 1st
-4154 1st 2nd 3rd Last 3rd 2nd 1st
-4155 1st 2nd 3rd Last 3rd 2nd 1st
-4156 1st 2nd 3rd Last 3rd 2nd 1st
-4157 1st 2nd 3rd Last 3rd 2nd 1st
-4158 1st 2nd 3rd Last 3rd 2nd 1st
-4159 1st 2nd 3rd Last 3rd 2nd 1st
-4160 1st 2nd 3rd Last 3rd 2nd 1st
-4161 1st 2nd 3rd Last 3rd 2nd 1st
-4162 1st 2nd 3rd Last 3rd 2nd 1st
-4163 1st 2nd 3rd Last 3rd 2nd 1st
-4164 1st 2nd 3rd Last 3rd 2nd 1st
-4165 1st 2nd 3rd Last 3rd 2nd 1st
-4166 1st 2nd 3rd Last 3rd 2nd 1st
-4167 1st 2nd 3rd Last 3rd 2nd 1st
-4168 1st 2nd 3rd Last 3rd 2nd 1st
-4169 1st 2nd 3rd Last 3rd 2nd 1st
-4170 1st 2nd 3rd Last 3rd 2nd 1st
-4171 1st 2nd 3rd Last 3rd 2nd 1st
-4172 1st 2nd 3rd Last 3rd 2nd 1st
-4173 1st 2nd 3rd Last 3rd 2nd 1st
-4174 1st 2nd 3rd Last 3rd 2nd 1st
-4175 1st 2nd 3rd Last 3rd 2nd 1st
-4176 1st 2nd 3rd Last 3rd 2nd 1st
-4177 1st 2nd 3rd Last 3rd 2nd 1st
-4178 1st 2nd 3rd Last 3rd 2nd 1st
-4179 1st 2nd 3rd Last 3rd 2nd 1st
-4180 1st 2nd 3rd Last 3rd 2nd 1st
-4181 1st 2nd 3rd Last 3rd 2nd 1st
-4182 1st 2nd 3rd Last 3rd 2nd 1st
-4183 1st 2nd 3rd Last 3rd 2nd 1st
-4184 1st 2nd 3rd Last 3rd 2nd 1st
-4185 1st 2nd 3rd Last 3rd 2nd 1st
-4186 1st 2nd 3rd Last 3rd 2nd 1st
-4187 1st 2nd 3rd Last 3rd 2nd 1st
-4188 1st 2nd 3rd Last 3rd 2nd 1st
-4189 1st 2nd 3rd Last 3rd 2nd 1st
-4190 1st 2nd 3rd Last 3rd 2nd 1st
-4191 1st 2nd 3rd Last 3rd 2nd 1st
-4192 1st 2nd 3rd Last 3rd 2nd 1st
-4193 1st 2nd 3rd Last 3rd 2nd 1st
-4194 1st 2nd 3rd Last 3rd 2nd 1st
-4195 1st 2nd 3rd Last 3rd 2nd 1st
-4196 1st 2nd 3rd Last 3rd 2nd 1st
-4197 1st 2nd 3rd Last 3rd 2nd 1st
-4198 1st 2nd 3rd Last 3rd 2nd 1st
-4199 1st 2nd 3rd Last 3rd 2nd 1st
-4200 1st 2nd 3rd Last 3rd 2nd 1st
-4201 1st 2nd 3rd Last 3rd 2nd 1st
-4202 1st 2nd 3rd Last 3rd 2nd 1st
-4203 1st 2nd 3rd Last 3rd 2nd 1st
-4204 1st 2nd 3rd Last 3rd 2nd 1st
-4205 1st 2nd 3rd Last 3rd 2nd 1st
-4206 1st 2nd 3rd Last 3rd 2nd 1st
-4207 1st 2nd 3rd Last 3rd 2nd 1st
-4208 1st 2nd 3rd Last 3rd 2nd 1st
-4209 1st 2nd 3rd Last 3rd 2nd 1st
-4210 1st 2nd 3rd Last 3rd 2nd 1st
-4211 1st 2nd 3rd Last 3rd 2nd 1st
-4212 1st 2nd 3rd Last 3rd 2nd 1st
-4213 1st 2nd 3rd Last 3rd 2nd 1st
-4214 1st 2nd 3rd Last 3rd 2nd 1st
-4215 1st 2nd 3rd Last 3rd 2nd 1st
-4216 1st 2nd 3rd Last 3rd 2nd 1st
-4217 1st 2nd 3rd Last 3rd 2nd 1st
-4218 1st 2nd 3rd Last 3rd 2nd 1st
-4219 1st 2nd 3rd Last 3rd 2nd 1st
-4220 1st 2nd 3rd Last 3rd 2nd 1st
-4221 1st 2nd 3rd Last 3rd 2nd 1st
-4222 1st 2nd 3rd Last 3rd 2nd 1st
-4223 1st 2nd 3rd Last 3rd 2nd 1st
-4224 1st 2nd 3rd Last 3rd 2nd 1st
-4225 1st 2nd 3rd Last 3rd 2nd 1st
-4226 1st 2nd 3rd Last 3rd 2nd 1st
-4227 1st 2nd 3rd Last 3rd 2nd 1st
-4228 1st 2nd 3rd Last 3rd 2nd 1st
-4229 1st 2nd 3rd Last 3rd 2nd 1st
-4230 1st 2nd 3rd Last 3rd 2nd 1st
-4231 1st 2nd 3rd Last 3rd 2nd 1st
-4232 1st 2nd 3rd Last 3rd 2nd 1st
-4233 1st 2nd 3rd Last 3rd 2nd 1st
-4234 1st 2nd 3rd Last 3rd 2nd 1st
-4235 1st 2nd 3rd Last 3rd 2nd 1st
-4236 1st 2nd 3rd Last 3rd 2nd 1st
-4237 1st 2nd 3rd Last 3rd 2nd 1st
-4238 1st 2nd 3rd Last 3rd 2nd 1st
-4239 1st 2nd 3rd Last 3rd 2nd 1st
-4240 1st 2nd 3rd Last 3rd 2nd 1st
-4241 1st 2nd 3rd Last 3rd 2nd 1st
-4242 1st 2nd 3rd Last 3rd 2nd 1st
-4243 1st 2nd 3rd Last 3rd 2nd 1st
-4244 1st 2nd 3rd Last 3rd 2nd 1st
-4245 1st 2nd 3rd Last 3rd 2nd 1st
-4246 1st 2nd 3rd Last 3rd 2nd 1st
-4247 1st 2nd 3rd Last 3rd 2nd 1st
-4248 1st 2nd 3rd Last 3rd 2nd 1st
-4249 1st 2nd 3rd Last 3rd 2nd 1st
-4250 1st 2nd 3rd Last 3rd 2nd 1st
-4251 1st 2nd 3rd Last 3rd 2nd 1st
-4252 1st 2nd 3rd Last 3rd 2nd 1st
-4253 1st 2nd 3rd Last 3rd 2nd 1st
-4254 1st 2nd 3rd Last 3rd 2nd 1st
-4255 1st 2nd 3rd Last 3rd 2nd 1st
-4256 1st 2nd 3rd Last 3rd 2nd 1st
-4257 1st 2nd 3rd Last 3rd 2nd 1st
-4258 1st 2nd 3rd Last 3rd 2nd 1st
-4259 1st 2nd 3rd Last 3rd 2nd 1st
-4260 1st 2nd 3rd Last 3rd 2nd 1st
-4261 1st 2nd 3rd Last 3rd 2nd 1st
-4262 1st 2nd 3rd Last 3rd 2nd 1st
-4263 1st 2nd 3rd Last 3rd 2nd 1st
-4264 1st 2nd 3rd Last 3rd 2nd 1st
-4265 1st 2nd 3rd Last 3rd 2nd 1st
-4266 1st 2nd 3rd Last 3rd 2nd 1st
-4267 1st 2nd 3rd Last 3rd 2nd 1st
-4268 1st 2nd 3rd Last 3rd 2nd 1st
-4269 1st 2nd 3rd Last 3rd 2nd 1st
-4270 1st 2nd 3rd Last 3rd 2nd 1st
-4271 1st 2nd 3rd Last 3rd 2nd 1st
-4272 1st 2nd 3rd Last 3rd 2nd 1st
-4273 1st 2nd 3rd Last 3rd 2nd 1st
-4274 1st 2nd 3rd Last 3rd 2nd 1st
-4275 1st 2nd 3rd Last 3rd 2nd 1st
-4276 1st 2nd 3rd Last 3rd 2nd 1st
-4277 1st 2nd 3rd Last 3rd 2nd 1st
-4278 1st 2nd 3rd Last 3rd 2nd 1st
-4279 1st 2nd 3rd Last 3rd 2nd 1st
-4280 1st 2nd 3rd Last 3rd 2nd 1st
-4281 1st 2nd 3rd Last 3rd 2nd 1st
-4282 1st 2nd 3rd Last 3rd 2nd 1st
-4283 1st 2nd 3rd Last 3rd 2nd 1st
-4284 1st 2nd 3rd Last 3rd 2nd 1st
-4285 1st 2nd 3rd Last 3rd 2nd 1st
-4286 1st 2nd 3rd Last 3rd 2nd 1st
-4287 1st 2nd 3rd Last 3rd 2nd 1st
-4288 1st 2nd 3rd Last 3rd 2nd 1st
-4289 1st 2nd 3rd Last 3rd 2nd 1st
-4290 1st 2nd 3rd Last 3rd 2nd 1st
-4291 1st 2nd 3rd Last 3rd 2nd 1st
-4292 1st 2nd 3rd Last 3rd 2nd 1st
-4293 1st 2nd 3rd Last 3rd 2nd 1st
-4294 1st 2nd 3rd Last 3rd 2nd 1st
-4295 1st 2nd 3rd Last 3rd 2nd 1st
-4296 1st 2nd 3rd Last 3rd 2nd 1st
-4297 1st 2nd 3rd Last 3rd 2nd 1st
-4298 1st 2nd 3rd Last 3rd 2nd 1st
-4299 1st 2nd 3rd Last 3rd 2nd 1st
-4300 1st 2nd 3rd Last 3rd 2nd 1st
-4301 1st 2nd 3rd Last 3rd 2nd 1st
-4302 1st 2nd 3rd Last 3rd 2nd 1st
-4303 1st 2nd 3rd Last 3rd 2nd 1st
-4304 1st 2nd 3rd Last 3rd 2nd 1st
-4305 1st 2nd 3rd Last 3rd 2nd 1st
-4306 1st 2nd 3rd Last 3rd 2nd 1st
-4307 1st 2nd 3rd Last 3rd 2nd 1st
-4308 1st 2nd 3rd Last 3rd 2nd 1st
-4309 1st 2nd 3rd Last 3rd 2nd 1st
-4310 1st 2nd 3rd Last 3rd 2nd 1st
-4311 1st 2nd 3rd Last 3rd 2nd 1st
-4312 1st 2nd 3rd Last 3rd 2nd 1st
-4313 1st 2nd 3rd Last 3rd 2nd 1st
-4314 1st 2nd 3rd Last 3rd 2nd 1st
-4315 1st 2nd 3rd Last 3rd 2nd 1st
-4316 1st 2nd 3rd Last 3rd 2nd 1st
-4317 1st 2nd 3rd Last 3rd 2nd 1st
-4318 1st 2nd 3rd Last 3rd 2nd 1st
-4319 1st 2nd 3rd Last 3rd 2nd 1st
-4320 1st 2nd 3rd Last 3rd 2nd 1st
-4321 1st 2nd 3rd Last 3rd 2nd 1st
-4322 1st 2nd 3rd Last 3rd 2nd 1st
-4323 1st 2nd 3rd Last 3rd 2nd 1st
-4324 1st 2nd 3rd Last 3rd 2nd 1st
-4325 1st 2nd 3rd Last 3rd 2nd 1st
-4326 1st 2nd 3rd Last 3rd 2nd 1st
-4327 1st 2nd 3rd Last 3rd 2nd 1st
-4328 1st 2nd 3rd Last 3rd 2nd 1st
-4329 1st 2nd 3rd Last 3rd 2nd 1st
-4330 1st 2nd 3rd Last 3rd 2nd 1st
-4331 1st 2nd 3rd Last 3rd 2nd 1st
-4332 1st 2nd 3rd Last 3rd 2nd 1st
-4333 1st 2nd 3rd Last 3rd 2nd 1st
-4334 1st 2nd 3rd Last 3rd 2nd 1st
-4335 1st 2nd 3rd Last 3rd 2nd 1st
-4336 1st 2nd 3rd Last 3rd 2nd 1st
-4337 1st 2nd 3rd Last 3rd 2nd 1st
-4338 1st 2nd 3rd Last 3rd 2nd 1st
-4339 1st 2nd 3rd Last 3rd 2nd 1st
-4340 1st 2nd 3rd Last 3rd 2nd 1st
-4341 1st 2nd 3rd Last 3rd 2nd 1st
-4342 1st 2nd 3rd Last 3rd 2nd 1st
-4343 1st 2nd 3rd Last 3rd 2nd 1st
-4344 1st 2nd 3rd Last 3rd 2nd 1st
-4345 1st 2nd 3rd Last 3rd 2nd 1st
-4346 1st 2nd 3rd Last 3rd 2nd 1st
-4347 1st 2nd 3rd Last 3rd 2nd 1st
-4348 1st 2nd 3rd Last 3rd 2nd 1st
-4349 1st 2nd 3rd Last 3rd 2nd 1st
-4350 1st 2nd 3rd Last 3rd 2nd 1st
-4351 1st 2nd 3rd Last 3rd 2nd 1st
-4352 1st 2nd 3rd Last 3rd 2nd 1st
-4353 1st 2nd 3rd Last 3rd 2nd 1st
-4354 1st 2nd 3rd Last 3rd 2nd 1st
-4355 1st 2nd 3rd Last 3rd 2nd 1st
-4356 1st 2nd 3rd Last 3rd 2nd 1st
-4357 1st 2nd 3rd Last 3rd 2nd 1st
-4358 1st 2nd 3rd Last 3rd 2nd 1st
-4359 1st 2nd 3rd Last 3rd 2nd 1st
-4360 1st 2nd 3rd Last 3rd 2nd 1st
-4361 1st 2nd 3rd Last 3rd 2nd 1st
-4362 1st 2nd 3rd Last 3rd 2nd 1st
-4363 1st 2nd 3rd Last 3rd 2nd 1st
-4364 1st 2nd 3rd Last 3rd 2nd 1st
-4365 1st 2nd 3rd Last 3rd 2nd 1st
-4366 1st 2nd 3rd Last 3rd 2nd 1st
-4367 1st 2nd 3rd Last 3rd 2nd 1st
-4368 1st 2nd 3rd Last 3rd 2nd 1st
-4369 1st 2nd 3rd Last 3rd 2nd 1st
-4370 1st 2nd 3rd Last 3rd 2nd 1st
-4371 1st 2nd 3rd Last 3rd 2nd 1st
-4372 1st 2nd 3rd Last 3rd 2nd 1st
-4373 1st 2nd 3rd Last 3rd 2nd 1st
-4374 1st 2nd 3rd Last 3rd 2nd 1st
-4375 1st 2nd 3rd Last 3rd 2nd 1st
-4376 1st 2nd 3rd Last 3rd 2nd 1st
-4377 1st 2nd 3rd Last 3rd 2nd 1st
-4378 1st 2nd 3rd Last 3rd 2nd 1st
-4379 1st 2nd 3rd Last 3rd 2nd 1st
-4380 1st 2nd 3rd Last 3rd 2nd 1st
-4381 1st 2nd 3rd Last 3rd 2nd 1st
-4382 1st 2nd 3rd Last 3rd 2nd 1st
-4383 1st 2nd 3rd Last 3rd 2nd 1st
-4384 1st 2nd 3rd Last 3rd 2nd 1st
-4385 1st 2nd 3rd Last 3rd 2nd 1st
-4386 1st 2nd 3rd Last 3rd 2nd 1st
-4387 1st 2nd 3rd Last 3rd 2nd 1st
-4388 1st 2nd 3rd Last 3rd 2nd 1st
-4389 1st 2nd 3rd Last 3rd 2nd 1st
-4390 1st 2nd 3rd Last 3rd 2nd 1st
-4391 1st 2nd 3rd Last 3rd 2nd 1st
-4392 1st 2nd 3rd Last 3rd 2nd 1st
-4393 1st 2nd 3rd Last 3rd 2nd 1st
-4394 1st 2nd 3rd Last 3rd 2nd 1st
-4395 1st 2nd 3rd Last 3rd 2nd 1st
-4396 1st 2nd 3rd Last 3rd 2nd 1st
-4397 1st 2nd 3rd Last 3rd 2nd 1st
-4398 1st 2nd 3rd Last 3rd 2nd 1st
-4399 1st 2nd 3rd Last 3rd 2nd 1st
-4400 1st 2nd 3rd Last 3rd 2nd 1st
-4401 1st 2nd 3rd Last 3rd 2nd 1st
-4402 1st 2nd 3rd Last 3rd 2nd 1st
-4403 1st 2nd 3rd Last 3rd 2nd 1st
-4404 1st 2nd 3rd Last 3rd 2nd 1st
-4405 1st 2nd 3rd Last 3rd 2nd 1st
-4406 1st 2nd 3rd Last 3rd 2nd 1st
-4407 1st 2nd 3rd Last 3rd 2nd 1st
-4408 1st 2nd 3rd Last 3rd 2nd 1st
-4409 1st 2nd 3rd Last 3rd 2nd 1st
-4410 1st 2nd 3rd Last 3rd 2nd 1st
-4411 1st 2nd 3rd Last 3rd 2nd 1st
-4412 1st 2nd 3rd Last 3rd 2nd 1st
-4413 1st 2nd 3rd Last 3rd 2nd 1st
-4414 1st 2nd 3rd Last 3rd 2nd 1st
-4415 1st 2nd 3rd Last 3rd 2nd 1st
-4416 1st 2nd 3rd Last 3rd 2nd 1st
-4417 1st 2nd 3rd Last 3rd 2nd 1st
-4418 1st 2nd 3rd Last 3rd 2nd 1st
-4419 1st 2nd 3rd Last 3rd 2nd 1st
-4420 1st 2nd 3rd Last 3rd 2nd 1st
-4421 1st 2nd 3rd Last 3rd 2nd 1st
-4422 1st 2nd 3rd Last 3rd 2nd 1st
-4423 1st 2nd 3rd Last 3rd 2nd 1st
-4424 1st 2nd 3rd Last 3rd 2nd 1st
-4425 1st 2nd 3rd Last 3rd 2nd 1st
-4426 1st 2nd 3rd Last 3rd 2nd 1st
-4427 1st 2nd 3rd Last 3rd 2nd 1st
-4428 1st 2nd 3rd Last 3rd 2nd 1st
-4429 1st 2nd 3rd Last 3rd 2nd 1st
-4430 1st 2nd 3rd Last 3rd 2nd 1st
-4431 1st 2nd 3rd Last 3rd 2nd 1st
-4432 1st 2nd 3rd Last 3rd 2nd 1st
-4433 1st 2nd 3rd Last 3rd 2nd 1st
-4434 1st 2nd 3rd Last 3rd 2nd 1st
-4435 1st 2nd 3rd Last 3rd 2nd 1st
-4436 1st 2nd 3rd Last 3rd 2nd 1st
-4437 1st 2nd 3rd Last 3rd 2nd 1st
-4438 1st 2nd 3rd Last 3rd 2nd 1st
-4439 1st 2nd 3rd Last 3rd 2nd 1st
-4440 1st 2nd 3rd Last 3rd 2nd 1st
-4441 1st 2nd 3rd Last 3rd 2nd 1st
-4442 1st 2nd 3rd Last 3rd 2nd 1st
-4443 1st 2nd 3rd Last 3rd 2nd 1st
-4444 1st 2nd 3rd Last 3rd 2nd 1st
-4445 1st 2nd 3rd Last 3rd 2nd 1st
-4446 1st 2nd 3rd Last 3rd 2nd 1st
-4447 1st 2nd 3rd Last 3rd 2nd 1st
-4448 1st 2nd 3rd Last 3rd 2nd 1st
-4449 1st 2nd 3rd Last 3rd 2nd 1st
-4450 1st 2nd 3rd Last 3rd 2nd 1st
-4451 1st 2nd 3rd Last 3rd 2nd 1st
-4452 1st 2nd 3rd Last 3rd 2nd 1st
-4453 1st 2nd 3rd Last 3rd 2nd 1st
-4454 1st 2nd 3rd Last 3rd 2nd 1st
-4455 1st 2nd 3rd Last 3rd 2nd 1st
-4456 1st 2nd 3rd Last 3rd 2nd 1st
-4457 1st 2nd 3rd Last 3rd 2nd 1st
-4458 1st 2nd 3rd Last 3rd 2nd 1st
-4459 1st 2nd 3rd Last 3rd 2nd 1st
-4460 1st 2nd 3rd Last 3rd 2nd 1st
-4461 1st 2nd 3rd Last 3rd 2nd 1st
-4462 1st 2nd 3rd Last 3rd 2nd 1st
-4463 1st 2nd 3rd Last 3rd 2nd 1st
-4464 1st 2nd 3rd Last 3rd 2nd 1st
-4465 1st 2nd 3rd Last 3rd 2nd 1st
-4466 1st 2nd 3rd Last 3rd 2nd 1st
-4467 1st 2nd 3rd Last 3rd 2nd 1st
-4468 1st 2nd 3rd Last 3rd 2nd 1st
-4469 1st 2nd 3rd Last 3rd 2nd 1st
-4470 1st 2nd 3rd Last 3rd 2nd 1st
-4471 1st 2nd 3rd Last 3rd 2nd 1st
-4472 1st 2nd 3rd Last 3rd 2nd 1st
-4473 1st 2nd 3rd Last 3rd 2nd 1st
-4474 1st 2nd 3rd Last 3rd 2nd 1st
-4475 1st 2nd 3rd Last 3rd 2nd 1st
-4476 1st 2nd 3rd Last 3rd 2nd 1st
-4477 1st 2nd 3rd Last 3rd 2nd 1st
-4478 1st 2nd 3rd Last 3rd 2nd 1st
-4479 1st 2nd 3rd Last 3rd 2nd 1st
-4480 1st 2nd 3rd Last 3rd 2nd 1st
-4481 1st 2nd 3rd Last 3rd 2nd 1st
-4482 1st 2nd 3rd Last 3rd 2nd 1st
-4483 1st 2nd 3rd Last 3rd 2nd 1st
-4484 1st 2nd 3rd Last 3rd 2nd 1st
-4485 1st 2nd 3rd Last 3rd 2nd 1st
-4486 1st 2nd 3rd Last 3rd 2nd 1st
-4487 1st 2nd 3rd Last 3rd 2nd 1st
-4488 1st 2nd 3rd Last 3rd 2nd 1st
-4489 1st 2nd 3rd Last 3rd 2nd 1st
-4490 1st 2nd 3rd Last 3rd 2nd 1st
-4491 1st 2nd 3rd Last 3rd 2nd 1st
-4492 1st 2nd 3rd Last 3rd 2nd 1st
-4493 1st 2nd 3rd Last 3rd 2nd 1st
-4494 1st 2nd 3rd Last 3rd 2nd 1st
-4495 1st 2nd 3rd Last 3rd 2nd 1st
-4496 1st 2nd 3rd Last 3rd 2nd 1st
-4497 1st 2nd 3rd Last 3rd 2nd 1st
-4498 1st 2nd 3rd Last 3rd 2nd 1st
-4499 1st 2nd 3rd Last 3rd 2nd 1st
-4500 1st 2nd 3rd Last 3rd 2nd 1st
-4501 1st 2nd 3rd Last 3rd 2nd 1st
-4502 1st 2nd 3rd Last 3rd 2nd 1st
-4503 1st 2nd 3rd Last 3rd 2nd 1st
-4504 1st 2nd 3rd Last 3rd 2nd 1st
-4505 1st 2nd 3rd Last 3rd 2nd 1st
-4506 1st 2nd 3rd Last 3rd 2nd 1st
-4507 1st 2nd 3rd Last 3rd 2nd 1st
-4508 1st 2nd 3rd Last 3rd 2nd 1st
-4509 1st 2nd 3rd Last 3rd 2nd 1st
-4510 1st 2nd 3rd Last 3rd 2nd 1st
-4511 1st 2nd 3rd Last 3rd 2nd 1st
-4512 1st 2nd 3rd Last 3rd 2nd 1st
-4513 1st 2nd 3rd Last 3rd 2nd 1st
-4514 1st 2nd 3rd Last 3rd 2nd 1st
-4515 1st 2nd 3rd Last 3rd 2nd 1st
-4516 1st 2nd 3rd Last 3rd 2nd 1st
-4517 1st 2nd 3rd Last 3rd 2nd 1st
-4518 1st 2nd 3rd Last 3rd 2nd 1st
-4519 1st 2nd 3rd Last 3rd 2nd 1st
-4520 1st 2nd 3rd Last 3rd 2nd 1st
-4521 1st 2nd 3rd Last 3rd 2nd 1st
-4522 1st 2nd 3rd Last 3rd 2nd 1st
-4523 1st 2nd 3rd Last 3rd 2nd 1st
-4524 1st 2nd 3rd Last 3rd 2nd 1st
-4525 1st 2nd 3rd Last 3rd 2nd 1st
-4526 1st 2nd 3rd Last 3rd 2nd 1st
-4527 1st 2nd 3rd Last 3rd 2nd 1st
-4528 1st 2nd 3rd Last 3rd 2nd 1st
-4529 1st 2nd 3rd Last 3rd 2nd 1st
-4530 1st 2nd 3rd Last 3rd 2nd 1st
-4531 1st 2nd 3rd Last 3rd 2nd 1st
-4532 1st 2nd 3rd Last 3rd 2nd 1st
-4533 1st 2nd 3rd Last 3rd 2nd 1st
-4534 1st 2nd 3rd Last 3rd 2nd 1st
-4535 1st 2nd 3rd Last 3rd 2nd 1st
-4536 1st 2nd 3rd Last 3rd 2nd 1st
-4537 1st 2nd 3rd Last 3rd 2nd 1st
-4538 1st 2nd 3rd Last 3rd 2nd 1st
-4539 1st 2nd 3rd Last 3rd 2nd 1st
-4540 1st 2nd 3rd Last 3rd 2nd 1st
-4541 1st 2nd 3rd Last 3rd 2nd 1st
-4542 1st 2nd 3rd Last 3rd 2nd 1st
-4543 1st 2nd 3rd Last 3rd 2nd 1st
-4544 1st 2nd 3rd Last 3rd 2nd 1st
-4545 1st 2nd 3rd Last 3rd 2nd 1st
-4546 1st 2nd 3rd Last 3rd 2nd 1st
-4547 1st 2nd 3rd Last 3rd 2nd 1st
-4548 1st 2nd 3rd Last 3rd 2nd 1st
-4549 1st 2nd 3rd Last 3rd 2nd 1st
-4550 1st 2nd 3rd Last 3rd 2nd 1st
-4551 1st 2nd 3rd Last 3rd 2nd 1st
-4552 1st 2nd 3rd Last 3rd 2nd 1st
-4553 1st 2nd 3rd Last 3rd 2nd 1st
-4554 1st 2nd 3rd Last 3rd 2nd 1st
-4555 1st 2nd 3rd Last 3rd 2nd 1st
-4556 1st 2nd 3rd Last 3rd 2nd 1st
-4557 1st 2nd 3rd Last 3rd 2nd 1st
-4558 1st 2nd 3rd Last 3rd 2nd 1st
-4559 1st 2nd 3rd Last 3rd 2nd 1st
-4560 1st 2nd 3rd Last 3rd 2nd 1st
-4561 1st 2nd 3rd Last 3rd 2nd 1st
-4562 1st 2nd 3rd Last 3rd 2nd 1st
-4563 1st 2nd 3rd Last 3rd 2nd 1st
-4564 1st 2nd 3rd Last 3rd 2nd 1st
-4565 1st 2nd 3rd Last 3rd 2nd 1st
-4566 1st 2nd 3rd Last 3rd 2nd 1st
-4567 1st 2nd 3rd Last 3rd 2nd 1st
-4568 1st 2nd 3rd Last 3rd 2nd 1st
-4569 1st 2nd 3rd Last 3rd 2nd 1st
-4570 1st 2nd 3rd Last 3rd 2nd 1st
-4571 1st 2nd 3rd Last 3rd 2nd 1st
-4572 1st 2nd 3rd Last 3rd 2nd 1st
-4573 1st 2nd 3rd Last 3rd 2nd 1st
-4574 1st 2nd 3rd Last 3rd 2nd 1st
-4575 1st 2nd 3rd Last 3rd 2nd 1st
-4576 1st 2nd 3rd Last 3rd 2nd 1st
-4577 1st 2nd 3rd Last 3rd 2nd 1st
-4578 1st 2nd 3rd Last 3rd 2nd 1st
-4579 1st 2nd 3rd Last 3rd 2nd 1st
-4580 1st 2nd 3rd Last 3rd 2nd 1st
-4581 1st 2nd 3rd Last 3rd 2nd 1st
-4582 1st 2nd 3rd Last 3rd 2nd 1st
-4583 1st 2nd 3rd Last 3rd 2nd 1st
-4584 1st 2nd 3rd Last 3rd 2nd 1st
-4585 1st 2nd 3rd Last 3rd 2nd 1st
-4586 1st 2nd 3rd Last 3rd 2nd 1st
-4587 1st 2nd 3rd Last 3rd 2nd 1st
-4588 1st 2nd 3rd Last 3rd 2nd 1st
-4589 1st 2nd 3rd Last 3rd 2nd 1st
-4590 1st 2nd 3rd Last 3rd 2nd 1st
-4591 1st 2nd 3rd Last 3rd 2nd 1st
-4592 1st 2nd 3rd Last 3rd 2nd 1st
-4593 1st 2nd 3rd Last 3rd 2nd 1st
-4594 1st 2nd 3rd Last 3rd 2nd 1st
-4595 1st 2nd 3rd Last 3rd 2nd 1st
-4596 1st 2nd 3rd Last 3rd 2nd 1st
-4597 1st 2nd 3rd Last 3rd 2nd 1st
-4598 1st 2nd 3rd Last 3rd 2nd 1st
-4599 1st 2nd 3rd Last 3rd 2nd 1st
-4600 1st 2nd 3rd Last 3rd 2nd 1st
-4601 1st 2nd 3rd Last 3rd 2nd 1st
-4602 1st 2nd 3rd Last 3rd 2nd 1st
-4603 1st 2nd 3rd Last 3rd 2nd 1st
-4604 1st 2nd 3rd Last 3rd 2nd 1st
-4605 1st 2nd 3rd Last 3rd 2nd 1st
-4606 1st 2nd 3rd Last 3rd 2nd 1st
-4607 1st 2nd 3rd Last 3rd 2nd 1st
-4608 1st 2nd 3rd Last 3rd 2nd 1st
-4609 1st 2nd 3rd Last 3rd 2nd 1st
-4610 1st 2nd 3rd Last 3rd 2nd 1st
-4611 1st 2nd 3rd Last 3rd 2nd 1st
-4612 1st 2nd 3rd Last 3rd 2nd 1st
-4613 1st 2nd 3rd Last 3rd 2nd 1st
-4614 1st 2nd 3rd Last 3rd 2nd 1st
-4615 1st 2nd 3rd Last 3rd 2nd 1st
-4616 1st 2nd 3rd Last 3rd 2nd 1st
-4617 1st 2nd 3rd Last 3rd 2nd 1st
-4618 1st 2nd 3rd Last 3rd 2nd 1st
-4619 1st 2nd 3rd Last 3rd 2nd 1st
-4620 1st 2nd 3rd Last 3rd 2nd 1st
-4621 1st 2nd 3rd Last 3rd 2nd 1st
-4622 1st 2nd 3rd Last 3rd 2nd 1st
-4623 1st 2nd 3rd Last 3rd 2nd 1st
-4624 1st 2nd 3rd Last 3rd 2nd 1st
-4625 1st 2nd 3rd Last 3rd 2nd 1st
-4626 1st 2nd 3rd Last 3rd 2nd 1st
-4627 1st 2nd 3rd Last 3rd 2nd 1st
-4628 1st 2nd 3rd Last 3rd 2nd 1st
-4629 1st 2nd 3rd Last 3rd 2nd 1st
-4630 1st 2nd 3rd Last 3rd 2nd 1st
-4631 1st 2nd 3rd Last 3rd 2nd 1st
-4632 1st 2nd 3rd Last 3rd 2nd 1st
-4633 1st 2nd 3rd Last 3rd 2nd 1st
-4634 1st 2nd 3rd Last 3rd 2nd 1st
-4635 1st 2nd 3rd Last 3rd 2nd 1st
-4636 1st 2nd 3rd Last 3rd 2nd 1st
-4637 1st 2nd 3rd Last 3rd 2nd 1st
-4638 1st 2nd 3rd Last 3rd 2nd 1st
-4639 1st 2nd 3rd Last 3rd 2nd 1st
-4640 1st 2nd 3rd Last 3rd 2nd 1st
-4641 1st 2nd 3rd Last 3rd 2nd 1st
-4642 1st 2nd 3rd Last 3rd 2nd 1st
-4643 1st 2nd 3rd Last 3rd 2nd 1st
-4644 1st 2nd 3rd Last 3rd 2nd 1st
-4645 1st 2nd 3rd Last 3rd 2nd 1st
-4646 1st 2nd 3rd Last 3rd 2nd 1st
-4647 1st 2nd 3rd Last 3rd 2nd 1st
-4648 1st 2nd 3rd Last 3rd 2nd 1st
-4649 1st 2nd 3rd Last 3rd 2nd 1st
-4650 1st 2nd 3rd Last 3rd 2nd 1st
-4651 1st 2nd 3rd Last 3rd 2nd 1st
-4652 1st 2nd 3rd Last 3rd 2nd 1st
-4653 1st 2nd 3rd Last 3rd 2nd 1st
-4654 1st 2nd 3rd Last 3rd 2nd 1st
-4655 1st 2nd 3rd Last 3rd 2nd 1st
-4656 1st 2nd 3rd Last 3rd 2nd 1st
-4657 1st 2nd 3rd Last 3rd 2nd 1st
-4658 1st 2nd 3rd Last 3rd 2nd 1st
-4659 1st 2nd 3rd Last 3rd 2nd 1st
-4660 1st 2nd 3rd Last 3rd 2nd 1st
-4661 1st 2nd 3rd Last 3rd 2nd 1st
-4662 1st 2nd 3rd Last 3rd 2nd 1st
-4663 1st 2nd 3rd Last 3rd 2nd 1st
-4664 1st 2nd 3rd Last 3rd 2nd 1st
-4665 1st 2nd 3rd Last 3rd 2nd 1st
-4666 1st 2nd 3rd Last 3rd 2nd 1st
-4667 1st 2nd 3rd Last 3rd 2nd 1st
-4668 1st 2nd 3rd Last 3rd 2nd 1st
-4669 1st 2nd 3rd Last 3rd 2nd 1st
-4670 1st 2nd 3rd Last 3rd 2nd 1st
-4671 1st 2nd 3rd Last 3rd 2nd 1st
-4672 1st 2nd 3rd Last 3rd 2nd 1st
-4673 1st 2nd 3rd Last 3rd 2nd 1st
-4674 1st 2nd 3rd Last 3rd 2nd 1st
-4675 1st 2nd 3rd Last 3rd 2nd 1st
-4676 1st 2nd 3rd Last 3rd 2nd 1st
-4677 1st 2nd 3rd Last 3rd 2nd 1st
-4678 1st 2nd 3rd Last 3rd 2nd 1st
-4679 1st 2nd 3rd Last 3rd 2nd 1st
-4680 1st 2nd 3rd Last 3rd 2nd 1st
-4681 1st 2nd 3rd Last 3rd 2nd 1st
-4682 1st 2nd 3rd Last 3rd 2nd 1st
-4683 1st 2nd 3rd Last 3rd 2nd 1st
-4684 1st 2nd 3rd Last 3rd 2nd 1st
-4685 1st 2nd 3rd Last 3rd 2nd 1st
-4686 1st 2nd 3rd Last 3rd 2nd 1st
-4687 1st 2nd 3rd Last 3rd 2nd 1st
-4688 1st 2nd 3rd Last 3rd 2nd 1st
-4689 1st 2nd 3rd Last 3rd 2nd 1st
-4690 1st 2nd 3rd Last 3rd 2nd 1st
-4691 1st 2nd 3rd Last 3rd 2nd 1st
-4692 1st 2nd 3rd Last 3rd 2nd 1st
-4693 1st 2nd 3rd Last 3rd 2nd 1st
-4694 1st 2nd 3rd Last 3rd 2nd 1st
-4695 1st 2nd 3rd Last 3rd 2nd 1st
-4696 1st 2nd 3rd Last 3rd 2nd 1st
-4697 1st 2nd 3rd Last 3rd 2nd 1st
-4698 1st 2nd 3rd Last 3rd 2nd 1st
-4699 1st 2nd 3rd Last 3rd 2nd 1st
-4700 1st 2nd 3rd Last 3rd 2nd 1st
-4701 1st 2nd 3rd Last 3rd 2nd 1st
-4702 1st 2nd 3rd Last 3rd 2nd 1st
-4703 1st 2nd 3rd Last 3rd 2nd 1st
-4704 1st 2nd 3rd Last 3rd 2nd 1st
-4705 1st 2nd 3rd Last 3rd 2nd 1st
-4706 1st 2nd 3rd Last 3rd 2nd 1st
-4707 1st 2nd 3rd Last 3rd 2nd 1st
-4708 1st 2nd 3rd Last 3rd 2nd 1st
-4709 1st 2nd 3rd Last 3rd 2nd 1st
-4710 1st 2nd 3rd Last 3rd 2nd 1st
-4711 1st 2nd 3rd Last 3rd 2nd 1st
-4712 1st 2nd 3rd Last 3rd 2nd 1st
-4713 1st 2nd 3rd Last 3rd 2nd 1st
-4714 1st 2nd 3rd Last 3rd 2nd 1st
-4715 1st 2nd 3rd Last 3rd 2nd 1st
-4716 1st 2nd 3rd Last 3rd 2nd 1st
-4717 1st 2nd 3rd Last 3rd 2nd 1st
-4718 1st 2nd 3rd Last 3rd 2nd 1st
-4719 1st 2nd 3rd Last 3rd 2nd 1st
-4720 1st 2nd 3rd Last 3rd 2nd 1st
-4721 1st 2nd 3rd Last 3rd 2nd 1st
-4722 1st 2nd 3rd Last 3rd 2nd 1st
-4723 1st 2nd 3rd Last 3rd 2nd 1st
-4724 1st 2nd 3rd Last 3rd 2nd 1st
-4725 1st 2nd 3rd Last 3rd 2nd 1st
-4726 1st 2nd 3rd Last 3rd 2nd 1st
-4727 1st 2nd 3rd Last 3rd 2nd 1st
-4728 1st 2nd 3rd Last 3rd 2nd 1st
-4729 1st 2nd 3rd Last 3rd 2nd 1st
-4730 1st 2nd 3rd Last 3rd 2nd 1st
-4731 1st 2nd 3rd Last 3rd 2nd 1st
-4732 1st 2nd 3rd Last 3rd 2nd 1st
-4733 1st 2nd 3rd Last 3rd 2nd 1st
-4734 1st 2nd 3rd Last 3rd 2nd 1st
-4735 1st 2nd 3rd Last 3rd 2nd 1st
-4736 1st 2nd 3rd Last 3rd 2nd 1st
-4737 1st 2nd 3rd Last 3rd 2nd 1st
-4738 1st 2nd 3rd Last 3rd 2nd 1st
-4739 1st 2nd 3rd Last 3rd 2nd 1st
-4740 1st 2nd 3rd Last 3rd 2nd 1st
-4741 1st 2nd 3rd Last 3rd 2nd 1st
-4742 1st 2nd 3rd Last 3rd 2nd 1st
-4743 1st 2nd 3rd Last 3rd 2nd 1st
-4744 1st 2nd 3rd Last 3rd 2nd 1st
-4745 1st 2nd 3rd Last 3rd 2nd 1st
-4746 1st 2nd 3rd Last 3rd 2nd 1st
-4747 1st 2nd 3rd Last 3rd 2nd 1st
-4748 1st 2nd 3rd Last 3rd 2nd 1st
-4749 1st 2nd 3rd Last 3rd 2nd 1st
-4750 1st 2nd 3rd Last 3rd 2nd 1st
-4751 1st 2nd 3rd Last 3rd 2nd 1st
-4752 1st 2nd 3rd Last 3rd 2nd 1st
-4753 1st 2nd 3rd Last 3rd 2nd 1st
-4754 1st 2nd 3rd Last 3rd 2nd 1st
-4755 1st 2nd 3rd Last 3rd 2nd 1st
-4756 1st 2nd 3rd Last 3rd 2nd 1st
-4757 1st 2nd 3rd Last 3rd 2nd 1st
-4758 1st 2nd 3rd Last 3rd 2nd 1st
-4759 1st 2nd 3rd Last 3rd 2nd 1st
-4760 1st 2nd 3rd Last 3rd 2nd 1st
-4761 1st 2nd 3rd Last 3rd 2nd 1st
-4762 1st 2nd 3rd Last 3rd 2nd 1st
-4763 1st 2nd 3rd Last 3rd 2nd 1st
-4764 1st 2nd 3rd Last 3rd 2nd 1st
-4765 1st 2nd 3rd Last 3rd 2nd 1st
-4766 1st 2nd 3rd Last 3rd 2nd 1st
-4767 1st 2nd 3rd Last 3rd 2nd 1st
-4768 1st 2nd 3rd Last 3rd 2nd 1st
-4769 1st 2nd 3rd Last 3rd 2nd 1st
-4770 1st 2nd 3rd Last 3rd 2nd 1st
-4771 1st 2nd 3rd Last 3rd 2nd 1st
-4772 1st 2nd 3rd Last 3rd 2nd 1st
-4773 1st 2nd 3rd Last 3rd 2nd 1st
-4774 1st 2nd 3rd Last 3rd 2nd 1st
-4775 1st 2nd 3rd Last 3rd 2nd 1st
-4776 1st 2nd 3rd Last 3rd 2nd 1st
-4777 1st 2nd 3rd Last 3rd 2nd 1st
-4778 1st 2nd 3rd Last 3rd 2nd 1st
-4779 1st 2nd 3rd Last 3rd 2nd 1st
-4780 1st 2nd 3rd Last 3rd 2nd 1st
-4781 1st 2nd 3rd Last 3rd 2nd 1st
-4782 1st 2nd 3rd Last 3rd 2nd 1st
-4783 1st 2nd 3rd Last 3rd 2nd 1st
-4784 1st 2nd 3rd Last 3rd 2nd 1st
-4785 1st 2nd 3rd Last 3rd 2nd 1st
-4786 1st 2nd 3rd Last 3rd 2nd 1st
-4787 1st 2nd 3rd Last 3rd 2nd 1st
-4788 1st 2nd 3rd Last 3rd 2nd 1st
-4789 1st 2nd 3rd Last 3rd 2nd 1st
-4790 1st 2nd 3rd Last 3rd 2nd 1st
-4791 1st 2nd 3rd Last 3rd 2nd 1st
-4792 1st 2nd 3rd Last 3rd 2nd 1st
-4793 1st 2nd 3rd Last 3rd 2nd 1st
-4794 1st 2nd 3rd Last 3rd 2nd 1st
-4795 1st 2nd 3rd Last 3rd 2nd 1st
-4796 1st 2nd 3rd Last 3rd 2nd 1st
-4797 1st 2nd 3rd Last 3rd 2nd 1st
-4798 1st 2nd 3rd Last 3rd 2nd 1st
-4799 1st 2nd 3rd Last 3rd 2nd 1st
-4800 1st 2nd 3rd Last 3rd 2nd 1st
-4801 1st 2nd 3rd Last 3rd 2nd 1st
-4802 1st 2nd 3rd Last 3rd 2nd 1st
-4803 1st 2nd 3rd Last 3rd 2nd 1st
-4804 1st 2nd 3rd Last 3rd 2nd 1st
-4805 1st 2nd 3rd Last 3rd 2nd 1st
-4806 1st 2nd 3rd Last 3rd 2nd 1st
-4807 1st 2nd 3rd Last 3rd 2nd 1st
-4808 1st 2nd 3rd Last 3rd 2nd 1st
-4809 1st 2nd 3rd Last 3rd 2nd 1st
-4810 1st 2nd 3rd Last 3rd 2nd 1st
-4811 1st 2nd 3rd Last 3rd 2nd 1st
-4812 1st 2nd 3rd Last 3rd 2nd 1st
-4813 1st 2nd 3rd Last 3rd 2nd 1st
-4814 1st 2nd 3rd Last 3rd 2nd 1st
-4815 1st 2nd 3rd Last 3rd 2nd 1st
-4816 1st 2nd 3rd Last 3rd 2nd 1st
-4817 1st 2nd 3rd Last 3rd 2nd 1st
-4818 1st 2nd 3rd Last 3rd 2nd 1st
-4819 1st 2nd 3rd Last 3rd 2nd 1st
-4820 1st 2nd 3rd Last 3rd 2nd 1st
-4821 1st 2nd 3rd Last 3rd 2nd 1st
-4822 1st 2nd 3rd Last 3rd 2nd 1st
-4823 1st 2nd 3rd Last 3rd 2nd 1st
-4824 1st 2nd 3rd Last 3rd 2nd 1st
-4825 1st 2nd 3rd Last 3rd 2nd 1st
-4826 1st 2nd 3rd Last 3rd 2nd 1st
-4827 1st 2nd 3rd Last 3rd 2nd 1st
-4828 1st 2nd 3rd Last 3rd 2nd 1st
-4829 1st 2nd 3rd Last 3rd 2nd 1st
-4830 1st 2nd 3rd Last 3rd 2nd 1st
-4831 1st 2nd 3rd Last 3rd 2nd 1st
-4832 1st 2nd 3rd Last 3rd 2nd 1st
-4833 1st 2nd 3rd Last 3rd 2nd 1st
-4834 1st 2nd 3rd Last 3rd 2nd 1st
-4835 1st 2nd 3rd Last 3rd 2nd 1st
-4836 1st 2nd 3rd Last 3rd 2nd 1st
-4837 1st 2nd 3rd Last 3rd 2nd 1st
-4838 1st 2nd 3rd Last 3rd 2nd 1st
-4839 1st 2nd 3rd Last 3rd 2nd 1st
-4840 1st 2nd 3rd Last 3rd 2nd 1st
-4841 1st 2nd 3rd Last 3rd 2nd 1st
-4842 1st 2nd 3rd Last 3rd 2nd 1st
-4843 1st 2nd 3rd Last 3rd 2nd 1st
-4844 1st 2nd 3rd Last 3rd 2nd 1st
-4845 1st 2nd 3rd Last 3rd 2nd 1st
-4846 1st 2nd 3rd Last 3rd 2nd 1st
-4847 1st 2nd 3rd Last 3rd 2nd 1st
-4848 1st 2nd 3rd Last 3rd 2nd 1st
-4849 1st 2nd 3rd Last 3rd 2nd 1st
-4850 1st 2nd 3rd Last 3rd 2nd 1st
-4851 1st 2nd 3rd Last 3rd 2nd 1st
-4852 1st 2nd 3rd Last 3rd 2nd 1st
-4853 1st 2nd 3rd Last 3rd 2nd 1st
-4854 1st 2nd 3rd Last 3rd 2nd 1st
-4855 1st 2nd 3rd Last 3rd 2nd 1st
-4856 1st 2nd 3rd Last 3rd 2nd 1st
-4857 1st 2nd 3rd Last 3rd 2nd 1st
-4858 1st 2nd 3rd Last 3rd 2nd 1st
-4859 1st 2nd 3rd Last 3rd 2nd 1st
-4860 1st 2nd 3rd Last 3rd 2nd 1st
-4861 1st 2nd 3rd Last 3rd 2nd 1st
-4862 1st 2nd 3rd Last 3rd 2nd 1st
-4863 1st 2nd 3rd Last 3rd 2nd 1st
-4864 1st 2nd 3rd Last 3rd 2nd 1st
-4865 1st 2nd 3rd Last 3rd 2nd 1st
-4866 1st 2nd 3rd Last 3rd 2nd 1st
-4867 1st 2nd 3rd Last 3rd 2nd 1st
-4868 1st 2nd 3rd Last 3rd 2nd 1st
-4869 1st 2nd 3rd Last 3rd 2nd 1st
-4870 1st 2nd 3rd Last 3rd 2nd 1st
-4871 1st 2nd 3rd Last 3rd 2nd 1st
-4872 1st 2nd 3rd Last 3rd 2nd 1st
-4873 1st 2nd 3rd Last 3rd 2nd 1st
-4874 1st 2nd 3rd Last 3rd 2nd 1st
-4875 1st 2nd 3rd Last 3rd 2nd 1st
-4876 1st 2nd 3rd Last 3rd 2nd 1st
-4877 1st 2nd 3rd Last 3rd 2nd 1st
-4878 1st 2nd 3rd Last 3rd 2nd 1st
-4879 1st 2nd 3rd Last 3rd 2nd 1st
-4880 1st 2nd 3rd Last 3rd 2nd 1st
-4881 1st 2nd 3rd Last 3rd 2nd 1st
-4882 1st 2nd 3rd Last 3rd 2nd 1st
-4883 1st 2nd 3rd Last 3rd 2nd 1st
-4884 1st 2nd 3rd Last 3rd 2nd 1st
-4885 1st 2nd 3rd Last 3rd 2nd 1st
-4886 1st 2nd 3rd Last 3rd 2nd 1st
-4887 1st 2nd 3rd Last 3rd 2nd 1st
-4888 1st 2nd 3rd Last 3rd 2nd 1st
-4889 1st 2nd 3rd Last 3rd 2nd 1st
-4890 1st 2nd 3rd Last 3rd 2nd 1st
-4891 1st 2nd 3rd Last 3rd 2nd 1st
-4892 1st 2nd 3rd Last 3rd 2nd 1st
-4893 1st 2nd 3rd Last 3rd 2nd 1st
-4894 1st 2nd 3rd Last 3rd 2nd 1st
-4895 1st 2nd 3rd Last 3rd 2nd 1st
-4896 1st 2nd 3rd Last 3rd 2nd 1st
-4897 1st 2nd 3rd Last 3rd 2nd 1st
-4898 1st 2nd 3rd Last 3rd 2nd 1st
-4899 1st 2nd 3rd Last 3rd 2nd 1st
-4900 1st 2nd 3rd Last 3rd 2nd 1st
-4901 1st 2nd 3rd Last 3rd 2nd 1st
-4902 1st 2nd 3rd Last 3rd 2nd 1st
-4903 1st 2nd 3rd Last 3rd 2nd 1st
-4904 1st 2nd 3rd Last 3rd 2nd 1st
-4905 1st 2nd 3rd Last 3rd 2nd 1st
-4906 1st 2nd 3rd Last 3rd 2nd 1st
-4907 1st 2nd 3rd Last 3rd 2nd 1st
-4908 1st 2nd 3rd Last 3rd 2nd 1st
-4909 1st 2nd 3rd Last 3rd 2nd 1st
-4910 1st 2nd 3rd Last 3rd 2nd 1st
-4911 1st 2nd 3rd Last 3rd 2nd 1st
-4912 1st 2nd 3rd Last 3rd 2nd 1st
-4913 1st 2nd 3rd Last 3rd 2nd 1st
-4914 1st 2nd 3rd Last 3rd 2nd 1st
-4915 1st 2nd 3rd Last 3rd 2nd 1st
-4916 1st 2nd 3rd Last 3rd 2nd 1st
-4917 1st 2nd 3rd Last 3rd 2nd 1st
-4918 1st 2nd 3rd Last 3rd 2nd 1st
-4919 1st 2nd 3rd Last 3rd 2nd 1st
-4920 1st 2nd 3rd Last 3rd 2nd 1st
-4921 1st 2nd 3rd Last 3rd 2nd 1st
-4922 1st 2nd 3rd Last 3rd 2nd 1st
-4923 1st 2nd 3rd Last 3rd 2nd 1st
-4924 1st 2nd 3rd Last 3rd 2nd 1st
-4925 1st 2nd 3rd Last 3rd 2nd 1st
-4926 1st 2nd 3rd Last 3rd 2nd 1st
-4927 1st 2nd 3rd Last 3rd 2nd 1st
-4928 1st 2nd 3rd Last 3rd 2nd 1st
-4929 1st 2nd 3rd Last 3rd 2nd 1st
-4930 1st 2nd 3rd Last 3rd 2nd 1st
-4931 1st 2nd 3rd Last 3rd 2nd 1st
-4932 1st 2nd 3rd Last 3rd 2nd 1st
-4933 1st 2nd 3rd Last 3rd 2nd 1st
-4934 1st 2nd 3rd Last 3rd 2nd 1st
-4935 1st 2nd 3rd Last 3rd 2nd 1st
-4936 1st 2nd 3rd Last 3rd 2nd 1st
-4937 1st 2nd 3rd Last 3rd 2nd 1st
-4938 1st 2nd 3rd Last 3rd 2nd 1st
-4939 1st 2nd 3rd Last 3rd 2nd 1st
-4940 1st 2nd 3rd Last 3rd 2nd 1st
-4941 1st 2nd 3rd Last 3rd 2nd 1st
-4942 1st 2nd 3rd Last 3rd 2nd 1st
-4943 1st 2nd 3rd Last 3rd 2nd 1st
-4944 1st 2nd 3rd Last 3rd 2nd 1st
-4945 1st 2nd 3rd Last 3rd 2nd 1st
-4946 1st 2nd 3rd Last 3rd 2nd 1st
-4947 1st 2nd 3rd Last 3rd 2nd 1st
-4948 1st 2nd 3rd Last 3rd 2nd 1st
-4949 1st 2nd 3rd Last 3rd 2nd 1st
-4950 1st 2nd 3rd Last 3rd 2nd 1st
-4951 1st 2nd 3rd Last 3rd 2nd 1st
-4952 1st 2nd 3rd Last 3rd 2nd 1st
-4953 1st 2nd 3rd Last 3rd 2nd 1st
-4954 1st 2nd 3rd Last 3rd 2nd 1st
-4955 1st 2nd 3rd Last 3rd 2nd 1st
-4956 1st 2nd 3rd Last 3rd 2nd 1st
-4957 1st 2nd 3rd Last 3rd 2nd 1st
-4958 1st 2nd 3rd Last 3rd 2nd 1st
-4959 1st 2nd 3rd Last 3rd 2nd 1st
-4960 1st 2nd 3rd Last 3rd 2nd 1st
-4961 1st 2nd 3rd Last 3rd 2nd 1st
-4962 1st 2nd 3rd Last 3rd 2nd 1st
-4963 1st 2nd 3rd Last 3rd 2nd 1st
-4964 1st 2nd 3rd Last 3rd 2nd 1st
-4965 1st 2nd 3rd Last 3rd 2nd 1st
-4966 1st 2nd 3rd Last 3rd 2nd 1st
-4967 1st 2nd 3rd Last 3rd 2nd 1st
-4968 1st 2nd 3rd Last 3rd 2nd 1st
-4969 1st 2nd 3rd Last 3rd 2nd 1st
-4970 1st 2nd 3rd Last 3rd 2nd 1st
-4971 1st 2nd 3rd Last 3rd 2nd 1st
-4972 1st 2nd 3rd Last 3rd 2nd 1st
-4973 1st 2nd 3rd Last 3rd 2nd 1st
-4974 1st 2nd 3rd Last 3rd 2nd 1st
-4975 1st 2nd 3rd Last 3rd 2nd 1st
-4976 1st 2nd 3rd Last 3rd 2nd 1st
-4977 1st 2nd 3rd Last 3rd 2nd 1st
-4978 1st 2nd 3rd Last 3rd 2nd 1st
-4979 1st 2nd 3rd Last 3rd 2nd 1st
-4980 1st 2nd 3rd Last 3rd 2nd 1st
-4981 1st 2nd 3rd Last 3rd 2nd 1st
-4982 1st 2nd 3rd Last 3rd 2nd 1st
-4983 1st 2nd 3rd Last 3rd 2nd 1st
-4984 1st 2nd 3rd Last 3rd 2nd 1st
-4985 1st 2nd 3rd Last 3rd 2nd 1st
-4986 1st 2nd 3rd Last 3rd 2nd 1st
-4987 1st 2nd 3rd Last 3rd 2nd 1st
-4988 1st 2nd 3rd Last 3rd 2nd 1st
-4989 1st 2nd 3rd Last 3rd 2nd 1st
-4990 1st 2nd 3rd Last 3rd 2nd 1st
-4991 1st 2nd 3rd Last 3rd 2nd 1st
-4992 1st 2nd 3rd Last 3rd 2nd 1st
-4993 1st 2nd 3rd Last 3rd 2nd 1st
-4994 1st 2nd 3rd Last 3rd 2nd 1st
-4995 1st 2nd 3rd Last 3rd 2nd 1st
-4996 1st 2nd 3rd Last 3rd 2nd 1st
-4997 1st 2nd 3rd Last 3rd 2nd 1st
-4998 1st 2nd 3rd Last 3rd 2nd 1st
-4999 1st 2nd 3rd Last 3rd 2nd 1st
-Stopping
Index: tests/concurrent/waitfor/.expect/statment.txt
===================================================================
--- tests/concurrent/waitfor/.expect/statment.txt	(revision 8a919cfec5f277378c3bc7e5d16717f7d44058c6)
+++ 	(revision )
@@ -1,702 +1,0 @@
-Starting
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Statement
-Stopping
Index: tests/concurrent/waitfor/.expect/when.txt
===================================================================
--- tests/concurrent/waitfor/.expect/when.txt	(revision 8a919cfec5f277378c3bc7e5d16717f7d44058c6)
+++ 	(revision )
@@ -1,5000 +1,0 @@
-Starting
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-1
-2
-3
-4
-5
-6
-Stopping
Index: tests/concurrent/waitfor/barge.cfa
===================================================================
--- tests/concurrent/waitfor/barge.cfa	(revision 8a919cfec5f277378c3bc7e5d16717f7d44058c6)
+++ 	(revision )
@@ -1,92 +1,0 @@
-//---------------------------------------------------------
-// Barging test
-// Ensures that no barging can occur between :
-//   - the frontend of the waitfor and the waited call
-//   - the waited call and the backend of the waitfor
-//---------------------------------------------------------
-
-#include <fstream.hfa>
-#include <kernel.hfa>
-#include <monitor.hfa>
-#include <stdlib.hfa>
-#include <thread.hfa>
-
-#include <stdbool.h>
-
-static const unsigned long N = 5_000ul;
-
-enum state_t { WAITFOR, CALL, BARGE };
-
-monitor global_t {
-	bool done;
-	bool started;
-	state_t state;
-};
-
-void ?{} ( global_t & this ) {
-	this.done = false;
-	this.started = false;
-	this.state = BARGE;
-}
-
-void ^?{} ( global_t & mutex this ) {}
-
-global_t global;
-
-bool barge( global_t & mutex this ) {
-	this.state = BARGE;
-	return !this.done;
-}
-
-thread barger_t {};
-void main( barger_t & this ) {
-	yield();
-	while( barge( global ) ) { yield(random( 10 )); }
-}
-
-bool do_call( global_t & mutex this ) {
-	yield(random( 10 ));
-	if( this.state != WAITFOR && !this.done && this.started ) {
-		serr | "Barging before caller detected";
-	}
-
-	this.state = CALL;
-	return !this.done;
-}
-
-thread caller_t {};
-void main( caller_t & this ) {
-	while( do_call(global) ) { yield(random( 10 )); }
-}
-
-void do_wait( global_t & mutex this ) {
-	this.started = true;
-	for( int i = 0; i < N; i++) {
-		yield(random( 10 ));
-		this.state = WAITFOR;
-		waitfor(do_call : this) {
-			sout | i;
-		}
-
-		if( this.state != CALL ) {
-			serr | "Barging after caller detected";
-		}
-	}
-
-	this.done = true;
-}
-
-thread waiter_t{};
-void main( waiter_t & this ) {
-	do_wait(global);
-}
-
-int main() {
-	sout | "Starting";
-	{
-		barger_t bargers[17];
-		caller_t callers[7];
-		waiter_t waiters;
-	}
-	sout | "Stopping";
-}
Index: tests/concurrent/waitfor/dtor.cfa
===================================================================
--- tests/concurrent/waitfor/dtor.cfa	(revision 8a919cfec5f277378c3bc7e5d16717f7d44058c6)
+++ 	(revision )
@@ -1,63 +1,0 @@
-//---------------------------------------------------------
-// Barging test
-// Ensures the statement order is reverse when using waitfor ^?{}
-//---------------------------------------------------------
-
-#include <fstream.hfa>
-#include <kernel.hfa>
-#include <monitor.hfa>
-#include <stdlib.hfa>
-#include <thread.hfa>
-
-#include <stdbool.h>
-
-static const unsigned long N = 5_000ul;
-
-enum state_t {
-	CTOR,
-	MAIN,
-	AFTER,
-	END,
-	DTOR
-};
-
-thread dummy_t {
-	state_t state;
-};
-
-static inline void set_state( dummy_t & this, state_t state) {
-	switch(state) {
-		case CTOR  : break;
-		case MAIN  : if( this.state != CTOR  ) { serr | "ERROR Expected state to be CTOR" ; abort(); } this.state = state; break;
-		case AFTER : if( this.state != MAIN  ) { serr | "ERROR Expected state to be MAIN" ; abort(); } this.state = state; break;
-		case END   : if( this.state != AFTER ) { serr | "ERROR Expected state to be AFTER"; abort(); } this.state = state; break;
-		case DTOR  : if( this.state != END   ) { serr | "ERROR Expected state to be END"  ; abort(); } this.state = state; break;
-	}
-}
-
-void ^?{}( dummy_t & mutex this ) {
-	set_state( this, DTOR );
-}
-
-void ?{}( dummy_t & this ) {
-	this.state = CTOR;
-}
-
-void main( dummy_t & this ) {
-	yield(random( 10 ));
-	set_state( this, MAIN );
-	waitfor( ^?{} : this ) {
-		set_state( this, AFTER );
-	}
-	set_state( this, END );
-}
-
-int main() {
-	sout | "Starting";
-	processor p;
-	for( int i = 0; i < N; i++ ){
-		dummy_t dummy[4];
-		yield( random( 100 ) );
-	}
-	sout | "Stopping";
-}
Index: tests/concurrent/waitfor/else.cfa
===================================================================
--- tests/concurrent/waitfor/else.cfa	(revision 8a919cfec5f277378c3bc7e5d16717f7d44058c6)
+++ 	(revision )
@@ -1,48 +1,0 @@
-#include <fstream.hfa>
-#include <monitor.hfa>
-
-#include <stdbool.h>
-
-monitor M {};
-
-void notcalled( M & mutex m ) {
-	abort();
-}
-
-void test( M & mutex m ) {
-	int i = 0;
-	sout | "Starting";
-
-	when( false ) waitfor( notcalled : m );
-
-	sout | "Step" | i++;
-
-	waitfor( notcalled : m ); or else {
-		sout | "else called";
-	}
-
-	sout | "Step" | i++;
-
-	when( true ) waitfor( notcalled : m ); or when( true ) else {
-		sout | "else called";
-	}
-
-	sout | "Step" | i++;
-
-	when( false ) waitfor( notcalled : m ); or when( true ) else {
-		sout | "else called";
-	}
-
-	sout | "Step" | i++;
-
-	when( false ) waitfor( notcalled : m ); or when( false ) else {
-		sout | "else called";
-	}
-
-	sout | "Done";
-}
-
-int main() {
-	M m;
-	test(m);
-}
Index: tests/concurrent/waitfor/parse.cfa
===================================================================
--- tests/concurrent/waitfor/parse.cfa	(revision 8a919cfec5f277378c3bc7e5d16717f7d44058c6)
+++ 	(revision )
@@ -1,261 +1,0 @@
-// 
-// 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.
-// 
-// waitfor.c -- 
-// 
-// Author           : Peter A. Buhr
-// Created On       : Wed Aug 30 17:53:29 2017
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Mon Apr 10 22:52:18 2023
-// Update Count     : 64
-// 
-
-#include <monitor.hfa>
-
-monitor M {};
-
-void notcalled( M & mutex m1, M & mutex m2 ) {
-	abort();
-}
-void or( M & mutex m ) {
-	abort();
-}
-void timeout( M & mutex m ) {
-	abort();
-}
-
-void fred( M & mutex m, M & mutex or, M & mutex timeout ) {
-	// test waitfor and when
-
-	waitfor( notcalled : m, m );
-
-	waitfor( notcalled : m, m ) {
-	}
-
-	waitfor( notcalled : m, m ) {
-	}
-
-	when( true ) waitfor( notcalled : m, m );
-
-	when( true ) waitfor( notcalled : m, m ) {
-	}
-
-	waitfor( notcalled : m, m );
-	or waitfor( notcalled : m, m );
-
-	when( true ) waitfor( notcalled : m, m );
-	or when( true ) waitfor( notcalled : m, m );
-
-	waitfor( notcalled : m, m ) {
-	} or waitfor( notcalled : m, m ) {
-	}
-
-	waitfor( notcalled : m, m ) {
-	} or waitfor( notcalled : m, m ) {
-	}
-
-	when( true ) waitfor( notcalled : m, m ) {
-	} or when( true ) waitfor( notcalled : m, m ) {
-	}
-
-	waitfor( notcalled : m, m );
-	or waitfor( notcalled : m, m ) {
-	}
-
-	when( true ) waitfor( notcalled : m, m );
-	or when( true ) waitfor( notcalled : m, m ) {
-	}
-
-	waitfor( notcalled : m, m ) {
-	} or waitfor( notcalled : m, m );
-
-	when( true ) waitfor( notcalled : m, m ) {
-	} or when( true ) waitfor( notcalled : m, m );
-
-	// test when, waitfor and else
-
-	waitfor( notcalled : m, m );
-	or else;
-
-	when( true ) waitfor( notcalled : m, m );
-	or else;
-
-	when( true ) waitfor( notcalled : m, m );
-	or else;
-
-	waitfor( notcalled : m, m ) {
-	} or else {
-	}
-
-	when( true ) waitfor( notcalled : m, m ) {
-	} or else {
-	}
-
-	waitfor( notcalled : m, m );
-	or else {
-	}
-
-	when( true ) waitfor( notcalled : m, m );
-	or else {
-	}
-
-	when( true ) waitfor( notcalled : m, m );
-	or else {
-	}
-
-	waitfor( notcalled : m, m ) {
-	} or else;
-
-	when( true ) waitfor( notcalled : m, m ) {
-	} or else;
-
-	waitfor( notcalled : m, m );
-	or when( true ) else;
-
-	when( true ) waitfor( notcalled : m, m );
-	or when( true ) else;
-
-	when( true ) waitfor( notcalled : m, m );
-	or when( true ) else;
-
-	waitfor( notcalled : m, m ) {
-	} or when( true ) else {
-	}
-
-	when( true ) waitfor( notcalled : m, m ) {
-	} or when( true ) else {
-	}
-
-	waitfor( notcalled : m, m );
-	or when( true ) else {
-	}
-
-	when( true ) waitfor( notcalled : m, m );
-	or when( true ) else {
-	}
-
-	when( true ) waitfor( notcalled : m, m );
-	or when( true ) else {
-	}
-
-	waitfor( notcalled : m, m ) {
-	} or when( true ) else;
-
-	when( true ) waitfor( notcalled : m, m ) {
-	} or when( true ) else;
-
-	// test when, waitfor and timeout
-
-	waitfor( notcalled : m, m );
-	or timeout( 3 );
-
-	waitfor( notcalled : m, m );
-	or timeout( 3 );
-
-	when( true ) waitfor( notcalled : m, m );
-	or timeout( 3 );
-
-	waitfor( notcalled : m, m ) {
-	} or timeout( 3 ) {
-	}
-
-	when( true ) waitfor( notcalled : m, m ) {
-	} or timeout( 3 ) {
-	}
-
-	when( true ) waitfor( notcalled : m, m ) {
-	} or timeout( 3 ) {
-	}
-
-	when( true ) waitfor( notcalled : m, m ) {
-	} or when ( true ) timeout( 3 ) {
-	}
-
-	when( true ) waitfor( notcalled : m, m ) {
-	} or when ( true ) timeout( 3 ) {
-	}
-
-	waitfor( notcalled : m, m );
-	or timeout( 3 ) {
-	}
-
-	when( true ) waitfor( notcalled : m, m );
-	or timeout( 3 ) {
-	}
-
-	when( true ) waitfor( notcalled : m, m );
-	or when( true ) timeout( 3 ) {
-	}
-
-	waitfor( notcalled : m, m ) {
-	} or timeout( 3 );
-
-	when( true ) waitfor( notcalled : m, m ) {
-	} or timeout( 3 );
-
-	when( true ) waitfor( notcalled : m, m ) {
-	} or when( true ) timeout( 3 );
-
-	// test when, waitfor, timeout and else
-
-	waitfor( notcalled : m, m ) {
-	} or timeout( 3 ) {
-	} or when( true ) else {}
-
-	when( true ) waitfor( notcalled : m, m ) {
-	} or timeout( 3 ) {
-	} or when( true ) else {}
-
-	waitfor( notcalled : m, m ) {
-	} or timeout( 3 ) {
-	} or when( true ) else {}
-
-	waitfor( notcalled : m, m ) {
-	} or when( true ) timeout( 3 ) {
-	} or when( true ) else {}
-
-	when( true ) waitfor( notcalled : m, m ) {
-	} or timeout( 3 ) {
-	} or when( true ) else {}
-
-	waitfor( notcalled : m, m ) {
-	} or when( true ) timeout( 3 ) {
-	} or when( true ) else {}
-
-	when( true ) waitfor( notcalled : m, m ) {
-	} or when( true ) timeout( 3 ) {
-	} or when( true ) else {}
-
-	// test quasi-keywords "or" and "timeout"
-
-	int or = 0, timeout = 0;
-	waitfor( timeout : timeout ) timeout += 1; or timeout( timeout );
-	waitfor( notcalled : or, or ) or += 1; or timeout( or ) 3;
-	when( or ) waitfor( or : m ) { 4; } or timeout( or ) or += 1;
-	when( timeout ) waitfor( notcalled : timeout, timeout ) or += 1; or else timeout += 1;
-	when( or + timeout ) waitfor( or : m ) 4; or when( or ) timeout( or ) 4; or when( or ) else timeout += 1;
-	when( 3 ) waitfor( or : or ) 3; or when( or ) waitfor( notcalled : or, or ) 4; or else 4;
-	when( timeout ) waitfor( or : timeout ) 3; or waitfor( notcalled : timeout, or ) 4; or when( or ) timeout( timeout ) 4;
-	when( 3 ) waitfor( or : timeout ) or += 1;
-	or waitfor( or : or ) timeout += 1;
-	or timeout( timeout ) or += 1;
-	or when( 3 ) else or += 1;
-
-	// test else selection
-
-	if ( or > timeout ) waitfor( or : or ) 3;
-	else waitfor( timeout : timeout ) 4;
-}
-
-//Dummy main
-int main( int argc, char const * argv[] ) {
-    #pragma GCC warning "Compiled"                      // force non-empty .expect file, NO TABS!!!
-}
-
-// Local Variables: //
-// tab-width: 4 //
-// compile-command: "cfa waitfor.cfa" //
-// End: //
Index: tests/concurrent/waitfor/recurse.cfa
===================================================================
--- tests/concurrent/waitfor/recurse.cfa	(revision 8a919cfec5f277378c3bc7e5d16717f7d44058c6)
+++ 	(revision )
@@ -1,146 +1,0 @@
-//----------------------------------------------------------------
-// Recursion test
-// Ensures that proper ordering occurs between the nested waitfors
-//-----------------------------------------------------------------
-
-#include <fstream.hfa>
-#include <kernel.hfa>
-#include <monitor.hfa>
-#include <stdlib.hfa>
-#include <thread.hfa>
-
-#include <stdbool.h>
-#include <time.h>
-
-static const unsigned long N = 5_000ul;
-
-static inline void rand_yield() { yield(random( 10 )); }
-
-enum state_t { FIRST, SECOND, THIRD, LAST, STOP };
-void shuffle(enum state_t * array)
-{
-	int i;
-	for (i = 0; i < 4; i++)
-	{
-		int j = random( 4 );
-		enum state_t t = array[j];
-		array[j] = array[i];
-		array[i] = t;
-	}
-}
-
-
-monitor global_t {
-	int counter;
-	volatile bool ready;
-	state_t actions[4];
-};
-
-void ?{} ( global_t & this ) {
-	this.counter = 0;
-	this.ready = false;
-	this.actions[0] = FIRST;
-	this.actions[1] = SECOND;
-	this.actions[2] = THIRD;
-	this.actions[3] = LAST;
-	shuffle( this.actions );
-}
-
-void ^?{} ( global_t & mutex this ) {}
-
-global_t global;
-
-state_t call4( global_t & mutex this, int idx ) {
-	sout | "Last";
-
-	rand_yield();
-	this.counter++;
-	this.ready = false;
-	shuffle( this.actions );
-
-	return this.counter < N ? (state_t)this.actions[idx] : (state_t)STOP;
-}
-
-state_t call3( global_t & mutex this, int idx ) {
-	sout | "3rd";
-
-	rand_yield();
-	waitfor( call4 : this );
-	rand_yield();
-
-	sout | "3rd";
-
-	return this.counter < N ? (state_t)this.actions[idx] : (state_t)STOP;
-}
-
-state_t call2( global_t & mutex this, int idx ) {
-	sout | "2nd";
-
-	rand_yield();
-	waitfor( call3 : this );
-	rand_yield();
-
-	sout | "2nd";
-
-	return this.counter < N ? (state_t)this.actions[idx] : (state_t)STOP;
-}
-
-state_t call1( global_t & mutex this, int idx ) {
-	this.ready = true;
-
-	sout | this.counter | "1st";
-
-	rand_yield();
-	waitfor( call2 : this );
-	rand_yield();
-
-	sout | "1st" | nl;
-
-	return this.counter < N ? (state_t)this.actions[idx] : (state_t)STOP;
-}
-
-thread waiter_t{
-	int     idx;
-	state_t state;
-};
-
-void ^?{} ( waiter_t & mutex this ) {}
-void ?{} ( waiter_t & this ) {}
-
-void ?{}( waiter_t & this, int idx, state_t state ) {
-	this.idx   = idx;
-	this.state = state;
-}
-
-
-void main( waiter_t & this ) {
-	while( this.state != STOP ) {
-		rand_yield();
-
-		switch( this.state ) {
-			case FIRST  :                                     this.state = call1( global, this.idx ); break;
-			case SECOND : while( !global.ready ) { yield(); } this.state = call2( global, this.idx ); break;
-			case THIRD  : while( !global.ready ) { yield(); } this.state = call3( global, this.idx ); break;
-			case LAST   : while( !global.ready ) { yield(); } this.state = call4( global, this.idx ); break;
-			case STOP   : serr | "This should not happen" | nl;
-		}
-	}
-}
-
-static waiter_t * volatile the_threads;
-
-int main() {
-	srandom( time(NULL) );
-	sout | nlOff;					// turn off auto newline
-	sout | "Starting" | nl;
-	{
-		waiter_t waiters[4] = {
-			{ 0, FIRST  },
-			{ 1, SECOND },
-			{ 2, THIRD  },
-			{ 3, LAST   }
-		};
-		the_threads = waiters;
-	}
-	sout | "Stopping" | nl;
-}
Index: tests/concurrent/waitfor/simple.cfa
===================================================================
--- tests/concurrent/waitfor/simple.cfa	(revision 8a919cfec5f277378c3bc7e5d16717f7d44058c6)
+++ 	(revision )
@@ -1,85 +1,0 @@
-#include <fstream.hfa>
-#include <kernel.hfa>
-#include <monitor.hfa>
-#include <stdlib.hfa>
-#include <thread.hfa>
-
-#include <time.h>
-
-static const unsigned long N = 500ul;
-
-#ifndef PREEMPTION_RATE
-#define PREEMPTION_RATE 10`ms
-#endif
-
-Duration default_preemption() {
-	return PREEMPTION_RATE;
-}
-
-monitor global_t {};
-
-global_t globalA;
-
-thread Acceptor {};
-thread Acceptee {};
-
-volatile bool done;
-
-//----------------------------------------------------------------------------------------------------
-// Acceptor
-void do_notify( global_t * mutex a );
-
-void do_wait( global_t * mutex a ) {
-	sout | "Waiting to accept";
-	yield( random( 10 ) );
-
-	sout | "Accepting";
-
-	__acceptable_t acceptable;
-	acceptable.func          = (fptr_t)do_notify;
-	acceptable.count         = 1;
-	acceptable.monitors      = &a;
-
-	__waitfor_internal( 1, &acceptable );
-
-	sout | "Accepted";
-	yield( random( 10 ) );
-}
-
-void main( Acceptor* this ) {
-	for( int i = 0; i < N; i++ ) {
-		do_wait( &globalA );
-		sout | i;
-	}
-
-	done = true;
-}
-
-//----------------------------------------------------------------------------------------------------
-// Acceptee
-void do_notify( global_t * mutex a ) {
-
-}
-
-void main( Acceptee* this ) {
-	while( !done ) {
-		yield( random( 10 ) );
-		do_notify( &globalA );
-		yield( random( 10 ) );
-	}
-}
-
-//----------------------------------------------------------------------------------------------------
-// Main
-int main(int argc, char* argv[]) {
-	done = false;
-	srandom( time( NULL ) );
-	printf("%p\n", &globalA);
-	sout | "Starting";
-	{
-		Acceptor r;
-		Acceptee e[13];
-
-	}
-	sout | "Done";
-}
Index: tests/concurrent/waitfor/statment.cfa
===================================================================
--- tests/concurrent/waitfor/statment.cfa	(revision 8a919cfec5f277378c3bc7e5d16717f7d44058c6)
+++ 	(revision )
@@ -1,136 +1,0 @@
-#include <fstream.hfa>
-#include <kernel.hfa>
-#include <monitor.hfa>
-#include <thread.hfa>
-
-#include <stdbool.h>
-
-monitor M {
-	int index;
-	int last_val;
-	int calls[7];
-};
-
-volatile bool start = false;
-
-void ?{}( M & this ) {
-	this.index = 0;
-	this.last_val = 0;
-	for( int i = 0; i < 7; i++ ) {
-		this.calls[i] = 100; //10_000;
-	}
-}
-
-void ^?{} ( M &  mutex this ) {}
-
-int get_index( M & mutex this ) {
-	this.index += 1;
-	return this.index;
-}
-
-bool call1( M & mutex this ) {
-	this.last_val = 1;
-	this.calls[0] -= 1;
-	return this.calls[0] > 0;
-}
-
-bool call2( M & mutex this ) {
-	this.last_val = 2;
-	this.calls[1] -= 1;
-	return this.calls[1] > 0;
-}
-
-bool call3( M & mutex this ) {
-	this.last_val = 3;
-	this.calls[2] -= 1;
-	return this.calls[2] > 0;
-}
-
-bool call4( M & mutex this ) {
-	this.last_val = 4;
-	this.calls[3] -= 1;
-	return this.calls[3] > 0;
-}
-
-bool call5( M & mutex this ) {
-	this.last_val = 5;
-	this.calls[4] -= 1;
-	return this.calls[4] > 0;
-}
-
-bool call6( M & mutex this ) {
-	this.last_val = 6;
-	this.calls[5] -= 1;
-	return this.calls[5] > 0;
-}
-
-bool call7( M & mutex this ) {
-	this.last_val = 7;
-	this.calls[6] -= 1;
-	return this.calls[6] > 0;
-}
-
-M m;
-thread caller{};
-
-bool call( int index ) {
-	switch( index ) {
-		case 1: return call1( m );
-		case 2: return call2( m );
-		case 3: return call3( m );
-		case 4: return call4( m );
-		case 5: return call5( m );
-		case 6: return call6( m );
-		case 7: return call7( m );
-		default :
-			serr | "Incorrect index" | index;
-			abort();
-	}
-}
-
-void main( caller & this ) {
-	int index = get_index( m );
-	while( !start ) yield();
-	while( call( index ) );
-}
-
-void do_wait( M & mutex this ) {
-	bool done = false;
-
-	start = true;
-
-	while( !done ) {
-		   waitfor( get_index : this );
-		or waitfor( call1 : this ) { sout | "Statement"; if( this.last_val != 1 ) { serr | "Incorrect index: expected" | 1 | "got" | this.last_val; } }
-		or waitfor( call2 : this ) { sout | "Statement"; if( this.last_val != 2 ) { serr | "Incorrect index: expected" | 2 | "got" | this.last_val; } }
-		or waitfor( call3 : this ) { sout | "Statement"; if( this.last_val != 3 ) { serr | "Incorrect index: expected" | 3 | "got" | this.last_val; } }
-		or waitfor( call4 : this ) { sout | "Statement"; if( this.last_val != 4 ) { serr | "Incorrect index: expected" | 4 | "got" | this.last_val; } }
-		or waitfor( call5 : this ) { sout | "Statement"; if( this.last_val != 5 ) { serr | "Incorrect index: expected" | 5 | "got" | this.last_val; } }
-		or waitfor( call6 : this ) { sout | "Statement"; if( this.last_val != 6 ) { serr | "Incorrect index: expected" | 6 | "got" | this.last_val; } }
-		or waitfor( call7 : this ) { sout | "Statement"; if( this.last_val != 7 ) { serr | "Incorrect index: expected" | 7 | "got" | this.last_val; } }
-
-		done = true;
-		for( int i = 0; i < 7; i++ ) {
-			if( this.calls[i] > 0 ) {
-				done = false;
-				break;
-			}
-		}
-	}
-}
-
-thread waiter{};
-
-void main( waiter & this ) {
-	do_wait( m );
-}
-
-int main() {
-	processor p[2];
-	sout | "Starting";
-	{
-		caller c[7];
-		waiter w;
-	}
-	sout | "Stopping";
-}
Index: tests/concurrent/waitfor/when.cfa
===================================================================
--- tests/concurrent/waitfor/when.cfa	(revision 8a919cfec5f277378c3bc7e5d16717f7d44058c6)
+++ 	(revision )
@@ -1,91 +1,0 @@
-//----------------------------------------------------------------
-// When test
-// Ensures that when clauses on waitfor are respected
-//-----------------------------------------------------------------
-
-#include <fstream.hfa>
-#include <kernel.hfa>
-#include <monitor.hfa>
-#include <stdlib.hfa>
-#include <thread.hfa>
-
-#include <stdbool.h>
-#include <time.h>
-
-static const unsigned long N = 4_998ul;
-
-static inline void rand_yield() { yield(random( 10 )); }
-
-monitor global_t {
-	int last_call;
-	bool done;
-};
-
-void ?{} ( global_t & this ) {
-	this.last_call = 6;
-	this.done = false;
-}
-
-void ^?{} ( global_t & mutex this ) {}
-
-global_t global;
-
-bool call1( global_t & mutex this ) { this.last_call = 1; return this.done; }
-bool call2( global_t & mutex this ) { this.last_call = 2; return this.done; }
-bool call3( global_t & mutex this ) { this.last_call = 3; return this.done; }
-bool call4( global_t & mutex this ) { this.last_call = 4; return this.done; }
-bool call5( global_t & mutex this ) { this.last_call = 5; return this.done; }
-bool call6( global_t & mutex this ) { this.last_call = 6; return this.done; }
-
-thread caller_t{};
-void main( caller_t & this ) {
-	while( true ) {
-		rand_yield();
-		if( call1( global ) ) return;
-		rand_yield();
-		if( call2( global ) ) return;
-		rand_yield();
-		if( call3( global ) ) return;
-		rand_yield();
-		if( call4( global ) ) return;
-		rand_yield();
-		if( call5( global ) ) return;
-		rand_yield();
-		if( call6( global ) ) return;
-	}
-}
-
-void arbiter( global_t & mutex this ) {
-	// There is a race at start where callers can get in before the arbiter.
-	// It doesn't really matter here so just restart the loop correctly and move on
-	this.last_call = 6;
-
-	for( int i = 0; i < N; i++ ) {
-		   when( this.last_call == 6 ) waitfor( call1 : this ) { if( this.last_call != 1) { serr | "Expected last_call to be 1 got" | this.last_call; } }
-		or when( this.last_call == 1 ) waitfor( call2 : this ) { if( this.last_call != 2) { serr | "Expected last_call to be 2 got" | this.last_call; } }
-		or when( this.last_call == 2 ) waitfor( call3 : this ) { if( this.last_call != 3) { serr | "Expected last_call to be 3 got" | this.last_call; } }
-		or when( this.last_call == 3 ) waitfor( call4 : this ) { if( this.last_call != 4) { serr | "Expected last_call to be 4 got" | this.last_call; } }
-		or when( this.last_call == 4 ) waitfor( call5 : this ) { if( this.last_call != 5) { serr | "Expected last_call to be 5 got" | this.last_call; } }
-		or when( this.last_call == 5 ) waitfor( call6 : this ) { if( this.last_call != 6) { serr | "Expected last_call to be 6 got" | this.last_call; } }
-
-		sout | this.last_call;
-	}
-
-	this.done = true;
-}
-
-thread arbiter_t{};
-void main( arbiter_t & this ) {
-	arbiter( global );
-}
-
-int main() {
-	srandom( time(NULL) );
-	sout | "Starting";
-	{
-		arbiter_t arbiter;
-		caller_t callers[7];
-
-	}
-	sout | "Stopping";
-}
Index: tests/concurrent/waituntil/.expect/all_types.txt
===================================================================
--- tests/concurrent/waituntil/.expect/all_types.txt	(revision 8a919cfec5f277378c3bc7e5d16717f7d44058c6)
+++ 	(revision )
@@ -1,6 +1,0 @@
-start
-terminating churner
-waiting for empty channels
-sending sentinels
-joining servers
-done
Index: tests/concurrent/waituntil/.expect/basic_else.txt
===================================================================
--- tests/concurrent/waituntil/.expect/basic_else.txt	(revision 8a919cfec5f277378c3bc7e5d16717f7d44058c6)
+++ 	(revision )
@@ -1,5 +1,0 @@
-else1
-A2
-else3
-A4
-A5
Index: tests/concurrent/waituntil/.expect/channel_close.txt
===================================================================
--- tests/concurrent/waituntil/.expect/channel_close.txt	(revision 8a919cfec5f277378c3bc7e5d16717f7d44058c6)
+++ 	(revision )
@@ -1,10 +1,0 @@
-start OR
-done sleep
-closing A
-closing B
-done
-start AND
-done sleep
-closing A
-closing B
-done
Index: tests/concurrent/waituntil/.expect/channel_zero_size.txt
===================================================================
--- tests/concurrent/waituntil/.expect/channel_zero_size.txt	(revision 8a919cfec5f277378c3bc7e5d16717f7d44058c6)
+++ 	(revision )
@@ -1,4 +1,0 @@
-start
-sending sentinels
-joining servers
-done
Index: tests/concurrent/waituntil/.expect/channels.txt
===================================================================
--- tests/concurrent/waituntil/.expect/channels.txt	(revision 8a919cfec5f277378c3bc7e5d16717f7d44058c6)
+++ 	(revision )
@@ -1,6 +1,0 @@
-start
-terminating churner
-waiting for empty channels
-sending sentinels
-joining servers
-done
Index: tests/concurrent/waituntil/.expect/futures.txt
===================================================================
--- tests/concurrent/waituntil/.expect/futures.txt	(revision 8a919cfec5f277378c3bc7e5d16717f7d44058c6)
+++ 	(revision )
@@ -1,2 +1,0 @@
-start
-end
Index: tests/concurrent/waituntil/.expect/locks.txt
===================================================================
--- tests/concurrent/waituntil/.expect/locks.txt	(revision 8a919cfec5f277378c3bc7e5d16717f7d44058c6)
+++ 	(revision )
@@ -1,6 +1,0 @@
-start
-DONE
-DONE
-DONE
-start recursive acq test
-done
Index: tests/concurrent/waituntil/.expect/one_chan.txt
===================================================================
--- tests/concurrent/waituntil/.expect/one_chan.txt	(revision 8a919cfec5f277378c3bc7e5d16717f7d44058c6)
+++ 	(revision )
@@ -1,5 +1,0 @@
-start
-waiting for empty channels
-sending sentinels
-joining servers
-done
Index: tests/concurrent/waituntil/.expect/timeout.txt
===================================================================
--- tests/concurrent/waituntil/.expect/timeout.txt	(revision 8a919cfec5f277378c3bc7e5d16717f7d44058c6)
+++ 	(revision )
@@ -1,6 +1,0 @@
-timeout
-timeout
-else
-timeout
-timeout
-done
Index: tests/concurrent/waituntil/all_types.cfa
===================================================================
--- tests/concurrent/waituntil/all_types.cfa	(revision 8a919cfec5f277378c3bc7e5d16717f7d44058c6)
+++ 	(revision )
@@ -1,119 +1,0 @@
-#include <select.hfa>
-#include <thread.hfa>
-#include <channel.hfa>
-#include <locks.hfa>
-#include <future.hfa>
-#include <mutex_stmt.hfa>
-
-future( long long int ) F;
-const long long int val_to_deliver = 42;
-
-channel(long long int) A, C;
-
-multiple_acquisition_lock B;
-volatile long long int b_val = 0;
-volatile long long int old_b_val = -1;
-
-volatile bool done = false;
-long long int globalTotal = 0;
-
-void consume_b_val( long long int & myTotal ) {
-    if ( b_val != old_b_val ) {
-        myTotal += b_val;
-        old_b_val++;
-    }
-}
-
-void produce_b_val( long long int & myTotal ) {
-    if ( b_val == old_b_val ) {
-        myTotal += b_val;
-        b_val++;
-    }
-}
-
-thread Server1 {};
-void main( Server1 & this ) {
-    long long int a, b, c, i = 0, myTotal = 0;
-    for( ;;i++ ) {
-        when( i % 2 == 0 ) waituntil( a << A ) { myTotal += a; }
-        or when( i % 4 < 2 ) waituntil( B ) { consume_b_val( myTotal ); }
-        or waituntil( c << C ) { if ( c == -1 ) break; myTotal += c; }
-        or when( i % 3 ) waituntil( timeout( 1`ms ) ) {}
-        or when( i % 8 < 4 ) else {}
-    }
-    __atomic_fetch_add( &globalTotal, myTotal, __ATOMIC_SEQ_CST );
-}
-
-thread Drainer {}; // ensures that the changing when states of Server1 don't result in a deadlock
-void main( Drainer & this ) {
-    long long int a, b, c, myTotal = 0;
-    for( ;; ) {
-        waituntil( F ) { myTotal += get(F); reset( F ); }
-        or waituntil( a << A ) { myTotal += a; }
-        or waituntil( c << C ) { if ( c == -1 ) break; myTotal += c; }
-        or waituntil( B ) { consume_b_val( myTotal ); }
-        or waituntil( timeout( 100`ns ) ) { }
-    }
-    __atomic_fetch_add( &globalTotal, myTotal, __ATOMIC_SEQ_CST );
-}
-
-thread Churner {}; // performs non-waituntil try insert/remove operations to add churn/interference
-void main( Churner & this ) {
-    long long int out, myTotal = 0;
-    bool success;
-    while( !done ) {
-        try_insert( A, 0 );
-        if ( try_lock( B ) ) {
-            consume_b_val( myTotal );
-            unlock( B );
-        }
-        mutex( B ) { consume_b_val( myTotal ); }
-        try_insert( C, 0 );
-        [out, success] = try_remove( A );
-        if ( success ) myTotal += out;
-        [out, success] = try_remove( C );
-        if ( success ) myTotal += out;
-    }
-    __atomic_fetch_add( &globalTotal, myTotal, __ATOMIC_SEQ_CST );
-}
-
-size_t numtimes = 5000;
-size_t numServers = 3;
-int main( int argc, char * argv[] ) {
-    if ( argc == 2 )
-        numtimes = atoi( argv[1] );
-
-    processor p[numServers + 2];
-    A{5};
-    C{5};
-
-    long long int total = 0;
-    printf("start\n");
-    {
-        Server1 s[numServers];
-        Drainer d;
-        {
-            Churner c;
-            for( long long int j = 0; j < numtimes; j++ ) {
-                when( j % 2 == 0 ) waituntil( j >> A ) { total += j; }
-                or when( j % 4 < 2 ) waituntil( B ) { produce_b_val( total ); }
-                and when( j % 8 < 4 ) waituntil( j >> C ) { total += j; }
-                and waituntil( timeout( 1`ns ) ) {}
-                if ( j == numtimes / 2 )
-                    fulfil( F, val_to_deliver );
-            }
-            done = true;
-            printf("terminating churner\n");
-        }
-        printf("waiting for empty channels\n");
-        while( get_count( A ) > 0 || get_count( C ) > 0 ) { }
-        printf("sending sentinels\n");
-        for ( i; numServers + 1 ) insert( C, -1 );
-        printf("joining servers\n");
-    }
-    if ( b_val == old_b_val ) total += b_val;       // handle if last value wasn't produced
-    if ( !available( F ) ) total += val_to_deliver; // handle if future was consumed
-    if ( total != globalTotal ) 
-        printf("CHECKSUM MISMATCH!! Main thread got %lld, server sum is %lld\n", total, globalTotal);
-    printf("done\n");
-}
Index: tests/concurrent/waituntil/basic_else.cfa
===================================================================
--- tests/concurrent/waituntil/basic_else.cfa	(revision 8a919cfec5f277378c3bc7e5d16717f7d44058c6)
+++ 	(revision )
@@ -1,17 +1,0 @@
-#include <select.hfa>
-#include <future.hfa>
-
-future(int) A, B, C;
-
-int main() {
-    waituntil( A ) { printf("A1\n"); } or else { printf("else1\n"); }
-    fulfil( A, 1 );
-    waituntil( A ) { printf("A2\n"); } or else { printf("else2\n"); }
-    reset( A );
-    waituntil( A ) { printf("A3\n"); } or when(true) else { printf("else3\n"); }
-    fulfil( A, 1 );
-    waituntil( A ) { printf("A4\n"); } or when(false) else { printf("else4\n"); }
-    reset( A );
-    fulfil( A, 1 );
-    waituntil( A ) { printf("A5\n"); }
-}
Index: tests/concurrent/waituntil/channel_close.cfa
===================================================================
--- tests/concurrent/waituntil/channel_close.cfa	(revision 8a919cfec5f277378c3bc7e5d16717f7d44058c6)
+++ 	(revision )
@@ -1,94 +1,0 @@
-#include <select.hfa>
-#include <thread.hfa>
-#include <channel.hfa>
-#include <time.hfa>
-
-channel(long long int) A, B;
-
-volatile long long int inserts = 0;
-volatile long long int removes = 0;
-
-thread Producer {};
-void main( Producer & this ) {
-    try {
-        for( long long int i = 0;;i++ ) {
-            waituntil( (i >> A) ) { inserts++; }
-            and waituntil( (i >> B) ) { inserts++; }
-        }
-    } catch ( channel_closed * e ) {} 
-}
-
-bool useAnd = false;
-thread Consumer {}; // ensures that the changing when states of Server1 don't result in a deadlock
-void main( Consumer & this ) {
-    long long int in, in2, A_removes = 0, B_removes = 0;
-    try {
-        for( ;; ) {
-            if ( useAnd ) {
-                waituntil( (in << A) ) { assert( A_removes == in ); A_removes++; removes++; }
-                and waituntil( (in2 << B) ) { assert( B_removes == in2 ); B_removes++; removes++; }
-                continue;
-            }
-            waituntil( (in << A) ) { assert( A_removes == in ); A_removes++; removes++; }
-            or waituntil( (in2 << B) ) { assert( B_removes == in2 ); B_removes++; removes++; }
-        }
-    } catchResume ( channel_closed * e ) {} // continue to remove until would block
-    catch ( channel_closed * e ) {} 
-    try {
-        for( ;; )
-            waituntil( (in << A) ) { assert( A_removes == in ); A_removes++; removes++; }
-    } catchResume ( channel_closed * e ) {} // continue to remove until would block
-    catch ( channel_closed * e ) {} 
-    try {
-        for( ;; )
-            waituntil( (in << B) ) { assert( B_removes == in ); B_removes++; removes++; }
-    } catchResume ( channel_closed * e ) {} // continue to remove until would block
-    catch ( channel_closed * e ) {} 
-}
-
-
-size_t time = 5;
-int main( int argc, char * argv[] ) {
-    if ( argc == 2 )
-        time = atoi( argv[1] );
-
-    processor p[2];
-    A{5};
-    B{5};
-
-    printf("start OR\n");
-    {
-        Producer p;
-        Consumer c;
-        sleep(time`s);
-        printf("done sleep\n");
-        printf("closing A\n");
-        close(A);
-        printf("closing B\n");
-        close(B);
-    }
-    if ( inserts != removes ) 
-        printf("CHECKSUM MISMATCH!! Producer got: %lld, Consumer got: %lld\n", inserts, removes);
-    printf("done\n");
-    ^A{};
-    ^B{};
-
-    inserts = 0;
-    removes = 0;
-    A{5};
-    B{5};
-    printf("start AND\n");
-    {
-        Producer p;
-        Consumer c;
-        sleep(time`s);
-        printf("done sleep\n");
-        printf("closing A\n");
-        close(A);
-        printf("closing B\n");
-        close(B);
-    }
-    if ( inserts != removes ) 
-        printf("CHECKSUM MISMATCH!! Producer got: %lld, Consumer got: %lld\n", inserts, removes);
-    printf("done\n");
-}
Index: tests/concurrent/waituntil/channel_zero_size.cfa
===================================================================
--- tests/concurrent/waituntil/channel_zero_size.cfa	(revision 8a919cfec5f277378c3bc7e5d16717f7d44058c6)
+++ 	(revision )
@@ -1,50 +1,0 @@
-#include <select.hfa>
-#include <thread.hfa>
-#include <channel.hfa>
-
-channel(long long int) A, B, C;
-
-volatile bool done = false;
-long long int globalTotal = 0;
-
-thread Server1 {};
-void main( Server1 & this ) {
-    long long int a, b, c, i = 0, myTotal = 0;
-    for( ;;i++ ) {
-        // printf("loop S\n");
-        waituntil( a << A ) { myTotal += a; }
-        or waituntil( b << B ) { myTotal += b; }
-        or waituntil( c << C ) { if ( c == -1 ) break; myTotal += c; }
-    }
-    __atomic_fetch_add( &globalTotal, myTotal, __ATOMIC_SEQ_CST );
-}
-
-size_t numtimes = 100000;
-size_t numServers = 1;
-int main( int argc, char * argv[] ) {
-    if ( argc == 2 )
-        numtimes = atoi( argv[1] );
-
-    processor p[numServers];
-    A{0};
-    B{0};
-    C{0};
-
-    long long int total = 0;
-    printf("start\n");
-    {
-        Server1 s[numServers];
-        for( long long int j = 0; j < numtimes; j++ ) {
-            // printf("loop\n");
-            waituntil( j >> A ) { total += j; }
-            or waituntil( j >> B ) { total += j; }
-            or waituntil( j >> C ) { total += j; }
-        }
-        printf("sending sentinels\n");
-        for ( i; numServers ) insert( C, -1 );
-        printf("joining servers\n");
-    }
-    if ( total != globalTotal ) 
-        printf("CHECKSUM MISMATCH!! Main thread got %lld, server sum is %lld\n", total, globalTotal);
-    printf("done\n");
-}
Index: tests/concurrent/waituntil/channels.cfa
===================================================================
--- tests/concurrent/waituntil/channels.cfa	(revision 8a919cfec5f277378c3bc7e5d16717f7d44058c6)
+++ 	(revision )
@@ -1,87 +1,0 @@
-#include <select.hfa>
-#include <thread.hfa>
-#include <channel.hfa>
-
-channel(long long int) A, B, C;
-
-volatile bool done = false;
-long long int globalTotal = 0;
-
-thread Server1 {};
-void main( Server1 & this ) {
-    long long int a, b, c, i = 0, myTotal = 0;
-    for( ;;i++ ) {
-        when( i % 2 == 0 ) waituntil( a << A ) { myTotal += a; }
-        or when( i % 4 < 2 ) waituntil( b << B ) { myTotal += b; }
-        or waituntil( c << C ) { if ( c == -1 ) break; myTotal += c; }
-        or when( i % 8 < 4 ) else {}
-    }
-    __atomic_fetch_add( &globalTotal, myTotal, __ATOMIC_SEQ_CST );
-}
-
-thread Drainer {}; // ensures that the changing when states of Server1 don't result in a deadlock
-void main( Drainer & this ) {
-    long long int a, b, c, myTotal = 0;
-    for( ;; ) {
-        waituntil( a << A ) { myTotal += a; }
-        or waituntil( b << B ) { myTotal += b; }
-        or waituntil( c << C ) { if ( c == -1 ) break; myTotal += c; }
-        or else {}
-    }
-    __atomic_fetch_add( &globalTotal, myTotal, __ATOMIC_SEQ_CST );
-}
-
-thread Churner {}; // performs non-waituntil try insert/remove operations to add churn/interference
-void main( Churner & this ) {
-    long long int out, myTotal = 0;
-    bool success;
-    while( !done ) {
-        try_insert( A, 0 );
-        try_insert( B, 0 );
-        try_insert( C, 0 );
-        [out, success] = try_remove( A );
-        if ( success ) myTotal += out;
-        [out, success] = try_remove( B );
-        if ( success ) myTotal += out;
-        [out, success] = try_remove( C );
-        if ( success ) myTotal += out;
-    }
-    __atomic_fetch_add( &globalTotal, myTotal, __ATOMIC_SEQ_CST );
-}
-
-size_t numtimes = 100000;
-size_t numServers = 3;
-int main( int argc, char * argv[] ) {
-    if ( argc == 2 )
-        numtimes = atoi( argv[1] );
-
-    processor p[numServers + 2];
-    A{5};
-    B{5};
-    C{5};
-
-    long long int total = 0;
-    printf("start\n");
-    {
-        Server1 s[numServers];
-        Drainer d;
-        {
-            Churner c;
-            for( long long int j = 0; j < numtimes; j++ ) {
-                when( j % 2 == 0 ) waituntil( j >> A ) { total += j; }
-                or when( j % 4 < 2 ) waituntil( j >> B ) { total += j; }
-                and when( j % 8 < 4 ) waituntil( j >> C ) { total += j; }
-            }
-            done = true;
-            printf("terminating churner\n");
-        }
-        printf("waiting for empty channels\n");
-        while( get_count( A ) > 0 || get_count( B ) > 0 || get_count( C ) > 0 ) { }
-        printf("sending sentinels\n");
-        for ( i; numServers + 1 ) insert( C, -1 );
-        printf("joining servers\n");
-    }
-    if ( total != globalTotal ) 
-        printf("CHECKSUM MISMATCH!! Main thread got %lld, server sum is %lld\n", total, globalTotal);
-    printf("done\n");
-}
Index: tests/concurrent/waituntil/futures.cfa
===================================================================
--- tests/concurrent/waituntil/futures.cfa	(revision 8a919cfec5f277378c3bc7e5d16717f7d44058c6)
+++ 	(revision )
@@ -1,61 +1,0 @@
-#include <select.hfa>
-#include <future.hfa>
-#include <thread.hfa>
-
-future(int) A, B, C;
-
-semaphore s{0};
-
-thread Server1 {};
-void main( Server1 & this ) {
-    fulfil(B, 3);
-    P( s );
-    fulfil(A, 2);
-    fulfil(C, 4);
-}
-
-thread Server2 {};
-void main( Server2 & this ) {
-    fulfil(B, 6);
-    fulfil(A, 5);
-    fulfil(C, 7);
-}
-
-int main() {
-    processor proc[1];
-    printf("start\n"); // currently not working
-    {
-        Server1 s1;
-        waituntil( A ) { get(A); }
-        or waituntil( B ) { get(B); V( s ); }
-        and waituntil( C ) { get(C); }
-    }
-    reset(A);
-    reset(B);
-    reset(C);
-    for ( int i = 0; i < 8; i++ ) {
-        {
-            Server2 s2;
-            when( i % 2 == 0 ) waituntil( A ) { get(A); }
-            or when( i % 4 < 2 ) waituntil( B ) { get(B); }
-            and when( i < 4 ) waituntil( C ) { get(C); }
-        }
-        reset(A);
-        reset(B);
-        reset(C);
-        {
-            Server2 s2;
-            (
-                when( i % 2 == 0 ) waituntil( A ) { get(A); }
-                or when( i % 4 < 2 ) waituntil( B ) { get(B); }
-            )
-            and when( i < 4 ) waituntil( C ) { get(C); }
-        }
-        reset(A);
-        reset(B);
-        reset(C);
-    }
-
-    printf("end\n");
-    return 0;
-}
Index: tests/concurrent/waituntil/locks.cfa
===================================================================
--- tests/concurrent/waituntil/locks.cfa	(revision 8a919cfec5f277378c3bc7e5d16717f7d44058c6)
+++ 	(revision )
@@ -1,73 +1,0 @@
-#include <select.hfa>
-#include <thread.hfa>
-#include <locks.hfa>
-#include <mutex_stmt.hfa>
-
-multiple_acquisition_lock A;
-simple_owner_lock B;
-simple_owner_lock C;
-
-volatile bool done = false;
-
-thread Server1 {};
-void main( Server1 & this ) {
-    while( !done ) {
-        lock(A);
-        unlock(A);
-        lock(B);
-        unlock(B);
-        lock(C);
-        unlock(C);
-        mutex(A,B,C) {};
-    }
-    mutex(sout) sout | "DONE";
-}
-
-size_t numtimes = 10000;
-int main() {
-    processor p[3];
-    int a = 0, b = 0, c = 0;
-    printf("start\n");
-    {
-        Server1 s[3];
-        for( j; numtimes ) {
-            for ( int i = 0; i < 8; i++ ) {
-
-                when( i % 2 == 0 ) waituntil( A ) { a++; }
-                or when( i % 4 < 2 ) waituntil( B ) { b++; }
-                and when( i < 4 ) waituntil( C ) { c++; }
-
-                (
-                    when( i % 2 == 0 ) waituntil( A ) { a++; }
-                    or when( i % 4 < 2 ) waituntil( B ) { b++; }
-                )
-                and when( i < 4 ) waituntil( C ) { c++; }
-                
-                when( i % 2 == 0 ) waituntil( A ) { a++; }
-                and when( i % 4 < 2 ) waituntil( B ) { b++; }
-                and when( i < 4 ) waituntil( C ) { c++; }
-
-                when( i % 2 == 0 ) waituntil( A ) { a++; }
-                or when( i % 4 < 2 ) waituntil( B ) { b++; }
-                or when( i < 4 ) waituntil( C ) { c++; }
-            }
-        }
-        done = true;
-    }
-    printf("start recursive acq test\n");
-    {
-        for( j; 10 ) {
-            lock( A );
-            lock( B );
-        }
-        for ( j; 10 ) {
-            waituntil( A ) { a++; } or waituntil( B ) { b++; }
-            waituntil( B ) { b++; } or waituntil( A ) { a++; }
-        }
-        for( j; 10 ) {
-            unlock( A );
-            unlock( B );
-        }
-    }
-    printf("done\n");
-}
Index: tests/concurrent/waituntil/one_chan.cfa
===================================================================
--- tests/concurrent/waituntil/one_chan.cfa	(revision 8a919cfec5f277378c3bc7e5d16717f7d44058c6)
+++ 	(revision )
@@ -1,44 +1,0 @@
-#include <select.hfa>
-#include <thread.hfa>
-#include <channel.hfa>
-
-channel(long long int) C;
-
-volatile bool done = false;
-long long int globalTotal = 0;
-
-thread Server1 {};
-void main( Server1 & this ) {
-    long long int c, i = 0, myTotal = 0;
-    for( ;;i++ ) {
-        waituntil( c << C ) { if ( c == -1 ) break; myTotal += c; }
-    }
-    __atomic_fetch_add( &globalTotal, myTotal, __ATOMIC_SEQ_CST );
-}
-
-size_t numtimes = 100000;
-size_t numServers = 1;
-int main( int argc, char * argv[] ) {
-    if ( argc == 2 )
-        numtimes = atoi( argv[1] );
-
-    processor p[numServers];
-    C{5};
-
-    long long int total = 0;
-    printf("start\n");
-    {
-        Server1 s[numServers];
-        for( long long int j = 0; j < numtimes; j++ ) {
-            waituntil( j >> C ) { total += j; }
-        }
-        printf("waiting for empty channels\n");
-        printf("sending sentinels\n");
-        for ( i; numServers ) insert( C, -1 );
-        printf("joining servers\n");
-    }
-    assert(get_count( C ) == 0);
-    if ( total != globalTotal ) 
-        printf("CHECKSUM MISMATCH!! Main thread got %lld, server sum is %lld\n", total, globalTotal);
-    printf("done\n");
-}
Index: tests/concurrent/waituntil/timeout.cfa
===================================================================
--- tests/concurrent/waituntil/timeout.cfa	(revision 8a919cfec5f277378c3bc7e5d16717f7d44058c6)
+++ 	(revision )
@@ -1,18 +1,0 @@
-#include <time.hfa>
-#include <alarm.hfa>
-#include <select.hfa>
-#include <stdbool.h>
-#include <stdio.h>
-
-int main() {
-    waituntil( sleep( 1`ms ) ) { printf("timeout\n"); }
-    waituntil( timeout( 1`s ) ) { printf("timeout\n"); } or waituntil( timeout( 2`s ) ) { printf("timeout\n"); }
-    waituntil( timeout( 100`s ) ) { printf("timeout 1\n"); } or else { printf("else\n"); }
-    waituntil( timeout( 1`ns ) ) { printf("timeout\n"); } and waituntil( timeout( 2`s ) ) { printf("timeout\n"); }
-    int count = 0;
-    for ( i; 1000 )
-        waituntil( timeout( 1`ns ) ) { count++; } or else { count++; }
-
-    assert( count == 1000 );
-    printf("done\n");
-}
