<snapdata remixID="13619963"><project name="Lisp" app="Snap! 11.0.8, https://snap.berkeley.edu" version="2"><notes></notes><thumbnail>data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAKAAAAB4CAYAAAB1ovlvAAAAAXNSR0IArs4c6QAABSFJREFUeF7tnUsrbmEYhh9yiJDTgFKOJYWUTBxjqmSkjJSBual/oPgFyj/wA4wIA3IoUzIyMnCIcsph975ttcve2+c7Pc/nudaEsta67+e+r9b63vWtkvf+/v4ubCSglEAeAColj2xMAAABQTUBAFSNH3EAhAHVBABQNX7EARAGVBMAQNX4EQdAGFBNAABV40ccAGFANQEAVI0fcQCEAdUEAFA1fsQBEAZUEwBA1fgRB0AYUE0AAFXjRxwAYUA1AQBUjR9xAIQB1QQAUDV+xAEQBlQTAEDV+BEHQBhQTQAAVeNHHABhQDUBAFSNH3EAhAHVBABQNX7EARAGVBMAQNX4EQdAGFBNAABV40ccAGFANQEAVI0fcQCEAdUEAFA1fsQBEAZUEwBA1fgRB0AYUE0AAFXjRxwAYUA1AQBUjT858fDf1XZ3d+X5+Vne3t4+naSwsFAqKyuls7MzOYEsHgWAWQw7HVIBvs3NTenq6pLq6mrJz8//dNqXlxc5ODiQp6cnGRkZSYdsxs4BgBmLNjMn3trakp6eHqmoqPhSYGdnRzo6OqSmpubLfbV2AECt5JPU3djYkNHR0YSOvrm5kdPTU+nr60tof42dAFAj9RQ0PwBcXV2V4eFhaWlpiUCura3J+Pi4vL6+xttv2MKteHt7O2FgU7CV9KEAmHR0Ogd+ABiubufn59LQ0BAXHHV1dXJ5eSmDg4PxMyIA6vTz41U/ALy/v5ezs7O40g0ABiAfHx/j/Ovr6zI5OckV8MfToDBgADCsbBsbGyNgs7OzsrKyIqWlpbKwsCBLS0tycnLCFVChGxeS31mEXFxcyNXVVVwJW934DGi1mX/4Ojw8jH/p7e390nmAdWhoSAoKCr7cV2sHANRKPgXdAFa45YYVcElJiZSVlcWz3d3dxZ/X19fx82F4/tfd3Z2CUuYPBcDMZ5wRhXBrPT4+jp8HA3hHR0dSXl4etaqqquLquLi4OCPa6TwpAKYzzSye6+HhQfb39yNk4feBgQEJ3wHn2gaAudbYb7/hNhy2pqYmaW5uztEpRABQubpwCw3P7Obn5xN2Eq54e3t70t/fL0VFRQkfZ3FHAFRuJbxONTU1Fb9CC69X1dbWyszMjIyNjSk7y448AGYn5/+q3N7eRuj+toWFxeLiotTX1xtwmn4LAJj+TL99xvDe3vT0tIR3/f7cwtWxvb1d5ubmpK2t7dvnzYUDAFC5pQDZxMREXMGGB8bh+9xwxWttbc2JxyipxgeAqSaY4vHhzebl5eX4zl54fudtA0BvjRubFwCNFeLNDgB6a9zYvABorBBvdgDQW+PG5gVAY4V4swOA3ho3Ni8AGivEmx0A9Na4sXkB0Fgh3uwAoLfGjc0LgMYK8WYHAL01bmxeADRWiDc7AOitcWPzAqCxQrzZAUBvjRubFwCNFeLNDgB6a9zYvABorBBvdgDQW+PG5gVAY4V4swOA3ho3Ni8AGivEmx0A9Na4sXkB0Fgh3uwAoLfGjc0LgMYK8WYHAL01bmxeADRWiDc7AOitcWPzAqCxQrzZAUBvjRubFwCNFeLNDgB6a9zYvABorBBvdgDQW+PG5gVAY4V4swOA3ho3Ni8AGivEmx0A9Na4sXkB0Fgh3uwAoLfGjc0LgMYK8WYHAL01bmxeADRWiDc7AOitcWPzAqCxQrzZAUBvjRubFwCNFeLNDgB6a9zYvABorBBvdgDQW+PG5gVAY4V4swOA3ho3Ni8AGivEmx0A9Na4sXl/AaZNxbdDUwxGAAAAAElFTkSuQmCC</thumbnail><scenes select="1"><scene name="Lisp"><notes></notes><palette><category name="Lisp" color="0,221,230,1"/></palette><hidden></hidden><headers></headers><code></code><blocks><block-definition s="$flash sort %&apos;data&apos; ordering with %&apos;function&apos;" type="reporter" category="lists"><comment x="0" y="0" w="161.14285714285708" collapsed="false">Reports a sorted version of the list in its first input slot, using the comparison function in the second input slot.  For a list of numbers, using &lt; as the comparison function will sort from low to high; using &gt; will sort from high to low.</comment><header></header><code></code><translations>ca:ordena _ segons criteri _&#xD;pl:$flash sortuj _ za pomocą _&#xD;</translations><inputs><input type="%l"></input><input type="%predRing"></input></inputs><script><block s="doReport"><block s="reportApplyExtension"><l>lst_sort(list, fn)</l><list><block var="data"/><block var="function"/></list></block></block></script></block-definition><block-definition s="$flash assoc %&apos;key&apos; %&apos;a-list&apos;" type="reporter" category="lists"><comment x="0" y="0" w="289.3333333333333" collapsed="false">The second input is an &quot;association list,&quot; a list of two-item lists.  Each of those smaller lists has a &quot;key&quot; as its first item and a &quot;value&quot; as its second.  ASSOC reports the first key-value pair in the association list whose key matches the first input.</comment><header></header><code></code><translations>ca:associació _ _&#xD;pl:$flash skojarz _ _&#xD;</translations><inputs><input type="%s"></input><input type="%l"></input></inputs><script><block s="doReport"><block s="reportAtomicFindFirst"><block s="reifyPredicate"><autolambda><block s="reportVariadicEquals"><list><block var="key"/><block s="reportListItem"><l>1</l><l/></block></list></block></autolambda><list></list></block><block var="a-list"/></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;pl:_ dla każdego _ z _ _&#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><block-definition s="☠︎ linked? %&apos;data&apos;" type="predicate" category="lists" helper="true"><header></header><code></code><translations></translations><inputs><input type="%l"></input></inputs><script><block s="doReport"><block s="reportApplyExtension"><l>lst_linked(list)</l><list><block var="data"/></list></block></block></script></block-definition><block-definition s="☠︎ link %&apos;data&apos;" type="reporter" category="lists" helper="true"><header></header><code></code><translations></translations><inputs><input type="%l"></input></inputs><script><block s="doIf"><block s="reportListIsEmpty"><block var="data"/></block><script><block s="doReport"><block var="data"/></block></script><list></list></block><block s="doReport"><block s="reportCONS"><block s="reportListItem"><l>1</l><block var="data"/></block><block s="reportCDR"><block var="data"/></block></block></block></script></block-definition><block-definition s="printable %&apos;data&apos;" type="reporter" category="lists"><comment x="0" y="0" w="188.66666666666666" collapsed="false">Takes a (possibly deep) list as input,&#xD;and reports a human-readable text form &#xD;of the list (namely, Lisp notation).&#xD;&#xD;Will not work on circular lists.</comment><header></header><code></code><translations>ca:notació textual de _&#xD;pl:tekstowa _&#xD;</translations><inputs><input type="%l"></input></inputs><script><block s="doIf"><block s="reportNot"><block s="reportIsA"><block var="data"/><l><option>list</option></l></block></block><script><block s="doReport"><block var="data"/></block></script><list></list></block><block s="doIf"><block s="reportListIsEmpty"><block var="data"/></block><script><block s="doReport"><l>()</l></block></script><list></list></block><block s="doReport"><block s="reportJoinWords"><list><l>(</l><block s="reportAtomicCombine"><block s="reportMap"><block s="reifyReporter"><autolambda><custom-block s="printable %l"><l/></custom-block></autolambda><list></list></block><block var="data"/></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="sentence %&apos;phrase&apos;" type="reporter" category="lists"><comment x="0" y="0" w="302.6666666666667" collapsed="false">SENTENCE is the main constructor for sentences, represented&#xD;as lists of words.  It takes zero or more inputs, each of which can&#xD;be either a list or a text string.  If a list, the input is assumed to be&#xD;a list of words.  If a text string, it is converted to a list of words using&#xD;SENTENCE→LIST.  Then all the lists of words are appended to form a new list of words.&#xD;&#xD;If the inputs are lists of lists rather than lists of words, SENTENCE,&#xD;like APPEND, does only one level of flattening, reporting a list of&#xD;all the items of all the input lists.</comment><header></header><code></code><translations>ca:frase _&#xD;pl:zdanie _&#xD;</translations><inputs><input type="%mult%s"></input></inputs><script><block s="doReport"><block s="reportConcatenatedLists"><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportIfElse"><block s="reportIsA"><l></l><l><option>list</option></l></block><l></l><custom-block s="sentence $arrowRight list %txt"><l></l></custom-block></block></autolambda><list></list></block><block var="phrase"/></block></block></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>pl:$flash spakuj _&#xD;</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;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="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;pl:mapuj wielokrotnie _ na _&#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="sentence $arrowRight list %&apos;text&apos;" type="reporter" category="operators"><comment x="0" y="0" w="196" collapsed="false">Takes a sentence in text string form and reports the sentence as a list of its words.</comment><header></header><code></code><translations>de:Satz $arrowRight Liste _&#xD;ca:frase $arrowRight llista _&#xD;es:frase $arrowRight lista _&#xD;fr:phrase $arrowRight liste _&#xD;pt:uma lista com as palavras da frase _&#xD;pl:zdanie $arrowRight lista _&#xD;</translations><inputs><input type="%txt"></input></inputs><script><block s="doReport"><block s="reportAtomicKeep"><block s="reifyPredicate"><autolambda><block s="reportNot"><block s="reportVariadicEquals"><list><block s="reportTextAttribute"><l><option>length</option></l><l></l></block><l>0</l></list></block></block></autolambda><list></list></block><block s="reportTextSplit"><block var="text"/><l><option>whitespace</option></l></block></block></block></script></block-definition><block-definition s="lineable %&apos;data&apos;" type="reporter" category="lists"><comment x="0" y="0" w="188.66666666666666" collapsed="false">Takes a (possibly deep) list as input,&#xD;and reports a human-readable text form &#xD;of the list (namely, Lisp notation).&#xD;&#xD;Will not work on circular lists.</comment><header></header><code></code><translations>ca:notació textual de _&#xD;pl:tekstowa _&#xD;</translations><inputs><input type="%l"></input></inputs><script><block s="doIf"><block s="reportNot"><block s="reportIsA"><block var="data"/><l><option>list</option></l></block></block><script><block s="doReport"><block var="data"/></block></script><list></list></block><block s="doIf"><block s="reportListIsEmpty"><block var="data"/></block><script><block s="doReport"><l>()</l></block></script><list></list></block><block s="doReport"><block s="reportJoinWords"><list><l>(</l><block s="reportAtomicCombine"><block s="reportMap"><block s="reifyReporter"><autolambda><custom-block s="lineable %l"><l/></custom-block></autolambda><list></list></block><block var="data"/></block><block s="reifyReporter"><autolambda><block s="reportJoinWords"><list><l></l><custom-block s="multiline %mlt"><l>&#xD;</l></custom-block><l></l></list></block></autolambda><list></list></block></block><l>)</l></list></block></block></script></block-definition><block-definition s="multiline %&apos;text&apos;" type="reporter" category="operators"><header></header><code></code><translations>pt:o texto multilinha _&#xD;ca:multilínia _&#xD;pl:wielowiersz _&#xD;</translations><inputs><input type="%mlt"></input></inputs><script><block s="doReport"><block var="text"/></block></script></block-definition><block-definition s="substring of %&apos;string&apos; before %&apos;marker&apos;" type="reporter" category="operators"><comment x="0" y="0" w="175.33333333333334" collapsed="false">Reports the part of the first string up to the first instance of the second string inside it.  If the second string isn&apos;t found, reports the entire first string.</comment><header></header><code></code><translations>pt:o texto de _ antes de _&#xD;ca:part del text _ anterior a _&#xD;pl:podciąg _ przed _&#xD;</translations><inputs><input type="%txt"></input><input type="%txt"></input></inputs><script><block s="doDeclareVariables"><list><l>index</l></list></block><block s="doSetVar"><l>index</l><custom-block s="position of %s in %txt"><block var="marker"/><block var="string"/></custom-block></block><block s="doReport"><block s="reportIfElse"><block s="reportVariadicEquals"><list><block var="index"/><l>0</l></list></block><block var="string"/><block s="reportIfElse"><block s="reportVariadicEquals"><list><block var="index"/><l>1</l></list></block><l></l><custom-block s="substring of %txt from position %n to position %n inclusive"><block var="string"/><l>1</l><block s="reportDifference"><block var="index"/><l>1</l></block></custom-block></block></block></block></script></block-definition><block-definition s="substring of %&apos;string&apos; after %&apos;marker&apos;" type="reporter" category="operators"><comment x="0" y="0" w="203.33333333333334" collapsed="false">Reports the portion of the first input string starting after the first occurrence of the second string.  If the second string isn&apos;t found in the first string, reports an empty string.</comment><header></header><code></code><translations>pt:o texto de _ depois de _&#xD;ca:part del text _ posterior a _&#xD;pl:podciąg _ po _&#xD;</translations><inputs><input type="%txt"></input><input type="%txt"></input></inputs><script><block s="doDeclareVariables"><list><l>index</l><l>end</l></list></block><block s="doSetVar"><l>index</l><custom-block s="position of %s in %txt"><block var="marker"/><block var="string"/></custom-block></block><block s="doSetVar"><l>end</l><block s="reportVariadicSum"><list><block var="index"/><block s="reportTextAttribute"><l><option>length</option></l><block var="marker"/></block></list></block></block><block s="doReport"><block s="reportIfElse"><block s="reportVariadicEquals"><list><block var="index"/><l>0</l></list></block><l></l><block s="reportIfElse"><block s="reportVariadicGreaterThan"><list><block var="end"/><block s="reportTextAttribute"><l><option>length</option></l><block var="string"/></block></list></block><l></l><custom-block s="substring of %txt from position %n to position %n inclusive"><block var="string"/><block var="end"/><l></l></custom-block></block></block></block></script></block-definition><block-definition s="position of %&apos;small&apos; in %&apos;large&apos;" type="reporter" category="operators"><comment x="0" y="0" w="294" collapsed="false">Reports the character position (starting from 1) of the beginning of the first input string inside the second input string.&#xD;If it&apos;s not found, reports 0.</comment><header></header><code></code><translations>pt:a posição de _ em _&#xD;ca:posició de _ en _&#xD;pl:pozycja _ w _&#xD;</translations><inputs><input type="%s"></input><input type="%txt"></input></inputs><script><block s="doReport"><block s="reportIfElse"><block s="reportGlobalFlag"><l><option>case sensitivity</option></l></block><block s="reportApplyExtension"><l>txt_indexof(sub, txt)</l><list><block var="small"/><block var="large"/></list></block><block s="reportApplyExtension"><l>txt_indexof(sub, txt)</l><list><block s="reportTextAttribute"><l><option>lower case</option></l><block var="small"/></block><block s="reportTextAttribute"><l><option>lower case</option></l><block var="large"/></block></list></block></block></block></script></block-definition><block-definition s="substring of %&apos;str&apos; from position %&apos;start&apos; to position %&apos;end&apos; inclusive" type="reporter" category="operators"><comment x="0" y="0" w="297.3333333333333" collapsed="false">Reports the portion of the first input (string) starting at the position given by the second input (counting from 1, like LETTER n OF) and ending at the position given by the third input (also counting from 1).  If the third input is empty, reports the portion from the first position to the end of the string.&#xD;If a position number is negative, counts from the end backward, so -1 is the last character, -2 is the next to last, etc.</comment><header></header><code></code><translations>pt:o texto de _ entre as posições _ e _ , inclusive&#xD;ca:part del text _ des de la posició _ fins _&#xD;pl:podciąg _ od pozycji _ do pozycji _ włącznie&#xD;</translations><inputs><input type="%txt"></input><input type="%n"></input><input type="%n"></input></inputs><script><block s="doReport"><block s="reportJoinWords"><block s="reportLetter"><block s="reportNumbers"><block s="reportIfElse"><block s="reportVariadicLessThan"><list><block var="start"/><l>0</l></list></block><block s="reportVariadicSum"><list><block s="reportVariadicSum"><list><block var="start"/><l>1</l></list></block><block s="reportTextAttribute"><l><option>length</option></l><block var="str"/></block></list></block><block var="start"/></block><block s="reportIfElse"><block s="reportVariadicEquals"><list><block var="end"/><l>0</l></list></block><block s="reportTextAttribute"><l><option>length</option></l><block var="str"/></block><block s="reportIfElse"><block s="reportVariadicLessThan"><list><block var="end"/><l>0</l></list></block><block s="reportVariadicSum"><list><block s="reportVariadicSum"><list><block var="end"/><l>1</l></list></block><block s="reportTextAttribute"><l><option>length</option></l><block var="str"/></block></list></block><block var="end"/></block></block></block><block var="str"/></block></block></block></script></block-definition><block-definition s="text %&apos;string&apos; contains %&apos;marker&apos;" type="predicate" category="operators"><comment x="0" y="0" w="218" collapsed="false">Reports True if the first input string contains the second input string, otherwise false.&#xD;&#xD;Comparison is case-independent by default; use USE CASE-INDEPENDENT COMPARISONS to change that.</comment><header></header><code></code><translations>pt:o texto de _ antes de _&#xD;ca:text _ conté _ ?&#xD;pl:tekst _ zawiera _&#xD;</translations><inputs><input type="%txt"></input><input type="%txt"></input></inputs><script><block s="doReport"><block s="reportVariadicGreaterThan"><list><custom-block s="position of %s in %txt"><block var="marker"/><block var="string"/></custom-block><l>0</l></list></block></block></script></block-definition><block-definition s="Setup lisp" type="command" category="Lisp"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doSetVar"><l>Commands</l><block s="reportNewList"><list><block s="reportNewList"><list><l>print</l><block s="reifyScript"><script><block s="bubble"><block var="#1"/></block></script><list><l>#1</l></list></block></list></block><block s="reportNewList"><list><l>+</l><block s="reifyReporter"><autolambda><block s="reportVariadicSum"><list><block var="#1"/><block var="#2"/></list></block></autolambda><list><l>#1</l><l>#2</l></list></block></list></block><block s="reportNewList"><list><l>-</l><block s="reifyReporter"><autolambda><block s="reportDifference"><block var="#1"/><block var="#2"/></block></autolambda><list><l>#1</l><l>#2</l></list></block></list></block><block s="reportNewList"><list><l>*</l><block s="reifyReporter"><autolambda><block s="reportVariadicProduct"><list><block var="#1"/><block var="#2"/></list></block></autolambda><list><l>#1</l><l>#2</l></list></block></list></block><block s="reportNewList"><list><l>/</l><block s="reifyReporter"><autolambda><block s="reportQuotient"><block var="#1"/><block var="#2"/></block></autolambda><list><l>#1</l><l>#2</l></list></block></list></block><block s="reportNewList"><list><l>^</l><block s="reifyReporter"><autolambda><block s="reportPower"><block var="#1"/><block var="#2"/></block></autolambda><list><l>#1</l><l>#2</l></list></block></list></block><block s="reportNewList"><list><l>%</l><block s="reifyReporter"><autolambda><block s="reportModulus"><block var="#1"/><block var="#2"/></block></autolambda><list><l>#1</l><l>#2</l></list></block></list></block><block s="reportNewList"><list><l>run</l><block s="reifyScript"><script><custom-block s="run lisp %l"><block var="#1"/></custom-block></script><list><l>#1</l></list></block></list></block><block s="reportNewList"><list><l>call</l><block s="reifyReporter"><autolambda><custom-block s="call lisp %l"><block var="#1"/></custom-block></autolambda><list><l>#1</l></list></block></list></block><block s="reportNewList"><list><l>do</l><block s="reifyScript"><script><block s="doForEach"><l>item</l><block s="reportEnvironment"><l><option>inputs</option></l></block><script><custom-block s="run lisp %l"><block var="item"/></custom-block></script></block></script><list></list></block></list></block><block s="reportNewList"><list><l>car</l><block s="reifyReporter"><autolambda><custom-block s="car %l"><block var="#1"/></custom-block></autolambda><list><l>#1</l></list></block></list></block><block s="reportNewList"><list><l>cdr</l><block s="reifyReporter"><autolambda><custom-block s="cdr %l"><block var="#1"/></custom-block></autolambda><list><l>#1</l></list></block></list></block><block s="reportNewList"><list><l>cons</l><block s="reifyReporter"><autolambda><custom-block s="%s . %l"><block var="#1"/><block var="#2"/></custom-block></autolambda><list><l>#1</l><l>#2</l></list></block></list></block><block s="reportNewList"><list><l>nil</l><block s="reifyReporter"><autolambda><custom-block s="nil"></custom-block></autolambda><list></list></block></list></block><block s="reportNewList"><list><l>primitive</l><block s="reifyReporter"><autolambda><block s="evaluate"><block var="#1"/><list><block s="reportCDR"><block s="reportEnvironment"><l><option>inputs</option></l></block></block></list></block></autolambda><list><l>#1</l></list></block></list></block><block s="reportNewList"><list><l>join</l><block s="reifyReporter"><autolambda><block s="reportJoinWords"><list><block var="#1"/><block var="#2"/></list></block></autolambda><list><l>#1</l><l>#2</l></list></block></list></block><block s="reportNewList"><list><l>substring</l><block s="reifyReporter"><autolambda><custom-block s="substring of %txt from position %n to position %n inclusive"><block var="#1"/><block var="#2"/><block var="#3"/></custom-block></autolambda><list><l>#1</l><l>#2</l><l>#3</l></list></block></list></block><block s="reportNewList"><list><l>find</l><block s="reifyReporter"><autolambda><custom-block s="position of %s in %txt"><block var="#1"/><block var="#2"/></custom-block></autolambda><list><l>#1</l><l>#2</l></list></block></list></block><block s="reportNewList"><list><l>replace</l><block s="reifyReporter"><autolambda><custom-block s="replace every %s with %s in %s"><block var="#1"/><block var="#2"/><block var="#3"/></custom-block></autolambda><list><l>#1</l><l>#2</l><l>#3</l></list></block></list></block><block s="reportNewList"><list><l>=</l><block s="reifyPredicate"><autolambda><block s="reportVariadicEquals"><list><block var="#1"/><block var="#2"/></list></block></autolambda><list><l>#1</l><l>#2</l></list></block></list></block><block s="reportNewList"><list><l>&lt;</l><block s="reifyPredicate"><autolambda><block s="reportVariadicLessThan"><list><block var="#1"/><block var="#2"/></list></block></autolambda><list><l>#1</l><l>#2</l></list></block></list></block><block s="reportNewList"><list><l>&gt;</l><block s="reifyPredicate"><autolambda><block s="reportVariadicGreaterThan"><list><block var="#1"/><block var="#2"/></list></block></autolambda><list><l>#1</l><l>#2</l></list></block></list></block><block s="reportNewList"><list><l>&lt;=&gt;</l><block s="reifyPredicate"><autolambda><block s="reportMonadic"><l><option>sign</option></l><block s="reportDifference"><block var="#1"/><block var="#2"/></block></block></autolambda><list><l>#1</l><l>#2</l></list></block></list></block><block s="reportNewList"><list><l>ifelse</l><block s="reifyPredicate"><autolambda><block s="reportIfElse"><block var="#1"/><block var="#2"/><block var="#3"/></block></autolambda><list><l>#1</l><l>#2</l><l>#3</l></list></block></list></block><block s="reportNewList"><list><l>while</l><block s="reifyScript"><script><custom-block s="repeat while %boolUE %cs"><custom-block s="call lisp %l"><block var="#1"/></custom-block><script><custom-block s="run lisp %l"><block var="#2"/></custom-block></script></custom-block></script><list><l>#1</l><l>#2</l></list></block></list></block><block s="reportNewList"><list><l>cascade</l><block s="reifyPredicate"><autolambda><custom-block s="cascade until %predRing %repRing %s %upvar"><custom-block s="call lisp %l"><block var="#1"/></custom-block><custom-block s="call lisp %l"><block var="#2"/></custom-block><block var="#3"/><l>#</l></custom-block></autolambda><list><l>#1</l><l>#2</l><l>#3</l></list></block></list></block><block s="reportNewList"><list><l>var</l><block s="reifyPredicate"><autolambda><custom-block s="megamap %repRing over %l"><block s="reifyReporter"><autolambda><block s="reportIfElse"><block s="reportVariadicEquals"><list><block var="value"/><block var="#1"/></list></block><block var="#2"/><block var="value"/></block></autolambda><list><l>value</l></list></block><block var="#3"/></custom-block></autolambda><list><l>#1</l><l>#2</l><l>#3</l></list></block></list></block><block s="reportNewList"><list><l>left</l><block s="reifyPredicate"><autolambda><block var="#1"/></autolambda><list><l>#1</l><l>#2</l></list></block></list></block><block s="reportNewList"><list><l>right</l><block s="reifyPredicate"><autolambda><block var="#2"/></autolambda><list><l>#1</l><l>#2</l></list></block></list></block><block s="reportNewList"><list><l>true</l><block s="reifyPredicate"><autolambda><block s="reportBoolean"><l><bool>true</bool></l></block></autolambda><list></list></block></list></block><block s="reportNewList"><list><l>false</l><block s="reifyPredicate"><autolambda><block s="reportBoolean"><l><bool>false</bool></l></block></autolambda><list></list></block></list></block><block s="reportNewList"><list><l>wait</l><block s="reifyScript"><script><block s="doWait"><block var="#1"/></block></script><list><l>#1</l></list></block></list></block><block s="reportNewList"><list><l>id</l><block s="reifyReporter"><autolambda><block var="#1"/></autolambda><list><l>#1</l></list></block></list></block><block s="reportNewList"><list><l>define</l><block s="reifyScript"><script><block s="doAddToList"><block s="reportNewList"><list><block var="#1"/><block var="#2"/></list></block><block var="Commands"/></block></script><list><l>#1</l><l>#2</l></list></block></list></block><block s="reportNewList"><list><l>random</l><block s="reifyReporter"><autolambda><block s="reportRandom"><block var="#1"/><block var="#2"/></block></autolambda><list><l>#1</l><l>#2</l></list></block></list></block><block s="reportNewList"><list><l>?</l><block s="reifyReporter"><autolambda><block s="reportRandom"><l>1</l><block var="#1"/></block></autolambda><list><l>#1</l></list></block></list></block><block s="reportNewList"><list><l>varset</l><block s="reifyScript"><script><custom-block s="varset %s %s"><block var="#1"/><block var="#2"/></custom-block></script><list><l>#1</l><l>#2</l></list></block></list></block><block s="reportNewList"><list><l>varget</l><block s="reifyReporter"><autolambda><custom-block s="varget %s"><block var="#1"/></custom-block></autolambda><list><l>#1</l></list></block></list></block></list></block></block></script></block-definition><block-definition s="run lisp %&apos;code&apos;" type="command" category="Lisp"><header></header><code></code><translations></translations><inputs><input type="%l" initial="1"></input></inputs><script><block s="doWarp"><script><block s="doForEach"><l>Command</l><block var="Commands"/><script><block s="doIf"><block s="reportVariadicEquals"><list><custom-block s="call lisp %l"><custom-block s="car %l"><block var="code"/></custom-block></custom-block><block s="reportListItem"><l>1</l><block var="Command"/></block></list></block><script><block s="doRun"><block s="reportListItem"><l>2</l><block var="Command"/></block><block s="reportMap"><block s="reifyReporter"><autolambda><custom-block s="call lisp %l"><l/></custom-block></autolambda><list></list></block><custom-block s="cdr %l"><block var="code"/></custom-block></block></block></script><list></list></block></script></block></script></block></script></block-definition><block-definition s="call lisp %&apos;code&apos;" type="reporter" category="Lisp"><header></header><code></code><translations></translations><inputs><input type="%l" initial="1"></input></inputs><script><block s="doWarp"><script><block s="doIf"><block s="reportNot"><block s="reportIsA"><block var="code"/><l><option>list</option></l></block></block><script><block s="doReport"><block var="code"/></block></script><list></list></block><block s="doIf"><block s="reportVariadicEquals"><list><custom-block s="call lisp %l"><custom-block s="car %l"><block var="code"/></custom-block></custom-block><l>quote</l></list></block><script><block s="doReport"><custom-block s="car %l"><custom-block s="cdr %l"><block var="code"/></custom-block></custom-block></block></script><list></list></block><block s="doForEach"><l>Command</l><block var="Commands"/><script><block s="doIf"><block s="reportVariadicEquals"><list><custom-block s="call lisp %l"><custom-block s="car %l"><block var="code"/></custom-block></custom-block><block s="reportListItem"><l>1</l><block var="Command"/></block></list></block><script><block s="doReport"><block s="evaluate"><block s="reportListItem"><l>2</l><block var="Command"/></block><block s="reportMap"><block s="reifyReporter"><autolambda><custom-block s="call lisp %l"><l/></custom-block></autolambda><list></list></block><custom-block s="cdr %l"><block var="code"/></custom-block></block></block></block></script><list></list></block></script></block><block s="doReport"><block var="code"/></block></script></block></script></block-definition><block-definition s="%&apos;a&apos; . %&apos;b&apos;" type="reporter" category="lists"><header></header><code></code><translations></translations><inputs><input type="%s" initial="1"></input><input type="%l" initial="1"></input></inputs><script><block s="doReport"><block s="reportCONS"><block var="a"/><block var="b"/></block></block></script></block-definition><block-definition s="null" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doReport"><l></l></block></script></block-definition><block-definition s="car %&apos;list&apos;" type="reporter" category="lists"><header></header><code></code><translations></translations><inputs><input type="%l" initial="1"></input></inputs><script><block s="doReport"><block s="reportListItem"><l>1</l><block var="list"/></block></block></script></block-definition><block-definition s="cdr %&apos;list&apos;" type="reporter" category="lists"><header></header><code></code><translations></translations><inputs><input type="%l" initial="1"></input></inputs><script><block s="doReport"><block s="reportCDR"><block var="list"/></block></block></script></block-definition><block-definition s="nil" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doReport"><block s="reportNewList"><list></list></block></block></script></block-definition><block-definition s="megamap %&apos;func&apos; over %&apos;list&apos;" type="reporter" category="lists"><header></header><code></code><translations></translations><inputs><input type="%repRing" initial="1"></input><input type="%l" initial="1"></input></inputs><script><block s="doReport"><block s="reportIfElse"><block s="reportIsA"><block var="list"/><l><option>list</option></l></block><block s="reportMap"><block s="reifyReporter"><autolambda><custom-block s="megamap %repRing over %l"><block var="func"/><block var="value"/></custom-block></autolambda><list><l>value</l></list></block><block var="list"/></block><block s="evaluate"><block var="func"/><list><block var="list"/></list></block></block></block></script></block-definition><block-definition s="parse code %&apos;code&apos; to blocks" type="reporter" category="operators"><comment x="0" y="0" w="104" collapsed="false">turn LISP syntax text code into blocks</comment><header></header><code></code><translations>de:verwandle Code _ in Blöcke&#xD;ca:blocs del codi textual _&#xD;</translations><inputs><input type="%code" initial="1">(+ 3 4)</input></inputs><script><block s="doReport"><block s="reportJoinWords"><block s="reportTextSplit"><block var="code"/><l><option>blocks</option></l></block></block></block></script></block-definition><block-definition s="encode blocks %&apos;script&apos; to text %&apos;lines&apos; pretty" type="reporter" category="operators"><comment x="0" y="0" w="106" collapsed="false">turn blocks into LISP syntax text code.</comment><header></header><code></code><translations>de:verwandle Blöcke _ in Code _ formatiert&#xD;ca:codi textual dels blocs _ formatats _&#xD;</translations><inputs><input type="%repRing" initial="1"></input><input type="%b" initial="1">true</input></inputs><script><block s="doReport"><block s="evaluate"><block s="reifyReporter"><autolambda><block s="reportListAttribute"><l></l><block s="reportTextSplit"><block var="script"/><l><option>blocks</option></l></block></block></autolambda><list></list></block><list><block s="reportIfElse"><block var="lines"/><l>lines</l><l>text</l></block></list></block></block></script></block-definition><block-definition s="replace every %&apos;pattern&apos; with %&apos;other&apos; in %&apos;text&apos;" type="reporter" category="operators"><comment x="0" y="0" w="90" collapsed="false">substitute all occurrences of a letter or a sequence of letters in a text with another or none.</comment><header></header><code></code><translations>de:ersetze jedes _ durch _ in _&#xD;pl:zamień każde _ na _ w _&#xD;</translations><inputs><input type="%s">t</input><input type="%s">sh</input><input type="%s">tower top</input></inputs><script><block s="doReport"><block s="reportCombine"><block s="reportTextSplit"><block var="text"/><block var="pattern"/></block><block s="reifyReporter"><autolambda><block s="reportJoinWords"><list><l></l><block var="other"/><l></l></list></block></autolambda><list></list></block></block></block></script></block-definition><block-definition s="catch %&apos;tag&apos; %&apos;action&apos;" type="command" category="control"><header></header><code></code><translations>de:fange _ _&#xD;ca:agafa _ _&#xD;es:atrapar _ _&#xD;fr:attrape _ _&#xD;pt:captura _ _&#xD;pl:przechwyć _ _&#xD;</translations><inputs><input type="%upvar"></input><input type="%cs"></input></inputs><script><custom-block s="run %cmdRing with continuation"><block s="reifyScript"><script><block s="doSetVar"><l>tag</l><block var="cont"/></block><block s="doRun"><block var="action"/><list></list></block></script><list><l>cont</l></list></block></custom-block></script></block-definition><block-definition s="throw %&apos;cont&apos;" type="command" category="control"><header></header><code></code><translations>de:wirf _&#xD;ca:llança _&#xD;es:lanzar _&#xD;fr:lance _&#xD;pt:lança _&#xD;pl:wyrzuć _&#xD;</translations><inputs><input type="%s">catchtag</input></inputs><script><block s="doRun"><block var="cont"/><list></list></block></script></block-definition><block-definition s="catch %&apos;tag&apos; %&apos;value&apos;" type="reporter" category="control"><header></header><code></code><translations>de:fange _ _&#xD;ca:agafa _ _&#xD;es:atrapar _ _&#xD;fr:attrape _ _&#xD;pt:captura _ _&#xD;pl:przechwyć _ _&#xD;</translations><inputs><input type="%upvar"></input><input type="%anyUE"></input></inputs><script><custom-block s="run %cmdRing with continuation"><block s="reifyScript"><script><block s="doSetVar"><l>tag</l><block var="cont"/></block><block s="doReport"><block s="evaluate"><block var="value"/><list></list></block></block></script><list><l>cont</l></list></block></custom-block></script></block-definition><block-definition s="throw %&apos;tag&apos; %&apos;value&apos;" type="command" category="control"><header></header><code></code><translations>de:wirf _ _&#xD;ca:llança _ _&#xD;es:lanzar _ _&#xD;fr:lance _ _&#xD;pt:lança _ _&#xD;pl:wyrzuć _ _&#xD;</translations><inputs><input type="%s">catchtag</input><input type="%s"></input></inputs><script><block s="doRun"><block var="tag"/><list><block var="value"/></list></block></script></block-definition><block-definition s="if %&apos;test&apos; do %&apos;action&apos; and pause all $pause-1-255-220-0" type="command" category="control"><comment x="0" y="0" w="263.3333333333333" collapsed="false">This is a breakpoint block, to be used in debugging.&#xD;The Boolean input specifies the condition under which&#xD;the program should pause.  (Use True for an unconditional breakpoint.)  The intent is that the script should have&#xD;SHOW VARIABLE blocks for the process&apos;s local variables.&#xD;After the pause, this block automatically hides all temporary variables.</comment><header></header><code></code><translations>de:falls _ dann _ und pause $pause-1-255-220-0&#xD;ca:si _ fes _ i atura-ho tot $pause-1-255-220-0&#xD;es:si _ haz _ y páralo todo $pause-1-255-220-0&#xD;fr:si _ faire _ et mettre tout en pause $pause-1-255-220-0&#xD;pt:se _ , então _ e faz pausa em tudo $pause-1-255-220-0&#xD;pl:jeżeli _ wykonaj _ i pauzuj wszystko $pause-1-255-220-0&#xD;</translations><inputs><input type="%boolUE"></input><input type="%cs"></input></inputs><script><block s="doDeclareVariables"><list><l>breakpoint</l></list></block><block s="doIf"><block s="evaluate"><block var="test"/><list></list></block><script><block s="doSetVar"><l>breakpoint</l><block var="test"/></block><block s="doShowVar"><l>breakpoint</l></block><block s="doRun"><block var="action"/><list></list></block><block s="doPauseAll"></block><block s="doHideVar"><l></l></block></script><list></list></block></script></block-definition><block-definition s="ignore %&apos;x&apos;" type="command" category="control"><comment x="0" y="0" w="206.66666666666666" collapsed="false">This block does nothing.&#xD;Use it when you are calling a reporter&#xD;for its side effect and don&apos;t care about&#xD;its return value.</comment><header></header><code></code><translations>de:ignoriere _&#xD;ca:ignora _&#xD;es:ignorar _&#xD;fr:ignore _&#xD;pt:ignora _&#xD;pl:ignoruj _&#xD;</translations><inputs><input type="%s"></input></inputs></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;pl:kaskada _ razy _ _ _&#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;pl:kaskada aż _ _ _ _&#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="compose %&apos;f&apos; %&apos;g&apos;" type="reporter" category="control"><comment x="0" y="0" w="151.33333333333334" collapsed="false">Returns the function x↦f(g(x)) where f and g are the two inputs.</comment><header></header><code></code><translations>pt:a composição de _ com _&#xD;ca:composa _ _&#xD;pl:skomponuj _ _&#xD;</translations><inputs><input type="%repRing"></input><input type="%repRing"></input></inputs><script><block s="doReport"><block s="reifyReporter"><autolambda><block s="evaluate"><block var="f"/><list><block s="evaluate"><block var="g"/><list><l></l></list></block></list></block></autolambda><list></list></block></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;pl:powtarzaj _ aż _&#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;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;pl:powtarzaj _ gdy _&#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="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;pl:powtarzaj gdy _ _&#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="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;pl:powtórz _ _ _&#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="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;pl:dla _ = _ co _ do _ _&#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;pl:ustaw _ na _ w _ _&#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="run %&apos;action&apos; with continuation" type="command" category="control"><header></header><code></code><translations>de:führe _ mit Continuation aus&#xD;</translations><inputs><input type="%cmdRing" initial="1"></input></inputs><script><block s="doRun"><block var="action"/><list><block s="reportEnvironment"><l><option>continuation</option></l></block></list></block></script></block-definition><block-definition s="call %&apos;action&apos; with continuation" type="reporter" category="control"><header></header><code></code><translations>de:rufe _ mit Continuation auf&#xD;</translations><inputs><input type="%cmdRing" initial="1"></input></inputs><script><block s="doReport"><block s="evaluate"><block s="reifyReporter"><script><custom-block s="run %cmdRing with continuation"><block var="action"/></custom-block></script><list></list></block><list></list></block></block></script></block-definition><block-definition s="compile %&apos;code&apos;" type="reporter" category="Lisp"><header></header><code></code><translations></translations><inputs><input type="%l" initial="1"></input></inputs><script><block s="doForEach"><l>item</l><block var="Commands"/><script><block s="doSetVar"><l>code</l><custom-block s="megamap %repRing over %l"><block s="reifyReporter"><autolambda><block s="reportIfElse"><block s="reportVariadicEquals"><list><block var="value"/><block s="reportListItem"><l>1</l><block var="item"/></block></list></block><block s="reportListItem"><l>2</l><block var="item"/></block><block var="value"/></block></autolambda><list><l>value</l></list></block><block var="code"/></custom-block></block></script></block><block s="doReport"><block s="reportJoinWords"><block var="code"/></block></block></script></block-definition><block-definition s="scriptify %&apos;template&apos;" type="reporter" category="control"><header></header><code></code><translations></translations><inputs><input type="%repRing" initial="1"></input></inputs><script><block s="doDeclareVariables"><list><l>def</l></list></block><block s="doSetVar"><l>def</l><block s="reportBlockAttribute"><l><option>definition</option></l><block var="template"/></block></block><block s="doReport"><block s="reportJoinWords"><block s="reportCONS"><block s="reportNewList"><list><block s="reportJoinWords"><list><block s="reifyScript"><script><block s="doDefineBlock"><l>a</l><l></l><block s="reifyReporter"><script></script><list></list></block></block></script><list></list></block><l>block</l><block s="reportBlockAttribute"><l><option>label</option></l><block var="template"/></block><block s="reportJoinWords"><list><block s="reifyReporter"><autolambda><block s="reifyReporter"><script></script><list></list></block></autolambda><list></list></block><block var="def"/><block s="reportCONS"><block s="reportListAttribute"><l><option>length</option></l><block s="reportAttributeOf"><l><option>input names</option></l><block var="def"/></block></block><block s="reportAttributeOf"><l><option>input names</option></l><block var="def"/></block></block></list></block></list></block></list></block><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportNewList"><list><block s="reportJoinWords"><list><block s="reifyScript"><script><block s="doSetBlockAttribute"><l></l><block s="reifyReporter"><script></script><list></list></block><l></l></block></script><list></list></block><l></l><block s="reifyReporter"><autolambda><block var="block"/></autolambda><list></list></block><custom-block s="blockify %l"><block s="reportBlockAttribute"><l></l><block var="template"/></block></custom-block></list></block></list></block></autolambda><list></list></block><block s="reportCDR"><block s="reportCDR"><block s="reportApplyExtension"><l>snap_block_selectors</l><list></list></block></block></block></block></block></block></block></script></block-definition><block-definition s="blockify %&apos;data&apos;" type="reporter" category="lists"><header></header><code></code><translations></translations><inputs><input type="%l" initial="1"></input></inputs><script><block s="doReport"><block s="reportIfElse"><block s="reportIsA"><block var="data"/><l><option>list</option></l></block><block s="reportJoinWords"><list><block s="reifyReporter"><autolambda><block s="reportNewList"><list></list></block></autolambda><list></list></block><block s="reportCONS"><block s="reportListAttribute"><l><option>length</option></l><block var="data"/></block><block s="reportMap"><block s="reportEnvironment"><l><option>script</option></l></block><block var="data"/></block></block></list></block><block s="reportIfElse"><block s="reportIsA"><block var="data"/><l><option>Boolean</option></l></block><block s="reportJoinWords"><list><block s="reifyPredicate"><autolambda><block s="reportBoolean"><l><bool>true</bool></l></block></autolambda><list></list></block><block var="data"/></list></block><block s="reportIfElse"><block s="reportIsA"><block var="data"/><l><option>script</option></l></block><block s="reportJoinWords"><list><block s="reifyReporter"><autolambda><block s="reifyReporter"><script></script><list></list></block></autolambda><list></list></block><block var="data"/></list></block><block var="data"/></block></block></block></block></script></block-definition><block-definition s="callers of %&apos;block&apos;" type="reporter" category="sensing"><header></header><code></code><translations></translations><inputs><input type="%repRing"></input></inputs><script><block s="doReport"><block s="reportKeep"><block s="reifyPredicate"><autolambda><block s="reportVariadicAnd"><list><block s="reportBlockAttribute"><l><option>custom?</option></l><block s="reifyReporter"><script></script><list></list></block></block><block s="reportListContainsItem"><block s="reportListAttribute"><l><option>flatten</option></l><block s="reportTextSplit"><block s="reportBlockAttribute"><l><option>definition</option></l><block s="reifyReporter"><script></script><list></list></block></block><l><option>blocks</option></l></block></block><block var="block"/></block></list></block></autolambda><list></list></block><block s="reportGet"><l><option>blocks</option></l></block></block></block></script></block-definition><block-definition s="inject %&apos;cmd&apos; $nl into %&apos;script&apos; $nl %&apos;position&apos; each %&apos;test&apos;" type="reporter" category="other"><header></header><code></code><translations></translations><inputs><input type="%cs" initial="1"></input><input type="%cs" initial="1"></input><input type="%s" readonly="true" irreplaceable="true" initial="1">after<options>before&#xD;after</options></input><input type="%predRing" initial="1"></input></inputs><script><block s="doDeclareVariables"><list><l>syntax</l><l>i</l><l>expr</l></list></block><block s="doSetVar"><l>syntax</l><block s="reportTextSplit"><block var="script"/><l><option>blocks</option></l></block></block><block s="doIf"><block s="reportIsA"><block s="reportListItem"><l>1</l><block var="syntax"/></block><l><option>script</option></l></block><script><block s="doSetVar"><l>syntax</l><block s="reportNewList"><list><block var="syntax"/></list></block></block></script><list></list></block><block s="doWarp"><script><block s="doUntil"><block s="reportVariadicEquals"><list><block var="i"/><block s="reportListAttribute"><l><option>length</option></l><block var="syntax"/></block></list></block><script><block s="doChangeVar"><l>i</l><l>1</l></block><block s="doSetVar"><l>expr</l><block s="reportListItem"><block var="i"/><block var="syntax"/></block></block><block s="doFor"><l>k</l><l>2</l><block s="reportListAttribute"><l><option>length</option></l><block var="expr"/></block><script><block s="doIf"><block s="reportIsA"><block s="reportListItem"><block var="k"/><block var="expr"/></block><l><option>list</option></l></block><script><block s="doReplaceInList"><block var="k"/><block var="expr"/><block s="reportTextSplit"><block s="evaluate"><block s="reifyReporter"><autolambda><custom-block s="inject %cs %br into %cs %br %s each %predRing"><block var="cmd"/><block s="reportJoinWords"><block s="reportListItem"><block var="k"/><block var="expr"/></block></block><l></l><block var="test"/></custom-block></autolambda><list></list></block><list><block var="position"/></list></block><l><option>blocks</option></l></block></block></script><list></list></block></script></block><block s="doIf"><block s="reportIfElse"><block s="reportIsA"><block var="test"/><l><option>command</option></l></block><block s="reportVariadicEquals"><list><block s="reportListItem"><l>1</l><block var="expr"/></block><block var="test"/></list></block><block s="evaluate"><block var="test"/><list><block s="reportListItem"><l>1</l><block var="expr"/></block></list></block></block><script><block s="doIf"><block s="reportVariadicEquals"><list><block var="position"/><l>after</l></list></block><script><block s="doChangeVar"><l>i</l><l>1</l></block></script><list></list></block><block s="doInsertInList"><block s="reportTextSplit"><block var="cmd"/><l><option>blocks</option></l></block><block var="i"/><block var="syntax"/></block><block s="doIf"><block s="reportVariadicEquals"><list><block var="position"/><l>before</l></list></block><script><block s="doChangeVar"><l>i</l><l>1</l></block></script><list></list></block></script><list></list></block></script></block></script></block><block s="doReport"><block s="reportAttributeOf"><block s="reportJoinWords"><block var="syntax"/></block><block s="reportEnvironment"><l><option>caller</option></l></block></block></block></script></block-definition><block-definition s="call stack" type="reporter" category="sensing"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doDeclareVariables"><list><l>current</l><l>stack</l></list></block><block s="doSetVar"><l>stack</l><block s="reportNewList"><list></list></block></block><block s="doSetVar"><l>current</l><block s="reportEnvironment"><l><option>script</option></l></block></block><block s="doWarp"><script><block s="doUntil"><block s="reportIsA"><block var="current"/><l><option>agent</option></l></block><script><block s="doAddToList"><block var="current"/><block var="stack"/></block><block s="doSetVar"><l>current</l><block s="reportAttributeOf"><block s="reifyReporter"><autolambda><block s="reportEnvironment"><l><option>caller</option></l></block></autolambda><list></list></block><block var="current"/></block></block></script></block></script></block><block s="doAddToList"><block var="current"/><block var="stack"/></block><block s="doReport"><block var="stack"/></block></script></block-definition><block-definition s="get %&apos;variable name&apos; of caller" type="reporter" category="variables"><header></header><code></code><translations></translations><inputs><input type="%s"></input></inputs><script><block s="doReport"><block s="reportAttributeOf"><block var="variable name"/><block s="reportAttributeOf"><block s="reifyReporter"><autolambda><block s="reportEnvironment"><l><option>caller</option></l></block></autolambda><list></list></block><block s="reportEnvironment"><l><option>caller</option></l></block></block></block></block></script></block-definition><block-definition s="set %&apos;variable name&apos; of caller to %&apos;value&apos;" type="command" category="variables"><header></header><code></code><translations></translations><inputs><input type="%s"></input><input type="%s"></input></inputs><script><block s="doRun"><block s="reportAttributeOf"><block s="reifyScript"><script><block s="doSetVar"><l></l><l></l></block></script><list></list></block><block s="reportAttributeOf"><block s="reifyReporter"><autolambda><block s="reportEnvironment"><l><option>caller</option></l></block></autolambda><list></list></block><block s="reportEnvironment"><l><option>caller</option></l></block></block></block><list><block var="variable name"/><block var="value"/></list></block></script></block-definition><block-definition s="expand %&apos;slot&apos; to %&apos;level&apos; slots" type="command" category="control"><header></header><code></code><translations>de:dehne _ auf _ Eingabefelder aus&#xD;</translations><inputs><input type="%s" readonly="true" irreplaceable="true" initial="1"><options>§_inputSlotsMenu</options></input><input type="%n" initial="1"></input></inputs><script><block s="doDeclareVariables"><list><l>block</l><l>inputs</l><l>defaults</l></list></block><block s="doSetVar"><l>block</l><block s="reportAttributeOf"><block s="reifyReporter"><autolambda><block s="reportEnvironment"><l><option>caller</option></l></block></autolambda><list></list></block><block s="reportEnvironment"><l><option>caller</option></l></block></block></block><block s="doSetVar"><l>inputs</l><block s="reportAttributeOf"><block var="slot"/><block s="reportEnvironment"><l><option>caller</option></l></block></block></block><block s="doIf"><block s="reportVariadicGreaterThan"><list><block var="level"/><block s="reportListAttribute"><l><option>length</option></l><block var="inputs"/></block></list></block><script><block s="doSetVar"><l>defaults</l><block s="reportReshape"><block s="reportListItem"><block s="reportListIndex"><block var="slot"/><block s="reportAttributeOf"><l><option>input names</option></l><block s="reportBlockAttribute"><l><option>definition</option></l><block var="block"/></block></block></block><block s="reportBlockAttribute"><l><option>defaults</option></l><block var="block"/></block></block><list><block var="level"/></list></block></block><block s="doWarp"><script><block s="doFor"><l>i</l><block s="reportVariadicSum"><list><block s="reportListAttribute"><l><option>length</option></l><block var="inputs"/></block><l>1</l></list></block><block var="level"/><script><block s="doAddToList"><block s="reportListItem"><block var="i"/><block var="defaults"/></block><block var="inputs"/></block></script></block></script></block></script><list></list></block><block s="doTellTo"><block s="reportEnvironment"><l><option>caller</option></l></block><block s="reifyScript"><script><block s="doSetSlot"><l></l><l></l></block></script><list></list></block><list><block var="slot"/><block s="reportIfElse"><block s="reportVariadicLessThan"><list><block var="level"/><l>1</l></list></block><block s="reportNewList"><list></list></block><block s="reportReshape"><block var="inputs"/><list><block var="level"/></list></block></block></list></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;pl:utwórz zmienną _ _&#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="doWarp"><script><block s="doForEach"><l>_item</l><block var="_names"/><script><block s="doApplyExtension"><l>var_declare(scope, name)</l><list><block var="_scope"/><block var="_item"/></list></block></script></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;pl:usuń zmienną _&#xD;</translations><inputs><input type="%mult%txt"></input></inputs><script><block s="doWarp"><script><block s="doForEach"><l>_item</l><block var="_names"/><script><block s="doApplyExtension"><l>err_ignore</l><list><custom-block s="var %s"><block var="_item"/></custom-block></list></block><block s="doApplyExtension"><l>var_delete(name)</l><list><block var="_item"/></list></block></script></block></script></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;pl:ustaw zmienną _ na _&#xD;</translations><inputs><input type="%s"><options>§_getVarNamesDict</options></input><input type="%s"></input></inputs><script><block s="doApplyExtension"><l>var_set(name, val)</l><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;pl:zmienna _&#xD;</translations><inputs><input type="%s"><options>§_getVarNamesDict</options></input></inputs><script><block s="doReport"><block s="reportApplyExtension"><l>var_get(name)</l><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;pl:zmienna _ istnieje?&#xD;</translations><inputs><input type="%s"></input></inputs><script><block s="doApplyExtension"><l>err_try(cmd, catch, err)</l><list><block s="reifyScript"><script><block s="doApplyExtension"><l>err_ignore</l><list><block s="reportApplyExtension"><l>var_get(name)</l><list><block var="_name"/></list></block></list></block><block s="doReport"><block s="reportBoolean"><l><bool>true</bool></l></block></block></script><list></list></block><block s="reifyScript"><script><block s="doReport"><block s="reportBoolean"><l><bool>false</bool></l></block></block></script><list></list></block><l></l></list></block><block s="doApplyExtension"><l>err_reset</l><list></list></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;pl:pokaż zmienną _&#xD;</translations><inputs><input type="%s"><options>§_getVarNamesDict</options></input></inputs><script><block s="doApplyExtension"><l>var_show(name)</l><list><block var="_name"/></list></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;pl:ukryj zmienną _&#xD;</translations><inputs><input type="%s"><options>§_getVarNamesDict</options></input></inputs><script><block s="doApplyExtension"><l>var_hide(name)</l><list><block var="_name"/></list></block></script></block-definition><block-definition s="varset %&apos;#1&apos; %&apos;#2&apos;" type="command" category="other"><header></header><code></code><translations></translations><inputs><input type="%s" initial="1"></input><input type="%s" initial="1"></input></inputs><script><custom-block s="create %s var %mult%txt"><l>script</l><list><block var="#1"/></list></custom-block><custom-block s="set var %s to %s"><block var="#1"/><block var="#2"/></custom-block></script></block-definition><block-definition s="varget %&apos;#1&apos;" type="reporter" category="other"><header></header><code></code><translations></translations><inputs><input type="%s" initial="1"></input></inputs><script><custom-block s="create %s var %mult%txt"><l>script</l><list><block var="#1"/></list></custom-block><block s="doReport"><custom-block s="var %s"><block var="#1"/></custom-block></block></script></block-definition></blocks><primitives></primitives><stage name="Stage" width="480" height="360" costume="0" color="255,255,255,1" tempo="60" threadsafe="true" penlog="true" volume="100" pan="0" lines="flat" ternary="false" hyperops="true" codify="true" inheritance="true" sublistIDs="false" id="2531"><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="2532"></list></costumes><sounds><list struct="atomic" id="2533"></list></sounds><variables></variables><blocks></blocks><scripts></scripts><sprites select="1"><sprite name="Sprite" idx="1" x="77.94228634059345" y="0" heading="90" scale="1" volume="100" pan="0" rotation="1" draggable="true" costume="0" color="80,80,80,1" pen="tip" id="2538"><costumes><list struct="atomic" id="2539"></list></costumes><sounds><list struct="atomic" id="2540"></list></sounds><blocks></blocks><variables></variables><scripts><script x="92" y="140.2500000000009"><block s="receiveGo"></block><custom-block s="Setup lisp"></custom-block><custom-block s="run lisp %l"><block s="reportNewList"><list><l>do</l><block s="reportNewList"><list><l>quote</l><block s="reportNewList"><list><l>varset</l><l>i</l><l>0</l></list></block></list></block><block s="reportNewList"><list><l>quote</l><block s="reportNewList"><list><l>while</l><block s="reportNewList"><list><l>quote</l><block s="reportNewList"><list><l>true</l></list></block></list></block><block s="reportNewList"><list><l>quote</l><block s="reportNewList"><list><l>do</l><block s="reportNewList"><list><l>quote</l><block s="reportNewList"><list><l>print</l><block s="reportNewList"><list><l>varget</l><l>i</l></list></block></list></block></list></block><block s="reportNewList"><list><l>quote</l><block s="reportNewList"><list><l>varset</l><l>i</l><block s="reportNewList"><list><l>+</l><block s="reportNewList"><list><l>varget</l><l>i</l></list></block><l>1</l></list></block></list></block></list></block><block s="reportNewList"><list><l>quote</l><block s="reportNewList"><list><l>wait</l><l>1</l></list></block></list></block></list></block></list></block></list></block></list></block></list></block></custom-block></script></scripts></sprite><watcher var="Commands" style="normal" x="10" y="10" color="243,118,29" hidden="true"/></sprites></stage><variables><variable name="Commands"><list id="2646"><item><list id="2647"><item><l>print</l></item><item><context id="2648"><inputs><input>#1</input></inputs><variables></variables><script><block s="bubble"><block var="#1"/></block></script><receiver><ref id="2538"></ref></receiver><origin><ref id="2538"></ref></origin><context id="2653"><inputs></inputs><variables></variables><receiver><ref id="2538"></ref></receiver><origin></origin></context></context></item></list></item><item><list id="2655"><item><l>+</l></item><item><context id="2656"><inputs><input>#1</input><input>#2</input></inputs><variables></variables><block s="reportVariadicSum"><list><block var="#1"/><block var="#2"/></list></block><receiver><ref id="2538"></ref></receiver><origin><ref id="2538"></ref></origin><ref id="2653"></ref></context></item></list></item><item><list id="2664"><item><l>-</l></item><item><context id="2665"><inputs><input>#1</input><input>#2</input></inputs><variables></variables><block s="reportDifference"><block var="#1"/><block var="#2"/></block><receiver><ref id="2538"></ref></receiver><origin><ref id="2538"></ref></origin><ref id="2653"></ref></context></item></list></item><item><list id="2671"><item><l>*</l></item><item><context id="2672"><inputs><input>#1</input><input>#2</input></inputs><variables></variables><block s="reportVariadicProduct"><list><block var="#1"/><block var="#2"/></list></block><receiver><ref id="2538"></ref></receiver><origin><ref id="2538"></ref></origin><ref id="2653"></ref></context></item></list></item><item><list id="2680"><item><l>/</l></item><item><context id="2681"><inputs><input>#1</input><input>#2</input></inputs><variables></variables><block s="reportQuotient"><block var="#1"/><block var="#2"/></block><receiver><ref id="2538"></ref></receiver><origin><ref id="2538"></ref></origin><ref id="2653"></ref></context></item></list></item><item><list id="2687"><item><l>^</l></item><item><context id="2688"><inputs><input>#1</input><input>#2</input></inputs><variables></variables><block s="reportPower"><block var="#1"/><block var="#2"/></block><receiver><ref id="2538"></ref></receiver><origin><ref id="2538"></ref></origin><ref id="2653"></ref></context></item></list></item><item><list id="2694"><item><l>%</l></item><item><context id="2695"><inputs><input>#1</input><input>#2</input></inputs><variables></variables><block s="reportModulus"><block var="#1"/><block var="#2"/></block><receiver><ref id="2538"></ref></receiver><origin><ref id="2538"></ref></origin><ref id="2653"></ref></context></item></list></item><item><list id="2701"><item><l>run</l></item><item><context id="2702"><inputs><input>#1</input></inputs><variables></variables><script><custom-block s="run lisp %l"><block var="#1"/></custom-block></script><receiver><ref id="2538"></ref></receiver><origin><ref id="2538"></ref></origin><ref id="2653"></ref></context></item></list></item><item><list id="2707"><item><l>call</l></item><item><context id="2708"><inputs><input>#1</input></inputs><variables></variables><custom-block s="call lisp %l"><block var="#1"/></custom-block><receiver><ref id="2538"></ref></receiver><origin><ref id="2538"></ref></origin><ref id="2653"></ref></context></item></list></item><item><list id="2713"><item><l>do</l></item><item><context id="2714"><inputs></inputs><variables></variables><script><block s="doForEach"><l>item</l><block s="reportEnvironment"><l><option>inputs</option></l></block><script><custom-block s="run lisp %l"><block var="item"/></custom-block></script></block></script><receiver><ref id="2538"></ref></receiver><origin><ref id="2538"></ref></origin><ref id="2653"></ref></context></item></list></item><item><list id="2726"><item><l>car</l></item><item><context id="2727"><inputs><input>#1</input></inputs><variables></variables><custom-block s="car %l"><block var="#1"/></custom-block><receiver><ref id="2538"></ref></receiver><origin><ref id="2538"></ref></origin><ref id="2653"></ref></context></item></list></item><item><list id="2732"><item><l>cdr</l></item><item><context id="2733"><inputs><input>#1</input></inputs><variables></variables><custom-block s="cdr %l"><block var="#1"/></custom-block><receiver><ref id="2538"></ref></receiver><origin><ref id="2538"></ref></origin><ref id="2653"></ref></context></item></list></item><item><list id="2738"><item><l>cons</l></item><item><context id="2739"><inputs><input>#1</input><input>#2</input></inputs><variables></variables><custom-block s="%s . %l"><block var="#1"/><block var="#2"/></custom-block><receiver><ref id="2538"></ref></receiver><origin><ref id="2538"></ref></origin><ref id="2653"></ref></context></item></list></item><item><list id="2745"><item><l>nil</l></item><item><context id="2746"><inputs></inputs><variables></variables><custom-block s="nil"></custom-block><receiver><ref id="2538"></ref></receiver><origin><ref id="2538"></ref></origin><ref id="2653"></ref></context></item></list></item><item><list id="2750"><item><l>primitive</l></item><item><context id="2751"><inputs><input>#1</input></inputs><variables></variables><block s="evaluate"><block var="#1"/><list><block s="reportCDR"><block s="reportEnvironment"><l><option>inputs</option></l></block></block></list></block><receiver><ref id="2538"></ref></receiver><origin><ref id="2538"></ref></origin><ref id="2653"></ref></context></item></list></item><item><list id="2763"><item><l>join</l></item><item><context id="2764"><inputs><input>#1</input><input>#2</input></inputs><variables></variables><block s="reportJoinWords"><list><block var="#1"/><block var="#2"/></list></block><receiver><ref id="2538"></ref></receiver><origin><ref id="2538"></ref></origin><ref id="2653"></ref></context></item></list></item><item><list id="2772"><item><l>substring</l></item><item><context id="2773"><inputs><input>#1</input><input>#2</input><input>#3</input></inputs><variables></variables><custom-block s="substring of %txt from position %n to position %n inclusive"><block var="#1"/><block var="#2"/><block var="#3"/></custom-block><receiver><ref id="2538"></ref></receiver><origin><ref id="2538"></ref></origin><ref id="2653"></ref></context></item></list></item><item><list id="2780"><item><l>find</l></item><item><context id="2781"><inputs><input>#1</input><input>#2</input></inputs><variables></variables><custom-block s="position of %s in %txt"><block var="#1"/><block var="#2"/></custom-block><receiver><ref id="2538"></ref></receiver><origin><ref id="2538"></ref></origin><ref id="2653"></ref></context></item></list></item><item><list id="2787"><item><l>replace</l></item><item><context id="2788"><inputs><input>#1</input><input>#2</input><input>#3</input></inputs><variables></variables><custom-block s="replace every %s with %s in %s"><block var="#1"/><block var="#2"/><block var="#3"/></custom-block><receiver><ref id="2538"></ref></receiver><origin><ref id="2538"></ref></origin><ref id="2653"></ref></context></item></list></item><item><list id="2795"><item><l>=</l></item><item><context id="2796"><inputs><input>#1</input><input>#2</input></inputs><variables></variables><block s="reportVariadicEquals"><list><block var="#1"/><block var="#2"/></list></block><receiver><ref id="2538"></ref></receiver><origin><ref id="2538"></ref></origin><ref id="2653"></ref></context></item></list></item><item><list id="2804"><item><l>&lt;</l></item><item><context id="2805"><inputs><input>#1</input><input>#2</input></inputs><variables></variables><block s="reportVariadicLessThan"><list><block var="#1"/><block var="#2"/></list></block><receiver><ref id="2538"></ref></receiver><origin><ref id="2538"></ref></origin><ref id="2653"></ref></context></item></list></item><item><list id="2813"><item><l>&gt;</l></item><item><context id="2814"><inputs><input>#1</input><input>#2</input></inputs><variables></variables><block s="reportVariadicGreaterThan"><list><block var="#1"/><block var="#2"/></list></block><receiver><ref id="2538"></ref></receiver><origin><ref id="2538"></ref></origin><ref id="2653"></ref></context></item></list></item><item><list id="2822"><item><l>&lt;=&gt;</l></item><item><context id="2823"><inputs><input>#1</input><input>#2</input></inputs><variables></variables><block s="reportMonadic"><l><option>sign</option></l><block s="reportDifference"><block var="#1"/><block var="#2"/></block></block><receiver><ref id="2538"></ref></receiver><origin><ref id="2538"></ref></origin><ref id="2653"></ref></context></item></list></item><item><list id="2832"><item><l>ifelse</l></item><item><context id="2833"><inputs><input>#1</input><input>#2</input><input>#3</input></inputs><variables></variables><block s="reportIfElse"><block var="#1"/><block var="#2"/><block var="#3"/></block><receiver><ref id="2538"></ref></receiver><origin><ref id="2538"></ref></origin><ref id="2653"></ref></context></item></list></item><item><list id="2840"><item><l>while</l></item><item><context id="2841"><inputs><input>#1</input><input>#2</input></inputs><variables></variables><script><custom-block s="repeat while %boolUE %cs"><custom-block s="call lisp %l"><block var="#1"/></custom-block><script><custom-block s="run lisp %l"><block var="#2"/></custom-block></script></custom-block></script><receiver><ref id="2538"></ref></receiver><origin><ref id="2538"></ref></origin><ref id="2653"></ref></context></item></list></item><item><list id="2852"><item><l>cascade</l></item><item><context id="2853"><inputs><input>#1</input><input>#2</input><input>#3</input></inputs><variables></variables><custom-block s="cascade until %predRing %repRing %s %upvar"><custom-block s="call lisp %l"><block var="#1"/></custom-block><custom-block s="call lisp %l"><block var="#2"/></custom-block><block var="#3"/><l>#</l></custom-block><receiver><ref id="2538"></ref></receiver><origin><ref id="2538"></ref></origin><ref id="2653"></ref></context></item></list></item><item><list id="2865"><item><l>var</l></item><item><context id="2866"><inputs><input>#1</input><input>#2</input><input>#3</input></inputs><variables></variables><custom-block s="megamap %repRing over %l"><block s="reifyReporter"><autolambda><block s="reportIfElse"><block s="reportVariadicEquals"><list><block var="value"/><block var="#1"/></list></block><block var="#2"/><block var="value"/></block></autolambda><list><l>value</l></list></block><block var="#3"/></custom-block><receiver><ref id="2538"></ref></receiver><origin><ref id="2538"></ref></origin><ref id="2653"></ref></context></item></list></item><item><list id="2887"><item><l>left</l></item><item><context id="2888"><inputs><input>#1</input><input>#2</input></inputs><variables></variables><block var="#1"/><receiver><ref id="2538"></ref></receiver><origin><ref id="2538"></ref></origin><ref id="2653"></ref></context></item></list></item><item><list id="2891"><item><l>right</l></item><item><context id="2892"><inputs><input>#1</input><input>#2</input></inputs><variables></variables><block var="#2"/><receiver><ref id="2538"></ref></receiver><origin><ref id="2538"></ref></origin><ref id="2653"></ref></context></item></list></item><item><list id="2895"><item><l>true</l></item><item><context id="2896"><inputs></inputs><variables></variables><block s="reportBoolean"><l><bool>true</bool></l></block><receiver><ref id="2538"></ref></receiver><origin><ref id="2538"></ref></origin><ref id="2653"></ref></context></item></list></item><item><list id="2901"><item><l>false</l></item><item><context id="2902"><inputs></inputs><variables></variables><block s="reportBoolean"><l><bool>false</bool></l></block><receiver><ref id="2538"></ref></receiver><origin><ref id="2538"></ref></origin><ref id="2653"></ref></context></item></list></item><item><list id="2907"><item><l>wait</l></item><item><context id="2908"><inputs><input>#1</input></inputs><variables></variables><script><block s="doWait"><block var="#1"/></block></script><receiver><ref id="2538"></ref></receiver><origin><ref id="2538"></ref></origin><ref id="2653"></ref></context></item></list></item><item><list id="2913"><item><l>id</l></item><item><context id="2914"><inputs><input>#1</input></inputs><variables></variables><block var="#1"/><receiver><ref id="2538"></ref></receiver><origin><ref id="2538"></ref></origin><ref id="2653"></ref></context></item></list></item><item><list id="2917"><item><l>define</l></item><item><context id="2918"><inputs><input>#1</input><input>#2</input></inputs><variables></variables><script><block s="doAddToList"><block s="reportNewList"><list><block var="#1"/><block var="#2"/></list></block><block var="Commands"/></block></script><receiver><ref id="2538"></ref></receiver><origin><ref id="2538"></ref></origin><ref id="2653"></ref></context></item></list></item><item><list id="2929"><item><l>random</l></item><item><context id="2930"><inputs><input>#1</input><input>#2</input></inputs><variables></variables><block s="reportRandom"><block var="#1"/><block var="#2"/></block><receiver><ref id="2538"></ref></receiver><origin><ref id="2538"></ref></origin><ref id="2653"></ref></context></item></list></item><item><list id="2936"><item><l>?</l></item><item><context id="2937"><inputs><input>#1</input></inputs><variables></variables><block s="reportRandom"><l>1</l><block var="#1"/></block><receiver><ref id="2538"></ref></receiver><origin><ref id="2538"></ref></origin><ref id="2653"></ref></context></item></list></item><item><list id="2943"><item><l>varset</l></item><item><context id="2944"><inputs><input>#1</input><input>#2</input></inputs><variables></variables><script><custom-block s="varset %s %s"><block var="#1"/><block var="#2"/></custom-block></script><receiver><ref id="2538"></ref></receiver><origin><ref id="2538"></ref></origin><ref id="2653"></ref></context></item></list></item><item><list id="2950"><item><l>varget</l></item><item><context id="2951"><inputs><input>#1</input></inputs><variables></variables><custom-block s="varget %s"><block var="#1"/></custom-block><receiver><ref id="2538"></ref></receiver><origin><ref id="2538"></ref></origin><ref id="2653"></ref></context></item></list></item></list></variable></variables></scene></scenes></project><media name="Lisp" app="Snap! 11.0.8, https://snap.berkeley.edu" version="2"></media></snapdata>