<snapdata remixID="9328499"><project name="5.2 Cybersecurity: Caesar Cipher" app="Snap! 5.4, http://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" codify="false" inheritance="true" sublistIDs="false" scheduled="false" id="1"><pentrails>data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAeAAAAFoCAYAAACPNyggAAAOhUlEQVR4Xu3VwQkAAAjEMN1/abewn7jAQRC64wgQIECAAIF3gX1fNEiAAAECBAiMAHsCAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQIHLFxAWmhEwHPAAAAAElFTkSuQmCC</pentrails><costumes><list struct="atomic" id="2"></list></costumes><sounds><list struct="atomic" id="3"></list></sounds><variables></variables><blocks></blocks><scripts></scripts><sprites><sprite name="Sprite" idx="1" x="64.02107913552842" y="58.10481462950111" heading="90" scale="1" volume="100" pan="0" rotation="1" draggable="true" costume="0" color="80,80,80,1" pen="tip" id="8"><costumes><list struct="atomic" id="9"></list></costumes><sounds><list struct="atomic" id="10"></list></sounds><blocks></blocks><variables></variables><scripts><script x="218" y="411.000003"><block s="receiveGo"></block><block s="doSetVar"><l>encoded message</l><l>0</l></block><block s="doSetVar"><l>decoded message</l><l>0</l></block><block s="doSetVar"><l>answer 1</l><l>0</l></block><block s="doSetVar"><l>answer 2</l><l>0</l></block><block s="doAsk"><l>do you want to encode or decode your message?</l></block><block s="doIf"><block s="reportEquals"><block s="getLastAnswer"></block><l>encode</l></block><script><custom-block s="encoded message"></custom-block></script></block><block s="doIf"><block s="reportEquals"><block s="getLastAnswer"></block><l>decode</l></block><script><custom-block s="decoded message"></custom-block></script></block></script><script x="568" y="360"><block s="receiveGo"></block><block s="doSetVar"><l>encoded message</l><block s="reportNewList"><list></list></block></block><block s="doAsk"><l>what word do you want to encode?</l></block><block s="doForEach"><l>letter</l><block s="reportTextSplit"><block s="getLastAnswer"></block><l><option>letter</option></l></block><script><block s="doAddToList"><custom-block s="shift letter %s number %s spaces"><block var="letter"/><l>2</l></custom-block><block var="encoded message"/></block></script></block><block s="doSayFor"><custom-block s="list $arrowRight sentence %l"><block var="encoded message"/></custom-block><l>4</l></block></script><script x="662.5498056875" y="149.000001"><custom-block s="shift letter: %s number of spaces: %s"><l></l><l></l></custom-block></script><script x="510" y="30.99999999999997"><block s="doDeclareVariables"><list><l>a</l></list></block></script><script x="157" y="26"><block s="receiveGo"></block><block s="doSayFor"><l>Hello I will tell you the unicode characters for your name.</l><l>2</l></block><block s="doAsk"><l>what&apos;s your name?</l></block><block s="doFor"><l>i</l><l>1</l><block s="reportStringSize"><block s="getLastAnswer"></block></block><script><block s="doSayFor"><custom-block s="join words %mult%txt"><list><block s="reportLetter"><block var="i"/><block s="getLastAnswer"></block></block><l>is</l><block s="reportUnicode"><block s="reportLetter"><block var="i"/><block s="getLastAnswer"></block></block></block></list></custom-block><l>2</l></block></script></block></script><script x="151" y="243"><block s="receiveGo"></block><block s="doSetVar"><l>decoded message</l><block s="reportNewList"><list></list></block></block><block s="doAsk"><l>what word do you want to decode?</l></block><block s="doForEach"><l>letter</l><block s="reportTextSplit"><block s="getLastAnswer"></block><l><option>letter</option></l></block><script><block s="doAddToList"><custom-block s="shift letter %s number %s spaces"><block var="letter"/><l>-2</l></custom-block><block var="decoded message"/></block></script></block><block s="doSayFor"><custom-block s="list $arrowRight sentence %l"><block var="decoded message"/></custom-block><l>4</l></block></script><script x="10" y="200"><custom-block s="all but first word of %txt"><l></l></custom-block></script><script x="685" y="263"><custom-block s="encode letter %s shift %s"><l></l><l></l></custom-block></script><script x="704" y="311"><custom-block s="decode one text %s %s"><l></l><l></l></custom-block></script></scripts></sprite><watcher var="encoded message" style="normal" x="2.6891059027778965" y="19.63047470374135" color="243,118,29" extX="80" extY="70.00000000000009"/><watcher var="answer 1" style="normal" x="2.6891059027778965" y="25.27759763739583" color="243,118,29"/><watcher var="answer 2" style="normal" x="2.6891059027778965" y="30.924720571050344" color="243,118,29"/><watcher var="decoded message" style="normal" x="2.6891059027778965" y="36.5718435047049" color="243,118,29" extX="80" extY="70.00000000000001"/></sprites></stage><hidden></hidden><headers></headers><code></code><blocks><block-definition s="shift letter %&apos;letter&apos; number %&apos;number&apos; spaces" 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="reportUnicodeAsLetter"><block s="reportSum"><block s="reportUnicode"><block var="letter"/></block><block var="number"/></block></block></block></script></block-definition><block-definition s="output" type="command" category="other"><header></header><code></code><translations></translations><inputs></inputs></block-definition><block-definition s="all but first letter of %&apos;string&apos;" type="reporter" category="operators"><comment x="0" y="0" w="199" collapsed="false">Takes a text string as input, and reports a new text string containing all but the first character of the input.</comment><header></header><code></code><translations>pt:_ sem o primeiro caractere&#xD;</translations><inputs><input type="%txt"></input></inputs><script><block s="doDeclareVariables"><list><l>result</l><l>i</l></list></block><block s="doWarp"><script><block s="doIf"><block s="reportEquals"><block s="reportStringSize"><block var="string"/></block><l>0</l></block><script><block s="doReport"><block s="reportListItem"><l>1</l><block s="reportSum"><l>0</l><l>0</l></block></block></block></script></block><block s="doSetVar"><l>result</l><l></l></block><block s="doSetVar"><l>i</l><l>2</l></block><block s="doUntil"><block s="reportGreaterThan"><block var="i"/><block s="reportStringSize"><block var="string"/></block></block><script><block s="doSetVar"><l>result</l><block s="reportJoinWords"><list><block var="result"/><block s="reportLetter"><block var="i"/><block var="string"/></block></list></block></block><block s="doChangeVar"><l>i</l><l>1</l></block></script></block><block s="doReport"><block var="result"/></block></script></block></script></block-definition><block-definition s="all but first word of %&apos;sentence&apos;" type="reporter" category="operators"><comment x="0" y="0" w="223.000001" collapsed="false">Takes a text string as input, divides it into words treating one or more spaces as a word separator (only spaces count; punctuation is part of the word) and reports a text string containing all but the first word, with one space between words and no spaces at the beginning or end. (Note: consider using SENTENCE-&gt;LIST and processing the resulting list instead of doing recursion on sentences in text string form.  List operations are faster.)</comment><header></header><code></code><translations>pt:_ sem a primeira palavra&#xD;</translations><inputs><input type="%txt"></input></inputs><script><block s="doDeclareVariables"><list><l>index</l><l>bf</l></list></block><block s="doWarp"><script><block s="doSetVar"><l>bf</l><l></l></block><block s="doSetVar"><l>index</l><l>1</l></block><block s="doIf"><block s="reportEquals"><block s="reportStringSize"><block var="sentence"/></block><l>0</l></block><script><block s="doReport"><block s="reportListItem"><l>1</l><block s="reportJoinWords"><list><l>empty </l><l>sentence</l></list></block></block></block></script></block><block s="doUntil"><block s="reportOr"><block s="reportEquals"><block var="index"/><block s="reportStringSize"><block var="sentence"/></block></block><block s="reportNot"><block s="reportEquals"><block s="reportLetter"><block var="index"/><block var="sentence"/></block><l> </l></block></block></block><script><block s="doChangeVar"><l>index</l><l>1</l></block></script></block><block s="doIf"><block s="reportEquals"><block s="reportLetter"><block var="index"/><block var="sentence"/></block><l> </l></block><script><block s="doReport"><block s="reportListItem"><l>1</l><block s="reportJoinWords"><list><l>empty </l><l>sentence</l></list></block></block></block></script></block><block s="doUntil"><block s="reportOr"><block s="reportEquals"><block var="index"/><block s="reportStringSize"><block var="sentence"/></block></block><block s="reportEquals"><block s="reportLetter"><block var="index"/><block var="sentence"/></block><l> </l></block></block><script><block s="doChangeVar"><l>index</l><l>1</l></block></script></block><block s="doIf"><block s="reportEquals"><block var="index"/><block s="reportStringSize"><block var="sentence"/></block></block><script><block s="doReport"><l></l></block></script></block><block s="doUntil"><block s="reportOr"><block s="reportEquals"><block var="index"/><block s="reportStringSize"><block var="sentence"/></block></block><block s="reportNot"><block s="reportEquals"><block s="reportLetter"><block var="index"/><block var="sentence"/></block><l> </l></block></block></block><script><block s="doChangeVar"><l>index</l><l>1</l></block></script></block><block s="doIf"><block s="reportEquals"><block s="reportLetter"><block var="index"/><block var="sentence"/></block><l> </l></block><script><block s="doReport"><l></l></block></script></block><block s="doUntil"><block s="reportGreaterThan"><block var="index"/><block s="reportStringSize"><block var="sentence"/></block></block><script><block s="doSetVar"><l>bf</l><block s="reportJoinWords"><list><block var="bf"/><block s="reportLetter"><block var="index"/><block var="sentence"/></block></list></block></block><block s="doChangeVar"><l>index</l><l>1</l></block></script></block><block s="doReport"><block var="bf"/></block></script></block></script></block-definition><block-definition s="all but last letter of %&apos;string&apos;" type="reporter" category="operators"><comment x="0" y="0" w="218" collapsed="false">Takes a text string as input, and reports a new text string containing all but the last letter of the input.</comment><header></header><code></code><translations>pt:_ sem o último caractere&#xD;</translations><inputs><input type="%txt"></input></inputs><script><block s="doDeclareVariables"><list><l>result</l><l>i</l></list></block><block s="doWarp"><script><block s="doIf"><block s="reportEquals"><block s="reportStringSize"><block var="string"/></block><l>0</l></block><script><block s="doReport"><block s="reportListItem"><l>1</l><block s="reportSum"><l>0</l><l>0</l></block></block></block></script></block><block s="doSetVar"><l>result</l><l></l></block><block s="doSetVar"><l>i</l><l>1</l></block><block s="doUntil"><block s="reportEquals"><block var="i"/><block s="reportStringSize"><block var="string"/></block></block><script><block s="doSetVar"><l>result</l><block s="reportJoinWords"><list><block var="result"/><block s="reportLetter"><block var="i"/><block var="string"/></block></list></block></block><block s="doChangeVar"><l>i</l><l>1</l></block></script></block><block s="doReport"><block var="result"/></block></script></block></script></block-definition><block-definition s="all but last word of %&apos;sentence&apos;" type="reporter" category="operators"><comment x="0" y="0" w="211.99999999999997" collapsed="false">Takes a text string as input, divides it into words treating one or more spaces as a word separator (only spaces count; punctuation is part of the word) and reports a text string containing all but the last word, with one space between words and no spaces at the beginning or end.  (Note: consider using SENTENCE-&gt;LIST and processing the resulting list instead of doing recursion on sentences in text string form.  List operations are faster.)</comment><header></header><code></code><translations>pt:_ sem a última palavra&#xD;</translations><inputs><input type="%txt"></input></inputs><script><block s="doDeclareVariables"><list><l>index</l><l>bl</l></list></block><block s="doWarp"><script><block s="doSetVar"><l>bl</l><l></l></block><block s="doSetVar"><l>index</l><block s="reportStringSize"><block var="sentence"/></block></block><block s="doIf"><block s="reportEquals"><block s="reportStringSize"><block var="sentence"/></block><l>0</l></block><script><block s="doReport"><block s="reportListItem"><l>1</l><block s="reportJoinWords"><list><l>empty </l><l>sentence</l></list></block></block></block></script></block><block s="doUntil"><block s="reportOr"><block s="reportEquals"><block var="index"/><l>1</l></block><block s="reportNot"><block s="reportEquals"><block s="reportLetter"><block var="index"/><block var="sentence"/></block><l> </l></block></block></block><script><block s="doChangeVar"><l>index</l><l>-1</l></block></script></block><block s="doIf"><block s="reportEquals"><block s="reportLetter"><block var="index"/><block var="sentence"/></block><l> </l></block><script><block s="doReport"><block s="reportListItem"><l>1</l><block s="reportJoinWords"><list><l>empty </l><l>sentence</l></list></block></block></block></script></block><block s="doUntil"><block s="reportOr"><block s="reportEquals"><block var="index"/><l>1</l></block><block s="reportEquals"><block s="reportLetter"><block var="index"/><block var="sentence"/></block><l> </l></block></block><script><block s="doChangeVar"><l>index</l><l>-1</l></block></script></block><block s="doIf"><block s="reportEquals"><block var="index"/><l>1</l></block><script><block s="doReport"><l></l></block></script></block><block s="doUntil"><block s="reportOr"><block s="reportEquals"><block var="index"/><l>1</l></block><block s="reportNot"><block s="reportEquals"><block s="reportLetter"><block var="index"/><block var="sentence"/></block><l> </l></block></block></block><script><block s="doChangeVar"><l>index</l><l>-1</l></block></script></block><block s="doIf"><block s="reportEquals"><block s="reportLetter"><block var="index"/><block var="sentence"/></block><l> </l></block><script><block s="doReport"><l></l></block></script></block><block s="doUntil"><block s="reportLessThan"><block var="index"/><l>1</l></block><script><block s="doSetVar"><l>bl</l><block s="reportJoinWords"><list><block s="reportLetter"><block var="index"/><block var="sentence"/></block><block var="bl"/></list></block></block><block s="doChangeVar"><l>index</l><l>-1</l></block></script></block><block s="doReport"><block var="bl"/></block></script></block></script></block-definition><block-definition s="first word of %&apos;sentence&apos;" type="reporter" category="operators"><comment x="0" y="0" w="236" collapsed="false">Takes a text string as input, divides it into words treating one or more spaces as a word separator (only spaces count; punctuation is part of the word) and reports a text string containing only the first word, with no spaces before or after it.</comment><header></header><code></code><translations>pt:a primeira palavra de _&#xD;</translations><inputs><input type="%txt"></input></inputs><script><block s="doDeclareVariables"><list><l>index</l><l>first</l></list></block><block s="doWarp"><script><block s="doSetVar"><l>first</l><l></l></block><block s="doSetVar"><l>index</l><l>1</l></block><block s="doIf"><block s="reportEquals"><block s="reportStringSize"><block var="sentence"/></block><l>0</l></block><script><block s="doReport"><block s="reportListItem"><l>1</l><block s="reportJoinWords"><list><l>empty </l><l>sentence</l></list></block></block></block></script></block><block s="doUntil"><block s="reportOr"><block s="reportEquals"><block var="index"/><block s="reportStringSize"><block var="sentence"/></block></block><block s="reportNot"><block s="reportEquals"><block s="reportLetter"><block var="index"/><block var="sentence"/></block><l> </l></block></block></block><script><block s="doChangeVar"><l>index</l><l>1</l></block></script></block><block s="doIf"><block s="reportEquals"><block s="reportLetter"><block var="index"/><block var="sentence"/></block><l> </l></block><script><block s="doReport"><block s="reportListItem"><l>1</l><block s="reportJoinWords"><list><l>empty </l><l>sentence</l></list></block></block></block></script></block><block s="doUntil"><block s="reportOr"><block s="reportEquals"><block var="index"/><block s="reportStringSize"><block var="sentence"/></block></block><block s="reportEquals"><block s="reportLetter"><block var="index"/><block var="sentence"/></block><l> </l></block></block><script><block s="doSetVar"><l>first</l><block s="reportJoinWords"><list><block var="first"/><block s="reportLetter"><block var="index"/><block var="sentence"/></block></list></block></block><block s="doChangeVar"><l>index</l><l>1</l></block></script></block><block s="doIf"><block s="reportNot"><block s="reportEquals"><block s="reportLetter"><block var="index"/><block var="sentence"/></block><l> </l></block></block><script><block s="doSetVar"><l>first</l><block s="reportJoinWords"><list><block var="first"/><block s="reportLetter"><block var="index"/><block var="sentence"/></block></list></block></block></script></block><block s="doReport"><block var="first"/></block></script></block></script></block-definition><block-definition s="last letter of %&apos;word&apos;" type="reporter" category="operators"><comment x="0" y="0" w="260" collapsed="false">Takes a text string as input, and reports the last character in the string.</comment><header></header><code></code><translations>pt:o último caractere de _&#xD;</translations><inputs><input type="%txt"></input></inputs><script><block s="doReport"><block s="reportLetter"><block s="reportStringSize"><block var="word"/></block><block var="word"/></block></block></script></block-definition><block-definition s="last word of %&apos;sentence&apos;" type="reporter" category="operators"><comment x="0" y="0" w="262" collapsed="false">Takes a text string as input, divides it into words treating one or more spaces as a word separator (only spaces count; punctuation is part of the word) and reports a text string containing only the last word of the input, with no spaces before or after it.</comment><header></header><code></code><translations>pt:a última palavra de _&#xD;</translations><inputs><input type="%txt"></input></inputs><script><block s="doDeclareVariables"><list><l>index</l><l>last</l></list></block><block s="doWarp"><script><block s="doSetVar"><l>last</l><l></l></block><block s="doSetVar"><l>index</l><block s="reportStringSize"><block var="sentence"/></block></block><block s="doIf"><block s="reportEquals"><block s="reportStringSize"><block var="sentence"/></block><l>0</l></block><script><block s="doReport"><block s="reportListItem"><l>1</l><block s="reportJoinWords"><list><l>empty </l><l>sentence</l></list></block></block></block></script></block><block s="doUntil"><block s="reportOr"><block s="reportEquals"><block var="index"/><l>1</l></block><block s="reportNot"><block s="reportEquals"><block s="reportLetter"><block var="index"/><block var="sentence"/></block><l> </l></block></block></block><script><block s="doChangeVar"><l>index</l><l>-1</l></block></script></block><block s="doIf"><block s="reportEquals"><block s="reportLetter"><block var="index"/><block var="sentence"/></block><l> </l></block><script><block s="doReport"><block s="reportListItem"><l>1</l><block s="reportJoinWords"><list><l>empty </l><l>sentence</l></list></block></block></block></script></block><block s="doUntil"><block s="reportOr"><block s="reportEquals"><block var="index"/><l>1</l></block><block s="reportEquals"><block s="reportLetter"><block var="index"/><block var="sentence"/></block><l> </l></block></block><script><block s="doSetVar"><l>last</l><block s="reportJoinWords"><list><block s="reportLetter"><block var="index"/><block var="sentence"/></block><block var="last"/></list></block></block><block s="doChangeVar"><l>index</l><l>-1</l></block></script></block><block s="doIf"><block s="reportNot"><block s="reportEquals"><block s="reportLetter"><block var="index"/><block var="sentence"/></block><l> </l></block></block><script><block s="doSetVar"><l>last</l><block s="reportJoinWords"><list><block s="reportLetter"><block var="index"/><block var="sentence"/></block><block var="last"/></list></block></block></script></block><block s="doReport"><block var="last"/></block></script></block></script></block-definition><block-definition s="empty word? %&apos;word&apos;" type="predicate" category="operators"><comment x="0" y="0" w="208" collapsed="false">Takes a text string as input, and reports TRUE if the string has no characters in it of any kind, otherwise false.</comment><header></header><code></code><translations>pt:a palavra _ está vazia&#xD;</translations><inputs><input type="%txt"></input></inputs><script><block s="doReport"><block s="reportEquals"><block s="reportStringSize"><block var="word"/></block><l>0</l></block></block></script></block-definition><block-definition s="empty sentence? %&apos;sentence&apos;" type="predicate" category="operators"><comment x="0" y="0" w="221" collapsed="false">Takes a text string as input, and reports TRUE if the input contains no characters other than spaces (therefore, no words when the string is considered as a sentence), otherwise FALSE.</comment><header></header><code></code><translations>pt:a frase _ está vazia&#xD;</translations><inputs><input type="%txt"></input></inputs><script><block s="doDeclareVariables"><list><l>index</l></list></block><block s="doSetVar"><l>index</l><l>1</l></block><block s="doIf"><block s="reportEquals"><block s="reportStringSize"><block var="sentence"/></block><l>0</l></block><script><block s="doReport"><block s="reportBoolean"><l><bool>true</bool></l></block></block></script></block><block s="doUntil"><block s="reportOr"><block s="reportEquals"><block var="index"/><block s="reportStringSize"><block var="sentence"/></block></block><block s="reportNot"><block s="reportEquals"><block s="reportLetter"><block var="index"/><block var="sentence"/></block><l> </l></block></block></block><script><block s="doChangeVar"><l>index</l><l>1</l></block></script></block><block s="doReport"><block s="reportEquals"><block s="reportLetter"><block var="index"/><block var="sentence"/></block><l> </l></block></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;pt:uma frase com as palavras _&#xD;</translations><inputs><input type="%mult%txt"></input></inputs><script><block s="doIf"><block s="reportListIsEmpty"><block s="reportCDR"><block var="words"/></block></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;pt:uma frase com as palavras em _&#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;pt:uma lista com as palavras da frase _&#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="word $arrowRight list %&apos;word&apos;" type="reporter" category="operators"><comment x="0" y="0" w="146.42857142857144" collapsed="false">report a list in which each item is one letter from the input word</comment><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;pt:uma lista com os caracteres da palavra _&#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="list $arrowRight word %&apos;list&apos;" type="reporter" category="operators"><comment x="0" y="0" w="158.57142857142858" collapsed="false">join all the items of the input list&#xD;into a single word, and report it</comment><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;pt:uma palavra com os caracteres em _&#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="encoded message" type="command" category="sensing"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doSetVar"><l>encoded message</l><block s="reportNewList"><list></list></block></block><block s="doAsk"><l>what do you want to encode?</l></block><block s="doSetVar"><l>answer 1</l><block s="getLastAnswer"></block></block><block s="doAsk"><l>what would you want to shift by?</l></block><block s="doSetVar"><l>answer 2</l><block s="getLastAnswer"></block></block><block s="doForEach"><l>letter</l><block s="reportTextSplit"><block var="answer 1"/><l><option>letter</option></l></block><script><block s="doAddToList"><custom-block s="shift letter %s number %s spaces"><block var="letter"/><block var="answer 2"/></custom-block><block var="encoded message"/></block></script></block><block s="doSayFor"><custom-block s="list $arrowRight word %l"><block var="encoded message"/></custom-block><l>10</l></block></script></block-definition><block-definition s="shift letter: %&apos;letter&apos; number of spaces: %&apos;number&apos;" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%s"></input><input type="%s"></input></inputs><script><block s="doIfElse"><block s="reportAnd"><block s="reportNot"><block s="reportAnd"><block s="reportLessThan"><block s="reportSum"><block s="reportUnicode"><block var="letter"/></block><block var="number"/></block><l>123</l></block><block s="reportGreaterThan"><block s="reportSum"><block s="reportUnicode"><block var="letter"/></block><block var="number"/></block><l>96</l></block></block></block><block s="reportNot"><block s="reportAnd"><block s="reportGreaterThan"><block s="reportSum"><block s="reportUnicode"><block var="letter"/></block><block var="number"/></block><l>64</l></block><block s="reportLessThan"><block s="reportSum"><block s="reportUnicode"><block var="letter"/></block><block var="number"/></block><l>91</l></block></block></block></block><script><block s="doReport"><block s="reportUnicodeAsLetter"><block s="reportDifference"><block s="reportSum"><block s="reportUnicode"><block var="letter"/></block><block var="number"/></block><l>26</l></block></block></block></script><script><block s="doReport"><block s="reportUnicodeAsLetter"><block s="reportSum"><block s="reportUnicode"><block var="letter"/></block><block var="number"/></block></block></block></script></block></script></block-definition><block-definition s="decoded message" type="command" category="sensing"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doSetVar"><l>decoded message</l><block s="reportNewList"><list></list></block></block><block s="doAsk"><l>what would you like to decode?</l></block><block s="doSetVar"><l>answer 1</l><block s="getLastAnswer"></block></block><block s="doAsk"><l>what negative number would you like to shift by?</l></block><block s="doSetVar"><l>answer 2</l><block s="getLastAnswer"></block></block><block s="doForEach"><l>letter</l><block s="reportTextSplit"><block var="answer 1"/><l><option>letter</option></l></block><script><block s="doAddToList"><custom-block s="shift letter %s number %s spaces"><block var="letter"/><block var="answer 2"/></custom-block><block var="decoded message"/></block></script></block><block s="doSayFor"><custom-block s="list $arrowRight word %l"><block var="decoded message"/></custom-block><l>10</l></block></script></block-definition><block-definition s="decode one text %&apos;character&apos; %&apos;# to shift&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="reportUnicodeAsLetter"><block s="reportDifference"><block s="reportUnicode"><block var="character"/></block><block var="# to shift"/></block></block></block></script></block-definition><block-definition s="unicode %&apos;#&apos; as letter" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%s"></input></inputs></block-definition><block-definition s="encode letter %&apos;letter&apos; shift %&apos;shift&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="reportUnicodeAsLetter"><block s="reportSum"><block s="reportUnicode"><block var="letter"/></block><block var="shift"/></block></block></block></script></block-definition></blocks><variables><variable name="encoded message"><list struct="atomic" id="1235"></list></variable><variable name="answer 1"><l>0</l></variable><variable name="answer 2"><l>0</l></variable><variable name="decoded message"><list struct="atomic" id="1236"></list></variable></variables></project><media name="5.2 Cybersecurity: Caesar Cipher" app="Snap! 5.4, http://snap.berkeley.edu" version="1"></media></snapdata>