<snapdata remixID="11473085"><project name="cloud (moderated) chat" app="Snap! 7, https://snap.berkeley.edu" version="2"><notes>make sure to drink enough water, and take your meds if you have those</notes><thumbnail>data:image/png;base64,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</thumbnail><scenes select="1"><scene name="cloud (moderated) chat"><notes>make sure to drink enough water, and take your meds if you have those</notes><hidden></hidden><headers></headers><code></code><blocks><block-definition s="get all user inputs" type="reporter" category="lists"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doReport"><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportListItem"><l>1</l><l/></block></autolambda><list></list></block><block var="input and responses"/></block></block></script></block-definition><block-definition s="index of %&apos;thing&apos; in %&apos;list&apos;" type="reporter" category="lists"><header></header><code></code><translations></translations><inputs><input type="%s">thing</input><input type="%l"></input></inputs><script><block s="doReport"><block s="evaluate"><block s="reportJSFunction"><list><l>item</l><l>list</l></list><l>return list.asArray().indexOf(item)+1;</l></block><list><block var="thing"/><block var="list"/></list></block></block></script></block-definition><block-definition s="find response %&apos;userInput&apos;" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%txt"></input></inputs><script><block s="doDeclareVariables"><list><l>index</l></list></block><block s="doSetVar"><l>index</l><custom-block s="index of similar %txt in %l %n"><block var="userInput"/><custom-block s="get all user inputs"></custom-block><block var="SIMILARITY THRESHOLD"/></custom-block></block><block s="doIfElse"><block s="reportGreaterThan"><block var="index"/><l>0</l></block><script><block s="doReport"><block s="reportListItem"><l><option>any</option></l><block s="reportListItem"><l>2</l><block s="reportListItem"><block var="index"/><block var="input and responses"/></block></block></block></block></script><script><block s="doReport"><l></l></block></script></block></script></block-definition><block-definition s="append %&apos;lists&apos;" type="reporter" category="lists"><comment x="0" y="0" w="287" collapsed="false">Take any number of input lists, and create a new list containing the items of the input lists.  So              APPEND [A B] [C D]where the [,,,] are lists reports the list              [A B C D]not [[A B] [C D]].</comment><header></header><code></code><translations></translations><inputs><input type="%mult%l"></input></inputs><script><block s="doWarp"><script><block s="doIf"><block s="reportEquals"><block var="lists"/><block s="reportNewList"><list></list></block></block><script><block s="doReport"><block s="reportNewList"><list></list></block></block></script></block><block s="doIf"><block s="reportEquals"><block s="reportListAttribute"><l><option>length</option></l><block var="lists"/></block><l>1</l></block><script><block s="doReport"><block s="reportListItem"><l>1</l><block var="lists"/></block></block></script></block><block s="doIf"><block s="reportEquals"><block s="reportListItem"><l>1</l><block var="lists"/></block><block s="reportNewList"><list></list></block></block><script><block s="doReport"><custom-block s="append %mult%l"><block s="reportCDR"><block var="lists"/></block></custom-block></block></script></block><block s="doReport"><block s="reportCONS"><block s="reportListItem"><l>1</l><block s="reportListItem"><l>1</l><block var="lists"/></block></block><custom-block s="append %mult%l"><block s="reportCONS"><block s="reportCDR"><block s="reportListItem"><l>1</l><block var="lists"/></block></block><block s="reportCDR"><block var="lists"/></block></block></custom-block></block></block></script></block></script></block-definition><block-definition s="reverse %&apos;data&apos;" type="reporter" category="lists"><comment x="0" y="0" w="223" collapsed="false">Reports a new list containing the items of the input list, but in the opposite order.</comment><header></header><code></code><translations></translations><inputs><input type="%l"></input></inputs><script><block s="doDeclareVariables"><list><l>helper</l></list></block><block s="doSetVar"><l>helper</l><block s="reifyScript"><script><block s="doIf"><block s="reportEquals"><block var="input"/><block s="reportNewList"><list></list></block></block><script><block s="doReport"><block var="result"/></block></script></block><block s="doReport"><block s="evaluate"><block var="helper"/><list><block s="reportCDR"><block var="input"/></block><block s="reportCONS"><block s="reportListItem"><l>1</l><block var="input"/></block><block var="result"/></block></list></block></block></script><list><l>input</l><l>result</l></list></block></block><block s="doWarp"><script><block s="doReport"><block s="evaluate"><block var="helper"/><list><block var="data"/><block s="reportNewList"><list></list></block></list></block></block></script></block></script></block-definition><block-definition s="remove duplicates from %&apos;data&apos;" type="reporter" category="lists"><comment x="0" y="0" w="209" collapsed="false">Reports a new list whose items are the same as in the input list, except that if two or more equal items appear in the input list, only the last one is kept in the result.</comment><header></header><code></code><translations></translations><inputs><input type="%l"></input></inputs><script><block s="doWarp"><script><block s="doIf"><block s="reportEquals"><block var="data"/><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="reportListContainsItem"><block s="reportCDR"><block var="data"/></block><block s="reportListItem"><l>1</l><block var="data"/></block></block><script><block s="doReport"><custom-block s="remove duplicates from %l"><block s="reportCDR"><block var="data"/></block></custom-block></block></script><script><block s="doReport"><block s="reportCONS"><block s="reportListItem"><l>1</l><block var="data"/></block><custom-block s="remove duplicates from %l"><block s="reportCDR"><block var="data"/></block></custom-block></block></block></script></block></script></block></script></block-definition><block-definition s="sort %&apos;data&apos; ordering with %&apos;function&apos;" type="reporter" category="lists"><comment x="0" y="0" w="204" collapsed="false">Reports a sorted version of the list in its first input slot, using the comparison function in the second input slot.  For a list of numbers, using &lt; as the comparison function will sort from low to high; using &gt; will sort from high to low.</comment><header></header><code></code><translations></translations><inputs><input type="%l"></input><input type="%predRing"></input></inputs><script><block s="doDeclareVariables"><list><l>even items</l><l>odd items</l><l>merge</l></list></block><block s="doSetVar"><l>odd items</l><block s="reifyScript"><script><block s="doIf"><block s="reportEquals"><l></l><block s="reportNewList"><list></list></block></block><script><block s="doReport"><block s="reportNewList"><list></list></block></block></script></block><block s="doReport"><block s="reportCONS"><block s="reportListItem"><l>1</l><l/></block><block s="evaluate"><block var="even items"/><list><block s="reportCDR"><l/></block></list></block></block></block></script><list></list></block></block><block s="doSetVar"><l>even items</l><block s="reifyScript"><script><block s="doIf"><block s="reportEquals"><l></l><block s="reportNewList"><list></list></block></block><script><block s="doReport"><block s="reportNewList"><list></list></block></block></script></block><block s="doReport"><block s="evaluate"><block var="odd items"/><list><block s="reportCDR"><l/></block></list></block></block></script><list></list></block></block><block s="doSetVar"><l>merge</l><block s="reifyScript"><script><block s="doIf"><block s="reportEquals"><block var="#1"/><block s="reportNewList"><list></list></block></block><script><block s="doReport"><block var="#2"/></block></script></block><block s="doIf"><block s="reportEquals"><block var="#2"/><block s="reportNewList"><list></list></block></block><script><block s="doReport"><block var="#1"/></block></script></block><block s="doIfElse"><block s="evaluate"><block var="function"/><list><block s="reportListItem"><l>1</l><block var="#1"/></block><block s="reportListItem"><l>1</l><block var="#2"/></block></list></block><script><block s="doReport"><block s="reportCONS"><block s="reportListItem"><l>1</l><block var="#1"/></block><block s="evaluate"><block var="merge"/><list><block s="reportCDR"><block var="#1"/></block><block var="#2"/></list></block></block></block></script><script><block s="doReport"><block s="reportCONS"><block s="reportListItem"><l>1</l><block var="#2"/></block><block s="evaluate"><block var="merge"/><list><block var="#1"/><block s="reportCDR"><block var="#2"/></block></list></block></block></block></script></block></script><list><l>#1</l><l>#2</l></list></block></block><block s="doIf"><block s="reportEquals"><block var="data"/><block s="reportNewList"><list></list></block></block><script><block s="doReport"><block s="reportNewList"><list></list></block></block></script></block><block s="doIf"><block s="reportEquals"><block s="reportCDR"><block var="data"/></block><block s="reportNewList"><list></list></block></block><script><block s="doReport"><block var="data"/></block></script></block><block s="doReport"><block s="evaluate"><block var="merge"/><list><custom-block s="sort %l ordering with %predRing"><block s="evaluate"><block var="odd items"/><list><block var="data"/></list></block><block var="function"/></custom-block><custom-block s="sort %l ordering with %predRing"><block s="evaluate"><block var="even items"/><list><block var="data"/></list></block><block var="function"/></custom-block></list></block></block></script></block-definition><block-definition s="assoc %&apos;key&apos; %&apos;a-list&apos;" type="reporter" category="lists"><comment x="0" y="0" w="289.3333333333333" collapsed="false">The second input is an &quot;association list,&quot; a list of two-item lists.  Each of those smaller lists has a &quot;key&quot; as its first item and a &quot;value&quot; as its second.  ASSOC reports the first key-value pair in the association list whose key matches the first input.</comment><header></header><code></code><translations></translations><inputs><input type="%s"></input><input type="%l"></input></inputs><script><block s="doIf"><block s="reportEquals"><block var="a-list"/><block s="reportNewList"><list></list></block></block><script><block s="doReport"><block s="reportNewList"><list></list></block></block></script></block><block s="doIf"><block s="reportEquals"><block var="key"/><block s="reportListItem"><l>1</l><block s="reportListItem"><l>1</l><block var="a-list"/></block></block></block><script><block s="doReport"><block s="reportListItem"><l>1</l><block var="a-list"/></block></block></script></block><block s="doReport"><custom-block s="assoc %s %l"><block var="key"/><block s="reportCDR"><block var="a-list"/></block></custom-block></block></script></block-definition><block-definition s="empty? %&apos;data&apos;" type="predicate" category="lists"><header></header><code></code><translations></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="flatten %&apos;list&apos;" type="reporter" category="lists"><header></header><code></code><translations></translations><inputs><input type="%l"></input></inputs><script><block s="doIf"><block s="reportNot"><custom-block s="is %l a 2d list?"><block var="list"/></custom-block></block><script><block s="doReport"><block var="list"/></block></script></block><block s="doReport"><block s="reportCombine"><block var="list"/><block s="reifyReporter"><autolambda><custom-block s="append %mult%l"><list><l/><l/></list></custom-block></autolambda><list></list></block></block></block></script></block-definition><block-definition s="is %&apos;list&apos; a 2d list?" type="predicate" category="lists"><header></header><code></code><translations></translations><inputs><input type="%l"></input></inputs><script><block s="doWarp"><script><block s="doIf"><block s="reportListIsEmpty"><block var="list"/></block><script><block s="doReport"><block s="reportBoolean"><l><bool>false</bool></l></block></block></script></block><block s="doForEach"><l>item</l><block var="list"/><script><block s="doIf"><block s="reportNot"><block s="reportIsA"><block var="item"/><l><option>list</option></l></block></block><script><block s="doReport"><block s="reportBoolean"><l><bool>false</bool></l></block></block></script></block></script></block><block s="doReport"><block s="reportBoolean"><l><bool>true</bool></l></block></block></script></block></script></block-definition><block-definition s="substr %&apos;s&apos;" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%s"></input></inputs><script><block s="doReport"><block s="evaluate"><block s="reportJSFunction"><list><l>answer</l></list><l> return answer.substring(0, answer.length - 1);</l></block><list><block var="s"/></list></block></block></script></block-definition><block-definition s="set cloud var %&apos;cloud&apos; to %&apos;value&apos;" type="command" category="sensing"><header></header><code></code><translations></translations><inputs><input type="%s"></input><input type="%s"></input></inputs><script><custom-block s="ignore %s"><block s="reportURL"><block s="reportJoinWords"><list><l>snapextensions.uni-goettingen.de/handleTextfile.php?type=write&amp;content=</l><block var="value"/><l>&amp;filename=./textfiles/</l><block s="reportJoinWords"><list><block var="cloud"/><l>_id_</l><custom-block s="cloud ID"></custom-block></list></block><l>.txt</l></list></block></block></custom-block></script></block-definition><block-definition s="ignore %&apos;s&apos;" type="command" category="control"><header></header><code></code><translations></translations><inputs><input type="%s"></input></inputs></block-definition><block-definition s="cloud var %&apos;s&apos;" type="reporter" category="sensing"><header></header><code></code><translations></translations><inputs><input type="%s"></input></inputs><script><block s="doReport"><custom-block s="substr %s"><block s="reportURL"><block s="reportJoinWords"><list><l>snapextensions.uni-goettingen.de/handleTextfile.php?type=read&amp;filename=./textfiles/</l><block s="reportJoinWords"><list><block var="s"/><l>_id_</l><custom-block s="cloud ID"></custom-block></list></block><l>.txt</l></list></block></block></custom-block></block></script></block-definition><block-definition s="cloud ID %&apos;s&apos;" type="command" category="sensing"><header></header><code></code><translations></translations><inputs><input type="%s"></input></inputs><script><block s="doRun"><block s="reportJSFunction"><list><l>a</l></list><l>cloudid = a</l></block><list><block var="s"/></list></block></script></block-definition><block-definition s="cloud ID" type="reporter" category="sensing"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doReport"><block s="evaluate"><block s="reportJSFunction"><list><l></l></list><l>return cloudid;</l></block><list></list></block></block></script></block-definition><block-definition s="listify %&apos;jsonString&apos;" type="reporter" category="operators"><header></header><code></code><translations>pt:os dados JSON _ em formato de lista&#xD;</translations><inputs><input type="%mlt"></input></inputs><script><block s="doReport"><block s="evaluate"><block s="reportJSFunction"><list><l>jsonString</l></list><l>return listify(JSON.parse(jsonString));function listify(jsonObject) {  if (jsonObject instanceof Array) {    return new List(jsonObject.map(function(eachElement) { return listify(eachElement)}));  } else if (jsonObject instanceof Object) {    return new List(Object.keys(jsonObject).map(function(eachKey) { return new List([eachKey,listify(jsonObject[eachKey])])} ))  } else {    return jsonObject  }}</l></block><list><block var="jsonString"/></list></block></block></script></block-definition><block-definition s="value at key %&apos;key&apos; of %&apos;lst&apos;" type="reporter" category="operators"><header></header><code></code><translations>pt:o valor com chave _ em _&#xD;</translations><inputs><input type="%s"></input><input type="%l"></input></inputs><script><block s="doWarp"><script><block s="doForEach"><l>each item</l><block var="lst"/><script><block s="doIf"><block s="reportEquals"><block s="reportListItem"><l>1</l><block var="each item"/></block><block var="key"/></block><script><block s="doReport"><block s="reportListItem"><l>2</l><block var="each item"/></block></block></script></block></script></block></script></block><block s="doReport"><l></l></block></script></block-definition><block-definition s="stringify %&apos;list&apos;" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%l"></input></inputs><script><block s="doWarp"><script><block s="doDeclareVariables"><list><l>a</l></list></block><block s="doSetVar"><l>a</l><l>[</l></block><block s="doIf"><block s="reportGreaterThan"><block s="reportListAttribute"><l><option>length</option></l><block var="list"/></block><l>0</l></block><script><block s="doIf"><block s="reportGreaterThan"><block s="reportListAttribute"><l><option>length</option></l><block var="list"/></block><l>1</l></block><script><block s="doFor"><l>i</l><l>1</l><block s="reportDifference"><block s="reportListAttribute"><l><option>length</option></l><block var="list"/></block><l>1</l></block><script><block s="doIfElse"><block s="reportIsA"><block s="reportListItem"><block var="i"/><block var="list"/></block><l><option>list</option></l></block><script><block s="doSetVar"><l>a</l><block s="reportJoinWords"><list><block var="a"/><custom-block s="stringify %l"><block s="reportListItem"><block var="i"/><block var="list"/></block></custom-block><l>, </l></list></block></block></script><script><block s="doSetVar"><l>a</l><block s="reportJoinWords"><list><block var="a"/><l>"</l><block s="reportListItem"><block var="i"/><block var="list"/></block><l>", </l></list></block></block></script></block></script></block></script></block><block s="doIfElse"><block s="reportIsA"><block s="reportListItem"><l><option>last</option></l><block var="list"/></block><l><option>list</option></l></block><script><block s="doSetVar"><l>a</l><block s="reportJoinWords"><list><block var="a"/><custom-block s="stringify %l"><block s="reportListItem"><l><option>last</option></l><block var="list"/></block></custom-block></list></block></block></script><script><block s="doSetVar"><l>a</l><block s="reportJoinWords"><list><block var="a"/><l>"</l><block s="reportListItem"><l><option>last</option></l><block var="list"/></block><l>"</l></list></block></block></script></block></script></block><block s="doSetVar"><l>a</l><block s="reportJoinWords"><list><block var="a"/><l>]</l></list></block></block><block s="doReport"><block var="a"/></block></script></block></script></block-definition><block-definition s="get list of typable characters" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doWarp"><script><block s="doDeclareVariables"><list><l>a</l></list></block><block s="doSetVar"><l>a</l><block s="reportNewList"><list></list></block></block><block s="doFor"><l>i</l><l>33</l><l>126</l><script><block s="doAddToList"><block s="reportUnicodeAsLetter"><block var="i"/></block><block var="a"/></block></script></block><block s="doReport"><block var="a"/></block></script></block></script></block-definition><block-definition s="clean %&apos;string&apos;" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%s"></input></inputs><script><block s="doReport"><block s="evaluate"><block s="reportJSFunction"><list><l>a</l></list><l>return a.toLowerCase().replace(/[\.!"(),{}?[\]:;&apos;]/gi, "");</l></block><list><block var="string"/></list></block></block></script></block-definition><block-definition s="get similarity score %&apos;str1&apos; %&apos;str2&apos;" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%txt"></input><input type="%txt"></input></inputs><script><block s="doReport"><block s="evaluate"><block s="reportJSFunction"><list><l>a</l><l>b</l></list><l> if(a.length == 0) return b.length; &#xD; if(b.length == 0) return a.length; &#xD;&#xD; var matrix = [];&#xD;&#xD; // increment along the first column of each row&#xD; var i;&#xD; for(i = 0; i &lt;= b.length; i++){&#xD;     matrix[i] = [i];&#xD; }&#xD;&#xD; // increment each column in the first row&#xD; var j;&#xD; for(j = 0; j &lt;= a.length; j++){&#xD;     matrix[0][j] = j;&#xD; }&#xD;&#xD; // Fill in the rest of the matrix&#xD; for(i = 1; i &lt;= b.length; i++){&#xD;     for(j = 1; j &lt;= a.length; j++){&#xD;     if(b.charAt(i-1) == a.charAt(j-1)){&#xD;         matrix[i][j] = matrix[i-1][j-1];&#xD;     } else {&#xD;         matrix[i][j] = Math.min(matrix[i-1][j-1] + 1, // substitution&#xD;Math.min(matrix[i][j-1] + 1, // insertion&#xD;        matrix[i-1][j] + 1)); // deletion&#xD;     }&#xD;     }&#xD; }&#xD;&#xD;var dist = matrix[b.length][a.length];&#xD;return (Math.max(a.length, b.length) - dist) / Math.max(a.length, b.length); </l></block><list><block var="str1"/><block var="str2"/></list></block></block></script></block-definition><block-definition s="index of similar %&apos;item&apos; in %&apos;list&apos; %&apos;similarityThreshold&apos;" type="reporter" category="lists"><header></header><code></code><translations></translations><inputs><input type="%txt"></input><input type="%l"></input><input type="%n"></input></inputs><script><block s="doIf"><block s="reportListIsEmpty"><block var="list"/></block><script><block s="doReport"><l>0</l></block></script></block><block s="doWarp"><script><block s="doFor"><l>i</l><l>1</l><block s="reportListAttribute"><l><option>length</option></l><block var="list"/></block><script><block s="doIf"><block s="reportNot"><block s="reportLessThan"><custom-block s="get similarity score %txt %txt"><block var="item"/><block s="reportListItem"><block var="i"/><block var="list"/></block></custom-block><block var="similarityThreshold"/></block></block><script><block s="doReport"><block var="i"/></block></script></block></script></block><block s="doReport"><l>0</l></block></script></block></script></block-definition><block-definition s="store key: %&apos;key&apos; value: %&apos;value&apos; in browser" type="command" category="other"><header></header><code></code><translations></translations><inputs><input type="%s"></input><input type="%s"></input></inputs><script><block s="doRun"><block s="reportJSFunction"><list><l>key</l><l>value</l><l>proc</l></list><l>proc.assertType(key, [&apos;text&apos;, &apos;number&apos;]);&#xD;proc.assertType(value, [&apos;text&apos;, &apos;number&apos;]);&#xD;window.localStorage.setItem(&apos;-snap-project-&apos; + key, &apos;&apos; + value);</l></block><list><block var="key"/><block var="value"/></list></block></script></block-definition><block-definition s="stored data in browser" 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>var str = window.localStorage,&#xD;    len = str.length,&#xD;    result = [],&#xD;    key,&#xD;    i;&#xD;for (i = 0; i &lt; len; i += 1) {&#xD;  key = str.key(i);&#xD;  if (key.startsWith(&apos;-snap-project-&apos;)) {&#xD;    result.push(new List([key.slice(14), str.getItem(key)]));&#xD;  }&#xD;}&#xD;return new List(result);</l></block><list></list></block></block></script></block-definition><block-definition s="remove key: %&apos;key&apos; in browser" type="command" category="other"><header></header><code></code><translations></translations><inputs><input type="%s"></input></inputs><script><block s="doRun"><block s="reportJSFunction"><list><l>key</l><l>proc</l></list><l>proc.assertType(key, [&apos;text&apos;, &apos;number&apos;]);&#xD;window.localStorage.removeItem(&apos;-snap-project-&apos; + key);</l></block><list><block var="key"/></list></block></script></block-definition><block-definition s="clear data in browser" type="command" category="other"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doWarp"><script><block s="doForEach"><l>item</l><custom-block s="stored data in browser"></custom-block><script><custom-block s="remove key: %s in browser"><block s="reportListItem"><l>1</l><block var="item"/></block></custom-block></script></block></script></block></script></block-definition><block-definition s="username" 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>var ide = this.parentThatIsA(IDE_Morph);&#xD;return ide.cloud.username;</l></block><list></list></block></block></script></block-definition><block-definition s="threes constant" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doReport"><block s="reportQuotient"><l>1</l><l>3</l></block></block></script></block-definition><block-definition s="chat" type="reporter" category="sensing"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doReport"><block s="reportTextSplit"><custom-block s="cloud var %s"><l>messages</l></custom-block><l>|</l></block></block></script></block-definition></blocks><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" id="1029"><pentrails>data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAeAAAAFoCAYAAACPNyggAAAAAXNSR0IArs4c6QAADoVJREFUeF7t1cEJAAAIxDDdf2m3sJ+4wEEQuuMIECBAgACBd4F9XzRIgAABAgQIjAB7AgIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECByxcQFpoRMBzwAAAABJRU5ErkJggg==</pentrails><costumes><list struct="atomic" id="1030"></list></costumes><sounds><list struct="atomic" id="1031"></list></sounds><variables></variables><blocks></blocks><scripts></scripts><sprites select="1"><sprite name="Sprite" idx="1" x="0" y="0" heading="90" scale="1" volume="100" pan="0" rotation="1" draggable="false" costume="0" color="80,80,80,1" pen="tip" id="1036"><costumes><list struct="atomic" id="1037"></list></costumes><sounds><list struct="atomic" id="1038"></list></sounds><blocks></blocks><variables></variables><scripts><script x="61.2958984375" y="361.1666666666667"><block s="receiveKey"><l><option>o</option></l><list></list></block><block s="doIf"><block s="reportEquals"><custom-block s="username"></custom-block><l>-tz_tommyz-</l></block><script><custom-block s="set cloud var %s to %s"><l>open</l><l>1</l></custom-block><custom-block s="set cloud var %s to %s"><l>open-message</l><l>the chat is being moderated, any bad messages will be deleted</l></custom-block></script></block></script><script x="548.2958984375" y="30"><block s="receiveGo"></block><custom-block s="cloud ID %s"><l>miderated-chat-123-123-321-321</l></custom-block><block s="doForever"><script><block s="doAsk"><l></l></block><block s="doIf"><block s="reportEquals"><custom-block s="cloud var %s"><l>open</l></custom-block><l>1</l></block><script><custom-block s="set cloud var %s to %s"><l>messages</l><block s="reportJoinWords"><list><custom-block s="cloud var %s"><l>messages</l></custom-block><l>|</l><l>[</l><custom-block s="username"></custom-block><l>]</l><l>: </l><block s="getLastAnswer"></block></list></block></custom-block></script></block><block s="doSetVar"><l>chat</l><block s="reportListItem"><block s="reportDifference"><block s="reportListAttribute"><l><option>length</option></l><custom-block s="chat"></custom-block></block><l>0</l></block><custom-block s="chat"></custom-block></block></block><block s="doSetVar"><l>chat2</l><block s="reportListItem"><block s="reportDifference"><block s="reportListAttribute"><l><option>length</option></l><custom-block s="chat"></custom-block></block><l>1</l></block><custom-block s="chat"></custom-block></block></block><block s="doSetVar"><l>chat3</l><block s="reportListItem"><block s="reportDifference"><block s="reportListAttribute"><l><option>length</option></l><custom-block s="chat"></custom-block></block><l>2</l></block><custom-block s="chat"></custom-block></block></block><block s="doSetVar"><l>chat4</l><block s="reportListItem"><block s="reportDifference"><block s="reportListAttribute"><l><option>length</option></l><custom-block s="chat"></custom-block></block><l>3</l></block><custom-block s="chat"></custom-block></block></block><block s="doSetVar"><l>chat5</l><block s="reportListItem"><block s="reportDifference"><block s="reportListAttribute"><l><option>length</option></l><custom-block s="chat"></custom-block></block><l>4</l></block><custom-block s="chat"></custom-block></block></block><block s="doSetVar"><l>message1</l><l>remember, any message could be fake!</l></block><block s="doSetVar"><l>message2</l><l>make sure to drink enough water</l></block><block s="doSetVar"><l>message3</l><custom-block s="cloud var %s"><l>open-message</l></custom-block></block></script></block></script><script x="76.2958984375" y="95.83333333333337"><block s="receiveKey"><l><option>c</option></l><list></list></block><block s="doIf"><block s="reportEquals"><custom-block s="username"></custom-block><l>-tz_tommyz-</l></block><script><custom-block s="set cloud var %s to %s"><l>open</l><l>0</l></custom-block><custom-block s="set cloud var %s to %s"><l>open-message</l><l>since the chat is unmoderated, there is no chat</l></custom-block></script></block></script></scripts></sprite><watcher var="chat" style="large" x="0" y="-3" color="243,118,29"/><watcher var="chat3" style="large" x="1" y="40" color="243,118,29"/><watcher var="chat2" style="large" x="3" y="18" color="243,118,29"/><watcher var="chat4" style="large" x="2" y="63.000001999999995" color="243,118,29"/><watcher var="chat5" style="large" x="2" y="87.00000399999999" color="243,118,29"/><watcher var="message1" style="large" x="0" y="252" color="243,118,29"/><watcher var="message2" style="large" x="1" y="272" color="243,118,29"/><watcher var="message3" style="large" x="2" y="292" color="243,118,29"/></sprites></stage><variables><variable name="chat"><l>[-tz_tommyz-]: </l></variable><variable name="chat2"><l>[-tz_tommyz-]: </l></variable><variable name="chat3"><l>[-tz_tommyz-]: </l></variable><variable name="chat4"><l>[-tz_tommyz-]: </l></variable><variable name="chat5"><l>[-tz_tommyz-]: </l></variable><variable name="message1"><l>remember, any message could be fake!</l></variable><variable name="message2"><l>make sure to drink enough water</l></variable><variable name="message3"><l>the chat is being moderated, any bad messages will be deleted from the system</l></variable></variables></scene></scenes></project><media name="cloud (moderated) chat" app="Snap! 7, https://snap.berkeley.edu" version="2"></media></snapdata>