<snapdata remixID="11451534"><project name="TicTacToe" app="Snap! 7, https://snap.berkeley.edu" version="2"><notes></notes><thumbnail>data:image/png;base64,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</thumbnail><scenes select="1"><scene name="TicTacToe"><notes></notes><hidden></hidden><headers></headers><code></code><blocks><block-definition s="for %&apos;i&apos; = %&apos;start&apos; to %&apos;end&apos; %&apos;action&apos;" type="command" category="control"><header></header><code></code><translations></translations><inputs><input type="%upvar"></input><input type="%n">1</input><input type="%n">10</input><input type="%cs"></input></inputs><script><block s="doDeclareVariables"><list><l>step</l><l>tester</l></list></block><block s="doIfElse"><block s="reportGreaterThan"><block var="start"/><block var="end"/></block><script><block s="doSetVar"><l>step</l><l>-1</l></block><block s="doSetVar"><l>tester</l><block s="reifyReporter"><autolambda><block s="reportLessThan"><block var="i"/><block var="end"/></block></autolambda><list></list></block></block></script><script><block s="doSetVar"><l>step</l><l>1</l></block><block s="doSetVar"><l>tester</l><block s="reifyReporter"><autolambda><block s="reportGreaterThan"><block var="i"/><block var="end"/></block></autolambda><list></list></block></block></script></block><block s="doSetVar"><l>i</l><block var="start"/></block><block s="doUntil"><block s="evaluate"><block var="tester"/><list></list></block><script><block s="doRun"><block var="action"/><list></list></block><block s="doChangeVar"><l>i</l><block var="step"/></block></script></block></script></block-definition><block-definition s="join words %&apos;words&apos;" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%mult%txt"></input></inputs><script><block s="doWarp"><script><block s="doIf"><block s="errorObsolete"></block><script><block s="doReport"><block s="reportListItem"><l>1</l><block var="words"/></block></block></script></block><block s="doIf"><block s="reportEquals"><l></l><block s="reportListItem"><l>1</l><block var="words"/></block></block><script><block s="doReport"><custom-block s="join words %mult%txt"><block s="reportCDR"><block var="words"/></block></custom-block></block></script></block><block s="doIf"><block s="reportEquals"><l></l><block s="reportListItem"><l>2</l><block var="words"/></block></block><script><block s="doReport"><custom-block s="join words %mult%txt"><block s="reportCONS"><block s="reportListItem"><l>1</l><block var="words"/></block><block s="reportCDR"><block s="reportCDR"><block var="words"/></block></block></block></custom-block></block></script></block><block s="doReport"><block s="reportJoinWords"><list><block s="reportListItem"><l>1</l><block var="words"/></block><l> </l><custom-block s="join words %mult%txt"><block s="reportCDR"><block var="words"/></block></custom-block></list></block></block></script></block></script><scripts><script x="229.00000300000002" y="196.77778077777774"><block s="reportJoinWords"><list><l></l><l></l></list></block></script></scripts></block-definition><block-definition s="ignore %&apos;x&apos;" type="command" category="control"><header></header><code></code><translations></translations><inputs><input type="%s"></input></inputs></block-definition><block-definition s="makeBoard" type="command" category="other"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doSwitchToCostume"><l>Empty</l></block><block s="show"></block><block s="setEffect"><l><option>ghost</option></l><l>30</l></block><block s="setScale"><l>95</l></block><block s="doSetVar"><l>position number</l><l>1</l></block><custom-block s="for %upvar = %n to %n %cs"><l>i</l><l>1</l><l>3</l><script><custom-block s="for %upvar = %n to %n %cs"><l>j</l><l>1</l><l>3</l><script><block s="gotoXY"><block s="reportVariadicSum"><list><l>-100</l><block s="reportVariadicProduct"><list><l>50</l><block var="j"/></list></block></list></block><block s="reportDifference"><l>100</l><block s="reportVariadicProduct"><list><l>50</l><block var="i"/></list></block></block></block><block s="createClone"><l><option>myself</option></l></block><block s="doChangeVar"><l>position number</l><l>1</l></block></script></custom-block></script></custom-block><block s="hide"></block></script></block-definition><block-definition s="possible winning triples" type="reporter" category="lists"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doReport"><block s="reportNewList"><list><block s="reportNewList"><list><l>1</l><l>2</l><l>3</l></list></block><block s="reportNewList"><list><l>4</l><l>5</l><l>6</l></list></block><block s="reportNewList"><list><l>7</l><l>8</l><l>9</l></list></block><block s="reportNewList"><list><l>1</l><l>4</l><l>7</l></list></block><block s="reportNewList"><list><l>2</l><l>5</l><l>8</l></list></block><block s="reportNewList"><list><l>3</l><l>6</l><l>9</l></list></block><block s="reportNewList"><list><l>1</l><l>5</l><l>9</l></list></block><block s="reportNewList"><list><l>3</l><l>5</l><l>7</l></list></block></list></block></block></script></block-definition><block-definition s="status of triple %&apos;triple&apos;" type="reporter" category="lists"><header></header><code></code><translations></translations><inputs><input type="%l"></input></inputs><script><block s="doReport"><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportListItem"><l></l><block var="board"/></block></autolambda><list></list></block><block var="triple"/></block></block></script></block-definition><block-definition s="status of all winning triples" type="reporter" category="lists"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doReport"><block s="reportMap"><block s="reifyReporter"><autolambda><custom-block s="status of triple %l"><l/></custom-block></autolambda><list></list></block><custom-block s="possible winning triples"></custom-block></block></block></script></block-definition><block-definition s="won? %&apos;who&apos;" type="predicate" category="operators"><header></header><code></code><translations></translations><inputs><input type="%s"></input></inputs><script><block s="doReport"><block s="reportListContainsItem"><custom-block s="status of all winning triples"></custom-block><block s="reportNewList"><list><block var="who"/><block var="who"/><block var="who"/></list></block></block></block></script></block-definition><block-definition s="tied?" type="predicate" category="operators"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doReport"><block s="reportEquals"><block s="reportFindFirst"><block s="reifyPredicate"><autolambda><block s="reportIsA"><l></l><l><option>number</option></l></block></autolambda><list></list></block><block var="board"/></block><l></l></block></block></script></block-definition><block-definition s="draw win line" type="command" category="lists"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doFor"><l>i</l><l>1</l><l>8</l><script><block s="doDeclareVariables"><list><l>line</l></list></block><block s="doIf"><block s="reportOr"><block s="reportEquals"><block s="reportListItem"><block var="i"/><custom-block s="status of all winning triples"></custom-block></block><block s="reportNewList"><list><l>X</l><l>X</l><l>X</l></list></block></block><block s="reportEquals"><block s="reportListItem"><block var="i"/><custom-block s="status of all winning triples"></custom-block></block><block s="reportNewList"><list><l>O</l><l>O</l><l>O</l></list></block></block></block><script><block s="doSetVar"><l>line</l><block s="reportListItem"><block var="i"/><block var="win lines"/></block></block><block s="up"></block><block s="doGotoObject"><block s="reportListItem"><l>1</l><block var="line"/><comment w="137.33333333333334" collapsed="false">This is why each line in WIN LINES is a list of points, each of which is a list of x,y coordinates:  It allows us to use the endpoints, as points, in the GO TO block.</comment></block></block><block s="down"></block><block s="doGotoObject"><block s="reportListItem"><l>2</l><block var="line"/></block></block><block s="up"></block></script></block></script></block></script><scripts><comment x="174" y="6.666666666666668" w="244" collapsed="false">I&apos;m kind of bummed that I didn&apos;t find a beautiful one-line solution using FIND FIRST, but it just gives the value it finds, not the position in the list, which is what we need to find the line endpoints in WIN LINES. So it&apos;s a plain old fashioned FOR loop.</comment></scripts></block-definition></blocks><stage name="Stage" width="480" height="360" costume="0" color="255,255,255,1" tempo="60" threadsafe="false" penlog="false" volume="100" pan="0" lines="round" ternary="true" hyperops="true" codify="false" inheritance="false" sublistIDs="false" id="387"><pentrails>data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAeAAAAFoCAYAAACPNyggAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAB4KADAAQAAAABAAABaAAAAAAHwbojAAAL30lEQVR4Ae3QMQEAAADCoPVPbQwfiEBhwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGPgMDI3+AAEeFvcCAAAAAElFTkSuQmCC</pentrails><costumes><list struct="atomic" id="388"></list></costumes><sounds><list struct="atomic" id="389"></list></sounds><variables></variables><blocks></blocks><scripts></scripts><sprites select="1"><sprite name="Square" idx="1" x="0" y="0" heading="90" scale="0.95" volume="100" pan="0" rotation="1" draggable="false" hidden="true" costume="1" color="80,80,80,1" pen="tip" id="394"><costumes><list id="395"><item><ref mediaID="Square_cst_Empty"></ref></item><item><ref mediaID="Square_cst_X"></ref></item><item><ref mediaID="Square_cst_O"></ref></item></list></costumes><sounds><list struct="atomic" id="396"></list></sounds><blocks></blocks><variables><variable name="position number"><l>10</l></variable></variables><scripts><script x="10" y="10"><block s="receiveGo"></block><block s="clear"></block><block s="doSetVar"><l>turns</l><l>0</l></block><block s="doSetVar"><l>board</l><block s="reportNumbers"><l>1</l><l>9</l></block></block><block s="doWait"><l>0.1</l></block><block s="show"></block><block s="doSwitchToCostume"><l>Empty</l></block><custom-block s="makeBoard"></custom-block><block s="gotoXY"><l>0</l><l>0</l></block><block s="doSetVar"><l>X&apos;s turn?</l><block s="reportBoolean"><l><bool>true</bool></l></block></block></script><script x="10.333333333333371" y="251.83333333333064"><block s="receiveInteraction"><l><option>clicked</option></l></block><block s="doSetVar"><l>turns</l><block s="reportVariadicSum"><list><block var="turns"/><l>1</l></list></block></block><block s="doIf"><block s="reportEquals"><block s="getCostumeIdx"></block><l>1</l></block><script><block s="doIfElse"><block var="X&apos;s turn?"/><script><block s="doSwitchToCostume"><l>X</l></block><block s="doSetVar"><l>X&apos;s turn?</l><block s="reportBoolean"><l><bool>false</bool></l></block></block><block s="doReplaceInList"><block var="position number"/><block var="board"/><l>X</l></block><block s="doIf"><custom-block s="won? %s"><l>X</l></custom-block><script><block s="bubble"><l>X won!</l></block><block s="goToLayer"><l><option>front</option></l></block><block s="doTellTo"><l>Sprite</l><block s="reifyScript"><script><custom-block s="draw win line"></custom-block></script><list></list></block><list></list></block><block s="doStopThis"><l><option>this script</option></l></block></script></block></script><script><block s="doSwitchToCostume"><l>O</l></block><block s="doSetVar"><l>X&apos;s turn?</l><block s="reportBoolean"><l><bool>true</bool></l></block></block><block s="doReplaceInList"><block var="position number"/><block var="board"/><l>O</l></block><block s="doIf"><custom-block s="won? %s"><l>O</l></custom-block><script><block s="bubble"><l>O won!</l></block><block s="goToLayer"><l><option>front</option></l></block><block s="doTellTo"><l>Sprite</l><block s="reifyScript"><script><custom-block s="draw win line"></custom-block></script><list></list></block><list></list></block><block s="doStopThis"><l><option>this script</option></l></block></script></block></script></block></script></block><block s="doIf"><block s="reportEquals"><block var="turns"/><l>9</l></block><script><block s="doSayFor"><l>The games ends in a tie!</l><l>2</l></block></script></block></script></scripts></sprite><sprite name="Sprite" idx="2" x="0" y="-100" heading="90" scale="1" volume="100" pan="0" rotation="1" draggable="true" hidden="true" costume="0" color="255,32,0,1" pen="tip" id="527"><costumes><list struct="atomic" id="528"></list></costumes><sounds><list struct="atomic" id="529"></list></sounds><blocks></blocks><variables></variables><scripts><script x="27" y="23.666666666666668"><block s="receiveGo"></block><block s="hide"></block><block s="setSize"><l>5</l></block><block s="setColor"><color>255,32,0,1</color></block></script></scripts></sprite><watcher scope="Square" var="position number" style="normal" x="10" y="298.500002" color="243,118,29" hidden="true"/><watcher var="playing" style="normal" x="10" y="325.49999600000007" color="243,118,29" hidden="true"/><watcher var="win lines" style="normal" x="10" y="177.99999800000003" color="243,118,29" hidden="true"/><watcher var="board" style="normal" x="0" y="27" color="243,118,29" extX="80" extY="70"/><watcher var="turns" style="normal" x="5" y="146.999998" color="243,118,29"/></sprites></stage><variables><variable name="X&apos;s turn?"><bool>true</bool></variable><variable name="board"><list struct="atomic" id="545">1,2,3,4,5,6,7,8,9</list></variable><variable name="playing"><bool>true</bool></variable><variable name="win lines"><list id="546"><item><list id="547"><item><list struct="atomic" id="548">-100,50</list></item><item><list struct="atomic" id="549">100,50</list></item></list></item><item><list id="550"><item><list struct="atomic" id="551">-100,0</list></item><item><list struct="atomic" id="552">100,0</list></item></list></item><item><list id="553"><item><list struct="atomic" id="554">-100,-50</list></item><item><list struct="atomic" id="555">100,-50</list></item></list></item><item><list id="556"><item><list struct="atomic" id="557">-50,100</list></item><item><list struct="atomic" id="558">-50,-100</list></item></list></item><item><list id="559"><item><list struct="atomic" id="560">0,100</list></item><item><list struct="atomic" id="561">0,-100</list></item></list></item><item><list id="562"><item><list struct="atomic" id="563">50,100</list></item><item><list struct="atomic" id="564">50,-100</list></item></list></item><item><list id="565"><item><list struct="atomic" id="566">-100,100</list></item><item><list struct="atomic" id="567">100,-100</list></item></list></item><item><list id="568"><item><list struct="atomic" id="569">-100,-100</list></item><item><list struct="atomic" id="570">100,100</list></item></list></item></list></variable><variable name="turns"><l>0</l></variable></variables></scene></scenes></project><media name="TicTacToe" app="Snap! 7, https://snap.berkeley.edu" version="2"><costume name="Empty" center-x="29" center-y="28" image="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADkAAAA5CAYAAACMGIOFAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAOaADAAQAAAABAAAAOQAAAAC3kYqgAAABS0lEQVRoBe2asY2DUBBE19YVcCU4IbYzEoJL6YjQLVANCZITEgKky0n+deAOzrvISPzEmnS+5ksLxp5g3j5Cn8zs7nP1ufmUeH6/3lTffr+USOhMaYfc+VLbtlbXNTXwPM9pGIZg2jgyyADs+96qqooA7VnXdev+BrXzkSQMOuDl+B3j52A4vo0ZJCMQ0lmQyJYYMjLJYAnpKJPIlhgyMslgCekok8iWGDIyyWAJ6SiTyJYYMjLJYAnpKJPIlhgyMslgCekok8iWGDIyyWAJ6SiTyJYYMjLJYAnpKJPIlhgyMslgCekok8iWGDIyyWAJ6SiTyJYYMjLJYAnpKJPIlhgyMslgCekok8iWGDKZyWmansuyPBmKf+oYDMGyZ7J/Lo/jaF3XWdM0+++Udwe0YDmeuz88fP4LnUeYTD5x0nYt7/J3cqaf8rhyohdN4GYyO7OnbQAAAABJRU5ErkJggg==" mediaID="Square_cst_Empty"/><costume name="X" center-x="29" center-y="29" image="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADkAAAA6CAYAAAAKjPErAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAOaADAAQAAAABAAAAOgAAAADwMfBwAAAEZklEQVRoBd2aMU/bQBTHLxVCDJHI0CEbGbqBlHyASgR16gYDM7AhYICNDfMJYIEVPgJjl8pI7VapILFWVUakSiVSF4Qqpe9v5bnny5nY53dOnCe9nO9sv3u/u3dn3zlKzaY0dKwaZQLSNmmHdBbkDUE0SV9If5N+n6MfCMhbOJghmSeWOulPhmS2l3q9rg4ODuYXFha4rBLp8/Ozur6+Vo+Pj1Z/AyoNSQesnU5n8PT0NKiSrK+vx/6DY3l5+deQJ0T8jsj9/b1aW1tT/X5/5Nw0Fuzs7Kibm5vYtaurK7W5ufmWCxKQ1BpcrqoCCkCEKcvJyYna3t7mbJQmIClMFVqBZdpBTcCtrS0VBAG7H6cJSJSiFaoAagPUezQmpIMRyNdA0bPTIHkA4a8VEifSenTSoHkBX4Vk0DAM1eLiIrLRbItZd1KgCEc9JDEG9XzkpOUntSf52m63q25vbycOChj0IktWQFw/FhIXYdadJKgJuLq6mqkH4TskEyQunBSoCdhutxMPfvg2TjJDwlDZoDZARFSj0RjHlTifC7JMUClA+JwbsgxQSUBnSJ+geDwdHR2hikgwBl1ClO9H6tSTbEB6jAJQX/1IABaGhAEpUBMQLyBYPuWdZLgD9LRQT7KhoqA2QIRoq9XiKgqlIpDwIA1UX8zaPE0DhD0pEYOEQzbQjY0NhdnSJmUAol5RSBgEKJzHpMFirhxQ3uv1EpMMxiBCVLIHuX5xSBjGWILDaaDYO0IP8x6ST0D44wUShjEr2kAvLy+jHkRvQ3wDog5vkDBuA93f30+sRzFefYQo6mfxColKGHRlZYXrjFPsJek7hPEJ4QPvkOxvrVbjw9JT75CYXPCq9vDwMAJnm3VHLhIo8A5p7gldXFykzroCPFYTXiHRUzyLonaMwb29Peusm/bCYPU6Z6E3SDMUAYhtTghPRmnP0egiwR8vkCYgdtYYkH0vE1Qc0gaYFoppoKenp9wWIqkoZB5A9t4Gio82sCUlYpAugAzBoAhrFvS+JGhAhkPSAbWg08dl+iaY+MpLzjrZwU24F76w0lh2sgWWoY2QUhWQ4sAJkmZNNhalRQCZRgJUhywUrmZIkXMqbZKhRswssAFbLGY9XJ41dYY0K8Yz7/z8PGu9Y6+TBHWCtAFi7YgJRFKkQHNDlgXIjSUBmguybEAp0MyQCEf9uYUx6CNEGcxMi/RoJkisJLDxxFI2INfrCjoWEoD694mlpaVSe5ABOXUBfRXSBJT8PsFOu6Q2UH2L07SZCmkDxBj0vbNmOpiWN0HxOUKPOP0+K+S0AzIAQM/Ozjgb7ULYQEcgqwLIZIeHh9a/yeH/r7oElIle0I+Pjwe0xR+/cNMYHNzd3fF781Sn5kKh2WwyB9j+r0LoX8t/KR+drBIgt74JOmT5gh3fgPQD6XvSWHZ3dxW1RpyvygGGm/FNtA/fA9I/pNy9s5Z+myO4Huln0o+k86RfSX+QVl3eDQE+I1y7wwwKoZ+G+ZlJ/gEe71me3JeBmgAAAABJRU5ErkJggg==" mediaID="Square_cst_X"/><costume name="O" center-x="28" center-y="28" image="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADkAAAA5CAYAAACMGIOFAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAOaADAAQAAAABAAAAOQAAAAC3kYqgAAAE0ElEQVRoBd1a7VHjMBBVbvgPHUAH0AHuADqADqCDiAqgA6AC6ICkAqACoAKgAt8+nVfzopNsybHztTOKNrK0+560XstKJsYYK+VUyq7KfK9hVu0qQ+E1/7PD5Dy1kORNXddm24uwu/EMRVkgKeSmfHFb9ZCH3pOj8/n8/DRfX1/Oz+HhoTk6OhrdpzoYheR8PjfPz89mNpuZt7c39RWtT05OTFVV5vz83JyejpfkrXivUZaRj4+P+vLysj44OHC21GZJjbGwAVvLCvm1orvnZG+S39/ftbW2k5iEaC0r5Qp0AhHVYRO2+wrZt6L3J3l/fx9dOZC4urqqn56eOjGiD/rGiGNl4aOPDELy+vr6vxXASr28vPTB5MZgLGwQQKfDV6mQDSt62UoihCRJLADBKuSsWi5Q2ApXFj5Lwrc3STiRbLhA8OLiosh5LlH4gm0C63znEqVxVvT8lUTmo8H1dDrNxdy7H3ywT2DIERpjRc8jGTrrmxByAIZ94ItAZ00u9beid5PEPUKDXDYMgYz9HRmYMXTlAOprRe8mKVsw7+Ds7GxsPkn78K3ggalNtF/Dr53k7e2tN7y/vz9KkmkDy9eQdIBBCQBbSrRPJ0kY5W1am9GUs6HbedKBLZVts0myQTy3NkX4GZqaeCa58D4pFxbk8fHRf5e9pNfXrTAWvO3kiJVOLs55pRAG2o46FRY8ZlV6DjbCbpMryTMk+0kj8S/jNkOA5fj42INhrL6RlCRJvPCq4IV200R2Ph4SY/WNpCRJ4rhCBW/vmyaMibHGcCZJxjpva1uS5Pv7u+fEs+Yb16wwJsYag5Uk+fPz4/tvUtJRUIyJsep1rpMkudO260mSnKK7jhXXMQmMibHGsCRJloRDzPDYbRyijDXit06S5M5skNvXqRdgmiRJ4lRbpWtHof1WWTMmxhrBgO1p/H3y9fXV7127XlBXtWdlPxKiHh+whiK89Hp674rnkLyguonBjoJvdNe4xg9g0XCV1y7Dz8wYrGS4ojPvWe/u7mLj19LGWDpC1eOzormlDZccJ9p6DfUQP8SEPkq/AwNjSp3YUx8revyeVOd8bC+zps1rq4FBCQBbSrRPw6+dZDhzXUeBKadDtIfnr22RVUQS4Pi4Hlktls2GINFmAz45owJTmxSTxHGDbJ18mOCRssrjEPhigsDS5b+YJGYMM8lnnpK2Ox21zXTuNYQkfCloYMiJJO0vtZXSfk8ymDDbjh26YYgK1jqVTRkndPRtipU6nyQGhzc/iMpzC5cGFdhsQPoavnOFxlrRy0jCSRi6MIiQyp3lNqCwweEJ27khynYxrilW6nKSMIZ7hZNRY7DGc+zh4cFdZ6dtOmxhDD8D1R584Hqp6Hjwm+BDylQK/uOCKluwf8QWC+X39/e/cbIifmsoGdmgQLAXRoHgbSK2L8a+Wf4r4IrcEq5vycdkAmpObvBppbilLZ0t7Y90zs9Stde3hq2uR4T6TtXk24q+PEl1hLDCDzD8OyI503skWmMMxvYJTfXPNfldLlwxQylBKPPfzjhEOXQR0nIvDv4zBIcrAtdKmQKszASqnRAimX5p3gmm/0ikz3h2iOTin3pliWe7QC7ksReQqiiWg0tb9bVitK1nPNxxi/Ua2bXaYgJZ0P8C1NsWHkRHfLUAAAAASUVORK5CYII=" mediaID="Square_cst_O"/></media></snapdata>