<snapdata remixID="10382894"><project name="digi4all-L1-turtle-art1" app="Snap! 6, https://snap.berkeley.edu" version="1"><notes></notes><thumbnail>data:image/png;base64,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</thumbnail><stage name="Bühne" width="480" height="360" costume="1" 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,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</pentrails><costumes><list id="2"><item><costume name="Unbenannt" center-x="240" center-y="180" image="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAeAAAAFoCAYAAACPNyggAAAOi0lEQVR4Xu3VwQkAMAzEsGT/oVvoEPVHWeBABLwzc8YRIECAAAECXwVWgL96GyNAgAABAk9AgD0CAQIECBAIBAQ4QDdJgAABAgQE2A8QIECAAIFAQIADdJMECBAgQECA/QABAgQIEAgEBDhAN0mAAAECBATYDxAgQIAAgUBAgAN0kwQIECBAQID9AAECBAgQCAQEOEA3SYAAAQIEBNgPECBAgACBQECAA3STBAgQIEBAgP0AAQIECBAIBAQ4QDdJgAABAgQE2A8QIECAAIFAQIADdJMECBAgQECA/QABAgQIEAgEBDhAN0mAAAECBATYDxAgQIAAgUBAgAN0kwQIECBAQID9AAECBAgQCAQEOEA3SYAAAQIEBNgPECBAgACBQECAA3STBAgQIEBAgP0AAQIECBAIBAQ4QDdJgAABAgQE2A8QIECAAIFAQIADdJMECBAgQECA/QABAgQIEAgEBDhAN0mAAAECBATYDxAgQIAAgUBAgAN0kwQIECBAQID9AAECBAgQCAQEOEA3SYAAAQIEBNgPECBAgACBQECAA3STBAgQIEBAgP0AAQIECBAIBAQ4QDdJgAABAgQE2A8QIECAAIFAQIADdJMECBAgQECA/QABAgQIEAgEBDhAN0mAAAECBATYDxAgQIAAgUBAgAN0kwQIECBAQID9AAECBAgQCAQEOEA3SYAAAQIEBNgPECBAgACBQECAA3STBAgQIEBAgP0AAQIECBAIBAQ4QDdJgAABAgQE2A8QIECAAIFAQIADdJMECBAgQECA/QABAgQIEAgEBDhAN0mAAAECBATYDxAgQIAAgUBAgAN0kwQIECBAQID9AAECBAgQCAQEOEA3SYAAAQIEBNgPECBAgACBQECAA3STBAgQIEBAgP0AAQIECBAIBAQ4QDdJgAABAgQE2A8QIECAAIFAQIADdJMECBAgQECA/QABAgQIEAgEBDhAN0mAAAECBATYDxAgQIAAgUBAgAN0kwQIECBAQID9AAECBAgQCAQEOEA3SYAAAQIEBNgPECBAgACBQECAA3STBAgQIEBAgP0AAQIECBAIBAQ4QDdJgAABAgQE2A8QIECAAIFAQIADdJMECBAgQECA/QABAgQIEAgEBDhAN0mAAAECBATYDxAgQIAAgUBAgAN0kwQIECBAQID9AAECBAgQCAQEOEA3SYAAAQIEBNgPECBAgACBQECAA3STBAgQIEBAgP0AAQIECBAIBAQ4QDdJgAABAgQE2A8QIECAAIFAQIADdJMECBAgQECA/QABAgQIEAgEBDhAN0mAAAECBATYDxAgQIAAgUBAgAN0kwQIECBAQID9AAECBAgQCAQEOEA3SYAAAQIEBNgPECBAgACBQECAA3STBAgQIEBAgP0AAQIECBAIBAQ4QDdJgAABAgQE2A8QIECAAIFAQIADdJMECBAgQECA/QABAgQIEAgEBDhAN0mAAAECBATYDxAgQIAAgUBAgAN0kwQIECBAQID9AAECBAgQCAQEOEA3SYAAAQIEBNgPECBAgACBQECAA3STBAgQIEBAgP0AAQIECBAIBAQ4QDdJgAABAgQE2A8QIECAAIFAQIADdJMECBAgQECA/QABAgQIEAgEBDhAN0mAAAECBATYDxAgQIAAgUBAgAN0kwQIECBAQID9AAECBAgQCAQEOEA3SYAAAQIEBNgPECBAgACBQECAA3STBAgQIEBAgP0AAQIECBAIBAQ4QDdJgAABAgQE2A8QIECAAIFAQIADdJMECBAgQECA/QABAgQIEAgEBDhAN0mAAAECBATYDxAgQIAAgUBAgAN0kwQIECBAQID9AAECBAgQCAQEOEA3SYAAAQIEBNgPECBAgACBQECAA3STBAgQIEBAgP0AAQIECBAIBAQ4QDdJgAABAgQE2A8QIECAAIFAQIADdJMECBAgQECA/QABAgQIEAgEBDhAN0mAAAECBATYDxAgQIAAgUBAgAN0kwQIECBAQID9AAECBAgQCAQEOEA3SYAAAQIEBNgPECBAgACBQECAA3STBAgQIEBAgP0AAQIECBAIBAQ4QDdJgAABAgQE2A8QIECAAIFAQIADdJMECBAgQECA/QABAgQIEAgEBDhAN0mAAAECBATYDxAgQIAAgUBAgAN0kwQIECBAQID9AAECBAgQCAQEOEA3SYAAAQIEBNgPECBAgACBQECAA3STBAgQIEBAgP0AAQIECBAIBAQ4QDdJgAABAgQE2A8QIECAAIFAQIADdJMECBAgQECA/QABAgQIEAgEBDhAN0mAAAECBATYDxAgQIAAgUBAgAN0kwQIECBAQID9AAECBAgQCAQEOEA3SYAAAQIEBNgPECBAgACBQECAA3STBAgQIEBAgP0AAQIECBAIBAQ4QDdJgAABAgQE2A8QIECAAIFAQIADdJMECBAgQECA/QABAgQIEAgEBDhAN0mAAAECBATYDxAgQIAAgUBAgAN0kwQIECBAQID9AAECBAgQCAQEOEA3SYAAAQIEBNgPECBAgACBQECAA3STBAgQIEBAgP0AAQIECBAIBAQ4QDdJgAABAgQE2A8QIECAAIFAQIADdJMECBAgQECA/QABAgQIEAgEBDhAN0mAAAECBATYDxAgQIAAgUBAgAN0kwQIECBAQID9AAECBAgQCAQEOEA3SYAAAQIEBNgPECBAgACBQECAA3STBAgQIEBAgP0AAQIECBAIBAQ4QDdJgAABAgQE2A8QIECAAIFAQIADdJMECBAgQECA/QABAgQIEAgEBDhAN0mAAAECBATYDxAgQIAAgUBAgAN0kwQIECBAQID9AAECBAgQCAQEOEA3SYAAAQIEBNgPECBAgACBQECAA3STBAgQIEBAgP0AAQIECBAIBAQ4QDdJgAABAgQE2A8QIECAAIFAQIADdJMECBAgQECA/QABAgQIEAgEBDhAN0mAAAECBATYDxAgQIAAgUBAgAN0kwQIECBAQID9AAECBAgQCAQEOEA3SYAAAQIEBNgPECBAgACBQECAA3STBAgQIEBAgP0AAQIECBAIBAQ4QDdJgAABAgQE2A8QIECAAIFAQIADdJMECBAgQECA/QABAgQIEAgEBDhAN0mAAAECBATYDxAgQIAAgUBAgAN0kwQIECBAQID9AAECBAgQCAQEOEA3SYAAAQIEBNgPECBAgACBQECAA3STBAgQIEBAgP0AAQIECBAIBAQ4QDdJgAABAgQE2A8QIECAAIFAQIADdJMECBAgQECA/QABAgQIEAgEBDhAN0mAAAECBATYDxAgQIAAgUBAgAN0kwQIECBAQID9AAECBAgQCAQEOEA3SYAAAQIEBNgPECBAgACBQECAA3STBAgQIEBAgP0AAQIECBAIBAQ4QDdJgAABAgQE2A8QIECAAIFAQIADdJMECBAgQECA/QABAgQIEAgEBDhAN0mAAAECBATYDxAgQIAAgUBAgAN0kwQIECBAQID9AAECBAgQCAQEOEA3SYAAAQIEBNgPECBAgACBQECAA3STBAgQIEBAgP0AAQIECBAIBAQ4QDdJgAABAgQE2A8QIECAAIFAQIADdJMECBAgQECA/QABAgQIEAgEBDhAN0mAAAECBATYDxAgQIAAgUBAgAN0kwQIECBAQID9AAECBAgQCAQEOEA3SYAAAQIEBNgPECBAgACBQECAA3STBAgQIEBAgP0AAQIECBAIBAQ4QDdJgAABAgQE2A8QIECAAIFAQIADdJMECBAgQECA/QABAgQIEAgEBDhAN0mAAAECBATYDxAgQIAAgUBAgAN0kwQIECBAQID9AAECBAgQCAQEOEA3SYAAAQIEBNgPECBAgACBQECAA3STBAgQIEBAgP0AAQIECBAIBAQ4QDdJgAABAgQE2A8QIECAAIFAQIADdJMECBAgQECA/QABAgQIEAgEBDhAN0mAAAECBATYDxAgQIAAgUBAgAN0kwQIECBAQID9AAECBAgQCAQEOEA3SYAAAQIEBNgPECBAgACBQECAA3STBAgQIEBAgP0AAQIECBAIBAQ4QDdJgAABAgQE2A8QIECAAIFAQIADdJMECBAgQECA/QABAgQIEAgEBDhAN0mAAAECBATYDxAgQIAAgUBAgAN0kwQIECBAQID9AAECBAgQCAQEOEA3SYAAAQIEBNgPECBAgACBQECAA3STBAgQIEBAgP0AAQIECBAIBAQ4QDdJgAABAgQE2A8QIECAAIFAQIADdJMECBAgQECA/QABAgQIEAgEBDhAN0mAAAECBATYDxAgQIAAgUBAgAN0kwQIECBAQID9AAECBAgQCAQEOEA3SYAAAQIEBNgPECBAgACBQECAA3STBAgQIEBAgP0AAQIECBAIBAQ4QDdJgAABAgQE2A8QIECAAIFAQIADdJMECBAgQECA/QABAgQIEAgEBDhAN0mAAAECBATYDxAgQIAAgUBAgAN0kwQIECBAQID9AAECBAgQCAQEOEA3SYAAAQIEBNgPECBAgACBQECAA3STBAgQIEBAgP0AAQIECBAIBAQ4QDdJgAABAgQE2A8QIECAAIFAQIADdJMECBAgQECA/QABAgQIEAgEBDhAN0mAAAECBATYDxAgQIAAgUBAgAN0kwQIECBAQID9AAECBAgQCAQEOEA3SYAAAQIEBNgPECBAgACBQECAA3STBAgQIEBAgP0AAQIECBAIBAQ4QDdJgAABAgQE2A8QIECAAIFAQIADdJMECBAgQECA/QABAgQIEAgEBDhAN0mAAAECBATYDxAgQIAAgUBAgAN0kwQIECBAQID9AAECBAgQCAQEOEA3SYAAAQIEBNgPECBAgACBQECAA3STBAgQIEBAgP0AAQIECBAIBAQ4QDdJgAABAgQE2A8QIECAAIFAQIADdJMECBAgQECA/QABAgQIEAgEBDhAN0mAAAECBATYDxAgQIAAgUBAgAN0kwQIECBAQID9AAECBAgQCAQEOEA3SYAAAQIELmhgaBBRNtU9AAAAAElFTkSuQmCC" id="3"/></item></list></costumes><sounds><list struct="atomic" id="4"></list></sounds><variables></variables><blocks></blocks><scripts></scripts><sprites><sprite name="Stift" idx="1" x="26.531659839156646" y="-47.13425699134228" heading="266.0000000000646" scale="1" volume="100" pan="0" rotation="1" draggable="true" hidden="true" costume="0" color="255,38.00000000000001,145.00000000000023,1" pen="tip" id="9"><costumes><list struct="atomic" id="10"></list></costumes><sounds><list struct="atomic" id="11"></list></sounds><blocks></blocks><variables></variables><scripts><script x="118.999999" y="30"><block s="receiveGo"></block><block s="setColor"><color>255,38,145,1</color></block><block s="down"></block><block s="changeSize"><l>20</l></block><block s="doSetVar"><l>a</l><l>7</l></block><block s="doForever"><script><block s="gotoXY"><l>0</l><l>0</l></block><block s="setHeading"><l>30</l></block><block s="clear"></block><block s="doWarp"><script><block s="doSetVar"><l>b</l><l>0</l></block><block s="doRepeat"><l>50</l><script><block s="forward"><block var="b"/></block><block s="changePenHSVA"><l><option>hue</option></l><l>10</l></block><block s="turn"><block var="a"/></block><block s="doChangeVar"><l>b</l><l>1</l></block></script></block></script></block><block s="doChangeVar"><l>a</l><l>.03</l></block></script></block></script></scripts></sprite><watcher var="a" style="normal" x="10" y="10" color="243,118,29"/><watcher var="b" style="normal" x="10" y="31.000001999999995" color="243,118,29"/></sprites></stage><hidden></hidden><headers></headers><code></code><blocks><block-definition s="%&apos;attribute&apos; of sound %&apos;sound&apos;" type="reporter" category="sound"><header></header><code></code><translations></translations><inputs><input type="%s" readonly="true">duration<options>name&#xD;duration&#xD;length&#xD;number of channels&#xD;sample rate&#xD;samples</options></input><input type="%obj"></input></inputs><script><block s="doIf"><block s="reportEquals"><block var="attribute"/><l>name</l></block><script><block s="doReport"><block s="evaluate"><block s="reportJSFunction"><list><l>sound</l></list><l>return sound.name;</l></block><list><block var="sound"/></list></block></block></script></block><block s="doIf"><block s="reportEquals"><block var="attribute"/><l>samples</l></block><script><block s="doReport"><block s="evaluate"><block s="reportJSFunction"><list><l>audioBuffer</l></list><l>var result, i;&#xD;if (audioBuffer.numberOfChannels &gt; 1) {&#xD;    result = new List();&#xD;    for (i = 0; i &lt; audioBuffer.numberOfChannels; i += 1) {&#xD;        result.add(new List(audioBuffer.getChannelData(i)));&#xD;    }&#xD;    return result;&#xD;}&#xD;return new List(audioBuffer.getChannelData(0));</l></block><list><custom-block s="%s of sound %obj"><l></l><block var="sound"/></custom-block></list></block></block></script></block><block s="doRun"><block s="reportJSFunction"><list><l>sound</l></list><l>var base64, binaryString, len, bytes, i,&#xD;    arrayBuffer, audioCtx;&#xD;if (sound.audioBuffer) {&#xD;    return;&#xD;}&#xD;base64 = sound.audio.src.split(&apos;,&apos;)[1];&#xD;binaryString =  window.atob(base64);&#xD;len = binaryString.length;&#xD;bytes = new Uint8Array(len);&#xD;for (i = 0; i &lt; len; i += 1)        {&#xD;  bytes[i] = binaryString.charCodeAt(i);&#xD;}&#xD;arrayBuffer = bytes.buffer;&#xD;Note.prototype.setupContext();&#xD;audioCtx = Note.prototype.audioContext;&#xD;audioCtx.decodeAudioData(arrayBuffer, function(buffer) {&#xD;   sound.audioBuffer = buffer;&#xD;});</l></block><list><block var="sound"/></list></block><block s="doWaitUntil"><block s="evaluate"><block s="reportJSFunction"><list><l>sound</l></list><l>return !isNil(sound.audioBuffer);</l></block><list><block var="sound"/></list></block></block><block s="doReport"><block s="evaluate"><block s="reportJSFunction"><list><l>sound</l><l>choice</l></list><l>switch (choice) {&#xD;case &apos;sample rate&apos;:&#xD;    return sound.audioBuffer.sampleRate;&#xD;case &apos;duration&apos;:&#xD;    return sound.audioBuffer.duration;&#xD;case &apos;length&apos;:&#xD;    return sound.audioBuffer.length;&#xD;case &apos;number of channels&apos;:&#xD;    return sound.audioBuffer.numberOfChannels;&#xD;default:&#xD;    return sound.audioBuffer;&#xD;}</l></block><list><block var="sound"/><block var="attribute"/></list></block></block></script></block-definition><block-definition s="turbo %&apos;action&apos;" type="command" category="other"><header></header><code></code><translations></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="play %&apos;samples&apos; at %&apos;sampleRate&apos; Hz" type="command" category="sound"><comment x="0" y="0" w="164" collapsed="false">play back a sound, a list of samples (single channel), or a list of lists (multiple channels) at the given sample rate.&#xD;for demo purposes this block also fast-plots the samples on the stage</comment><header></header><code></code><translations></translations><inputs><input type="%l"></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="doIf"><block s="reportIsA"><block var="samples"/><l><option>sound</option></l></block><script><block s="doSetVar"><l>samples</l><custom-block s="%s of sound %obj"><l>samples</l><block var="samples"/></custom-block></block></script></block><block s="doRun"><block s="reportJSFunction"><list><l>samples</l><l>rate</l></list><l>var audioCtx, channels, frameCount, arrayBuffer, i, source;&#xD;Note.prototype.setupContext();&#xD;audioCtx = Note.prototype.audioContext;&#xD;channels = (samples.at(1) instanceof List) ? samples.length() : 1; &#xD;frameCount = (channels === 1) ? samples.length() : samples.at(1).length(); &#xD;arrayBuffer = audioCtx.createBuffer(channels, frameCount, rate);&#xD;if (!arrayBuffer.copyToChannel) {&#xD;    arrayBuffer.copyToChannel = function (src, channel) {&#xD;        var buffer = this.getChannelData(channel);&#xD;        for (i = 0; i &lt; src.length; i += 1) {&#xD;            buffer[i] = src[i];&#xD;        }&#xD;    }&#xD;}&#xD;if (channels === 1) {&#xD;    arrayBuffer.copyToChannel(Float32Array.from(samples.asArray()), 0, 0);&#xD;} else {&#xD;    for (i = 0; i &lt; channels; i += 1) {&#xD;        arrayBuffer.copyToChannel(Float32Array.from(samples.at(i + 1).asArray()), i, 0);&#xD;    }&#xD;}&#xD;source = audioCtx.createBufferSource();&#xD;source.buffer = arrayBuffer;&#xD;source.connect(audioCtx.destination);&#xD;source.start();&#xD;source.pause = source.stop;&#xD;this.parentThatIsA(StageMorph).activeSounds.push(source);</l></block><list><block var="samples"/><block var="sampleRate"/></list></block><custom-block s="plot sound %obj"><block var="samples"/></custom-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="205" 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></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></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></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="find first in %&apos;list&apos; such that %&apos;test&apos;" type="reporter" category="lists"><header></header><code></code><translations></translations><inputs><input type="%l"></input><input type="%predRing"></input></inputs><script><block s="doIf"><block s="reportEquals"><block var="list"/><block s="reportNewList"><list></list></block></block><script><custom-block s="error %s"><l>item not found in list</l></custom-block></script></block><block s="doIf"><block s="evaluate"><block var="test"/><list><block s="reportListItem"><l>1</l><block var="list"/></block></list></block><script><block s="doReport"><block s="reportListItem"><l>1</l><block var="list"/></block></block></script></block><block s="doReport"><custom-block s="find first in %l such that %predRing"><block s="reportCDR"><block var="list"/></block><block var="test"/></custom-block></block></script></block-definition><block-definition s="error %&apos;msg&apos;" type="command" category="control"><header></header><code></code><translations></translations><inputs><input type="%s"></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="sound named %&apos;name&apos;" type="reporter" category="sensing"><header></header><code></code><translations></translations><inputs><input type="%s"></input></inputs><script><block s="doReport"><custom-block s="find first in %l such that %predRing"><block s="reportGet"><l><option>sounds</option></l></block><block s="reifyPredicate"><autolambda><block s="reportEquals"><custom-block s="%s of sound %obj"><l>name</l><block var="sound"/></custom-block><block var="name"/></block></autolambda><list><l>sound</l></list></block></custom-block></block></script></block-definition><block-definition s="plot sound %&apos;sound&apos;" type="command" category="pen"><comment x="0" y="0" w="164" collapsed="false">quickly plot the samples of a sound, a list of samples (single channel), or a list of lists (multiple channels) to the stage at a lower resolution.</comment><header></header><code></code><translations></translations><inputs><input type="%obj"></input></inputs><script><block s="doDeclareVariables"><list><l>samples</l><l>step</l><l>offset</l><l>i</l><l>stage height</l></list></block><block s="doSetVar"><l>stage height</l><custom-block s="stage height"></custom-block></block><block s="doIfElse"><block s="reportIsA"><block var="sound"/><l><option>sound</option></l></block><script><block s="doSetVar"><l>samples</l><custom-block s="%s of sound %obj"><l>samples</l><block var="sound"/></custom-block></block><block s="doSetVar"><l>step</l><block s="reportQuotient"><custom-block s="%s of sound %obj"><l>length</l><block var="sound"/></custom-block><block s="reportProduct"><custom-block s="stage width"></custom-block><l>2</l></block></block></block></script><script><block s="doSetVar"><l>samples</l><block var="sound"/></block></script></block><block s="clear"></block><block s="up"></block><block s="doIfElse"><block s="reportIsA"><block s="reportListItem"><l>1</l><block var="samples"/></block><l><option>list</option></l></block><script><block s="doSetVar"><l>step</l><block s="reportQuotient"><block s="reportListAttribute"><l><option>length</option></l><block s="reportListItem"><l>1</l><block var="samples"/></block></block><block s="reportProduct"><custom-block s="stage width"></custom-block><l>2</l></block></block></block><block s="doSetVar"><l>offset</l><block s="reportQuotient"><block var="stage height"/><l>4</l></block></block><custom-block s="for each %upvar of %l %cs"><l>channel</l><block var="samples"/><script><block s="doSetVar"><l>i</l><l>0</l></block><block s="gotoXY"><block s="reportQuotient"><custom-block s="stage width"></custom-block><l>-2</l></block><block var="offset"/></block><block s="down"></block><block s="setSize"><l>1</l></block><custom-block s="turbo %cs"><script><block s="doRepeat"><block s="reportProduct"><custom-block s="stage width"></custom-block><l>2</l></block><script><block s="doChangeVar"><l>i</l><block var="step"/></block><block s="gotoXY"><block s="reportSum"><block s="xPosition"></block><l>0.5</l></block><block s="reportSum"><block s="reportProduct"><block s="reportListItem"><block s="reportMonadic"><l><option>floor</option></l><block var="i"/></block><block var="channel"/></block><block s="reportQuotient"><block var="stage height"/><l>6.4</l></block></block><block var="offset"/></block></block></script></block></script></custom-block><block s="up"></block><block s="doChangeVar"><l>offset</l><block s="reportQuotient"><custom-block s="stage height"></custom-block><l>-2</l></block></block></script></custom-block></script><script><block s="doSetVar"><l>step</l><block s="reportQuotient"><block s="reportListAttribute"><l><option>length</option></l><block var="samples"/></block><block s="reportProduct"><custom-block s="stage width"></custom-block><l>2</l></block></block></block><block s="gotoXY"><block s="reportQuotient"><custom-block s="stage width"></custom-block><l>-2</l></block><l>0</l></block><block s="down"></block><block s="setSize"><l>1</l></block><custom-block s="turbo %cs"><script><block s="doRepeat"><block s="reportProduct"><custom-block s="stage width"></custom-block><l>2</l></block><script><block s="doChangeVar"><l>i</l><block var="step"/></block><block s="gotoXY"><block s="reportSum"><block s="xPosition"></block><l>0.5</l></block><block s="reportProduct"><block s="reportListItem"><block s="reportMonadic"><l><option>floor</option></l><block var="i"/></block><block var="samples"/></block><block s="reportQuotient"><block var="stage height"/><l>3.2</l></block></block></block></script></block></script></custom-block><block s="up"></block></script></block></script></block-definition><block-definition s="stage width" type="reporter" category="sensing"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doReport"><block s="evaluate"><block s="reportJSFunction"><list></list><l>return StageMorph.prototype.dimensions.x;</l></block><list></list></block></block></script></block-definition><block-definition s="stage height" type="reporter" category="sensing"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doReport"><block s="evaluate"><block s="reportJSFunction"><list></list><l>return StageMorph.prototype.dimensions.y;</l></block><list></list></block></block></script></block-definition><block-definition s="$circleSolid-1-255-0-0 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></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="loudness" type="reporter" category="sensing"><header></header><code></code><translations>ca:volum del so&#xD;es:volumen del sonido&#xD;</translations><inputs></inputs><script><block s="doIf"><block s="evaluate"><block s="reportJSFunction"><list></list><l>return typeof meter == &apos;undefined&apos;</l></block><list></list></block><script><block s="doRun"><block s="reportJSFunction"><list></list><l>navigator.getUserMedia = ( navigator.getUserMedia ||&#xD;                       navigator.webkitGetUserMedia ||&#xD;                       navigator.mozGetUserMedia ||&#xD;                       navigator.msGetUserMedia);&#xD;&#xD;var audioContext = new AudioContext();&#xD;&#xD;/*&#xD;The MIT License (MIT)&#xD;&#xD;Copyright (c) 2014 Chris Wilson&#xD;&#xD;Permission is hereby granted, free of charge, to any person obtaining a copy&#xD;of this software and associated documentation files (the "Software"), to deal&#xD;in the Software without restriction, including without limitation the rights&#xD;to use, copy, modify, merge, publish, distribute, sublicense, and/or sell&#xD;copies of the Software, and to permit persons to whom the Software is&#xD;furnished to do so, subject to the following conditions:&#xD;&#xD;The above copyright notice and this permission notice shall be included in all&#xD;copies or substantial portions of the Software.&#xD;&#xD;THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR&#xD;IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,&#xD;FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE&#xD;AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER&#xD;LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,&#xD;OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE&#xD;SOFTWARE.&#xD;*/&#xD;&#xD;function createAudioMeter (audioContext,clipLevel,averaging,clipLag) {&#xD;	 var processor = audioContext.createScriptProcessor(512);&#xD;	 processor.onaudioprocess = volumeAudioProcess;&#xD;	 processor.clipping = false;&#xD;	 processor.lastClip = 0;&#xD;	 processor.volume = 0;&#xD;	 processor.clipLevel = clipLevel || 0.98;&#xD;	 processor.averaging = averaging || 0.95;&#xD;	 processor.clipLag = clipLag || 750;&#xD; 	processor.connect(audioContext.destination);&#xD; 	return processor;&#xD;};&#xD;&#xD;function volumeAudioProcess (event) {&#xD;  var buf = event.inputBuffer.getChannelData(0),&#xD;      bufLength = buf.length,&#xD; 	    sum = 0,&#xD;      x;&#xD;  for (var i=0; i&lt;bufLength; i++) {&#xD;   	x = buf[i];&#xD;   	if (Math.abs(x)&gt;=this.clipLevel) {&#xD;    		this.clipping = true;&#xD;    		this.lastClip = window.performance.now();&#xD;   	}&#xD;   	sum += x * x;&#xD;  }&#xD;  var rms =  Math.sqrt(sum / bufLength);&#xD;  this.volume = Math.max(rms, this.volume*this.averaging);&#xD;};&#xD;&#xD;function gotStream (stream) {&#xD;  mediaStreamSource = audioContext.createMediaStreamSource(stream);&#xD;  window.meter = createAudioMeter(audioContext);&#xD;  mediaStreamSource.connect(meter);&#xD;};&#xD;&#xD;navigator.getUserMedia(&#xD;  {&#xD;    "audio": {&#xD;      "mandatory": {&#xD;        "googEchoCancellation": "false",&#xD;        "googAutoGainControl": "false",&#xD;        "googNoiseSuppression": "false",&#xD;        "googHighpassFilter": "false"&#xD;      },&#xD;      "optional": []&#xD;    },&#xD;  }, gotStream, nop);</l></block><list></list></block></script></block><block s="doWaitUntil"><block s="evaluate"><block s="reportJSFunction"><list></list><l>return typeof meter != &apos;undefined&apos;</l></block><list></list></block></block><block s="doReport"><block s="evaluate"><block s="reportJSFunction"><list></list><l>return Math.floor(meter.volume * 100);</l></block><list></list></block></block></script></block-definition><block-definition s="$flash map %&apos;fn&apos; over %&apos;data&apos;" type="reporter" category="lists"><header></header><code></code><translations></translations><inputs><input type="%repRing"></input><input type="%l"></input></inputs><script><block s="doReport"><block s="evaluate"><block s="reportJSFunction"><list><l>fn</l><l>data</l><l>proc</l></list><l>return proc.reportAtomicMap(fn, data);</l></block><list><block var="fn"/><block var="data"/></list></block></block></script></block-definition><block-definition s="$flash keep %&apos;test&apos; from %&apos;data&apos;" type="reporter" category="lists"><header></header><code></code><translations></translations><inputs><input type="%predRing"></input><input type="%l"></input></inputs><script><block s="doReport"><block s="evaluate"><block s="reportJSFunction"><list><l>fn</l><l>data</l><l>proc</l></list><l>return proc.reportAtomicKeep(fn, data);</l></block><list><block var="test"/><block var="data"/></list></block></block></script></block-definition><block-definition s="$flash combine %&apos;fn&apos; with %&apos;data&apos;" type="reporter" category="lists"><header></header><code></code><translations></translations><inputs><input type="%repRing"></input><input type="%l"></input></inputs><script><block s="doReport"><block s="evaluate"><block s="reportJSFunction"><list><l>fn</l><l>data</l><l>proc</l></list><l>return proc.reportAtomicCombine(fn, data);</l></block><list><block var="fn"/><block var="data"/></list></block></block></script></block-definition><block-definition s="$flash sort %&apos;data&apos; by %&apos;fn&apos;" type="reporter" category="lists"><header></header><code></code><translations></translations><inputs><input type="%l"></input><input type="%predRing"></input></inputs><script><block s="doReport"><block s="evaluate"><block s="reportJSFunction"><list><l>data</l><l>fn</l><l>proc</l></list><l>return proc.reportAtomicSort(data, fn);</l></block><list><block var="data"/><block var="fn"/></list></block></block></script></block-definition><block-definition s="$flash reverse %&apos;list&apos;" type="reporter" category="lists"><header></header><code></code><translations></translations><inputs><input type="%l"></input></inputs><script><block s="doReport"><block s="evaluate"><block s="reportJSFunction"><list><l>list</l></list><l>return new List(list.asArray().slice().reverse());</l></block><list><block var="list"/></list></block></block></script></block-definition><block-definition s="Leap number of hands" type="reporter" category="other"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doReport"><block s="evaluate"><block s="reportJSFunction"><list></list><l>return window.controller.frame(0).hands.length;</l></block><list></list></block></block></script></block-definition><block-definition s="Leap %&apos;pos&apos; position of hand %&apos;num&apos;" type="reporter" category="other"><header></header><code></code><translations></translations><inputs><input type="%txt" readonly="true">x<options>x&#xD;y&#xD;z</options></input><input type="%n">1</input></inputs><script><block s="doDeclareVariables"><list><l>a</l></list></block><block s="doIfElse"><block s="reportNot"><block s="reportGreaterThan"><block var="num"/><custom-block s="Leap number of hands"></custom-block></block></block><script><block s="doReport"><block s="evaluate"><block s="reportJSFunction"><list><l>pos</l><l>num</l></list><l>var a = {x:0, y:1, z:2}[pos]; return window.controller.frame(0).hands[num-1].stabilizedPalmPosition[a];</l></block><list><block var="pos"/><block var="num"/></list></block></block></script><script><block s="doReport"><l>0</l></block></script></block></script></block-definition><block-definition s="Leap %&apos;pos&apos; rotation of hand %&apos;num&apos;" type="reporter" category="other"><header></header><code></code><translations></translations><inputs><input type="%txt" readonly="true">yaw<options>yaw&#xD;pitch&#xD;roll</options></input><input type="%n">1</input></inputs><script><block s="doIfElse"><block s="reportNot"><block s="reportGreaterThan"><block var="num"/><custom-block s="Leap number of hands"></custom-block></block></block><script><block s="doReport"><block s="evaluate"><block s="reportJSFunction"><list><l>pos</l><l>num</l></list><l>var f = window.controller.frame(0);&#xD;switch (pos){&#xD;  case "yaw":&#xD;    return f.hands[num-1].yaw();&#xD;  case "pitch":&#xD;    return f.hands[num-1].pitch();&#xD;  case "roll":&#xD;    return f.hands[num-1].roll();&#xD;};&#xD;            &#xD;        </l></block><list><block var="pos"/><block var="num"/></list></block></block></script><script><block s="doReport"><l>0</l></block></script></block></script></block-definition><block-definition s="Leap %&apos;pos&apos; position of finger %&apos;num&apos;" type="reporter" category="other"><header></header><code></code><translations></translations><inputs><input type="%txt" readonly="true">x<options>x&#xD;y&#xD;z</options></input><input type="%n">1</input></inputs><script><block s="doIfElse"><block s="reportNot"><block s="reportGreaterThan"><block var="num"/><block s="evaluate"><block s="reportJSFunction"><list></list><l>return window.controller.frame(0).fingers.length;</l></block><list></list></block></block></block><script><block s="doReport"><block s="evaluate"><block s="reportJSFunction"><list><l>pos</l><l>num</l></list><l>var a = {x:0, y:1, z:2}[pos]; return window.controller.frame(0).fingers[num-1].stabilizedTipPosition[a];</l></block><list><block var="pos"/><block var="num"/></list></block></block></script><script><block s="doReport"><l>0</l></block></script></block></script></block-definition><block-definition s="Leap hand %&apos;num&apos; is pinching" type="predicate" category="other"><header></header><code></code><translations></translations><inputs><input type="%s">1</input></inputs><script><block s="doIfElse"><block s="reportNot"><block s="reportGreaterThan"><block var="num"/><custom-block s="Leap number of hands"></custom-block></block></block><script><block s="doReport"><block s="reportGreaterThan"><block s="evaluate"><block s="reportJSFunction"><list><l>num</l></list><l>return window.controller.frame(0).hands[num-1].pinchStrength;</l></block><list><block var="num"/></list></block><l>0.75</l></block></block></script><script><block s="doReport"><block s="reportBoolean"><l><bool>false</bool></l></block></block></script></block></script></block-definition><block-definition s="Leap pinch strength of hand %&apos;num&apos;" type="reporter" category="other"><header></header><code></code><translations></translations><inputs><input type="%n">1</input></inputs><script><block s="doIfElse"><block s="reportNot"><block s="reportGreaterThan"><block var="num"/><custom-block s="Leap number of hands"></custom-block></block></block><script><block s="doReport"><block s="reportProduct"><block s="evaluate"><block s="reportJSFunction"><list><l>num</l></list><l>return window.controller.frame(0).hands[num-1].pinchStrength;</l></block><list><block var="num"/></list></block><l>100</l></block></block></script><script><block s="doReport"><l>0</l></block></script></block></script></block-definition><block-definition s="Leap $flag" type="command" category="other"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doIf"><block s="evaluate"><block s="reportJSFunction"><list></list><l>return window.controller !== undefined</l></block><list></list></block><script><block s="doStopThis"><l><option>this block</option></l></block></script></block><block s="doDeclareVariables"><list><l>test</l></list></block><block s="doSetVar"><l>test</l><block s="evaluate"><block s="reportJSFunction"><list></list><l>var leapScript,&#xD;    done = false;&#xD;leapScript = document.createElement(&apos;script&apos;),&#xD;leapScript.onload = function () {&#xD;    done = true;&#xD;    console.log(&apos;leap is ready&apos;);&#xD;};&#xD;document.head.appendChild(leapScript);&#xD;leapScript.src = &apos;https://js.leapmotion.com/leap-0.6.4.min.js&apos;;&#xD;return function () {return done; }</l></block><list></list></block></block><block s="doWaitUntil"><block s="evaluate"><block var="test"/><list></list></block></block><block s="doRun"><block s="reportJSFunction"><list></list><l>window.controller = new Leap.Controller({enableGestures: true, background: true}); window.controller.connect();</l></block><list></list></block></script></block-definition><block-definition s="square %&apos;side&apos;" type="command" category="motion"><header></header><code></code><translations></translations><inputs><input type="%s"></input></inputs><script><block s="doRepeat"><l>4</l><script><block s="forward"><block var="side"/></block><block s="turn"><l>90</l></block></script></block></script></block-definition><block-definition s="polygon corner: %&apos;corner&apos; side: %&apos;side&apos;" type="command" category="motion"><header></header><code></code><translations></translations><inputs><input type="%s"></input><input type="%s"></input></inputs><script><block s="doRepeat"><block var="corner"/><script><block s="forward"><block var="side"/></block><block s="turn"><l>45</l></block></script></block></script><scripts><script x="186.7744160625" y="106.000002"><block s="reportQuotient"><l></l><l></l></block></script></scripts></block-definition><block-definition s="label %&apos;text&apos; of size %&apos;size&apos;" type="command" category="pen"><comment x="0" y="0" w="90" collapsed="false">LABEL will stamp text on the stage at the given font size. The direction of the text is the direction the sprite is facing, and color will match the pen color.</comment><header></header><code></code><translations>de:drucke _ in Größe _&#xD;ca:etiqueta _ de mida _&#xD;es:etiqueta _ de tamaño _&#xD;fr:étiquette _ d&apos;une taille de _&#xD;</translations><inputs><input type="%txt">Hello!</input><input type="%n">12</input></inputs><script><block s="doRun"><block s="reportJSFunction"><list><l>text</l><l>size</l></list><l>var stage = this.parentThatIsA(StageMorph),&#xD;    context = stage.penTrails().getContext(&apos;2d&apos;),&#xD;    rotation = radians(this.direction() - 90),&#xD;    trans = new Point(&#xD;      this.center().x - stage.left(),&#xD;      this.center().y - stage.top()&#xD;    ),&#xD;    isWarped = this.Warped,&#xD;    len,&#xD;    pos;&#xD;&#xD;if (isWarped) {endWarp(); }&#xD;context.save();&#xD;context.font = size + &apos;px monospace&apos;;&#xD;context.textAlign = &apos;left&apos;;&#xD;context.textBaseline = &apos;alphabetic&apos;;&#xD;context.fillStyle = this.color.toString();&#xD;len = context.measureText(text).width;&#xD;trans = trans.multiplyBy(1 / stage.scale);&#xD;context.translate(trans.x, trans.y);&#xD;context.rotate(rotation);&#xD;context.fillText(text, 0, 0);&#xD;context.translate(-trans.x, -trans.y);&#xD;context.restore();&#xD;pos = new Point(&#xD;  len * Math.sin(radians(this.direction())),&#xD;  len * Math.cos(radians(this.direction())));&#xD;pos = pos.add(new Point(this.xPosition(), this.yPosition()));&#xD;this.gotoXY(pos.x, pos.y, false);&#xD;this.changed();&#xD;if (isWarped) {this.startWarp(); }&#xD;stage.changed();</l></block><list><block var="text"/><block var="size"/></list></block></script></block-definition><block-definition s="empty? %&apos;data&apos;" type="predicate" category="lists"><header></header><code></code><translations>de:ist _ leer?&#xD;ca:_ buida?&#xD;es:_ vacía?&#xD;fr:_ vide?&#xD;</translations><inputs><input type="%l"></input></inputs><script><block s="doReport"><block s="reportEquals"><block var="data"/><block s="reportNewList"><list></list></block></block></block></script></block-definition><block-definition s="keep items such that %&apos;pred&apos; from %&apos;data&apos;" type="reporter" category="lists"><header></header><code></code><translations>de:behalte Elemente, die _ aus _&#xD;ca:manté els elements on _ de _&#xD;es:mantener los elementos donde _ de _&#xD;fr:garder les items tels que _ de _&#xD;</translations><inputs><input type="%predRing"></input><input type="%l"></input></inputs><script><block s="doIf"><custom-block s="empty? %l"><block var="data"/></custom-block><script><block s="doReport"><block s="reportNewList"><list></list></block></block></script></block><block s="doIfElse"><block s="evaluate"><block var="pred"/><list><block s="reportListItem"><l>1</l><block var="data"/></block></list></block><script><block s="doReport"><block s="reportCONS"><block s="reportListItem"><l>1</l><block var="data"/></block><custom-block s="keep items such that %predRing from %l"><block var="pred"/><block s="reportCDR"><block var="data"/></block></custom-block></block></block></script><script><block s="doReport"><custom-block s="keep items such that %predRing from %l"><block var="pred"/><block s="reportCDR"><block var="data"/></block></custom-block></block></script></block></script></block-definition><block-definition s="combine with %&apos;function&apos; items of %&apos;data&apos;" type="reporter" category="lists"><header></header><code></code><translations>de:kombiniere mit _ die Elemente von _&#xD;ca:combina amb _ els elements de _&#xD;es:combinar con _ los elementos de _&#xD;fr:combine avec _ les items de _&#xD;</translations><inputs><input type="%repRing"></input><input type="%l"></input></inputs><script><block s="doIf"><custom-block s="empty? %l"><block s="reportCDR"><block var="data"/></block></custom-block><script><block s="doReport"><block s="reportListItem"><l>1</l><block var="data"/></block></block></script></block><block s="doReport"><block s="evaluate"><block var="function"/><list><block s="reportListItem"><l>1</l><block var="data"/></block><custom-block s="combine with %repRing items of %l"><block var="function"/><block s="reportCDR"><block var="data"/></block></custom-block></list></block></block></script></block-definition><block-definition s="if %&apos;test&apos; then %&apos;true&apos; else %&apos;false&apos;" type="reporter" category="control"><header></header><code></code><translations>de:wenn _ dann _ sonst _&#xD;ca:si _ llavors _ si no _&#xD;es:si _ entonces _ sino _&#xD;fr:si _ alors _ sinon _&#xD;</translations><inputs><input type="%b"></input><input type="%anyUE"></input><input type="%anyUE"></input></inputs><script><block s="doIfElse"><block var="test"/><script><block s="doReport"><block s="evaluate"><block var="true"/><list></list></block></block></script><script><block s="doReport"><block s="evaluate"><block var="false"/><list></list></block></block></script></block></script></block-definition><block-definition s="for %&apos;i&apos; = %&apos;start&apos; to %&apos;end&apos; %&apos;action&apos;" type="command" category="control"><header></header><code></code><translations>de:für _ = _ bis _ _&#xD;ca:per _ = _ fins _ _&#xD;es:para _ = _ hasta _ _&#xD;fr:pour _ allant de _ à _ _&#xD;</translations><inputs><input type="%upvar"></input><input type="%n">1</input><input type="%n">10</input><input type="%cs"></input></inputs><script><block s="doDeclareVariables"><list><l>step</l><l>tester</l></list></block><block s="doIfElse"><block s="reportGreaterThan"><block var="start"/><block var="end"/></block><script><block s="doSetVar"><l>step</l><l>-1</l></block><block s="doSetVar"><l>tester</l><block s="reifyReporter"><autolambda><block s="reportLessThan"><block var="i"/><block var="end"/></block></autolambda><list></list></block></block></script><script><block s="doSetVar"><l>step</l><l>1</l></block><block s="doSetVar"><l>tester</l><block s="reifyReporter"><autolambda><block s="reportGreaterThan"><block var="i"/><block var="end"/></block></autolambda><list></list></block></block></script></block><block s="doSetVar"><l>i</l><block var="start"/></block><block s="doUntil"><block s="evaluate"><block var="tester"/><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="join words %&apos;words&apos;" type="reporter" category="operators"><header></header><code></code><translations>de:füge Wörter zusammen _&#xD;ca:uneix les paraules _&#xD;es:unir las palabras _&#xD;fr:fusionne les mots _&#xD;</translations><inputs><input type="%mult%txt"></input></inputs><script><block s="doIf"><custom-block s="empty? %l"><block s="reportCDR"><block var="words"/></block></custom-block><script><block s="doReport"><block s="reportListItem"><l>1</l><block var="words"/></block></block></script></block><block s="doIf"><block s="reportEquals"><l></l><block s="reportListItem"><l>1</l><block var="words"/></block></block><script><block s="doReport"><custom-block s="join words %mult%txt"><block s="reportCDR"><block var="words"/></block></custom-block></block></script></block><block s="doIf"><block s="reportEquals"><l></l><block s="reportListItem"><l>2</l><block var="words"/></block></block><script><block s="doReport"><custom-block s="join words %mult%txt"><block s="reportCONS"><block s="reportListItem"><l>1</l><block var="words"/></block><block s="reportCDR"><block s="reportCDR"><block var="words"/></block></block></block></custom-block></block></script></block><block s="doReport"><block s="reportJoinWords"><list><block s="reportListItem"><l>1</l><block var="words"/></block><l> </l><custom-block s="join words %mult%txt"><block s="reportCDR"><block var="words"/></block></custom-block></list></block></block></script></block-definition><block-definition s="list $arrowRight sentence %&apos;data&apos;" type="reporter" category="operators"><header></header><code></code><translations>de:Liste $arrowRight Satz _&#xD;ca:llista $arrowRight frase _&#xD;es:lista $arrowRight frase _&#xD;fr:liste $arrowRight phrase _&#xD;</translations><inputs><input type="%l"></input></inputs><script><block s="doReport"><custom-block s="join words %mult%txt"><block var="data"/></custom-block></block></script></block-definition><block-definition s="sentence $arrowRight list %&apos;text&apos;" type="reporter" category="operators"><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;</translations><inputs><input type="%txt"></input></inputs><script><block s="doReport"><block s="reportTextSplit"><block var="text"/><l><option>whitespace</option></l></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;</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;</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;</translations><inputs><input type="%upvar"></input><input type="%anyUE"></input></inputs><script><block s="doCallCC"><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></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;</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="for each %&apos;item&apos; of %&apos;data&apos; %&apos;action&apos;" type="command" category="lists"><header></header><code></code><translations>de:für jedes _ von _ _&#xD;ca:per cada _ de _ _&#xD;es:para cada _ de _ _&#xD;fr:pour chaque _ de _ _&#xD;</translations><inputs><input type="%upvar"></input><input type="%l"></input><input type="%cs"></input></inputs><script><block s="doUntil"><custom-block s="empty? %l"><block var="data"/></custom-block><script><block s="doSetVar"><l>item</l><block s="reportListItem"><l>1</l><block var="data"/></block></block><block s="doRun"><block var="action"/><list><block s="reportListItem"><l>1</l><block var="data"/></block></list></block><block s="doSetVar"><l>data</l><block s="reportCDR"><block var="data"/></block></block></script></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"><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;</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></block></script></block-definition><block-definition s="word $arrowRight list %&apos;word&apos;" type="reporter" category="operators"><header></header><code></code><translations>de:Wort $arrowRight Liste _&#xD;ca:paraula $arrowRight llista _&#xD;es:palabra $arrowRight lista _&#xD;fr:mot $arrowRight liste _&#xD;</translations><inputs><input type="%txt"></input></inputs><script><block s="doReport"><block s="reportTextSplit"><block var="word"/><l><option>letter</option></l></block></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;</translations><inputs><input type="%s"></input></inputs></block-definition><block-definition s="list $arrowRight word %&apos;list&apos;" type="reporter" category="operators"><header></header><code></code><translations>de:Liste $arrowRight Wort _&#xD;ca:llista $arrowRight paraula _&#xD;es:lista $arrowRight palabra _&#xD;fr:liste $arrowRight mot _&#xD;</translations><inputs><input type="%l"></input></inputs><script><block s="doReport"><block s="reportJoinWords"><block var="list"/></block></block></script></block-definition><block-definition s="%&apos;x&apos;" type="reporter" category="operators"><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="numbers from %&apos;from&apos; to %&apos;to&apos;" type="reporter" category="lists"><header></header><code></code><translations>de:Zahlen von _ bis _&#xD;ca:nombres des de _ a _&#xD;es:números de _ a _&#xD;fr:nombres de _ à _&#xD;</translations><inputs><input type="%n">1</input><input type="%n">10</input></inputs><script><block s="doIf"><block s="reportGreaterThan"><block var="from"/><block var="to"/></block><script><block s="doReport"><block s="reportNewList"><list></list></block></block></script></block><block s="doReport"><block s="reportCONS"><block var="from"/><custom-block s="numbers from %n to %n"><block s="reportSum"><block var="from"/><l>1</l></block><block var="to"/></custom-block></block></block></script></block-definition><block-definition s="map %&apos;func&apos; over %&apos;data&apos;" type="reporter" category="lists"><header></header><code></code><translations>de:wende _ an auf _&#xD;ca:mapeja _ sobre _&#xD;es:mapear _ sobre _&#xD;fr:appliquer _ à _&#xD;</translations><inputs><input type="%repRing"></input><input type="%l"></input></inputs><script><block s="doIf"><custom-block s="empty? %l"><block var="data"/></custom-block><script><block s="doReport"><block var="data"/></block></script></block><block s="doReport"><block s="reportCONS"><block s="evaluate"><block var="func"/><list><block s="reportListItem"><l>1</l><block var="data"/></block></list></block><custom-block s="map %repRing over %l"><block var="func"/><block s="reportCDR"><block var="data"/></block></custom-block></block></block></script></block-definition></blocks><variables><variable name="a"><l>55.15000000000132</l></variable><variable name="b"><l>50</l></variable></variables></project><media name="digi4all-L1-turtle-art1" app="Snap! 6, https://snap.berkeley.edu" version="1"></media></snapdata>