<snapdata remixID="12516826"><project name="Autograder-lite" app="Snap! 9.0, https://snap.berkeley.edu" version="2"><notes></notes><thumbnail>data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAKAAAAB4CAYAAAB1ovlvAAAAAXNSR0IArs4c6QAAAvNJREFUeF7t101KI1EARtEXEcUFiFOjoBOdxKkIOvMHBVfkPtyTOzLVmEHTNKQhLek76POGIVUf3DpQ1Gyapmk4CkQFZgBG5c2uCgAIQloAwDS/cQAZSAsAmOY3DiADaQEA0/zGAWQgLQBgmt84gAykBQBM8xsHkIG0AIBpfuMAMpAWADDNbxxABtICAKb5jQPIQFoAwDS/cQAZSAsAmOY3DiADaQEA0/zGAWQgLQBgmt84gAykBQBM8xsHkIG0AIBpfuMAMpAWADDNbxxABtICAKb5jQPIQFoAwDS/cQAZSAsAmOY3DiADaQEA0/zGAWQgLQBgmt84gAykBQBM8xsHkIG0AIBpfuMAMpAWADDNbxxABtICAKb5jQPIQFoAwDS/cQAZSAsAmOY3DiADaQEA0/zGAVxjYLlcjp2dHUK2XADANYEfHh7G8fHxuLq6Gk9PT+Po6GjLj+L/vD2Aa577x8fHeH19HZ+fn2M2m43T09NxcXExvmDe3t6O/f391e/O9woA+Id+7+/v4+3tbezu7v781xfIg4ODcXZ2Nq6vr8fj4+M4Pz9fgXQ2LwDgNwDe3NyM5+fncXJyAuDm9lZXALjBK/jy8nL1Cr67uxt7e3t/mdxlvxYAcI2H+/v7MZ/Px2KxGC8vL+Pw8JCcLRQAcE3UaZp8ZGwB3O+3BPAfRDaxvgCAdKQFAEzzGweQgbQAgGl+4wAykBYAMM1vHEAG0gIApvmNA8hAWgDANL9xABlICwCY5jcOIANpAQDT/MYBZCAtAGCa3ziADKQFAEzzGweQgbQAgGl+4wAykBYAMM1vHEAG0gIApvmNA8hAWgDANL9xABlICwCY5jcOIANpAQDT/MYBZCAtAGCa3ziADKQFAEzzGweQgbQAgGl+4wAykBYAMM1vHEAG0gIApvmNA8hAWgDANL9xABlICwCY5jcOIANpAQDT/MYBZCAtAGCa3ziADKQFAEzzGweQgbQAgGl+4wAykBYAMM1vHEAG0gI/AEK9Drfju6hfAAAAAElFTkSuQmCC</thumbnail><scenes select="1"><scene name="Autograder-lite"><notes></notes><palette><category name="Autograder" color="9,0,179,1"/><category name="Autograder Utils" color="194,0,51,1"/><category name="tests" color="0,204,13,1"/><category name="Fractal" color="0,116,143,1"/></palette><hidden></hidden><headers></headers><code></code><blocks><block-definition s="safely try reporting %&apos;this&apos; then if %&apos;error&apos; report %&apos;that&apos;" type="reporter" category="control"><comment x="0" y="0" w="316.6666666666667" collapsed="false">Catch errors in a reporter.&#xD;&#xD;Evaluates its first input.  If that expression successfully reports a value, this block reports that value.  If the expression causes a Snap! error,&#xD;then the final input slot is evaluated with the text of what would have&#xD;been the error message in variable ERROR.  SAFELY TRY then reports the value of that final expression.&#xD;&#xD;Sometimes you&apos;ll want to throw an error in the final expression.  You&#xD;can put an ERROR block inside a CALL block to do that.</comment><header></header><code></code><translations>ca:prova de forma segura reportant _ i si _ reportant _&#xD;</translations><inputs><input type="%anyUE"></input><input type="%upvar"></input><input type="%anyUE"></input></inputs><script><block s="doDeclareVariables"><list><l>value</l></list></block><custom-block s="safely try %cs then if %upvar %cs"><script><block s="doSetVar"><l>value</l><block s="evaluate"><block var="this"/><list></list></block></block></script><l>err</l><script><block s="doSetVar"><l>error</l><block var="err"/></block><block s="doSetVar"><l>value</l><block s="evaluate"><block var="that"/><list></list></block></block></script></custom-block><block s="doReport"><block var="value"/></block></script></block-definition><block-definition s="all of %&apos;preds&apos;" type="predicate" category="operators"><comment x="0" y="0" w="248" collapsed="false">Takes any number of Boolean (true/false) inputs (use the left and right arrowheads to adjust the number of input slots) and reports TRUE only if all of the inputs are TRUE, otherwise FALSE.  Like AND but for multiple inputs.</comment><header></header><code></code><translations>pt:todas as afirmações _ são verdadeiras&#xD;ca:tots _ ?&#xD;</translations><inputs><input type="%mult%boolUE"></input></inputs><script><block s="doIf"><block s="reportListIsEmpty"><block var="preds"/></block><script><block s="doReport"><block s="reportBoolean"><l><bool>true</bool></l></block></block></script><list></list></block><block s="doReport"><block s="reportVariadicAnd"><list><block s="evaluate"><block s="reportListItem"><l>1</l><block var="preds"/></block><list></list></block><custom-block s="all of %mult%boolUE"><block s="reportCDR"><block var="preds"/></block></custom-block></list></block></block></script></block-definition><block-definition s="repeat while %&apos;pred&apos; %&apos;action&apos;" type="command" category="control"><comment x="0" y="0" w="264" collapsed="false">Runs the script repeatedly, as long as the condition is true. Tests the condition before the first time the script is run.  Like the built in REPEAT UNTIL except that in this block the condition must be true, not false.</comment><header></header><code></code><translations>pt:enquanto _ , repete _ $loop-0.7&#xD;</translations><inputs><input type="%boolUE"></input><input type="%cs"></input></inputs><script><block s="doUntil"><block s="reportNot"><block s="evaluate"><block var="pred"/><list></list></block></block><script><block s="doRun"><block var="action"/><list></list></block></script></block></script></block-definition><block-definition s="safely try %&apos;action&apos; then if %&apos;error&apos; %&apos;handler&apos;" type="command" category="control"><comment x="0" y="0" w="276" collapsed="false">Catch errors.&#xD;&#xD;Runs the first script.  If it succeeds, nothing else happens.&#xD;But if it has an error (something that would otherwise result&#xD;in a red halo around the block), then the second script is run,&#xD;with the text of the error message that would have been shown in the variable ERROR.</comment><header></header><code></code><translations>pt:tenta executar _ e, em caso de erro _ , executa _&#xD;ca:prova de forma segura _ i si _ _&#xD;</translations><inputs><input type="%cs"></input><input type="%upvar"></input><input type="%cs"></input></inputs><script><block s="doApplyExtension"><l>err_try(cmd, catch, err)</l><list><block var="action"/><block var="handler"/><block var="error"/></list></block><block s="doApplyExtension"><l>err_reset</l><list></list></block></script></block-definition><block-definition s="error %&apos;msg&apos;" type="command" category="control"><comment x="0" y="0" w="268.6666666666667" collapsed="false">Throw an error.&#xD;&#xD;Makes a red halo appear around the script that runs it,&#xD;with the input text shown in a speech balloon next to&#xD;the script, just like any Snap! error.&#xD;&#xD;This is useful to put in the second script of SAFELY TRY&#xD;after some other instructions to undo the partial work of&#xD;the first script.</comment><header></header><code></code><translations>pt:lança o erro _&#xD;</translations><inputs><input type="%txt"></input></inputs><script><block s="doApplyExtension"><l>err_error(msg)</l><list><block var="msg"/></list></block></script></block-definition><block-definition s="cascade %&apos;num&apos; times %&apos;function&apos; %&apos;init&apos; %&apos;#&apos;" type="reporter" category="control"><comment x="0" y="0" w="138" collapsed="false">Call f(f(f(...(f(x))))) n times where the three input slots are n, f, and x from left to right.  The # variable can be used inside f to represent how many times f has been called.</comment><header></header><code></code><translations>pt:o resultado de _ invocações em cascata de _ com argumento inicial _ _&#xD;ca:en cascada _ vegades _ _ _&#xD;</translations><inputs><input type="%n"></input><input type="%repRing"></input><input type="%s"></input><input type="%upvar"></input></inputs><script><block s="doDeclareVariables"><list><l>result</l></list></block><block s="doSetVar"><l>result</l><block var="init"/></block><block s="doSetVar"><l>#</l><l>0</l></block><block s="doRepeat"><block var="num"/><script><block s="doChangeVar"><l>#</l><l>1</l></block><block s="doSetVar"><l>result</l><block s="evaluate"><block var="function"/><list><block var="result"/></list></block></block></script></block><block s="doReport"><block var="result"/></block></script></block-definition><block-definition s="cascade until %&apos;pred&apos; %&apos;function&apos; %&apos;init&apos; %&apos;#&apos;" type="reporter" category="control"><comment x="0" y="0" w="210.47493489583334" collapsed="false">Call f(f(f(...(f(x))))) until condition is true, where the three input slots are condition, f, and x from left to right.  The # variable can be used inside f or condition to indicate how many times f has been called.</comment><header></header><code></code><translations>pt:o resultado da invocação em cascata até que _ de _ com argumento inicial _ _&#xD;ca:en cascada fins _ _ _ _&#xD;</translations><inputs><input type="%predRing"></input><input type="%repRing"></input><input type="%s"></input><input type="%upvar"></input></inputs><script><block s="doDeclareVariables"><list><l>result</l></list></block><block s="doSetVar"><l>result</l><block var="init"/></block><block s="doSetVar"><l>#</l><l>0</l></block><block s="doUntil"><block s="evaluate"><block var="pred"/><list><block var="result"/></list></block><script><block s="doChangeVar"><l>#</l><l>1</l></block><block s="doSetVar"><l>result</l><block s="evaluate"><block var="function"/><list><block var="result"/></list></block></block></script></block><block s="doReport"><block var="result"/></block></script></block-definition><block-definition s="repeat %&apos;action&apos; until %&apos;pred&apos;" type="command" category="control"><comment x="0" y="0" w="202.66666666666666" collapsed="false">Like the built-in REPEAT UNTIL block, except that the ending condition is not tested until the script has been run the first time.  So the script is run at least once.</comment><header></header><code></code><translations>pt:repete _ até que _ $loop-0.7&#xD;ca:repeteix _ fins _&#xD;</translations><inputs><input type="%cs"></input><input type="%boolUE"></input></inputs><script><block s="doRun"><block var="action"/><list></list></block><block s="doUntil"><block s="evaluate"><block var="pred"/><list></list></block><script><block s="doRun"><block var="action"/><list></list></block></script></block></script></block-definition><block-definition s="repeat %&apos;num&apos; %&apos;#&apos; %&apos;action&apos;" type="command" category="control"><comment x="0" y="0" w="171" collapsed="false">Runs the script the specified number of times, like the built-in REPEAT block, but this one provides the # variable that can be used inside the script.  Try&#xD;REPEAT (200)&#xD;                MOVE (#) STEPS&#xD;   RIGHT 92&#xD;with the pen down.</comment><header></header><code></code><translations>pt:repete _ vezes _ _ $loop-0.7&#xD;ca:repeteix _ _ _&#xD;</translations><inputs><input type="%n"></input><input type="%upvar"></input><input type="%cs"></input></inputs><script><block s="doSetVar"><l>#</l><l>0</l></block><block s="doRepeat"><block var="num"/><script><block s="doChangeVar"><l>#</l><l>1</l></block><block s="doRun"><block var="action"/><list></list></block></script></block></script></block-definition><block-definition s="repeat %&apos;action&apos; while %&apos;pred&apos;" type="command" category="control"><comment x="0" y="0" w="287.3333333333333" collapsed="false">Run the script repeatedly, as long as the given condition is true.  Runs the script at least once before testing the condition.</comment><header></header><code></code><translations>pt:repete _ enquanto _ $loop-0.7&#xD;ca:repeteix _ mentre _&#xD;</translations><inputs><input type="%cs"></input><input type="%boolUE"></input></inputs><script><block s="doRun"><block var="action"/><list></list></block><block s="doUntil"><block s="reportNot"><block s="evaluate"><block var="pred"/><list></list></block></block><script><block s="doRun"><block var="action"/><list></list></block></script></block></script></block-definition><block-definition s="for %&apos;i&apos; = %&apos;start&apos; step %&apos;step&apos; to %&apos;end&apos; %&apos;action&apos;" type="command" category="control"><comment x="0" y="0" w="247.33333333333334" collapsed="false">The primitive FOR block uses an implicit step of ±1 depending on which of the starting and ending values is larger.  This version allows you to provide an explicit step value.  If the sign of the step input is incompatible with the ordering of the starting and ending values, the script will not be run at all.</comment><header></header><code></code><translations>pt:para _ de _ com passo _ a _ _ $loop-0.7&#xD;ca:per _ = _ incrementant _ fins _ _&#xD;</translations><inputs><input type="%upvar"></input><input type="%n">1</input><input type="%n">1</input><input type="%n">10</input><input type="%cs"></input></inputs><script><block s="doDeclareVariables"><list><l>test</l></list></block><block s="doSetVar"><l>i</l><block var="start"/></block><block s="doIfElse"><block s="reportVariadicLessThan"><list><block var="step"/><l>0</l></list></block><script><block s="doSetVar"><l>test</l><block s="reifyPredicate"><autolambda><block s="reportVariadicLessThan"><list><block var="i"/><block var="end"/></list></block></autolambda><list></list></block></block></script><script><block s="doSetVar"><l>test</l><block s="reifyPredicate"><autolambda><block s="reportVariadicGreaterThan"><list><block var="i"/><block var="end"/></list></block></autolambda><list></list></block></block></script></block><block s="doUntil"><block s="evaluate"><block var="test"/><list></list></block><script><block s="doRun"><block var="action"/><list></list></block><block s="doChangeVar"><l>i</l><block var="step"/></block></script></block></script></block-definition><block-definition s="let %&apos;a&apos; be %&apos;val&apos; in %&apos;loop&apos; %&apos;body&apos;" type="command" category="control"><comment x="0" y="0" w="238.66666666666666" collapsed="false">Provides LOOP as a function of one input that runs&#xD;the body of the LET with A set to the function input,&#xD;so the body can run itself recursively.&#xD;See COPY block in Variables for an example of use.</comment><header></header><code></code><translations>pt:tendo _ o valor inicial _ , executa _ definido como _&#xD;ca:fes que _ sigui _ al _ _&#xD;</translations><inputs><input type="%upvar"></input><input type="%s"></input><input type="%upvar"></input><input type="%cs"></input></inputs><script><block s="doSetVar"><l>a</l><block var="val"/></block><block s="doSetVar"><l>loop</l><block s="reifyScript"><script><block s="doSetVar"><l>a</l><block var="new value"/></block><block s="doRun"><block var="body"/><list><block var="a"/></list></block></script><list><l>new value</l></list></block></block><block s="doRun"><block var="loop"/><list><block var="a"/></list></block></script></block-definition><block-definition s="multimap %&apos;function&apos; over %&apos;lists&apos;" type="reporter" category="lists"><comment x="0" y="0" w="267.3333333333333" collapsed="false">Takes as input a function of N inputs and N lists.&#xD;The function is called with item 1 of all the lists as its inputs, with item 2 of all the lists as its inputs, and so on.  (The lists should all be the same length.)</comment><header></header><code></code><translations>ca:multi-mapeja _ sobre _&#xD;</translations><inputs><input type="%repRing"></input><input type="%mult%l"></input></inputs><script><block s="doReport"><block s="reportMap"><block s="reifyReporter"><autolambda><block s="evaluate"><block var="function"/><custom-block s="%s"><l></l></custom-block></block></autolambda><list></list></block><custom-block s="$flash zip %mult%l"><block var="lists"/></custom-block></block></block></script></block-definition><block-definition s="%&apos;x&apos;" type="reporter" category="lists"><comment x="0" y="0" w="105.33333333333333" collapsed="false">The identity function reports its input.</comment><header></header><code></code><translations></translations><inputs><input type="%s"></input></inputs><script><block s="doReport"><block var="x"/></block></script></block-definition><block-definition s="$flash zip %&apos;lists&apos;" type="reporter" category="lists"><comment x="0" y="0" w="192" collapsed="false">ZIP takes any number of lists as inputs.  The lists should all be the same length.  ZIP reports a list of lists in which the first item is a list of all the first items, the second item is a list of all the second items, etc.&#xD;Viewing the inputs as the rows of a matrix, ZIP reports its transpose.</comment><header></header><code></code><translations></translations><inputs><input type="%mult%l"></input></inputs><script><block s="doReport"><block s="reportListAttribute"><l><option>columns</option></l><block var="lists"/></block></block></script></block-definition><block-definition s="%&apos;#&apos; for each %&apos;item&apos; of %&apos;data&apos; %&apos;action&apos;" type="command" category="lists"><comment x="0" y="0" w="228.57142857142858" collapsed="false">This block carries out the given script for each item of the given list, like the primitive FOR EACH.&#xD;&#xD;What&apos;s different is that it provides the # variable, which will contain the item number in the list of each item in turn, 1 while processing item 1, and so on.</comment><header></header><code></code><translations>ca:_ per cada _ de _ _&#xD;</translations><inputs><input type="%upvar"></input><input type="%upvar"></input><input type="%l"></input><input type="%ca"></input></inputs><script><block s="doForEach"><l>inner item</l><block var="data"/><script><block s="doSetVar"><l>item</l><block var="inner item"/></block><block s="doChangeVar"><l>#</l><l>1</l></block><block s="doRun"><block var="action"/><list></list></block></script></block></script></block-definition></blocks><stage name="Stage" width="480" height="360" costume="0" color="255,255,255,1" tempo="60" threadsafe="false" penlog="false" volume="100" pan="0" lines="round" ternary="false" hyperops="true" codify="false" inheritance="true" sublistIDs="false" id="359"><pentrails>data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAeAAAAFoCAYAAACPNyggAAAAAXNSR0IArs4c6QAADoVJREFUeF7t1cEJAAAIxDDdf2m3sJ+4wEEQuuMIECBAgACBd4F9XzRIgAABAgQIjAB7AgIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECByxcQFpoRMBzwAAAABJRU5ErkJggg==</pentrails><costumes><list struct="atomic" id="360"></list></costumes><sounds><list struct="atomic" id="361"></list></sounds><variables></variables><blocks></blocks><scripts></scripts><sprites select="1"><sprite name="autograder" idx="1" x="0" y="0" heading="90" scale="1" volume="100" pan="0" rotation="1" draggable="true" costume="0" color="30,30,30,1" pen="tip" id="366"><costumes><list struct="atomic" id="367"></list></costumes><sounds><list struct="atomic" id="368"></list></sounds><blocks><block-definition s="set up autograder" type="command" category="Autograder"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doDeclareVariables"><list><l>try running?</l><l>blocks</l></list></block><block s="doSetVar"><l>student</l><l></l></block><custom-block s="safely try %cs then if %upvar %cs"><script><block s="doSetVar"><l>student</l><custom-block s="get block %txt" scope="local"><l>name of block with input _</l></custom-block></block><block s="doSetVar"><l>try running?</l><block s="reportBoolean"><l><bool>true</bool></l></block></block><block s="doSetVar"><l>recursively called?</l><custom-block s="isRecursive %cmdRing" scope="local"><block var="student"/></custom-block></block></script><l>error</l><script><block s="doSetVar"><l>try running?</l><block s="reportBoolean"><l><bool>false</bool></l></block></block></script></custom-block><block s="doSetVar"><l>fractal matches exactly?</l><block s="reportBoolean"><l><bool>false</bool></l></block></block><block s="doSetVar"><l>tests</l><block s="reportNewList"><list><block s="reportNewList"><list><block var="try running?"/><block s="reifyReporter"><autolambda><custom-block s="Test: correct fractal drawing %s" scope="local"><block var="student"/></custom-block></autolambda><list></list></block><l>1</l></list></block><block s="reportNewList"><list><block var="try running?"/><block s="reifyReporter"><autolambda><custom-block s="Test: correct base case condition %s" scope="local"><block var="student"/></custom-block></autolambda><list></list></block><l>1</l></list></block><block s="reportNewList"><list><block var="try running?"/><block s="reifyReporter"><autolambda><custom-block s="Test: correct base case drawing %s" scope="local"><block var="student"/></custom-block></autolambda><list></list></block><l>1</l></list></block><block s="reportNewList"><list><block var="try running?"/><block s="reifyReporter"><autolambda><custom-block s="Test: correct number of recursive calls %s" scope="local"><block var="student"/></custom-block></autolambda><list></list></block><l>1</l></list></block><block s="reportNewList"><list><block var="try running?"/><block s="reifyReporter"><autolambda><custom-block s="Test: correct recursive inputs %s" scope="local"><block var="student"/></custom-block></autolambda><list></list></block><l>1</l></list></block><block s="reportNewList"><list><block var="try running?"/><block s="reifyReporter"><autolambda><custom-block s="Test: correct final sprite direction %s" scope="local"><block var="student"/></custom-block></autolambda><list></list></block><l>1</l></list></block><block s="reportNewList"><list><block var="try running?"/><block s="reifyReporter"><autolambda><custom-block s="Test: add two to numbers in a list %s" scope="local"><block var="student"/></custom-block></autolambda><list></list></block><l>1</l></list></block></list></block></block></script></block-definition><block-definition s="grade" type="reporter" category="Autograder"><comment x="0" y="0" w="127" collapsed="false">Return a string in the Gradescope JSON format:&#xD;    {&quot;tests&quot;: [&#xD;        &lt;test 1&gt;,&#xD;        &lt;test 2&gt;,&#xD;        ...&#xD;    ]}&#xD;&#xD;See the &quot;format&quot; reporter under Autograder Utils.</comment><header></header><code></code><translations></translations><inputs></inputs><script><block s="doReport"><block s="reportJoinWords"><list><l>{"tests":[</l><block s="reportCombine"><block s="reportMap"><block s="reifyReporter"><autolambda><custom-block s="run %l waiting up to %n seconds" scope="local"><l/><l>10</l></custom-block></autolambda><list></list></block><block var="tests"/></block><block s="reifyReporter"><autolambda><block s="reportJoinWords"><list><l></l><l>,</l><l></l></list></block></autolambda><list></list></block></block><l>]}</l></list></block></block></script></block-definition><block-definition s="get block %&apos;label&apos;" type="reporter" category="Autograder Utils"><comment x="0" y="0" w="307.23078125000006" collapsed="false">The label of a block is its signature with &quot;_&quot; substituted for any input slot. For example, &quot;find block with label _&quot; is the label of this block.</comment><header></header><code></code><translations></translations><inputs><input type="%txt"></input></inputs><script><block s="doDeclareVariables"><list><l>result</l></list></block><block s="doSetVar"><l>result</l><block s="reportFindFirst"><block s="reifyPredicate"><autolambda><block s="reportVariadicEquals"><list><block s="reportBlockAttribute"><l><option>label</option></l><block var="block"/></block><block var="label"/></list></block></autolambda><list><l>block</l></list></block><block s="reportGet"><l><option>blocks</option></l></block></block></block><block s="doIf"><block s="reportIsA"><block var="result"/><l><option>text</option></l></block><script><custom-block s="error %txt"><block s="reportJoinWords"><list><l>Missing block with label: </l><block var="label"/></list></block></custom-block></script><list></list></block><block s="doReport"><block var="result"/></block></script></block-definition><block-definition s="run %&apos;data for one test&apos; waiting up to %&apos;wait seconds&apos; seconds" type="reporter" category="Autograder Utils"><header></header><code></code><translations></translations><inputs><input type="%l"></input><input type="%n">5</input></inputs><script><block s="doDeclareVariables"><list><l>run test?</l><l>test block</l><l>test name</l><l>max score</l></list></block><block s="doSetVar"><l>run test?</l><block s="reportListItem"><l>1</l><block var="data for one test"/></block></block><block s="doSetVar"><l>test block</l><block s="reportListItem"><l>2</l><block var="data for one test"/></block></block><block s="doSetVar"><l>test name</l><block s="reportBlockAttribute"><l><option>label</option></l><block var="test block"/></block></block><block s="doSetVar"><l>max score</l><block s="reportListItem"><l>3</l><block var="data for one test"/></block></block><block s="doIf"><block s="reportNot"><block var="run test?"/></block><script><block s="doReport"><custom-block s="format: score earned= %n , max score= %n , name= %txt , message= %txt" scope="local"><l>0</l><block var="max score"/><block var="test name"/><l>Test skipped.</l></custom-block></block></script><list></list></block><block s="doDeclareVariables"><list><l>test result</l></list></block><block s="doSetVar"><l>test result</l><block s="reportNewList"><list></list></block></block><block s="doResetTimer"></block><block s="doSetVar"><l>test result</l><block s="evaluate"><block var="test block"/><list></list></block></block><block s="doStopThis"><l><option>all but this script</option></l></block><block s="doIf"><block s="reportListIsEmpty"><block var="test result"/></block><script><block s="doReport"><custom-block s="format: score earned= %n , max score= %n , name= %txt , message= %txt" scope="local"><l>0</l><block var="max score"/><block var="test name"/><l>Test timed out.</l></custom-block></block></script><list></list></block><block s="doDeclareVariables"><list><l>test passed?</l><l>feedback</l><l>score earned</l></list></block><block s="doSetVar"><l>test passed?</l><block s="reportListItem"><l>1</l><block var="test result"/></block></block><block s="doSetVar"><l>feedback</l><block s="reportListItem"><l>2</l><block var="test result"/></block></block><block s="doSetVar"><l>score earned</l><block s="reportVariadicProduct"><list><block var="test passed?"/><block var="max score"/></list></block></block><block s="doReport"><custom-block s="format: score earned= %n , max score= %n , name= %txt , message= %txt" scope="local"><block var="score earned"/><block var="max score"/><block var="test name"/><block var="feedback"/></custom-block></block></script></block-definition><block-definition s="format: score earned= %&apos;earned&apos; , max score= %&apos;max score&apos; , name= %&apos;name&apos; , message= %&apos;message&apos;" type="reporter" category="Autograder Utils"><header></header><code></code><translations></translations><inputs><input type="%n">0</input><input type="%n">0</input><input type="%txt"></input><input type="%txt"></input></inputs><script><block s="doReport"><block s="evaluate"><block s="reportJSFunction"><list><l>earned</l><l>total</l><l>name</l><l>message</l></list><l>    return JSON.stringify({&#xD;        "score": parseFloat(earned),&#xD;        "max_score": parseFloat(total),&#xD;        "name": name.replaceAll(" _", ""),&#xD;        "output": message&#xD;    });</l></block><list><block var="earned"/><block var="max score"/><block var="name"/><block var="message"/></list></block></block></script></block-definition><block-definition s="%&apos;A&apos; equals %&apos;B&apos; under %&apos;f&apos;" type="reporter" category="Fractal"><header></header><code></code><translations></translations><inputs><input type="%cmdRing"></input><input type="%cmdRing"></input><input type="%repRing"></input></inputs><script><block s="doReport"><custom-block s="safely try reporting %anyUE then if %upvar report %anyUE"><block s="reportVariadicEquals"><list><block s="evaluate"><block var="f"/><list><block var="A"/></list></block><block s="evaluate"><block var="f"/><list><block var="B"/></list></block></list></block><l>error</l><block s="reportBoolean"><l><bool>false</bool></l></block></custom-block></block></script></block-definition><block-definition s="get pixels of %&apos;fractal&apos; with n= %&apos;n&apos; length= %&apos;length&apos; waiting %&apos;seconds&apos; second(s)" type="reporter" category="Fractal"><header></header><code></code><translations></translations><inputs><input type="%cmdRing"></input><input type="%n">5</input><input type="%s">2</input><input type="%n">10</input></inputs><script><block s="doResetTimer"></block><block s="fork"><block s="reifyScript"><script><custom-block s="draw %cmdRing with n= %s length= %s" scope="local"><block var="fractal"/><block var="n"/><block var="length"/></custom-block></script><list></list></block><list></list></block><block s="doWaitUntil"><block s="reportVariadicGreaterThan"><list><block s="getTimer"></block><block var="seconds"/></list></block></block><block s="doStopThis"><l><option>all but this script</option></l></block><block s="doReport"><block s="reportGetImageAttribute"><l><option>pixels</option></l><block s="reportPenTrailsAsCostume"></block></block></block></script><scripts><script x="236.93464843750007" y="114.33333333333331"><block var="secret number"/></script></scripts></block-definition><block-definition s="draw %&apos;fractal&apos; with n= %&apos;n&apos; length= %&apos;length&apos;" type="command" category="Fractal"><header></header><code></code><translations></translations><inputs><input type="%cmdRing"></input><input type="%s"></input><input type="%s"></input></inputs><script><block s="doWarp"><script><block s="setSize"><l>1</l></block><block s="setColor"><color>30,30,30,1</color></block><block s="down"></block><block s="setHeading"><l>90</l></block><block s="doIfElse"><block s="reportVariadicEquals"><list><block var="secret number"/><l>51</l></list></block><script><block s="gotoXY"><l>-150</l><l>-150</l></block><block s="clear"></block></script><script><block s="gotoXY"><l>0</l><l>0</l></block><block s="clear"></block></script></block><block s="doRun"><block var="fractal"/><list><block var="n"/><block var="length"/></list></block><block s="up"></block></script></block></script></block-definition><block-definition s="Test: ALL tests" type="reporter" category="tests"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doDeclareVariables"><list><l>tests</l></list></block><block s="doSetVar"><l>tests</l><block s="reportNewList"><list><custom-block s="Test: correct fractal drawing %s" scope="local"><block var="student"/></custom-block><custom-block s="Test: correct base case condition %s" scope="local"><block var="student"/></custom-block><custom-block s="Test: correct base case drawing %s" scope="local"><block var="student"/></custom-block><custom-block s="Test: correct number of recursive calls %s" scope="local"><block var="student"/></custom-block><custom-block s="Test: correct recursive inputs %s" scope="local"><block var="student"/></custom-block><custom-block s="Test: correct final sprite direction %s" scope="local"><block var="student"/></custom-block></list></block></block><custom-block s="safely try %cs then if %upvar %cs"><script><block s="doIfElse"><block s="reportVariadicAnd"><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportListItem"><l>1</l><l/></block></autolambda><list></list></block><block var="tests"/></block></block><script><block s="doReport"><block s="reportNewList"><list><block s="reportBoolean"><l><bool>true</bool></l></block><l>Test passed!</l></list></block></block></script><script><block s="doReport"><block s="reportNewList"><list><block s="reportBoolean"><l><bool>false</bool></l></block><l>Test failed.</l></list></block></block></script></block></script><l>error</l><script><block s="doReport"><block s="reportNewList"><list><block s="reportBoolean"><l><bool>false</bool></l></block><l>Test failed.</l></list></block></block></script></custom-block></script></block-definition><block-definition s="constraints: Recursion %&apos;student&apos;" type="predicate" category="Autograder"><header></header><code></code><translations></translations><inputs><input type="%s"></input></inputs><script><block s="doDeclareVariables"><list><l>ast</l><l>forbidden blocks</l></list></block><block s="doSetVar"><l>ast</l><block s="reportTextSplit"><block s="reportBlockAttribute"><l><option>definition</option></l><block var="student"/></block><l><option>blocks</option></l></block></block><block s="doSetVar"><l>forbidden blocks</l><block s="reportNewList"><list><block s="reifyReporter"><autolambda><block s="reportMap"><block s="reifyReporter"><script></script><list></list></block><l/></block></autolambda><list></list></block><block s="reifyReporter"><autolambda><block s="reportKeep"><block s="reifyPredicate"><script></script><list></list></block><l/></block></autolambda><list></list></block><block s="reifyReporter"><autolambda><block s="reportFindFirst"><block s="reifyPredicate"><script></script><list></list></block><l/></block></autolambda><list></list></block><block s="reifyReporter"><autolambda><block s="reportCombine"><l/><block s="reifyReporter"><script></script><list></list></block></block></autolambda><list></list></block><block s="reifyScript"><script><block s="doForEach"><l>item</l><l/><script></script></block></script><list></list></block><block s="reifyScript"><script><block s="doFor"><l>i</l><l></l><l></l><script></script></block></script><list></list></block><block s="reifyScript"><script><block s="doUntil"><l/><script></script></block></script><list></list></block><block s="reifyScript"><script><block s="doRepeat"><l></l><script></script></block></script><list></list></block><block s="reifyScript"><script><block s="doCallCC"><block s="reifyScript"><script></script><list></list></block></block></script><list></list></block><block s="reifyScript"><script><custom-block s="repeat %cs until %boolUE"><script></script><l/></custom-block></script><list></list></block><block s="reifyReporter"><autolambda><custom-block s="cascade until %predRing %repRing %s %upvar"><block s="reifyPredicate"><script></script><list></list></block><block s="reifyReporter"><script></script><list></list></block><l></l><l>#</l></custom-block></autolambda><list></list></block><block s="reifyReporter"><autolambda><custom-block s="cascade %n times %repRing %s %upvar"><l></l><block s="reifyReporter"><script></script><list></list></block><l></l><l>#</l></custom-block></autolambda><list></list></block><block s="reifyScript"><script><custom-block s="repeat %cs while %boolUE"><script></script><l/></custom-block></script><list></list></block><block s="reifyScript"><script><custom-block s="repeat while %boolUE %cs"><l/><script></script></custom-block></script><list></list></block><block s="reifyScript"><script><custom-block s="repeat %n %upvar %cs"><l></l><l>#</l><script></script></custom-block></script><list></list></block><block s="reifyScript"><script><custom-block s="for %upvar = %n step %n to %n %cs"><l>i</l><l></l><l></l><l></l><script></script></custom-block></script><list></list></block><block s="reifyScript"><script><custom-block s="let %upvar be %s in %upvar %cs"><l>a</l><l></l><l>loop</l><script></script></custom-block></script><list></list></block><block s="reifyScript"><script><custom-block s="%upvar for each %upvar of %l %ca"><l>#</l><l>item</l><l/><script></script></custom-block></script><list></list></block><block s="reifyReporter"><autolambda><custom-block s="multimap %repRing over %mult%l"><block s="reifyReporter"><script></script><list></list></block><list><l/></list></custom-block></autolambda><list></list></block></list></block></block><block s="doReport"><block s="reportVariadicAnd"><list><block s="reportVariadicGreaterThan"><list><custom-block s="count occurrences of %repRing in %l" scope="local"><block var="student"/><block var="ast"/></custom-block><l>1</l></list></block><block s="reportVariadicEquals"><list><l>0</l><block s="reportCombine"><block s="reportMap"><block s="reifyReporter"><autolambda><custom-block s="count occurrences of %repRing in %l" scope="local"><block var="block"/><block var="ast"/></custom-block></autolambda><list><l>block</l></list></block><block var="forbidden blocks"/></block><block s="reifyReporter"><autolambda><block s="reportVariadicSum"><list><l></l><l></l></list></block></autolambda><list></list></block></block></list></block></list></block></block></script></block-definition><block-definition s="Correct: fractal %&apos;levels&apos; %&apos;length&apos;" type="command" category="Fractal"><header></header><code></code><translations></translations><inputs><input type="%s"></input><input type="%s"></input></inputs><script><block s="doDeclareVariables"><list><l>new length</l></list></block><block s="doSetVar"><l>new length</l><block s="reportVariadicProduct"><list><block var="length"/><block s="reportQuotient"><l>10</l><l>11</l></block></list></block></block><block s="doIfElse"><block s="reportVariadicEquals"><list><block var="levels"/><l>1</l></list></block><script><block s="forward"><block var="length"/></block></script><script><custom-block s="Correct: fractal %s %s" scope="local"><block s="reportDifference"><block var="levels"/><l>1</l></block><block var="new length"/></custom-block><block s="forward"><block var="length"/></block><block s="turnLeft"><l>90</l></block><block s="forward"><block var="length"/></block><block s="turn"><l>90</l></block><block s="forward"><block var="length"/></block><block s="turnLeft"><l>90</l></block><custom-block s="Correct: fractal %s %s" scope="local"><block s="reportDifference"><block var="levels"/><l>1</l></block><block var="new length"/></custom-block><block s="forward"><block var="length"/></block><block s="turn"><l>90</l></block><custom-block s="Correct: fractal %s %s" scope="local"><block s="reportDifference"><block var="levels"/><l>1</l></block><block var="new length"/></custom-block><block s="turn"><l>90</l></block><custom-block s="Correct: fractal %s %s" scope="local"><block s="reportDifference"><block var="levels"/><l>1</l></block><block var="new length"/></custom-block><block s="forward"><block var="length"/></block><block s="turnLeft"><l>90</l></block><block s="forward"><block var="length"/></block><block s="turn"><l>90</l></block><block s="forward"><block var="length"/></block><block s="turnLeft"><l>90</l></block><custom-block s="Correct: fractal %s %s" scope="local"><block s="reportDifference"><block var="levels"/><l>1</l></block><block var="new length"/></custom-block></script></block></script></block-definition><block-definition s="Test: correct base case condition %&apos;block&apos;" type="reporter" category="tests"><header></header><code></code><translations></translations><inputs><input type="%s"></input></inputs><script><custom-block s="safely try %cs then if %upvar %cs"><script><block s="doIf"><block s="reportNot"><block var="recursively called?"/></block><script><block s="doReport"><block s="reportNewList"><list><block s="reportBoolean"><l><bool>false</bool></l></block><l>Solution MUST be recursive.</l></list></block></block></script><list></list></block><block s="doIfElse"><block var="fractal matches exactly?"/><script><block s="doReport"><block s="reportNewList"><list><block s="reportBoolean"><l><bool>true</bool></l></block><l>Test passed!</l></list></block></block></script><script><block s="doIfElse"><custom-block s="base case condition %s" scope="local"><block var="block"/></custom-block><script><block s="doReport"><block s="reportNewList"><list><block s="reportBoolean"><l><bool>true</bool></l></block><l>Test passed!</l></list></block></block></script><script><block s="doReport"><block s="reportNewList"><list><block s="reportBoolean"><l><bool>false</bool></l></block><l>Test failed.</l></list></block></block></script></block></script></block></script><l>error</l><script><block s="doReport"><block s="reportNewList"><list><block s="reportBoolean"><l><bool>false</bool></l></block><block var="error"/></list></block></block></script></custom-block></script></block-definition><block-definition s="base case condition %&apos;block&apos;" type="predicate" category="Fractal"><header></header><code></code><translations></translations><inputs><input type="%s"></input></inputs><script><block s="doDeclareVariables"><list><l>conditional calls</l><l>tree</l></list></block><block s="doSetVar"><l>tree</l><block s="reportTextSplit"><block s="reportBlockAttribute"><l><option>definition</option></l><block var="block"/></block><l><option>blocks</option></l></block></block><block s="doSetVar"><l>conditional calls</l><block s="reportConcatenatedLists"><list><custom-block s="calls of %s in %s" scope="local"><block s="reifyScript"><script><block s="doIf"><l/><script></script><list></list></block></script><list></list></block><block var="tree"/></custom-block><custom-block s="calls of %s in %s" scope="local"><block s="reifyScript"><script><block s="doIfElse"><l/><script></script><script></script></block></script><list></list></block><block var="tree"/></custom-block></list></block></block><block s="doIf"><block s="reportVariadicLessThan"><list><block s="reportListAttribute"><l><option>length</option></l><block var="conditional calls"/></block><l>1</l></list></block><script><block s="doReport"><block s="reportBoolean"><l><bool>false</bool></l></block></block></script><list></list></block><block s="doReport"><custom-block s="safely try reporting %anyUE then if %upvar report %anyUE"><block s="evaluate"><block s="reportJoinWords"><custom-block s="substitute variable %s with value %s in %s" scope="local"><l>levels</l><l>1</l><block s="reportListItem"><l>1</l><block s="reportListItem"><l>2</l><block s="reportListAttribute"><l><option>columns</option></l><block var="conditional calls"/></block></block></block></custom-block></block><list></list></block><l>error</l><block s="reportBoolean"><l><bool>false</bool></l></block></custom-block></block></script></block-definition><block-definition s="substitute variable %&apos;name&apos; with value %&apos;value&apos; in %&apos;tree&apos;" type="reporter" category="Fractal"><header></header><code></code><translations></translations><inputs><input type="%s"></input><input type="%s"></input><input type="%s"></input></inputs><script><block s="doIf"><block s="reportNot"><block s="reportIsA"><block var="tree"/><l><option>list</option></l></block></block><script><block s="doReport"><block var="tree"/></block></script><list></list></block><block s="doIf"><block s="reportVariadicAnd"><list><block s="reportVariadicAnd"><list><block s="reportVariadicEquals"><list><block s="reportListAttribute"><l><option>length</option></l><block var="tree"/></block><l>2</l></list></block><block s="reportIsA"><block s="reportListItem"><l>1</l><block var="tree"/></block><l><option>reporter</option></l></block></list></block><block s="reportVariadicEquals"><list><block s="reportBlockAttribute"><l><option>label</option></l><block s="reportJoinWords"><block var="tree"/></block></block><block var="name"/></list></block></list></block><script><block s="doReport"><block var="value"/></block></script><list></list></block><block s="doReport"><block s="reportMap"><block s="reifyReporter"><autolambda><custom-block s="substitute variable %s with value %s in %s" scope="local"><block var="name"/><block var="value"/><l></l></custom-block></autolambda><list></list></block><block var="tree"/></block></block></script></block-definition><block-definition s="calls of %&apos;block&apos; in %&apos;tree&apos;" type="reporter" category="Fractal"><header></header><code></code><translations></translations><inputs><input type="%s"></input><input type="%s"></input></inputs><script><block s="doIf"><block s="reportVariadicOr"><list><block s="reportNot"><block s="reportIsA"><block var="tree"/><l><option>list</option></l></block></block><block s="reportListIsEmpty"><block var="tree"/></block></list></block><script><block s="doReport"><block s="reportNewList"><list></list></block></block></script><list></list></block><block s="doIf"><block s="reportVariadicEquals"><list><block s="reportListItem"><l>1</l><block var="tree"/></block><block var="block"/></list></block><script><block s="doReport"><block s="reportCONS"><block var="tree"/><custom-block s="calls of %s in %s" scope="local"><block var="block"/><block s="reportCDR"><block var="tree"/></block></custom-block></block></block></script><list></list></block><block s="doReport"><block s="reportConcatenatedLists"><block s="reportMap"><block s="reifyReporter"><autolambda><custom-block s="calls of %s in %s" scope="local"><block var="block"/><l></l></custom-block></autolambda><list></list></block><block var="tree"/></block></block></block></script></block-definition><block-definition s="Test: correct base case drawing %&apos;block&apos;" type="reporter" category="tests"><header></header><code></code><translations></translations><inputs><input type="%s"></input></inputs><script><custom-block s="safely try %cs then if %upvar %cs"><script><block s="doIf"><block s="reportNot"><block var="recursively called?"/></block><script><block s="doReport"><block s="reportNewList"><list><block s="reportBoolean"><l><bool>false</bool></l></block><l>Solution MUST be recursive.</l></list></block></block></script><list></list></block><block s="doIfElse"><block var="fractal matches exactly?"/><script><block s="doReport"><block s="reportNewList"><list><block s="reportBoolean"><l><bool>true</bool></l></block><l>Test passed!</l></list></block></block></script><script><block s="doIfElse"><custom-block s="%cmdRing equals %cmdRing under %repRing" scope="local"><block var="block"/><block s="reifyScript"><script><custom-block s="base case drawing %s %s" scope="local"><l></l><l></l></custom-block></script><list></list></block><block s="reifyReporter"><autolambda><custom-block s="get pixels of %cmdRing with n= %n length= %s waiting %n second(s)" scope="local"><block s="reifyScript"><script></script><list></list></block><l>1</l><l>50</l><l>10</l></custom-block></autolambda><list></list></block></custom-block><script><block s="doReport"><block s="reportNewList"><list><block s="reportBoolean"><l><bool>true</bool></l></block><l>Test passed!</l></list></block></block></script><script><block s="doReport"><block s="reportNewList"><list><block s="reportBoolean"><l><bool>false</bool></l></block><l>Test failed.</l></list></block></block></script></block></script></block></script><l>error</l><script><block s="doReport"><block s="reportNewList"><list><block s="reportBoolean"><l><bool>false</bool></l></block><block var="error"/></list></block></block></script></custom-block></script><scripts><script x="399.6416015625" y="46.333333333333314"><custom-block s="base case condition %s" scope="local"><block var="block"/></custom-block></script></scripts></block-definition><block-definition s="Midterm Fractal n= %&apos;n&apos; steps len= %&apos;len&apos; version= %&apos;version&apos;" type="command" category="Fractal"><header></header><code></code><translations></translations><inputs><input type="%s"></input><input type="%s"></input><input type="%s"></input></inputs><script><block s="doIf"><block s="reportVariadicEquals"><list><block var="version"/><l>1</l></list></block><script><custom-block s="draw %cmdRing with n= %s length= %s" scope="local"><block s="reifyScript"><script><custom-block s="Correct: fractal %s %s" scope="local"><l></l><l></l></custom-block></script><list></list></block><block var="n"/><block var="len"/></custom-block></script><list></list></block></script></block-definition><block-definition s="Test: correct number of recursive calls %&apos;block&apos;" type="reporter" category="tests"><header></header><code></code><translations></translations><inputs><input type="%s"></input></inputs><script><custom-block s="safely try %cs then if %upvar %cs"><script><block s="doIf"><block s="reportNot"><block var="recursively called?"/></block><script><block s="doReport"><block s="reportNewList"><list><block s="reportBoolean"><l><bool>false</bool></l></block><l>Solution MUST be recursive.</l></list></block></block></script><list></list></block><block s="doIfElse"><block var="fractal matches exactly?"/><script><block s="doReport"><block s="reportNewList"><list><block s="reportBoolean"><l><bool>true</bool></l></block><l>Test passed!</l></list></block></block></script><script><block s="doIfElse"><custom-block s="number of recursive calls %s" scope="local"><block var="block"/></custom-block><script><block s="doReport"><block s="reportNewList"><list><block s="reportBoolean"><l><bool>true</bool></l></block><l>Test passed!</l></list></block></block></script><script><block s="doReport"><block s="reportNewList"><list><block s="reportBoolean"><l><bool>false</bool></l></block><l>Test failed.</l></list></block></block></script></block></script></block></script><l>error</l><script><block s="doReport"><block s="reportNewList"><list><block s="reportBoolean"><l><bool>false</bool></l></block><block var="error"/></list></block></block></script></custom-block></script><scripts><script x="312.6416015625" y="104.33333333333331"><custom-block s="base case condition %s" scope="local"><block var="block"/></custom-block></script><script x="372" y="279.1666666666667"><custom-block s="%cmdRing equals %cmdRing under %repRing" scope="local"><block var="block"/><block s="reifyScript"><script><custom-block s="Midterm Fractal n= %s steps len= %s version= %s" scope="local"><l></l><l></l><block var="secret number"/></custom-block></script><list></list></block><block s="reifyReporter"><autolambda><custom-block s="get pixels of %cmdRing with n= %n length= %s waiting %n second(s)" scope="local"><block s="reifyScript"><script></script><list></list></block><l>1</l><l>50</l><l>3</l></custom-block></autolambda><list></list></block></custom-block></script></scripts></block-definition><block-definition s="number of recursive calls %&apos;block&apos;" type="predicate" category="Fractal"><header></header><code></code><translations></translations><inputs><input type="%s"></input></inputs><script><block s="doDeclareVariables"><list><l>tree</l></list></block><block s="doSetVar"><l>tree</l><block s="reportTextSplit"><block s="reportBlockAttribute"><l><option>definition</option></l><block var="block"/></block><l><option>blocks</option></l></block></block><block s="doReport"><block s="reportIfElse"><block s="reportVariadicAnd"><list><block s="reportVariadicEquals"><list><block s="reportListAttribute"><l><option>length</option></l><custom-block s="calls of %s in %s" scope="local"><block var="block"/><block var="tree"/></custom-block></block><l>5</l></list></block><block s="reportVariadicEquals"><list><l>51</l><block var="secret number"/></list></block></list></block><block s="reportBoolean"><l><bool>true</bool></l></block><block s="reportIfElse"><block s="reportVariadicEquals"><list><block s="reportListAttribute"><l><option>length</option></l><custom-block s="calls of %s in %s" scope="local"><block var="block"/><block var="tree"/></custom-block></block><l>4</l></list></block><block s="reportBoolean"><l><bool>true</bool></l></block><block s="reportBoolean"><l><bool>false</bool></l></block></block></block></block></script></block-definition><block-definition s="levels as inputs %&apos;expressions having n&apos;" type="predicate" category="Fractal"><header></header><code></code><translations></translations><inputs><input type="%s"></input></inputs><script><custom-block s="safely try %cs then if %upvar %cs"><script><block s="doForEach"><l>exp</l><block var="expressions having n"/><script><block s="doFor"><l>n</l><l>2</l><l>5</l><script><block s="doIf"><block s="reportNot"><block s="reportVariadicEquals"><list><block s="evaluate"><block s="reportJoinWords"><custom-block s="substitute variable %s with value %s in %s" scope="local"><l>levels</l><block var="n"/><block var="exp"/></custom-block></block><list></list></block><block s="reportDifference"><block var="n"/><l>1</l></block></list></block></block><script><block s="doReport"><block s="reportBoolean"><l><bool>false</bool></l></block></block></script><list></list></block></script></block></script></block><block s="doReport"><block s="reportBoolean"><l><bool>true</bool></l></block></block></script><l>error</l><script><block s="doReport"><block s="reportBoolean"><l><bool>false</bool></l></block></block></script></custom-block></script></block-definition><block-definition s="length as inputs %&apos;expressions having length&apos;" type="predicate" category="Fractal"><header></header><code></code><translations></translations><inputs><input type="%s"></input></inputs><script><block s="doForEach"><l>exp</l><block var="expressions having length"/><script><block s="doIfElse"><block s="reportVariadicEquals"><list><block var="secret number"/><l>1</l></list></block><script><block s="doIf"><block s="reportNot"><block s="reportVariadicOr"><list><custom-block s="safely try reporting %anyUE then if %upvar report %anyUE"><block s="reportVariadicEquals"><list><custom-block s="substitute variable %s with value %s in %s" scope="local"><l>new length</l><block s="reportVariadicProduct"><list><l>340</l><block s="reportQuotient"><l>10</l><l>11</l></block></list></block><block var="exp"/></custom-block><block s="reportVariadicProduct"><list><l>340</l><block s="reportQuotient"><l>10</l><l>11</l></block></list></block></list></block><l>error</l><block s="reportBoolean"><l><bool>false</bool></l></block></custom-block><custom-block s="safely try reporting %anyUE then if %upvar report %anyUE"><block s="reportVariadicEquals"><list><block s="evaluate"><block s="reportJoinWords"><custom-block s="substitute variable %s with value %s in %s" scope="local"><l>length</l><l>340</l><block var="exp"/></custom-block></block><list></list></block><block s="reportVariadicProduct"><list><l>340</l><block s="reportQuotient"><l>10</l><l>11</l></block></list></block></list></block><l>error</l><block s="reportBoolean"><l><bool>false</bool></l></block></custom-block><custom-block s="safely try reporting %anyUE then if %upvar report %anyUE"><block s="reportVariadicEquals"><list><block s="evaluate"><block s="reportJoinWords"><custom-block s="substitute variable %s with value %s in %s" scope="local"><l>length</l><block s="reportVariadicProduct"><list><l>340</l><l>10</l></list></block><block var="exp"/></custom-block></block><list></list></block><block s="reportVariadicProduct"><list><l>340</l><block s="reportQuotient"><l>10</l><l>11</l></block></list></block></list></block><l>error</l><block s="reportBoolean"><l><bool>false</bool></l></block></custom-block><custom-block s="safely try reporting %anyUE then if %upvar report %anyUE"><block s="reportVariadicEquals"><list><block s="evaluate"><block s="reportJoinWords"><custom-block s="substitute variable %s with value %s in %s" scope="local"><l>new length</l><block s="reportVariadicProduct"><list><l>340</l><l>10</l></list></block><block var="exp"/></custom-block></block><list></list></block><block s="reportVariadicProduct"><list><l>340</l><block s="reportQuotient"><l>10</l><l>11</l></block></list></block></list></block><l>error</l><block s="reportBoolean"><l><bool>false</bool></l></block></custom-block><custom-block s="safely try reporting %anyUE then if %upvar report %anyUE"><block s="reportVariadicEquals"><list><block s="evaluate"><block s="reportJoinWords"><custom-block s="substitute variable %s with value %s in %s" scope="local"><l>new length</l><block s="reportQuotient"><l>340</l><l>11</l></block><block var="exp"/></custom-block></block><list></list></block><block s="reportQuotient"><l>340</l><block s="reportVariadicProduct"><list><l>11</l><l>10</l></list></block></block></list></block><l>error</l><block s="reportBoolean"><l><bool>false</bool></l></block></custom-block><custom-block s="safely try reporting %anyUE then if %upvar report %anyUE"><block s="reportVariadicEquals"><list><block s="evaluate"><block s="reportJoinWords"><custom-block s="substitute variable %s with value %s in %s" scope="local"><l>length</l><block s="reportQuotient"><l>340</l><l>11</l></block><block var="exp"/></custom-block></block><list></list></block><block s="reportQuotient"><l>340</l><block s="reportVariadicProduct"><list><l>11</l><l>10</l></list></block></block></list></block><l>error</l><block s="reportBoolean"><l><bool>false</bool></l></block></custom-block><custom-block s="safely try reporting %anyUE then if %upvar report %anyUE"><block s="reportVariadicEquals"><list><block s="evaluate"><block s="reportJoinWords"><custom-block s="substitute variable %s with value %s in %s" scope="local"><l>length</l><block s="reportQuotient"><l>340</l><block s="reportVariadicProduct"><list><l>11</l><l>10</l></list></block></block><block var="exp"/></custom-block></block><list></list></block><block s="reportQuotient"><l>340</l><block s="reportVariadicProduct"><list><l>11</l><l>10</l></list></block></block></list></block><l>error</l><block s="reportBoolean"><l><bool>false</bool></l></block></custom-block><custom-block s="safely try reporting %anyUE then if %upvar report %anyUE"><block s="reportVariadicEquals"><list><block s="evaluate"><block s="reportJoinWords"><custom-block s="substitute variable %s with value %s in %s" scope="local"><l>new length</l><block s="reportQuotient"><l>340</l><block s="reportVariadicProduct"><list><l>11</l><l>10</l></list></block></block><block var="exp"/></custom-block></block><list></list></block><block s="reportQuotient"><l>340</l><block s="reportVariadicProduct"><list><l>11</l><l>10</l></list></block></block></list></block><l>error</l><block s="reportBoolean"><l><bool>false</bool></l></block></custom-block><custom-block s="safely try reporting %anyUE then if %upvar report %anyUE"><block s="reportVariadicEquals"><list><block s="evaluate"><block s="reportJoinWords"><custom-block s="substitute variable %s with value %s in %s" scope="local"><l>new length</l><block s="reportQuotient"><block s="reportVariadicProduct"><list><l>340</l><l>10</l></list></block><l>11</l></block><block var="exp"/></custom-block></block><list></list></block><block s="reportQuotient"><block s="reportVariadicProduct"><list><l>340</l><l>10</l></list></block><l>11</l></block></list></block><l>error</l><block s="reportBoolean"><l><bool>false</bool></l></block></custom-block><custom-block s="safely try reporting %anyUE then if %upvar report %anyUE"><block s="reportVariadicEquals"><list><block s="evaluate"><block s="reportJoinWords"><custom-block s="substitute variable %s with value %s in %s" scope="local"><l>length</l><block s="reportQuotient"><block s="reportVariadicProduct"><list><l>340</l><l>10</l></list></block><l>11</l></block><block var="exp"/></custom-block></block><list></list></block><block s="reportQuotient"><block s="reportVariadicProduct"><list><l>340</l><l>10</l></list></block><l>11</l></block></list></block><l>error</l><block s="reportBoolean"><l><bool>false</bool></l></block></custom-block><custom-block s="safely try reporting %anyUE then if %upvar report %anyUE"><block s="reportVariadicEquals"><list><block s="evaluate"><block s="reportJoinWords"><custom-block s="substitute variable %s with value %s in %s" scope="local"><l>length</l><block s="reportQuotient"><l>340</l><l>11</l></block><block var="exp"/></custom-block></block><list></list></block><block s="reportVariadicProduct"><list><block s="reportQuotient"><l>340</l><l>11</l></block><l>10</l></list></block></list></block><l>error</l><block s="reportBoolean"><l><bool>false</bool></l></block></custom-block><custom-block s="safely try reporting %anyUE then if %upvar report %anyUE"><block s="reportVariadicEquals"><list><block s="evaluate"><block s="reportJoinWords"><custom-block s="substitute variable %s with value %s in %s" scope="local"><l>new length</l><block s="reportQuotient"><l>340</l><l>11</l></block><block var="exp"/></custom-block></block><list></list></block><block s="reportVariadicProduct"><list><block s="reportQuotient"><l>340</l><l>11</l></block><l>10</l></list></block></list></block><l>error</l><block s="reportBoolean"><l><bool>false</bool></l></block></custom-block></list></block></block><script><block s="doReport"><block s="reportBoolean"><l><bool>false</bool></l></block></block></script><list></list><comment w="90" collapsed="false">The equation, you would replace with whatever numbers you use in your recursive calls</comment></block></script><script><block s="doIf"><block s="reportNot"><block s="reportVariadicOr"><list><custom-block s="safely try reporting %anyUE then if %upvar report %anyUE"><block s="reportVariadicEquals"><list><custom-block s="substitute variable %s with value %s in %s" scope="local"><l>new length</l><l>340</l><block var="exp"/></custom-block><l>340</l></list></block><l>error</l><block s="reportBoolean"><l><bool>false</bool></l></block></custom-block><custom-block s="safely try reporting %anyUE then if %upvar report %anyUE"><block s="reportVariadicEquals"><list><block s="evaluate"><block s="reportJoinWords"><custom-block s="substitute variable %s with value %s in %s" scope="local"><l>length</l><l>340</l><block var="exp"/></custom-block></block><list></list></block><l>340</l></list></block><l>error</l><block s="reportBoolean"><l><bool>false</bool></l></block></custom-block><custom-block s="safely try reporting %anyUE then if %upvar report %anyUE"><block s="reportVariadicEquals"><list><custom-block s="substitute variable %s with value %s in %s" scope="local"><l>length</l><l>340</l><block var="exp"/></custom-block><l>340</l></list></block><l>error</l><block s="reportBoolean"><l><bool>false</bool></l></block></custom-block></list></block></block><script><block s="doReport"><block s="reportBoolean"><l><bool>false</bool></l></block></block></script><list></list></block></script></block></script></block><block s="doReport"><block s="reportBoolean"><l><bool>true</bool></l></block></block></script><scripts><script x="625.5489062500001" y="1603.4999999999993"><block s="reportVariadicProduct"><list><l>340</l><l>10</l></list></block></script></scripts></block-definition><block-definition s="recursion inputs correct %&apos;block&apos;" type="predicate" category="Fractal"><header></header><code></code><translations></translations><inputs><input type="%s"></input></inputs><script><block s="doDeclareVariables"><list><l>recursive calls</l><l>tree</l></list></block><block s="doSetVar"><l>tree</l><block s="reportTextSplit"><block s="reportBlockAttribute"><l><option>definition</option></l><block var="block"/></block><l><option>blocks</option></l></block></block><block s="doSetVar"><l>recursive calls</l><custom-block s="calls of %s in %s" scope="local"><block var="block"/><block var="tree"/></custom-block></block><block s="doIf"><block s="reportListIsEmpty"><block var="recursive calls"/></block><script><block s="doReport"><block s="reportBoolean"><l><bool>false</bool></l></block></block></script><list></list></block><block s="doReport"><block s="reportVariadicAnd"><list><custom-block s="levels as inputs %s" scope="local"><block s="reportListItem"><l>2</l><block s="reportListAttribute"><l><option>columns</option></l><block var="recursive calls"/></block></block></custom-block><custom-block s="length as inputs %s" scope="local"><block s="reportListItem"><l>3</l><block s="reportListAttribute"><l><option>columns</option></l><block var="recursive calls"/></block></block></custom-block></list></block></block></script></block-definition><block-definition s="get final sprite direction of %&apos;fractal&apos; with n+ %&apos;n&apos; length= %&apos;length&apos; waiting %&apos;seconds&apos;" type="reporter" category="Fractal"><header></header><code></code><translations></translations><inputs><input type="%s"></input><input type="%n"></input><input type="%n">10</input><input type="%n">10</input></inputs><script><block s="doResetTimer"></block><block s="fork"><block s="reifyScript"><script><custom-block s="draw %cmdRing with n= %s length= %s" scope="local"><block var="fractal"/><block var="secret number"/><block var="n"/></custom-block></script><list></list></block><list></list></block><block s="doWaitUntil"><block s="reportVariadicGreaterThan"><list><block s="getTimer"></block><block var="seconds"/></list></block></block><block s="doStopThis"><l><option>all but this script</option></l></block><block s="doReport"><block s="direction"></block></block></script></block-definition><block-definition s="final sprite direction %&apos;block&apos;" type="predicate" category="Fractal"><header></header><code></code><translations></translations><inputs><input type="%s"></input></inputs><script><block s="doFor"><l>i</l><l>1</l><l>5</l><script><custom-block s="draw %cmdRing with n= %s length= %s" scope="local"><block var="block"/><block var="i"/><l>2</l></custom-block><block s="doIf"><block s="reportVariadicNotEquals"><list><l>90</l><block s="direction"></block></list></block><script><block s="doReport"><block s="reportBoolean"><l><bool>false</bool></l></block></block></script><list></list></block></script></block><block s="doReport"><block s="reportBoolean"><l><bool>true</bool></l></block></block></script></block-definition><block-definition s="Test: correct recursive inputs %&apos;block&apos;" type="reporter" category="tests"><header></header><code></code><translations></translations><inputs><input type="%s"></input></inputs><script><custom-block s="safely try %cs then if %upvar %cs"><script><block s="doIf"><block s="reportNot"><block var="recursively called?"/></block><script><block s="doReport"><block s="reportNewList"><list><block s="reportBoolean"><l><bool>false</bool></l></block><l>Solution MUST be recursive.</l></list></block></block></script><list></list></block><block s="doIfElse"><block var="fractal matches exactly?"/><script><block s="doReport"><block s="reportNewList"><list><block s="reportBoolean"><l><bool>true</bool></l></block><l>Test passed!</l></list></block></block></script><script><block s="doIfElse"><custom-block s="recursion inputs correct %s" scope="local"><block var="block"/></custom-block><script><block s="doReport"><block s="reportNewList"><list><block s="reportBoolean"><l><bool>true</bool></l></block><l>Test passed!</l></list></block></block></script><script><block s="doReport"><block s="reportNewList"><list><block s="reportBoolean"><l><bool>false</bool></l></block><l>Test failed.</l></list></block></block></script></block></script></block></script><l>error</l><script><block s="doReport"><block s="reportNewList"><list><block s="reportBoolean"><l><bool>false</bool></l></block><block var="error"/></list></block></block></script></custom-block></script><scripts><script x="312.6416015625" y="104.33333333333331"><custom-block s="base case condition %s" scope="local"><block var="block"/></custom-block></script><script x="372" y="279.1666666666667"><custom-block s="%cmdRing equals %cmdRing under %repRing" scope="local"><block var="block"/><block s="reifyScript"><script><custom-block s="Midterm Fractal n= %s steps len= %s version= %s" scope="local"><l></l><l></l><block var="secret number"/></custom-block></script><list></list></block><block s="reifyReporter"><autolambda><custom-block s="get pixels of %cmdRing with n= %n length= %s waiting %n second(s)" scope="local"><block s="reifyScript"><script></script><list></list></block><l>1</l><l>50</l><l>3</l></custom-block></autolambda><list></list></block></custom-block></script></scripts></block-definition><block-definition s="Test: correct final sprite direction %&apos;block&apos;" type="reporter" category="tests"><header></header><code></code><translations></translations><inputs><input type="%s"></input></inputs><script><custom-block s="safely try %cs then if %upvar %cs"><script><block s="doIf"><block s="reportNot"><block var="recursively called?"/></block><script><block s="doReport"><block s="reportNewList"><list><block s="reportBoolean"><l><bool>false</bool></l></block><l>Solution MUST be recursive.</l></list></block></block></script><list></list></block><block s="doIfElse"><block var="fractal matches exactly?"/><script><block s="doReport"><block s="reportNewList"><list><block s="reportBoolean"><l><bool>true</bool></l></block><l>Test passed!</l></list></block></block></script><script><block s="doIfElse"><custom-block s="final sprite direction %s" scope="local"><block var="block"/></custom-block><script><block s="doReport"><block s="reportNewList"><list><block s="reportBoolean"><l><bool>true</bool></l></block><l>Test passed!</l></list></block></block></script><script><block s="doReport"><block s="reportNewList"><list><block s="reportBoolean"><l><bool>false</bool></l></block><l>Test failed.</l></list></block></block></script></block></script></block></script><l>error</l><script><block s="doReport"><block s="reportNewList"><list><block s="reportBoolean"><l><bool>false</bool></l></block><block var="error"/></list></block></block></script></custom-block></script><scripts><script x="312.6416015625" y="104.33333333333331"><custom-block s="base case condition %s" scope="local"><block var="block"/></custom-block></script><script x="372" y="279.1666666666667"><custom-block s="%cmdRing equals %cmdRing under %repRing" scope="local"><block var="block"/><block s="reifyScript"><script><custom-block s="Midterm Fractal n= %s steps len= %s version= %s" scope="local"><l></l><l></l><block var="secret number"/></custom-block></script><list></list></block><block s="reifyReporter"><autolambda><custom-block s="get pixels of %cmdRing with n= %n length= %s waiting %n second(s)" scope="local"><block s="reifyScript"><script></script><list></list></block><l>1</l><l>50</l><l>3</l></custom-block></autolambda><list></list></block></custom-block></script></scripts></block-definition><block-definition s="Test: correct fractal drawing %&apos;block&apos;" type="reporter" category="tests"><header></header><code></code><translations></translations><inputs><input type="%s"></input></inputs><script><custom-block s="safely try %cs then if %upvar %cs"><script><block s="doIf"><block s="reportNot"><block var="recursively called?"/></block><script><block s="doReport"><block s="reportNewList"><list><block s="reportBoolean"><l><bool>false</bool></l></block><l>Solution MUST be recursive.</l></list></block></block></script><list></list></block><block s="doIfElse"><block s="reportVariadicOr"><list><custom-block s="%cmdRing equals %cmdRing under %repRing" scope="local"><block var="block"/><block s="reifyScript"><script><custom-block s="Midterm Fractal n= %s steps len= %s version= %s" scope="local"><l></l><l></l><block var="secret number"/></custom-block></script><list></list></block><block s="reifyReporter"><autolambda><custom-block s="get pixels of %cmdRing with n= %n length= %s waiting %n second(s)" scope="local"><block s="reifyScript"><script></script><list></list></block><l>5</l><l>2</l><l>10</l></custom-block></autolambda><list></list></block></custom-block><custom-block s="%cmdRing equals %cmdRing under %repRing" scope="local"><block var="block"/><block s="reifyScript"><script></script><list></list></block><block s="reifyReporter"><autolambda><custom-block s="get pixels of %cmdRing with n= %n length= %s waiting %n second(s)" scope="local"><block s="reifyScript"><script></script><list></list></block><l>5</l><l>2</l><l>10</l></custom-block></autolambda><list></list></block></custom-block></list></block><script><block s="doSetVar"><l>fractal matches exactly?</l><block s="reportBoolean"><l><bool>true</bool></l></block></block><block s="doReport"><block s="reportNewList"><list><block s="reportBoolean"><l><bool>true</bool></l></block><l>Test passed!</l></list></block></block></script><script><block s="doSetVar"><l>fractal matches exactly?</l><block s="reportBoolean"><l><bool>false</bool></l></block></block><block s="doReport"><block s="reportNewList"><list><block s="reportBoolean"><l><bool>false</bool></l></block><l>Test failed.</l></list></block></block></script></block></script><l>error</l><script><block s="doSetVar"><l>fractal matches exactly?</l><block s="reportBoolean"><l><bool>false</bool></l></block></block><block s="doReport"><block s="reportNewList"><list><block s="reportBoolean"><l><bool>false</bool></l></block><block var="error"/></list></block></block></script></custom-block></script></block-definition><block-definition s="isRecursive %&apos;block&apos;" type="reporter" category="Fractal"><header></header><code></code><translations></translations><inputs><input type="%cmdRing"></input></inputs><script><block s="doReport"><block s="reportVariadicGreaterThan"><list><custom-block s="count occurrences of %repRing in %l" scope="local"><block var="block"/><block s="reportTextSplit"><block s="reportBlockAttribute"><l><option>definition</option></l><block var="block"/></block><l><option>blocks</option></l></block></custom-block><l>0</l></list></block></block></script></block-definition><block-definition s="base case drawing %&apos;levels&apos; %&apos;length&apos;" type="command" category="Fractal"><header></header><code></code><translations></translations><inputs><input type="%s"></input><input type="%s"></input></inputs><script><block s="forward"><block var="length"/></block></script></block-definition><block-definition s="Test: add two to numbers in a list %&apos;block&apos;" type="reporter" category="tests"><header></header><code></code><translations></translations><inputs><input type="%s"></input></inputs><script><block s="doDeclareVariables"><list><l>all data</l><l>test inputs</l><l>solutions</l><l>run tests</l></list></block><block s="doSetVar"><l>all data</l><block s="reportNewList"><list><block s="reportNewList"><list><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportVariadicSum"><list><l></l><l>2</l></list></block></autolambda><list></list></block><block s="reportNewList"><list><l>1</l><l>10</l></list></block></block><block s="reportNewList"><list><l>1</l><l>10</l></list></block></list></block><block s="reportNewList"><list><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportVariadicSum"><list><l></l><l>2</l></list></block></autolambda><list></list></block><block s="reportNewList"><list><l>1</l><l>11</l></list></block></block><block s="reportNewList"><list><l>10</l><l>11</l></list></block></list></block><block s="reportNewList"><list><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportVariadicSum"><list><l></l><l>2</l></list></block></autolambda><list></list></block><block s="reportNewList"><list><l>100</l><l>112</l></list></block></block><block s="reportNewList"><list><l>100</l><l>112</l></list></block></list></block><block s="reportNewList"><list><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportVariadicSum"><list><l></l><l>2</l></list></block></autolambda><list></list></block><block s="reportNewList"><list><l>190</l><l>200</l></list></block></block><block s="reportNewList"><list><l>190</l><l>200</l></list></block></list></block><block s="reportNewList"><list><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportVariadicSum"><list><l></l><l>2</l></list></block></autolambda><list></list></block><block s="reportNewList"><list><l>1233</l><l>1242</l></list></block></block><block s="reportNewList"><list><l>1233</l><l>1242</l></list></block></list></block><block s="reportNewList"><list><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportVariadicSum"><list><l></l><l>2</l></list></block></autolambda><list></list></block><block s="reportNumbers"><l>110</l><l>119</l></block></block><block s="reportNumbers"><l>110</l><l>119</l></block></list></block></list></block></block><block s="doSetVar"><l>test inputs</l><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportListItem"><l>2</l><l/></block></autolambda><list></list></block><block var="all data"/></block></block><block s="doSetVar"><l>solutions</l><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportListItem"><l>1</l><l/></block></autolambda><list></list></block><block var="all data"/></block></block><custom-block s="safely try %cs then if %upvar %cs"><script><block s="doSetVar"><l>run tests</l><custom-block s="%repRing equals %s on %l" scope="local"><block var="block"/><block var="solutions"/><block var="test inputs"/></custom-block></block><block s="doIfElse"><block s="reportVariadicAnd"><list><custom-block s="constraints: HOFs %s" scope="local"><block var="block"/></custom-block><block s="reportListItem"><l>1</l><block var="run tests"/></block></list></block><script><block s="doReport"><block s="reportNewList"><list><block s="reportBoolean"><l><bool>true</bool></l></block><block s="reportListItem"><l>2</l><block var="run tests"/></block></list></block></block></script><script><block s="doIfElse"><custom-block s="constraints: HOFs %s" scope="local"><block var="block"/></custom-block><script><block s="doReport"><block s="reportNewList"><list><block s="reportBoolean"><l><bool>false</bool></l></block><block s="reportListItem"><l>2</l><block var="run tests"/></block></list></block></block></script><script><block s="doReport"><block s="reportNewList"><list><block s="reportBoolean"><l><bool>false</bool></l></block><l>Forbidden block(s) used. Solution must only use HOFs.</l></list></block></block></script></block></script></block></script><l>error</l><script><block s="doReport"><block s="reportNewList"><list><block s="reportBoolean"><l><bool>false</bool></l></block><block var="error"/></list></block></block></script></custom-block></script></block-definition><block-definition s="constraints: Iterative %&apos;blocks&apos;" type="predicate" category="Autograder"><header></header><code></code><translations></translations><inputs><input type="%s"></input></inputs><script><block s="doDeclareVariables"><list><l>ast</l><l>forbidden blocks</l><l>iterative blocks</l></list></block><block s="doSetVar"><l>ast</l><block s="reportTextSplit"><block s="reportBlockAttribute"><l><option>definition</option></l><block var="blocks"/></block><l><option>blocks</option></l></block></block><block s="doSetVar"><l>iterative blocks</l><block s="reportNewList"><list><block s="reifyScript"><script><block s="doForever"><script></script></block></script><list></list></block><block s="reifyScript"><script><block s="doRepeat"><l></l><script></script></block></script><list></list></block><block s="reifyScript"><script><block s="doUntil"><l/><script></script></block></script><list></list></block><block s="reifyScript"><script><block s="doFor"><l> </l><l></l><l></l><script></script></block></script><list></list></block><block s="reifyScript"><script><block s="doForEach"><l> </l><l/><script></script></block></script><list></list></block></list></block></block><block s="doSetVar"><l>forbidden blocks</l><block s="reportNewList"><list><block var="blocks"/><block s="reifyReporter"><autolambda><block s="reportMap"><block s="reifyReporter"><script></script><list></list></block><l/></block></autolambda><list></list></block><block s="reifyReporter"><autolambda><block s="reportKeep"><block s="reifyPredicate"><script></script><list></list></block><l/></block></autolambda><list></list></block><block s="reifyReporter"><autolambda><block s="reportCombine"><l/><block s="reifyReporter"><script></script><list></list></block></block></autolambda><list></list></block><block s="reifyReporter"><autolambda><custom-block s="cascade %n times %repRing %s %upvar"><l></l><block s="reifyReporter"><script></script><list></list></block><l></l><l>#</l></custom-block></autolambda><list></list></block><block s="reifyReporter"><autolambda><custom-block s="cascade until %predRing %repRing %s %upvar"><block s="reifyPredicate"><script></script><list></list></block><block s="reifyReporter"><script></script><list></list></block><l></l><l>#</l></custom-block></autolambda><list></list></block><block s="reifyScript"><script><custom-block s="repeat %cs until %boolUE"><script></script><l/></custom-block></script><list></list></block><block s="reifyScript"><script><custom-block s="repeat %n %upvar %cs"><l></l><l>#</l><script></script></custom-block></script><list></list></block><block s="reifyScript"><script><custom-block s="repeat %cs while %boolUE"><script></script><l/></custom-block></script><list></list></block><block s="reifyScript"><script><custom-block s="for %upvar = %n step %n to %n %cs"><l>i</l><l>1</l><l>1</l><l>10</l><script></script></custom-block></script><list></list></block><block s="reifyScript"><script><custom-block s="let %upvar be %s in %upvar %cs"><l>a</l><l></l><l>loop</l><script></script></custom-block></script><list></list></block><block s="reifyReporter"><autolambda><custom-block s="multimap %repRing over %mult%l"><block s="reifyReporter"><script></script><list></list></block><list><l/></list></custom-block></autolambda><list></list></block><block s="reifyScript"><script><custom-block s="%upvar for each %upvar of %l %ca"><l>#</l><l>item</l><l/><script></script></custom-block></script><list></list></block><block s="reifyReporter"><autolambda><block s="reportFindFirst"><block s="reifyPredicate"><script></script><list></list></block><l/></block></autolambda><list></list></block></list></block></block><block s="doReport"><block s="reportVariadicAnd"><list><block s="reportVariadicEquals"><list><block s="reportVariadicSum"><block s="reportMap"><block s="reifyReporter"><autolambda><custom-block s="count occurrences of %repRing in %l" scope="local"><block var="block"/><block var="ast"/></custom-block></autolambda><list><l>block</l></list></block><block var="forbidden blocks"/></block></block><l>0</l></list></block><block s="reportVariadicGreaterThan"><list><block s="reportVariadicSum"><block s="reportMap"><block s="reifyReporter"><autolambda><custom-block s="count occurrences of %repRing in %l" scope="local"><block var="block"/><block var="ast"/></custom-block></autolambda><list><l>block</l></list></block><block var="iterative blocks"/></block></block><l>0</l></list></block></list></block></block></script></block-definition><block-definition s="constraints: HOFs %&apos;student&apos;" type="predicate" category="Autograder"><header></header><code></code><translations></translations><inputs><input type="%s"></input></inputs><script><block s="doDeclareVariables"><list><l>ast</l><l>forbidden blocks</l><l>HOF blocks</l></list></block><block s="doSetVar"><l>ast</l><block s="reportTextSplit"><block s="reportBlockAttribute"><l><option>definition</option></l><block var="student"/></block><l><option>blocks</option></l></block></block><block s="doSetVar"><l>forbidden blocks</l><block s="reportNewList"><list><block s="reifyScript"><script><block s="doForever"><script></script></block></script><list></list></block><block s="reifyScript"><script><block s="doRepeat"><l></l><script></script></block></script><list></list></block><block s="reifyScript"><script><block s="doUntil"><l/><script></script></block></script><list></list></block><block s="reifyScript"><script><block s="doFor"><l> </l><l></l><l></l><script></script></block></script><list></list></block><block s="reifyScript"><script><block s="doForEach"><l> </l><l/><script></script></block></script><list></list></block><block s="reifyReporter"><autolambda><custom-block s="cascade %n times %repRing %s %upvar"><l></l><block s="reifyReporter"><script></script><list></list></block><l></l><l>#</l></custom-block></autolambda><list></list></block><block s="reifyReporter"><autolambda><custom-block s="cascade until %predRing %repRing %s %upvar"><block s="reifyPredicate"><script></script><list></list></block><block s="reifyReporter"><script></script><list></list></block><l></l><l>#</l></custom-block></autolambda><list></list></block><block s="reifyScript"><script><custom-block s="repeat %cs until %boolUE"><script></script><l/></custom-block></script><list></list></block><block s="reifyScript"><script><custom-block s="repeat %n %upvar %cs"><l></l><l>#</l><script></script></custom-block></script><list></list></block><block s="reifyScript"><script><custom-block s="repeat %cs while %boolUE"><script></script><l/></custom-block></script><list></list></block><block s="reifyScript"><script><custom-block s="for %upvar = %n step %n to %n %cs"><l>i</l><l>1</l><l>1</l><l>10</l><script></script></custom-block></script><list></list></block><block s="reifyScript"><script><custom-block s="let %upvar be %s in %upvar %cs"><l>a</l><l></l><l>loop</l><script></script></custom-block></script><list></list></block><block s="reifyReporter"><autolambda><custom-block s="multimap %repRing over %mult%l"><block s="reifyReporter"><script></script><list></list></block><list><l/></list></custom-block></autolambda><list></list></block><block s="reifyScript"><script><custom-block s="%upvar for each %upvar of %l %ca"><l>#</l><l>item</l><l/><script></script></custom-block></script><list></list></block><block var="student"/></list></block></block><block s="doSetVar"><l>HOF blocks</l><block s="reportNewList"><list><block s="reifyReporter"><autolambda><block s="reportCombine"><l/><block s="reifyReporter"><script></script><list></list></block></block></autolambda><list></list></block><block s="reifyReporter"><autolambda><block s="reportMap"><block s="reifyReporter"><script></script><list></list></block><l/></block></autolambda><list></list></block><block s="reifyReporter"><autolambda><block s="reportFindFirst"><block s="reifyPredicate"><script></script><list></list></block><l/></block></autolambda><list></list></block><block s="reifyReporter"><autolambda><block s="reportKeep"><block s="reifyPredicate"><script></script><list></list></block><l/></block></autolambda><list></list></block></list></block></block><block s="doReport"><block s="reportVariadicAnd"><list><block s="reportVariadicEquals"><list><block s="reportVariadicSum"><block s="reportMap"><block s="reifyPredicate"><autolambda><custom-block s="count occurrences of %repRing in %l" scope="local"><block var="block"/><block var="ast"/></custom-block></autolambda><list><l>block</l></list></block><block var="forbidden blocks"/></block></block><l>0</l></list></block><block s="reportVariadicGreaterThan"><list><block s="reportVariadicSum"><block s="reportMap"><block s="reifyPredicate"><autolambda><custom-block s="count occurrences of %repRing in %l" scope="local"><block var="block"/><block var="ast"/></custom-block></autolambda><list><l>block</l></list></block><block var="HOF blocks"/></block></block><l>0</l></list></block></list></block></block></script></block-definition><block-definition s="count occurrences of %&apos;block&apos; in %&apos;ast&apos;" type="reporter" category="Autograder Utils"><comment x="0" y="0" w="100.99999999999989" collapsed="false">Count the number of calls of a block in an Abstract Syntax Tree.&#xD;&#xD;The input slots of a block passed in as argument should be blank.</comment><header></header><code></code><translations></translations><inputs><input type="%repRing"></input><input type="%l"></input></inputs><script><block s="doReport"><block s="reportCombine"><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportIfElse"><block s="reportIsA"><block var="value"/><l><option>list</option></l></block><custom-block s="count occurrences of %repRing in %l" scope="local"><block var="block"/><block var="value"/></custom-block><block s="reportIfElse"><block s="reportVariadicEquals"><list><block var="block"/><block var="value"/></list></block><l>1</l><l>0</l></block></block></autolambda><list><l>value</l></list></block><block var="ast"/></block><block s="reifyReporter"><autolambda><block s="reportVariadicSum"><list><l></l><l></l></list></block></autolambda><list></list></block></block></block></script></block-definition><block-definition s="%&apos;f&apos; equals %&apos;solution&apos; on %&apos;inputs&apos;" type="reporter" category="Autograder Utils"><header></header><code></code><translations></translations><inputs><input type="%repRing"></input><input type="%s"></input><input type="%l"></input></inputs><script><block s="doDeclareVariables"><list><l>return output</l><l>return input</l><l>return solution</l></list></block><block s="doFor"><l>i</l><l>1</l><block s="reportListAttribute"><l><option>length</option></l><block var="inputs"/></block><script><block s="doIf"><block s="reportVariadicNotEquals"><list><block s="evaluate"><block var="f"/><list><block s="reportListItem"><block var="i"/><block var="inputs"/></block></list></block><block s="reportListItem"><block var="i"/><block var="solution"/></block></list></block><script><block s="doReport"><block s="reportNewList"><list><block s="reportBoolean"><l><bool>false</bool></l></block><custom-block s="format message %s %s %s" scope="local"><block s="reportListItem"><block var="i"/><block var="inputs"/></block><block s="reportListItem"><block var="i"/><block var="solution"/></block><block s="evaluate"><block var="f"/><list><block s="reportListItem"><block var="i"/><block var="inputs"/></block></list></block></custom-block></list></block></block></script><list></list></block></script></block><block s="doReport"><block s="reportNewList"><list><block s="reportBoolean"><l><bool>true</bool></l></block><l>Test passed!</l></list></block></block></script></block-definition><block-definition s="format message %&apos;input&apos; %&apos;solution&apos; %&apos;output&apos;" type="reporter" category="Autograder Utils"><header></header><code></code><translations></translations><inputs><input type="%s"></input><input type="%s"></input><input type="%s"></input></inputs><script><block s="doReport"><block s="reportJoinWords"><list><l>Test failed. | Input(s): </l><custom-block s="format input/output %s" scope="local"><block var="input"/></custom-block><l> | Expected: </l><custom-block s="format input/output %s" scope="local"><block var="solution"/></custom-block><l> | </l><l>Actual: </l><custom-block s="format input/output %s" scope="local"><block var="output"/></custom-block><l> | Expected Data Type: </l><custom-block s="data type of %s" scope="local"><block var="solution"/></custom-block><l> | Actual Data Type: </l><custom-block s="data type of %s" scope="local"><block var="output"/></custom-block></list></block></block></script></block-definition><block-definition s="format input/output %&apos;input&apos;" type="reporter" category="Autograder Utils"><header></header><code></code><translations></translations><inputs><input type="%s"></input></inputs><script><block s="doIf"><block s="reportIsA"><block var="input"/><l><option>list</option></l></block><script><block s="doIfElse"><block s="reportVariadicGreaterThanOrEquals"><list><l>1</l><block s="reportListAttribute"><l><option>length</option></l><block var="input"/></block></list></block><script><block s="doReport"><block s="reportJoinWords"><list><l>[</l><block var="input"/><l>]</l></list></block></block></script><script><block s="doDeclareVariables"><list><l>output</l></list></block><block s="doSetVar"><l>output</l><l>[</l></block><block s="doFor"><l>i</l><l>1</l><block s="reportListAttribute"><l><option>length</option></l><block var="input"/></block><script><block s="doSetVar"><l>output</l><block s="reportIfElse"><block s="reportVariadicEquals"><list><block var="i"/><block s="reportListAttribute"><l><option>length</option></l><block var="input"/></block></list></block><block s="reportJoinWords"><list><block var="output"/><l>, </l><block s="reportListItem"><block var="i"/><block var="input"/></block><l>]</l></list></block><block s="reportJoinWords"><list><block var="output"/><block s="reportIfElse"><block s="reportVariadicEquals"><list><block var="i"/><l>1</l></list></block><l></l><l>, </l></block><block s="reportListItem"><block var="i"/><block var="input"/></block></list></block></block></block></script></block><block s="doReport"><block var="output"/></block></script></block></script><list></list></block><block s="doReport"><block var="input"/></block></script></block-definition><block-definition s="data type of %&apos;input&apos;" type="reporter" category="Autograder Utils"><header></header><code></code><translations></translations><inputs><input type="%s"></input></inputs><script><block s="doIfElse"><block s="reportIsA"><block var="input"/><l><option>number</option></l></block><script><block s="doReport"><l>Number</l></block></script><script><block s="doIfElse"><block s="reportIsA"><block var="input"/><l><option>text</option></l></block><script><block s="doReport"><l>Text</l></block></script><script><block s="doIfElse"><block s="reportIsA"><block var="input"/><l><option>list</option></l></block><script><block s="doReport"><l>List</l></block></script><script><block s="doIfElse"><block s="reportIsA"><block var="input"/><l><option>predicate</option></l></block><script><block s="doReport"><l>Predicate</l></block></script><script><block s="doIfElse"><block s="reportIsA"><block var="input"/><l><option>reporter</option></l></block><script><block s="doReport"><l>Reporter Function</l></block></script><script><block s="doReport"><l>Error!</l></block></script></block></script></block></script></block></script></block></script></block></script></block-definition></blocks><variables><variable name="tests"><list id="4132"><item><list id="4133"><item><bool>true</bool></item><item><context id="4134"><inputs></inputs><variables></variables><custom-block s="Test: correct fractal drawing %s" scope="local"><block var="student"/></custom-block><receiver><ref id="366"></ref></receiver><origin><ref id="366"></ref></origin><context id="4139"><inputs></inputs><variables><variable name="try running?"><bool>true</bool></variable><variable name="blocks"><l>0</l></variable><variable name="error"><l>error</l></variable></variables><receiver><ref id="366"></ref></receiver><origin></origin></context></context></item><item><l>5</l></item></list></item><item><list id="4141"><item><bool>true</bool></item><item><context id="4142"><inputs></inputs><variables></variables><custom-block s="Test: correct base case condition %s" scope="local"><block var="student"/></custom-block><receiver><ref id="366"></ref></receiver><origin><ref id="366"></ref></origin></context></item><item><l>2</l></item></list></item><item><list id="4147"><item><bool>true</bool></item><item><context id="4148"><inputs></inputs><variables></variables><custom-block s="Test: correct base case drawing %s" scope="local"><block var="student"/></custom-block><receiver><ref id="366"></ref></receiver><origin><ref id="366"></ref></origin></context></item><item><l>2</l></item></list></item><item><list id="4153"><item><bool>true</bool></item><item><context id="4154"><inputs></inputs><variables></variables><custom-block s="Test: correct number of recursive calls %s" scope="local"><block var="student"/></custom-block><receiver><ref id="366"></ref></receiver><origin><ref id="366"></ref></origin></context></item><item><l>2</l></item></list></item><item><list id="4159"><item><bool>true</bool></item><item><context id="4160"><inputs></inputs><variables></variables><custom-block s="Test: correct recursive inputs %s" scope="local"><block var="student"/></custom-block><receiver><ref id="366"></ref></receiver><origin><ref id="366"></ref></origin></context></item><item><l>2</l></item></list></item><item><list id="4165"><item><bool>true</bool></item><item><context id="4166"><inputs></inputs><variables></variables><custom-block s="Test: correct final sprite direction %s" scope="local"><block var="student"/></custom-block><receiver><ref id="366"></ref></receiver><origin><ref id="366"></ref></origin></context></item><item><l>2</l></item></list></item></list></variable><variable name="student"><context id="4171"><inputs></inputs><variables></variables><script><block s="errorObsolete"></block></script><receiver></receiver><origin></origin></context></variable><variable name="results"><l>{"tests":[{"score":0,"max_score":5,"name":"Test: correct fractal drawing","output":"Test failed."},{"score":2,"max_score":2,"name":"Test: correct base case condition","output":"Test passed!"},{"score":0,"max_score":2,"name":"Test: correct base case drawing","output":"Test failed."},{"score":2,"max_score":2,"name":"Test: correct number of recursive calls","output":"Test passed!"},{"score":0,"max_score":2,"name":"Test: correct recursive inputs","output":"Test failed."},{"score":2,"max_score":2,"name":"Test: correct final sprite direction","output":"Test passed!"}]}</l></variable><variable name="secret number"><l>0</l></variable><variable name="fractal matches exactly?"><bool>false</bool></variable><variable name="recursively called?"><bool>true</bool></variable></variables><scripts><script x="35" y="167"><block s="receiveMessage"><l>run autograder</l><list></list></block><custom-block s="set up autograder" scope="local"><comment w="340" collapsed="false">Set up autograder initializes the global variables:&#xD;&#xD;1. all the functions/blocks the student created that we are testing for&#xD;2. the tests themselves, and the final JSON string we will be outputing</comment></custom-block><block s="doSetVar"><l>results</l><custom-block s="grade" scope="local"></custom-block></block><block s="doStopThis"><l><option>all</option></l></block></script><comment x="10" y="10" w="408" collapsed="false">Metadata such as &quot;secret number&quot; should have been initialized by the JS autograder script, so they can be treated as ready to use (even though their current value might show &quot;0&quot;). You won&apos;t need this for autograding labs. &#xD;&#xD;Make new variables and blocks FOR THIS SPRITE ONLY.&#xD;&#xD;Export this Sprite—not the project!</comment><comment x="196.19832031250002" y="289.83333333333337" w="341" collapsed="false">the &quot;grade&quot; block will run all the tests and grade them formatting each test into a JSON format which is then read by and outputted in Gradescope</comment><script x="1046.7453515625" y="686.4666666666667"><block var="block"/></script></scripts></sprite></sprites></stage><variables></variables></scene></scenes></project><media name="Autograder-lite" app="Snap! 9.0, https://snap.berkeley.edu" version="2"></media></snapdata>