<snapdata remixID="68"><project name="Login to Sage" app="Snap! 10, https://snap.berkeley.edu" version="2"><notes></notes><thumbnail>data:image/png;base64,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</thumbnail><scenes select="1"><scene name="Login to Sage" palette="single"><notes></notes><hidden></hidden><headers></headers><code></code><blocks><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="reportTextSplit"><block var="jsonString"/><l><option>json</option></l></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="reportVariadicEquals"><list><block s="reportListItem"><l>1</l><block var="each item"/></block><block var="key"/></list></block><script><block s="doReport"><block s="reportListItem"><l>2</l><block var="each item"/></block></block></script><list></list></block></script></block></script></block><block s="doReport"><l></l></block></script></block-definition><block-definition s="%&apos;method&apos; url: %&apos;url&apos; send: %&apos;payload&apos; headers: %&apos;headers&apos;" type="reporter" category="sensing"><header></header><code></code><translations>pt:a resposta a _ de _ enviando _ e cabeçalhos _&#xD;</translations><inputs><input type="%s" readonly="true">GET<options>GET&#xD;POST&#xD;PUT&#xD;DELETE</options></input><input type="%s">https://snap.berkeley.edu</input><input type="%s"></input><input type="%mult%l" readonly="true"></input></inputs><script><block s="doReport"><block s="reportApplyExtension"><l>xhr_request(mth, url, dta, hdrs)</l><list><block var="method"/><block var="url"/><block var="payload"/><block var="headers"/></list></block></block></script></block-definition><block-definition s="key: %&apos;key&apos; value: %&apos;value&apos;" type="reporter" category="operators"><header></header><code></code><translations>pt:um par (chave: _ , valor: _ )&#xD;</translations><inputs><input type="%s"></input><input type="%s"></input></inputs><script><block s="doReport"><block s="reportNewList"><list><block var="key"/><block var="value"/></list></block></block></script></block-definition><block-definition s="current location" type="reporter" category="sensing"><comment x="0" y="0" w="200" collapsed="false">Reports a three-item list containing the latitude and longitude of the user, and the precision of the measurements.  Works only if the user allows snap.berkeley.edu access to location data.  Some browsers also require an HTTPS connection to Snap!.</comment><header></header><code></code><translations>pt:a localização actual do dispositivo&#xD;</translations><inputs></inputs><script><block s="doDeclareVariables"><list><l>callback</l></list></block><block s="doSetVar"><l>callback</l><block s="reportApplyExtension"><l>geo_location(acc?)</l><list><block s="reportBoolean"><l><bool>true</bool></l></block></list></block></block><block s="doWaitUntil"><block s="reportVariadicEquals"><list><block s="reportListAttribute"><l><option>length</option></l><block s="evaluate"><block var="callback"/><list></list></block></block><l>3</l></list></block></block><block s="doReport"><block s="evaluate"><block var="callback"/><list></list></block></block></script></block-definition><block-definition s="binary data from %&apos;url&apos; type %&apos;idl&apos;" type="reporter" category="sensing"><header></header><code></code><translations></translations><inputs><input type="%s"></input><input type="%s" readonly="true" initial="1">octet<options>byte&#xD;octet&#xD;short&#xD;unsigned short&#xD;long&#xD;unsigned long&#xD;unrestricted float&#xD;unrestricted double&#xD;bigint</options></input></inputs><script><block s="doReport"><block s="reportApplyExtension"><l>xhr_binary(url, webIDL_type)</l><list><block var="url"/><block var="idl"/></list></block></block></script></block-definition><block-definition s="%&apos;text&apos;" type="reporter" category="variables"><header></header><code></code><translations></translations><inputs><input type="%mlt" initial="1"></input></inputs><script><block s="doReport"><block var="text"/></block></script></block-definition><block-definition s="create %&apos;_scope&apos; var %&apos;_names&apos;" type="command" category="variables"><comment x="0" y="0" w="146" collapsed="false">This block creates  new variables on the selected scope: global (for all sprites), sprite (for this sprite only) or script (only for that blocks stack) with the names given (in &apos;names&apos; list).&#xD;&#xD;If there is already a variable with that name in that scope, it does nothing: no errors and no overwrites.</comment><header></header><code></code><translations>pt:cria as variáveis _ _&#xD;ca:crea les _ variables _&#xD;es:crear las _ variables _&#xD;de:erstellen _ var _&#xD;</translations><inputs><input type="%s" readonly="true">global<options>global&#xD;sprite&#xD;script</options></input><input type="%mult%txt"></input></inputs><script><block s="doWarp"><script><block s="doForEach"><l>_item</l><block var="_names"/><script><block s="doApplyExtension"><l>var_declare(scope, name)</l><list><block var="_scope"/><block var="_item"/></list></block></script></block></script></block></script></block-definition><block-definition s="delete var %&apos;_names&apos;" type="command" category="variables"><comment x="0" y="0" w="216.99999999999997" collapsed="false">This block deletes all the variables with the names given (inside input list).&#xD;&#xD;Each name will make only one variable deletion, and this will be the variable found following the scope order: &apos;script&apos; -&gt; &apos;sprite&apos; -&gt; &apos;global&apos;.&#xD;&#xD;If we have a &quot;testing&quot; sprite variable and also a &quot;testing&quot; global one, deleting &quot;testing&quot; will delete only the sprite one (Yes! we can also do &quot;delete var (testing, testing)&quot; to delete both.&#xD;&#xD;If one variable does not exists (in any scope) an error happens, stopping block action in that point. You can check it before with the &quot;does var (name) exists?&quot;block. </comment><header></header><code></code><translations>pt:remove as variáveis _&#xD;ca:esborra les variables _&#xD;es:borrar variables _&#xD;de:löschen var _&#xD;</translations><inputs><input type="%mult%txt"></input></inputs><script><block s="doWarp"><script><block s="doForEach"><l>_item</l><block var="_names"/><script><block s="doApplyExtension"><l>err_ignore</l><list><custom-block s="var %s"><block var="_item"/></custom-block></list></block><block s="doApplyExtension"><l>var_delete(name)</l><list><block var="_item"/></list></block></script></block></script></block></script></block-definition><block-definition s="set %&apos;_name&apos; to %&apos;_value&apos;" type="command" category="variables"><comment x="0" y="0" w="240.49316406250003" collapsed="false">This block sets the given value (last input) to the variable named with the name givent (var input).&#xD;&#xD;It looks for that variable following the scope order &apos;script&apos; -&gt; &apos;sprite&apos; -&gt; &apos;global&apos; (the first match it finds).&#xD;&#xD;If that variable does not exist (in any scope) an error happens, stopping their script. You can check it before using the &quot;does var (name) exists?&quot; block. </comment><header></header><code></code><translations>ca:assigna a _ el valor _&#xD;es:asignar a _ el valor _&#xD;pt:altera _ para _&#xD;de:setze var _ auf _&#xD;</translations><inputs><input type="%s"><options>§_getVarNamesDict</options></input><input type="%s"></input></inputs><script><block s="doApplyExtension"><l>var_set(name, val)</l><list><block var="_name"/><block var="_value"/></list></block></script></block-definition><block-definition s="var %&apos;_name&apos;" type="reporter" category="variables"><comment x="0" y="0" w="178.00000000000003" collapsed="false">This block reports the value of the variable with the name given.&#xD;&#xD;It looks for that variable following the scope order &apos;script&apos; -&gt; &apos;sprite&apos; -&gt; &apos;global&apos; (the first match it finds).&#xD;&#xD;If that variable does not exist (in any scope) an error happens, stopping their script. You can check it before using the &quot;does var (name) exists?&quot; block. </comment><header></header><code></code><translations>pt:o valor de _&#xD;</translations><inputs><input type="%s"><options>§_getVarNamesDict</options></input></inputs><script><block s="doReport"><block s="reportApplyExtension"><l>var_get(name)</l><list><block var="_name"/></list></block></block></script></block-definition><block-definition s="does var %&apos;_name&apos; exist?" type="predicate" category="variables"><comment x="0" y="0" w="146" collapsed="false">This block reports &quot;true&quot; if there is a variable with this given name (input slot) in that context.&#xD;&#xD;It can be a global, sprite or script variable.&#xD;&#xD;Otherwise it reports &quot;false&quot;.</comment><header></header><code></code><translations>pt:a variável _ existe&#xD;ca:existeix la variable _ ?&#xD;es:existe la variable _ ?&#xD;de:existiert var _ ?&#xD;</translations><inputs><input type="%s"></input></inputs><script><block s="doApplyExtension"><l>err_try(cmd, catch, err)</l><list><block s="reifyScript"><script><block s="doApplyExtension"><l>err_ignore</l><list><block s="reportApplyExtension"><l>var_get(name)</l><list><block var="_name"/></list></block></list></block><block s="doReport"><block s="reportBoolean"><l><bool>true</bool></l></block></block></script><list></list></block><block s="reifyScript"><script><block s="doReport"><block s="reportBoolean"><l><bool>false</bool></l></block></block></script><list></list></block><l></l></list></block><block s="doApplyExtension"><l>err_reset</l><list></list></block></script></block-definition><block-definition s="show var %&apos;_name&apos;" type="command" category="variables"><comment x="0" y="0" w="181" collapsed="false">This block turns on (show) the watcher view on stage (if it was not already activated) of the variable with the given name (slot input).&#xD;&#xD;It can only access to the closest variable scope (if there different variables with the same name in different scopes) following the order &apos;script&apos; -&gt; &apos;sprite&apos; -&gt; &apos;global&apos;.&#xD;&#xD;No errors if that variable does not exist.</comment><header></header><code></code><translations>ca:mostra la variable _&#xD;es:mostrar variable _&#xD;pt:mostra a variável _&#xD;de:zeige var _&#xD;</translations><inputs><input type="%s"><options>§_getVarNamesDict</options></input></inputs><script><block s="doApplyExtension"><l>var_show(name)</l><list><block var="_name"/></list></block></script></block-definition><block-definition s="hide var %&apos;_name&apos;" type="command" category="variables"><comment x="0" y="0" w="181" collapsed="false">This block turns off (hide) the watcher view on stage (if it was not already activated) of the variable with the given name (slot input).&#xD;&#xD;It can only access to the closest variable scope (if there different variables with the same name in different scopes) following the order &apos;script&apos; -&gt; &apos;sprite&apos; -&gt; &apos;global&apos;.&#xD;&#xD;No errors if that variable does not exist.</comment><header></header><code></code><translations>ca:amaga la variable _&#xD;es:esconder variable _&#xD;pt:esconde a variável _&#xD;de:verstecke var _&#xD;</translations><inputs><input type="%s"><options>§_getVarNamesDict</options></input></inputs><script><block s="doApplyExtension"><l>var_hide(name)</l><list><block var="_name"/></list></block></script></block-definition><block-definition s="store key: %&apos;key&apos; value: %&apos;value&apos; in browser" type="command" category="other"><header></header><code></code><translations>ca:desa clau: _ amb valor: _ al navegador&#xD;</translations><inputs><input type="%s"></input><input type="%s"></input></inputs><script><block s="doApplyExtension"><l>db_store(key, val)</l><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>ca:dades desades al navegador&#xD;</translations><inputs></inputs><script><block s="doReport"><block s="reportApplyExtension"><l>db_getall</l><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>ca:esborra clau: _ del navegador&#xD;</translations><inputs><input type="%s"></input></inputs><script><block s="doApplyExtension"><l>db_remove(key)</l><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>ca:esborra dades del navegador&#xD;</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="get value from key: %&apos;key&apos; in browser" type="reporter" category="other"><comment x="0" y="0" w="199.33333333333337" collapsed="false">Reports the value previously stored under&#xD;the input key in the browser&apos;s local storage.&#xD;Reports False if the key is not found.</comment><header></header><code></code><translations>ca:obté valor de clau: _ al navegador&#xD;</translations><inputs><input type="%s"></input></inputs><script><block s="doReport"><block s="reportApplyExtension"><l>db_get(key)</l><list><block var="key"/></list></block></block></script></block-definition><block-definition s="then" type="command" category="other"><header></header><code></code><translations></translations><inputs></inputs></block-definition><block-definition s="and" type="command" category="other"><header></header><code></code><translations></translations><inputs></inputs></block-definition><block-definition s="log %&apos;content&apos;" type="command" category="operators"><header></header><code></code><translations></translations><inputs><input type="%s" initial="1"></input></inputs><script><block s="doRun"><block s="reportJSFunction"><list><l>content</l></list><l>console.log(content)</l></block><list><block var="content"/></list></block></script></block-definition><block-definition s="Login to Sage" type="command" category="other"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doDeclareVariables"><list><l>user</l><l>pass</l></list></block><block s="doAsk"><l>what&apos;s your sage username?</l></block><block s="doSetVar"><l>user</l><block s="getLastAnswer"></block></block><block s="doAsk"><l>what&apos;s your sage pass?</l></block><block s="doSetVar"><l>pass</l><block s="getLastAnswer"></block></block><custom-block s="then"></custom-block><custom-block s="create %s var %mult%txt"><l>sprite</l><list><l>authToken</l></list></custom-block><custom-block s="and"></custom-block><block s="doSetVar"><l>authToken</l><custom-block s="value at key %s of %l"><l>token</l><custom-block s="listify %mlt"><custom-block s="%s url: %s send: %s headers: %mult%l"><l>POST</l><l>https://sage.startr.cloud/api/v1/auths/signin</l><block s="evaluate"><block s="reportJSFunction"><list><l>user</l><l>pass</l></list><l>var SAGE_EMAIL = user;&#xD;var SAGE_PASSWORD = pass;&#xD;&#xD;var authPayload = {&#xD;  email: `${SAGE_EMAIL}`,&#xD;  password: `${SAGE_PASSWORD}`&#xD;};&#xD;&#xD;// Convert the authPayload to JSON string and display it&#xD;var authPayloadJson = JSON.stringify(authPayload, null, 2);&#xD;&#xD;return authPayloadJson</l></block><list><block var="user"/><block var="pass"/></list></block><list><block s="reportNewList"><list><l>Content-Type</l><l>application/json</l></list></block></list></custom-block></custom-block></custom-block></block></script><scripts><script x="33.57142857142858" y="513.2047619047617"><custom-block s="log %s"><block var="authToken"/></custom-block></script></scripts></block-definition><block-definition s="Check mail" type="command" category="control"><header></header><code></code><translations></translations><inputs></inputs></block-definition><block-definition s="Remove Spam" type="command" category="lists"><header></header><code></code><translations></translations><inputs></inputs></block-definition><block-definition s="List all leads and tell me via sms" type="command" category="pen"><header></header><code></code><translations></translations><inputs></inputs></block-definition><block-definition s="Wait %&apos;n&apos; Days" type="command" category="control"><header></header><code></code><translations></translations><inputs><input type="%n" initial="1"></input></inputs></block-definition><block-definition s="wait %&apos;n&apos; minutes" type="command" category="control"><header></header><code></code><translations></translations><inputs><input type="%s" initial="1"></input></inputs><script><block s="doWait"><block s="reportVariadicProduct"><list><block var="n"/><l>60</l></list></block></block></script></block-definition><block-definition s="response for: %&apos;ourPrompt&apos;" type="reporter" category="other"><header></header><code></code><translations></translations><inputs><input type="%mult%s" initial="1"></input></inputs><script><block s="doReport"><custom-block s="value at key %s of %l"><l>content</l><custom-block s="value at key %s of %l"><l>message</l><block s="reportListItem"><l>1</l><custom-block s="value at key %s of %l"><l>choices</l><custom-block s="listify %mlt"><custom-block s="%s url: %s send: %s headers: %mult%l"><l>POST</l><l>https://sage.startr.cloud/api/chat/completions&#xD;</l><custom-block s="%mlt"><block s="evaluate"><block s="reportJSFunction"><list><l>content</l></list><l>const jsonString = JSON.stringify({&#xD;  stream: false,&#xD;  model: "llama-3.1-8b-instant",&#xD;  messages: [&#xD;    {&#xD;      role: "user",&#xD;      content: content&#xD;    }&#xD;  ]&#xD;});&#xD;&#xD;return jsonString;</l></block><list><block s="reportJoinWords"><list><block var="ourPrompt"/></list></block></list></block></custom-block><list><custom-block s="key: %s value: %s"><l>Content-Type</l><l>application/json</l></custom-block><custom-block s="key: %s value: %s"><l>Authorization</l><block s="reportJoinWords"><list><l>Bearer </l><block var="authToken"/></list></block></custom-block><custom-block s="key: %s value: %s"><l>accept</l><l>application/json</l></custom-block></list></custom-block></custom-block></custom-block></block></custom-block></custom-block></block></script></block-definition><block-definition s="Advanced API Calls" type="command" category="other"><header></header><code></code><translations></translations><inputs></inputs><script><custom-block s="log %s"><custom-block s="%s url: %s send: %s headers: %mult%l"><l>GET</l><l>https://sage.startr.cloud/api/v1/</l><l></l><list><block s="reportNewList"><list><l>Authorization</l><block s="reportJoinWords"><list><l>Bearer </l><block var="authToken"/></list></block><l>Content-Type</l><l>application/json</l></list></block></list></custom-block></custom-block><custom-block s="log %s"><custom-block s="%s url: %s send: %s headers: %mult%l"><l>GET</l><l>https://sage.startr.cloud/api/models</l><block s="reportListItem"><l>3</l><custom-block s="value at key %s of %l"><l>data</l><custom-block s="listify %mlt"><custom-block s="%s url: %s send: %s headers: %mult%l"><l>GET</l><l>https://sage.startr.cloud/api/models</l><l></l><list><block s="reportNewList"><list><l>Authorization</l><block s="reportJoinWords"><list><l>Bearer </l><block var="authToken"/></list></block></list></block></list></custom-block></custom-block></custom-block></block><list><block s="reportNewList"><list><l>Authorization</l><block s="reportJoinWords"><list><l>Bearer </l><block var="authToken"/></list></block></list></block></list></custom-block></custom-block><custom-block s="create %s var %mult%txt"><l>sprite</l><list><l>chat</l></list></custom-block><custom-block s="set %s to %s"><l>chat</l><custom-block s="%s url: %s send: %s headers: %mult%l"><l>POST</l><l>https://sage.startr.cloud/api/v1/chats/new</l><custom-block s="%mlt"><l>{&#xD;  "chat": {}&#xD;}</l></custom-block><list><custom-block s="key: %s value: %s"><l>Content-Type</l><l>application/json</l></custom-block><custom-block s="key: %s value: %s"><l>Authorization</l><block s="reportJoinWords"><list><l>Bearer </l><block var="authToken"/></list></block></custom-block><custom-block s="key: %s value: %s"><l>accept</l><l>application/json</l></custom-block></list></custom-block></custom-block><block s="doReport"><custom-block s="value at key %s of %l"><l>id</l><custom-block s="listify %mlt"><block var="chat"/></custom-block></custom-block></block></script></block-definition></blocks><primitives><block-definition s="move %&apos;steps&apos; steps" type="command" category="motion" selector="forward"><header></header><code></code><translations></translations><inputs><input type="%n">10</input><input type="%n">10</input></inputs><script><block s="doPrimitive"><l><bool>false</bool></l><l>forward</l></block><block s="doGotoObject"><block s="reportVariadicSum"><list><block s="getPosition"></block><block s="reportVariadicProduct"><list><block s="reportNewList"><list><block s="reportMonadic"><l><option>sin</option></l><block s="direction"></block></block><block s="reportMonadic"><l><option>cos</option></l><block s="direction"></block></block></list></block><block var="steps"/></list></block></list></block></block></script></block-definition><block-definition s="go to x: %&apos;x&apos; y: %&apos;y&apos;" type="command" category="motion" selector="gotoXY"><header></header><code></code><translations></translations><inputs><input type="%n">0</input><input type="%n">0</input><input type="%n">0</input></inputs><script><block s="doPrimitive"><l><bool>false</bool></l><l>gotoXY</l></block><block s="doGotoObject"><block s="reportNewList"><list><block var="x"/><block var="y"/></list></block></block></script></block-definition><block-definition s="go to %&apos;dest&apos;" type="command" category="motion" selector="doGotoObject"><header></header><code></code><translations></translations><inputs><input type="%s" readonly="true">$_random position<options>§_destinationsMenu</options></input></inputs><script><block s="doDeclareVariables"><list><l>pattern</l></list></block><block s="doSetVar"><l>pattern</l><block s="reportListItem"><block s="reportGet"><l><option>name</option></l></block><block var="_embroider"/></block></block><block s="doIfElse"><block s="reportIsA"><block var="pattern"/><l><option>list</option></l></block><script><block s="doSetGlobalFlag"><l><option>log pen vectors</option></l><l><bool>true</bool></l></block><block s="down"></block><block s="doRun"><block s="reifyScript"><script><block s="doWarp"><script><block s="errorObsolete"></block></script></block></script><list></list></block><block var="pattern"/></block><block s="up"></block></script><script><block s="errorObsolete"></block></script></block></script></block-definition><block-definition s="change x by %&apos;delta&apos;" type="command" category="motion" selector="changeXPosition"><header></header><code></code><translations></translations><inputs><input type="%n">10</input><input type="%n">10</input></inputs><script><block s="doPrimitive"><l><bool>false</bool></l><l>changeXPosition</l></block><block s="setXPosition"><block s="reportVariadicSum"><list><block s="xPosition"></block><block var="delta"/></list></block></block></script></block-definition><block-definition s="set x to %&apos;x&apos;" type="command" category="motion" selector="setXPosition"><header></header><code></code><translations></translations><inputs><input type="%n">0</input><input type="%n">0</input></inputs><script><block s="doPrimitive"><l><bool>false</bool></l><l>setXPosition</l></block><block s="doGotoObject"><block s="reportNewList"><list><block var="x"/><block s="yPosition"></block></list></block></block></script></block-definition><block-definition s="change y by %&apos;delta&apos;" type="command" category="motion" selector="changeYPosition"><header></header><code></code><translations></translations><inputs><input type="%n">10</input><input type="%n">10</input></inputs><script><block s="doPrimitive"><l><bool>false</bool></l><l>changeYPosition</l></block><block s="setYPosition"><block s="reportVariadicSum"><list><block s="yPosition"></block><block var="delta"/></list></block></block></script></block-definition><block-definition s="set y to %&apos;y&apos;" type="command" category="motion" selector="setYPosition"><header></header><code></code><translations></translations><inputs><input type="%n">0</input><input type="%n">0</input></inputs><script><block s="doPrimitive"><l><bool>false</bool></l><l>setYPosition</l></block><block s="doGotoObject"><block s="reportNewList"><list><block s="xPosition"></block><block var="y"/></list></block></block></script></block-definition><block-definition s="join %&apos;#1&apos;" type="reporter" category="operators" selector="reportJoinWords" primitive="reportJoinWords"><header></header><code></code><translations></translations><inputs><input type="%mult%s" readonly="true" initial="2">hello &#xD;world</input></inputs><script><block s="doPrimitive"><l><bool>true</bool></l><l>reportJoinWords</l></block></script></block-definition><block-definition s="create script variables %&apos;#1&apos;" type="command" category="other" selector="doDeclareVariables" primitive="doDeclareVariables"><header></header><code></code><translations></translations><inputs><input type="%scriptVars" readonly="true" irreplaceable="true" initial="1" min="1"></input></inputs><script><block s="doPrimitive"><l><bool>true</bool></l><l>doDeclareVariables</l></block></script></block-definition></primitives><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="671"><pentrails>data:image/png;base64,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</pentrails><costumes><list struct="atomic" id="672"></list></costumes><sounds><list struct="atomic" id="673"></list></sounds><variables></variables><blocks></blocks><scripts></scripts><sprites select="1"><sprite name="Sprite" idx="1" x="0" y="1.2505552149377763e-12" heading="90" scale="1" volume="100" pan="0" rotation="1" draggable="true" costume="0" color="80,80,80,1" pen="tip" id="678"><costumes><list struct="atomic" id="679"></list></costumes><sounds><list struct="atomic" id="680"></list></sounds><blocks></blocks><variables><variable name="authToken" transient="true"/><variable name="chat" transient="true"/></variables><scripts><script x="11.11111111111111" y="6.111111111111111"><block s="receiveGo"></block><custom-block s="Login to Sage"></custom-block></script><script x="11.11111111111111" y="69.46296296296298"><custom-block s="response for: %mult%s"><list><l>Hello</l></list></custom-block></script><script x="11.11111111111111" y="95.79629629629633"><block s="doDeclareVariables"><list><l>ideas</l><l>best option</l></list></block><custom-block s="set %s to %s"><l>ideas</l><custom-block s="response for: %mult%s"><list><custom-block s="%mlt"><l>Act a music teacher.&#xD;What are some great project ideas for grade 7?</l></custom-block></list></custom-block></custom-block><custom-block s="log %s"><block var="ideas"/></custom-block><custom-block s="set %s to %s"><l>best option</l><custom-block s="response for: %mult%s"><list><l>As a  teacher explain what might be the best idea in the list:</l><block var="ideas"/></list></custom-block></custom-block><custom-block s="log %s"><block var="best option"/></custom-block></script><script x="13.88888888888889" y="270.4074074074074"><custom-block s="Advanced API Calls"></custom-block></script></scripts></sprite><sprite name="Sprite(2)" idx="2" x="-202.93704600484352" y="-160.2808716707013" heading="90" scale="1" volume="100" pan="0" rotation="1" draggable="true" costume="0" color="62.83200000000001,112.2,0,1" pen="tip" id="717"><costumes><list struct="atomic" id="718"></list></costumes><sounds><list struct="atomic" id="719"></list></sounds><blocks></blocks><variables></variables><scripts><script x="30" y="29.38461538461537"><block s="receiveKey"><l><option>space</option></l><list></list></block><block s="doForever"><script><custom-block s="wait %s minutes"><l>1</l></custom-block><custom-block s="Check mail"></custom-block><custom-block s="Remove Spam"></custom-block><custom-block s="List all leads and tell me via sms"></custom-block></script></block></script></scripts></sprite><watcher scope="Sprite" var="authToken" style="normal" x="0" y="14.371257485029929" color="243,118,29" hidden="true"/><watcher scope="Sprite" var="chat" style="normal" x="0" y="14.371257485029929" color="243,118,29" hidden="true"/></sprites></stage><variables></variables></scene></scenes></project><media name="Login to Sage" app="Snap! 10, https://snap.berkeley.edu" version="2"></media></snapdata>