<snapdata remixID="14976959"><project name="mqtt_wind" app="Snap! 11.0.8, https://snap.berkeley.edu" version="2"><notes></notes><thumbnail>data:image/png;base64,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</thumbnail><scenes select="1"><scene name="mqtt_wind"><notes></notes><hidden></hidden><headers></headers><code></code><blocks><block-definition s="$cloudOutline MQTT connect to %&apos;broker&apos; %&apos;options&apos;" type="command" category="other"><comment x="0" y="0" w="455" collapsed="false">Connect to a broker&#xD;&#xD;The options are not required but can be filled if needed&#xD;&#xD;1. username (some brokers need this)&#xD;2. password (some brokers need this)&#xD;3. keepalive (default time is 60 seconds but some brokers need a shorter time)&#xD;4. connection callback (ringed set of scripts to be run when connection is made or remade)&#xD;&#xD;ADVANCED: The brokers offered in the menu are accessed using default ports and  basepaths (if needed).  If accessing other brokers, the complete urls should be formed like this:&#xD;&#xD;siteURL:port/basepath &#xD;e.g mqtt.eclipseprojects.io:443/mqtt&#xD;&#xD;It is possible to have more than one connection to the same broker, for instance, using two different user/pass accounts simultaneously. To do this, add a connection id at the end of the broker:&#xD;&#xD;e.g mqtt.eclipseprojects.io:443/mqtt|1&#xD;</comment><header></header><code></code><translations></translations><inputs><input type="%s">broker.emqx.io<options>broker.emqx.io&#xD;test.mosquitto.org&#xD;broker.xmqtt.net&#xD;broker.hivemq.com</options></input><input type="%group%s%s%n%cmdRing" expand="username&#xD;password&#xD;keepalive&#xD;connection callback" max="4">​&#xD;​&#xD;60</input></inputs><script><block s="doApplyExtension"><l>src_load(url)</l><list><l>libraries/mqtt.js</l></list></block><block s="doApplyExtension"><l>src_load(url)</l><list><l>libraries/mqttExtension.js</l></list></block><block s="doSetVar"><l>options</l><custom-block s="sanitise options %l"><block var="options"/></custom-block></block><block s="doDeclareVariables"><list><l>connection status</l><l>callback</l></list></block><block s="doSetVar"><l>connection status</l><l>connecting</l></block><block s="doSetVar"><l>callback</l><l></l></block><block s="doIf"><block s="reportIsA"><block s="reportListItem"><l>4</l><block var="options"/></block><l><option>command</option></l></block><script><block s="doSetVar"><l>callback</l><block s="reportListItem"><l>4</l><block var="options"/></block></block></script><list></list></block><block s="doSetVar"><l>options</l><block s="reportListAttribute"><l><option>json</option></l><block s="reportNewList"><list><block s="reportNewList"><list><l>username</l><block s="reportListItem"><l>1</l><block var="options"/></block></list></block><block s="reportNewList"><list><l>password</l><block s="reportListItem"><l>2</l><block var="options"/></block></list></block><block s="reportNewList"><list><l>keepalive</l><block s="reportListItem"><l>3</l><block var="options"/></block></list></block></list></block></block></block><block s="doApplyExtension"><l>mqt_connect(broker,callback,options)</l><list><block var="broker"/><block var="callback"/><block var="options"/></list></block><block s="doWaitUntil"><block s="reportNot"><block s="reportVariadicEquals"><list><block var="connection status"/><l>connecting</l></list></block></block></block><block s="doIf"><block s="reportNot"><block s="reportVariadicEquals"><list><block var="connection status"/><l>connected</l></list></block></block><script><block s="doApplyExtension"><l>err_error(msg)</l><list><block var="connection status"/></list></block></script><list></list></block></script></block-definition><block-definition s="$cloudOutline MQTT subscribe to %&apos;broker&apos; topic %&apos;topic&apos; $nl on each message run %&apos;callback&apos; %&apos;options&apos;" type="command" category="other"><comment x="0" y="0" w="306.99999999999943" collapsed="false">Subscribe to a topic on a broker&#xD;&#xD;Make sure you have already run an MQTT connect block before using this one&#xD;&#xD;You should add a script to be run inside he grey ring.&#xD;&#xD;It will be run each time a message is received&#xD;&#xD;If you click on the arrow on the grey ring twice, you can use #1 and #2 inside your script.&#xD;&#xD;#1 will contain the received payload&#xD;&#xD;#2 will contain the received topic name&#xD;&#xD;The options are not required but can be filled if needed&#xD;&#xD;1. Subscribed QoS (0,1 or 2)  Note this will be downgraded if it exceeds the QoS of the stored message held on the broker &#xD;&#xD;2. Binary mode (boolean) Default (false) - payload is returned as text&#xD;&#xD;If true, payload returned as single column list of values in the range of 0 to 255..  </comment><header></header><code></code><translations></translations><inputs><input type="%s">broker.emqx.io<options>broker.emqx.io&#xD;test.mosquitto.org&#xD;broker.xmqtt.net&#xD;broker.hivemq.com</options></input><input type="%s">name</input><input type="%cmdRing"></input><input type="%group%n%b" expand="QoS&#xD;binary mode" max="2">0&#xD;false</input></inputs><script><block s="doApplyExtension"><l>src_load(url)</l><list><l>libraries/mqtt.js</l></list></block><block s="doApplyExtension"><l>src_load(url)</l><list><l>libraries/mqttExtension.js</l></list></block><block s="doSetVar"><l>options</l><block s="reportListAttribute"><l><option>json</option></l><block s="reportNewList"><list><block s="reportNewList"><list><l>qos</l><block s="reportListItem"><l>1</l><block var="options"/></block></list></block><block s="reportNewList"><list><l>mode</l><block s="reportListItem"><l>2</l><block var="options"/></block></list></block></list></block></block></block><block s="doApplyExtension"><l>mqt_sub(broker,topic,callback,options)</l><list><block var="broker"/><block var="topic"/><block var="callback"/><block var="options"/></list></block></script></block-definition><block-definition s="$cloudOutline MQTT publish to %&apos;broker&apos; topic %&apos;topic&apos; payload %&apos;payload&apos; %&apos;options&apos;" type="command" category="other"><comment x="0" y="0" w="455" collapsed="false">Publish a message to an MQTT broker&#xD;&#xD;The options are not required but can be filled if needed&#xD;&#xD;1. QoS (quality of service 0,1 or 2 - see  https://www.emqx.com/en/blog/introduction-to-mqtt-qos)&#xD;&#xD;2. Retain flag (boolean)&#xD;&#xD;3. Binary mode (boolean).    Default (false) - the payload is published as text&#xD;&#xD;If set to true then payload is expected to be a single column list of values in the 0 to 255 range and is published to the broker as a buffer of bytes.&#xD;&#xD;Note:  If the payload is a list and you don&apos;t set the buffer mode option, it will be automatically be converted into JSON and sent as text. Note that many brokers are configured to limit the payload size to 1 MB.&#xD;&#xD;</comment><header></header><code></code><translations></translations><inputs><input type="%s">broker.emqx.io<options>broker.emqx.io&#xD;test.mosquitto.org&#xD;broker.xmqtt.net&#xD;broker.hivemq.com</options></input><input type="%s">name</input><input type="%mlt">hello</input><input type="%group%n%b%b" expand="QoS&#xD;retain flag&#xD;binary mode" max="3">0&#xD;false&#xD;false</input></inputs><script><block s="doApplyExtension"><l>src_load(url)</l><list><l>libraries/mqtt.js</l></list></block><block s="doApplyExtension"><l>src_load(url)</l><list><l>libraries/mqttExtension.js</l></list></block><block s="doSetVar"><l>options</l><block s="reportListAttribute"><l><option>json</option></l><block s="reportNewList"><list><block s="reportNewList"><list><l>qos</l><block s="reportListItem"><l>1</l><block var="options"/></block></list></block><block s="reportNewList"><list><l>retain</l><block s="reportListItem"><l>2</l><block var="options"/></block></list></block><block s="reportNewList"><list><l>mode</l><block s="reportListItem"><l>3</l><block var="options"/></block></list></block></list></block></block></block><block s="doIf"><block s="reportNot"><block s="reportListItem"><l>2</l><block s="reportListItem"><l>3</l><block s="reportTextSplit"><block var="options"/><l><option>json</option></l></block></block></block></block><script><block s="doIf"><block s="reportIsA"><block var="payload"/><l><option>list</option></l></block><script><block s="doSetVar"><l>payload</l><block s="reportListAttribute"><l><option>json</option></l><block var="payload"/></block></block></script><list></list></block><block s="doIf"><block s="reportIsA"><block var="payload"/><l><option>number</option></l></block><script><block s="doSetVar"><l>payload</l><block s="reportJoinWords"><list><block var="payload"/></list></block></block></script><list></list></block></script><list></list></block><block s="doApplyExtension"><l>mqt_pub(broker,topic,payload,options)</l><list><block var="broker"/><block var="topic"/><block var="payload"/><block var="options"/></list></block></script></block-definition><block-definition s="$cloudOutline MQTT unsubscribe from %&apos;broker&apos; topic %&apos;topic&apos;" type="command" category="other"><header></header><code></code><translations></translations><inputs><input type="%s">broker.emqx.io<options>broker.emqx.io&#xD;test.mosquitto.org&#xD;broker.xmqtt.net&#xD;broker.hivemq.com</options></input><input type="%s">name</input></inputs><script><block s="doApplyExtension"><l>src_load(url)</l><list><l>libraries/mqtt.js</l></list></block><block s="doApplyExtension"><l>src_load(url)</l><list><l>libraries/mqttExtension.js</l></list></block><block s="doApplyExtension"><l>mqt_unsub(broker,topic)</l><list><block var="broker"/><block var="topic"/></list></block></script></block-definition><block-definition s="$cloudOutline MQTT disconnect from %&apos;broker&apos;" type="command" category="other"><header></header><code></code><translations></translations><inputs><input type="%s">all<options>all&#xD;broker.emqx.io&#xD;test.mosquitto.org&#xD;broker.xmqtt.net&#xD;broker.hivemq.com</options></input></inputs><script><block s="doApplyExtension"><l>src_load(url)</l><list><l>libraries/mqtt.js</l></list></block><block s="doApplyExtension"><l>src_load(url)</l><list><l>libraries/mqttExtension.js</l></list></block><block s="doApplyExtension"><l>mqt_disconnect(broker)</l><list><block var="broker"/></list></block></script></block-definition><block-definition s="$cloudOutline MQTT response %&apos;broker&apos; topic %&apos;topic&apos; $nl reply %&apos;reply&apos; %&apos;options&apos;" type="command" category="other"><comment x="0" y="0" w="292.22207031250036" collapsed="false">Options:&#xD;&#xD;1. Sub binary mode (boolean) Default (false) - received payload is returned as text. &#xD;&#xD;If true then subscribed, received payload is returned as single column list of values in the range of 0 to 255..  Default (false) - it is returned as text&#xD;&#xD;2.  Pub binary mode (boolean).  Default (false) - the payload is published as text.&#xD;&#xD;If set to true then published payload is expected to be a single column list of values in the 0 to 255 range and is published to the broker as a buffer of bytes.&#xD;&#xD;Note:  If the payload is a list and you don&apos;t set the buffer mode option, it will be automatically be converted into JSON and sent as text&#xD;&#xD;</comment><header></header><code></code><translations></translations><inputs><input type="%s">broker.emqx.io<options>broker.emqx.io&#xD;test.mosquitto.org&#xD;broker.xmqtt.net&#xD;broker.hivemq.com</options></input><input type="%s">name/#</input><input type="%repRing"></input><input type="%group%b%b" expand="sub binary mode&#xD;pub binary mode" max="2">false&#xD;false</input></inputs><script><block s="doDeclareVariables"><list><l>resp</l><l>callbackTopic</l><l>error</l></list></block><custom-block s="$cloudOutline MQTT subscribe to %s topic %s %br on each message run %cmdRing %group%n%b"><block var="broker"/><block var="topic"/><block s="reifyScript"><script><block s="doIf"><block s="reportVariadicGreaterThan"><list><block s="reportApplyExtension"><l>txt_indexof(sub, txt)</l><list><l>/@</l><block var="received topic"/></list></block><l>0</l></list></block><script><block s="doApplyExtension"><l>err_try(cmd, catch, err)</l><list><block s="reifyScript"><script><block s="doSetVar"><l>resp</l><block s="evaluate"><block var="reply"/><list><block var="received payload"/><block var="received topic"/></list></block></block></script><list></list></block><block s="reifyScript"><script><block s="doSetVar"><l>resp</l><block s="evaluate"><block var="reply"/><list></list></block></block></script><list></list></block><block var="error"/></list></block><block s="doApplyExtension"><l>err_reset</l><list></list></block><block s="doSetVar"><l>callbackTopic</l><block s="reportListItem"><l><option>last</option></l><block s="reportTextSplit"><block var="received topic"/><l>@</l></block></block></block><custom-block s="$cloudOutline MQTT publish to %s topic %s payload %mlt %group%n%b%b"><block var="broker"/><block var="callbackTopic"/><block var="resp"/><list><l>0</l><l><bool>false</bool></l><block s="reportListItem"><l>2</l><block var="options"/></block></list></custom-block></script><list></list></block></script><list><l>received payload</l><l>received topic</l></list></block><list><l>0</l><block s="reportListItem"><l>1</l><block var="options"/></block></list></custom-block></script></block-definition><block-definition s="$cloudOutline MQTT request %&apos;broker&apos; topic %&apos;topic&apos; $nl response topic %&apos;rtopic&apos; payload %&apos;payload&apos; $nl on response run %&apos;callback&apos; %&apos;options&apos;" type="command" category="other"><comment x="0" y="0" w="242.99999999999997" collapsed="false">The options are not required but can be filled if needed.&#xD;&#xD;1. Append response topic (boolean): If true, the response topic is added at the end of the call topic after @ sign. The default condition (true) response topic is added.&#xD;&#xD;2. Sub binary mode (boolean) Default (false) - received payload is returned as text. &#xD;&#xD;If true,then the subscribed, received payload is returned as a single column list of values in the range of 0 to 255..  &#xD;&#xD;3.  Pub binary mode (boolean).  Default (false) - the payload is published as text.&#xD;&#xD;If set to true then published payload is expected to be a single column list of values in the 0 to 255 range and is published to the broker as a buffer of bytes.&#xD;&#xD;Note:  If the payload is a list and you don&apos;t set the buffer mode option, it will be automatically be converted into JSON and sent as text&#xD;&#xD;</comment><header></header><code></code><translations></translations><inputs><input type="%s">broker.emqx.io<options>broker.emqx.io&#xD;test.mosquitto.org&#xD;broker.xmqtt.net&#xD;broker.hivemq.com</options></input><input type="%s">name</input><input type="%s">name2</input><input type="%mlt">hello</input><input type="%cmdRing"></input><input type="%group%b%b%b" expand="append response topic&#xD;sub binary mode&#xD;pub binary mode&#xD;" max="3">true&#xD;false&#xD;false</input></inputs><script><block s="doDeclareVariables"><list><l>error</l><l>informTopic</l><l>topicCall</l></list></block><block s="doSetVar"><l>informTopic</l><block s="reportIfElse"><block s="reportIsA"><block s="reportListItem"><l>1</l><block var="options"/></block><l><option>Boolean</option></l></block><block s="reportListItem"><l>1</l><block var="options"/></block><block s="reportBoolean"><l><bool>true</bool></l></block></block></block><custom-block s="$cloudOutline MQTT subscribe to %s topic %s %br on each message run %cmdRing %group%n%b"><block var="broker"/><block s="reportJoinWords"><list><block var="rtopic"/></list></block><block s="reifyScript"><script><block s="doApplyExtension"><l>err_try(cmd, catch, err)</l><list><block s="reifyScript"><script><block s="doRun"><block var="callback"/><list><block var="received payload"/><block var="received topic"/></list></block></script><list></list></block><block s="reifyScript"><script><block s="doRun"><block var="callback"/><list></list></block></script><list></list></block><block var="error"/></list></block></script><list><l>received payload</l><l>received topic</l></list></block><list><l>0</l><block s="reportListItem"><l>2</l><block var="options"/></block></list></custom-block><block s="doIfElse"><block var="informTopic"/><script><block s="doSetVar"><l>topicCall</l><block s="reportJoinWords"><list><block var="topic"/><l>/</l><block s="reportJoinWords"><list><l>@</l><block var="rtopic"/></list></block></list></block></block></script><script><block s="doSetVar"><l>topicCall</l><block var="topic"/></block></script></block><custom-block s="$cloudOutline MQTT publish to %s topic %s payload %mlt %group%n%b%b"><block var="broker"/><block var="topicCall"/><block var="payload"/><list><l>0</l><l><bool>false</bool></l><block s="reportListItem"><l>3</l><block var="options"/></block></list></custom-block></script></block-definition><block-definition s="$cloudOutline MQTT example response reporter payload %&apos;payload&apos; topic %&apos;topic&apos;" type="reporter" category="other"><comment x="0" y="0" w="90" collapsed="false">This is a simple echo example.&#xD;Topic can be used to filter the response.</comment><header></header><code></code><translations></translations><inputs><input type="%mlt">hello</input><input type="%txt">name</input></inputs><script><block s="doReport"><block var="payload"/></block></script></block-definition><block-definition s="$cloudOutline MQTT request %&apos;broker&apos; topic %&apos;topic&apos; $nl response topic %&apos;rtopic&apos; payload %&apos;payload&apos; %&apos;options&apos;" type="reporter" category="other"><comment x="0" y="0" w="343" collapsed="false">The response topic should be a unique value for each call e.g. use timer&#xD;&#xD;The options are not required but can be filled if needed&#xD;&#xD;1.  Timeout value - default is 3 seconds&#xD;&#xD;2.  Append response topic (boolean): If true, the response topic is added at the end of the call topic after @ sign. The default condition (true) response topic is added.&#xD;&#xD;3. Sub binary mode (boolean) Default (false) - received payload is returned as text. &#xD;&#xD;If true, subscribed, received payload returned as single column list of values in the range of 0 to 255..  Default (false) - it is returned as text&#xD;&#xD;4.  Pub binary mode (boolean).  Default (false) - the payload is published as text.&#xD;&#xD;If set to true then published payload is expected to be a single column list of values in the 0 to 255 range and is published to the broker as a buffer of bytes.&#xD;&#xD;Note:  If the payload is a list and you don&apos;t set the buffer mode option, it will be automatically be converted into JSON and sent as text&#xD;&#xD;</comment><header></header><code></code><translations></translations><inputs><input type="%s">broker.emqx.io<options>broker.emqx.io&#xD;test.mosquitto.org&#xD;broker.xmqtt.net&#xD;broker.hivemq.com</options></input><input type="%s">name</input><input type="%s">name2</input><input type="%mlt">hello</input><input type="%group%n%b%b%b" expand="timeout&#xD;append response topic&#xD;sub binary mode&#xD;pub binary mode&#xD;" max="4">3&#xD;true&#xD;false&#xD;false</input></inputs><script><block s="doDeclareVariables"><list><l>resp</l><l>semaphore</l><l>timer0</l><l>timeout</l><l>informTopic</l><l>topicCall</l></list></block><block s="doSetVar"><l>semaphore</l><l>0</l></block><block s="doSetVar"><l>timeout</l><block s="reportIfElse"><block s="reportIsA"><block s="reportListItem"><l>1</l><block var="options"/></block><l><option>number</option></l></block><block s="reportListItem"><l>1</l><block var="options"/></block><l>3</l></block></block><block s="doSetVar"><l>informTopic</l><block s="reportIfElse"><block s="reportIsA"><block s="reportListItem"><l>2</l><block var="options"/></block><l><option>Boolean</option></l></block><block s="reportListItem"><l>2</l><block var="options"/></block><block s="reportBoolean"><l><bool>true</bool></l></block></block></block><block s="doSetVar"><l>resp</l><l>timeout</l></block><custom-block s="$cloudOutline MQTT subscribe to %s topic %s %br on each message run %cmdRing %group%n%b"><block var="broker"/><block s="reportJoinWords"><list><block var="rtopic"/></list></block><block s="reifyScript"><script><block s="doSetVar"><l>resp</l><block var="received payload"/></block><block s="doSetVar"><l>semaphore</l><l>1</l></block></script><list><l>received payload</l><l>received topic</l></list></block><list><l>0</l><block s="reportListItem"><l>3</l><block var="options"/></block></list></custom-block><block s="doIfElse"><block var="informTopic"/><script><block s="doSetVar"><l>topicCall</l><block s="reportJoinWords"><list><block var="topic"/><l>/</l><block s="reportJoinWords"><list><l>@</l><block var="rtopic"/></list></block></list></block></block></script><script><block s="doSetVar"><l>topicCall</l><block var="topic"/></block></script></block><custom-block s="$cloudOutline MQTT publish to %s topic %s payload %mlt %group%n%b%b"><block var="broker"/><block var="topicCall"/><block var="payload"/><list><l>0</l><l><bool>false</bool></l><block s="reportListItem"><l>4</l><block var="options"/></block></list></custom-block><block s="doSetVar"><l>timer0</l><block s="reportDate"><l><option>time in milliseconds</option></l></block></block><block s="doWaitUntil"><block s="reportVariadicOr"><list><block s="reportVariadicEquals"><list><block var="semaphore"/><l>1</l></list></block><block s="reportVariadicGreaterThan"><list><block s="reportDifference"><block s="reportDate"><l><option>time in milliseconds</option></l></block><block var="timer0"/></block><block s="reportVariadicProduct"><list><block var="timeout"/><l>1000</l></list></block></list></block></list></block></block><custom-block s="$cloudOutline MQTT unsubscribe from %s topic %s"><block var="broker"/><block s="reportJoinWords"><list><block var="rtopic"/></list></block></custom-block><block s="doReport"><block var="resp"/></block></script></block-definition><block-definition s="%&apos;data&apos; to base64" type="reporter" category="other"><comment x="0" y="0" w="290" collapsed="false">Encode costume, sound or data to Base64</comment><header></header><code></code><translations></translations><inputs><input type="%s" initial="1"></input></inputs><script><block s="doApplyExtension"><l>src_load(url)</l><list><l>libraries/mqttExtension.js</l></list></block><block s="doReport"><block s="reportApplyExtension"><l>mqt_to_base64(media_or_data)</l><list><block var="data"/></list></block></block></script></block-definition><block-definition s="sanitise options %&apos;data&apos;" type="reporter" category="other" helper="true"><comment x="0" y="0" w="226" collapsed="false">Modify variadic defaults to be able to work for blank entries&#xD;&#xD;Any blank defaults should be set as zero width spaces which are removed by this reporter&#xD;&#xD;This is needed for the username and password option in the connect block in the MQTT library&#xD;</comment><header></header><code></code><translations></translations><inputs><input type="%l" initial="1"></input></inputs><script><block s="doDeclareVariables"><list><l>zero width space</l></list></block><block s="doSetVar"><l>zero width space</l><block s="reportUnicodeAsLetter"><l>8203</l></block></block><block s="doSetVar"><l>data</l><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportIfElse"><block s="reportIsA"><block var="value"/><l><option>text</option></l></block><block s="reportCombine"><block s="reportTextSplit"><block var="value"/><block var="zero width space"/></block><block s="reifyReporter"><autolambda><block s="reportJoinWords"><list><l></l><l></l><l></l></list></block></autolambda><list></list></block></block><block var="value"/></block></autolambda><list><l>value</l></list></block><block var="data"/></block></block><block s="doReport"><block var="data"/></block></script></block-definition><block-definition s="%&apos;data&apos; from base64 %&apos;options&apos;" type="reporter" category="other"><comment x="0" y="0" w="290" collapsed="false">Decode costume, sound or data from Base64</comment><header></header><code></code><translations></translations><inputs><input type="%s" initial="1"></input><input type="%mult%b" expand="as byte list" max="1">true</input></inputs><script><block s="doApplyExtension"><l>src_load(url)</l><list><l>libraries/mqttExtension.js</l></list></block><block s="doIf"><block s="reportVariadicEquals"><list><block s="reportListItem"><l>1</l><block var="options"/></block><block s="reportBoolean"><l><bool>true</bool></l></block></list></block><script><block s="doReport"><block s="reportApplyExtension"><l>mqt_from_base64_to_byte_list(b64)</l><list><block s="reportListItem"><l><option>last</option></l><block s="reportTextSplit"><block var="data"/><l>,</l></block></block></list></block></block></script><list><l><bool>true</bool></l><script><block s="doReport"><block s="reportApplyExtension"><l>mqt_from_base64(b64)</l><list><block var="data"/></list></block></block></script></list></block></script></block-definition><block-definition s="MQTT Extension Examples" type="command" category="other"><comment x="0" y="0" w="385.9999999999999" collapsed="false">Open (edit) this block to look at examples how to use the MQTT Extension blocks&#xD;&#xD;Background documentation:&#xD;https://github.com/pixavier/mqtt4snap&#xD;&#xD;Last source code version (mqtt.xml and mqttExtension.js):&#xD;https://gitlab.com/cymplecy/Snap/-/tree/master/libraries</comment><header></header><code></code><translations></translations><inputs></inputs><scripts><comment x="489.9999999999997" y="215.19999999999993" w="222.99999999999997" collapsed="false">Step 0: Connect to the broker</comment><comment x="31.333333333333353" y="152.2000000000001" w="239.99999999999997" collapsed="false">PubSub Hello World!</comment><comment x="489.9999999999997" y="271.1999999999996" w="222" collapsed="false">Step 1: Subscribe to a topic</comment><script x="25.33333333333341" y="272.19999999999936"><custom-block s="$cloudOutline MQTT subscribe to %s topic %s %br on each message run %cmdRing %group%n%b"><l>broker.emqx.io</l><l>name</l><block s="reifyScript"><script><block s="doSayFor"><block var="payload"/><l>2</l></block></script><list><l>payload</l><l>received topic</l></list></block><list></list></custom-block></script><script x="29.33333333333337" y="366.8666666666661"><custom-block s="$cloudOutline MQTT publish to %s topic %s payload %mlt %group%n%b%b"><l>broker.emqx.io</l><l>name</l><l>hello</l><list></list></custom-block></script><comment x="492.99999999999966" y="357.19999999999936" w="222" collapsed="false">Step 2: Publish a message</comment><script x="33.99999999999968" y="484.1999999999998"><custom-block s="$cloudOutline MQTT subscribe to %s topic %s %br on each message run %cmdRing %group%n%b"><l>broker.emqx.io</l><l>name1</l><block s="reifyScript"><script><custom-block s="$cloudOutline MQTT publish to %s topic %s payload %mlt %group%n%b%b"><l>broker.emqx.io</l><l>name2</l><block var="payload"/><list></list></custom-block></script><list><l>payload</l><l>topic</l></list></block><list></list></custom-block></script><comment x="498.9999999999999" y="481.6999999999981" w="220" collapsed="false">Step 1: Activate the responder as a simple subscription</comment><script x="32.99999999999993" y="602.0333333333336"><block s="doSayFor"><custom-block s="$cloudOutline MQTT request %s topic %s %br response topic %s payload %mlt %group%n%b%b%b"><l>broker.emqx.io</l><l>name1</l><l>name2</l><l>hello</l><list><l>3</l><l><bool>false</bool></l></list></custom-block><l>2</l></block></script><comment x="500.0000000000001" y="606.699999999999" w="220" collapsed="false">Step 2: Send a request and wait the answer.</comment><comment x="504.9999999999997" y="131.19999999999987" w="191" collapsed="false">To execute the examples, single click on blocks, following the corresponding steps.</comment><comment x="499.6666666666671" y="756.3666666666654" w="224.00000000000003" collapsed="false">Step 2 bis: Send a request and do not wait for the answer</comment><comment x="24.33333333333337" y="871.1999999999988" w="356.99999999999994" collapsed="false">Synchronous client-server Hello World! with dynamic response topic (timer)</comment><comment x="510.9999999999996" y="930.700000000001" w="220" collapsed="false">Step 1: Activate the responder</comment><script x="34.33333333333337" y="1048.1999999999982"><block s="doSayFor"><custom-block s="$cloudOutline MQTT request %s topic %s %br response topic %s payload %mlt %group%n%b%b%b"><l>broker.emqx.io</l><l>name</l><block s="getTimer"></block><l>hello</l><list><l>3</l><l><bool>false</bool></l></list></custom-block><l>2</l></block></script><comment x="510.9999999999996" y="1050.6999999999987" w="219.0000000000002" collapsed="false">Step 2: Send a request (timer acts as idCall) and wait for the answer</comment><comment x="31.999999999999886" y="1138.6999999999982" w="352.0000000000003" collapsed="false">Asynchronous client-server Hello World! with dynamic response topic (timer)</comment><script x="31.999999999999886" y="1207.0333333333313"><custom-block s="$cloudOutline MQTT request %s topic %s %br response topic %s payload %mlt %br on response run %cmdRing %group%b%b%b"><l>broker.emqx.io</l><l>name</l><block s="getTimer"></block><l>hello</l><block s="reifyScript"><script><block s="doSayFor"><block var="payload"/><l>2</l></block></script><list><l>payload</l><l>topic</l></list></block><list></list></custom-block></script><comment x="514.9999999999998" y="1204.6999999999991" w="224.00000000000003" collapsed="false">Step 2 bis: Send a request (timer acts as idCall) and do not wait for the answer</comment><script x="28.99999999999968" y="225.20000000000022"><custom-block s="$cloudOutline MQTT connect to %s %group%s%s%n%cmdRing"><l>broker.emqx.io</l><list></list></custom-block></script><script x="25.33333333333341" y="932.2000000000014"><custom-block s="$cloudOutline MQTT response %s topic %s %br reply %repRing %group%b%b"><l>broker.emqx.io</l><l>name/#</l><block s="reifyReporter"><autolambda><custom-block s="$cloudOutline MQTT example response reporter payload %mlt topic %txt"><block var="payload"/><block var="topic"/></custom-block></autolambda><list><l>payload</l><l>topic</l></list></block><list></list></custom-block></script><comment x="26.999999999999886" y="685.6999999999982" w="372.0000000000004" collapsed="false">Asynchronous client-server Hello World! with static response topic (name2)</comment><script x="27.999999999999925" y="751.0333333333324"><custom-block s="$cloudOutline MQTT request %s topic %s %br response topic %s payload %mlt %br on response run %cmdRing %group%b%b%b"><l>broker.emqx.io</l><l>name1</l><l>name2</l><l>hello</l><block s="reifyScript"><script><block s="doSayFor"><block var="payload"/><l>2</l></block></script><list><l>payload</l><l>topic</l></list></block><list><l><bool>false</bool></l></list></custom-block></script><comment x="28.99999999999987" y="412.36666666666696" w="361.99999999999994" collapsed="false">Synchronous client-server Hello World! with static response topic (name2)</comment></scripts></block-definition><block-definition s="column %&apos;col&apos; of %&apos;data&apos;" type="reporter" category="lists"><comment x="0" y="0" w="122.72727272727272" collapsed="false">Get columns of a table as item of gets rows.  Can use column names if present in 1st row.  Supports lists of columns</comment><header></header><code></code><translations></translations><inputs><input type="%s">1<options>1&#xD;last&#xD;random</options></input><input type="%l"></input></inputs><script><block s="doIf"><block s="reportIsA"><block var="col"/><l><option>list</option></l></block><script><block s="doReport"><block s="reportListAttribute"><l><option>columns</option></l><block s="reportListItem"><block var="col"/><block s="reportListAttribute"><l><option>columns</option></l><block var="data"/></block></block></block></block></script><list></list></block><block s="doIf"><block s="reportVariadicEquals"><list><block var="col"/><l>last</l></list></block><script><block s="doReport"><block s="reportListItem"><l><option>last</option></l><block s="reportListAttribute"><l><option>columns</option></l><block var="data"/></block></block></block></script><list><block s="reportVariadicEquals"><list><block var="col"/><l>random</l></list></block><script><block s="doReport"><block s="reportListItem"><l><option>random</option></l><block s="reportListAttribute"><l><option>columns</option></l><block var="data"/></block></block></block></script></list></block><block s="doReport"><block s="reportListItem"><block var="col"/><block s="reportListAttribute"><l><option>columns</option></l><block var="data"/></block></block></block></script></block-definition><block-definition s="bar chart of table %&apos;data&apos; grouped by field: %&apos;field&apos; from: %&apos;floor&apos; to: %&apos;ceiling&apos; interval: %&apos;interval&apos;" type="reporter" category="lists"><comment x="0" y="0" w="344.6666666666667" collapsed="false">Takes a table (typically from a CSV data set) as input and reports a summary of the table grouped by the field in the specified column number.  The remaining three inputs are used only if the field values are numbers, in which case they can be grouped into buckets (e.g., decades, centuries, etc.).  Those three inputs specify the smallest and largest values of interest and, most importantly, the width of a bucket (10 for decades, 100 for centuries).  If the field isn&apos;t numeric, leave these three inputs empty or set them to zero.  In that case, each string value of the field is its own bucket, and they appear sorted alphabetically.&#xD;&#xD;The block reports a new table with three columns.  The first column contains the bucket name or smallest number.  The second column contains a nonnegative integer that says how many records in the input table fall into this bucket.  The third column is a subtable containing the actual records from the original table that fall into the bucket.&#xD;&#xD;If your buckets aren&apos;t of constant width, or you want to group by some function of more than one field, load the &quot;Frequency Distribution Analysis&quot; library instead. </comment><header></header><code></code><translations>ca:gràfica de la taula _ agrupada pel camp: _ des de: _ fins: _ interval: _&#xD;</translations><inputs><input type="%l"></input><input type="%n"></input><input type="%n"></input><input type="%n"></input><input type="%n"></input></inputs><script><block s="doDeclareVariables"><list><l>sorted</l></list></block><block s="doSetVar"><l>sorted</l><custom-block s="sort table %l on field %n in %s order"><custom-block s="group table %l by field %n by intervals of: %n"><block var="data"/><block var="field"/><block var="interval"/></custom-block><l>1</l><l>ascending</l></custom-block></block><block s="doIf"><block s="reportVariadicEquals"><list><block var="interval"/><l>0</l></list></block><script><block s="doReport"><block var="sorted"/></block></script><list></list></block><block s="doReport"><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportCONS"><block s="reportVariadicProduct"><list><block s="reportListItem"><l>1</l><l/></block><block var="interval"/></list></block><block s="reportCDR"><l/></block></block></autolambda><list></list></block><custom-block s="bar chart helper function to fill %l key: %repRing from: %n to: %n interval: %repRing with: %repRing"><block var="sorted"/><block s="reifyReporter"><autolambda><block s="reportListItem"><l>1</l><l/></block></autolambda><list></list></block><block s="reportMonadic"><l><option>ceiling</option></l><block s="reportQuotient"><block var="floor"/><block var="interval"/></block></block><block s="reportMonadic"><l><option>ceiling</option></l><block s="reportQuotient"><block var="ceiling"/><block var="interval"/></block></block><block s="reifyReporter"><autolambda><block s="reportVariadicSum"><list><l></l><l>1</l></list></block></autolambda><list></list></block><block s="reifyReporter"><autolambda><block s="reportNewList"><list><l></l><l>0</l><block s="reportNewList"><list></list></block></list></block></autolambda><list></list></block></custom-block></block></block></script></block-definition><block-definition s="bar chart helper function to fill %&apos;data&apos; key: %&apos;key&apos; from: %&apos;floor&apos; to: %&apos;ceiling&apos; interval: %&apos;interval&apos; with: %&apos;generator&apos;" type="reporter" category="lists"><comment x="0" y="0" w="103" collapsed="false">add missing entries to a sorted list. Used for histograms</comment><header></header><code></code><translations>pt:os itens de _ com a chave _ entre _ e _ com passo _ completados por _&#xD;ca:gràfica omplint _ amb clau: _ des de: _ fins: _ interval: _ amb _&#xD;</translations><inputs><input type="%l"></input><input type="%repRing"></input><input type="%n"></input><input type="%n"></input><input type="%repRing"></input><input type="%repRing"></input></inputs><script><block s="doIf"><block s="reportVariadicGreaterThan"><list><block var="floor"/><block var="ceiling"/></list></block><script><block s="doReport"><block s="reportNewList"><list></list></block></block></script><list></list></block><block s="doIf"><block s="reportVariadicEquals"><list><block var="data"/><block s="reportNewList"><list></list></block></list></block><script><block s="doReport"><block s="reportCONS"><block s="evaluate"><block var="generator"/><list><block var="floor"/></list></block><custom-block s="bar chart helper function to fill %l key: %repRing from: %n to: %n interval: %repRing with: %repRing"><block var="data"/><block var="key"/><block s="evaluate"><block var="interval"/><list><block var="floor"/></list></block><block var="ceiling"/><block var="interval"/><block var="generator"/></custom-block></block></block></script><list></list></block><block s="doIf"><block s="reportVariadicLessThan"><list><block s="evaluate"><block var="key"/><list><block s="reportListItem"><l>1</l><block var="data"/></block></list></block><block var="floor"/></list></block><script><block s="doReport"><custom-block s="bar chart helper function to fill %l key: %repRing from: %n to: %n interval: %repRing with: %repRing"><block s="reportCDR"><block var="data"/></block><block var="key"/><block var="floor"/><block var="ceiling"/><block var="interval"/><block var="generator"/></custom-block></block></script><list></list></block><block s="doIf"><block s="reportVariadicEquals"><list><block s="evaluate"><block var="key"/><list><block s="reportListItem"><l>1</l><block var="data"/></block></list></block><block var="floor"/></list></block><script><block s="doReport"><block s="reportCONS"><block s="reportListItem"><l>1</l><block var="data"/></block><custom-block s="bar chart helper function to fill %l key: %repRing from: %n to: %n interval: %repRing with: %repRing"><block s="reportCDR"><block var="data"/></block><block var="key"/><block s="evaluate"><block var="interval"/><list><block var="floor"/></list></block><block var="ceiling"/><block var="interval"/><block var="generator"/></custom-block></block></block></script><list></list></block><block s="doReport"><block s="reportCONS"><block s="evaluate"><block var="generator"/><list><block var="floor"/></list></block><custom-block s="bar chart helper function to fill %l key: %repRing from: %n to: %n interval: %repRing with: %repRing"><block var="data"/><block var="key"/><block s="evaluate"><block var="interval"/><list><block var="floor"/></list></block><block var="ceiling"/><block var="interval"/><block var="generator"/></custom-block></block></block></script></block-definition><block-definition s="plot bar chart %&apos;data&apos; bars at x: %&apos;left&apos; y: %&apos;bottom&apos; width: %&apos;width&apos; height: %&apos;height&apos;" type="command" category="pen"><header></header><code></code><translations>pt:desenha gráfico de barras de _ em (x: _ , y: _ ) com largura _ e altura _&#xD;ca:dibuixa gràfic _ a x: _ y: _ amplada: _ alçada: _&#xD;</translations><inputs><input type="%l"></input><input type="%n">-200</input><input type="%n">-100</input><input type="%n">400</input><input type="%n">200</input></inputs><script><block s="doDeclareVariables"><list><l>ratio</l><l>step</l><l>flat line ends</l><l>col</l><l>sorted</l><l>min</l><l>digit12</l><l>saved pentrails</l><l>digit10</l><l>x label width</l><l>saved position</l><l>label delta y</l><l>max y</l></list></block><block s="doSetVar"><l>flat line ends</l><block s="reportGlobalFlag"><l><option>flat line ends</option></l></block></block><block s="doSetGlobalFlag"><l><option>flat line ends</option></l><l><bool>true</bool></l></block><block s="doSetVar"><l>saved pentrails</l><block s="reportPenTrailsAsCostume"></block></block><block s="clear"></block><block s="up"><comment w="105.33333333333333" collapsed="false">find out how wide a digit is at two sizes</comment></block><block s="doGotoObject"><l><option>center</option></l></block><block s="write"><l>1234567890</l><l>12</l></block><block s="doSetVar"><l>digit12</l><block s="reportQuotient"><block s="xPosition"></block><l>10</l></block></block><block s="clear"></block><block s="up"></block><block s="doGotoObject"><l><option>center</option></l></block><block s="write"><l>1234567890</l><l>10</l></block><block s="doSetVar"><l>digit10</l><block s="reportQuotient"><block s="xPosition"></block><l>10</l></block></block><block s="clear"></block><block s="doSwitchToCostume"><block var="saved pentrails"/></block><block s="doStamp"></block><block s="doSwitchToCostume"><l><option>Turtle</option></l></block><block s="doSetVar"><l>x label width</l><block s="reportMonadic"><l><option>ceiling</option></l><block s="reportMonadic"><l><option>log</option></l><block s="reportListItem"><l>1</l><block s="reportListItem"><l><option>last</option></l><block var="data"/></block></block></block></block></block><block s="doSetVar"><l>sorted</l><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportListItem"><l>2</l><l/></block></autolambda><list></list></block><custom-block s="sort table %l on field %n in %s order"><block var="data"/><l>2</l><l>descending</l></custom-block></block></block><block s="doIfElse"><block s="reportVariadicLessThan"><list><block s="reportListItem"><l><option>last</option></l><block var="sorted"/></block><l>0</l></list></block><script><block s="doSetVar"><l>min</l><block s="reportListItem"><l><option>last</option></l><block var="sorted"/></block></block></script><script><block s="doSetVar"><l>min</l><l>0</l></block></script><comment w="142" collapsed="false">If smallest value &lt; 0, the x axis isn&apos;t at the bottom.&#xD;Note that sort is by &gt; not by &lt;.&#xD;Not clear this can happen in a&#xD;histogram!</comment></block><block s="doSetVar"><l>max y</l><block s="reportListItem"><l>1</l><block var="sorted"/></block></block><block s="doSetVar"><l>ratio</l><block s="reportQuotient"><block var="height"/><block s="reportDifference"><block s="reportListItem"><l>1</l><block var="sorted"/></block><block var="min"/></block></block></block><block s="doSetVar"><l>label delta y</l><block s="reportVariadicProduct"><list><block s="reportRound"><block s="reportQuotient"><block var="max y"/><l>50</l></block></block><l>10</l></list></block></block><block s="doSetVar"><l>step</l><block s="reportQuotient"><block var="width"/><block s="reportListAttribute"><l><option>length</option></l><block var="data"/></block></block></block><block s="doIfElse"><block s="reportVariadicGreaterThan"><list><block var="step"/><l>2</l></list></block><script><block s="doSetVar"><l>col</l><block s="reportDifference"><block var="step"/><l>1</l></block></block></script><script><block s="doSetVar"><l>col</l><block s="reportVariadicProduct"><list><block var="step"/><l>0.8</l></list></block></block></script></block><block s="gotoXY"><block var="left"/><block s="reportDifference"><block var="bottom"/><block s="reportVariadicProduct"><list><block var="min"/><block var="ratio"/></list></block></block></block><block s="setSize"><l>1</l></block><block s="down"></block><block s="setHeading"><l>90</l></block><block s="forward"><block var="width"/><comment w="110.66666666666669" collapsed="true">draw x axis at y=0</comment></block><block s="up"></block><block s="gotoXY"><block var="left"/><block var="bottom"/></block><block s="setHeading"><l>0</l></block><block s="down"></block><block s="forward"><block var="height"/><comment w="74.66666666666667" collapsed="true">draw y axis</comment></block><block s="up"></block><block s="setHeading"><l>90</l></block><block s="gotoXY"><block s="reportDifference"><block var="left"/><block s="reportVariadicSum"><list><block var="digit12"/><l>2</l></list></block></block><block s="reportDifference"><block var="bottom"/><block s="reportVariadicProduct"><list><block var="min"/><block var="ratio"/></list></block></block></block><block s="write"><l>0</l><l>12</l></block><block s="doFor"><l>i</l><l>1</l><l>5</l><script><block s="changeYPosition"><block s="reportVariadicProduct"><list><block s="reportDifference"><block var="label delta y"/><block var="min"/></block><block var="ratio"/></list></block></block><block s="setXPosition"><block s="reportDifference"><block var="left"/><block s="reportVariadicSum"><list><block s="reportVariadicProduct"><list><block var="digit12"/><block s="reportTextAttribute"><l><option>length</option></l><block s="reportVariadicProduct"><list><block var="label delta y"/><block var="i"/></list></block></block></list></block><l>2</l></list></block></block></block><block s="write"><block s="reportVariadicProduct"><list><block var="label delta y"/><block var="i"/></list></block><l>12</l></block></script></block><block s="gotoXY"><block var="left"/><block var="bottom"/><comment w="112.00000000000001" collapsed="true">Ready to draw bars.</comment></block><block s="changeXPosition"><block s="reportQuotient"><block var="step"/><l>2</l></block></block><block s="setSize"><block var="col"/></block><block s="doWarp"><script><block s="doUntil"><block s="reportVariadicEquals"><list><block s="reportListAttribute"><l><option>length</option></l><block var="data"/></block><l>0</l></list></block><script><block s="down"></block><block s="changeYPosition"><block s="reportVariadicProduct"><list><block s="reportDifference"><block s="reportListItem"><l>2</l><block s="reportListItem"><l>1</l><block var="data"/></block></block><block var="min"/></block><block var="ratio"/></list></block></block><block s="up"></block><block s="setYPosition"><block var="bottom"/></block><block s="doSetVar"><l>saved position</l><block s="reportNewList"><list><block s="xPosition"></block><block s="yPosition"></block></list></block></block><block s="doIfElse"><block s="reportVariadicLessThan"><list><block var="col"/><l>15</l></list><comment w="319.3333333333333" collapsed="true">Choose label format depending on label width vs. bar width.</comment></block><script><block s="setYPosition"><block s="reportDifference"><block var="bottom"/><l>2</l></block></block><block s="changeXPosition"><block s="reportDifference"><block s="reportQuotient"><block var="step"/><l>2</l></block><l>8</l></block></block><block s="setHeading"><l>180</l></block><block s="write"><block s="reportListItem"><l>1</l><block s="reportListItem"><l>1</l><block var="data"/></block></block><l>10</l></block></script><script><block s="doIfElse"><block s="reportVariadicLessThan"><list><block var="col"/><block s="reportVariadicProduct"><list><block s="reportVariadicProduct"><list><block var="digit10"/><block var="x label width"/></list></block><l>2.5</l></list></block></list></block><script><block s="setYPosition"><block s="reportDifference"><block var="bottom"/><l>2</l></block></block><block s="changeXPosition"><block s="reportDifference"><block s="reportQuotient"><block var="step"/><l>2</l></block><l>10</l></block></block><block s="setHeading"><l>180</l></block><block s="write"><block s="reportListItem"><l>1</l><block s="reportListItem"><l>1</l><block var="data"/></block></block><l>12</l></block></script><script><block s="doIfElse"><block s="reportVariadicLessThan"><list><block var="col"/><block s="reportVariadicProduct"><list><block s="reportVariadicProduct"><list><block var="digit12"/><block var="x label width"/></list></block><l>2.5</l></list></block></list></block><script><block s="setYPosition"><block s="reportDifference"><block var="bottom"/><l>10</l></block></block><block s="setHeading"><l>90</l></block><block s="forward"><block s="reportDifference"><block s="reportDifference"><block s="reportQuotient"><block var="step"/><l>2</l></block><block s="reportVariadicProduct"><list><block var="digit10"/><block s="reportMonadic"><l><option>ceiling</option></l><block s="reportMonadic"><l><option>log</option></l><block s="reportListItem"><l>1</l><block s="reportListItem"><l>1</l><block var="data"/></block></block></block></block></list></block></block><l>2</l></block></block><block s="write"><block s="reportListItem"><l>1</l><block s="reportListItem"><l>1</l><block var="data"/></block></block><l>10</l></block></script><script><block s="setYPosition"><block s="reportDifference"><block var="bottom"/><l>12</l></block></block><block s="setHeading"><l>90</l></block><block s="forward"><block s="reportDifference"><block s="reportDifference"><block s="reportQuotient"><block var="step"/><l>2</l></block><block s="reportVariadicProduct"><list><block var="digit12"/><block s="reportMonadic"><l><option>ceiling</option></l><block s="reportMonadic"><l><option>log</option></l><block s="reportListItem"><l>1</l><block s="reportListItem"><l>1</l><block var="data"/></block></block></block></block></list></block></block><l>2</l></block></block><block s="write"><block s="reportListItem"><l>1</l><block s="reportListItem"><l>1</l><block var="data"/></block></block><l>12</l></block></script></block></script></block></script></block><block s="doSetVar"><l>data</l><block s="reportCDR"><block var="data"/></block></block><block s="setHeading"><l>90</l></block><block s="doGotoObject"><block var="saved position"/></block><block s="changeXPosition"><block var="step"/></block></script></block></script></block><block s="doSetGlobalFlag"><l><option>flat line ends</option></l><block var="flat line ends"/></block></script></block-definition><block-definition s="sort table %&apos;data&apos; on field %&apos;field number&apos; in %&apos;order&apos; order" type="reporter" category="lists"><header></header><code></code><translations>ca:ordena taula _ pel camp _ en ordre _&#xD;</translations><inputs><input type="%l"></input><input type="%n"></input><input type="%s" readonly="true"><options>ascending&#xD;descending</options></input></inputs><script><block s="doReport"><block s="reportApplyExtension"><l>lst_sort(list, fn)</l><list><block var="data"/><block s="reportIfElse"><block s="reportVariadicEquals"><list><block var="order"/><l>ascending</l></list></block><block s="reifyPredicate"><autolambda><block s="reportVariadicLessThan"><list><block s="reportListItem"><block var="field number"/><l/></block><block s="reportListItem"><block var="field number"/><l/></block></list></block></autolambda><list></list></block><block s="reifyPredicate"><autolambda><block s="reportVariadicGreaterThan"><list><block s="reportListItem"><block var="field number"/><l/></block><block s="reportListItem"><block var="field number"/><l/></block></list></block></autolambda><list></list></block></block></list></block></block></script></block-definition><block-definition s="group table %&apos;data&apos; by field %&apos;number&apos; by intervals of: %&apos;interval&apos;" type="reporter" category="lists"><header></header><code></code><translations>ca:agrupa taula _ pel camp _ per intervals de _&#xD;</translations><inputs><input type="%l"></input><input type="%n"></input><input type="%n"></input></inputs><script><block s="doReport"><block s="reportApplyExtension"><l>dta_group(list, fn)</l><list><block var="data"/><block s="reportIfElse"><block s="reportVariadicEquals"><list><block var="interval"/><l>0</l></list></block><block s="reifyReporter"><autolambda><block s="reportListItem"><block var="number"/><l/></block></autolambda><list></list></block><block s="reifyReporter"><autolambda><block s="reportMonadic"><l><option>ceiling</option></l><block s="reportQuotient"><block s="reportListItem"><block var="number"/><l/></block><block var="interval"/></block></block></autolambda><list></list></block></block></list></block></block></script></block-definition><block-definition s="deep index of %&apos;item&apos; in %&apos;list&apos;" type="reporter" category="lists"><comment x="0" y="0" w="222.01113281249985" collapsed="false">return an index (as a list) of the first occurence of the item in a nested list&#xD;&#xD;e.g given a list data as:&#xD;[&#xD;A,&#xD;[B,C],&#xD;D, [E,F,G],&#xD;H&#xD;]&#xD;deep index of E of data would return [3,2,1] to indicate that it found the item as the 1st item of the 2nd item of the 3rd item of data</comment><header></header><code></code><translations></translations><inputs><input type="%s">thing</input><input type="%l"></input></inputs><script><block s="doWarp"><script><block s="doFor"><l>i</l><l>1</l><block s="reportListAttribute"><l><option>length</option></l><block var="list"/></block><script><block s="doIfElse"><block s="reportVariadicEquals"><list><block var="item"/><block s="reportListItem"><block var="i"/><block var="list"/></block></list></block><script><block s="doReport"><block s="reportNewList"><list><block var="i"/></list></block></block></script><script><block s="doIf"><block s="reportIsA"><block s="reportListItem"><block var="i"/><block var="list"/></block><l><option>list</option></l></block><script><block s="doDeclareVariables"><list><l>path</l></list></block><block s="doSetVar"><l>path</l><custom-block s="deep index of %s in %l"><block var="item"/><block s="reportListItem"><block var="i"/><block var="list"/></block></custom-block></block><block s="doIf"><block s="reportNot"><block s="reportListIsEmpty"><block var="path"/></block></block><script><block s="doReport"><block s="reportCONS"><block var="i"/><block var="path"/></block></block></script><list></list></block></script><list></list></block></script></block></script></block><block s="doReport"><block s="reportNewList"><list></list></block></block></script></block></script></block-definition><block-definition s="listify %&apos;jsonString&apos;" type="reporter" category="operators"><header></header><code></code><translations>pt:os dados JSON _ em formato de lista&#xD;</translations><inputs><input type="%mlt"></input></inputs><script><block s="doReport"><block s="reportTextSplit"><block var="jsonString"/><l><option>json</option></l></block></block></script></block-definition><block-definition s="value at key %&apos;key&apos; of %&apos;lst&apos;" type="reporter" category="operators"><header></header><code></code><translations>pt:o valor com chave _ em _&#xD;</translations><inputs><input type="%s"></input><input type="%l"></input></inputs><script><block s="doWarp"><script><block s="doForEach"><l>each item</l><block var="lst"/><script><block s="doIf"><block s="reportVariadicEquals"><list><block s="reportListItem"><l>1</l><block var="each item"/></block><block var="key"/></list></block><script><block s="doReport"><block s="reportListItem"><l>2</l><block var="each item"/></block></block></script><list></list></block></script></block></script></block><block s="doReport"><l></l></block></script></block-definition><block-definition s="%&apos;method&apos; url: %&apos;url&apos; send: %&apos;payload&apos; headers: %&apos;headers&apos;" type="reporter" category="sensing"><header></header><code></code><translations>pt:a resposta a _ de _ enviando _ e cabeçalhos _&#xD;</translations><inputs><input type="%s" readonly="true">GET<options>GET&#xD;POST&#xD;PUT&#xD;DELETE</options></input><input type="%s">https://snap.berkeley.edu</input><input type="%s"></input><input type="%mult%l" readonly="true"></input></inputs><script><block s="doReport"><block s="reportApplyExtension"><l>xhr_request(mth, url, dta, hdrs)</l><list><block var="method"/><block var="url"/><block var="payload"/><block var="headers"/></list></block></block></script></block-definition><block-definition s="key: %&apos;key&apos; value: %&apos;value&apos;" type="reporter" category="operators"><header></header><code></code><translations>pt:um par (chave: _ , valor: _ )&#xD;</translations><inputs><input type="%s"></input><input type="%s"></input></inputs><script><block s="doReport"><block s="reportNewList"><list><block var="key"/><block var="value"/></list></block></block></script></block-definition><block-definition s="current location" type="reporter" category="sensing"><comment x="0" y="0" w="200" collapsed="false">Reports a three-item list containing the latitude and longitude of the user, and the precision of the measurements.  Works only if the user allows snap.berkeley.edu access to location data.  Some browsers also require an HTTPS connection to Snap!.</comment><header></header><code></code><translations>pt:a localização actual do dispositivo&#xD;</translations><inputs></inputs><script><block s="doDeclareVariables"><list><l>callback</l></list></block><block s="doSetVar"><l>callback</l><block s="reportApplyExtension"><l>geo_location(acc?)</l><list><block s="reportBoolean"><l><bool>true</bool></l></block></list></block></block><block s="doWaitUntil"><block s="reportVariadicEquals"><list><block s="reportListAttribute"><l><option>length</option></l><block s="evaluate"><block var="callback"/><list></list></block></block><l>3</l></list></block></block><block s="doReport"><block s="evaluate"><block var="callback"/><list></list></block></block></script></block-definition><block-definition s="binary data from %&apos;url&apos; type %&apos;idl&apos;" type="reporter" category="sensing"><header></header><code></code><translations></translations><inputs><input type="%s"></input><input type="%s" readonly="true" initial="1">octet<options>byte&#xD;octet&#xD;short&#xD;unsigned short&#xD;long&#xD;unsigned long&#xD;unrestricted float&#xD;unrestricted double&#xD;bigint</options></input></inputs><script><block s="doReport"><block s="reportApplyExtension"><l>xhr_binary(url, webIDL_type)</l><list><block var="url"/><block var="idl"/></list></block></block></script></block-definition><block-definition s="$flash sort %&apos;data&apos; ordering with %&apos;function&apos;" type="reporter" category="lists"><comment x="0" y="0" w="161.14285714285708" collapsed="false">Reports a sorted version of the list in its first input slot, using the comparison function in the second input slot.  For a list of numbers, using &lt; as the comparison function will sort from low to high; using &gt; will sort from high to low.</comment><header></header><code></code><translations>ca:ordena _ segons criteri _&#xD;pl:$flash sortuj _ za pomocą _&#xD;</translations><inputs><input type="%l"></input><input type="%predRing"></input></inputs><script><block s="doReport"><block s="reportApplyExtension"><l>lst_sort(list, fn)</l><list><block var="data"/><block var="function"/></list></block></block></script></block-definition><block-definition s="$flash assoc %&apos;key&apos; %&apos;a-list&apos;" type="reporter" category="lists"><comment x="0" y="0" w="289.3333333333333" collapsed="false">The second input is an &quot;association list,&quot; a list of two-item lists.  Each of those smaller lists has a &quot;key&quot; as its first item and a &quot;value&quot; as its second.  ASSOC reports the first key-value pair in the association list whose key matches the first input.</comment><header></header><code></code><translations>ca:associació _ _&#xD;pl:$flash skojarz _ _&#xD;</translations><inputs><input type="%s"></input><input type="%l"></input></inputs><script><block s="doReport"><block s="reportAtomicFindFirst"><block s="reifyPredicate"><autolambda><block s="reportVariadicEquals"><list><block var="key"/><block s="reportListItem"><l>1</l><l/></block></list></block></autolambda><list></list></block><block var="a-list"/></block></block></script></block-definition><block-definition s="%&apos;#&apos; for each %&apos;item&apos; of %&apos;data&apos; %&apos;action&apos;" type="command" category="lists"><comment x="0" y="0" w="228.57142857142858" collapsed="false">This block carries out the given script for each item of the given list, like the primitive FOR EACH.&#xD;&#xD;What&apos;s different is that it provides the # variable, which will contain the item number in the list of each item in turn, 1 while processing item 1, and so on.</comment><header></header><code></code><translations>ca:_ per cada _ de _ _&#xD;pl:_ dla każdego _ z _ _&#xD;</translations><inputs><input type="%upvar"></input><input type="%upvar"></input><input type="%l"></input><input type="%ca"></input></inputs><script><block s="doForEach"><l>inner item</l><block var="data"/><script><block s="doSetVar"><l>item</l><block var="inner item"/></block><block s="doChangeVar"><l>#</l><l>1</l></block><block s="doRun"><block var="action"/><list></list></block></script></block></script></block-definition><block-definition s="☠︎ linked? %&apos;data&apos;" type="predicate" category="lists" helper="true"><header></header><code></code><translations></translations><inputs><input type="%l"></input></inputs><script><block s="doReport"><block s="reportApplyExtension"><l>lst_linked(list)</l><list><block var="data"/></list></block></block></script></block-definition><block-definition s="☠︎ link %&apos;data&apos;" type="reporter" category="lists" helper="true"><header></header><code></code><translations></translations><inputs><input type="%l"></input></inputs><script><block s="doIf"><block s="reportListIsEmpty"><block var="data"/></block><script><block s="doReport"><block var="data"/></block></script><list></list></block><block s="doReport"><block s="reportCONS"><block s="reportListItem"><l>1</l><block var="data"/></block><block s="reportCDR"><block var="data"/></block></block></block></script></block-definition><block-definition s="printable %&apos;data&apos;" type="reporter" category="lists"><comment x="0" y="0" w="188.66666666666666" collapsed="false">Takes a (possibly deep) list as input,&#xD;and reports a human-readable text form &#xD;of the list (namely, Lisp notation).&#xD;&#xD;Will not work on circular lists.</comment><header></header><code></code><translations>ca:notació textual de _&#xD;pl:tekstowa _&#xD;</translations><inputs><input type="%l"></input></inputs><script><block s="doIf"><block s="reportNot"><block s="reportIsA"><block var="data"/><l><option>list</option></l></block></block><script><block s="doReport"><block var="data"/></block></script><list></list></block><block s="doIf"><block s="reportListIsEmpty"><block var="data"/></block><script><block s="doReport"><l>()</l></block></script><list></list></block><block s="doReport"><block s="reportJoinWords"><list><l>(</l><block s="reportAtomicCombine"><block s="reportMap"><block s="reifyReporter"><autolambda><custom-block s="printable %l"><l/></custom-block></autolambda><list></list></block><block var="data"/></block><block s="reifyReporter"><autolambda><block s="reportJoinWords"><list><l></l><l> </l><l></l></list></block></autolambda><list></list></block></block><l>)</l></list></block></block></script></block-definition><block-definition s="sentence %&apos;phrase&apos;" type="reporter" category="lists"><comment x="0" y="0" w="302.6666666666667" collapsed="false">SENTENCE is the main constructor for sentences, represented&#xD;as lists of words.  It takes zero or more inputs, each of which can&#xD;be either a list or a text string.  If a list, the input is assumed to be&#xD;a list of words.  If a text string, it is converted to a list of words using&#xD;SENTENCE→LIST.  Then all the lists of words are appended to form a new list of words.&#xD;&#xD;If the inputs are lists of lists rather than lists of words, SENTENCE,&#xD;like APPEND, does only one level of flattening, reporting a list of&#xD;all the items of all the input lists.</comment><header></header><code></code><translations>ca:frase _&#xD;pl:zdanie _&#xD;</translations><inputs><input type="%mult%s"></input></inputs><script><block s="doReport"><block s="reportConcatenatedLists"><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportIfElse"><block s="reportIsA"><l></l><l><option>list</option></l></block><l></l><custom-block s="sentence $arrowRight list %txt"><l></l></custom-block></block></autolambda><list></list></block><block var="phrase"/></block></block></block></script></block-definition><block-definition s="$flash zip %&apos;lists&apos;" type="reporter" category="lists"><comment x="0" y="0" w="192" collapsed="false">ZIP takes any number of lists as inputs.  The lists should all be the same length.  ZIP reports a list of lists in which the first item is a list of all the first items, the second item is a list of all the second items, etc.&#xD;Viewing the inputs as the rows of a matrix, ZIP reports its transpose.</comment><header></header><code></code><translations>pl:$flash spakuj _&#xD;</translations><inputs><input type="%mult%l"></input></inputs><script><block s="doReport"><block s="reportListAttribute"><l><option>columns</option></l><block var="lists"/></block></block></script></block-definition><block-definition s="%&apos;x&apos;" type="reporter" category="lists"><comment x="0" y="0" w="105.33333333333333" collapsed="false">The identity function reports its input.</comment><header></header><code></code><translations></translations><inputs><input type="%s"></input></inputs><script><block s="doReport"><block var="x"/></block></script></block-definition><block-definition s="multimap %&apos;function&apos; over %&apos;lists&apos;" type="reporter" category="lists"><comment x="0" y="0" w="267.3333333333333" collapsed="false">Takes as input a function of N inputs and N lists.&#xD;The function is called with item 1 of all the lists as its inputs, with item 2 of all the lists as its inputs, and so on.  (The lists should all be the same length.)</comment><header></header><code></code><translations>ca:multi-mapeja _ sobre _&#xD;pl:mapuj wielokrotnie _ na _&#xD;</translations><inputs><input type="%repRing"></input><input type="%mult%l"></input></inputs><script><block s="doReport"><block s="reportMap"><block s="reifyReporter"><autolambda><block s="evaluate"><block var="function"/><custom-block s="%s"><l></l></custom-block></block></autolambda><list></list></block><custom-block s="$flash zip %mult%l"><block var="lists"/></custom-block></block></block></script></block-definition><block-definition s="sentence $arrowRight list %&apos;text&apos;" type="reporter" category="operators"><comment x="0" y="0" w="196" collapsed="false">Takes a sentence in text string form and reports the sentence as a list of its words.</comment><header></header><code></code><translations>de:Satz $arrowRight Liste _&#xD;ca:frase $arrowRight llista _&#xD;es:frase $arrowRight lista _&#xD;fr:phrase $arrowRight liste _&#xD;pt:uma lista com as palavras da frase _&#xD;pl:zdanie $arrowRight lista _&#xD;</translations><inputs><input type="%txt"></input></inputs><script><block s="doReport"><block s="reportAtomicKeep"><block s="reifyPredicate"><autolambda><block s="reportNot"><block s="reportVariadicEquals"><list><block s="reportTextAttribute"><l><option>length</option></l><l></l></block><l>0</l></list></block></block></autolambda><list></list></block><block s="reportTextSplit"><block var="text"/><l><option>whitespace</option></l></block></block></block></script></block-definition><block-definition s="rescale %&apos;value&apos; from ( %&apos;low-from&apos; .. %&apos;high-from&apos; ) to ( %&apos;low-to&apos; .. %&apos;high-to&apos; )" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%n"></input><input type="%n">0</input><input type="%n">10</input><input type="%n">-1</input><input type="%n">1</input></inputs><script><block s="doReport"><block s="reportVariadicSum"><list><block var="low-to"/><block s="reportVariadicProduct"><list><block s="reportQuotient"><block s="reportDifference"><block var="high-to"/><block var="low-to"/></block><block s="reportDifference"><block var="high-from"/><block var="low-from"/></block></block><block s="reportDifference"><block var="value"/><block var="low-from"/></block></list></block></list></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="2288"><pentrails>data:image/png;base64,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</pentrails><costumes><list struct="atomic" id="2289"></list></costumes><sounds><list struct="atomic" id="2290"></list></sounds><variables></variables><blocks></blocks><scripts></scripts><sprites select="1"><sprite name="Sprite(2)" idx="2" x="-1" y="-57" heading="90" scale="0.7" volume="100" pan="0" rotation="1" draggable="true" costume="1" color="0,160.65,44.98200000000004,1" pen="tip" id="2295"><costumes><list id="2296"><item><ref mediaID="mqtt_wind_Sprite(2)_cst_tower(2)"></ref></item></list></costumes><sounds><list struct="atomic" id="2297"></list></sounds><blocks></blocks><variables></variables><scripts><script x="165.83333333333334" y="53.972222222222236"><block s="receiveGo"></block><block s="setScale"><l>70</l></block><block s="setEffect"><l><option>brightness</option></l><l>75</l></block><block s="gotoXY"><l>-1</l><l>-57</l></block></script></scripts></sprite><sprite name="PieChart" idx="3" x="-150" y="0" heading="0" scale="1" volume="100" pan="0" rotation="1" draggable="true" hidden="true" costume="0" color="0,12,13,1" pen="tip" id="2310"><costumes><list struct="atomic" id="2311"></list></costumes><sounds><list struct="atomic" id="2312"></list></sounds><blocks></blocks><variables></variables><scripts><script x="100.83333333333334" y="53.6388888888889"><block s="receiveMessage"><l>update pie chart</l><list></list></block></script><script x="114.16666666666667" y="114.1388888888889"><block s="hide"></block><block s="up"></block><block s="clear"></block><block s="setColor"><color>3,249,0,1</color></block><block s="doFor"><l>i</l><l>1</l><l>360</l><script><block s="doIf"><block s="reportVariadicLessThan"><list><block var="i"/><block s="reportVariadicProduct"><list><block var="wind percentage"/><l>3.6</l></list></block></list></block><script><block s="setColor"><color>3,249,0,1</color></block></script><list><block s="reportVariadicLessThan"><list><block var="i"/><block s="reportVariadicProduct"><list><block s="reportVariadicSum"><list><block var="wind percentage"/><block var="solar percentage"/></list></block><l>3.6</l></list></block></list></block><script><block s="setColor"><color>239,155,0,1</color></block></script><block s="reportVariadicLessThan"><list><block var="i"/><block s="reportVariadicProduct"><list><block s="reportVariadicSum"><list><block var="wind percentage"/><block var="solar percentage"/><block var="gas percentage"/></list></block><l>3.6</l></list></block></list></block><script><block s="setColor"><color>0,57,224,1</color></block></script><l><bool>true</bool></l><script><block s="setColor"><color>0,12,13,1</color></block></script></list></block><block s="doGotoObject"><block s="reportNewList"><list><l>-150</l><l>-50</l></list></block></block><block s="down"></block><block s="setHeading"><block var="i"/></block><block s="forward"><l>50</l></block><block s="up"></block></script></block></script></scripts></sprite><watcher var="broker" style="normal" x="10" y="10" color="243,118,29" hidden="true"/><watcher var="topic" style="normal" x="10" y="34.400002" color="243,118,29" hidden="true"/><watcher var="all types" style="normal" x="10" y="58.80000399999999" color="243,118,29" hidden="true"/><watcher var="wind payload" style="normal" x="10" y="83.200006" color="243,118,29" hidden="true"/><watcher var="min wind MW" style="normal" x="1.9999999999997726" y="4.800009999999922" color="243,118,29"/><watcher var="max wind MW" style="normal" x="326" y="3.400007999999957" color="243,118,29"/><watcher var="new api" style="normal" x="10" y="151.40000799999999" color="243,118,29" hidden="true"/><watcher var="min wind %" style="normal" x="4" y="34.000009999999975" color="243,118,29"/><watcher var="max wind %" style="normal" x="325.0000000000002" y="36.40001199999995" color="243,118,29"/><watcher var="all" style="normal" x="10" y="260.0000100000001" color="243,118,29" extX="200" extY="150" hidden="true"/><watcher var="solar power" style="normal" x="328" y="325.5999980000001" color="243,118,29"/><watcher var="gas percentage" style="normal" x="3" y="331.5999980000001" color="243,118,29"/><watcher var="solar percentage" style="normal" x="-2" y="307.5999980000001" color="243,118,29"/><watcher var="wind percentage" style="normal" x="0.9999999999997726" y="286.200006" color="243,118,29"/><watcher var="wind MW" style="normal" x="181.00000000000023" y="329.800004" color="243,118,29"/><watcher var="gas power" style="normal" x="331" y="291.5999980000001" color="243,118,29"/><sprite name="StackedHistogram" idx="4" x="-200" y="50" heading="90" scale="1" volume="100" pan="0" rotation="1" draggable="true" hidden="true" costume="0" color="0,12,13,1" pen="tip" id="2424"><costumes><list struct="atomic" id="2425"></list></costumes><sounds><list struct="atomic" id="2426"></list></sounds><blocks></blocks><variables></variables><scripts><script x="100.83333333333334" y="53.6388888888889"><block s="receiveMessage"><l>update pie chart</l><list></list></block><block s="hide"></block><block s="up"></block><block s="clear"></block><block s="doGotoObject"><block s="reportNewList"><list><l>-200</l><l>-50</l></list></block></block><block s="doFor"><l>i</l><l>1</l><l>100</l><script><block s="doIf"><block s="reportVariadicLessThan"><list><block var="i"/><block s="reportVariadicProduct"><list><block var="wind percentage"/><l>1</l></list></block></list></block><script><block s="setColor"><color>3,249,0,1</color></block></script><list><block s="reportVariadicLessThan"><list><block var="i"/><block s="reportVariadicProduct"><list><block s="reportVariadicSum"><list><block var="wind percentage"/><block var="solar percentage"/></list></block><l>1</l></list></block></list></block><script><block s="setColor"><color>239,155,0,1</color></block></script><block s="reportVariadicLessThan"><list><block var="i"/><block s="reportVariadicProduct"><list><block s="reportVariadicSum"><list><block var="wind percentage"/><block var="solar percentage"/><block var="gas percentage"/></list></block><l>1</l></list></block></list></block><script><block s="setColor"><color>0,57,224,1</color></block></script><l><bool>true</bool></l><script><block s="setColor"><color>0,12,13,1</color></block></script></list></block><block s="down"></block><block s="setHeading"><l>90</l></block><block s="forward"><l>50</l></block><block s="up"></block><block s="changeXPosition"><l>-50</l></block><block s="changeYPosition"><l>1</l></block></script></block></script></scripts></sprite><sprite name="Sprite" idx="1" x="0" y="70" heading="178" scale="0.5" volume="100" pan="0" rotation="1" draggable="true" costume="1" color="80,80,80,1" pen="tip" id="2524"><costumes><list id="2525"><item><ref mediaID="mqtt_wind_Sprite_cst_blades"></ref></item></list></costumes><sounds><list struct="atomic" id="2526"></list></sounds><blocks></blocks><variables></variables><scripts><script x="13.333333333333334" y="26.500000000000153"><block s="receiveGo"></block><block s="doForever"><script><block s="doSetVar"><l>all</l><block s="reportNewList"><list></list></block></block><block s="doUntil"><block s="reportVariadicGreaterThan"><list><block s="reportListAttribute"><l><option>length</option></l><block var="all"/></block><l>0</l></list></block><script><block s="doSetVar"><l>all</l><block s="reportTextSplit"><block s="reportURL"><l>data.elexon.co.uk/bmrs/api/v1/generation/actual/per-type/day-total</l></block><l><option>json</option></l></block></block></script></block><block s="doSetVar"><l>wind MW</l><l>0</l></block><block s="doSetVar"><l>wind percentage</l><l>0</l></block><custom-block s="%upvar for each %upvar of %l %ca"><l>#</l><l>item</l><block var="all"/><script><block s="doIf"><block s="reportVariadicOr"><list><block s="reportVariadicEquals"><list><block s="reportListItem"><l>psrType</l><block var="item"/></block><l>Wind Offshore</l></list></block><block s="reportVariadicEquals"><list><block s="reportListItem"><l>psrType</l><block var="item"/></block><l>Wind Onshore</l></list></block></list></block><script><block s="doChangeVar"><l>wind MW</l><block s="reportRound"><block s="reportListItem"><l>halfHourUsage</l><block var="item"/></block></block></block><block s="doChangeVar"><l>wind percentage</l><block s="reportRound"><block s="reportListItem"><l>halfHourPercentage</l><block var="item"/></block></block></block></script><list><block s="reportVariadicEquals"><list><block s="reportListItem"><l>psrType</l><block var="item"/></block><l>Solar</l></list></block><script><block s="doSetVar"><l>solar percentage</l><block s="reportRound"><block s="reportListItem"><l>halfHourPercentage</l><block var="item"/></block></block></block><block s="doSetVar"><l>solar power</l><block s="reportRound"><block s="reportListItem"><l>halfHourUsage</l><block var="item"/></block></block></block></script><block s="reportVariadicEquals"><list><block s="reportListItem"><l>psrType</l><block var="item"/></block><l>Fossil Gas</l></list></block><script><block s="doSetVar"><l>gas percentage</l><block s="reportRound"><block s="reportListItem"><l>halfHourPercentage</l><block var="item"/></block></block></block><block s="doSetVar"><l>gas power</l><block s="reportRound"><block s="reportListItem"><l>halfHourUsage</l><block var="item"/></block></block></block></script></list></block></script></custom-block><block s="doIf"><block s="reportVariadicGreaterThan"><list><block var="wind MW"/><block var="max wind MW"/></list></block><script><block s="doSetVar"><l>max wind MW</l><block var="wind MW"/></block></script><list></list></block><block s="doIf"><block s="reportVariadicLessThan"><list><block var="wind MW"/><block var="min wind MW"/></list></block><script><block s="doSetVar"><l>min wind MW</l><block var="wind MW"/></block></script><list></list></block><block s="doIf"><block s="reportVariadicGreaterThan"><list><block var="wind percentage"/><block var="max wind %"/></list></block><script><block s="doSetVar"><l>max wind %</l><block var="wind percentage"/></block></script><list></list></block><block s="doIf"><block s="reportVariadicLessThan"><list><block var="wind percentage"/><block var="min wind %"/></list></block><script><block s="doSetVar"><l>min wind %</l><block var="wind percentage"/></block></script><list></list></block><block s="doBroadcast"><l>update pie chart</l><list></list></block><block s="doWait"><l>1800</l></block></script></block></script><script x="485.1666666666668" y="212.5"><block var="wind percentage"/></script><script x="450.83333333333337" y="9.138888888888914"><block s="doSetVar"><l>max wind MW</l><l>0</l></block></script><script x="276.83333333333337" y="8.333333333333334"><block s="doSetVar"><l>min wind MW</l><l>32000</l></block></script><script x="275.16666666666674" y="51.66666666666667"><block s="doSetVar"><l>min wind %</l><l>100</l></block></script><script x="453.50000000000006" y="54.16666666666667"><block s="doSetVar"><l>max wind %</l><l>0</l></block></script><script x="377.5" y="131.44444444444466"><block s="reportNewList"><list><l>halfHourPercentage</l></list></block></script><script x="895.6944444444446" y="85.49999999999993"><block var="all types"/></script><script x="539.1666666666667" y="150.1388888888884"><block s="bubble"><block var="wind MW"/></block></script><script x="655" y="47.80555555555566"><block s="receiveGo"></block><block s="setScale"><l>50</l></block><block s="setEffect"><l><option>brightness</option></l><l>60</l></block><block s="goToLayer"><l><option>front</option></l></block><block s="gotoXY"><l>0</l><l>70</l></block><block s="setHeading"><l>90</l></block><block s="doWait"><l>1</l></block><block s="doForever"><script><block s="turn"><l>2</l></block><block s="doWait"><block s="reportQuotient"><block s="reportVariadicProduct"><list><block s="reportQuotient"><l>60000000</l><l>2048</l></block><l>0.0115</l></list></block><block s="reportVariadicMin"><list><custom-block s="rescale %n from ( %n .. %n ) to ( %n .. %n )"><block var="wind MW"/><l>0</l><l>23000</l><l>1</l><l>15000</l></custom-block><l>15000</l></list></block></block></block></script></block></script><script x="449.1666666666667" y="326.0833333333333"><block s="reportQuotient"><l></l><l></l></block></script><script x="448.9384765625001" y="363.33333333333337"><block s="reportQuotient"><l></l><l>10000</l></block></script><script x="628.1051432291667" y="363.33333333333337"><block s="reportQuotient"><l>360</l><l>15</l></block></script><script x="1350.330924479167" y="280.3611111111108"><block s="reportVariadicMin"><list><block var="wind MW"/><l>15000</l></list></block></script><script x="350.6944444444445" y="616.5"><block var="new api"/></script><script x="978.5000000000001" y="371.00000000000006"><block s="reportQuotient"><block s="reportVariadicProduct"><list><block s="reportQuotient"><l>60000000</l><l>2048</l></block><l>23</l></list></block><block s="reportVariadicMin"><list><custom-block s="rescale %n from ( %n .. %n ) to ( %n .. %n )"><block var="wind MW"/><l>0</l><l>23000</l><l>0</l><l>15000</l></custom-block><l>15000</l></list></block></block></script><script x="563.3333333333334" y="241.1944444444445"><block s="bubble"><l></l></block></script><script x="350.3925130208336" y="642.4722222222223"><block var="wind MW"/></script><script x="14.333333333333371" y="949.1666666666667"><block s="reportTextSplit"><block s="reportURL"><l>data.elexon.co.uk/bmrs/api/v1/generation/outturn/current?format=json</l></block><l><option>json</option></l></block></script><script x="24.333333333333325" y="991.3333333333333"><block s="doSetVar"><l>new api</l><block s="reportTextSplit"><custom-block s="%s url: %s send: %s headers: %mult%l"><l>GET</l><l>https://api.energydashboard.co.uk/generation/latest</l><l></l><list><block s="reportNewList"><list><l>x-api-key</l><l>api_mq5puoMmYcG7Yp7iSvg1</l></list></block></list></custom-block><l><option>json</option></l></block></block></script><script x="528.5000000000001" y="1064.6666666666667"><block s="reportNewList"><list><block s="reportNewList"><list><block s="reportNewList"><list><l>dataset</l><l>FUELINSTHHCUR</l></list></block><block s="reportNewList"><list><l>fuelType</l><l>BIOMASS</l></list></block><block s="reportNewList"><list><l>currentUsage</l><l>2757</l></list></block><block s="reportNewList"><list><l>currentPercentage</l><l>10.178690098205715</l></list></block><block s="reportNewList"><list><l>halfHourUsage</l><l>2731</l></list></block><block s="reportNewList"><list><l>halfHourPercentage</l><l>9.724398233869818</l></list></block><block s="reportNewList"><list><l>twentyFourHourUsage</l><l>55132</l></list></block><block s="reportNewList"><list><l>twentyFourHourPercentage</l><l>8.087974250866276</l></list></block></list></block><block s="reportNewList"><list><block s="reportNewList"><list><l>dataset</l><l>FUELINSTHHCUR</l></list></block><block s="reportNewList"><list><l>fuelType</l><l>CCGT</l></list></block><block s="reportNewList"><list><l>currentUsage</l><l>5709</l></list></block><block s="reportNewList"><list><l>currentPercentage</l><l>21.077309311083216</l></list></block><block s="reportNewList"><list><l>halfHourUsage</l><l>7281</l></list></block><block s="reportNewList"><list><l>halfHourPercentage</l><l>25.92579404643213</l></list></block><block s="reportNewList"><list><l>twentyFourHourUsage</l><l>272605</l></list></block><block s="reportNewList"><list><l>twentyFourHourPercentage</l><l>39.99169666722413</l></list></block></list></block><block s="reportNewList"><list><block s="reportNewList"><list><l>dataset</l><l>FUELINSTHHCUR</l></list></block><block s="reportNewList"><list><l>fuelType</l><l>COAL</l></list></block><block s="reportNewList"><list><l>currentUsage</l><l>0</l></list></block><block s="reportNewList"><list><l>currentPercentage</l><l>0</l></list></block><block s="reportNewList"><list><l>halfHourUsage</l><l>0</l></list></block><block s="reportNewList"><list><l>halfHourPercentage</l><l>0</l></list></block><block s="reportNewList"><list><l>twentyFourHourUsage</l><l>0</l></list></block><block s="reportNewList"><list><l>twentyFourHourPercentage</l><l>0</l></list></block></list></block><block s="reportNewList"><list><block s="reportNewList"><list><l>dataset</l><l>FUELINSTHHCUR</l></list></block><block s="reportNewList"><list><l>fuelType</l><l>INTELEC</l></list></block><block s="reportNewList"><list><l>currentUsage</l><l>997</l></list></block><block s="reportNewList"><list><l>currentPercentage</l><l>3.6808683452706195</l></list></block><block s="reportNewList"><list><l>halfHourUsage</l><l>998</l></list></block><block s="reportNewList"><list><l>halfHourPercentage</l><l>3.553624839766415</l></list></block><block s="reportNewList"><list><l>twentyFourHourUsage</l><l>17839</l></list></block><block s="reportNewList"><list><l>twentyFourHourPercentage</l><l>2.6170168443227797</l></list></block></list></block><block s="reportNewList"><list><block s="reportNewList"><list><l>dataset</l><l>FUELINSTHHCUR</l></list></block><block s="reportNewList"><list><l>fuelType</l><l>INTEW</l></list></block><block s="reportNewList"><list><l>currentUsage</l><l>0</l></list></block><block s="reportNewList"><list><l>currentPercentage</l><l>0</l></list></block><block s="reportNewList"><list><l>halfHourUsage</l><l>0</l></list></block><block s="reportNewList"><list><l>halfHourPercentage</l><l>0</l></list></block><block s="reportNewList"><list><l>twentyFourHourUsage</l><l>0</l></list></block><block s="reportNewList"><list><l>twentyFourHourPercentage</l><l>0</l></list></block></list></block><block s="reportNewList"><list><block s="reportNewList"><list><l>dataset</l><l>FUELINSTHHCUR</l></list></block><block s="reportNewList"><list><l>fuelType</l><l>INTFR</l></list></block><block s="reportNewList"><list><l>currentUsage</l><l>1505</l></list></block><block s="reportNewList"><list><l>currentPercentage</l><l>5.556375987595068</l></list></block><block s="reportNewList"><list><l>halfHourUsage</l><l>1504</l></list></block><block s="reportNewList"><list><l>halfHourPercentage</l><l>5.355362483976641</l></list></block><block s="reportNewList"><list><l>twentyFourHourUsage</l><l>28738</l></list></block><block s="reportNewList"><list><l>twentyFourHourPercentage</l><l>4.215921860650711</l></list></block></list></block><block s="reportNewList"><list><block s="reportNewList"><list><l>dataset</l><l>FUELINSTHHCUR</l></list></block><block s="reportNewList"><list><l>fuelType</l><l>INTGRNL</l></list></block><block s="reportNewList"><list><l>currentUsage</l><l>0</l></list></block><block s="reportNewList"><list><l>currentPercentage</l><l>0</l></list></block><block s="reportNewList"><list><l>halfHourUsage</l><l>0</l></list></block><block s="reportNewList"><list><l>halfHourPercentage</l><l>0</l></list></block><block s="reportNewList"><list><l>twentyFourHourUsage</l><l>245</l></list></block><block s="reportNewList"><list><l>twentyFourHourPercentage</l><l>0.03594198816408324</l></list></block></list></block><block s="reportNewList"><list><block s="reportNewList"><list><l>dataset</l><l>FUELINSTHHCUR</l></list></block><block s="reportNewList"><list><l>fuelType</l><l>INTIFA2</l></list></block><block s="reportNewList"><list><l>currentUsage</l><l>992</l></list></block><block s="reportNewList"><list><l>currentPercentage</l><l>3.6624086243815994</l></list></block><block s="reportNewList"><list><l>halfHourUsage</l><l>992</l></list></block><block s="reportNewList"><list><l>halfHourPercentage</l><l>3.5322603617718276</l></list></block><block s="reportNewList"><list><l>twentyFourHourUsage</l><l>18798</l></list></block><block s="reportNewList"><list><l>twentyFourHourPercentage</l><l>2.7577040551364767</l></list></block></list></block><block s="reportNewList"><list><block s="reportNewList"><list><l>dataset</l><l>FUELINSTHHCUR</l></list></block><block s="reportNewList"><list><l>fuelType</l><l>INTIRL</l></list></block><block s="reportNewList"><list><l>currentUsage</l><l>0</l></list></block><block s="reportNewList"><list><l>currentPercentage</l><l>0</l></list></block><block s="reportNewList"><list><l>halfHourUsage</l><l>0</l></list></block><block s="reportNewList"><list><l>halfHourPercentage</l><l>0</l></list></block><block s="reportNewList"><list><l>twentyFourHourUsage</l><l>63</l></list></block><block s="reportNewList"><list><l>twentyFourHourPercentage</l><l>0.00924222552790712</l></list></block></list></block><block s="reportNewList"><list><block s="reportNewList"><list><l>dataset</l><l>FUELINSTHHCUR</l></list></block><block s="reportNewList"><list><l>fuelType</l><l>INTNED</l></list></block><block s="reportNewList"><list><l>currentUsage</l><l>1003</l></list></block><block s="reportNewList"><list><l>currentPercentage</l><l>3.703020010337444</l></list></block><block s="reportNewList"><list><l>halfHourUsage</l><l>1004</l></list></block><block s="reportNewList"><list><l>halfHourPercentage</l><l>3.574989317761003</l></list></block><block s="reportNewList"><list><l>twentyFourHourUsage</l><l>3642</l></list></block><block s="reportNewList"><list><l>twentyFourHourPercentage</l><l>0.5342886567085354</l></list></block></list></block><block s="reportNewList"><list><block s="reportNewList"><list><l>dataset</l><l>FUELINSTHHCUR</l></list></block><block s="reportNewList"><list><l>fuelType</l><l>INTNEM</l></list></block><block s="reportNewList"><list><l>currentUsage</l><l>383</l></list></block><block s="reportNewList"><list><l>currentPercentage</l><l>1.414014620098944</l></list></block><block s="reportNewList"><list><l>halfHourUsage</l><l>480</l></list></block><block s="reportNewList"><list><l>halfHourPercentage</l><l>1.7091582395670133</l></list></block><block s="reportNewList"><list><l>twentyFourHourUsage</l><l>4510</l></list></block><block s="reportNewList"><list><l>twentyFourHourPercentage</l><l>0.6616259862041446</l></list></block></list></block><block s="reportNewList"><list><block s="reportNewList"><list><l>dataset</l><l>FUELINSTHHCUR</l></list></block><block s="reportNewList"><list><l>fuelType</l><l>INTNSL</l></list></block><block s="reportNewList"><list><l>currentUsage</l><l>0</l></list></block><block s="reportNewList"><list><l>currentPercentage</l><l>0</l></list></block><block s="reportNewList"><list><l>halfHourUsage</l><l>16</l></list></block><block s="reportNewList"><list><l>halfHourPercentage</l><l>0.05697194131890044</l></list></block><block s="reportNewList"><list><l>twentyFourHourUsage</l><l>22230</l></list></block><block s="reportNewList"><list><l>twentyFourHourPercentage</l><l>3.261185293418655</l></list></block></list></block><block s="reportNewList"><list><block s="reportNewList"><list><l>dataset</l><l>FUELINSTHHCUR</l></list></block><block s="reportNewList"><list><l>fuelType</l><l>INTVKL</l></list></block><block s="reportNewList"><list><l>currentUsage</l><l>747</l></list></block><block s="reportNewList"><list><l>currentPercentage</l><l>2.757882300819612</l></list></block><block s="reportNewList"><list><l>halfHourUsage</l><l>964</l></list></block><block s="reportNewList"><list><l>halfHourPercentage</l><l>3.432559464463752</l></list></block><block s="reportNewList"><list><l>twentyFourHourUsage</l><l>8776</l></list></block><block s="reportNewList"><list><l>twentyFourHourPercentage</l><l>1.2874566862367125</l></list></block></list></block><block s="reportNewList"><list><block s="reportNewList"><list><l>dataset</l><l>FUELINSTHHCUR</l></list></block><block s="reportNewList"><list><l>fuelType</l><l>NPSHYD</l></list></block><block s="reportNewList"><list><l>currentUsage</l><l>725</l></list></block><block s="reportNewList"><list><l>currentPercentage</l><l>2.676659528907923</l></list></block><block s="reportNewList"><list><l>halfHourUsage</l><l>767</l></list></block><block s="reportNewList"><list><l>halfHourPercentage</l><l>2.73109243697479</l></list></block><block s="reportNewList"><list><l>twentyFourHourUsage</l><l>17760</l></list></block><block s="reportNewList"><list><l>twentyFourHourPercentage</l><l>2.6054273869147693</l></list></block></list></block><block s="reportNewList"><list><block s="reportNewList"><list><l>dataset</l><l>FUELINSTHHCUR</l></list></block><block s="reportNewList"><list><l>fuelType</l><l>NUCLEAR</l></list></block><block s="reportNewList"><list><l>currentUsage</l><l>5131</l></list></block><block s="reportNewList"><list><l>currentPercentage</l><l>18.943365576312488</l></list></block><block s="reportNewList"><list><l>halfHourUsage</l><l>5139</l></list></block><block s="reportNewList"><list><l>halfHourPercentage</l><l>18.298675402364335</l></list></block><block s="reportNewList"><list><l>twentyFourHourUsage</l><l>120581</l></list></block><block s="reportNewList"><list><l>twentyFourHourPercentage</l><l>17.68947295842172</l></list></block></list></block><block s="reportNewList"><list><block s="reportNewList"><list><l>dataset</l><l>FUELINSTHHCUR</l></list></block><block s="reportNewList"><list><l>fuelType</l><l>OCGT</l></list></block><block s="reportNewList"><list><l>currentUsage</l><l>3</l></list></block><block s="reportNewList"><list><l>currentPercentage</l><l>0.011075832533412095</l></list></block><block s="reportNewList"><list><l>halfHourUsage</l><l>3</l></list></block><block s="reportNewList"><list><l>halfHourPercentage</l><l>0.010682238997293833</l></list></block><block s="reportNewList"><list><l>twentyFourHourUsage</l><l>238</l></list></block><block s="reportNewList"><list><l>twentyFourHourPercentage</l><l>0.03491507421653801</l></list></block></list></block><block s="reportNewList"><list><block s="reportNewList"><list><l>dataset</l><l>FUELINSTHHCUR</l></list></block><block s="reportNewList"><list><l>fuelType</l><l>OIL</l></list></block><block s="reportNewList"><list><l>currentUsage</l><l>0</l></list></block><block s="reportNewList"><list><l>currentPercentage</l><l>0</l></list></block><block s="reportNewList"><list><l>halfHourUsage</l><l>0</l></list></block><block s="reportNewList"><list><l>halfHourPercentage</l><l>0</l></list></block><block s="reportNewList"><list><l>twentyFourHourUsage</l><l>0</l></list></block><block s="reportNewList"><list><l>twentyFourHourPercentage</l><l>0</l></list></block></list></block><block s="reportNewList"><list><block s="reportNewList"><list><l>dataset</l><l>FUELINSTHHCUR</l></list></block><block s="reportNewList"><list><l>fuelType</l><l>OTHER</l></list></block><block s="reportNewList"><list><l>currentUsage</l><l>555</l></list></block><block s="reportNewList"><list><l>currentPercentage</l><l>2.0490290186812374</l></list></block><block s="reportNewList"><list><l>halfHourUsage</l><l>552</l></list></block><block s="reportNewList"><list><l>halfHourPercentage</l><l>1.965531975502065</l></list></block><block s="reportNewList"><list><l>twentyFourHourUsage</l><l>17527</l></list></block><block s="reportNewList"><list><l>twentyFourHourPercentage</l><l>2.5712458226607633</l></list></block></list></block><block s="reportNewList"><list><block s="reportNewList"><list><l>dataset</l><l>FUELINSTHHCUR</l></list></block><block s="reportNewList"><list><l>fuelType</l><l>PS</l></list></block><block s="reportNewList"><list><l>currentUsage</l><l>112</l></list></block><block s="reportNewList"><list><l>currentPercentage</l><l>0.4134977479140515</l></list></block><block s="reportNewList"><list><l>halfHourUsage</l><l>264</l></list></block><block s="reportNewList"><list><l>halfHourPercentage</l><l>0.9400370317618574</l></list></block><block s="reportNewList"><list><l>twentyFourHourUsage</l><l>6405</l></list></block><block s="reportNewList"><list><l>twentyFourHourPercentage</l><l>0.9396262620038904</l></list></block></list></block><block s="reportNewList"><list><block s="reportNewList"><list><l>dataset</l><l>FUELINSTHHCUR</l></list></block><block s="reportNewList"><list><l>fuelType</l><l>WIND</l></list></block><block s="reportNewList"><list><l>currentUsage</l><l>6467</l></list></block><block s="reportNewList"><list><l>currentPercentage</l><l>23.87580299785867</l></list></block><block s="reportNewList"><list><l>halfHourUsage</l><l>5389</l></list></block><block s="reportNewList"><list><l>halfHourPercentage</l><l>19.188861985472155</l></list></block><block s="reportNewList"><list><l>twentyFourHourUsage</l><l>86565</l></list></block><block s="reportNewList"><list><l>twentyFourHourPercentage</l><l>12.699257981321901</l></list></block></list></block></list></block></script><script x="521.0000000000001" y="864.6666666666666"><block s="evaluate"><block s="reifyReporter"><autolambda><block s="reportConcatenatedLists"><list><block s="reportNewList"><list><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportListItem"><l>1</l><l/></block></autolambda><list></list></block><block s="reportListItem"><l>1</l><l/></block></block></list></block><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportListItem"><l>2</l><l/></block></autolambda><list></list></block><l/></block></autolambda><list></list></block><l/></block></list></block></autolambda><list></list></block><list><block s="reportTextSplit"><custom-block s="%s url: %s send: %s headers: %mult%l"><l>GET</l><l>https://api.energydashboard.co.uk/generation/latest</l><l></l><list><block s="reportNewList"><list><l>x-api-key</l><l>api_mq5puoMmYcG7Yp7iSvg1</l></list></block></list></custom-block><l><option>json</option></l></block></list></block></script><script x="491.6666666666667" y="426.3055555555561"><block s="evaluate"><block s="reifyReporter"><autolambda><block s="reportConcatenatedLists"><list><block s="reportNewList"><list><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportListItem"><l>1</l><l/></block></autolambda><list></list></block><block s="reportListItem"><l>1</l><l/></block></block></list></block><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportListItem"><l>2</l><l/></block></autolambda><list></list></block><l/></block></autolambda><list></list></block><l/></block></list></block></autolambda><list></list></block><list><block s="reportTextSplit"><block s="reportURL"><l>data.elexon.co.uk/bmrs/api/v1/generation/actual/per-type/day-total</l></block><l><option>json</option></l></block></list></block></script></scripts></sprite></sprites></stage><variables><variable name="all types"><list id="4022"><item><list id="4023"><item><list struct="atomic" id="4024">dataset,FUELINSTHHCUR</list></item><item><list struct="atomic" id="4025">fuelType,BIOMASS</list></item><item><list struct="atomic" id="4026">currentUsage,2866</list></item><item><list struct="atomic" id="4027">currentPercentage,8.816291374430909</list></item><item><list struct="atomic" id="4028">halfHourUsage,2889</list></item><item><list struct="atomic" id="4029">halfHourPercentage,8.691597220132977</list></item><item><list struct="atomic" id="4030">twentyFourHourUsage,63965</list></item><item><list struct="atomic" id="4031">twentyFourHourPercentage,9.39123259836092</list></item></list></item><item><list id="4032"><item><list struct="atomic" id="4033">dataset,FUELINSTHHCUR</list></item><item><list struct="atomic" id="4034">fuelType,CCGT</list></item><item><list struct="atomic" id="4035">currentUsage,13767</list></item><item><list struct="atomic" id="4036">currentPercentage,42.34957548911037</list></item><item><list struct="atomic" id="4037">halfHourUsage,14157</list></item><item><list struct="atomic" id="4038">halfHourPercentage,42.591534041336985</list></item><item><list struct="atomic" id="4039">twentyFourHourUsage,225320</list></item><item><list struct="atomic" id="4040">twentyFourHourPercentage,33.081099492889585</list></item></list></item><item><list id="4041"><item><list struct="atomic" id="4042">dataset,FUELINSTHHCUR</list></item><item><list struct="atomic" id="4043">fuelType,COAL</list></item><item><list struct="atomic" id="4044">currentUsage,0</list></item><item><list struct="atomic" id="4045">currentPercentage,0</list></item><item><list struct="atomic" id="4046">halfHourUsage,0</list></item><item><list struct="atomic" id="4047">halfHourPercentage,0</list></item><item><list struct="atomic" id="4048">twentyFourHourUsage,0</list></item><item><list struct="atomic" id="4049">twentyFourHourPercentage,0</list></item></list></item><item><list id="4050"><item><list struct="atomic" id="4051">dataset,FUELINSTHHCUR</list></item><item><list struct="atomic" id="4052">fuelType,INTELEC</list></item><item><list struct="atomic" id="4053">currentUsage,997</list></item><item><list struct="atomic" id="4054">currentPercentage,3.0669373692629507</list></item><item><list struct="atomic" id="4055">halfHourUsage,998</list></item><item><list struct="atomic" id="4056">halfHourPercentage,3.0024970666987576</list></item><item><list struct="atomic" id="4057">twentyFourHourUsage,22876</list></item><item><list struct="atomic" id="4058">twentyFourHourPercentage,3.358615444697951</list></item></list></item><item><list id="4059"><item><list struct="atomic" id="4060">dataset,FUELINSTHHCUR</list></item><item><list struct="atomic" id="4061">fuelType,INTEW</list></item><item><list struct="atomic" id="4062">currentUsage,0</list></item><item><list struct="atomic" id="4063">currentPercentage,0</list></item><item><list struct="atomic" id="4064">halfHourUsage,0</list></item><item><list struct="atomic" id="4065">halfHourPercentage,0</list></item><item><list struct="atomic" id="4066">twentyFourHourUsage,0</list></item><item><list struct="atomic" id="4067">twentyFourHourPercentage,0</list></item></list></item><item><list id="4068"><item><list struct="atomic" id="4069">dataset,FUELINSTHHCUR</list></item><item><list struct="atomic" id="4070">fuelType,INTFR</list></item><item><list struct="atomic" id="4071">currentUsage,1505</list></item><item><list struct="atomic" id="4072">currentPercentage,4.62962962962963</list></item><item><list struct="atomic" id="4073">halfHourUsage,1504</list></item><item><list struct="atomic" id="4074">halfHourPercentage,4.524805198712356</list></item><item><list struct="atomic" id="4075">twentyFourHourUsage,33602</list></item><item><list struct="atomic" id="4076">twentyFourHourPercentage,4.933388537014362</list></item></list></item><item><list id="4077"><item><list struct="atomic" id="4078">dataset,FUELINSTHHCUR</list></item><item><list struct="atomic" id="4079">fuelType,INTGRNL</list></item><item><list struct="atomic" id="4080">currentUsage,0</list></item><item><list struct="atomic" id="4081">currentPercentage,0</list></item><item><list struct="atomic" id="4082">halfHourUsage,0</list></item><item><list struct="atomic" id="4083">halfHourPercentage,0</list></item><item><list struct="atomic" id="4084">twentyFourHourUsage,0</list></item><item><list struct="atomic" id="4085">twentyFourHourPercentage,0</list></item></list></item><item><list id="4086"><item><list struct="atomic" id="4087">dataset,FUELINSTHHCUR</list></item><item><list struct="atomic" id="4088">fuelType,INTIFA2</list></item><item><list struct="atomic" id="4089">currentUsage,991</list></item><item><list struct="atomic" id="4090">currentPercentage,3.048480374061769</list></item><item><list struct="atomic" id="4091">halfHourUsage,992</list></item><item><list struct="atomic" id="4092">halfHourPercentage,2.9844459821294262</list></item><item><list struct="atomic" id="4093">twentyFourHourUsage,22805</list></item><item><list struct="atomic" id="4094">twentyFourHourPercentage,3.3481913453548158</list></item></list></item><item><list id="4095"><item><list struct="atomic" id="4096">dataset,FUELINSTHHCUR</list></item><item><list struct="atomic" id="4097">fuelType,INTIRL</list></item><item><list struct="atomic" id="4098">currentUsage,0</list></item><item><list struct="atomic" id="4099">currentPercentage,0</list></item><item><list struct="atomic" id="4100">halfHourUsage,0</list></item><item><list struct="atomic" id="4101">halfHourPercentage,0</list></item><item><list struct="atomic" id="4102">twentyFourHourUsage,0</list></item><item><list struct="atomic" id="4103">twentyFourHourPercentage,0</list></item></list></item><item><list id="4104"><item><list struct="atomic" id="4105">dataset,FUELINSTHHCUR</list></item><item><list struct="atomic" id="4106">fuelType,INTNED</list></item><item><list struct="atomic" id="4107">currentUsage,682</list></item><item><list struct="atomic" id="4108">currentPercentage,2.0979451212009352</list></item><item><list struct="atomic" id="4109">halfHourUsage,682</list></item><item><list struct="atomic" id="4110">halfHourPercentage,2.051806612713981</list></item><item><list struct="atomic" id="4111">twentyFourHourUsage,18408</list></item><item><list struct="atomic" id="4112">twentyFourHourPercentage,2.7026312775834884</list></item></list></item><item><list id="4113"><item><list struct="atomic" id="4114">dataset,FUELINSTHHCUR</list></item><item><list struct="atomic" id="4115">fuelType,INTNEM</list></item><item><list struct="atomic" id="4116">currentUsage,1017</list></item><item><list struct="atomic" id="4117">currentPercentage,3.1284606866002216</list></item><item><list struct="atomic" id="4118">halfHourUsage,1016</list></item><item><list struct="atomic" id="4119">halfHourPercentage,3.056650320406751</list></item><item><list struct="atomic" id="4120">twentyFourHourUsage,20575</list></item><item><list struct="atomic" id="4121">twentyFourHourPercentage,3.0207865350000147</list></item></list></item><item><list id="4122"><item><list struct="atomic" id="4123">dataset,FUELINSTHHCUR</list></item><item><list struct="atomic" id="4124">fuelType,INTNSL</list></item><item><list struct="atomic" id="4125">currentUsage,1397</list></item><item><list struct="atomic" id="4126">currentPercentage,4.297403716008367</list></item><item><list struct="atomic" id="4127">halfHourUsage,1398</list></item><item><list struct="atomic" id="4128">halfHourPercentage,4.2059027046541715</list></item><item><list struct="atomic" id="4129">twentyFourHourUsage,32852</list></item><item><list struct="atomic" id="4130">twentyFourHourPercentage,4.823274811558711</list></item></list></item><item><list id="4131"><item><list struct="atomic" id="4132">dataset,FUELINSTHHCUR</list></item><item><list struct="atomic" id="4133">fuelType,INTVKL</list></item><item><list struct="atomic" id="4134">currentUsage,987</list></item><item><list struct="atomic" id="4135">currentPercentage,3.0361757105943155</list></item><item><list struct="atomic" id="4136">halfHourUsage,988</list></item><item><list struct="atomic" id="4137">halfHourPercentage,2.972411925749872</list></item><item><list struct="atomic" id="4138">twentyFourHourUsage,17268</list></item><item><list struct="atomic" id="4139">twentyFourHourPercentage,2.535258414890899</list></item></list></item><item><list id="4140"><item><list struct="atomic" id="4141">dataset,FUELINSTHHCUR</list></item><item><list struct="atomic" id="4142">fuelType,NPSHYD</list></item><item><list struct="atomic" id="4143">currentUsage,721</list></item><item><list struct="atomic" id="4144">currentPercentage,2.217915590008613</list></item><item><list struct="atomic" id="4145">halfHourUsage,794</list></item><item><list struct="atomic" id="4146">halfHourPercentage,2.3887601913414964</list></item><item><list struct="atomic" id="4147">twentyFourHourUsage,14144</list></item><item><list struct="atomic" id="4148">twentyFourHourPercentage,2.0765980437929628</list></item></list></item><item><list id="4149"><item><list struct="atomic" id="4150">dataset,FUELINSTHHCUR</list></item><item><list struct="atomic" id="4151">fuelType,NUCLEAR</list></item><item><list struct="atomic" id="4152">currentUsage,4366</list></item><item><list struct="atomic" id="4153">currentPercentage,13.430540174726222</list></item><item><list struct="atomic" id="4154">halfHourUsage,4365</list></item><item><list struct="atomic" id="4155">halfHourPercentage,13.132164024188453</list></item><item><list struct="atomic" id="4156">twentyFourHourUsage,102076</list></item><item><list struct="atomic" id="4157">twentyFourHourPercentage,14.986624852814654</list></item></list></item><item><list id="4158"><item><list struct="atomic" id="4159">dataset,FUELINSTHHCUR</list></item><item><list struct="atomic" id="4160">fuelType,OCGT</list></item><item><list struct="atomic" id="4161">currentUsage,20</list></item><item><list struct="atomic" id="4162">currentPercentage,0.06152331733727083</list></item><item><list struct="atomic" id="4163">halfHourUsage,18</list></item><item><list struct="atomic" id="4164">halfHourPercentage,0.05415325370799363</list></item><item><list struct="atomic" id="4165">twentyFourHourUsage,360</list></item><item><list struct="atomic" id="4166">twentyFourHourPercentage,0.05285458821871229</list></item></list></item><item><list id="4167"><item><list struct="atomic" id="4168">dataset,FUELINSTHHCUR</list></item><item><list struct="atomic" id="4169">fuelType,OIL</list></item><item><list struct="atomic" id="4170">currentUsage,0</list></item><item><list struct="atomic" id="4171">currentPercentage,0</list></item><item><list struct="atomic" id="4172">halfHourUsage,0</list></item><item><list struct="atomic" id="4173">halfHourPercentage,0</list></item><item><list struct="atomic" id="4174">twentyFourHourUsage,0</list></item><item><list struct="atomic" id="4175">twentyFourHourPercentage,0</list></item></list></item><item><list id="4176"><item><list struct="atomic" id="4177">dataset,FUELINSTHHCUR</list></item><item><list struct="atomic" id="4178">fuelType,OTHER</list></item><item><list struct="atomic" id="4179">currentUsage,759</list></item><item><list struct="atomic" id="4180">currentPercentage,2.3348098929494276</list></item><item><list struct="atomic" id="4181">halfHourUsage,1330</list></item><item><list struct="atomic" id="4182">halfHourPercentage,4.00132374620175</list></item><item><list struct="atomic" id="4183">twentyFourHourUsage,18406</list></item><item><list struct="atomic" id="4184">twentyFourHourPercentage,2.7023376409822735</list></item></list></item><item><list id="4185"><item><list struct="atomic" id="4186">dataset,FUELINSTHHCUR</list></item><item><list struct="atomic" id="4187">fuelType,PS</list></item><item><list struct="atomic" id="4188">currentUsage,287</list></item><item><list struct="atomic" id="4189">currentPercentage,0.8828596037898364</list></item><item><list struct="atomic" id="4190">halfHourUsage,286</list></item><item><list struct="atomic" id="4191">halfHourPercentage,0.8604350311381209</list></item><item><list struct="atomic" id="4192">twentyFourHourUsage,6316</list></item><item><list struct="atomic" id="4193">twentyFourHourPercentage,0.9273043866371856</list></item></list></item><item><list id="4194"><item><list struct="atomic" id="4195">dataset,FUELINSTHHCUR</list></item><item><list struct="atomic" id="4196">fuelType,WIND</list></item><item><list struct="atomic" id="4197">currentUsage,2146</list></item><item><list struct="atomic" id="4198">currentPercentage,6.601451950289159</list></item><item><list struct="atomic" id="4199">halfHourUsage,1822</list></item><item><list struct="atomic" id="4200">halfHourPercentage,5.48151268088691</list></item><item><list struct="atomic" id="4201">twentyFourHourUsage,82141</list></item><item><list struct="atomic" id="4202">twentyFourHourPercentage,12.05980203020346</list></item></list></item></list></variable><variable name="wind MW"><l>12289</l></variable><variable name="max wind MW"><l>22955</l></variable><variable name="min wind MW"><l>1058</l></variable><variable name="new api"><list id="4203"><item><list struct="atomic" id="4204">recordType,Latest GB Electricity Generation</list></item><item><list struct="atomic" id="4205">units,Generation: Megawatts (MW)</list></item><item><list id="4206"><item><l>results</l></item><item><list id="4207"><item><list id="4208"><item><list struct="atomic" id="4209">datetimeStart,2026-03-25T16:00:00Z</list></item><item><list struct="atomic" id="4210">datetimeEnd,2026-03-25T16:30:00Z</list></item><item><list struct="atomic" id="4211">settlementDate,2026-03-25</list></item><item><list struct="atomic" id="4212">settlementPeriod,33</list></item><item><list struct="atomic" id="4213">generation,41124</list></item><item><list struct="atomic" id="4214">mwh,20562</list></item><item><list id="4215"><item><l>generationMix</l></item><item><list id="4216"><item><list struct="atomic" id="4217">solar,4279</list></item><item><list struct="atomic" id="4218">wind,21801</list></item><item><list struct="atomic" id="4219">pumpedStorage,0</list></item><item><list struct="atomic" id="4220">hydro,260</list></item><item><list struct="atomic" id="4221">biomass,1230</list></item><item><list struct="atomic" id="4222">nuclear,4463</list></item><item><list struct="atomic" id="4223">gas,2272</list></item><item><list struct="atomic" id="4224">misc,1033</list></item><item><list struct="atomic" id="4225">coal,0</list></item><item><list struct="atomic" id="4226">imports,5786</list></item></list></item></list></item><item><list id="4227"><item><l>generationType</l></item><item><list id="4228"><item><list struct="atomic" id="4229">renewables,26340</list></item><item><list struct="atomic" id="4230">lowCarbon,4463</list></item><item><list struct="atomic" id="4231">other,8049</list></item><item><list struct="atomic" id="4232">fossilFuels,2272</list></item></list></item></list></item><item><list struct="atomic" id="4233">importsBreakdown,</list></item><item><list struct="atomic" id="4234">exportsBreakdown,</list></item><item><list struct="atomic" id="4235">productionTotal,35338</list></item><item><list struct="atomic" id="4236">consumptionTotal,39544</list></item><item><list id="4237"><item><l>isForecast</l></item><item><bool>false</bool></item></list></item><item><list struct="atomic" id="4238">publishTime,2026-03-25T16:30:00.000Z</list></item><item><list struct="atomic" id="4239">createdAt,2026-03-25T16:32:02.413Z</list></item><item><list struct="atomic" id="4240">updatedAt,2026-03-25T16:37:06.079Z</list></item></list></item></list></item></list></item></list></variable><variable name="min wind %"><l>5</l></variable><variable name="max wind %"><l>100</l></variable><variable name="all"><list id="4241"><item><list id="4242"><item><list struct="atomic" id="4243">psrType,Solar</list></item><item><list struct="atomic" id="4244">halfHourUsage,7635</list></item><item><list struct="atomic" id="4245">halfHourPercentage,24.2</list></item><item><list struct="atomic" id="4246">twentyFourHourUsage,124686</list></item><item><list struct="atomic" id="4247">twentyFourHourPercentage,10.5</list></item></list></item><item><list id="4248"><item><list struct="atomic" id="4249">psrType,Wind Offshore</list></item><item><list struct="atomic" id="4250">halfHourUsage,7788.955</list></item><item><list struct="atomic" id="4251">halfHourPercentage,24.7</list></item><item><list struct="atomic" id="4252">twentyFourHourUsage,252212.914</list></item><item><list struct="atomic" id="4253">twentyFourHourPercentage,21.2</list></item></list></item><item><list id="4254"><item><list struct="atomic" id="4255">psrType,Wind Onshore</list></item><item><list struct="atomic" id="4256">halfHourUsage,4500.339</list></item><item><list struct="atomic" id="4257">halfHourPercentage,14.2</list></item><item><list struct="atomic" id="4258">twentyFourHourUsage,108270.831</list></item><item><list struct="atomic" id="4259">twentyFourHourPercentage,9.1</list></item></list></item><item><list id="4260"><item><list struct="atomic" id="4261">psrType,Other</list></item><item><list struct="atomic" id="4262">halfHourUsage,626</list></item><item><list struct="atomic" id="4263">halfHourPercentage,2</list></item><item><list struct="atomic" id="4264">twentyFourHourUsage,30470</list></item><item><list struct="atomic" id="4265">twentyFourHourPercentage,2.6</list></item></list></item><item><list id="4266"><item><list struct="atomic" id="4267">psrType,Nuclear</list></item><item><list struct="atomic" id="4268">halfHourUsage,5488</list></item><item><list struct="atomic" id="4269">halfHourPercentage,17.4</list></item><item><list struct="atomic" id="4270">twentyFourHourUsage,245836</list></item><item><list struct="atomic" id="4271">twentyFourHourPercentage,20.7</list></item></list></item><item><list id="4272"><item><list struct="atomic" id="4273">psrType,Fossil Oil</list></item><item><list struct="atomic" id="4274">halfHourUsage,0</list></item><item><list struct="atomic" id="4275">halfHourPercentage,0</list></item><item><list struct="atomic" id="4276">twentyFourHourUsage,0</list></item><item><list struct="atomic" id="4277">twentyFourHourPercentage,0</list></item></list></item><item><list id="4278"><item><list struct="atomic" id="4279">psrType,Fossil Gas</list></item><item><list struct="atomic" id="4280">halfHourUsage,3466</list></item><item><list struct="atomic" id="4281">halfHourPercentage,11</list></item><item><list struct="atomic" id="4282">twentyFourHourUsage,269158</list></item><item><list struct="atomic" id="4283">twentyFourHourPercentage,22.6</list></item></list></item><item><list id="4284"><item><list struct="atomic" id="4285">psrType,Fossil Hard coal</list></item><item><list struct="atomic" id="4286">halfHourUsage,0</list></item><item><list struct="atomic" id="4287">halfHourPercentage,0</list></item><item><list struct="atomic" id="4288">twentyFourHourUsage,0</list></item><item><list struct="atomic" id="4289">twentyFourHourPercentage,0</list></item></list></item><item><list id="4290"><item><list struct="atomic" id="4291">psrType,Hydro Run-of-river and poundage</list></item><item><list struct="atomic" id="4292">halfHourUsage,591</list></item><item><list struct="atomic" id="4293">halfHourPercentage,1.9</list></item><item><list struct="atomic" id="4294">twentyFourHourUsage,30447</list></item><item><list struct="atomic" id="4295">twentyFourHourPercentage,2.6</list></item></list></item><item><list id="4296"><item><list struct="atomic" id="4297">psrType,Hydro Pumped Storage</list></item><item><list struct="atomic" id="4298">halfHourUsage,0</list></item><item><list struct="atomic" id="4299">halfHourPercentage,0</list></item><item><list struct="atomic" id="4300">twentyFourHourUsage,8039</list></item><item><list struct="atomic" id="4301">twentyFourHourPercentage,0.7</list></item></list></item><item><list id="4302"><item><list struct="atomic" id="4303">psrType,Biomass</list></item><item><list struct="atomic" id="4304">halfHourUsage,1501</list></item><item><list struct="atomic" id="4305">halfHourPercentage,4.8</list></item><item><list struct="atomic" id="4306">twentyFourHourUsage,120639</list></item><item><list struct="atomic" id="4307">twentyFourHourPercentage,10.1</list></item></list></item></list></variable><variable name="wind percentage"><l>39</l></variable><variable name="solar percentage"><l>24</l></variable><variable name="solar power"><l>7635</l></variable><variable name="gas percentage"><l>11</l></variable><variable name="gas power"><l>3466</l></variable></variables></scene></scenes></project><media name="mqtt_wind" app="Snap! 11.0.8, https://snap.berkeley.edu" version="2"><costume name="tower(2)" center-x="69" center-y="153" image="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAI4AAAEzCAYAAADn3jsXAAAHqklEQVR4AezS24rjShBE0eH8/0cf/GAwRnerlRlVa2DobklVGblj//fPPwQuECDOBWiO/PtHHBZcIkCcS9gcIg4HLhEgziVsDhGHA5cIPC7OpZQOtSNAnHaVZAQiTkZP7VISp10lGYGIk9FTu5TEaVdJRiDiZPTULuX44rRDPkYg4ozR4+NbEOdx5GMMJM4YPT6+BXEeRz7GQOKM0ePjWxDnceRjDCTO7T3OcSFx5uj59i2JczvSOS4kzhw9374lcW5HOseFxJmj59u3JM7tSOe4kDj5PZdsQJwS7PlDiZPfYckGxCnBnj+UOPkdlmxAnBLs+UOJk99hyQbEKcGePfSVnjgvCv6fJkCc08gceBEgzouC/6cJEOc0MgdeBIjzouD/aQLEOY3MgRcB4rwo+H+awKPinE7nQFsCxGlbTe9gxOndT9t0xGlbTe9gxOndT9t0xGlbTe9gxOndT9t0Y4vTFnt+MOLkd1iyAXFKsOcPJU5+hyUbEKcEe/5Q4uR3WLIBcUqw5w8lzq0dznMZcebp+tZNiXMrznkuI848Xd+6KXFuxTnPZcSZp+tbNyXOrTjnuYw42V2XpSdOGfrswcTJ7q8sPXHK0GcPJk52f2XpiVOGPnswcbL7K0tPnDL0mYPfqYnzJuHnKQLEOYXLx28CxHmT8PMUAeKcwuXjNwHivEn4eYoAcU7h8vGbAHHeJPw8ReAxcU6l8nF7AsRpX1HPgMTp2Uv7VMRpX1HPgMTp2Uv7VMRpX1HPgMTp2Uv7VOOK0x59dkDiZPdXlp44ZeizBxMnu7+y9MQpQ589mDjZ/ZWlJ04Z+uzBxLmtv7kuIs5cfd+2LXFuQznXRcSZq+/btiXObSjnuog4c/V927bEuQ3lXBcRJ7fv0uTEKcWfO5w4ud2VJidOKf7c4cTJ7a40OXFK8ecOJ05ud6XJiVOKP2v4Z1rifNLw+2ECxDmMyoefBIjzScPvhwkQ5zAqH34SIM4nDb8fJkCcw6h8+EmAOJ80/H6YwCPiHE7jwxgCxImpqldQ4vTqIyYNcWKq6hWUOL36iElDnJiqegUlTq8+YtKMKU4M/tygxMntrjQ5cUrx5w4nTm53pcmJU4o/dzhxcrsrTU6cUvy5w4lzS3fzXUKc+Tq/ZWPi3IJxvkuIM1/nt2xMnFswzncJcebr/JaNiXMLxvkuIU5m5+WpiVNeQWYA4mT2Vp6aOOUVZAYgTmZv5amJU15BZgDiZPZWnpo45RVkBPhOSZxvIv4+RIA4hzD56JsAcb6J+PsQAeIcwuSjbwLE+Sbi70MEiHMIk4++CRDnm4i/DxH4c3EOpfBRHAHixFXWIzBxevQQl4I4cZX1CEycHj3EpSBOXGU9AhOnRw9xKcYTJ66CzMDEyeytPDVxyivIDECczN7KUxOnvILMAMTJ7K08NXHKK8gMQJyfe5vzAuLM2fvPWxPnZ4RzXkCcOXv/eWvi/IxwzguIM2fvP29NnJ8RznkBcfJ6b5GYOC1qyAtBnLzOWiQmTosa8kIQJ6+zFomJ06KGvBDEyeusRWLitKihd4ildMRZouLZLgHi7CLywRIB4ixR8WyXAHF2EflgiQBxlqh4tkuAOLuIfLBEgDhLVDzbJfCn4uxO90EsAeLEVlcbnDi1/GOnEye2utrgxKnlHzudOLHV1QYnTi3/2OljiRNbQ15w4uR11iIxcVrUkBeCOHmdtUhMnBY15IUgTl5nLRITp0UNeSGI81Nn8x4mzrzd/7Q5cX7CN+9h4szb/U+bE+cnfPMeJs683f+0OXF+wjfvYeJkdd8mLXHaVJEVhDhZfbVJS5w2VWQFIU5WX23SEqdNFVlBiJPVV5u0xGlTRc8ga6mIs0bG800CxNnE4+UaAeKskfF8kwBxNvF4uUaAOGtkPN8kQJxNPF6uESDOGhnPNwn8mTibU72MJ0Cc+AprFiBODff4qcSJr7BmAeLUcI+fSpz4CmsWIE4N9/ip44gTX0XWAsTJ6qtNWuK0qSIrCHGy+mqTljhtqsgKQpysvtqkJU6bKrKCEOdyX3MfJM7c/V/enjiX0c19kDhz9395e+JcRjf3QeLM3f/l7YlzGd3cB4mT03+rpMRpVUdOGOLkdNUqKXFa1ZEThjg5XbVKSpxWdeSEIU5OV62SEqdVHb3CbKUhzhYd71YJEGcVjRdbBIizRce7VQLEWUXjxRYB4mzR8W6VAHFW0XixRYA4W3S8WyXwJ+KsTvNiGALEGabKZxchzrO8h5lGnGGqfHYR4jzLe5hpxBmmymcXIc6zvIeZNoY4w9SRswhxcrpqlZQ4rerICUOcnK5aJSVOqzpywhAnp6tWSYnTqo6cMMS51JVDxOHAJQLEuYTNIeJw4BIB4lzC5hBxOHCJAHEuYXOIOBkOtEtJnHaVZAQiTkZP7VISp10lGYGIk9FTu5TEaVdJRiDiZPTULiVx2lXSI9BeCuLsEfJ+kQBxFrF4uEeAOHuEvF8kQJxFLB7uESDOHiHvFwkQZxGLh3sEiLNHyPtFAreLszjFw+EIEGe4Sp9ZiDjPcB5uCnGGq/SZhYjzDOfhphBnuEqfWYg4z3Aebkq+OMNVkrEQcTJ6apeSOO0qyQhEnIye2qUkTrtKMgL9DwAA///MvvKnAAAABklEQVQDANAQAmdt8Of+AAAAAElFTkSuQmCC" mediaID="mqtt_wind_Sprite(2)_cst_tower(2)"/><costume name="blades" center-x="180" center-y="205.01666666666665" image="data:image/png;base64,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" mediaID="mqtt_wind_Sprite_cst_blades"/></media></snapdata>