<snapdata remixID="13469127"><project name="My Blocks" app="Snap! 10, https://snap.berkeley.edu" version="2"><notes></notes><thumbnail>data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAKAAAAB4CAYAAAB1ovlvAAAAAXNSR0IArs4c6QAAAnpJREFUeF7t17Fpw1AARdFv7WJN4EVcawrPJZeeR3u4kiGQkCYJaXxBHLUSPHT/AaHTvu/7cCkQFTgBGJU3+1EAQBDSAgCm+Y0DyEBaAMA0v3EAGUgLAJjmNw4gA2kBANP8xgFkIC0AYJrfOIAMpAUATPMbB5CBtACAaX7jADKQFgAwzW8cQAbSAgCm+Y0DyEBaAMA0v3EAGUgLAJjmNw4gA2kBANP8xgFkIC0AYJrfOIAMpAUATPMbB5CBtACAaX7jADKQFgAwzW8cQAbSAgCm+Y0DyEBaAMA0v3EAGUgLAJjmNw4gA2kBANP8xgFkIC0AYJrfOIAMpAUATPMbB5CBtACAaX7jADKQFgAwzW8cQAbSAgCm+Y0DyEBaAMA0v3EAGUgLAJjmNw4gA2kBAH/If7lcxu12G8uypAd09HEAfznh6/X6dXfbtnG/38f5fD66ibe+H4B/5P6O8PPRaZrG8/kcj8fjrYd1xDEAAUxdA/iPT/C6rmOe5/TAjjYOoJ+Q1DSAaX7jADKQFgAwzW8cQAbSAgCm+Y0DyEBaAMA0v3EAGUgLAJjmNw4gA2kBANP8xgFkIC0AYJrfOIAMpAUATPMbB5CBtACAaX7jADKQFgAwzW8cQAbSAgCm+Y0DyEBaAMA0v3EAGUgLAJjmNw4gA2kBANP8xgFkIC0AYJrfOIAMpAUATPMbB5CBtACAaX7jADKQFgAwzW8cQAbSAgCm+Y0DyEBaAMA0v3EAGUgLAJjmNw4gA2kBANP8xgFkIC0AYJrfOIAMpAUATPMbB5CBtACAaX7jADKQFgAwzW8cQAbSAgCm+Y0DyEBaAMA0v3EAGUgLAJjmN/4C1wn8qIbHiI0AAAAASUVORK5CYII=</thumbnail><scenes select="1"><scene name="My Blocks"><notes></notes><palette><category name="Avi&apos;s Custom Blocks" color="255,220,0,1"/></palette><hidden></hidden><headers></headers><code></code><blocks><block-definition s="Edges of costume %&apos;costume&apos;" type="reporter" category="Avi&apos;s Custom Blocks"><header></header><code></code><translations></translations><inputs><input type="%s"><options>§_costumesMenu</options></input></inputs><script><block s="doDeclareVariables"><list><l>test total</l><l>pixels</l><l>x</l><l>y</l></list></block><block s="doWarp"><script><block s="doSetVar"><l>pixels</l><block s="reportQuotient"><block s="reportVariadicSum"><block s="reportListItem"><block s="reportNumbers"><l>1</l><l>3</l></block><block s="reportListAttribute"><l><option>columns</option></l><block s="reportGetImageAttribute"><l><option>pixels</option></l><block var="costume"/></block></block></block></block><l>3</l></block></block><block s="doSetVar"><l>x</l><l>1</l></block><block s="doSetVar"><l>y</l><block s="reportGetImageAttribute"><l><option>width</option></l><block var="costume"/></block></block><block s="doSetVar"><l>test total</l><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportVariadicMin"><list><block s="reportMonadic"><l><option>sqrt</option></l><block s="reportVariadicSum"><list><block s="reportPower"><block s="reportVariadicSum"><block s="reportVariadicSum"><block s="reportVariadicProduct"><list><custom-block s="kernel %br %n %n %n %br %n %n %n %br %n %n %n"><block s="reportListItem"><block s="reportVariadicMin"><list><block s="reportVariadicMax"><list><block s="reportDifference"><block s="reportDifference"><block var="index"/><block var="y"/></block><block var="x"/></block><l>1</l></list></block><block s="reportListAttribute"><l><option>length</option></l><block var="pixels"/></block></list></block><block var="list"/></block><block s="reportListItem"><block s="reportVariadicMin"><list><block s="reportVariadicMax"><list><block s="reportDifference"><block var="index"/><block var="y"/></block><l>1</l></list></block><block s="reportListAttribute"><l><option>length</option></l><block var="pixels"/></block></list></block><block var="list"/></block><block s="reportListItem"><block s="reportVariadicMin"><list><block s="reportVariadicMax"><list><block s="reportVariadicSum"><list><block s="reportDifference"><block var="index"/><block var="y"/></block><block var="x"/></list></block><l>1</l></list></block><block s="reportListAttribute"><l><option>length</option></l><block var="pixels"/></block></list></block><block var="list"/></block><block s="reportListItem"><block s="reportVariadicMin"><list><block s="reportVariadicMax"><list><block s="reportDifference"><block var="index"/><block var="x"/></block><l>1</l></list></block><block s="reportListAttribute"><l><option>length</option></l><block var="pixels"/></block></list></block><block var="list"/></block><block s="reportListItem"><block var="index"/><block var="list"/></block><block s="reportListItem"><block s="reportVariadicMin"><list><block s="reportVariadicMax"><list><block s="reportVariadicSum"><list><block var="index"/><block var="x"/></list></block><l>1</l></list></block><block s="reportListAttribute"><l><option>length</option></l><block var="pixels"/></block></list></block><block var="list"/></block><block s="reportListItem"><block s="reportVariadicMin"><list><block s="reportVariadicMax"><list><block s="reportDifference"><block s="reportVariadicSum"><list><block var="index"/><block var="y"/></list></block><block var="x"/></block><l>1</l></list></block><block s="reportListAttribute"><l><option>length</option></l><block var="pixels"/></block></list></block><block var="list"/></block><block s="reportListItem"><block s="reportVariadicMin"><list><block s="reportVariadicMax"><list><block s="reportVariadicSum"><list><block var="index"/><block var="y"/></list></block><l>1</l></list></block><block s="reportListAttribute"><l><option>length</option></l><block var="pixels"/></block></list></block><block var="list"/></block><block s="reportListItem"><block s="reportVariadicMin"><list><block s="reportVariadicMax"><list><block s="reportVariadicSum"><list><block s="reportVariadicSum"><list><block var="index"/><block var="y"/></list></block><block var="x"/></list></block><l>1</l></list></block><block s="reportListAttribute"><l><option>length</option></l><block var="pixels"/></block></list></block><block var="list"/></block></custom-block><custom-block s="kernel %br %n %n %n %br %n %n %n %br %n %n %n"><l>1</l><l>2</l><l>1</l><l>0</l><l>0</l><l>0</l><l>-1</l><l>-2</l><l>-1</l></custom-block></list></block></block></block><l>2</l></block><block s="reportPower"><block s="reportVariadicSum"><block s="reportVariadicSum"><block s="reportVariadicProduct"><list><custom-block s="kernel %br %n %n %n %br %n %n %n %br %n %n %n"><block s="reportListItem"><block s="reportVariadicMin"><list><block s="reportVariadicMax"><list><block s="reportDifference"><block s="reportDifference"><block var="index"/><block var="y"/></block><block var="x"/></block><l>1</l></list></block><block s="reportListAttribute"><l><option>length</option></l><block var="pixels"/></block></list></block><block var="list"/></block><block s="reportListItem"><block s="reportVariadicMin"><list><block s="reportVariadicMax"><list><block s="reportDifference"><block var="index"/><block var="y"/></block><l>1</l></list></block><block s="reportListAttribute"><l><option>length</option></l><block var="pixels"/></block></list></block><block var="list"/></block><block s="reportListItem"><block s="reportVariadicMin"><list><block s="reportVariadicMax"><list><block s="reportVariadicSum"><list><block s="reportDifference"><block var="index"/><block var="y"/></block><block var="x"/></list></block><l>1</l></list></block><block s="reportListAttribute"><l><option>length</option></l><block var="pixels"/></block></list></block><block var="list"/></block><block s="reportListItem"><block s="reportVariadicMin"><list><block s="reportVariadicMax"><list><block s="reportDifference"><block var="index"/><block var="x"/></block><l>1</l></list></block><block s="reportListAttribute"><l><option>length</option></l><block var="pixels"/></block></list></block><block var="list"/></block><block s="reportListItem"><block var="index"/><block var="list"/></block><block s="reportListItem"><block s="reportVariadicMin"><list><block s="reportVariadicMax"><list><block s="reportVariadicSum"><list><block var="index"/><block var="x"/></list></block><l>1</l></list></block><block s="reportListAttribute"><l><option>length</option></l><block var="pixels"/></block></list></block><block var="list"/></block><block s="reportListItem"><block s="reportVariadicMin"><list><block s="reportVariadicMax"><list><block s="reportDifference"><block s="reportVariadicSum"><list><block var="index"/><block var="y"/></list></block><block var="x"/></block><l>1</l></list></block><block s="reportListAttribute"><l><option>length</option></l><block var="pixels"/></block></list></block><block var="list"/></block><block s="reportListItem"><block s="reportVariadicMin"><list><block s="reportVariadicMax"><list><block s="reportVariadicSum"><list><block var="index"/><block var="y"/></list></block><l>1</l></list></block><block s="reportListAttribute"><l><option>length</option></l><block var="pixels"/></block></list></block><block var="list"/></block><block s="reportListItem"><block s="reportVariadicMin"><list><block s="reportVariadicMax"><list><block s="reportVariadicSum"><list><block s="reportVariadicSum"><list><block var="index"/><block var="y"/></list></block><block var="x"/></list></block><l>1</l></list></block><block s="reportListAttribute"><l><option>length</option></l><block var="pixels"/></block></list></block><block var="list"/></block></custom-block><custom-block s="kernel %br %n %n %n %br %n %n %n %br %n %n %n"><l>1</l><l>0</l><l>-1</l><l>2</l><l>0</l><l>-2</l><l>1</l><l>0</l><l>-1</l></custom-block></list></block></block></block><l>2</l></block></list></block></block><l>255</l></list></block></autolambda><list><l>value</l><l>index</l><l>list</l></list></block><block var="pixels"/></block></block></script></block><block s="doReport"><block s="reportNewCostume"><block var="test total"/><block s="reportGetImageAttribute"><l><option>width</option></l><block var="costume"/></block><block s="reportGetImageAttribute"><l><option>height</option></l><block var="costume"/></block></block></block></script></block-definition><block-definition s="$camera snap" type="reporter" category="sensing"><comment x="0" y="0" w="216" collapsed="false">takes a snapshot with the webcam and reports it as a new costume, or zero if the user cancels</comment><header></header><code></code><translations>pt:$camera a imagem actual do vídeo&#xD;</translations><inputs></inputs><script><block s="doDeclareVariables"><list><l>callback</l><l>pic</l></list></block><block s="doSetVar"><l>callback</l><block s="reportApplyExtension"><l>mda_snap</l><list></list></block></block><block s="doWaitUntil"><block s="evaluate"><block s="reifyScript"><script><block s="doSetVar"><l>pic</l><block s="evaluate"><block var="callback"/><list></list></block></block><block s="doReport"><block s="reportNot"><block s="reportVariadicEquals"><list><block var="pic"/><block s="reportBoolean"><l><bool>false</bool></l></block></list></block></block></block></script><list></list></block><list></list></block></block><block s="doReport"><block var="pic"/></block></script></block-definition><block-definition s="export costume %&apos;costume&apos;" type="command" category="looks"><header></header><code></code><translations></translations><inputs><input type="%s" readonly="true"><options>§_costumesMenu</options></input></inputs><script><block s="doSetVar"><l>costume</l><block s="reportIfElse"><block s="reportIsA"><block var="costume"/><l><option>costume</option></l></block><block var="costume"/><block s="reportFindFirst"><block s="reifyPredicate"><autolambda><block s="reportVariadicEquals"><list><block s="reportGetImageAttribute"><l><option>name</option></l><l></l></block><block var="costume"/></list></block></autolambda><list></list></block><block s="reportGet"><l><option>costumes</option></l></block></block></block></block><block s="doIf"><block s="reportIsA"><block var="costume"/><l><option>costume</option></l></block><script><block s="doApplyExtension"><l>cst_export(cst, name)</l><list><block var="costume"/><l></l></list></block></script><list></list></block></script></block-definition><block-definition s="set name of costume %&apos;costume&apos; to %&apos;name&apos;" type="command" category="looks"><header></header><code></code><translations></translations><inputs><input type="%s" readonly="true"><options>§_costumesMenu</options></input><input type="%s">thing</input></inputs><script><block s="doSetVar"><l>costume</l><block s="reportIfElse"><block s="reportIsA"><block var="costume"/><l><option>costume</option></l></block><block var="costume"/><block s="reportFindFirst"><block s="reifyPredicate"><autolambda><block s="reportVariadicEquals"><list><block s="reportGetImageAttribute"><l><option>name</option></l><l></l></block><block var="costume"/></list></block></autolambda><list></list></block><block s="reportGet"><l><option>costumes</option></l></block></block></block></block><block s="doIf"><block s="reportIsA"><block var="costume"/><l><option>costume</option></l></block><script><block s="doApplyExtension"><l>obj_name(obj, name)</l><list><block var="costume"/><block var="name"/></list></block></script><list></list></block></script></block-definition><block-definition s="export costume list %&apos;costumes&apos; base name %&apos;name&apos;" type="command" category="looks"><header></header><code></code><translations></translations><inputs><input type="%l"></input><input type="%s">frame</input></inputs><script><block s="doDeclareVariables"><list><l>count</l></list></block><block s="doSetVar"><l>count</l><block s="reportListAttribute"><l><option>length</option></l><block var="costumes"/></block></block><block s="doForEach"><l>item</l><block s="reportListAttribute"><l><option>reverse</option></l><block var="costumes"/></block><script><block s="doApplyExtension"><l>cst_export(cst, name)</l><list><block var="item"/><block s="reportJoinWords"><list><block var="name"/><l> (</l><block var="count"/><l>)</l></list></block></list></block><block s="doChangeVar"><l>count</l><l>-1</l></block><block s="doIf"><block s="reportVariadicEquals"><list><block s="reportModulus"><block var="count"/><l>10</l></block><l>0</l></list></block><script><block s="doWait"><l>1</l></block></script><list></list></block></script></block></script></block-definition><block-definition s="%&apos;filter&apos; filter on %&apos;costume&apos; alpha %&apos;alpha&apos;" type="reporter" category="looks"><header></header><code></code><translations></translations><inputs><input type="%s" readonly="true">blur<options>blur&#xD;sharpen&#xD;outline&#xD;emboss&#xD;edge={&#xD;left&#xD;right&#xD;top&#xD;bottom&#xD;}&#xD;Gauss</options></input><input type="%s" readonly="true">current<options>§_costumesMenu</options></input><input type="%b">true</input></inputs><script><block s="doDeclareVariables"><list><l>kernel</l><l>pixels</l><l>channels</l></list></block><block s="doSetVar"><l>kernel</l><block s="reportIfElse"><block s="reportVariadicGreaterThan"><list><block s="reportListAttribute"><l><option>rank</option></l><block var="filter"/></block><l>1</l></list></block><block var="filter"/><custom-block s="filter %s"><block var="filter"/></custom-block></block></block><block s="doSetVar"><l>pixels</l><block s="reportGetImageAttribute"><l><option>pixels</option></l><block var="costume"/></block></block><block s="doIf"><block var="alpha"/><script><block s="doSetVar"><l>channels</l><l>4</l></block></script><list><l><bool>true</bool></l><script><block s="doSetVar"><l>channels</l><l>3</l></block><block s="doSetVar"><l>pixels</l><block s="reportVariadicProduct"><list><block var="pixels"/><block s="reportNewList"><list><l>1</l><l>1</l><l>1</l></list></block></list></block><comment w="137" collapsed="true">remove alpha channel</comment></block></script></list></block><block s="doReport"><block s="reportNewCostume"><custom-block s="convolve matrix %l * kernel %l"><block s="reportReshape"><block var="pixels"/><list><block s="reportGetImageAttribute"><l><option>height</option></l><block var="costume"/></block><block s="reportGetImageAttribute"><l><option>width</option></l><block var="costume"/></block><block var="channels"/></list></block><block var="kernel"/></custom-block><l></l><l></l></block></block></script></block-definition><block-definition s="filter %&apos;name&apos;" type="reporter" category="looks"><header></header><code></code><translations></translations><inputs><input type="%s" readonly="true">blur<options>blur&#xD;sharpen&#xD;outline&#xD;emboss&#xD;edge={&#xD;left&#xD;right&#xD;top&#xD;bottom&#xD;}&#xD;Gauss</options></input></inputs><script><block s="doIf"><block s="reportVariadicEquals"><list><block var="name"/><l>sharpen</l></list></block><script><block s="doReport"><custom-block s="kernel %br %n %n %n %br %n %n %n %br %n %n %n"><l>0</l><l>-1</l><l>0</l><l>-1</l><l>5</l><l>-1</l><l>0</l><l>-1</l><l>0</l></custom-block></block></script><list><block s="reportVariadicEquals"><list><block var="name"/><l>outline</l></list></block><script><block s="doReport"><custom-block s="kernel %br %n %n %n %br %n %n %n %br %n %n %n"><l>-1</l><l>-1</l><l>-1</l><l>-1</l><l>8</l><l>-1</l><l>-1</l><l>-1</l><l>-1</l></custom-block></block></script><block s="reportVariadicEquals"><list><block var="name"/><l>emboss</l></list></block><script><block s="doReport"><custom-block s="kernel %br %n %n %n %br %n %n %n %br %n %n %n"><l>-2</l><l>-1</l><l>0</l><l>-1</l><l>1</l><l>1</l><l>0</l><l>1</l><l>2</l></custom-block></block></script><block s="reportVariadicEquals"><list><block var="name"/><l>left</l></list></block><script><block s="doReport"><custom-block s="kernel %br %n %n %n %br %n %n %n %br %n %n %n"><l>-1</l><l>0</l><l>1</l><l>-2</l><l>0</l><l>2</l><l>-1</l><l>0</l><l>1</l></custom-block></block></script><block s="reportVariadicEquals"><list><block var="name"/><l>right</l></list></block><script><block s="doReport"><custom-block s="kernel %br %n %n %n %br %n %n %n %br %n %n %n"><l>1</l><l>0</l><l>-1</l><l>2</l><l>0</l><l>-2</l><l>1</l><l>0</l><l>-1</l></custom-block></block></script><block s="reportVariadicEquals"><list><block var="name"/><l>top</l></list></block><script><block s="doReport"><custom-block s="kernel %br %n %n %n %br %n %n %n %br %n %n %n"><l>-1</l><l>-2</l><l>-1</l><l>0</l><l>0</l><l>0</l><l>1</l><l>2</l><l>1</l></custom-block></block></script><block s="reportVariadicEquals"><list><block var="name"/><l>bottom</l></list></block><script><block s="doReport"><custom-block s="kernel %br %n %n %n %br %n %n %n %br %n %n %n"><l>1</l><l>2</l><l>1</l><l>0</l><l>0</l><l>0</l><l>-1</l><l>-2</l><l>-1</l></custom-block></block></script><block s="reportVariadicEquals"><list><block var="name"/><l>gauss</l></list></block><script><block s="doReport"><block s="reportQuotient"><block s="reportNewList"><list><block s="reportNewList"><list><l>1</l><l>4</l><l>7</l><l>4</l><l>1</l></list></block><block s="reportNewList"><list><l>4</l><l>16</l><l>26</l><l>16</l><l>4</l></list></block><block s="reportNewList"><list><l>7</l><l>26</l><l>41</l><l>26</l><l>7</l></list></block><block s="reportNewList"><list><l>4</l><l>16</l><l>26</l><l>16</l><l>4</l></list></block><block s="reportNewList"><list><l>1</l><l>4</l><l>7</l><l>4</l><l>1</l></list></block></list></block><l>273</l></block></block></script></list></block><block s="doReport"><custom-block s="kernel %br %n %n %n %br %n %n %n %br %n %n %n"><l>0.0625</l><l>0.125</l><l>0.0625</l><l>0.125</l><l>0.25</l><l>0.125</l><l>0.0625</l><l>0.125</l><l>0.0625</l><comment w="80" collapsed="false">blur</comment></custom-block></block></script></block-definition><block-definition s="kernel $nl %&apos;a1&apos; %&apos;b1&apos; %&apos;c1&apos; $nl %&apos;a2&apos; %&apos;b2&apos; %&apos;c2&apos; $nl %&apos;a3&apos; %&apos;b3&apos; %&apos;c3&apos;" type="reporter" category="lists"><header></header><code></code><translations></translations><inputs><input type="%n"></input><input type="%n"></input><input type="%n"></input><input type="%n"></input><input type="%n"></input><input type="%n"></input><input type="%n"></input><input type="%n"></input><input type="%n"></input></inputs><script><block s="doReport"><block s="reportReshape"><block s="reportEnvironment"><l><option>inputs</option></l></block><list><l>3</l><l>3</l></list></block></block></script></block-definition><block-definition s="convolve matrix %&apos;matrix&apos; * kernel %&apos;kernel&apos;" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%l"></input><input type="%l"></input></inputs><script><block s="doDeclareVariables"><list><l>padding</l><l>channels</l><l>every coordinate</l><l>channel indices</l></list></block><block s="doSetVar"><l>padding</l><block s="reportQuotient"><block s="reportDifference"><block s="reportListItem"><block s="reportNewList"><list><l>1</l><l>2</l></list></block><block s="reportListAttribute"><l><option>dimensions</option></l><block var="kernel"/></block></block><l>1</l></block><l>2</l></block><comment w="119" collapsed="false">assume odd dimensions, typically 3x3 or 5x5</comment></block><block s="doSetVar"><l>channels</l><block s="reportListItem"><l>3</l><block s="reportListAttribute"><l><option>dimensions</option></l><block var="matrix"/></block></block></block><block s="doSetVar"><l>every coordinate</l><block s="reportCrossproduct"><block s="reportNumbers"><l>1</l><block s="reportListItem"><block s="reportNewList"><list><l>1</l><l>2</l></list></block><block s="reportListAttribute"><l><option>dimensions</option></l><block var="matrix"/></block></block></block></block></block><block s="doIfElse"><block s="reportVariadicGreaterThan"><list><block var="channels"/><l>0</l></list></block><script><block s="doSetVar"><l>channel indices</l><block s="reportNewList"><list><block s="reportReshape"><block s="reportNumbers"><l>1</l><block var="channels"/></block><list><block s="reportListAttribute"><l><option>length</option></l><block var="every coordinate"/></block><block var="channels"/></list></block></list></block></block><block s="doIf"><block s="reportVariadicLessThan"><list><block s="reportListAttribute"><l><option>dimensions</option></l><block var="kernel"/></block><l>3</l></list></block><script><block s="doSetVar"><l>kernel</l><block s="reportReshape"><custom-block s="stretch %l by %n"><block s="reportListAttribute"><l><option>flatten</option></l><block var="kernel"/></block><block var="channels"/></custom-block><block s="reportConcatenatedLists"><list><block s="reportListAttribute"><l><option>dimensions</option></l><block var="kernel"/></block><block s="reportNewList"><list><block var="channels"/></list></block></list></block></block></block></script><list></list><comment w="90" collapsed="false">reshape the kernel to match the input matrix&apos;s channels, if any</comment></block></script><script><block s="doSetVar"><l>channel indices</l><block s="reportNewList"><list></list></block></block></script></block><block s="doReport"><block s="reportReshape"><block s="reportVariadicSum"><block s="reportListAttribute"><l><option>columns</option></l><block s="reportVariadicSum"><block s="reportListAttribute"><l><option>columns</option></l><block s="reportVariadicProduct"><list><block s="reportListItem"><block s="reportListAttribute"><l><option>columns</option></l><block s="reportConcatenatedLists"><list><block s="reportListAttribute"><l><option>columns</option></l><block s="reportNumbers"><block s="reportDifference"><block var="every coordinate"/><block var="padding"/></block><block s="reportVariadicSum"><list><block var="every coordinate"/><block var="padding"/></list></block></block></block><block var="channel indices"/></list></block></block><block var="matrix"/></block><block var="kernel"/></list></block></block></block></block></block><block s="reportListAttribute"><l><option>dimensions</option></l><block var="matrix"/></block><comment w="80" collapsed="false">for every padded pixel create a partial copy of the input, item-multiply it with the kernel and take its overall sum (∑)</comment></block></block></script></block-definition><block-definition s="stretch %&apos;data&apos; by %&apos;factor&apos;" type="reporter" category="lists"><header></header><code></code><translations></translations><inputs><input type="%l"></input><input type="%n"></input></inputs><script><block s="doReport"><block s="reportListItem"><block s="reportMonadic"><l><option>ceiling</option></l><block s="reportQuotient"><block s="reportNumbers"><l>1</l><block s="reportVariadicProduct"><list><block s="reportListAttribute"><l><option>length</option></l><block var="data"/></block><block var="factor"/></list></block></block><block var="factor"/></block></block><block var="data"/></block></block></script></block-definition><block-definition s="time till Year: %&apos;year.i&apos; Month: %&apos;month.i&apos; Day: %&apos;day.i&apos;" type="reporter" category="Avi&apos;s Custom Blocks"><header></header><code></code><translations></translations><inputs><input type="%s">2025</input><input type="%s">1</input><input type="%s">1</input></inputs><script><block s="doDeclareVariables"><list><l>countDays</l></list></block><block s="doDeclareVariables"><list><l>countYear</l></list></block><block s="doDeclareVariables"><list><l>dayLightSaving</l></list></block><block s="doDeclareVariables"><list><l>daysInMonth</l></list></block><block s="doDeclareVariables"><list><l>endDay</l></list></block><block s="doDeclareVariables"><list><l>endHour</l></list></block><block s="doDeclareVariables"><list><l>endMinute</l></list></block><block s="doDeclareVariables"><list><l>endMonth</l></list></block><block s="doDeclareVariables"><list><l>endSecond</l></list></block><block s="doDeclareVariables"><list><l>endYear</l></list></block><block s="doDeclareVariables"><list><l>firstMonthAdder</l></list></block><block s="doDeclareVariables"><list><l>hours</l></list></block><block s="doDeclareVariables"><list><l>inBetweenMonths</l></list></block><block s="doDeclareVariables"><list><l>lastMonthAdder</l></list></block><block s="doDeclareVariables"><list><l>minutes</l></list></block><block s="doDeclareVariables"><list><l>seconds</l></list></block><block s="doDeclareVariables"><list><l>startDay</l></list></block><block s="doDeclareVariables"><list><l>startHour</l></list></block><block s="doDeclareVariables"><list><l>startMinute</l></list></block><block s="doDeclareVariables"><list><l>startMonth</l></list></block><block s="doDeclareVariables"><list><l>startSecond</l></list></block><block s="doDeclareVariables"><list><l>startYear</l></list></block><block s="doDeclareVariables"><list><l>test</l></list></block><block s="doDeclareVariables"><list><l>totalMonths</l></list></block><block s="doSetVar"><l>endYear</l><block var="year.i"/></block><block s="doSetVar"><l>endMonth</l><block var="month.i"/></block><block s="doSetVar"><l>endDay</l><block var="day.i"/></block><block s="doSetVar"><l>endHour</l><l>0</l></block><block s="doSetVar"><l>endMinute</l><l>0</l></block><block s="doSetVar"><l>endSecond</l><l>0</l></block><block s="doWarp"><script><block s="doSetVar"><l>dayLightSaving</l><block s="reportBoolean"><l><bool>true</bool></l></block></block><block s="doSetVar"><l>lastMonthAdder</l><l>0</l></block><block s="doSetVar"><l>firstMonthAdder</l><l>0</l></block><block s="doSetVar"><l>startSecond</l><block s="reportDate"><l><option>second</option></l></block></block><block s="doSetVar"><l>startMinute</l><block s="reportDate"><l><option>minute</option></l></block></block><block s="doSetVar"><l>startHour</l><block s="reportDate"><l><option>hour</option></l></block></block><block s="doSetVar"><l>startDay</l><block s="reportDate"><l><option>date</option></l></block></block><block s="doSetVar"><l>startYear</l><block s="reportDate"><l><option>year</option></l></block></block><block s="doSetVar"><l>startMonth</l><block s="reportDate"><l><option>month</option></l></block></block><block s="doSetVar"><l>inBetweenMonths</l><block s="reportDifference"><block s="reportVariadicSum"><list><block s="reportVariadicProduct"><list><block s="reportDifference"><block var="endYear"/><block var="startYear"/></block><l>12</l></list></block><block var="endMonth"/></list></block><block var="startMonth"/></block></block><block s="doSetVar"><l>daysInMonth</l><block s="reportNewList"><list><l>31</l><l>28</l><l>31</l><l>30</l><l>31</l><l>30</l><l>31</l><l>31</l><l>30</l><l>31</l><l>30</l><l>31</l></list></block></block><block s="doSetVar"><l>countYear</l><block var="startYear"/></block><block s="doSetVar"><l>totalMonths</l><block s="reportNewList"><list></list></block></block><block s="doSetVar"><l>test</l><block s="reportVariadicSum"><list><block var="startMonth"/><l>1</l></list></block></block><block s="doIfElse"><block s="reportVariadicAnd"><list><block s="reportNot"><block s="reportVariadicEquals"><list><block var="inBetweenMonths"/><l>1</l></list></block></block><block s="reportNot"><block s="reportVariadicEquals"><list><block var="inBetweenMonths"/><l>0</l></list></block></block></list></block><script><block s="doFor"><l>i</l><block s="reportVariadicSum"><list><block var="startMonth"/><l>1</l></list></block><block s="reportDifference"><block s="reportVariadicSum"><list><block var="startMonth"/><block var="inBetweenMonths"/></list></block><l>1</l></block><script><block s="doIfElse"><block s="reportVariadicAnd"><list><block s="reportVariadicEquals"><list><block s="reportModulus"><block var="countYear"/><l>4</l></block><l>0</l></list></block><block s="reportVariadicEquals"><list><block var="test"/><l>2</l></list></block><block s="reportIfElse"><block s="reportVariadicEquals"><list><block s="reportModulus"><block var="countYear"/><l>100</l></block><l>0</l></list></block><block s="reportVariadicEquals"><list><block s="reportModulus"><block var="countYear"/><l>400</l></block><l>0</l></list></block><block s="reportNot"><block s="reportVariadicEquals"><list><block s="reportModulus"><block var="countYear"/><l>100</l></block><l>0</l></list></block></block></block></list></block><script><block s="doAddToList"><l>29</l><block var="totalMonths"/></block></script><script><block s="doAddToList"><block s="reportListItem"><block var="test"/><block var="daysInMonth"/></block><block var="totalMonths"/></block></script></block><block s="doIf"><block s="reportVariadicEquals"><list><block var="test"/><l>12</l></list></block><script><block s="doSetVar"><l>test</l><l>0</l></block><block s="doChangeVar"><l>countYear</l><l>1</l></block></script><list></list></block><block s="doChangeVar"><l>test</l><l>1</l></block></script></block><block s="doSetVar"><l>firstMonthAdder</l><block s="reportListItem"><block var="startMonth"/><block var="daysInMonth"/></block></block><block s="doIf"><block s="reportVariadicAnd"><list><block s="reportVariadicEquals"><list><block s="reportModulus"><block var="countYear"/><l>4</l></block><l>0</l></list></block><block s="reportVariadicEquals"><list><block var="startMonth"/><l>2</l></list></block><block s="reportIfElse"><block s="reportVariadicEquals"><list><block s="reportModulus"><block var="countYear"/><l>100</l></block><l>0</l></list></block><block s="reportVariadicEquals"><list><block s="reportModulus"><block var="countYear"/><l>400</l></block><l>0</l></list></block><block s="reportNot"><block s="reportVariadicEquals"><list><block s="reportModulus"><block var="countYear"/><l>100</l></block><l>0</l></list></block></block></block></list></block><script><block s="doSetVar"><l>firstMonthAdder</l><l>29</l></block></script><list></list></block><block s="doSetVar"><l>firstMonthAdder</l><block s="reportDifference"><block var="firstMonthAdder"/><block var="startDay"/></block></block><block s="doSetVar"><l>lastMonthAdder</l><block var="endDay"/></block></script><script><block s="doIfElse"><block s="reportVariadicEquals"><list><block var="inBetweenMonths"/><l>0</l></list></block><script><block s="doSetVar"><l>lastMonthAdder</l><block s="reportDifference"><block var="endDay"/><block var="startDay"/></block></block></script><script><block s="doSetVar"><l>firstMonthAdder</l><block s="reportListItem"><block var="startMonth"/><block var="daysInMonth"/></block></block><block s="doIf"><block s="reportVariadicAnd"><list><block s="reportVariadicEquals"><list><block s="reportModulus"><block var="countYear"/><l>4</l></block><l>0</l></list></block><block s="reportVariadicEquals"><list><block var="startMonth"/><l>2</l></list></block><block s="reportIfElse"><block s="reportVariadicEquals"><list><block s="reportModulus"><block var="countYear"/><l>100</l></block><l>0</l></list></block><block s="reportVariadicEquals"><list><block s="reportModulus"><block var="countYear"/><l>400</l></block><l>0</l></list></block><block s="reportNot"><block s="reportVariadicEquals"><list><block s="reportModulus"><block var="countYear"/><l>100</l></block><l>0</l></list></block></block></block></list></block><script><block s="doSetVar"><l>firstMonthAdder</l><l>29</l></block></script><list></list></block><block s="doSetVar"><l>firstMonthAdder</l><block s="reportDifference"><block var="firstMonthAdder"/><block var="startDay"/></block></block><block s="doSetVar"><l>lastMonthAdder</l><block var="endDay"/></block><block s="doSetVar"><l>totalMonths</l><block s="reportNewList"><list></list></block></block><block s="doSetVar"><l>firstMonthAdder</l><block s="reportDifference"><block s="reportVariadicSum"><list><block s="reportDifference"><block s="reportListItem"><block var="startMonth"/><block var="daysInMonth"/></block><block var="firstMonthAdder"/></block><block var="endDay"/></list></block><l>2</l></block></block><block s="doSetVar"><l>lastMonthAdder</l><l>0</l></block></script></block></script></block><block s="doSetVar"><l>countDays</l><block s="reportVariadicSum"><list><block var="firstMonthAdder"/><block s="reportVariadicSum"><block var="totalMonths"/></block><block var="lastMonthAdder"/></list></block></block><block s="doSetVar"><l>countDays</l><block s="reportVariadicMax"><list><l>0</l><block s="reportDifference"><block var="countDays"/><l>1</l></block></list></block></block><block s="doSetVar"><l>hours</l><block s="reportModulus"><block s="reportVariadicSum"><list><block var="endHour"/><block s="reportDifference"><l>24</l><block s="reportIfElse"><block var="dayLightSaving"/><block s="reportVariadicSum"><list><block var="startHour"/><l>1</l></list></block><block var="startHour"/></block></block></list></block><l>24</l></block></block><block s="doSetVar"><l>minutes</l><block s="reportModulus"><block s="reportVariadicSum"><list><block var="endMinute"/><block s="reportDifference"><l>59</l><block var="startMinute"/></block></list></block><l>59</l></block></block><block s="doSetVar"><l>seconds</l><block s="reportModulus"><block s="reportVariadicSum"><list><block var="endSecond"/><block s="reportDifference"><l>60</l><block var="startSecond"/></block></list></block><l>60</l></block></block><block s="doReport"><block s="reportJoinWords"><list><block s="reportIfElse"><block s="reportVariadicEquals"><list><block s="reportTextAttribute"><l><option>length</option></l><block var="countDays"/></block><l>1</l></list></block><block s="reportJoinWords"><list><l>0</l><block var="countDays"/></list></block><block var="countDays"/></block><l>:</l><block s="reportIfElse"><block s="reportVariadicEquals"><list><block s="reportTextAttribute"><l><option>length</option></l><block var="hours"/></block><l>1</l></list></block><block s="reportJoinWords"><list><l>0</l><block var="hours"/></list></block><block var="hours"/></block><l>:</l><block s="reportIfElse"><block s="reportVariadicEquals"><list><block s="reportTextAttribute"><l><option>length</option></l><block var="minutes"/></block><l>1</l></list></block><block s="reportJoinWords"><list><l>0</l><block var="minutes"/></list></block><block var="minutes"/></block><l>:</l><block s="reportIfElse"><block s="reportVariadicEquals"><list><block s="reportTextAttribute"><l><option>length</option></l><block var="seconds"/></block><l>1</l></list></block><block s="reportJoinWords"><list><l>0</l><block var="seconds"/></list></block><block var="seconds"/></block></list></block></block></script></block></script></block-definition><block-definition s="Set costume %&apos;costume&apos; to solid RGBA %&apos;RGBA&apos;" type="reporter" category="Avi&apos;s Custom Blocks"><header></header><code></code><translations></translations><inputs><input type="%s"><options>§_costumesMenu</options></input><input type="%l"></input></inputs><script><block s="doReport"><block s="reportNewCostume"><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportVariadicProduct"><list><block s="reportVariadicMin"><list><l></l><l>1</l></list></block><block var="RGBA"/></list></block></autolambda><list></list></block><block s="reportListItem"><l>4</l><block s="reportListAttribute"><l><option>columns</option></l><block s="reportGetImageAttribute"><l><option>pixels</option></l><block var="costume"/></block></block></block></block><block s="reportGetImageAttribute"><l><option>width</option></l><block var="costume"/></block><block s="reportGetImageAttribute"><l><option>height</option></l><block var="costume"/></block></block></block></script></block-definition><block-definition s="mask RGBA %&apos;sc&apos; of costume %&apos;costume&apos; with sprite %&apos;mask&apos; with intensity %&apos;intensity&apos;" type="reporter" category="Avi&apos;s Custom Blocks"><header></header><code></code><translations></translations><inputs><input type="%l"></input><input type="%s"><options>§_costumesMenu</options></input><input type="%s"><options>§_costumesMenu</options></input><input type="%s">100</input></inputs><script><block s="doWarp"><script><block s="doDeclareVariables"><list><l>costume.mask</l></list></block><block s="doTellTo"><block s="newClone"><l><option>myself</option></l></block><block s="reifyScript"><script><block s="doWarp"><script><block s="gotoXY"><l>0</l><l>0</l></block><block s="doSwitchToCostume"><l></l></block><block s="show"></block><block s="doPasteOn"><block s="reportGet"><l><option>parent</option></l></block></block><block s="hide"></block><block s="doSwitchToCostume"><block s="reportAskFor"><block s="reportGet"><l><option>parent</option></l></block><block s="reifyReporter"><autolambda><block s="reportGet"><l><option>costume</option></l></block></autolambda><list></list></block><list></list></block></block><block s="doTellTo"><block s="reportGet"><l><option>parent</option></l></block><block s="reifyScript"><script><block s="doSetVar"><l>costume.mask</l><block s="reportGetImageAttribute"><l><option>pixels</option></l><l><option>current</option></l></block></block></script><list></list></block><list></list></block><block s="removeClone"></block></script></block></script><list></list></block><list><block var="mask"/></list></block><block s="doSwitchToCostume"><block var="costume"/></block><block s="doReport"><block s="reportNewCostume"><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportIfElse"><block s="reportVariadicLessThan"><list><custom-block s="distance between RGBA %l and %l"><block var="value"/><block var="sc"/></custom-block><block s="reportVariadicSum"><list><block var="intensity"/><l>100</l></list></block></list></block><block s="reportListItem"><block var="index"/><block var="costume.mask"/></block><block var="value"/></block></autolambda><list><l>value</l><l>index</l></list></block><block s="reportGetImageAttribute"><l><option>pixels</option></l><block var="costume"/></block></block><block s="reportGetImageAttribute"><l><option>width</option></l><block var="costume"/></block><block s="reportGetImageAttribute"><l><option>height</option></l><block var="costume"/></block></block></block></script></block></script></block-definition><block-definition s="distance between RGBA %&apos;color1&apos; and %&apos;color2&apos;" type="reporter" category="Avi&apos;s Custom Blocks"><comment x="0" y="0" w="347" collapsed="false">// Distance = sqrt((R1 - R2)^2 + (G1 - G2)^2 + (B1 - B2)^2 + (A1 - A2)^2)</comment><header></header><code></code><translations></translations><inputs><input type="%l"></input><input type="%l"></input></inputs><script><block s="doReport"><block s="reportMonadic"><l><option>sqrt</option></l><block s="reportVariadicSum"><list><block s="reportPower"><block s="reportDifference"><block s="reportListItem"><l>1</l><block var="color1"/></block><block s="reportListItem"><l>1</l><block var="color2"/></block></block><l>2</l></block><block s="reportPower"><block s="reportDifference"><block s="reportListItem"><l>2</l><block var="color1"/></block><block s="reportListItem"><l>2</l><block var="color2"/></block></block><l>2</l></block><block s="reportPower"><block s="reportDifference"><block s="reportListItem"><l>3</l><block var="color1"/></block><block s="reportListItem"><l>3</l><block var="color2"/></block></block><l>2</l></block><block s="reportPower"><block s="reportDifference"><block s="reportListItem"><l>4</l><block var="color1"/></block><block s="reportListItem"><l>4</l><block var="color2"/></block></block><l>2</l></block></list></block></block></block></script></block-definition><block-definition s="create costume with RGBA %&apos;RGBA&apos;" type="reporter" category="Avi&apos;s Custom Blocks"><header></header><code></code><translations></translations><inputs><input type="%l"></input></inputs><script><block s="doWarp"><script><block s="doReport"><block s="reportNewCostume"><block s="reportReshape"><block var="RGBA"/><list><block s="reportVariadicProduct"><list><block s="reportAttributeOf"><l><option>width</option></l><l>Stage</l></block><block s="reportAttributeOf"><l><option>height</option></l><l>Stage</l></block></list></block><l>4</l></list></block><block s="reportAttributeOf"><l><option>width</option></l><l>Stage</l></block><block s="reportAttributeOf"><l><option>height</option></l><l>Stage</l></block></block></block></script></block></script></block-definition><block-definition s="center %&apos;text&apos; with size %&apos;size&apos; on sprite %&apos;sprite&apos;" type="command" category="Avi&apos;s Custom Blocks"><header></header><code></code><translations></translations><inputs><input type="%s">TEXT</input><input type="%n">10</input><input type="%s"><options>§_objectsMenu</options></input></inputs><script><block s="doWarp"><script><block s="doDeclareVariables"><list><l>len</l><l>pt</l><l>x1</l><l>x2</l></list></block><block s="doSetVar"><l>x1</l><block s="reportDifference"><block s="reportAskFor"><block var="sprite"/><block s="reifyReporter"><autolambda><block s="xPosition"></block></autolambda><list></list></block><list></list></block><block s="reportQuotient"><block s="reportAskFor"><block var="sprite"/><block s="reifyReporter"><autolambda><block s="reportGetImageAttribute"><l><option>width</option></l><l><option>current</option></l></block></autolambda><list></list></block><list></list></block><l>2</l></block></block></block><block s="doSetVar"><l>x2</l><block s="reportVariadicSum"><list><block s="reportAskFor"><block var="sprite"/><block s="reifyReporter"><autolambda><block s="xPosition"></block></autolambda><list></list></block><list></list></block><block s="reportQuotient"><block s="reportAskFor"><block var="sprite"/><block s="reifyReporter"><autolambda><block s="reportGetImageAttribute"><l><option>width</option></l><l><option>current</option></l></block></autolambda><list></list></block><list></list></block><l>2</l></block></list></block></block><block s="doTellTo"><block s="newClone"><l><option>myself</option></l></block><block s="reifyScript"><script><block s="doWarp"><script><block s="doDeclareVariables"><list><l>pt</l></list></block><block s="gotoXY"><block s="reportAttributeOf"><l><option>left</option></l><l>Stage</l></block><block var="#3"/></block><block s="clear"></block><block s="write"><block var="#4"/><block var="#5"/></block><block s="doSetVar"><l>len</l><block s="reportDifference"><block var="#2"/><block var="#1"/></block></block><block s="doSetVar"><l>pt</l><block s="reportPenTrailsAsCostume"></block></block><block s="gotoXY"><block var="#1"/><block s="reportAskFor"><block var="#6"/><block s="reifyReporter"><autolambda><block s="yPosition"></block></autolambda><list></list></block><list></list></block></block><block s="forward"><block s="reportVariadicSum"><list><block s="reportGetImageAttribute"><l><option>width</option></l><block var="pt"/></block><block s="reportQuotient"><block s="reportDifference"><block s="reportDifference"><block var="#2"/><block var="#1"/></block><block s="reportDifference"><block s="reportGetImageAttribute"><l><option>width</option></l><block var="pt"/></block><l>2</l></block></block><l>2</l></block></list></block></block><block s="doSwitchToCostume"><block var="pt"/></block><block s="clear"></block></script></block></script><list><l>#1</l><l>#2</l><l>#3</l><l>#4</l><l>#5</l><l>#6</l></list></block><list><block var="x1"/><block var="x2"/><block s="reportAskFor"><block var="sprite"/><block s="reifyReporter"><autolambda><block s="yPosition"></block></autolambda><list></list></block><list></list></block><block var="text"/><block var="size"/><block var="sprite"/></list></block></script></block></script></block-definition><block-definition s="filter costume %&apos;costume&apos; with %&apos;effect&apos;" type="reporter" category="Avi&apos;s Custom Blocks"><header></header><code></code><translations></translations><inputs><input type="%s"><options>§_costumesMenu</options></input><input type="%mlt"><options>Black &amp; White&#xD;Inverse&#xD;Protanopia (colorblind)&#xD;Deuteranopia (colorblind)&#xD;Tritanopia (colorblind)&#xD;Cross Processing</options></input></inputs><script><block s="doWarp"><script><block s="doSetVar"><l>effect</l><block s="reportListItem"><block s="reportListIndex"><block var="effect"/><block s="reportNewList"><list><l>Black &amp; White</l><l>Inverse</l><l>Protanopia (colorblind)</l><l>Deuteranopia (colorblind)</l><l>Tritanopia (colorblind)</l><l>Cross Processing</l><l></l></list></block></block><block s="reportNewList"><list><block s="reifyReporter"><autolambda><custom-block s="Black &amp; White %l"><l/></custom-block></autolambda><list></list></block><block s="reifyReporter"><autolambda><custom-block s="Inverse %l"><l/></custom-block></autolambda><list></list></block><block s="reifyReporter"><autolambda><custom-block s="protanopia %l"><l/></custom-block></autolambda><list></list></block><block s="reifyReporter"><autolambda><custom-block s="Deuteranopia %l"><l/></custom-block></autolambda><list></list></block><block s="reifyReporter"><autolambda><custom-block s="Tritanopia %l"><l/></custom-block></autolambda><list></list></block><block s="reifyReporter"><autolambda><custom-block s="Cross Process %l"><l/></custom-block></autolambda><list></list></block><block s="reifyReporter"><autolambda><block s="reportVariadicProduct"><list><l></l><l>1</l></list></block></autolambda><list></list></block></list></block></block></block><block s="doReport"><block s="reportNewCostume"><block s="evaluate"><block var="effect"/><list><block s="reportGetImageAttribute"><l><option>pixels</option></l><block var="costume"/></block></list></block><block s="reportGetImageAttribute"><l><option>width</option></l><block var="costume"/></block><block s="reportGetImageAttribute"><l><option>height</option></l><block var="costume"/></block></block></block></script></block></script></block-definition><block-definition s="Cross Process %&apos;pixels&apos;" type="reporter" category="Avi&apos;s Custom Blocks"><header></header><code></code><translations></translations><inputs><input type="%l"></input></inputs><script><block s="doWarp"><script><block s="doReport"><block s="reportListAttribute"><l><option>columns</option></l><block s="reportConcatenatedLists"><list><block s="reportListAttribute"><l><option>columns</option></l><block s="reportDifference"><custom-block s="contrast %l %n"><block s="reportDifference"><block s="reportListAttribute"><l><option>columns</option></l><block s="reportConcatenatedLists"><list><block s="reportReshape"><custom-block s="contrast %l %n"><block s="reportVariadicSum"><list><block s="reportVariadicProduct"><list><custom-block s="color from image %n %l"><l>1</l><block var="pixels"/></custom-block><l>0.3</l></list></block><block s="reportVariadicProduct"><list><custom-block s="color from image %n %l"><l>2</l><block var="pixels"/></custom-block><l>0.7</l></list></block><block s="reportVariadicProduct"><list><custom-block s="color from image %n %l"><l>4</l><block var="pixels"/></custom-block><l>0.193</l></list></block></list></block><l>0</l></custom-block><list><l>1</l><l>0</l></list></block><block s="reportReshape"><custom-block s="contrast %l %n"><block s="reportVariadicSum"><list><block s="reportVariadicProduct"><list><custom-block s="color from image %n %l"><l>1</l><block var="pixels"/></custom-block><l>0.1</l></list></block><block s="reportVariadicProduct"><list><custom-block s="color from image %n %l"><l>2</l><block var="pixels"/></custom-block><l>0.99</l></list></block><block s="reportVariadicProduct"><list><custom-block s="color from image %n %l"><l>3</l><block var="pixels"/></custom-block><l>0.7</l></list></block><block s="reportVariadicProduct"><list><custom-block s="color from image %n %l"><l>4</l><block var="pixels"/></custom-block><l>0.1</l></list></block></list></block><l>0.3</l></custom-block><list><l>1</l><l>0</l></list></block><block s="reportReshape"><custom-block s="contrast %l %n"><block s="reportVariadicSum"><list><block s="reportVariadicProduct"><list><custom-block s="color from image %n %l"><l>2</l><block var="pixels"/></custom-block><l>0.1</l></list></block><block s="reportVariadicProduct"><list><custom-block s="color from image %n %l"><l>3</l><block var="pixels"/></custom-block><l>0.9</l></list></block><block s="reportVariadicProduct"><list><custom-block s="color from image %n %l"><l>4</l><block var="pixels"/></custom-block><l>0.21</l></list></block><block s="reportVariadicProduct"><list><custom-block s="color from image %n %l"><l>1</l><block var="pixels"/></custom-block><l>0.4</l></list></block></list></block><l>0.2</l></custom-block><list><l>1</l><l>0</l></list></block></list></block></block><l>100</l></block><l>0.5</l></custom-block><l>20</l></block></block><block s="reportReshape"><custom-block s="color from image %n %l"><l>4</l><block var="pixels"/></custom-block><list><l>1</l><l>0</l></list></block></list></block></block></block></script></block></script></block-definition><block-definition s="contrast %&apos;input&apos; %&apos;contrast&apos;" type="reporter" category="Avi&apos;s Custom Blocks"><header></header><code></code><translations></translations><inputs><input type="%l"></input><input type="%n">0.5</input></inputs><script><block s="doReport"><block s="reportVariadicProduct"><list><block s="reportDifference"><block var="input"/><l>30</l></block><block s="reportVariadicSum"><list><block var="contrast"/><l>1</l></list></block></list></block></block></script><scripts><comment x="127.79599609374998" y="100.7000000000001" w="90" collapsed="false">0.5/30,1</comment></scripts></block-definition><block-definition s="Tritanopia %&apos;pixels&apos;" type="reporter" category="Avi&apos;s Custom Blocks"><header></header><code></code><translations></translations><inputs><input type="%l"></input></inputs><script><block s="doWarp"><script><block s="doReport"><block s="reportListAttribute"><l><option>columns</option></l><block s="reportConcatenatedLists"><list><block s="reportReshape"><block s="reportVariadicSum"><list><block s="reportVariadicProduct"><list><custom-block s="color from image %n %l"><l>1</l><block var="pixels"/></custom-block><l>0.95</l></list></block><block s="reportVariadicProduct"><list><custom-block s="color from image %n %l"><l>2</l><block var="pixels"/></custom-block><l>0.05</l></list></block><block s="reportVariadicProduct"><list><custom-block s="color from image %n %l"><l>3</l><block var="pixels"/></custom-block><l>0</l></list></block></list></block><list><l>1</l><l>0</l></list></block><block s="reportReshape"><block s="reportVariadicSum"><list><block s="reportVariadicProduct"><list><custom-block s="color from image %n %l"><l>1</l><block var="pixels"/></custom-block><l>0</l></list></block><block s="reportVariadicProduct"><list><custom-block s="color from image %n %l"><l>2</l><block var="pixels"/></custom-block><l>0.433</l></list></block><block s="reportVariadicProduct"><list><custom-block s="color from image %n %l"><l>3</l><block var="pixels"/></custom-block><l>0.567</l></list></block></list></block><list><l>1</l><l>0</l></list></block><block s="reportReshape"><block s="reportVariadicSum"><list><block s="reportVariadicProduct"><list><custom-block s="color from image %n %l"><l>1</l><block var="pixels"/></custom-block><l>0</l></list></block><block s="reportVariadicProduct"><list><custom-block s="color from image %n %l"><l>2</l><block var="pixels"/></custom-block><l>0.475</l></list></block><block s="reportVariadicProduct"><list><custom-block s="color from image %n %l"><l>3</l><block var="pixels"/></custom-block><l>0.525</l></list></block></list></block><list><l>1</l><l>0</l></list></block><block s="reportReshape"><custom-block s="color from image %n %l"><l>4</l><block var="pixels"/></custom-block><list><l>1</l><l>0</l></list></block></list></block></block></block></script></block></script></block-definition><block-definition s="Deuteranopia %&apos;pixels&apos;" type="reporter" category="Avi&apos;s Custom Blocks"><header></header><code></code><translations></translations><inputs><input type="%l"></input></inputs><script><block s="doWarp"><script><block s="doReport"><block s="reportListAttribute"><l><option>columns</option></l><block s="reportConcatenatedLists"><list><block s="reportReshape"><block s="reportVariadicSum"><list><block s="reportVariadicProduct"><list><custom-block s="color from image %n %l"><l>1</l><block var="pixels"/></custom-block><l>0.625</l></list></block><block s="reportVariadicProduct"><list><custom-block s="color from image %n %l"><l>2</l><block var="pixels"/></custom-block><l>0.375</l></list></block><block s="reportVariadicProduct"><list><custom-block s="color from image %n %l"><l>3</l><block var="pixels"/></custom-block><l>0</l></list></block></list></block><list><l>1</l><l>0</l></list></block><block s="reportReshape"><block s="reportVariadicSum"><list><block s="reportVariadicProduct"><list><custom-block s="color from image %n %l"><l>1</l><block var="pixels"/></custom-block><l>0.7</l></list></block><block s="reportVariadicProduct"><list><custom-block s="color from image %n %l"><l>2</l><block var="pixels"/></custom-block><l>0.3</l></list></block><block s="reportVariadicProduct"><list><custom-block s="color from image %n %l"><l>3</l><block var="pixels"/></custom-block><l>0</l></list></block></list></block><list><l>1</l><l>0</l></list></block><block s="reportReshape"><block s="reportVariadicSum"><list><block s="reportVariadicProduct"><list><custom-block s="color from image %n %l"><l>1</l><block var="pixels"/></custom-block><l>0</l></list></block><block s="reportVariadicProduct"><list><custom-block s="color from image %n %l"><l>2</l><block var="pixels"/></custom-block><l>0.3</l></list></block><block s="reportVariadicProduct"><list><custom-block s="color from image %n %l"><l>3</l><block var="pixels"/></custom-block><l>0.7</l></list></block></list></block><list><l>1</l><l>0</l></list></block><block s="reportReshape"><custom-block s="color from image %n %l"><l>4</l><block var="pixels"/></custom-block><list><l>1</l><l>0</l></list></block></list></block></block></block></script></block></script></block-definition><block-definition s="protanopia %&apos;pixels&apos;" type="reporter" category="Avi&apos;s Custom Blocks"><header></header><code></code><translations></translations><inputs><input type="%l"></input></inputs><script><block s="doWarp"><script><block s="doReport"><block s="reportListAttribute"><l><option>columns</option></l><block s="reportConcatenatedLists"><list><block s="reportReshape"><block s="reportVariadicSum"><list><block s="reportVariadicProduct"><list><custom-block s="color from image %n %l"><l>1</l><block var="pixels"/></custom-block><l>0.392</l></list></block><block s="reportVariadicProduct"><list><custom-block s="color from image %n %l"><l>2</l><block var="pixels"/></custom-block><l>0.769</l></list></block><block s="reportVariadicProduct"><list><custom-block s="color from image %n %l"><l>3</l><block var="pixels"/></custom-block><l>0.189</l></list></block></list></block><list><l>1</l><l>0</l></list></block><block s="reportReshape"><block s="reportVariadicSum"><list><block s="reportVariadicProduct"><list><custom-block s="color from image %n %l"><l>1</l><block var="pixels"/></custom-block><l>0.349</l></list></block><block s="reportVariadicProduct"><list><custom-block s="color from image %n %l"><l>2</l><block var="pixels"/></custom-block><l>0.686</l></list></block><block s="reportVariadicProduct"><list><custom-block s="color from image %n %l"><l>3</l><block var="pixels"/></custom-block><l>0.168</l></list></block></list></block><list><l>1</l><l>0</l></list></block><block s="reportReshape"><block s="reportVariadicSum"><list><block s="reportVariadicProduct"><list><custom-block s="color from image %n %l"><l>1</l><block var="pixels"/></custom-block><l>0</l></list></block><block s="reportVariadicProduct"><list><custom-block s="color from image %n %l"><l>2</l><block var="pixels"/></custom-block><l>0.275</l></list></block><block s="reportVariadicProduct"><list><custom-block s="color from image %n %l"><l>3</l><block var="pixels"/></custom-block><l>0.825</l></list></block></list></block><list><l>1</l><l>0</l></list></block><block s="reportReshape"><custom-block s="color from image %n %l"><l>4</l><block var="pixels"/></custom-block><list><l>1</l><l>0</l></list></block></list></block></block></block></script></block></script></block-definition><block-definition s="color from image %&apos;input&apos; %&apos;pixels&apos;" type="reporter" category="Avi&apos;s Custom Blocks"><header></header><code></code><translations></translations><inputs><input type="%n">1</input><input type="%l"></input></inputs><script><block s="doReport"><block s="reportListItem"><block var="input"/><block s="reportListAttribute"><l><option>columns</option></l><block var="pixels"/></block></block></block></script></block-definition><block-definition s="Black &amp; White %&apos;pixels&apos;" type="reporter" category="Avi&apos;s Custom Blocks"><header></header><code></code><translations></translations><inputs><input type="%l"></input></inputs><script><block s="doReport"><block s="reportListAttribute"><l><option>columns</option></l><block s="reportConcatenatedLists"><list><block s="reportReshape"><block s="reportListAttribute"><l><option>columns</option></l><block s="reportQuotient"><block s="reportVariadicSum"><block s="reportListItem"><block s="reportNumbers"><l>1</l><l>3</l></block><block s="reportListAttribute"><l><option>columns</option></l><block var="pixels"/></block></block></block><l>3</l></block></block><list><l>3</l><block s="reportVariadicProduct"><list><block s="reportListAttribute"><l><option>length</option></l><block var="pixels"/></block><l>3</l></list></block></list></block><block s="reportReshape"><block s="reportListItem"><l>4</l><block s="reportListAttribute"><l><option>columns</option></l><block var="pixels"/></block></block><list><l>1</l><l>0</l></list></block></list></block></block></block></script></block-definition><block-definition s="Inverse %&apos;pixels&apos;" type="reporter" category="Avi&apos;s Custom Blocks"><header></header><code></code><translations></translations><inputs><input type="%l"></input></inputs><script><block s="doReport"><block s="reportListAttribute"><l><option>columns</option></l><block s="reportConcatenatedLists"><list><block s="reportDifference"><l>255</l><block s="reportListItem"><block s="reportNumbers"><l>1</l><l>3</l></block><block s="reportListAttribute"><l><option>columns</option></l><block var="pixels"/></block></block></block><block s="reportReshape"><block s="reportListItem"><l>4</l><block s="reportListAttribute"><l><option>columns</option></l><block var="pixels"/></block></block><list><l>1</l><l>0</l></list></block></list></block></block></block></script></block-definition><block-definition s="delete all clones" type="command" category="Avi&apos;s Custom Blocks"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doWarp"><script><block s="doForEach"><l>item</l><block s="reportGet"><l><option>children</option></l></block><script><block s="doTellTo"><block var="item"/><block s="reifyScript"><script><block s="removeClone"></block></script><list></list></block><list></list></block></script></block></script></block></script></block-definition><block-definition s="3D to 2D %&apos;x&apos; %&apos;y&apos; %&apos;z&apos; focal length %&apos;focal length&apos;" type="reporter" category="Avi&apos;s Custom Blocks"><header></header><code></code><translations></translations><inputs><input type="%n">0</input><input type="%n">0</input><input type="%n">0</input><input type="%n">100</input></inputs><script><block s="doReport"><block s="reportNewList"><list><block s="reportQuotient"><block s="reportVariadicProduct"><list><block var="focal length"/><block var="x"/></list></block><block s="reportVariadicSum"><list><block var="focal length"/><block var="z"/></list></block></block><block s="reportQuotient"><block s="reportVariadicProduct"><list><block var="focal length"/><block var="y"/></list></block><block s="reportVariadicSum"><list><block var="focal length"/><block var="z"/></list></block></block></list></block></block></script></block-definition><block-definition s="isPrime: %&apos;NUM&apos;" type="predicate" category="Avi&apos;s Custom Blocks"><header></header><code></code><translations></translations><inputs><input type="%n">0</input></inputs><script><block s="doIfElse"><block s="reportVariadicAnd"><list><block s="reportVariadicLessThan"><list><block var="NUM"/><l>3</l></list></block><block s="reportVariadicGreaterThan"><list><block var="NUM"/><l>0</l></list></block></list></block><script><block s="doReport"><block s="reportBoolean"><l><bool>true</bool></l></block></block></script><script><block s="doFor"><l>i</l><l>2</l><block s="reportMonadic"><l><option>sqrt</option></l><block var="NUM"/></block><script><block s="doIf"><block s="reportVariadicEquals"><list><block s="reportModulus"><block var="NUM"/><block var="i"/></block><l>0</l></list></block><script><block s="doReport"><block s="reportBoolean"><l><bool>false</bool></l></block></block></script><list></list></block></script></block></script></block><block s="doReport"><block s="reportBoolean"><l><bool>true</bool></l></block></block></script></block-definition><block-definition s="isOdd: %&apos;NUM&apos; %&apos;TRUE&apos;" type="predicate" category="Avi&apos;s Custom Blocks"><header></header><code></code><translations></translations><inputs><input type="%n">1</input><input type="%b">true</input></inputs><script><block s="doReport"><block s="reportVariadicEquals"><list><block s="reportModulus"><block var="NUM"/><l>2</l></block><block s="reportIfElse"><block var="TRUE"/><l>1</l><l>0</l></block></list></block></block></script></block-definition><block-definition s="average: %&apos;NUM&apos;" type="reporter" category="Avi&apos;s Custom Blocks"><header></header><code></code><translations></translations><inputs><input type="%mult%n"></input></inputs><script><block s="doReport"><block s="reportQuotient"><block s="reportCombine"><block var="NUM"/><block s="reifyReporter"><autolambda><block s="reportVariadicSum"><list></list></block></autolambda><list></list></block></block><block s="reportListAttribute"><l><option>length</option></l><block var="NUM"/></block></block></block></script></block-definition><block-definition s="ToBinary: %&apos;NUM&apos; in List: %&apos;List&apos;" type="reporter" category="Avi&apos;s Custom Blocks"><header></header><code></code><translations></translations><inputs><input type="%n">0</input><input type="%b">true</input></inputs><script><block s="doIfElse"><block s="reportVariadicEquals"><list><block var="NUM"/><block s="reportBoolean"><l><bool>true</bool></l></block></list></block><script><block s="doIfElse"><block var="List"/><script><block s="doReport"><block s="reportNewList"><list><l>1</l></list></block></block></script><script><block s="doReport"><l>1</l></block></script></block></script><script><block s="doIfElse"><block s="reportVariadicEquals"><list><block var="NUM"/><block s="reportBoolean"><l><bool>false</bool></l></block></list></block><script><block s="doIfElse"><block var="List"/><script><block s="doReport"><block s="reportNewList"><list><l>0</l></list></block></block></script><script><block s="doReport"><l>0</l></block></script></block></script><script><block s="doDeclareVariables"><list><l>!R</l><l>!B</l><l>?in</l></list></block><block s="doSetVar"><l>?in</l><block var="NUM"/></block><block s="doWarp"><script><block s="doUntil"><block s="reportVariadicEquals"><list><block var="?in"/><l>0</l></list></block><script><block s="doSetVar"><l>!R</l><block s="reportModulus"><block var="?in"/><l>2</l></block></block><block s="doSetVar"><l>!B</l><block s="reportJoinWords"><list><block var="!R"/><block var="!B"/></list></block></block><block s="doSetVar"><l>?in</l><block s="reportMonadic"><l><option>floor</option></l><block s="reportQuotient"><block var="?in"/><l>2</l></block></block></block></script></block></script></block><block s="doReport"><block s="reportIfElse"><block var="List"/><block s="reportLetter"><block s="reportNumbers"><l>1</l><block s="reportDifference"><block s="reportTextAttribute"><l><option>length</option></l><block var="!B"/></block><l>1</l></block></block><block var="!B"/></block><block s="reportJoinWords"><list><block s="reportLetter"><block s="reportNumbers"><l>1</l><block s="reportDifference"><block s="reportTextAttribute"><l><option>length</option></l><block var="!B"/></block><l>1</l></block></block><block var="!B"/></block></list></block></block></block></script></block></script></block></script></block-definition><block-definition s="BinaryToNumber: %&apos;BINARY&apos;" type="reporter" category="Avi&apos;s Custom Blocks"><header></header><code></code><translations></translations><inputs><input type="%n">0</input></inputs><script><block s="doDeclareVariables"><list><l>!DN</l></list></block><block s="doSetVar"><l>!DN</l><l>0</l></block><block s="doFor"><l>i</l><block s="reportListAttribute"><l><option>length</option></l><block s="reportLetter"><block s="reportNumbers"><l>1</l><block s="reportTextAttribute"><l><option>length</option></l><block s="reportJoinWords"><list><block var="BINARY"/></list></block></block></block><block s="reportJoinWords"><list><block var="BINARY"/></list></block></block></block><l>1</l><script><block s="doSetVar"><l>!DN</l><block s="reportVariadicSum"><list><block var="!DN"/><block s="reportVariadicProduct"><list><block s="reportListItem"><block var="i"/><block s="reportLetter"><block s="reportNumbers"><l>1</l><block s="reportTextAttribute"><l><option>length</option></l><block s="reportJoinWords"><list><block var="BINARY"/></list></block></block></block><block s="reportJoinWords"><list><block var="BINARY"/></list></block></block></block><block s="reportPower"><l>2</l><block s="reportDifference"><block s="reportListAttribute"><l><option>length</option></l><block s="reportLetter"><block s="reportNumbers"><l>1</l><block s="reportTextAttribute"><l><option>length</option></l><block s="reportJoinWords"><list><block var="BINARY"/></list></block></block></block><block s="reportJoinWords"><list><block var="BINARY"/></list></block></block></block><block var="i"/></block></block></list></block></list></block></block></script></block><block s="doReport"><block var="!DN"/></block></script></block-definition><block-definition s="NAND %&apos;INPUT&apos;" type="predicate" category="Avi&apos;s Custom Blocks"><header></header><code></code><translations></translations><inputs><input type="%mult%boolUE"></input></inputs><script><block s="doReport"><block s="reportIfElse"><block s="reportVariadicEquals"><list><block s="reportListAttribute"><l><option>length</option></l><block s="reportKeep"><block s="reifyPredicate"><autolambda><block s="reportVariadicEquals"><list><l></l><block s="reifyPredicate"><autolambda><block s="reportBoolean"><l><bool>true</bool></l></block></autolambda><list></list></block></list></block></autolambda><list></list></block><block s="reportListItem"><block s="reportNumbers"><l>1</l><block s="reportListAttribute"><l><option>length</option></l><block var="INPUT"/></block></block><block var="INPUT"/></block></block></block><block s="reportListAttribute"><l><option>length</option></l><block var="INPUT"/></block></list></block><block s="reportBoolean"><l><bool>false</bool></l></block><block s="reportBoolean"><l><bool>true</bool></l></block></block></block></script><scripts><script x="224.64160156250034" y="521.6666666666665"><block s="reportListItem"><l>1</l><block var="INPUT"/></block></script></scripts></block-definition><block-definition s="CSV to list %&apos;STRING&apos;" type="reporter" category="lists"><header></header><code></code><translations></translations><inputs><input type="%txt"></input></inputs><script><block s="doWarp"><script><block s="doDeclareVariables"><list><l>list</l></list></block><block s="doSetVar"><l>list</l><block s="reportNewList"><list></list></block></block><block s="doAddToList"><l></l><block var="list"/></block><block s="doFor"><l>i</l><l>1</l><block s="reportTextAttribute"><l><option>length</option></l><block var="STRING"/></block><script><block s="doIfElse"><block s="reportVariadicEquals"><list><block s="reportLetter"><block var="i"/><block var="STRING"/></block><l>,</l></list></block><script><block s="doAddToList"><l></l><block var="list"/></block></script><script><block s="doReplaceInList"><block s="reportListAttribute"><l><option>length</option></l><block var="list"/></block><block var="list"/><block s="reportJoinWords"><list><block s="reportListItem"><block s="reportListAttribute"><l><option>length</option></l><block var="list"/></block><block var="list"/></block><block s="reportLetter"><block var="i"/><block var="STRING"/></block></list></block></block></script></block></script></block><block s="doReport"><block var="list"/></block></script></block></script></block-definition><block-definition s="Reverse string %&apos;STRING&apos;" type="reporter" category="Avi&apos;s Custom Blocks"><header></header><code></code><translations></translations><inputs><input type="%s">World</input></inputs><script><block s="doReport"><block s="reportJoinWords"><block s="reportLetter"><block s="reportNumbers"><block s="reportTextAttribute"><l><option>length</option></l><block var="STRING"/></block><l>1</l></block><block var="STRING"/></block></block></block></script></block-definition><block-definition s="XOR %&apos;INPUT&apos;" type="predicate" category="Avi&apos;s Custom Blocks"><header></header><code></code><translations></translations><inputs><input type="%mult%boolUE"></input></inputs><script><block s="doReport"><custom-block s="isOdd: %n %b"><block s="reportListAttribute"><l><option>length</option></l><block s="reportKeep"><block s="reifyPredicate"><autolambda><block s="reportVariadicEquals"><list><l></l><block s="reifyPredicate"><autolambda><block s="reportBoolean"><l><bool>true</bool></l></block></autolambda><list></list></block></list></block></autolambda><list></list></block><block s="reportListItem"><block s="reportNumbers"><l>1</l><block s="reportListAttribute"><l><option>length</option></l><block var="INPUT"/></block></block><block var="INPUT"/></block></block></block><l><bool>true</bool></l></custom-block></block></script></block-definition><block-definition s="NOR %&apos;INPUT&apos;" type="predicate" category="Avi&apos;s Custom Blocks"><header></header><code></code><translations></translations><inputs><input type="%mult%boolUE"></input></inputs><script><block s="doReport"><block s="reportVariadicGreaterThan"><list><block s="reportListAttribute"><l><option>length</option></l><block s="reportKeep"><block s="reifyPredicate"><autolambda><block s="reportVariadicEquals"><list><l></l><block s="reifyPredicate"><autolambda><block s="reportBoolean"><l><bool>false</bool></l></block></autolambda><list></list></block></list></block></autolambda><list></list></block><block s="reportListItem"><block s="reportNumbers"><l>1</l><block s="reportListAttribute"><l><option>length</option></l><block var="INPUT"/></block></block><block var="INPUT"/></block></block></block><l>1</l></list></block></block></script></block-definition><block-definition s="XNOR %&apos;INPUT&apos;" type="predicate" category="Avi&apos;s Custom Blocks"><header></header><code></code><translations></translations><inputs><input type="%mult%boolUE"></input></inputs><script><block s="doReport"><custom-block s="isOdd: %n %b"><block s="reportListAttribute"><l><option>length</option></l><block s="reportKeep"><block s="reifyPredicate"><autolambda><block s="reportVariadicEquals"><list><l></l><block s="reifyPredicate"><autolambda><block s="reportBoolean"><l><bool>true</bool></l></block></autolambda><list></list></block></list></block></autolambda><list></list></block><block s="reportListItem"><block s="reportNumbers"><l>1</l><block s="reportListAttribute"><l><option>length</option></l><block var="INPUT"/></block></block><block var="INPUT"/></block></block></block><l><bool>false</bool></l></custom-block></block></script></block-definition><block-definition s="PI" type="reporter" category="Avi&apos;s Custom Blocks"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doReport"><l>3.141592653589793238462643383279502884197169399375105820974944592307816406286208998628034825342117067982148086513282306647093844609550582231725359408128481117450284102701938521105559644622948954930381964428810975665933446128475648233786783165271201909145648566923460348610454326648213393607260249141273724587006606315588174881520920962829254091715364367892590360011330530548820466521384146951941511609433057270365759591953092186117381932611793105118548074462379962749567351885752724891227938183011949129833673362440656643086021394946395224737190702179860943702770539217176293176752384674818467669405132000568127145263560827785771342757789609173637178721468440901224953430146549585371050792279689258923542019956112129021960864034418159813629774771309960518707211349999998372978049951059731732816096318590202445945534690830264252230825334468503526193118817101000313783875288658753320838814206171776691473035982534904287554687311595628638823537875937519577818577805371712268066130019278766111959092164201989380952572010654858632788659361533818279682303019520353018529689957736225994138912517720190430128481117450284102701938521105559644622948954930381964428810975665933446128475648233786783165271201909145648566923460348610454326648213393607260249141273724587006606315588174881520920962829254091715364367892590360011330530548820466521384146951941511609433057270365759591953092186117381932611793105118548074462379962749567351885752724891227938183011949129833673362440656643086021394946395224737190702179860943702770539217176293176752384674818467669405132000568127145263560827785771342757789609173637178721468440901224953430146549585371050792279689258923542019956112129021960864034418159813629774771309960518707211349999998372978049951059731732816096318590202445945534690830264252230825334468503526193118817101000313783875288658753320838814206171776691473035982534904287554687311595628638823537875937519577818577805371712268066130019278766111959092164201989380952572010654858632788659361533818279682303019520353018529689957736225994138912517720190430128481117450284102701938521105559644622948954930381964428810975665933446128475648233786783165271201909145648566923460348610454326648213393607260249141273724587006606315588174881520920962829254091715364367892590360011330530548820466521384146951941511609433057270365759591953092186117381932611793105118548074462379962749567351885752724891227938183011949129833673362440656643086021394946395224737190702179860943702770539217176293176752384674818467669405132000568127145263560827785771342757789609173637178721468440901224953430146549585371050792279689258923542019956112129021960864034418159813629774771309960518707211349999998372978049951059731732816096318590202445945534690830264252230825334&#xD;</l></block></script></block-definition><block-definition s="shift list %&apos;list&apos; by %&apos;shift&apos;" type="reporter" category="Avi&apos;s Custom Blocks"><header></header><code></code><translations></translations><inputs><input type="%l"></input><input type="%n">0</input></inputs><script><block s="doReport"><block s="reportConcatenatedLists"><list><block s="reportListAttribute"><l><option>reverse</option></l><block s="reportListItem"><block s="reportNumbers"><l>1</l><block var="shift"/></block><block s="reportListAttribute"><l><option>reverse</option></l><block var="list"/></block></block></block><block s="reportListItem"><block s="reportNumbers"><l>1</l><block s="reportDifference"><block s="reportListAttribute"><l><option>length</option></l><block var="list"/></block><block var="shift"/></block></block><block var="list"/></block></list></block></block></script></block-definition><block-definition s="radix conversion %&apos;number&apos; %&apos;base&apos;" type="reporter" category="Avi&apos;s Custom Blocks"><header></header><code></code><translations></translations><inputs><input type="%n">100</input><input type="%s"><options>2&#xD;3&#xD;4&#xD;5&#xD;6&#xD;7&#xD;8&#xD;9</options></input></inputs><script><block s="doDeclareVariables"><list><l>result</l><l>remainder</l></list></block><block s="doSetVar"><l>result</l><l></l></block><block s="doUntil"><block s="reportVariadicEquals"><list><block var="number"/><l>0</l></list></block><script><block s="doSetVar"><l>remainder</l><block s="reportModulus"><block var="number"/><block var="base"/></block></block><block s="doSetVar"><l>number</l><block s="reportMonadic"><l><option>floor</option></l><block s="reportQuotient"><block var="number"/><block var="base"/></block></block></block><block s="doSetVar"><l>result</l><block s="reportJoinWords"><list><block var="result"/><block var="remainder"/></list></block></block></script></block><block s="doReport"><block s="reportJoinWords"><block s="reportListAttribute"><l><option>reverse</option></l><block s="reportTextSplit"><block var="result"/><l><option>letter</option></l></block></block></block></block></script></block-definition><block-definition s="map costume to points %&apos;costume&apos; %&apos;Point1&apos; %&apos;Point2&apos; %&apos;Point3&apos; %&apos;Point4&apos;" type="command" category="Avi&apos;s Custom Blocks"><header></header><code></code><translations></translations><inputs><input type="%s"><options>§_costumesMenu</options></input><input type="%s"></input><input type="%s"></input><input type="%s"></input><input type="%s"></input></inputs><script><block s="doWarp"><script><block s="doRun"><block s="reportJSFunction"><list><l>pixels</l><l>point1</l><l>point2</l><l>point3</l><l>point4</l><l>width</l><l>height</l></list><l>var x1_2, x3_4, x1_3, x2_4, y1_2, y3_4, y1_3, y2_4, x, y, c, r, g, b, gamma, pixcolor, lrgb,&#xD;stage = this.parentThatIsA(StageMorph),&#xD;context = stage.penTrails() .getContext(&apos;2d&apos;),&#xD;trans = new Point(this.center().x - stage.center(),this.center().y - stage.center()),&#xD;ide = this.parentThatIsA(IDE_Morph),&#xD;pixwidth,&#xD;pixheight;  &#xD;&#xD;x1 = point1.at(1);&#xD;y1 = point1.at(2);&#xD;&#xD;x2 = point2.at(1);&#xD;y2 = point2.at(2);&#xD;&#xD;x3 = point3.at(1);&#xD;y3 = point3.at(2);&#xD;&#xD;x4 = point4.at(1);&#xD;y4 = point4.at(2);&#xD;&#xD;y1 = 0 - y1;&#xD;y2 = 0 - y2;&#xD;y3 = 0 - y3;&#xD;y4 = 0 - y4;&#xD;c = 0;&#xD;for (var cy = 0; cy &lt; height; cy++) {&#xD;  for (var cx = 0; cx &lt; width; cx++) {&#xD;    c = c + 1;&#xD;    x1_2 = x1 + (x2 - x1) * (cx / width);&#xD;    x3_4 = x3 + (x4 - x3) * (cx / width);&#xD;    x1_3 = x1 + (x3 - x1) * (cy / height);&#xD;    x2_4 = x2 + (x4 - x2) * (cy / height);&#xD;    y1_3 = y1 + (y3 - y1) * (cy / height);&#xD;    y2_4 = y2 + (y4 - y2) * (cy / height);&#xD;    y1_2 = y1 + (y2 - y1) * (cx / width);&#xD;    y3_4 = y3 + (y4 - y3) * (cx / width);&#xD;    x = x1_3 + (x2_4 - x1_3) * (cx / width);&#xD;    y = y1_2 + (y3_4 - y1_2) * (cy / height);&#xD;    pixheight = 1.4 * Math.sqrt(Math.pow(((y2_4 - y1_3) / height),2) + Math.pow(((y3_4 - y1_2) / height),2));&#xD;    pixwidth = 1.4 * Math.sqrt(Math.pow(((x3_4 - x1_2) / width),2) + Math.pow(((x2_4 - x1_3) / width),2));&#xD;    x = x + 240; &#xD;    y = y + 180;&#xD;    lrgb = pixels.at(c);&#xD;    if (lrgb.at(4) &gt; 0) {&#xD;      r = lrgb.at(1);&#xD;      g = lrgb.at(2);&#xD;      b = lrgb.at(3);&#xD;      pixcolor = &apos;rgb(&apos;+r+&apos;,&apos;+g+&apos;,&apos;+b+&apos;)&apos;;&#xD;      context.fillStyle=pixcolor;&#xD;      context.fillRect(x, y, pixwidth, pixheight);&#xD;      }&#xD;    }&#xD;  };&#xD;stage.changed();</l></block><list><block s="reportGetImageAttribute"><l><option>pixels</option></l><block var="costume"/></block><block var="Point1"/><block var="Point2"/><block var="Point3"/><block var="Point4"/><block s="reportGetImageAttribute"><l><option>width</option></l><block var="costume"/></block><block s="reportGetImageAttribute"><l><option>height</option></l><block var="costume"/></block></list></block></script></block></script></block-definition><block-definition s="is NaN %&apos;Input&apos;" type="predicate" category="Avi&apos;s Custom Blocks"><header></header><code></code><translations></translations><inputs><input type="%s"></input></inputs><script><block s="doReport"><block s="reportNot"><block s="reportVariadicEquals"><list><block s="reportListItem"><l>1</l><block s="reportEnvironment"><l><option>inputs</option></l></block></block><block s="reportListItem"><l>1</l><block s="reportEnvironment"><l><option>inputs</option></l></block></block></list></block></block></block></script></block-definition><block-definition s="direction from x %&apos;x1&apos; y %&apos;y1&apos; to x %&apos;x2&apos; y %&apos;y2&apos;" type="reporter" category="Avi&apos;s Custom Blocks"><header></header><code></code><translations></translations><inputs><input type="%n"></input><input type="%n"></input><input type="%n"></input><input type="%n"></input></inputs><script><block s="doIf"><block s="reportVariadicLessThan"><list><block var="y2"/><block var="y1"/></list></block><script><block s="doReport"><block s="reportVariadicSum"><list><block s="reportMonadic"><l><option>atan</option></l><block s="reportQuotient"><block s="reportDifference"><block var="x2"/><block var="x1"/></block><block s="reportDifference"><block var="y2"/><block var="y1"/></block></block></block><l>180</l></list></block></block></script><list><l><bool>true</bool></l><script><block s="doReport"><block s="reportMonadic"><l><option>atan</option></l><block s="reportQuotient"><block s="reportDifference"><block var="x2"/><block var="x1"/></block><block s="reportDifference"><block var="y2"/><block var="y1"/></block></block></block></block></script></list></block></script></block-definition><block-definition s="Infinity" type="reporter" category="Avi&apos;s Custom Blocks"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doReport"><block s="reportQuotient"><l>1</l><l>0</l></block></block></script></block-definition><block-definition s="-Infinity" type="reporter" category="Avi&apos;s Custom Blocks"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doReport"><block s="reportMonadic"><l><option>neg</option></l><custom-block s="Infinity"></custom-block></block></block></script></block-definition><block-definition s="QR from %&apos;Input&apos;" type="reporter" category="Avi&apos;s Custom Blocks"><header></header><code></code><translations></translations><inputs><input type="%s"></input></inputs><script><block s="doIfElse"><custom-block s="JavaScript enabled?"></custom-block><script><block s="doReport"><block s="evaluate"><block s="reportJSFunction"><list><l>url</l><l>proc</l></list><l>if (!proc.img) {&#xD;  proc.img = new Image();&#xD;  proc.img.src = url;&#xD;  proc.img.onload = function() {&#xD;    proc.img.loaded=true;&#xD;  }&#xD;} else if (proc.img.loaded) {&#xD;  const costume = new Costume(proc.img);&#xD;  proc.img = null;&#xD;  return costume;&#xD;}&#xD;proc.pushContext(&apos;doYield&apos;);&#xD;proc.pushContext();</l></block><list><block s="reportJoinWords"><list><l>http://api.qrserver.com/v1/create-qr-code/?data=</l><block var="Input"/></list></block></list></block></block></script><script><block s="doReport"><block s="reportApplyExtension"><l>cst_load(url)</l><list><block s="reportJoinWords"><list><l>http://api.qrserver.com/v1/create-qr-code/?data=</l><block var="Input"/></list></block></list></block></block></script></block></script></block-definition><block-definition s="JavaScript enabled?" type="predicate" category="Avi&apos;s Custom Blocks"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doDeclareVariables"><list><l>a</l></list></block><block s="doSetVar"><l>a</l><block s="reportBoolean"><l><bool>false</bool></l></block></block><block s="fork"><block s="reifyScript"><script><block s="doWarp"><script><block s="doSetVar"><l>a</l><block s="evaluate"><block s="reportJSFunction"><list></list><l>return true;</l></block><list></list></block></block></script></block></script><list></list></block><list></list></block><block s="doRepeat"><l>1</l><script><block s="doWait"><l>0</l></block></script></block><block s="doReport"><block var="a"/></block></script></block-definition><block-definition s="randomImage" type="reporter" category="Avi&apos;s Custom Blocks"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doIfElse"><custom-block s="JavaScript enabled?"></custom-block><script><block s="doReport"><block s="evaluate"><block s="reportJSFunction"><list><l>url</l><l>proc</l></list><l>if (!proc.img) {&#xD;  proc.img = new Image();&#xD;  proc.img.src = url;&#xD;  proc.img.onload = function() {&#xD;    proc.img.loaded=true;&#xD;  }&#xD;} else if (proc.img.loaded) {&#xD;  const costume = new Costume(proc.img);&#xD;  proc.img = null;&#xD;  return costume;&#xD;}&#xD;proc.pushContext(&apos;doYield&apos;);&#xD;proc.pushContext();</l></block><list><l>https://source.unsplash.com/random</l></list></block></block></script><script><block s="doReport"><block s="reportApplyExtension"><l>cst_load(url)</l><list><l>https://source.unsplash.com/random</l></list></block></block></script></block></script></block-definition><block-definition s="set cursor to %&apos;cursor&apos; offset x: %&apos;x&apos; y: %&apos;y&apos;" type="command" category="Avi&apos;s Custom Blocks"><header></header><code></code><translations></translations><inputs><input type="%s">auto<options>auto&#xD;default&#xD;none&#xD;context-menu&#xD;help&#xD;pointer&#xD;progress&#xD;wait&#xD;cell&#xD;crosshair&#xD;text&#xD;vertical-text&#xD;alias&#xD;copy&#xD;move&#xD;no-drop&#xD;not-allowed&#xD;grab&#xD;grabbing&#xD;e-resize&#xD;n-resize&#xD;ne-resize&#xD;nw-resize&#xD;s-resize&#xD;se-resize&#xD;sw-resize&#xD;w-resize&#xD;ew-resize&#xD;ns-resize&#xD;nesw-resize&#xD;nwse-resize&#xD;col-resize&#xD;row-resize&#xD;all-scroll&#xD;zoom-in&#xD;zoom-out</options></input><input type="%n">0</input><input type="%n">0</input></inputs><script><block s="doIf"><block s="reportNot"><block s="reportVariadicOr"><list><block s="reportIsA"><block var="cursor"/><l><option>text</option></l></block><block s="reportIsA"><block var="cursor"/><l><option>costume</option></l></block></list></block></block><script><custom-block s="error %txt"><block s="reportJoinWords"><list><l>expecting a string or a costume but getting a </l><block s="reportTypeOf"><block var="cursor"/></block></list></block></custom-block></script><list></list></block><block s="doRun"><block s="reportJSFunction"><list><l>cursor</l><l>x</l><l>y</l></list><l>let world = this.parentThatIsA(WorldMorph)&#xD;let cursorStyle = &apos;auto&apos;&#xD;&#xD;if (cursor instanceof SVG_Costume) {&#xD;  cursorStyle = `url(${cursor.contents.src}) ${x} ${y}, auto`&#xD;} else if (cursor instanceof Costume) {&#xD;  cursorStyle = `url(${cursor.contents.toDataURL()}) ${x} ${y}, auto`&#xD;} else {&#xD;  cursorStyle = `${cursor}`&#xD;}&#xD;&#xD;world.worldCanvas.style.cursor = cursorStyle</l></block><list><block var="cursor"/><block var="x"/><block var="y"/></list></block></script></block-definition><block-definition s="error %&apos;msg&apos;" type="command" category="control"><comment x="0" y="0" w="268.6666666666667" collapsed="false">Throw an error.&#xD;&#xD;Makes a red halo appear around the script that runs it,&#xD;with the input text shown in a speech balloon next to&#xD;the script, just like any Snap! error.&#xD;&#xD;This is useful to put in the second script of SAFELY TRY&#xD;after some other instructions to undo the partial work of&#xD;the first script.</comment><header></header><code></code><translations>pt:lança o erro _&#xD;</translations><inputs><input type="%txt"></input></inputs><script><block s="doApplyExtension"><l>err_error(msg)</l><list><block var="msg"/></list></block></script></block-definition><block-definition s="username" type="reporter" category="Avi&apos;s Custom Blocks"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doReport"><block s="evaluate"><block s="reportJSFunction"><list></list><l>var ide = world.children[0];&#xD;return ide.cloud.username;</l></block><list></list></block></block></script></block-definition><block-definition s="$turnAround $newImage" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doReport"><block s="reportJoinWords"><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportListItem"><l><option>random</option></l><block s="reportNewList"><list><l>​</l><l>‌</l><l>‍</l></list></block></block></autolambda><list></list></block><block s="reportNumbers"><l>1</l><block s="reportRandom"><l>2</l><l>25</l></block></block></block></block></block></script></block-definition><block-definition s="image of %&apos;request&apos;" type="reporter" category="Avi&apos;s Custom Blocks"><header></header><code></code><translations></translations><inputs><input type="%s"></input></inputs><script><block s="doReport"><block s="reportApplyExtension"><l>cst_load(url)</l><list><block s="reportJoinWords"><list><l>https://image.pollinations.ai/prompt/</l><block s="reportTextFunction"><l><option>encode URI</option></l><block s="reportJoinWords"><list><block var="request"/><custom-block s="$turnAround $newImage"></custom-block></list></block></block></list></block></list></block></block></script></block-definition><block-definition s="screenshot" type="command" category="Avi&apos;s Custom Blocks"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doRun"><block s="reportJSFunction"><list></list><l>const captureAndSave = async () =&gt; {&#xD;  const canvas = document.createElement("canvas");&#xD;  const context = canvas.getContext("2d");&#xD;  const video = document.createElement("video");&#xD;&#xD;  try {&#xD;    const captureStream = await navigator.mediaDevices.getDisplayMedia();&#xD;    video.srcObject = captureStream;&#xD;    const link = await new Promise(resolve =&gt; {&#xD;      video.onloadedmetadata = () =&gt; {&#xD;        // Wait for 1 second before capturing the screenshot&#xD;        setTimeout(() =&gt; {&#xD;          canvas.width = video.videoWidth;&#xD;          canvas.height = video.videoHeight;&#xD;          context.drawImage(video, 0, 0, video.videoWidth, video.videoHeight);&#xD;          const frame = canvas.toDataURL("image/png");&#xD;&#xD;          // Create a link element to download the image&#xD;          const downloadLink = document.createElement(&apos;a&apos;);&#xD;          downloadLink.href = frame;&#xD;          downloadLink.download = &apos;screenshot.png&apos;;&#xD;          document.body.appendChild(downloadLink);&#xD;          downloadLink.click();&#xD;          document.body.removeChild(downloadLink);&#xD;&#xD;          // Resolve the promise with the link&apos;s href&#xD;          resolve(frame);&#xD;&#xD;          captureStream.getTracks().forEach(track =&gt; track.stop());&#xD;        }, 1000);&#xD;      };&#xD;      video.play();&#xD;    });&#xD;&#xD;    // Return the link instead of logging it&#xD;    return link;&#xD;  } catch (err) {&#xD;    console.error("Error: " + err);&#xD;  }&#xD;};&#xD;&#xD;(async () =&gt; {&#xD;  const link = await captureAndSave();&#xD;  console.log("Screenshot saved:", link);&#xD;})();&#xD;</l></block><list></list></block></script></block-definition><block-definition s="clone_ID" type="reporter" category="Avi&apos;s Custom Blocks"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doReport"><block s="reportAskFor"><block s="reportGet"><l><option>parent</option></l></block><block s="reifyReporter"><autolambda><block s="reportListIndex"><block var="#1"/><block s="reportGet"><l><option>clones</option></l></block></block></autolambda><list><l>#1</l></list></block><list><block s="reportGet"><l><option>self</option></l></block></list></block></block></script></block-definition><block-definition s="load URL %&apos;URL&apos;" type="reporter" category="Avi&apos;s Custom Blocks"><header></header><code></code><translations></translations><inputs><input type="%s"></input></inputs><script><block s="doDeclareVariables"><list><l>a</l></list></block><block s="doSetVar"><l>a</l><block s="reportTextSplit"><block s="reportURL"><block var="URL"/></block><l><option>json</option></l></block></block><block s="doIfElse"><block s="reportVariadicEquals"><list><block var="a"/><l></l></list></block><script><block s="doSetVar"><l>a</l><custom-block s="load URL %s"><block var="URL"/></custom-block></block></script><script><block s="doReport"><block var="a"/></block></script></block></script></block-definition><block-definition s="battery %" type="reporter" category="Avi&apos;s Custom Blocks"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doDeclareVariables"><list><l>accessor</l></list></block><block s="doSetVar"><l>accessor</l><block s="evaluate"><block s="reportJSFunction"><list></list><l>var done = false,&#xD;    value = null&#xD;navigator.getBattery().then((battery) =&gt; {&#xD;    value = battery.level&#xD;    done = true&#xD;  }&#xD;)&#xD;&#xD;return new List([function() {return done}, function() {return value}])</l></block><list></list></block></block><block s="doWaitUntil"><block s="evaluate"><block s="reportListItem"><l>1</l><block var="accessor"/></block><list></list></block></block><block s="doReport"><block s="reportJoinWords"><list><block s="reportRound"><block s="reportVariadicProduct"><list><block s="evaluate"><block s="reportListItem"><l>2</l><block var="accessor"/></block><list></list></block><l>100</l></list></block></block><l>%</l></list></block></block></script></block-definition><block-definition s="Is Charging" type="predicate" category="Avi&apos;s Custom Blocks"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doDeclareVariables"><list><l>accessor</l></list></block><block s="doSetVar"><l>accessor</l><block s="evaluate"><block s="reportJSFunction"><list></list><l>var done = false,&#xD;    value = null&#xD;navigator.getBattery().then((battery) =&gt; {&#xD;    value = battery.charging&#xD;    done = true&#xD;  }&#xD;)&#xD;&#xD;return new List([function() {return done}, function() {return value}])</l></block><list></list></block></block><block s="doWaitUntil"><block s="evaluate"><block s="reportListItem"><l>1</l><block var="accessor"/></block><list></list></block></block><block s="doReport"><block s="evaluate"><block s="reportListItem"><l>2</l><block var="accessor"/></block><list></list></block></block></script></block-definition><block-definition s="My URL" type="reporter" category="Avi&apos;s Custom Blocks"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doReport"><block s="evaluate"><block s="reportJSFunction"><list></list><l>return window. location. href</l></block><list></list></block></block></script></block-definition><block-definition s="answer of %&apos;question&apos;" type="reporter" category="Avi&apos;s Custom Blocks"><header></header><code></code><translations></translations><inputs><input type="%s"></input></inputs><script><block s="doAsk"><block var="question"/></block><block s="doReport"><block s="getLastAnswer"></block></block></script></block-definition><block-definition s="Scan QR Code" type="reporter" category="Avi&apos;s Custom Blocks"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doDeclareVariables"><list><l>result</l></list></block><block s="doSetVar"><l>result</l><block s="evaluate"><block s="reportJSFunction"><list></list><l>var done = false;&#xD;var test = null;&#xD;&#xD;// Helper function to get a cookie by name&#xD;function getCookie(name) {&#xD;    const value = `; ${document.cookie}`;&#xD;    const parts = value.split(`; ${name}=`);&#xD;    if (parts.length === 2) return parts.pop().split(&apos;;&apos;).shift();&#xD;}&#xD;&#xD;// Helper function to set a cookie&#xD;function setCookie(name, value, days) {&#xD;    let expires = "";&#xD;    if (days) {&#xD;        const date = new Date();&#xD;        date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));&#xD;        expires = `; expires=${date.toUTCString()}`;&#xD;    }&#xD;    document.cookie = `${name}=${value || ""}${expires}; path=/`;&#xD;}&#xD;&#xD;// Helper function to delete a cookie&#xD;function deleteCookie(name) {&#xD;    document.cookie = `${name}=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/;`;&#xD;}&#xD;&#xD;let isRunning = false;&#xD;&#xD;function startWebcam(onQRCodeDetected) {&#xD;    if (getCookie(&apos;webcamRunning&apos;) === &apos;true&apos;) {&#xD;        console.log(&apos;Webcam is already running. Please wait until it finishes.&apos;);&#xD;        return;&#xD;    }&#xD;&#xD;    setCookie(&apos;webcamRunning&apos;, &apos;true&apos;, 1); // Set the cookie to indicate the webcam is running&#xD;&#xD;    const modal = document.createElement(&apos;div&apos;);&#xD;    modal.style.position = &apos;fixed&apos;;&#xD;    modal.style.top = &apos;50%&apos;;&#xD;    modal.style.left = &apos;50%&apos;;&#xD;    modal.style.transform = &apos;translate(-50%, -50%)&apos;;&#xD;    modal.style.background = &apos;#f4f4f9&apos;;&#xD;    modal.style.borderRadius = &apos;8px&apos;;&#xD;    modal.style.padding = &apos;20px&apos;;&#xD;    modal.style.boxShadow = &apos;0 4px 12px rgba(0, 0, 0, 0.2)&apos;;&#xD;    modal.style.zIndex = 1000;&#xD;    modal.style.display = &apos;none&apos;;&#xD;    document.body.appendChild(modal);&#xD;&#xD;    const video = document.createElement(&apos;video&apos;);&#xD;    video.style.width = &apos;640px&apos;;&#xD;    video.style.height = &apos;480px&apos;;&#xD;    video.style.borderRadius = &apos;8px&apos;;&#xD;    video.style.boxShadow = &apos;0 2px 8px rgba(0, 0, 0, 0.2)&apos;;&#xD;    video.style.transform = &apos;scaleX(-1)&apos;;&#xD;    video.autoplay = true;&#xD;    video.style.backgroundColor = &apos;#000&apos;;&#xD;    video.style.position = &apos;relative&apos;;&#xD;    modal.appendChild(video);&#xD;&#xD;    // Modernized and animated close button&#xD;    const closeButton = document.createElement(&apos;button&apos;);&#xD;    closeButton.textContent = &apos;×&apos;;&#xD;    closeButton.style.position = &apos;absolute&apos;;&#xD;    closeButton.style.top = &apos;10px&apos;;&#xD;    closeButton.style.right = &apos;10px&apos;;&#xD;    closeButton.style.background = &apos;#ff5f5f&apos;;&#xD;    closeButton.style.border = &apos;none&apos;;&#xD;    closeButton.style.borderRadius = &apos;50%&apos;;&#xD;    closeButton.style.fontSize = &apos;24px&apos;;&#xD;    closeButton.style.color = &apos;#fff&apos;;&#xD;    closeButton.style.width = &apos;40px&apos;;&#xD;    closeButton.style.height = &apos;40px&apos;;&#xD;    closeButton.style.display = &apos;flex&apos;;&#xD;    closeButton.style.alignItems = &apos;center&apos;;&#xD;    closeButton.style.justifyContent = &apos;center&apos;;&#xD;    closeButton.style.cursor = &apos;pointer&apos;;&#xD;    closeButton.style.zIndex = 1001;&#xD;    closeButton.style.transition = &apos;background-color 0.3s ease, transform 0.3s ease, box-shadow 0.3s ease&apos;;&#xD;    closeButton.addEventListener(&apos;mouseover&apos;, () =&gt; {&#xD;        closeButton.style.backgroundColor = &apos;#ff4c4c&apos;;&#xD;        closeButton.style.transform = &apos;scale(1.1)&apos;;&#xD;        closeButton.style.boxShadow = &apos;0 8px 16px rgba(0, 0, 0, 0.3)&apos;;&#xD;    });&#xD;    closeButton.addEventListener(&apos;mouseout&apos;, () =&gt; {&#xD;        closeButton.style.backgroundColor = &apos;#ff5f5f&apos;;&#xD;        closeButton.style.transform = &apos;scale(1)&apos;;&#xD;        closeButton.style.boxShadow = &apos;0 4px 12px rgba(0, 0, 0, 0.2)&apos;;&#xD;    });&#xD;    closeButton.onclick = closeWebcam;&#xD;    modal.appendChild(closeButton);&#xD;&#xD;    // Modernized and animated file upload button&#xD;    const fileLabel = document.createElement(&apos;label&apos;);&#xD;    fileLabel.textContent = &apos;Upload Image&apos;;&#xD;    fileLabel.style.display = &apos;block&apos;;&#xD;    fileLabel.style.marginTop = &apos;20px&apos;;&#xD;    fileLabel.style.padding = &apos;10px 20px&apos;;&#xD;    fileLabel.style.backgroundColor = &apos;#007bff&apos;;&#xD;    fileLabel.style.color = &apos;#fff&apos;;&#xD;    fileLabel.style.borderRadius = &apos;5px&apos;;&#xD;    fileLabel.style.fontSize = &apos;16px&apos;;&#xD;    fileLabel.style.cursor = &apos;pointer&apos;;&#xD;    fileLabel.style.textAlign = &apos;center&apos;;&#xD;    fileLabel.style.boxShadow = &apos;0 4px 8px rgba(0, 0, 0, 0.2)&apos;;&#xD;    fileLabel.style.transition = &apos;background-color 0.3s ease, box-shadow 0.3s ease, transform 0.3s ease&apos;;&#xD;&#xD;    const fileInput = document.createElement(&apos;input&apos;);&#xD;    fileInput.type = &apos;file&apos;;&#xD;    fileInput.accept = &apos;image/*&apos;;&#xD;    fileInput.style.display = &apos;none&apos;; // Hide the default input&#xD;    fileInput.onchange = handleFileUpload;&#xD;&#xD;    fileLabel.htmlFor = fileInput.id = &apos;file-upload&apos;;&#xD;    modal.appendChild(fileLabel);&#xD;    modal.appendChild(fileInput);&#xD;&#xD;    fileLabel.addEventListener(&apos;mouseover&apos;, () =&gt; {&#xD;        fileLabel.style.backgroundColor = &apos;#0056b3&apos;;&#xD;        fileLabel.style.transform = &apos;scale(1.05)&apos;;&#xD;        fileLabel.style.boxShadow = &apos;0 6px 12px rgba(0, 0, 0, 0.3)&apos;;&#xD;    });&#xD;    fileLabel.addEventListener(&apos;mouseout&apos;, () =&gt; {&#xD;        fileLabel.style.backgroundColor = &apos;#007bff&apos;;&#xD;        fileLabel.style.transform = &apos;scale(1)&apos;;&#xD;        fileLabel.style.boxShadow = &apos;0 4px 8px rgba(0, 0, 0, 0.2)&apos;;&#xD;    });&#xD;&#xD;    const canvas = document.createElement(&apos;canvas&apos;);&#xD;    canvas.width = 640;&#xD;    canvas.height = 480;&#xD;    canvas.style.position = &apos;absolute&apos;;&#xD;    canvas.style.top = &apos;0&apos;;&#xD;    canvas.style.left = &apos;0&apos;;&#xD;    canvas.style.borderRadius = &apos;8px&apos;;&#xD;    modal.appendChild(canvas);&#xD;&#xD;    const context = canvas.getContext(&apos;2d&apos;);&#xD;&#xD;    function drawSquare() {&#xD;        const size = 300;&#xD;        const x = (canvas.width - size) / 2;&#xD;        const y = (canvas.height - size) / 2;&#xD;        const radius = 20;&#xD;&#xD;        context.clearRect(0, 0, canvas.width, canvas.height);&#xD;&#xD;        context.strokeStyle = &apos;white&apos;;&#xD;        context.lineWidth = 5;&#xD;        context.lineJoin = &apos;round&apos;;&#xD;        context.lineCap = &apos;round&apos;;&#xD;&#xD;        context.beginPath();&#xD;        context.moveTo(x + radius, y);&#xD;        context.arcTo(x + size, y, x + size, y + size, radius);&#xD;        context.arcTo(x + size, y + size, x, y + size, radius);&#xD;        context.arcTo(x, y + size, x, y, radius);&#xD;        context.arcTo(x, y, x + size, y, radius);&#xD;        context.closePath();&#xD;        context.stroke();&#xD;    }&#xD;&#xD;    let stream = null;&#xD;    let isProcessing = true;&#xD;&#xD;    function closeWebcam() {&#xD;        if (stream) {&#xD;            stream.getTracks().forEach(track =&gt; track.stop());&#xD;        }&#xD;        document.body.removeChild(modal);&#xD;        deleteCookie(&apos;webcamRunning&apos;); // Remove the cookie when closing the webcam&#xD;        isRunning = false;&#xD;        done = true; // Set done to true when closing the webcam&#xD;    }&#xD;&#xD;    function updateCapturedImage() {&#xD;        if (!isProcessing) return;&#xD;&#xD;        const size = 300;&#xD;        const x = (canvas.width - size) / 2;&#xD;        const y = (canvas.height - size) / 2;&#xD;&#xD;        const tempCanvas = document.createElement(&apos;canvas&apos;);&#xD;        tempCanvas.width = size;&#xD;        tempCanvas.height = size;&#xD;        const tempContext = tempCanvas.getContext(&apos;2d&apos;);&#xD;&#xD;        tempContext.drawImage(video, x, y, size, size, 0, 0, size, size);&#xD;&#xD;        const imageData = tempContext.getImageData(0, 0, size, size);&#xD;        const data = imageData.data;&#xD;        const threshold = 100;&#xD;        for (let i = 0; i &lt; data.length; i += 4) {&#xD;            const avg = (data[i] + data[i + 1] + data[i + 2]) / 3;&#xD;            const binary = avg &gt; threshold ? 255 : 0;&#xD;            data[i] = data[i + 1] = data[i + 2] = binary;&#xD;        }&#xD;        tempContext.putImageData(imageData, 0, 0);&#xD;&#xD;        const formData = new FormData();&#xD;        formData.append(&apos;file&apos;, dataURItoBlob(tempCanvas.toDataURL(&apos;image/png&apos;)), &apos;image.png&apos;);&#xD;&#xD;        fetch(&apos;https://api.qrserver.com/v1/read-qr-code/&apos;, {&#xD;            method: &apos;POST&apos;,&#xD;            body: formData&#xD;        })&#xD;        .then(response =&gt; response.json())&#xD;        .then(data =&gt; {&#xD;            if (data &amp;&amp; data[0] &amp;&amp; data[0].symbol &amp;&amp; data[0].symbol[0] &amp;&amp; data[0].symbol[0].data) {&#xD;                const result = data[0].symbol[0].data;&#xD;                onQRCodeDetected(result);&#xD;                isProcessing = false;&#xD;                closeWebcam();&#xD;            }&#xD;        })&#xD;        .catch(error =&gt; {&#xD;            console.error(&apos;Error reading QR code:&apos;, error);&#xD;        });&#xD;&#xD;        requestAnimationFrame(updateCapturedImage);&#xD;    }&#xD;&#xD;    function dataURItoBlob(dataURI) {&#xD;        const byteString = atob(dataURI.split(&apos;,&apos;)[1]);&#xD;        const mimeString = dataURI.split(&apos;,&apos;)[0].split(&apos;:&apos;)[1].split(&apos;;&apos;)[0];&#xD;        const ab = new ArrayBuffer(byteString.length);&#xD;        const ia = new Uint8Array(ab);&#xD;        for (let i = 0; i &lt; byteString.length; i++) {&#xD;            ia[i] = byteString.charCodeAt(i);&#xD;        }&#xD;        return new Blob([ab], { type: mimeString });&#xD;    }&#xD;&#xD;    function handleFileUpload(event) {&#xD;        const file = event.target.files[0];&#xD;        if (file) {&#xD;            const reader = new FileReader();&#xD;            reader.onload = function(e) {&#xD;                const img = new Image();&#xD;                img.onload = function() {&#xD;                    const tempCanvas = document.createElement(&apos;canvas&apos;);&#xD;                    tempCanvas.width = img.width;&#xD;                    tempCanvas.height = img.height;&#xD;                    const tempContext = tempCanvas.getContext(&apos;2d&apos;);&#xD;                    tempContext.drawImage(img, 0, 0);&#xD;&#xD;                    const size = 300;&#xD;                    const x = (tempCanvas.width - size) / 2;&#xD;                    const y = (tempCanvas.height - size) / 2;&#xD;&#xD;                    const imageData = tempContext.getImageData(x, y, size, size);&#xD;                    const data = imageData.data;&#xD;                    const threshold = 100;&#xD;                    for (let i = 0; i &lt; data.length; i += 4) {&#xD;                        const avg = (data[i] + data[i + 1] + data[i + 2]) / 3;&#xD;                        const binary = avg &gt; threshold ? 255 : 0;&#xD;                        data[i] = data[i + 1] = data[i + 2] = binary;&#xD;                    }&#xD;                    tempContext.putImageData(imageData, 0, 0);&#xD;&#xD;                    const formData = new FormData();&#xD;                    formData.append(&apos;file&apos;, dataURItoBlob(tempCanvas.toDataURL(&apos;image/png&apos;)), &apos;image.png&apos;);&#xD;&#xD;                    fetch(&apos;https://api.qrserver.com/v1/read-qr-code/&apos;, {&#xD;                        method: &apos;POST&apos;,&#xD;                        body: formData&#xD;                    })&#xD;                    .then(response =&gt; response.json())&#xD;                    .then(data =&gt; {&#xD;                        if (data &amp;&amp; data[0] &amp;&amp; data[0].symbol &amp;&amp; data[0].symbol[0] &amp;&amp; data[0].symbol[0].data) {&#xD;                            const result = data[0].symbol[0].data;&#xD;                            onQRCodeDetected(result);&#xD;                            done = true;&#xD;                            isProcessing = false;&#xD;                            closeWebcam();&#xD;                        } else {&#xD;                            console.error(&apos;No QR code detected in the image&apos;);&#xD;                        }&#xD;                    })&#xD;                    .catch(error =&gt; {&#xD;                        console.error(&apos;Error reading QR code:&apos;, error);&#xD;                    });&#xD;                };&#xD;                img.onerror = function(err) {&#xD;                    console.error(&apos;Error loading image:&apos;, err);&#xD;                };&#xD;                img.src = e.target.result;&#xD;            };&#xD;            reader.onerror = function(err) {&#xD;                console.error(&apos;Error reading file:&apos;, err);&#xD;            };&#xD;            reader.readAsDataURL(file);&#xD;        } else {&#xD;            console.error(&apos;No file selected&apos;);&#xD;        }&#xD;    }&#xD;&#xD;    navigator.mediaDevices.getUserMedia({ video: { facingMode: &apos;environment&apos; } })&#xD;        .then(mediaStream =&gt; {&#xD;            stream = mediaStream;&#xD;            video.srcObject = mediaStream;&#xD;            video.play();&#xD;            modal.style.display = &apos;block&apos;;&#xD;&#xD;            function updateCanvas() {&#xD;                drawSquare();&#xD;                requestAnimationFrame(updateCanvas);&#xD;            }&#xD;            updateCanvas();&#xD;&#xD;            updateCapturedImage();&#xD;        })&#xD;        .catch(err =&gt; {&#xD;            console.error(&apos;Error accessing webcam: &apos;, err);&#xD;            deleteCookie(&apos;webcamRunning&apos;); // Remove the cookie if there&apos;s an error&#xD;        });&#xD;}&#xD;&#xD;// Start the webcam&#xD;startWebcam(result =&gt; {&#xD;    console.log(&apos;QR Code Detected:&apos;, result);&#xD;    done = true;&#xD;    test = result;&#xD;});&#xD;&#xD;return () =&gt; {&#xD;    return new List([done, test]);&#xD;}&#xD;</l></block><list></list></block></block><block s="doWaitUntil"><block s="reportListItem"><l>1</l><block s="evaluate"><block var="result"/><list></list></block></block></block><block s="doReport"><block s="reportListItem"><l>2</l><block s="evaluate"><block var="result"/><list></list></block></block></block></script></block-definition></blocks><primitives></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="4431"><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="4432"></list></costumes><sounds><list struct="atomic" id="4433"></list></sounds><variables></variables><blocks></blocks><scripts></scripts><sprites select="1"><sprite name="Blocks" idx="1" x="0" y="0" heading="90" scale="1" volume="100" pan="0" rotation="1" draggable="true" costume="0" color="80,80,80,1" pen="tip" id="4438"><costumes><list struct="atomic" id="4439"></list></costumes><sounds><list struct="atomic" id="4440"></list></sounds><blocks></blocks><variables></variables><scripts><script x="20" y="20"><custom-block s="time till Year: %s Month: %s Day: %s"><l>2025</l><l>1</l><l>1</l></custom-block></script><script x="20" y="53.000000000000114"><custom-block s="is NaN %s"><l></l></custom-block></script><script x="20" y="86.00000000000011"><custom-block s="Set costume %s to solid RGBA %l"><l></l><l/></custom-block></script><script x="20" y="119.00000000000011"><custom-block s="XNOR %mult%boolUE"><list><l/></list></custom-block></script><script x="20" y="150.0000000000001"><custom-block s="mask RGBA %l of costume %s with sprite %s with intensity %s"><l/><l></l><l></l><l>100</l></custom-block></script><script x="20" y="183.0000000000001"><custom-block s="create costume with RGBA %l"><l/></custom-block></script><script x="20" y="213.0000000000001"><custom-block s="center %s with size %n on sprite %s"><l>TEXT</l><l>10</l><l></l></custom-block></script><script x="20" y="252.0000000000001"><custom-block s="filter costume %s with %mlt"><l></l><l></l></custom-block></script><script x="20" y="285.0000000000001"><custom-block s="clone_ID"></custom-block></script><script x="20" y="314.83333333333337"><custom-block s="PI"></custom-block></script><script x="20" y="344.66666666666674"><custom-block s="Cross Process %l"><l/></custom-block></script><script x="20" y="374.66666666666674"><custom-block s="Edges of costume %s"><l></l></custom-block></script><script x="20" y="407.66666666666674"><custom-block s="contrast %l %n"><l/><l>0.5</l></custom-block></script><script x="20" y="440.66666666666663"><custom-block s="direction from x %n y %n to x %n y %n"><l></l><l></l><l></l><l></l></custom-block></script><script x="20" y="473.66666666666663"><custom-block s="NOR %mult%boolUE"><list><l/></list></custom-block></script><script x="20" y="504.66666666666663"><custom-block s="Tritanopia %l"><l/></custom-block></script><script x="20" y="534.6666666666666"><custom-block s="average: %mult%n"><list><l></l></list></custom-block></script><script x="20" y="567.6666666666666"><custom-block s="Deuteranopia %l"><l/></custom-block></script><script x="20" y="597.6666666666666"><custom-block s="answer of %s"><l></l></custom-block></script><script x="20" y="630.6666666666666"><custom-block s="BinaryToNumber: %n"><l>0</l></custom-block></script><script x="20" y="663.6666666666666"><custom-block s="color from image %n %l"><l>1</l><l/></custom-block></script><script x="20" y="696.6666666666666"><custom-block s="isPrime: %n"><l>0</l></custom-block></script><script x="20" y="729.6666666666666"><custom-block s="Black &amp; White %l"><l/></custom-block></script><script x="20" y="759.6666666666666"><custom-block s="distance between RGBA %l and %l"><l/><l/></custom-block></script><script x="20" y="789.6666666666666"><custom-block s="ToBinary: %n in List: %b"><l>0</l><l><bool>true</bool></l></custom-block></script><script x="20" y="822.6666666666666"><custom-block s="isOdd: %n %b"><l>1</l><l><bool>true</bool></l></custom-block></script><script x="20" y="855.6666666666666"><custom-block s="Inverse %l"><l/></custom-block></script><script x="20" y="885.6666666666666"><custom-block s="delete all clones"></custom-block></script><script x="20" y="921.5"><custom-block s="NAND %mult%boolUE"><list><l/></list></custom-block></script><script x="20" y="952.5000000000002"><custom-block s="Infinity"></custom-block></script><script x="20" y="982.3333333333335"><custom-block s="-Infinity"></custom-block></script><script x="20" y="1012.1666666666667"><custom-block s="XOR %mult%boolUE"><list><l/></list></custom-block></script><script x="20" y="1043.1666666666665"><custom-block s="3D to 2D %n %n %n focal length %n"><l>0</l><l>0</l><l>0</l><l>100</l></custom-block></script><script x="20" y="1076.1666666666665"><custom-block s="Reverse string %s"><l>World</l></custom-block></script><script x="20" y="1109.1666666666665"><custom-block s="shift list %l by %n"><l/><l>0</l></custom-block></script><script x="20" y="1142.1666666666665"><custom-block s="radix conversion %n %s"><l>100</l><l></l></custom-block></script><script x="20" y="1175.1666666666665"><custom-block s="JavaScript enabled?"></custom-block></script><script x="20" y="1205"><custom-block s="QR from %s"><l></l></custom-block></script><script x="20" y="1238"><custom-block s="randomImage"></custom-block></script><script x="20" y="1267.833333333333"><custom-block s="load URL %s"><l></l></custom-block></script><script x="20" y="1300.833333333333"><custom-block s="image of %s"><l></l></custom-block></script><comment x="20" y="1333.833333333333" w="235" collapsed="false">Javascript Blocks</comment><script x="20" y="1387.833333333333"><custom-block s="map costume to points %s %s %s %s %s"><l></l><l></l><l></l><l></l><l></l></custom-block></script><script x="20" y="1426.833333333333"><custom-block s="set cursor to %s offset x: %n y: %n"><l>auto</l><l>0</l><l>0</l></custom-block></script><script x="20" y="1465.833333333333"><custom-block s="username"></custom-block></script><script x="20" y="1495.6666666666665"><custom-block s="screenshot"></custom-block></script><script x="20" y="1531.4999999999995"><custom-block s="battery %"></custom-block></script><script x="20" y="1561.333333333333"><custom-block s="Is Charging"></custom-block></script><script x="20" y="1591.166666666666"><custom-block s="My URL"></custom-block></script><script x="20" y="1620.9999999999995"><custom-block s="Scan QR Code"></custom-block></script></scripts></sprite><watcher var="test" style="normal" x="10" y="10" color="243,118,29" hidden="true"/></sprites></stage><variables></variables></scene></scenes></project><media name="My Blocks" app="Snap! 10, https://snap.berkeley.edu" version="2"></media></snapdata>