<snapdata remixID="9446010"><project name="Sound Recorder" app="Snap! 6, https://snap.berkeley.edu" version="1"><notes></notes><thumbnail>data:image/png;base64,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</thumbnail><stage name="Stage" width="480" height="360" costume="0" color="255,255,255,1" tempo="60" threadsafe="false" penlog="false" volume="100" pan="0" lines="round" ternary="false" hyperops="true" codify="false" inheritance="true" sublistIDs="false" scheduled="false" id="1"><pentrails>data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAeAAAAFoCAYAAACPNyggAAAOjUlEQVR4Xu3VwQkAIAwEwdh/BVarYBHuZ9LAwRDYtWfOOAIECBAgQOCrwBLgr97GCBAgQIDAExBgj0CAAAECBAIBAQ7QTRIgQIAAAQH2AwQIECBAIBAQ4ADdJAECBAgQEGA/QIAAAQIEAgEBDtBNEiBAgAABAfYDBAgQIEAgEBDgAN0kAQIECBAQYD9AgAABAgQCAQEO0E0SIECAAAEB9gMECBAgQCAQEOAA3SQBAgQIEBBgP0CAAAECBAIBAQ7QTRIgQIAAAQH2AwQIECBAIBAQ4ADdJAECBAgQEGA/QIAAAQIEAgEBDtBNEiBAgAABAfYDBAgQIEAgEBDgAN0kAQIECBAQYD9AgAABAgQCAQEO0E0SIECAAAEB9gMECBAgQCAQEOAA3SQBAgQIEBBgP0CAAAECBAIBAQ7QTRIgQIAAAQH2AwQIECBAIBAQ4ADdJAECBAgQEGA/QIAAAQIEAgEBDtBNEiBAgAABAfYDBAgQIEAgEBDgAN0kAQIECBAQYD9AgAABAgQCAQEO0E0SIECAAAEB9gMECBAgQCAQEOAA3SQBAgQIEBBgP0CAAAECBAIBAQ7QTRIgQIAAAQH2AwQIECBAIBAQ4ADdJAECBAgQEGA/QIAAAQIEAgEBDtBNEiBAgAABAfYDBAgQIEAgEBDgAN0kAQIECBAQYD9AgAABAgQCAQEO0E0SIECAAAEB9gMECBAgQCAQEOAA3SQBAgQIEBBgP0CAAAECBAIBAQ7QTRIgQIAAAQH2AwQIECBAIBAQ4ADdJAECBAgQEGA/QIAAAQIEAgEBDtBNEiBAgAABAfYDBAgQIEAgEBDgAN0kAQIECBAQYD9AgAABAgQCAQEO0E0SIECAAAEB9gMECBAgQCAQEOAA3SQBAgQIEBBgP0CAAAECBAIBAQ7QTRIgQIAAAQH2AwQIECBAIBAQ4ADdJAECBAgQEGA/QIAAAQIEAgEBDtBNEiBAgAABAfYDBAgQIEAgEBDgAN0kAQIECBAQYD9AgAABAgQCAQEO0E0SIECAAAEB9gMECBAgQCAQEOAA3SQBAgQIEBBgP0CAAAECBAIBAQ7QTRIgQIAAAQH2AwQIECBAIBAQ4ADdJAECBAgQEGA/QIAAAQIEAgEBDtBNEiBAgAABAfYDBAgQIEAgEBDgAN0kAQIECBAQYD9AgAABAgQCAQEO0E0SIECAAAEB9gMECBAgQCAQEOAA3SQBAgQIEBBgP0CAAAECBAIBAQ7QTRIgQIAAAQH2AwQIECBAIBAQ4ADdJAECBAgQEGA/QIAAAQIEAgEBDtBNEiBAgAABAfYDBAgQIEAgEBDgAN0kAQIECBAQYD9AgAABAgQCAQEO0E0SIECAAAEB9gMECBAgQCAQEOAA3SQBAgQIEBBgP0CAAAECBAIBAQ7QTRIgQIAAAQH2AwQIECBAIBAQ4ADdJAECBAgQEGA/QIAAAQIEAgEBDtBNEiBAgAABAfYDBAgQIEAgEBDgAN0kAQIECBAQYD9AgAABAgQCAQEO0E0SIECAAAEB9gMECBAgQCAQEOAA3SQBAgQIEBBgP0CAAAECBAIBAQ7QTRIgQIAAAQH2AwQIECBAIBAQ4ADdJAECBAgQEGA/QIAAAQIEAgEBDtBNEiBAgAABAfYDBAgQIEAgEBDgAN0kAQIECBAQYD9AgAABAgQCAQEO0E0SIECAAAEB9gMECBAgQCAQEOAA3SQBAgQIEBBgP0CAAAECBAIBAQ7QTRIgQIAAAQH2AwQIECBAIBAQ4ADdJAECBAgQEGA/QIAAAQIEAgEBDtBNEiBAgAABAfYDBAgQIEAgEBDgAN0kAQIECBAQYD9AgAABAgQCAQEO0E0SIECAAAEB9gMECBAgQCAQEOAA3SQBAgQIEBBgP0CAAAECBAIBAQ7QTRIgQIAAAQH2AwQIECBAIBAQ4ADdJAECBAgQEGA/QIAAAQIEAgEBDtBNEiBAgAABAfYDBAgQIEAgEBDgAN0kAQIECBAQYD9AgAABAgQCAQEO0E0SIECAAAEB9gMECBAgQCAQEOAA3SQBAgQIEBBgP0CAAAECBAIBAQ7QTRIgQIAAAQH2AwQIECBAIBAQ4ADdJAECBAgQEGA/QIAAAQIEAgEBDtBNEiBAgAABAfYDBAgQIEAgEBDgAN0kAQIECBAQYD9AgAABAgQCAQEO0E0SIECAAAEB9gMECBAgQCAQEOAA3SQBAgQIEBBgP0CAAAECBAIBAQ7QTRIgQIAAAQH2AwQIECBAIBAQ4ADdJAECBAgQEGA/QIAAAQIEAgEBDtBNEiBAgAABAfYDBAgQIEAgEBDgAN0kAQIECBAQYD9AgAABAgQCAQEO0E0SIECAAAEB9gMECBAgQCAQEOAA3SQBAgQIEBBgP0CAAAECBAIBAQ7QTRIgQIAAAQH2AwQIECBAIBAQ4ADdJAECBAgQEGA/QIAAAQIEAgEBDtBNEiBAgAABAfYDBAgQIEAgEBDgAN0kAQIECBAQYD9AgAABAgQCAQEO0E0SIECAAAEB9gMECBAgQCAQEOAA3SQBAgQIEBBgP0CAAAECBAIBAQ7QTRIgQIAAAQH2AwQIECBAIBAQ4ADdJAECBAgQEGA/QIAAAQIEAgEBDtBNEiBAgAABAfYDBAgQIEAgEBDgAN0kAQIECBAQYD9AgAABAgQCAQEO0E0SIECAAAEB9gMECBAgQCAQEOAA3SQBAgQIEBBgP0CAAAECBAIBAQ7QTRIgQIAAAQH2AwQIECBAIBAQ4ADdJAECBAgQEGA/QIAAAQIEAgEBDtBNEiBAgAABAfYDBAgQIEAgEBDgAN0kAQIECBAQYD9AgAABAgQCAQEO0E0SIECAAAEB9gMECBAgQCAQEOAA3SQBAgQIEBBgP0CAAAECBAIBAQ7QTRIgQIAAAQH2AwQIECBAIBAQ4ADdJAECBAgQEGA/QIAAAQIEAgEBDtBNEiBAgAABAfYDBAgQIEAgEBDgAN0kAQIECBAQYD9AgAABAgQCAQEO0E0SIECAAAEB9gMECBAgQCAQEOAA3SQBAgQIEBBgP0CAAAECBAIBAQ7QTRIgQIAAAQH2AwQIECBAIBAQ4ADdJAECBAgQEGA/QIAAAQIEAgEBDtBNEiBAgAABAfYDBAgQIEAgEBDgAN0kAQIECBAQYD9AgAABAgQCAQEO0E0SIECAAAEB9gMECBAgQCAQEOAA3SQBAgQIEBBgP0CAAAECBAIBAQ7QTRIgQIAAAQH2AwQIECBAIBAQ4ADdJAECBAgQEGA/QIAAAQIEAgEBDtBNEiBAgAABAfYDBAgQIEAgEBDgAN0kAQIECBAQYD9AgAABAgQCAQEO0E0SIECAAAEB9gMECBAgQCAQEOAA3SQBAgQIEBBgP0CAAAECBAIBAQ7QTRIgQIAAAQH2AwQIECBAIBAQ4ADdJAECBAgQEGA/QIAAAQIEAgEBDtBNEiBAgAABAfYDBAgQIEAgEBDgAN0kAQIECBAQYD9AgAABAgQCAQEO0E0SIECAAAEB9gMECBAgQCAQEOAA3SQBAgQIEBBgP0CAAAECBAIBAQ7QTRIgQIAAAQH2AwQIECBAIBAQ4ADdJAECBAgQEGA/QIAAAQIEAgEBDtBNEiBAgAABAfYDBAgQIEAgEBDgAN0kAQIECBAQYD9AgAABAgQCAQEO0E0SIECAAAEB9gMECBAgQCAQEOAA3SQBAgQIEBBgP0CAAAECBAIBAQ7QTRIgQIAAAQH2AwQIECBAIBAQ4ADdJAECBAgQEGA/QIAAAQIEAgEBDtBNEiBAgAABAfYDBAgQIEAgEBDgAN0kAQIECBAQYD9AgAABAgQCAQEO0E0SIECAAAEB9gMECBAgQCAQEOAA3SQBAgQIEBBgP0CAAAECBAIBAQ7QTRIgQIAAAQH2AwQIECBAIBAQ4ADdJAECBAgQEGA/QIAAAQIEAgEBDtBNEiBAgAABAfYDBAgQIEAgEBDgAN0kAQIECBAQYD9AgAABAgQCAQEO0E0SIECAAAEB9gMECBAgQCAQEOAA3SQBAgQIEBBgP0CAAAECBAIBAQ7QTRIgQIAAAQH2AwQIECBAIBAQ4ADdJAECBAgQEGA/QIAAAQIEAgEBDtBNEiBAgAABAfYDBAgQIEAgEBDgAN0kAQIECBAQYD9AgAABAgQCAQEO0E0SIECAAAEB9gMECBAgQCAQEOAA3SQBAgQIEBBgP0CAAAECBAIBAQ7QTRIgQIAAAQH2AwQIECBAIBAQ4ADdJAECBAgQEGA/QIAAAQIEAgEBDtBNEiBAgAABAfYDBAgQIEAgEBDgAN0kAQIECBAQYD9AgAABAgQCAQEO0E0SIECAAAEB9gMECBAgQCAQEOAA3SQBAgQIEBBgP0CAAAECBAIBAQ7QTRIgQIAAAQH2AwQIECBAIBAQ4ADdJAECBAgQEGA/QIAAAQIEAgEBDtBNEiBAgAABAfYDBAgQIEAgEBDgAN0kAQIECBAQYD9AgAABAgQCAQEO0E0SIECAAAEB9gMECBAgQCAQEOAA3SQBAgQIEBBgP0CAAAECBAIBAQ7QTRIgQIAAAQH2AwQIECBAIBAQ4ADdJAECBAgQEGA/QIAAAQIEAgEBDtBNEiBAgAABAfYDBAgQIEAgEBDgAN0kAQIECBAQYD9AgAABAgQCAQEO0E0SIECAAAEB9gMECBAgQCAQEOAA3SQBAgQIEBBgP0CAAAECBAIBAQ7QTRIgQIAAAQH2AwQIECBAIBAQ4ADdJAECBAgQEGA/QIAAAQIEAgEBDtBNEiBAgAABAfYDBAgQIEAgEBDgAN0kAQIECBAQYD9AgAABAgQCAQEO0E0SIECAAAEB9gMECBAgQCAQEOAA3SQBAgQIEBBgP0CAAAECBAIBAQ7QTRIgQIAAAQH2AwQIECBAIBAQ4ADdJAECBAgQEGA/QIAAAQIEAgEBDtBNEiBAgAABAfYDBAgQIEAgEBDgAN0kAQIECBAQYD9AgAABAgQCAQEO0E0SIECAAIELwh8/R9Axs44AAAAASUVORK5CYII=</pentrails><costumes><list struct="atomic" id="2"></list></costumes><sounds><list struct="atomic" id="3"></list></sounds><variables></variables><blocks></blocks><scripts><script x="13.28125" y="78.71875000000001"><block s="receiveInteraction"><l><option>clicked</option></l></block><block s="doAsk"><l>Sound Number</l></block><block s="doIf"><block s="reportNot"><block s="reportLessThan"><block s="reportListLength"><block var="Recordings"/></block><block s="getLastAnswer"></block></block></block><script><block s="doPlaySoundUntilDone"><block s="reportListItem"><block s="getLastAnswer"></block><block var="Recordings"/></block></block></script></block></script></scripts><sprites><sprite name="Sprite" idx="1" x="22" y="-3" heading="90" scale="1" volume="100" pan="0" rotation="1" draggable="true" costume="0" color="153,0,0,1" pen="tip" id="30"><costumes><list struct="atomic" id="31"></list></costumes><sounds><list struct="atomic" id="32"></list></sounds><blocks></blocks><variables></variables><scripts><script x="89.37499999999999" y="145.375"><block s="receiveGo"></block><custom-block s="arrow large mouse"></custom-block><block s="doSetVar"><l>Recordings</l><block s="reportNewList"><list></list></block></block><block s="doForever"><script><block s="doAddToList"><custom-block s="$notes record"></custom-block><block var="Recordings"/></block></script></block></script></scripts></sprite><watcher var="Recordings" style="normal" x="10" y="10" color="243,118,29" extX="102.39999999999998" extY="89.60000000000001"/></sprites></stage><hidden></hidden><headers></headers><code></code><blocks><block-definition s="%&apos;head&apos; in front of stream %&apos;tail&apos;" type="reporter" category="lists"><comment x="0" y="0" w="418.61067708333326" collapsed="false">The stream version of IN FRONT OF.&#xD;&#xD;Streams, also called lazy lists, are like lists except that&#xD;items are not computed until they&apos;re needed.  This allows&#xD;for more efficient handling of large computed lists, and&#xD;even infinite lists.  The only piece of magic is here in &#xD;IN FRONT OF STREAM, whose second input is of type &#xD;Unevaluated, which means that it&apos;s a procedure, with &#xD;a sort of invisible gray ring. So HEAD OF STREAM is just &#xD;ITEM 1 OF, but TAIL OF STREAM has a CALL block &#xD;to make the computation happen.&#xD;&#xD;For a tutorial introduction to streams, read SICP 3.5:&#xD;https://mitpress.mit.edu/sites/default/files/sicp/full-text/book/book-Z-H-24.html#%_sec_3.5&#xD;or Brian&apos;s lecture notes (start on page 74):&#xD;https://people.eecs.berkeley.edu/&#126;bh/61a-pages/Volume2/notes.pdf&#xD;The above are clickable links!</comment><header></header><code></code><translations>pt:a prefixação de _ ao canal _&#xD;</translations><inputs><input type="%s"></input><input type="%anyUE"></input></inputs><script><block s="doReport"><block s="reportNewList"><list><block var="head"/><block var="tail"/><block s="reportBoolean"><l><bool>false</bool></l></block><block s="reportBoolean"><l><bool>false</bool></l></block></list></block></block></script></block-definition><block-definition s="head of stream %&apos;stream&apos;" type="reporter" category="lists"><comment x="0" y="0" w="418.61067708333326" collapsed="false">The stream version of ITEM 1 OF.&#xD;&#xD;Streams, also called lazy lists, are like lists except that&#xD;items are not computed until they&apos;re needed.  This allows&#xD;for more efficient handling of large computed lists, and&#xD;even infinite lists.  The only piece of magic is in &#xD;IN FRONT OF STREAM, whose second input is of type &#xD;Unevaluated, which means that it&apos;s a procedure, with &#xD;a sort of invisible gray ring. So HEAD OF STREAM is just &#xD;ITEM 1 OF, but TAIL OF STREAM has a CALL block &#xD;to make the computation happen.&#xD;&#xD;For a tutorial introduction to streams, read SICP 3.5:&#xD;https://mitpress.mit.edu/sites/default/files/sicp/full-text/book/book-Z-H-24.html#%_sec_3.5&#xD;or Brian&apos;s lecture notes (start on page 74):&#xD;https://people.eecs.berkeley.edu/&#126;bh/61a-pages/Volume2/notes.pdf&#xD;The above are clickable links!</comment><header></header><code></code><translations>pt:o primeiro item do canal _&#xD;</translations><inputs><input type="%l"></input></inputs><script><block s="doReport"><block s="reportListItem"><l>1</l><block var="stream"/></block></block></script></block-definition><block-definition s="tail of stream %&apos;stream&apos;" type="reporter" category="lists"><comment x="0" y="0" w="418.61067708333326" collapsed="false">The stream version of ALL BUT FIRST OF.&#xD;&#xD;Streams, also called lazy lists, are like lists except that&#xD;items are not computed until they&apos;re needed.  This allows&#xD;for more efficient handling of large computed lists, and&#xD;even infinite lists.  The only piece of magic is in &#xD;IN FRONT OF STREAM, whose second input is of type &#xD;Unevaluated, which means that it&apos;s a procedure, with &#xD;a sort of invisible gray ring. So HEAD OF STREAM is just &#xD;ITEM 1 OF, but TAIL OF STREAM has a CALL block &#xD;to make the computation happen.&#xD;&#xD;For a tutorial introduction to streams, read SICP 3.5:&#xD;https://mitpress.mit.edu/sites/default/files/sicp/full-text/book/book-Z-H-24.html#%_sec_3.5&#xD;or Brian&apos;s lecture notes (start on page 74):&#xD;https://people.eecs.berkeley.edu/&#126;bh/61a-pages/Volume2/notes.pdf&#xD;The above are clickable links!</comment><header></header><code></code><translations>pt:um canal com todos os itens de _ menos o primeiro&#xD;</translations><inputs><input type="%l"></input></inputs><script><block s="doWarp"><script><block s="doIf"><block s="reportListItem"><l>3</l><block var="stream"/></block><script><block s="doReport"><block s="reportListItem"><l>4</l><block var="stream"/></block></block></script></block><block s="doReplaceInList"><l>4</l><block var="stream"/><block s="evaluate"><block s="reportListItem"><l>2</l><block var="stream"/></block><list></list></block></block><block s="doReplaceInList"><l>3</l><block var="stream"/><block s="reportBoolean"><l><bool>true</bool></l></block></block><block s="doReport"><block s="reportListItem"><l>4</l><block var="stream"/></block></block></script></block></script></block-definition><block-definition s="map %&apos;function&apos; over stream %&apos;stream&apos;" type="reporter" category="lists"><comment x="0" y="0" w="418.61067708333326" collapsed="false">The stream version of variadic MAP (any number of input lists, like&#xD;MULTIMAP in the list utilities library).&#xD;&#xD;Streams, also called lazy lists, are like lists except that&#xD;items are not computed until they&apos;re needed.  This allows&#xD;for more efficient handling of large computed lists, and&#xD;even infinite lists.  The only piece of magic is in &#xD;IN FRONT OF STREAM, whose second input is of type &#xD;Unevaluated, which means that it&apos;s a procedure, with &#xD;a sort of invisible gray ring. So HEAD OF STREAM is just &#xD;ITEM 1 OF, but TAIL OF STREAM has a CALL block &#xD;to make the computation happen.&#xD;&#xD;For a tutorial introduction to streams, read SICP 3.5:&#xD;https://mitpress.mit.edu/sites/default/files/sicp/full-text/book/book-Z-H-24.html#%_sec_3.5&#xD;or Brian&apos;s lecture notes (start on page 74):&#xD;https://people.eecs.berkeley.edu/&#126;bh/61a-pages/Volume2/notes.pdf&#xD;The above are clickable links!</comment><header></header><code></code><translations>pt:a aplicação de _ aos itens dos canais _&#xD;</translations><inputs><input type="%repRing"></input><input type="%mult%l"></input></inputs><script><block s="doWarp"><script><block s="doIf"><block s="reportEquals"><block s="reportListItem"><l>1</l><block var="stream"/></block><block s="reportNewList"><list></list></block></block><script><block s="doReport"><block s="reportNewList"><list></list></block></block></script></block><block s="doReport"><custom-block s="%s in front of stream %anyUE"><block s="evaluate"><block var="function"/><block s="reportMap"><block s="reifyReporter"><autolambda><custom-block s="head of stream %l"><l/></custom-block></autolambda><list></list></block><block var="stream"/></block></block><custom-block s="map %repRing over stream %mult%l"><block var="function"/><block s="reportMap"><block s="reifyReporter"><autolambda><custom-block s="tail of stream %l"><l/></custom-block></autolambda><list></list></block><block var="stream"/></block></custom-block></custom-block></block></script></block></script></block-definition><block-definition s="keep items such that %&apos;pred&apos; from stream %&apos;stream&apos;" type="reporter" category="lists"><comment x="0" y="0" w="418.61067708333326" collapsed="false">The stream version of KEEP.&#xD;&#xD;Streams, also called lazy lists, are like lists except that&#xD;items are not computed until they&apos;re needed.  This allows&#xD;for more efficient handling of large computed lists, and&#xD;even infinite lists.  The only piece of magic is in &#xD;IN FRONT OF STREAM, whose second input is of type &#xD;Unevaluated, which means that it&apos;s a procedure, with &#xD;a sort of invisible gray ring. So HEAD OF STREAM is just &#xD;ITEM 1 OF, but TAIL OF STREAM has a CALL block &#xD;to make the computation happen.&#xD;&#xD;For a tutorial introduction to streams, read SICP 3.5:&#xD;https://mitpress.mit.edu/sites/default/files/sicp/full-text/book/book-Z-H-24.html#%_sec_3.5&#xD;or Brian&apos;s lecture notes (start on page 74):&#xD;https://people.eecs.berkeley.edu/&#126;bh/61a-pages/Volume2/notes.pdf&#xD;The above are clickable links!</comment><header></header><code></code><translations>pt:os itens tais que _ do canal _&#xD;</translations><inputs><input type="%predRing"></input><input type="%l"></input></inputs><script><block s="doWarp"><script><block s="doIf"><block s="reportEquals"><block var="stream"/><block s="reportNewList"><list></list></block></block><script><block s="doReport"><block s="reportNewList"><list></list></block></block></script></block><block s="doIfElse"><block s="evaluate"><block var="pred"/><list><custom-block s="head of stream %l"><block var="stream"/></custom-block></list></block><script><block s="doReport"><custom-block s="%s in front of stream %anyUE"><custom-block s="head of stream %l"><block var="stream"/></custom-block><custom-block s="keep items such that %predRing from stream %l"><block var="pred"/><custom-block s="tail of stream %l"><block var="stream"/></custom-block></custom-block></custom-block></block></script><script><block s="doReport"><custom-block s="keep items such that %predRing from stream %l"><block var="pred"/><custom-block s="tail of stream %l"><block var="stream"/></custom-block></custom-block></block></script></block></script></block></script></block-definition><block-definition s="show stream %&apos;stream&apos; %&apos;number&apos;" type="reporter" category="lists"><comment x="0" y="0" w="364" collapsed="false">The inputs are a stream and a positive integer.  SHOW STREAM reports a&#xD;regular finite list of length less than (for short finite streams) or equal to the&#xD;second input.  It&apos;s useful because an infinite stream can&apos;t be displayed in a&#xD;finite amount of time.</comment><header></header><code></code><translations>pt:uma lista com os itens do canal _ até ao _ º&#xD;</translations><inputs><input type="%l"></input><input type="%n">10</input></inputs><script><block s="doIf"><block s="reportListIsEmpty"><block var="stream"/></block><script><block s="doReport"><block s="reportNewList"><list></list></block></block></script></block><block s="doIf"><block s="reportEquals"><block var="number"/><l>0</l></block><script><block s="doReport"><block s="reportNewList"><list></list></block></block></script></block><block s="doReport"><block s="reportCONS"><custom-block s="head of stream %l"><block var="stream"/></custom-block><custom-block s="show stream %l %n"><custom-block s="tail of stream %l"><block var="stream"/></custom-block><block s="reportDifference"><block var="number"/><l>1</l></block></custom-block></block></block></script></block-definition><block-definition s="stream %&apos;items&apos;" type="reporter" category="lists"><comment x="0" y="0" w="343.3333333333333" collapsed="false">Make a stream from a finite collection of items, like the LIST primitive.&#xD;Since this block is typically used for small amounts of data, it does not&#xD;delay computation of its inputs.</comment><header></header><code></code><translations>pt:um canal com _&#xD;</translations><inputs><input type="%mult%s"></input></inputs><script><block s="doIf"><block s="reportListIsEmpty"><block var="items"/></block><script><block s="doReport"><block var="items"/></block></script></block><block s="doReport"><custom-block s="%s in front of stream %anyUE"><block s="reportListItem"><l>1</l><block var="items"/></block><custom-block s="stream %mult%s"><block s="reportCDR"><block var="items"/></block></custom-block></custom-block></block></script></block-definition><block-definition s="sieve %&apos;stream&apos;" type="reporter" category="lists"><comment x="0" y="0" w="478" collapsed="false">Call this block with STREAM WITH NUMBERS FROM 2&#xD;as its input to get the infinite stream of all the prime numbers.&#xD;&#xD;It&apos;s called SIEVE because the algorithm it uses is the Sieve of&#xD;Eratosthenes (clickable link):&#xD;https://en.wikipedia.org/wiki/Sieve_of_Eratosthenes&#xD;&#xD;Look inside; it&apos;s a beautifully elegant algorithm.&#xD;&#xD;For a tutorial introduction to streams, read SICP 3.5:&#xD;https://mitpress.mit.edu/sites/default/files/sicp/full-text/book/book-Z-H-24.html#%_sec_3.5&#xD;or Brian&apos;s lecture notes (start on page 74):&#xD;https://people.eecs.berkeley.edu/&#126;bh/61a-pages/Volume2/notes.pdf&#xD;The above are clickable links!</comment><header></header><code></code><translations>pt:a crivagem do canal _&#xD;</translations><inputs><input type="%l"></input></inputs><script><block s="doWarp"><script><block s="doReport"><custom-block s="%s in front of stream %anyUE"><custom-block s="head of stream %l"><block var="stream"/></custom-block><custom-block s="sieve %l"><custom-block s="keep items such that %predRing from stream %l"><block s="reifyPredicate"><autolambda><block s="reportGreaterThan"><block s="reportModulus"><l></l><custom-block s="head of stream %l"><block var="stream"/></custom-block></block><l>0</l></block></autolambda><list></list></block><custom-block s="tail of stream %l"><block var="stream"/></custom-block></custom-block></custom-block></custom-block></block></script></block></script></block-definition><block-definition s="stream with numbers from %&apos;start&apos;" type="reporter" category="lists"><comment x="0" y="0" w="418.61067708333326" collapsed="false">The stream version of NUMBERS FROM 1 TO, with no&#xD;ending number because it reports the infinite stream of all&#xD;the integers greater than or equal to its input.&#xD;&#xD;Read the code!  It&apos;s deceptively simple.&#xD;&#xD;Streams, also called lazy lists, are like lists except that&#xD;items are not computed until they&apos;re needed.  This allows&#xD;for more efficient handling of large computed lists, and&#xD;even infinite lists.  The only piece of magic is in &#xD;IN FRONT OF STREAM, whose second input is of type &#xD;Unevaluated, which means that it&apos;s a procedure, with &#xD;a sort of invisible gray ring. So HEAD OF STREAM is just &#xD;ITEM 1 OF, but TAIL OF STREAM has a CALL block &#xD;to make the computation happen.&#xD;&#xD;For a tutorial introduction to streams, read SICP 3.5:&#xD;https://mitpress.mit.edu/sites/default/files/sicp/full-text/book/book-Z-H-24.html#%_sec_3.5&#xD;or Brian&apos;s lecture notes (start on page 74):&#xD;https://people.eecs.berkeley.edu/&#126;bh/61a-pages/Volume2/notes.pdf&#xD;The above are clickable links!</comment><header></header><code></code><translations>pt:um canal com os números a partir de _&#xD;</translations><inputs><input type="%n">1</input></inputs><script><block s="doReport"><custom-block s="%s in front of stream %anyUE"><block var="start"/><custom-block s="stream with numbers from %n"><block s="reportSum"><block var="start"/><l>1</l></block></custom-block></custom-block></block></script></block-definition><block-definition s="stream demo" type="command" category="lists"><comment x="0" y="0" w="174.66666666666666" collapsed="true">Read the code while running it, </comment><header></header><code></code><translations></translations><inputs></inputs><script><block s="doDeclareVariables"><list><l>ones</l><l>ints</l><l>primes</l></list></block><block s="doSetVar"><l>ones</l><custom-block s="%s in front of stream %anyUE"><l>1</l><block var="ones"/></custom-block></block><block s="doSetVar"><l>ints</l><custom-block s="%s in front of stream %anyUE"><l>1</l><custom-block s="map %repRing over stream %mult%l"><block s="reifyReporter"><autolambda><block s="reportSum"><l></l><l></l></block></autolambda><list></list></block><list><block var="ones"/><block var="ints"/></list></custom-block></custom-block></block><block s="doSetVar"><l>primes</l><custom-block s="sieve %l"><custom-block s="stream with numbers from %n"><l>2</l></custom-block></custom-block></block><block s="doSayFor"><custom-block s="show stream %l %n"><block var="ones"/><l>10</l></custom-block><l>2</l></block><block s="doSayFor"><custom-block s="show stream %l %n"><block var="ints"/><l>10</l></custom-block><l>2</l></block><block s="doSayFor"><custom-block s="show stream %l %n"><block var="primes"/><l>10</l></custom-block><l>2</l></block></script></block-definition><block-definition s="mmap %&apos;function&apos; over %&apos;lists&apos;" type="reporter" category="lists"><header></header><code></code><translations></translations><inputs><input type="%repRing"></input><input type="%mult%l"></input></inputs><script><block s="doIf"><block s="reportListIsEmpty"><block s="reportListItem"><l>1</l><block var="lists"/></block></block><script><block s="doReport"><block s="reportNewList"><list></list></block></block></script></block><block s="doReport"><block s="reportCONS"><block s="evaluate"><block var="function"/><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportListItem"><l>1</l><l/></block></autolambda><list></list></block><block var="lists"/></block></block><custom-block s="mmap %repRing over %mult%l"><block var="function"/><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportCDR"><l/></block></autolambda><list></list></block><block var="lists"/></block></custom-block></block></block></script></block-definition><block-definition s="✐ update HSL" type="command" category="other"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doDeclareVariables"><list><l>L</l></list></block><block s="doIf"><block s="reportNot"><block s="reportEquals"><block var="✐ last set as"/><l>HSL</l></block></block><script><block s="doSetVar"><l>✐ HSL</l><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportProduct"><l></l><l>100</l></block></autolambda><list></list></block><block s="evaluate"><block s="reifyReporter"><script><block s="doSetVar"><l>L</l><block s="reportDifference"><block var="V"/><block s="reportQuotient"><block s="reportProduct"><block var="V"/><block var="S"/></block><l>2</l></block></block></block><block s="doReport"><block s="reportNewList"><list><block var="H"/><block s="reportIfElse"><block s="reportOr"><block s="reportEquals"><block var="L"/><l>0</l></block><block s="reportEquals"><block var="L"/><l>1</l></block></block><l>0</l><block s="reportQuotient"><block s="reportDifference"><block var="V"/><block var="L"/></block><custom-block s="min %s %s"><block var="L"/><block s="reportDifference"><l>1</l><block var="L"/></block></custom-block></block></block><block var="L"/></list></block></block></script><list><l>H</l><l>S</l><l>V</l></list></block><list></list></block></block></block><block s="doIf"><block var="✐ fair?"/><script><block s="doSetVar"><l>✐ raw HSL</l><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportProduct"><l></l><l>100</l></block></autolambda><list></list></block><block s="evaluate"><block s="reifyReporter"><script><block s="doSetVar"><l>L</l><block s="reportDifference"><block var="V"/><block s="reportQuotient"><block s="reportProduct"><block var="V"/><block var="S"/></block><l>2</l></block></block></block><block s="doReport"><block s="reportNewList"><list><block var="H"/><block s="reportIfElse"><block s="reportOr"><block s="reportEquals"><block var="L"/><l>0</l></block><block s="reportEquals"><block var="L"/><l>1</l></block></block><l>0</l><block s="reportQuotient"><block s="reportDifference"><block var="V"/><block var="L"/></block><custom-block s="min %s %s"><block var="L"/><block s="reportDifference"><l>1</l><block var="L"/></block></custom-block></block></block><block var="L"/></list></block></block></script><list><l>H</l><l>S</l><l>V</l></list></block><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportQuotient"><l></l><l>100</l></block></autolambda><list></list></block><block var="✐ raw HSV"/></block></block></block></block></script></block></script></block></script></block-definition><block-definition s="min %&apos;a&apos; %&apos;b&apos;" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%s"></input><input type="%s"></input></inputs><script><block s="doReport"><block s="reportIfElse"><block s="reportLessThan"><block var="a"/><block var="b"/></block><block var="a"/><block var="b"/></block></block></script></block-definition><block-definition s="✐ update HSV" type="command" category="other"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doDeclareVariables"><list><l>V</l><l>L</l><l>HSL 0-1</l><l>raw HSL 0-1</l></list></block><block s="doSetVar"><l>HSL 0-1</l><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportQuotient"><l></l><l>100</l></block></autolambda><list></list></block><block var="✐ HSL"/></block></block><block s="doSetVar"><l>L</l><block s="reportListItem"><l>3</l><block var="HSL 0-1"/></block></block><block s="doSetVar"><l>V</l><block s="reportSum"><block var="L"/><block s="reportProduct"><block s="reportListItem"><l>2</l><block var="HSL 0-1"/></block><custom-block s="min %s %s"><block var="L"/><block s="reportDifference"><l>1</l><block var="L"/></block></custom-block></block></block></block></script></block-definition><block-definition s="error %&apos;msg&apos;" type="command" category="control"><header></header><code></code><translations>pt:lança o erro _&#xD;</translations><inputs><input type="%txt"></input></inputs><script><block s="doRun"><block s="reportJSFunction"><list><l>msg</l></list><l>throw new Error(msg);</l></block><list><block var="msg"/></list></block></script></block-definition><block-definition s="✐ make integer RGB" type="command" category="other"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doRun"><block s="reifyScript"><script></script><list></list></block><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportRound"><l></l></block></autolambda><list></list></block><l/></block></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;</translations><inputs><input type="%txt"></input><input type="%txt"></input></inputs><script><block s="doReport"><block s="evaluate"><block s="reportJSFunction"><list><l>string</l><l>marker</l></list><l>var world=this.parentThatIsA(IDE_Morph);&#xD;if (!("stringLibCaseIndependentComparison" in world)) {&#xD;    world["stringLibCaseIndependentComparison"] = true;&#xD;};&#xD;if (world["stringLibCaseIndependentComparison"]) {&#xD;    var index=string.toLocaleLowerCase().indexOf(marker.toLocaleLowerCase());&#xD;    if (index&lt;0) {return string};&#xD;    return string.slice(0,index);&#xD;} else {&#xD;    var index=string.indexOf(marker);&#xD;    if (index&lt;0) {return string};&#xD;    return string.slice(0,index);&#xD;}</l></block><list><block var="string"/><block var="marker"/></list></block></block></script></block-definition><block-definition s="use case-independent comparisons %&apos;tf&apos;" type="command" category="operators"><comment x="0" y="0" w="225.33333333333334" collapsed="false">If input is TRUE, comparisons made by functions in the string library will be case-independent (so &quot;FOO&quot; = &quot;foo&quot;).  This is the default.&#xD;If input is FALSE, comparisons will be exact.</comment><header></header><code></code><translations>pt:altera comparações ignorando distinção minúsculas/maiúsculas para _&#xD;</translations><inputs><input type="%b"></input></inputs><script><block s="doRun"><block s="reportJSFunction"><list><l>flag</l></list><l>var world=this.parentThatIsA(IDE_Morph);&#xD;world[&apos;stringLibCaseIndependentComparison&apos;] = flag;</l></block><list><block var="tf"/></list></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;</translations><inputs><input type="%upvar"></input><input type="%cs"></input></inputs><script><block s="doCallCC"><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></block><custom-block s="ignore %s"><l>3</l></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;</translations><inputs><input type="%cmdRing">catchtag</input></inputs><script><block s="doRun"><block var="cont"/><list></list></block></script></block-definition><block-definition s="ignore %&apos;x&apos;" type="command" category="control"><header></header><code></code><translations>de:ignoriere _&#xD;ca:ignora _&#xD;es:ignorar _&#xD;fr:ignore _&#xD;pt:ignora _&#xD;</translations><inputs><input type="%s"></input></inputs></block-definition><block-definition s="✐ no spaces %&apos;text&apos;" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%s"></input></inputs><script><block s="doReport"><block s="reportJoinWords"><block s="reportTextSplit"><block var="text"/><l> </l></block></block></block></script></block-definition><block-definition s="create %&apos;scope&apos; var %&apos;names&apos;" type="command" category="variables"><comment x="0" y="0" w="146" collapsed="false">This block creates  new variables on the selected scope: global (for all sprites), sprite (for this sprite only) or script (only for that blocks stack) with the names given (in &apos;names&apos; list).&#xD;&#xD;If there is already a variable with that name in that scope, it does nothing: no errors and no overwrites.</comment><header></header><code></code><translations>pt:cria as variáveis _ _&#xD;ca:crea les _ variables _&#xD;es:crear las _ variables _&#xD;de:erstellen _ var _&#xD;</translations><inputs><input type="%s" readonly="true">global<options>global&#xD;sprite&#xD;script</options></input><input type="%mult%txt"></input></inputs><script><block s="doIfElse"><block s="reportEquals"><block var="scope"/><l>script</l></block><script><block s="doForEach"><l>each item</l><block var="names"/><script><block s="doRun"><block s="reportJSFunction"><list><l>varName</l><l>proc</l></list><l>if ((typeof varName) != "string" || varName === "") {&#xD;    throw new Error("name isn&apos;t a string: " + varName);&#xD;}&#xD;if (!proc.homeContext.variables.vars[varName]) proc.homeContext.variables.addVar(varName);</l></block><list><block var="each item"/></list></block></script></block></script><script><block s="doDeclareVariables"><list><l>global</l></list></block><block s="doIfElse"><block s="reportEquals"><block var="scope"/><l>sprite</l></block><script><block s="doSetVar"><l>global</l><block s="reportBoolean"><l><bool>false</bool></l></block></block></script><script><block s="doSetVar"><l>global</l><block s="reportBoolean"><l><bool>true</bool></l></block></block></script></block><block s="doForEach"><l>each item</l><block var="names"/><script><block s="doRun"><block s="reportJSFunction"><list><l>varName</l><l>global</l><l>proc</l></list><l>if ((typeof varName) != "string" || varName === "") {&#xD;    throw new Error("name isn&apos;t a string: " + varName);&#xD;}&#xD;if (global &amp;&amp; !proc.homeContext.variables.parentFrame.parentFrame.vars[varName]) this.addVariable(varName, true);&#xD;if (!global &amp;&amp; !proc.homeContext.variables.parentFrame.vars[varName]) this.addVariable(varName, false);</l></block><list><block var="each item"/><block var="global"/></list></block></script></block><block s="doRun"><block s="reportJSFunction"><list></list><l>var ide = this.parentThatIsA(IDE_Morph);&#xD;ide.flushBlocksCache(&apos;variables&apos;); // b/c of inheritance&#xD;ide.refreshPalette();</l></block><list></list></block></script></block></script></block-definition><block-definition s="does var %&apos;name&apos; exist?" type="predicate" category="variables"><comment x="0" y="0" w="146" collapsed="false">This block reports &quot;true&quot; if there is a variable with this given name (input slot) in that context.&#xD;&#xD;It can be a global, sprite or script variable.&#xD;&#xD;Otherwise it reports &quot;false&quot;.</comment><header></header><code></code><translations>pt:a variável _ existe&#xD;ca:existeix la variable _ ?&#xD;es:existe la variable _ ?&#xD;de:existiert var _ ?&#xD;</translations><inputs><input type="%s"></input></inputs><script><block s="doReport"><block s="evaluate"><block s="reportJSFunction"><list><l>varName</l><l>proc</l></list><l>if ((typeof varName) != "string" || varName === "") {&#xD;    throw new Error("name isn&apos;t a string: " + varName);&#xD;}&#xD;return proc.homeContext.variables.silentFind(varName)? true:false;</l></block><list><block var="name"/></list></block></block></script></block-definition><block-definition s="$camera snap" type="reporter" category="sensing"><header></header><code></code><translations>pt:$camera a imagem actual do vídeo&#xD;</translations><inputs></inputs><script><block s="doDeclareVariables"><list><l>test</l><l>pic</l></list></block><block s="doSetVar"><l>test</l><block s="evaluate"><block s="reportJSFunction"><list></list><l>var camDialog,&#xD;    result = false;&#xD;&#xD;camDialog = new CamSnapshotDialogMorph(&#xD;    this.parentThatIsA(IDE_Morph),&#xD;    this,&#xD;    function () {result = null; },&#xD;    function (costume) {&#xD;        result = costume;&#xD;        this.close();&#xD;    }&#xD;);&#xD;&#xD;camDialog.key = &apos;Photos&apos;;&#xD;camDialog.popUp(this.world());&#xD;return function () {return result; };</l></block><list></list></block></block><block s="doWaitUntil"><block s="evaluate"><block s="reifyScript"><script><block s="doSetVar"><l>pic</l><block s="evaluate"><block var="test"/><list></list></block></block><block s="doReport"><block s="reportNot"><block s="reportEquals"><block var="pic"/><block s="reportBoolean"><l><bool>false</bool></l></block></block></block></block></script><list></list></block><list></list></block></block><block s="doReport"><block var="pic"/></block></script><scripts><comment x="220.6805830001832" y="8.46874999999998" w="216" collapsed="false">takes a snapshot with the webcam and reports it as a new costume, or zero if the user cancels</comment></scripts></block-definition><block-definition s="turbo %&apos;action&apos;" type="command" category="other"><header></header><code></code><translations>pt:executa no modo turbo _&#xD;</translations><inputs><input type="%cs"></input></inputs><script><block s="doDeclareVariables"><list><l>begin</l></list></block><block s="doSetVar"><l>begin</l><block s="reportGlobalFlag"><l><option>turbo mode</option></l></block></block><block s="doSetGlobalFlag"><l><option>turbo mode</option></l><l><bool>true</bool></l></block><block s="doRun"><block var="action"/><list></list></block><block s="doSetGlobalFlag"><l><option>turbo mode</option></l><block var="begin"/></block></script></block-definition><block-definition s="%&apos;frequency&apos; Hz for %&apos;duration&apos; secs at %&apos;sample rate&apos; Hz sample rate" type="reporter" category="sound"><comment x="0" y="0" w="204.99999999999997" collapsed="false">generate a list of samples representing a sine wave at the given frequency, duration and sample rate</comment><header></header><code></code><translations>pt:as amostras de som com _ Hz de _ s amostrado a _ Hz&#xD;</translations><inputs><input type="%n">440<options>a 55=55&#xD;a 110=110&#xD;a 220=220&#xD;a 440=440&#xD;a 880=880&#xD;a 1760=1760&#xD;a 3520=3520</options></input><input type="%n">1</input><input type="%n">44100<options>22.05 kHz=22050&#xD;44.1 kHz=44100&#xD;88.2 kHz=88200&#xD;96 kHz=96000</options></input></inputs><script><block s="doDeclareVariables"><list><l>output</l><l>sample period</l><l>duration in samples</l><l>time</l></list></block><block s="doSetVar"><l>sample period</l><block s="reportQuotient"><l>1</l><block var="sample rate"/></block></block><block s="doSetVar"><l>duration in samples</l><block s="reportMonadic"><l><option>ceiling</option></l><block s="reportProduct"><block var="duration"/><block var="sample rate"/></block></block></block><block s="doSetVar"><l>time</l><l>0</l></block><block s="doSetVar"><l>output</l><block s="reportNewList"><list></list></block></block><block s="doWarp"><script><block s="doRepeat"><block var="duration in samples"/><script><block s="doAddToList"><block s="reportMonadic"><l><option>sin</option></l><custom-block s="degrees %n"><block s="reportProduct"><l>2</l><block s="reportProduct"><custom-block s="PI"></custom-block><block s="reportProduct"><block var="frequency"/><block var="time"/></block></block></block></custom-block></block><block var="output"/></block><block s="doChangeVar"><l>time</l><block var="sample period"/></block></script></block></script></block><block s="doReport"><block var="output"/></block></script></block-definition><block-definition s="PI" type="reporter" category="operators"><header></header><code></code><translations>pt:π&#xD;</translations><inputs></inputs><script><block s="doReport"><l>3.141592653589793</l></block></script></block-definition><block-definition s="degrees %&apos;radians&apos;" type="reporter" category="operators"><header></header><code></code><translations>pt:_ radianos em graus&#xD;</translations><inputs><input type="%n">0.5</input></inputs><script><block s="doReport"><block s="reportQuotient"><block s="reportProduct"><block var="radians"/><l>180</l></block><custom-block s="PI"></custom-block></block></block></script></block-definition><block-definition s="sound named %&apos;name&apos;" type="reporter" category="sensing"><header></header><code></code><translations>pt:o som _&#xD;</translations><inputs><input type="%s"><options>§_soundsMenu</options></input></inputs><script><block s="doReport"><block s="reportFindFirst"><block s="reifyPredicate"><autolambda><block s="reportEquals"><block s="reportGetSoundAttribute"><l><option>name</option></l><l></l></block><block var="name"/></block></autolambda><list></list></block><block s="reportGet"><l><option>sounds</option></l></block></block></block></script></block-definition><block-definition s="$notes record" type="reporter" category="sensing"><comment x="0" y="0" w="192" collapsed="false">records an audio snippet and reports it as a new sound, or zero if the user cancels</comment><header></header><code></code><translations>pt:$circleSolid-1-255-0-0 uma nova gravação&#xD;</translations><inputs></inputs><script><block s="doDeclareVariables"><list><l>test</l><l>pic</l></list></block><block s="doSetVar"><l>test</l><block s="evaluate"><block s="reportJSFunction"><list></list><l>var soundRecorder,&#xD;    result = false;&#xD;&#xD;soundRecorder = new SoundRecorderDialogMorph(&#xD;    function (audio) {&#xD;        if (audio) {&#xD;            result = new Sound(audio, &apos;recording&apos;);&#xD;        } else {&#xD;            result = null;&#xD;            this.destroy();&#xD;        }&#xD;    }&#xD;);&#xD;&#xD;soundRecorder.cancel = function () {&#xD;    result = null;&#xD;    this.destroy();&#xD;};&#xD;&#xD;soundRecorder.key = &apos;microphone&apos;;&#xD;soundRecorder.popUp(this.world());&#xD;return function () {return result; };</l></block><list></list></block></block><block s="doWaitUntil"><block s="evaluate"><block s="reifyScript"><script><block s="doSetVar"><l>pic</l><block s="evaluate"><block var="test"/><list></list></block></block><block s="doReport"><block s="reportNot"><block s="reportEquals"><block var="pic"/><block s="reportBoolean"><l><bool>false</bool></l></block></block></block></block></script><list></list></block><list></list></block></block><block s="doReport"><block var="pic"/></block></script></block-definition><block-definition s="note from %&apos;pitch&apos; hz" type="reporter" category="sound"><header></header><code></code><translations>pt:a nota com _ Hz&#xD;</translations><inputs><input type="%n">440</input></inputs><script><block s="doReport"><block s="reportRound"><block s="reportSum"><block s="reportProduct"><l>12</l><block s="reportQuotient"><block s="reportMonadic"><l><option>log</option></l><block s="reportQuotient"><block var="pitch"/><l>440</l></block></block><block s="reportMonadic"><l><option>log</option></l><l>2</l></block></block></block><l>69</l></block></block></block></script></block-definition><block-definition s="hz from note %&apos;note&apos;" type="reporter" category="sound"><header></header><code></code><translations>pt:a frequência da nota _&#xD;</translations><inputs><input type="%n">69</input></inputs><script><block s="doReport"><block s="reportProduct"><l>440</l><block s="reportPower"><l>2</l><block s="reportQuotient"><block s="reportDifference"><block var="note"/><l>69</l></block><l>12</l></block></block></block></block></script></block-definition><block-definition s="name of note %&apos;note&apos;" type="reporter" category="sound"><header></header><code></code><translations>pt:o nome da nota _&#xD;</translations><inputs><input type="%n">69</input></inputs><script><block s="doReport"><block s="reportListItem"><block s="reportSum"><block s="reportModulus"><block s="reportDifference"><block var="note"/><l>69</l></block><l>12</l></block><l>1</l></block><block s="reportNewList"><list><l>A</l><l>Bb</l><l>B</l><l>C</l><l>C#</l><l>D</l><l>D#</l><l>E</l><l>F</l><l>F#</l><l>G</l><l>G#</l></list></block></block></block></script></block-definition><block-definition s="default mouse" type="command" category="looks"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doRun"><block s="reportJSFunction"><list><l></l></list><l>document.getElementsByTagName("body")[0].style.cursor = "url(&apos;https://wiki-devel.sugarlabs.org/images/4/4b/default.cur&apos;), auto";</l></block><list></list></block></script></block-definition><block-definition s="arrow large mouse" type="command" category="looks"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doRun"><block s="reportJSFunction"><list><l></l></list><l>document.getElementsByTagName("body")[0].style.cursor = "url(&apos;http://wiki-devel.sugarlabs.org/images/e/e2/Arrow.cur&apos;), auto";</l></block><list></list></block></script></block-definition></blocks><variables><variable name="✐ last set as"><l>crayon</l></variable><variable name="✐ fair?"><bool>false</bool></variable><variable name="✐ color scale"><l>0</l></variable><variable name="✐ HSL"><l>0</l></variable><variable name="✐ last crayon"><l>22</l></variable><variable name="✐ last X11"><l>0</l></variable><variable name="✐ raw HSL"><l>0</l></variable><variable name="✐ raw HSV"><list struct="atomic" id="1162">0,100,100</list></variable><variable name="✐ crayon colors"><list id="1163"><item><list struct="atomic" id="1164">0,0,0</list></item><item><list struct="atomic" id="1165">18,18,18</list></item><item><list struct="atomic" id="1166">36,36,36</list></item><item><list struct="atomic" id="1167">54,54,54</list></item><item><list struct="atomic" id="1168">72,72,72</list></item><item><list struct="atomic" id="1169">92,92,92</list></item><item><list struct="atomic" id="1170">109,109,109</list></item><item><list struct="atomic" id="1171">127,127,127</list></item><item><list struct="atomic" id="1172">145,145,145</list></item><item><list struct="atomic" id="1173">163,163,163</list></item><item><list struct="atomic" id="1174">181,181,181</list></item><item><list struct="atomic" id="1175">200,200,200</list></item><item><list struct="atomic" id="1176">218,218,218</list></item><item><list struct="atomic" id="1177">236,236,236</list></item><item><list struct="atomic" id="1178">255,255,255</list></item><item><list struct="atomic" id="1179">255,20,147</list></item><item><list struct="atomic" id="1180">255,105,180</list></item><item><list struct="atomic" id="1181">255,0,127</list></item><item><list struct="atomic" id="1182">227,11,93</list></item><item><list struct="atomic" id="1183">229,43,80</list></item><item><list struct="atomic" id="1184">255,0,0</list></item><item><list struct="atomic" id="1185">144,0,32</list></item><item><list struct="atomic" id="1186">153,0,0</list></item><item><list struct="atomic" id="1187">164,0,0</list></item><item><list struct="atomic" id="1188">192,0,0</list></item><item><list struct="atomic" id="1189">128,0,0</list></item><item><list struct="atomic" id="1190">201,0,22</list></item><item><list struct="atomic" id="1191">217,77,17</list></item><item><list struct="atomic" id="1192">255,8,0</list></item><item><list struct="atomic" id="1193">255,56,0</list></item><item><list struct="atomic" id="1194">139,69,19</list></item><item><list struct="atomic" id="1195">123,63,0</list></item><item><list struct="atomic" id="1196">107,68,35</list></item><item><list struct="atomic" id="1197">112,66,20</list></item><item><list struct="atomic" id="1198">149,69,53</list></item><item><list struct="atomic" id="1199">101,67,33</list></item><item><list struct="atomic" id="1200">150,75,0</list></item><item><list struct="atomic" id="1201">153,101,21</list></item><item><list struct="atomic" id="1202">184,115,51</list></item><item><list struct="atomic" id="1203">210,105,30</list></item><item><list struct="atomic" id="1204">255,127,0</list></item><item><list struct="atomic" id="1205">255,88,0</list></item><item><list struct="atomic" id="1206">255,117,24</list></item><item><list struct="atomic" id="1207">243,118,29</list></item><item><list struct="atomic" id="1208">232,97,0</list></item><item><list struct="atomic" id="1209">204,85,0</list></item><item><list struct="atomic" id="1210">203,65,11</list></item><item><list struct="atomic" id="1211">204,119,34</list></item><item><list struct="atomic" id="1212">237,145,33</list></item><item><list struct="atomic" id="1213">242,133,0</list></item><item><list struct="atomic" id="1214">255,255,0</list></item><item><list struct="atomic" id="1215">230,168,34</list></item><item><list struct="atomic" id="1216">184,134,11</list></item><item><list struct="atomic" id="1217">218,165,32</list></item><item><list struct="atomic" id="1218">244,196,48</list></item><item><list struct="atomic" id="1219">236,213,64</list></item><item><list struct="atomic" id="1220">255,219,88</list></item><item><list struct="atomic" id="1221">255,215,0</list></item><item><list struct="atomic" id="1222">254,227,62</list></item><item><list struct="atomic" id="1223">251,225,8</list></item><item><list struct="atomic" id="1224">0,255,0</list></item><item><list struct="atomic" id="1225">141,182,0</list></item><item><list struct="atomic" id="1226">98,194,19</list></item><item><list struct="atomic" id="1227">34,139,34</list></item><item><list struct="atomic" id="1228">0,128,0</list></item><item><list struct="atomic" id="1229">0,100,0</list></item><item><list struct="atomic" id="1230">3,192,60</list></item><item><list struct="atomic" id="1231">80,200,120</list></item><item><list struct="atomic" id="1232">62,180,137</list></item><item><list struct="atomic" id="1233">0,161,120</list></item><item><list struct="atomic" id="1234">0,255,255</list></item><item><list struct="atomic" id="1235">0,139,139</list></item><item><list struct="atomic" id="1236">0,123,167</list></item><item><list struct="atomic" id="1237">113,166,210</list></item><item><list struct="atomic" id="1238">4,148,220</list></item><item><list struct="atomic" id="1239">0,128,128</list></item><item><list struct="atomic" id="1240">135,206,250</list></item><item><list struct="atomic" id="1241">0,191,255</list></item><item><list struct="atomic" id="1242">30,144,255</list></item><item><list struct="atomic" id="1243">0,127,255</list></item><item><list struct="atomic" id="1244">0,0,255</list></item><item><list struct="atomic" id="1245">25,25,112</list></item><item><list struct="atomic" id="1246">0,51,153</list></item><item><list struct="atomic" id="1247">0,71,171</list></item><item><list struct="atomic" id="1248">21,96,189</list></item><item><list struct="atomic" id="1249">0,0,128</list></item><item><list struct="atomic" id="1250">70,130,180</list></item><item><list struct="atomic" id="1251">74,108,212</list></item><item><list struct="atomic" id="1252">100,149,237</list></item><item><list struct="atomic" id="1253">106,90,205</list></item><item><list struct="atomic" id="1254">128,0,255</list></item><item><list struct="atomic" id="1255">143,86,227</list></item><item><list struct="atomic" id="1256">111,45,168</list></item><item><list struct="atomic" id="1257">75,0,130</list></item><item><list struct="atomic" id="1258">160,32,240</list></item><item><list struct="atomic" id="1259">255,0,255</list></item><item><list struct="atomic" id="1260">153,50,204</list></item><item><list struct="atomic" id="1261">207,74,217</list></item><item><list struct="atomic" id="1262">127,0,127</list></item><item><list struct="atomic" id="1263">139,0,139</list></item></list></variable><variable name="Recordings"><list struct="atomic" id="1264">0,0,0</list></variable></variables></project><media name="Sound Recorder" app="Snap! 6, https://snap.berkeley.edu" version="1"></media></snapdata>