<snapdata remixID="9501193"><project name="SnapTerminal" app="Snap! 6, https://snap.berkeley.edu" version="1"><notes></notes><thumbnail>data:image/png;base64,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</thumbnail><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" scheduled="false" id="1"><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="2"></list></costumes><sounds><list struct="atomic" id="3"></list></sounds><variables></variables><blocks></blocks><scripts></scripts><sprites><sprite name="Sprite" idx="1" x="74.73846153846193" y="96.70769230769231" heading="90" scale="1" volume="100" pan="0" rotation="1" draggable="true" hidden="true" costume="0" color="60.99599999999995,0,234.60000000000002,1" pen="tip" id="8"><costumes><list struct="atomic" id="9"></list></costumes><sounds><list struct="atomic" id="10"></list></sounds><blocks></blocks><variables></variables><scripts><script x="30" y="33.49999999999997"><block s="receiveGo"></block><block s="hide"></block><block s="doSetVar"><l>vars</l><block s="reportNewList"><list></list></block></block><block s="doSetVar"><l>aliases</l><block s="reportNewList"><list></list></block></block><block s="doSetVar"><l>reserved</l><block s="reportNewList"><list><l>command</l><l>reserved</l><l>terminal</l><l>textfunc_keys</l><l>textfunc_valuea</l><l>vars</l><l>aliases</l><l>var</l><l>alias</l><l>js</l><l>help</l><l>deletevars</l><l>getvar</l><l>web</l><l>echo</l><l>clear</l></list></block></block><block s="doSetVar"><l>terminal</l><block s="reportNewList"><list><l>SnapTerminal </l><l>Type "help" for help</l><l>Seperate arguments with &#126;</l></list></block></block><block s="doSetVar"><l>textfunc_keys</l><block s="reportNewList"><list><l>js</l><l>echo</l><l>clear</l><l>help</l><l>var</l><l>alias</l><l>web</l><l>deletevars</l><l>getvar</l></list></block></block><block s="doSetVar"><l>textfunc_values</l><block s="reportNewList"><list><block s="reifyReporter"><script><custom-block s="js"></custom-block></script><list></list></block><block s="reifyReporter"><script><custom-block s="echo"></custom-block></script><list></list></block><block s="reifyReporter"><script><custom-block s="clear"></custom-block></script><list></list></block><block s="reifyReporter"><script><custom-block s="help"></custom-block></script><list></list></block><block s="reifyReporter"><script><custom-block s="var"></custom-block></script><list></list></block><block s="reifyReporter"><script><custom-block s="alias"></custom-block></script><list></list></block><block s="reifyScript"><script><custom-block s="web"></custom-block></script><list></list></block><block s="reifyScript"><script><custom-block s="deletevars"></custom-block></script><list></list></block><block s="reifyReporter"><script><custom-block s="getvar"></custom-block></script><list></list></block></list></block></block><block s="doForever"><script><block s="doAsk"><l></l></block><block s="doAddToList"><block s="getLastAnswer"></block><block var="terminal"/></block><block s="doSetVar"><l>command</l><block s="reportTextSplit"><block s="getLastAnswer"></block><l>&#126;</l></block></block><custom-block s="parse %l"><block var="command"/></custom-block></script></block></script><script x="243" y="10"><block s="doForEach"><l>item</l><block var="vars"/><script><custom-block s="delete var %mult%txt"><list><block var="item"/></list></custom-block></script><comment w="90" collapsed="false">Run this script to reset the variables and aliases</comment></block><block s="doSetVar"><l>vars</l><block s="reportNewList"><list></list></block></block><block s="doForEach"><l>item</l><block var="aliases"/><script><custom-block s="delete var %mult%txt"><list><block var="item"/></list></custom-block></script></block><block s="doSetVar"><l>aliases</l><block s="reportNewList"><list></list></block></block></script></scripts></sprite><watcher var="command" style="normal" x="1.692708333333485" y="1.6927083333333286" color="243,118,29" hidden="true"/><watcher var="reserved" style="normal" x="1.692708333333485" y="37.23958468749997" color="243,118,29" hidden="true"/><watcher scope="Stage" s="getTimer" style="normal" x="2.2005208333337123" y="17.096353828125004" color="4,148,220" hidden="true"/><watcher var="aliases" style="normal" x="1.3541666666674246" y="37.74739786458335" color="243,118,29" hidden="true"/><watcher var="textfunc_keys" style="normal" x="-191.30208333333348" y="108.44791666666669" color="243,118,29" hidden="true"/><watcher var="textfunc_values" style="normal" x="43.786458333333485" y="19.218751015624974" color="243,118,29" hidden="true"/><watcher var="terminal" style="normal" x="2.049479166667197" y="3.7708333333333712" color="243,118,29" extX="236" extY="201"/></sprites></stage><hidden></hidden><headers></headers><code></code><blocks><block-definition s="parse %&apos;command&apos;" type="command" category="other"><header></header><code></code><translations></translations><inputs><input type="%l"></input></inputs><script><block s="doIfElse"><block s="reportNot"><block s="reportEquals"><block s="reportListIndex"><block s="reportListItem"><l>1</l><block var="command"/></block><block var="textfunc_keys"/></block><l>0</l></block></block><script><block s="doRun"><block s="reportListItem"><block s="reportListIndex"><block s="reportListItem"><l>1</l><block var="command"/></block><block var="textfunc_keys"/></block><block var="textfunc_values"/></block><list></list></block></script><script><block s="doAddToList"><block s="reportJoinWords"><list><l>"</l><block s="reportListItem"><l>1</l><block var="command"/></block><l>" is not a recognized command</l></list></block><block var="terminal"/></block></script></block></script></block-definition><block-definition s="js" type="command" category="other"><header></header><code></code><translations></translations><inputs></inputs><script><custom-block s="safely try %cs then if %upvar %cs"><script><block s="doRun"><block s="reportJSFunction"><list></list><block s="reportListItem"><l>2</l><block var="command"/></block></block><list></list></block></script><l>error</l><script><block s="doAddToList"><block var="error"/><block var="terminal"/></block></script></custom-block></script></block-definition><block-definition s="echo" type="command" category="other"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doAddToList"><block s="reportListItem"><l>2</l><block var="command"/></block><block var="terminal"/></block></script></block-definition><block-definition s="clear" type="command" category="other"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doSetVar"><l>terminal</l><block s="reportNewList"><list><l>SnapTerminal </l><l>Type "help" for help</l><l>Seperate arguments with &#126;</l></list></block></block></script></block-definition><block-definition s="help" type="command" category="other"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doAddToList"><l>Seperate arguments with &#126;</l><block var="terminal"/></block><block s="doForEach"><l>item</l><block var="textfunc_keys"/><script><block s="doAddToList"><block var="item"/><block var="terminal"/></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;</translations><inputs><input type="%cs"></input><input type="%upvar"></input><input type="%cs"></input></inputs><script><custom-block s="let %upvar be %s"><l>reset</l><block s="evaluate"><block s="reportJSFunction"><list><l>proc</l></list><l>var oldHandleError = proc.handleError,&#xD;    oldCatchingErrors = proc.isCatchingErrors;&#xD;&#xD;return function(){&#xD; proc.handleError = oldHandleError;&#xD; proc.isCatchingErrors = oldCatchingErrors;&#xD;}</l></block><list></list></block></custom-block><block s="doCallCC"><block s="reifyScript"><script><block s="doRun"><block s="reportJSFunction"><list><l>reset</l><l>action</l><l>handler</l><l>proc</l></list><l>proc.isCatchingErrors = true;&#xD;proc.handleError = function(error, element){&#xD; reset();&#xD; proc.context = handler;&#xD; proc.context.variables.setVar("error", error);&#xD;}&#xD;&#xD;try{&#xD; proc.evaluate(action, new List(), true);&#xD;}&#xD;catch(e){&#xD; proc.handleError(e, null);&#xD;} </l></block><list><block var="reset"/><block var="action"/><block s="reifyScript"><script><block s="doRun"><block s="reifyScript"><script><block s="doRun"><block var="handler"/><list></list></block><block s="doRun"><block var="return"/><list></list></block></script><list></list></block><list></list></block></script><list></list></block></list></block></script><list><l>return</l></list></block></block><block s="doRun"><block var="reset"/><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="doRun"><block s="reportJSFunction"><list><l>msg</l></list><l>throw new Error(msg);</l></block><list><block var="msg"/></list></block></script></block-definition><block-definition s="let %&apos;var&apos; be %&apos;val&apos;" type="command" category="other"><comment x="0" y="0" w="183.33333333333334" collapsed="false">LET (FOO) BE (5)&#xD;is equivalent to&#xD;SCRIPT VARIABLES (FOO)&#xD;SET (FOO) TO (5)</comment><header></header><code></code><translations>pt:cria a variável de guião _ com valor _&#xD;</translations><inputs><input type="%upvar"></input><input type="%s"></input></inputs><script><block s="doSetVar"><l>var</l><block var="val"/></block></script></block-definition><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></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="create %&apos;scope&apos; var %&apos;names&apos;" type="command" category="variables"><comment x="0" y="0" w="146" collapsed="false">This block creates  new variables on the selected scope: global (for all sprites), sprite (for this sprite only) or script (only for that blocks stack) with the names given (in &apos;names&apos; list).&#xD;&#xD;If there is already a variable with that name in that scope, it does nothing: no errors and no overwrites.</comment><header></header><code></code><translations>pt:cria as variáveis _ _&#xD;ca:crea les _ variables _&#xD;es:crear las _ variables _&#xD;de:erstellen _ var _&#xD;</translations><inputs><input type="%s" readonly="true">global<options>global&#xD;sprite&#xD;script</options></input><input type="%mult%txt"></input></inputs><script><block s="doIfElse"><block s="reportEquals"><block var="scope"/><l>script</l></block><script><block s="doForEach"><l>each item</l><block var="names"/><script><block s="doRun"><block s="reportJSFunction"><list><l>varName</l><l>proc</l></list><l>if ((typeof varName) != "string" || varName === "") {&#xD;    throw new Error("name isn&apos;t a string: " + varName);&#xD;}&#xD;if (!proc.homeContext.variables.vars[varName]) proc.homeContext.variables.addVar(varName);</l></block><list><block var="each item"/></list></block></script></block></script><script><block s="doDeclareVariables"><list><l>global</l></list></block><block s="doIfElse"><block s="reportEquals"><block var="scope"/><l>sprite</l></block><script><block s="doSetVar"><l>global</l><block s="reportBoolean"><l><bool>false</bool></l></block></block></script><script><block s="doSetVar"><l>global</l><block s="reportBoolean"><l><bool>true</bool></l></block></block></script></block><block s="doForEach"><l>each item</l><block var="names"/><script><block s="doRun"><block s="reportJSFunction"><list><l>varName</l><l>global</l><l>proc</l></list><l>if ((typeof varName) != "string" || varName === "") {&#xD;    throw new Error("name isn&apos;t a string: " + varName);&#xD;}&#xD;if (global &amp;&amp; !proc.homeContext.variables.parentFrame.parentFrame.vars[varName]) this.addVariable(varName, true);&#xD;if (!global &amp;&amp; !proc.homeContext.variables.parentFrame.vars[varName]) this.addVariable(varName, false);</l></block><list><block var="each item"/><block var="global"/></list></block></script></block><block s="doRun"><block s="reportJSFunction"><list></list><l>var ide = this.parentThatIsA(IDE_Morph);&#xD;ide.flushBlocksCache(&apos;variables&apos;); // b/c of inheritance&#xD;ide.refreshPalette();</l></block><list></list></block></script></block></script></block-definition><block-definition s="delete var %&apos;names&apos;" type="command" category="variables"><comment x="0" y="0" w="217" collapsed="false">This block deletes all the variables with the names given (inside input list).&#xD;&#xD;Each name will make only one variable deletion, and this will be the variable found following the scope order: &apos;script&apos; -&gt; &apos;sprite&apos; -&gt; &apos;global&apos;.&#xD;&#xD;If we have a &quot;testing&quot; sprite variable and also a &quot;testing&quot; global one, deleting &quot;testing&quot; will delete only the sprite one (Yes! we can also do &quot;delete var (testing, testing)&quot; to delete both.&#xD;&#xD;If one variable does not exists (in any scope) an error happens, stopping block action in that point. You can check it before with the &quot;does var (name) exists?&quot;block. </comment><header></header><code></code><translations>pt:remove as variáveis _&#xD;ca:esborra les variables _&#xD;es:borrar variables _&#xD;de:löschen var _&#xD;</translations><inputs><input type="%mult%txt"></input></inputs><script><block s="doForEach"><l>each item</l><block var="names"/><script><block s="doRun"><block s="reportJSFunction"><list><l>varName</l><l>proc</l></list><l>if ((typeof varName) != "string" || varName === "") {&#xD;    throw new Error("name isn&apos;t a string: " + varName);&#xD;}&#xD;if (typeof proc.homeContext.variables.vars[varName] !== &apos;undefined&apos;) {&#xD;    delete proc.homeContext.variables.vars[varName];&#xD;} else if (this.deletableVariableNames().indexOf(varName) != -1) {&#xD;    this.deleteVariable(varName);&#xD;} else {&#xD;    throw new Error("variable doesn&apos;t exist: " + varName);&#xD;}</l></block><list><block var="each item"/></list></block></script></block><block s="doRun"><block s="reportJSFunction"><list></list><l>var ide = this.parentThatIsA(IDE_Morph);&#xD;ide.flushBlocksCache(&apos;variables&apos;); // b/c of inheritance&#xD;ide.refreshPalette();</l></block><list></list></block></script></block-definition><block-definition s="set var %&apos;name&apos; to %&apos;value&apos;" type="command" category="variables"><comment x="0" y="0" w="240.4931640625" collapsed="false">This block sets the given value (last input) to the variable named with the name givent (var input).&#xD;&#xD;It looks for that variable following the scope order &apos;script&apos; -&gt; &apos;sprite&apos; -&gt; &apos;global&apos; (the first match it finds).&#xD;&#xD;If that variable does not exist (in any scope) an error happens, stopping their script. You can check it before using the &quot;does var (name) exists?&quot; block. </comment><header></header><code></code><translations>ca:assigna a _ el valor _&#xD;es:asignar a _ el valor _&#xD;pt:altera _ para _&#xD;de:setze var _ auf _&#xD;</translations><inputs><input type="%s"><options>§_getVarNamesDict</options></input><input type="%s"></input></inputs><script><block s="doRun"><block s="reportJSFunction"><list><l>varName</l><l>value</l><l>proc</l></list><l>if ((typeof varName) != "string") {&#xD;    throw new Error("name isn&apos;t a string: " + varName);&#xD;}&#xD;proc.homeContext.variables.setVar(varName, value);</l></block><list><block var="name"/><block var="value"/></list></block></script></block-definition><block-definition s="var %&apos;name&apos;" type="reporter" category="variables"><comment x="0" y="0" w="178.00000000000003" collapsed="false">This block reports the value of the variable with the name given.&#xD;&#xD;It looks for that variable following the scope order &apos;script&apos; -&gt; &apos;sprite&apos; -&gt; &apos;global&apos; (the first match it finds).&#xD;&#xD;If that variable does not exist (in any scope) an error happens, stopping their script. You can check it before using the &quot;does var (name) exists?&quot; block. </comment><header></header><code></code><translations>pt:o valor de _&#xD;</translations><inputs><input type="%s"><options>§_getVarNamesDict</options></input></inputs><script><block s="doReport"><block s="evaluate"><block s="reportJSFunction"><list><l>varName</l><l>proc</l></list><l>if ((typeof varName) != "string") {&#xD;    throw new Error("name isn&apos;t a string: " + varName);&#xD;}&#xD;return proc.homeContext.variables.getVar(varName);</l></block><list><block var="name"/></list></block></block></script></block-definition><block-definition s="does var %&apos;name&apos; exist?" type="predicate" category="variables"><comment x="0" y="0" w="146" collapsed="false">This block reports &quot;true&quot; if there is a variable with this given name (input slot) in that context.&#xD;&#xD;It can be a global, sprite or script variable.&#xD;&#xD;Otherwise it reports &quot;false&quot;.</comment><header></header><code></code><translations>pt:a variável _ existe&#xD;ca:existeix la variable _ ?&#xD;es:existe la variable _ ?&#xD;de:existiert var _ ?&#xD;</translations><inputs><input type="%s"></input></inputs><script><block s="doReport"><block s="evaluate"><block s="reportJSFunction"><list><l>varName</l><l>proc</l></list><l>if ((typeof varName) != "string" || varName === "") {&#xD;    throw new Error("name isn&apos;t a string: " + varName);&#xD;}&#xD;return proc.homeContext.variables.silentFind(varName)? true:false;</l></block><list><block var="name"/></list></block></block></script></block-definition><block-definition s="show var %&apos;name&apos;" type="command" category="variables"><comment x="0" y="0" w="181" collapsed="false">This block turns on (show) the watcher view on stage (if it was not already activated) of the variable with the given name (slot input).&#xD;&#xD;It can only access to the closest variable scope (if there different variables with the same name in different scopes) following the order &apos;script&apos; -&gt; &apos;sprite&apos; -&gt; &apos;global&apos;.&#xD;&#xD;No errors if that variable does not exist.</comment><header></header><code></code><translations>ca:mostra la variable _&#xD;es:mostrar variable _&#xD;pt:mostra a variável _&#xD;de:zeige var _&#xD;</translations><inputs><input type="%s"><options>§_getVarNamesDict</options></input></inputs><script><block s="doIf"><custom-block s="does var %s exist?"><block var="name"/></custom-block><script><block s="doRun"><block s="reportJSFunction"><list><l>varName</l><l>proc</l></list><l>    var varFrame = proc.homeContext.variables,&#xD;        stage,&#xD;        watcher,&#xD;        target,&#xD;        label,&#xD;        others,&#xD;        isGlobal,&#xD;        name = varName;&#xD;&#xD;    if (name instanceof Context) {&#xD;        if (name.expression.selector === &apos;reportGetVar&apos;) {&#xD;            name = name.expression.blockSpec;&#xD;        } else {&#xD;            proc.doChangePrimitiveVisibility(name.expression, false);&#xD;            return;&#xD;        }&#xD;    }&#xD;    if (proc.homeContext.receiver) {&#xD;        stage = proc.homeContext.receiver.parentThatIsA(StageMorph);&#xD;        if (stage) {&#xD;            target = varFrame.silentFind(name);&#xD;            if (!target) {return; }&#xD;            // first try to find an existing (hidden) watcher&#xD;            watcher = detect(&#xD;                stage.children,&#xD;                morph =&gt; morph instanceof WatcherMorph &amp;&amp;&#xD;                    morph.target === target &amp;&amp;&#xD;                        morph.getter === name&#xD;            );&#xD;            if (watcher !== null) {&#xD;                watcher.show();&#xD;                watcher.fixLayout(); // re-hide hidden parts&#xD;                return;&#xD;            }&#xD;            // if no watcher exists, create a new one&#xD;            isGlobal = contains(&#xD;                proc.homeContext.receiver.globalVariables().names(),&#xD;                varName&#xD;            );&#xD;            if (isGlobal || target.owner) {&#xD;                label = name;&#xD;            } else {&#xD;                label = name + &apos; &apos; + localize(&apos;(temporary)&apos;);&#xD;            }&#xD;            watcher = new WatcherMorph(&#xD;                label,&#xD;                SpriteMorph.prototype.blockColor.variables,&#xD;                target,&#xD;                name&#xD;            );&#xD;            watcher.setPosition(stage.position().add(10));&#xD;            others = stage.watchers(watcher.left());&#xD;            if (others.length &gt; 0) {&#xD;                watcher.setTop(others[others.length - 1].bottom());&#xD;            }&#xD;            stage.add(watcher);&#xD;            watcher.fixLayout();&#xD;        }&#xD;    }</l></block><list><block var="name"/></list></block></script></block></script></block-definition><block-definition s="hide var %&apos;name&apos;" type="command" category="variables"><comment x="0" y="0" w="181" collapsed="false">This block turns off (hide) the watcher view on stage (if it was not already activated) of the variable with the given name (slot input).&#xD;&#xD;It can only access to the closest variable scope (if there different variables with the same name in different scopes) following the order &apos;script&apos; -&gt; &apos;sprite&apos; -&gt; &apos;global&apos;.&#xD;&#xD;No errors if that variable does not exist.</comment><header></header><code></code><translations>ca:amaga la variable _&#xD;es:esconder variable _&#xD;pt:esconde a variável _&#xD;de:verstecke var _&#xD;</translations><inputs><input type="%s"><options>§_getVarNamesDict</options></input></inputs><script><block s="doIf"><custom-block s="does var %s exist?"><block var="name"/></custom-block><script><block s="doRun"><block s="reportJSFunction"><list><l>varName</l><l>proc</l></list><l>    // to delete all temporary watchers, use the primitive "hide" with no inputs&#xD;    var varFrame = proc.homeContext.variables,&#xD;        stage,&#xD;        watcher,&#xD;        target,&#xD;        name = varName;&#xD;&#xD;    if (name instanceof Context) {&#xD;        if (name.expression.selector === &apos;reportGetVar&apos;) {&#xD;            name = name.expression.blockSpec;&#xD;        } else {&#xD;            proc.doChangePrimitiveVisibility(name.expression, true);&#xD;            return;&#xD;        }&#xD;    }&#xD;    if (!name) {&#xD;        proc.doRemoveTemporaries();&#xD;        return;&#xD;    }&#xD;    if (proc.homeContext.receiver) {&#xD;        stage = proc.homeContext.receiver.parentThatIsA(StageMorph);&#xD;        if (stage) {&#xD;            target = varFrame.find(name);&#xD;            watcher = detect(&#xD;                stage.children,&#xD;                morph =&gt; morph instanceof WatcherMorph &amp;&amp;&#xD;                    morph.target === target &amp;&amp;&#xD;                        morph.getter === name&#xD;            );&#xD;            if (watcher !== null) {&#xD;                if (watcher.isTemporary()) {&#xD;                    watcher.destroy();&#xD;                } else {&#xD;                    watcher.hide();&#xD;                }&#xD;            }&#xD;        }&#xD;    }&#xD;</l></block><list><block var="name"/></list></block></script></block></script></block-definition><block-definition s="var" type="command" category="other"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doIfElse"><block s="reportNot"><block s="reportListContainsItem"><block var="reserved"/><block s="reportListItem"><l>2</l><block var="command"/></block></block></block><script><block s="doIfElse"><block s="reportNot"><block s="reportListContainsItem"><block var="aliases"/><block s="reportListItem"><l>2</l><block var="command"/></block></block></block><script><block s="doIfElse"><custom-block s="does var %s exist?"><block s="reportListItem"><l>2</l><block var="command"/></block></custom-block><script><custom-block s="set var %s to %s"><block s="reportListItem"><l>2</l><block var="command"/></block><block s="reportListItem"><l>3</l><block var="command"/></block></custom-block></script><script><custom-block s="create %s var %mult%txt"><l>global</l><list><block s="reportListItem"><l>2</l><block var="command"/></block></list></custom-block><custom-block s="set var %s to %s"><block s="reportListItem"><l>2</l><block var="command"/></block><block s="reportListItem"><l>3</l><block var="command"/></block></custom-block><block s="doAddToList"><block s="reportListItem"><l>2</l><block var="command"/></block><block var="vars"/></block></script></block></script><script><block s="doAddToList"><l>Cannot assign value to alias</l><block var="terminal"/></block></script></block></script><script><block s="doAddToList"><l>Cannot make a variable with a reserved name</l><block var="terminal"/></block></script></block></script></block-definition><block-definition s="alias" type="command" category="other"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doDeclareVariables"><list><l>custom command alias</l></list></block><block s="doSetVar"><l>custom command alias</l><block s="reportListItem"><l>2</l><block var="command"/></block></block><block s="doIfElse"><block s="reportNot"><block s="reportListContainsItem"><block var="reserved"/><block var="custom command alias"/></block></block><script><block s="doIfElse"><block s="reportNot"><block s="reportListContainsItem"><block var="vars"/><block var="custom command alias"/></block></block><script><block s="doIfElse"><custom-block s="does var %s exist?"><block s="reportListItem"><l>2</l><block var="command"/></block></custom-block><script><custom-block s="set var %s to %s"><block s="reportListItem"><l>2</l><block var="command"/></block><block s="reportListItem"><block s="reportNumbers"><l>3</l><block s="reportListAttribute"><l><option>length</option></l><block var="command"/></block></block><block var="command"/></block></custom-block><block s="doReplaceInList"><block s="reportListIndex"><block s="reportListItem"><l>2</l><block var="command"/></block><block var="textfunc_keys"/></block><block var="textfunc_values"/><block s="reifyReporter"><script><block s="doSetVar"><l>command</l><block s="reportTextSplit"><custom-block s="var %s"><block var="custom command alias"/></custom-block><l>&#126;</l></block></block><custom-block s="parse %l"><block var="command"/></custom-block></script><list></list></block></block></script><script><custom-block s="create %s var %mult%txt"><l>global</l><list><block s="reportListItem"><l>2</l><block var="command"/></block></list></custom-block><custom-block s="set var %s to %s"><block s="reportListItem"><l>2</l><block var="command"/></block><block s="reportListItem"><block s="reportNumbers"><l>3</l><block s="reportListAttribute"><l><option>length</option></l><block var="command"/></block></block><block var="command"/></block></custom-block><block s="doAddToList"><block s="reportListItem"><l>2</l><block var="command"/></block><block var="textfunc_keys"/></block><block s="doAddToList"><block s="reifyReporter"><script><block s="doSetVar"><l>command</l><block s="reportTextSplit"><custom-block s="var %s"><block s="evaluate"><block s="reifyReporter"><script></script><list></list></block><list><block var="custom command alias"/></list></block></custom-block><l>&#126;</l></block></block><custom-block s="parse %l"><block var="command"/></custom-block></script><list></list></block><block var="textfunc_values"/></block><block s="doAddToList"><block s="reportListItem"><l>2</l><block var="command"/></block><block var="aliases"/></block></script></block></script><script><block s="doAddToList"><l>Cannot assign alias to value</l><block var="terminal"/></block></script></block></script><script><block s="doAddToList"><l>Cannot make an alias with a reserved name</l><block var="terminal"/></block></script></block></script></block-definition><block-definition s="web" type="command" category="other"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doRun"><block s="reportJSFunction"><list><l>url</l></list><l>window.open(url, &apos;_blank&apos;, &apos;location=newindow&apos;)</l></block><list><block s="reportListItem"><l>2</l><block var="command"/></block></list></block><block s="doAddToList"><l>If you didn&apos;t get to the correct webpage, maybe you forgot http:// or https:// ?</l><block var="terminal"/></block></script></block-definition><block-definition s="deletevars" type="command" category="other"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doForEach"><l>item</l><block var="vars"/><script><custom-block s="delete var %mult%txt"><list><block var="item"/></list></custom-block></script></block><block s="doSetVar"><l>vars</l><block s="reportNewList"><list></list></block></block></script></block-definition><block-definition s="getvar" type="command" category="other"><header></header><code></code><translations></translations><inputs></inputs><script><custom-block s="safely try %cs then if %upvar %cs"><script><block s="doAddToList"><custom-block s="var %s"><block s="reportListItem"><l>2</l><block var="command"/></block></custom-block><block var="terminal"/></block></script><l>error</l><script><block s="doAddToList"><block var="error"/><block var="terminal"/></block></script></custom-block></script></block-definition></blocks><variables><variable name="terminal"><list struct="atomic" id="880">SnapTerminal ,&quot;Type &quot;&quot;help&quot;&quot; for help&quot;,Seperate arguments with &#126;,alias&#126;test&#126;echo&#126;hi,test,&quot;&quot;&quot;echo&quot;&quot; is not a recognized command&quot;,echo&#126;hi,hi</list></variable><variable name="command"><list struct="atomic" id="881">echo,hi</list></variable><variable name="textfunc_keys"><list struct="atomic" id="882">js,echo,clear,help,var,alias,web,deletevars,getvar,test</list></variable><variable name="textfunc_values"><list id="883"><item><context id="884"><inputs></inputs><variables></variables><script><custom-block s="js"></custom-block></script><receiver><ref id="8"></ref></receiver><origin><ref id="8"></ref></origin><context id="888"><inputs></inputs><variables></variables><receiver><ref id="8"></ref></receiver><origin><ref id="8"></ref></origin></context></context></item><item><context id="890"><inputs></inputs><variables></variables><script><custom-block s="echo"></custom-block></script><receiver><ref id="8"></ref></receiver><origin><ref id="8"></ref></origin></context></item><item><context id="894"><inputs></inputs><variables></variables><script><custom-block s="clear"></custom-block></script><receiver><ref id="8"></ref></receiver><origin><ref id="8"></ref></origin></context></item><item><context id="898"><inputs></inputs><variables></variables><script><custom-block s="help"></custom-block></script><receiver><ref id="8"></ref></receiver><origin><ref id="8"></ref></origin></context></item><item><context id="902"><inputs></inputs><variables></variables><script><custom-block s="var"></custom-block></script><receiver><ref id="8"></ref></receiver><origin><ref id="8"></ref></origin></context></item><item><context id="906"><inputs></inputs><variables></variables><script><custom-block s="alias"></custom-block></script><receiver><ref id="8"></ref></receiver><origin><ref id="8"></ref></origin></context></item><item><context id="910"><inputs></inputs><variables></variables><script><custom-block s="web"></custom-block></script><receiver><ref id="8"></ref></receiver><origin><ref id="8"></ref></origin></context></item><item><context id="914"><inputs></inputs><variables></variables><script><custom-block s="deletevars"></custom-block></script><receiver><ref id="8"></ref></receiver><origin><ref id="8"></ref></origin></context></item><item><context id="918"><inputs></inputs><variables></variables><script><custom-block s="getvar"></custom-block></script><receiver><ref id="8"></ref></receiver><origin><ref id="8"></ref></origin></context></item><item><context id="922"><inputs></inputs><variables></variables><script><block s="doSetVar"><l>command</l><block s="reportTextSplit"><custom-block s="var %s"><block s="evaluate"><block s="reifyReporter"><script></script><list></list></block><list><block var="custom command alias"/></list></block></custom-block><l>&#126;</l></block></block><custom-block s="parse %l"><block var="command"/></custom-block></script><receiver><ref id="8"></ref></receiver><origin><ref id="8"></ref></origin><context id="944"><inputs></inputs><variables><variable name="custom command alias"><l>test</l></variable></variables><receiver><ref id="8"></ref></receiver><origin></origin></context></context></item></list></variable><variable name="reserved"><list struct="atomic" id="946">command,reserved,terminal,textfunc_keys,textfunc_valuea,vars,aliases,var,alias,js,help,deletevars,getvar,web,echo,clear</list></variable><variable name="aliases"><list struct="atomic" id="947">test</list></variable><variable name="vars"><list struct="atomic" id="948"></list></variable><variable name="test"><list struct="atomic" id="949">echo,hi</list></variable></variables></project><media name="SnapTerminal" app="Snap! 6, https://snap.berkeley.edu" version="1"></media></snapdata>