SVGHMI: add ForEach widget example
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/exemples/svghmi_foreach/beremiz.xml Fri Oct 11 10:34:15 2024 +0200
@@ -0,0 +1,5 @@
+<?xml version='1.0' encoding='utf-8'?> +<BeremizRoot xmlns:xsd="http://www.w3.org/2001/XMLSchema" URI_location="PYRO://127.0.0.1:61427"> + <Libraries Enable_SVGHMI_Library="true"/> --- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/exemples/svghmi_foreach/plc.xml Fri Oct 11 10:34:15 2024 +0200
@@ -0,0 +1,430 @@
+<?xml version='1.0' encoding='utf-8'?> +<project xmlns:ns1="http://www.plcopen.org/xml/tc6_0201" xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://www.plcopen.org/xml/tc6_0201"> + <fileHeader companyName="Unknown" productName="Unnamed" productVersion="1" creationDateTime="2019-08-06T14:23:42"/> + <contentHeader name="Unnamed" modificationDateTime="2024-10-09T11:37:00"> + <pou name="MainStuff" pouType="program"> + <variable name="Pump0"> + <derived name="PumpControl"/> + <variable name="Pump1"> + <derived name="PumpControl"/> + <variable name="Pump2"> + <derived name="PumpControl"/> + <variable name="Pump3"> + <derived name="PumpControl"/> + <variable name="Pump4"> + <derived name="PumpControl"/> + <variable name="Pump5"> + <derived name="PumpControl"/> + <variable name="Pump6"> + <derived name="PumpControl"/> + <variable name="Pump7"> + <derived name="PumpControl"/> + <block localId="4" typeName="PumpControl" instanceName="Pump0" executionOrderId="0" height="60" width="127"> + <position x="595" y="50"/> + <variable formalParameter="Pump"> + <relPosition x="0" y="30"/> + <variable formalParameter="strin"> + <relPosition x="0" y="50"/> + <connection refLocalId="12"> + <position x="595" y="100"/> + <position x="520" y="100"/> + <block localId="1" typeName="PumpControl" instanceName="Pump1" executionOrderId="0" height="60" width="127"> + <position x="595" y="280"/> + <variable formalParameter="Pump"> + <relPosition x="0" y="30"/> + <variable formalParameter="strin"> + <relPosition x="0" y="50"/> + <connection refLocalId="13"> + <position x="595" y="330"/> + <position x="525" y="330"/> + <block localId="2" typeName="PumpControl" instanceName="Pump2" executionOrderId="0" height="60" width="127"> + <position x="595" y="160"/> + <variable formalParameter="Pump"> + <relPosition x="0" y="30"/> + <variable formalParameter="strin"> + <relPosition x="0" y="50"/> + <connection refLocalId="5"> + <position x="595" y="210"/> + <position x="520" y="210"/> + <block localId="3" typeName="PumpControl" instanceName="Pump3" executionOrderId="0" height="60" width="127"> + <position x="595" y="395"/> + <variable formalParameter="Pump"> + <relPosition x="0" y="30"/> + <variable formalParameter="strin"> + <relPosition x="0" y="50"/> + <connection refLocalId="14"> + <position x="595" y="445"/> + <position x="525" y="445"/> + <block localId="6" typeName="PumpControl" instanceName="Pump4" executionOrderId="0" height="60" width="127"> + <position x="595" y="515"/> + <variable formalParameter="Pump"> + <relPosition x="0" y="30"/> + <variable formalParameter="strin"> + <relPosition x="0" y="50"/> + <connection refLocalId="15"> + <position x="595" y="565"/> + <position x="520" y="565"/> + <block localId="7" typeName="PumpControl" instanceName="Pump5" executionOrderId="0" height="60" width="127"> + <position x="595" y="645"/> + <variable formalParameter="Pump"> + <relPosition x="0" y="30"/> + <connection refLocalId="11"> + <position x="595" y="675"/> + <position x="582" y="675"/> + <position x="582" y="665"/> + <position x="570" y="665"/> + <variable formalParameter="strin"> + <relPosition x="0" y="50"/> + <connection refLocalId="16"> + <position x="595" y="695"/> + <position x="525" y="695"/> + <block localId="8" typeName="PumpControl" instanceName="Pump6" executionOrderId="0" height="60" width="127"> + <position x="595" y="775"/> + <variable formalParameter="Pump"> + <relPosition x="0" y="30"/> + <variable formalParameter="strin"> + <relPosition x="0" y="50"/> + <connection refLocalId="17"> + <position x="595" y="825"/> + <position x="530" y="825"/> + <block localId="9" typeName="PumpControl" instanceName="Pump7" executionOrderId="0" height="60" width="127"> + <position x="595" y="895"/> + <variable formalParameter="Pump"> + <relPosition x="0" y="30"/> + <connection refLocalId="10"> + <position x="595" y="925"/> + <position x="577" y="925"/> + <position x="577" y="905"/> + <position x="560" y="905"/> + <variable formalParameter="strin"> + <relPosition x="0" y="50"/> + <connection refLocalId="18"> + <position x="595" y="945"/> + <position x="530" y="945"/> + <inVariable localId="10" executionOrderId="0" height="27" width="20" negated="false"> + <position x="540" y="890"/> + <relPosition x="20" y="15"/> + <expression>0</expression> + <inVariable localId="11" executionOrderId="0" height="27" width="20" negated="false"> + <position x="550" y="650"/> + <relPosition x="20" y="15"/> + <expression>0</expression> + <inVariable localId="12" executionOrderId="0" height="30" width="35" negated="false"> + <position x="485" y="85"/> + <relPosition x="35" y="15"/> + <expression>'1'</expression> + <inVariable localId="5" executionOrderId="0" height="30" width="35" negated="false"> + <position x="485" y="195"/> + <relPosition x="35" y="15"/> + <expression>'B'</expression> + <inVariable localId="13" executionOrderId="0" height="30" width="50" negated="false"> + <position x="490" y="315"/> + <relPosition x="50" y="15"/> + <expression>'red'</expression> + <inVariable localId="14" executionOrderId="0" height="30" width="70" negated="false"> + <position x="490" y="430"/> + <relPosition x="70" y="15"/> + <expression>'three'</expression> + <inVariable localId="15" executionOrderId="0" height="30" width="35" negated="false"> + <position x="485" y="550"/> + <relPosition x="35" y="15"/> + <expression>'4'</expression> + <inVariable localId="16" executionOrderId="0" height="30" width="35" negated="false"> + <position x="490" y="680"/> + <relPosition x="35" y="15"/> + <expression>'5'</expression> + <inVariable localId="17" executionOrderId="0" height="30" width="35" negated="false"> + <position x="495" y="810"/> + <relPosition x="35" y="15"/> + <expression>'6'</expression> + <inVariable localId="18" executionOrderId="0" height="30" width="60" negated="false"> + <position x="495" y="930"/> + <relPosition x="60" y="15"/> + <expression>'last'</expression> + <pou name="PumpControl" pouType="functionBlock"> + <derived name="HMI_NODE"/> + <simpleValue value="1"/> + <variable name="strout"> + <derived name="HMI_STRING"/> + <variable name="strin"> + <derived name="HMI_STRING"/> + <simpleValue value="blup"/> + <block localId="10" typeName="CONCAT" executionOrderId="0" height="60" width="65"> + <position x="360" y="345"/> + <variable formalParameter="IN1"> + <relPosition x="0" y="30"/> + <connection refLocalId="1"> + <position x="360" y="375"/> + <position x="322" y="375"/> + <position x="322" y="370"/> + <position x="285" y="370"/> + <variable formalParameter="IN2"> + <relPosition x="0" y="50"/> + <connection refLocalId="14"> + <position x="360" y="395"/> + <position x="312" y="395"/> + <position x="312" y="405"/> + <position x="260" y="405"/> + <variable formalParameter="OUT"> + <relPosition x="65" y="30"/> + <outVariable localId="11" executionOrderId="0" height="30" width="58" negated="false"> + <position x="495" y="355"/> + <relPosition x="0" y="15"/> + <connection refLocalId="10" formalParameter="OUT"> + <position x="495" y="370"/> + <position x="450" y="370"/> + <position x="450" y="375"/> + <position x="425" y="375"/> + <expression>strout</expression> + <inVariable localId="14" executionOrderId="0" height="30" width="50" negated="false"> + <position x="210" y="390"/> + <relPosition x="50" y="15"/> + <expression>strin</expression> + <inVariable localId="1" executionOrderId="0" height="30" width="75" negated="false"> + <position x="210" y="355"/> + <relPosition x="75" y="15"/> + <expression>'Pump '</expression> + <configuration name="config"> + <resource name="resource1"> + <task name="task0" priority="0" interval="T#20ms"> + <pouInstance name="instance0" typeName="MainStuff"/> --- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/exemples/svghmi_foreach/py_ext_0@py_ext/baseconfnode.xml Fri Oct 11 10:34:15 2024 +0200
@@ -0,0 +1,2 @@
+<?xml version='1.0' encoding='utf-8'?> +<BaseParams xmlns:xsd="http://www.w3.org/2001/XMLSchema" IEC_Channel="1" Name="py_ext_0"/> --- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/exemples/svghmi_foreach/py_ext_0@py_ext/pyfile.xml Fri Oct 11 10:34:15 2024 +0200
@@ -0,0 +1,99 @@
+<?xml version='1.0' encoding='utf-8'?> +<PyFile xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> + <variable name="AlarmNotify" type="HMI_INT"/> + <variable name="SendAlarm" type="HMI_INT" onchange="TriggerAlarm"/> + <variable name="AlarmText" type="HMI_STRING" initial="'POS'"/> + <variable name="AlarmStatus" type="HMI_STRING" initial="'alarm'"/> +from twisted.web.resource import Resource +import json, time, random, collections +def TriggerAlarm(changed_var_name): + new_entry = [time.time(), PLCGlobals.AlarmText, PLCGlobals.AlarmStatus, lastid] + Alarms.append(new_entry) + AlarmIndex[lastid] = new_entry + PLCGlobals.AlarmNotify = random.randint(0, 4294967296) +class AlarmJsonResource(Resource): + def render_GET(self, request): + def render_POST(self, request): + newstr = request.content.getvalue() + newdata = json.loads(newstr) + args = newdata[u'args'] + range_feedback = newdata[u'range'] + slider_position = newdata[u'position'] + visible = newdata[u'visible'] + extra = newdata[u'extra'] + options = newdata[u'options'] + if action == "action_reset": + elif len(options) == 2 : + action, alarmid = options + if action == "onClick[acknowledge]": + AlarmIndex[int(alarmid)][2] = "ack" + answer = self.renderTable(range_feedback, slider_position, visible, extra) + janswer = json.dumps(answer) + def renderTable(self, old_range, old_position, visible, extra): + if len(extra) > 0 and extra[0] != "": + fAlarms = [alrm for alrm in Alarms if alrm[1].find(extra[0])!=-1] + new_range = len(fAlarms) + delta = new_range - visible + new_position = 0 if delta <= 0 else delta if old_position > delta else old_position + new_visible = new_range if delta <= 0 else visible + for ts, text, status, alarmid in fAlarms[new_position:new_position + new_visible]: + visible_alarms.append({ + "time": time.ctime(ts), + "text": text, # TODO translate text + return new_range, new_position, visible_alarms +AddPathToSVGHMIServers("alarms", AlarmJsonResource) --- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/exemples/svghmi_foreach/svghmi_0@svghmi/baseconfnode.xml Fri Oct 11 10:34:15 2024 +0200
@@ -0,0 +1,2 @@
+<?xml version='1.0' encoding='utf-8'?> +<BaseParams xmlns:xsd="http://www.w3.org/2001/XMLSchema" IEC_Channel="0" Name="svghmi_0"/> --- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/exemples/svghmi_foreach/svghmi_0@svghmi/confnode.xml Fri Oct 11 10:34:15 2024 +0200
@@ -0,0 +1,2 @@
+<?xml version='1.0' encoding='utf-8'?> +<SVGHMI xmlns:xsd="http://www.w3.org/2001/XMLSchema" OnWatchdog="echo Watchdog for {name} !" WatchdogInitial="10" WatchdogInterval="5" EnableWatchdog="true" Path="{name}" Interface="0.0.0.0" OnStart=""/> --- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/exemples/svghmi_foreach/svghmi_0@svghmi/svghmi.svg Fri Oct 11 10:34:15 2024 +0200
@@ -0,0 +1,1241 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:xlink="http://www.w3.org/1999/xlink" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + inkscape:version="0.92.5 (2060ec1f9f, 2020-04-08)" + sodipodi:docname="svghmi.svg" + viewBox="0 0 1920 1080" + <dc:format>image/svg+xml</dc:format> + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + inkscape:pageopacity="0" + inkscape:pageshadow="2" + inkscape:document-units="px" + inkscape:current-layer="hmi0" + inkscape:zoom="0.20046202" + inkscape:cx="-334.3572" + inkscape:cy="-700.15882" + inkscape:window-width="1850" + inkscape:window-height="1016" + inkscape:window-maximized="1" + inkscape:guide-bbox="true" + inkscape:snap-global="true" + inkscape:snap-bbox="true" + inkscape:bbox-nodes="true" + fit-margin-bottom="0" /> + transform="translate(0,1220)" + inkscape:label="HMI:Page:ForEach1@/PUMP0" /> + inkscape:label="HMI:Input@/PUMP0/STRIN" + transform="matrix(0.5,0,0,0.5,-1416.8035,1789.2488)"> + style="font-style:normal;font-weight:normal;font-size:160px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:2px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + inkscape:label="value"><tspan + style="fill:#000000;stroke-width:2px">8888</tspan></text> + style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:0;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#ff00ff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:10;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" /> + inkscape:label="+"dhu"" + transform="translate(-412.63122,172.413)"> + inkscape:connector-curvature="0" + d="m 792.86468,143.60768 -80.62929,0.60214 -0.60215,-80.629285 80.6293,-0.60214 z" + inkscape:transform-center-y="-14.956361" + style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#e6e6e6;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:10;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" /> + style="font-style:normal;font-weight:normal;font-size:20px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + xml:space="preserve"><tspan + style="stroke-width:1px" + sodipodi:role="line">dhu</tspan></text> + inkscape:label="="plop"" + transform="translate(5.9838208)"> + style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#e6e6e6;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:10;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" + inkscape:transform-center-y="-14.956361" + d="m 279.14413,316.02068 -80.6292,0.60214 -0.6022,-80.62929 80.6293,-0.60214 z" + inkscape:connector-curvature="0" /> + style="font-style:normal;font-weight:normal;font-size:20px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + style="stroke-width:1px">plop</tspan></text> + inkscape:label="="mhoo"" + transform="translate(6.203125e-5,1.93848)"> + style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#e6e6e6;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:10;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" + inkscape:transform-center-y="-14.956361" + d="m 190.02242,314.0822 -80.6292,0.60214 -0.6022,-80.62929 80.6293,-0.60214 z" + inkscape:connector-curvature="0" /> + style="font-style:normal;font-weight:normal;font-size:20px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + xml:space="preserve"><tspan + style="stroke-width:1px" + sodipodi:role="line">mhoo</tspan></text> + inkscape:label="="yodl"" + transform="translate(3.6703125e-4)"> + style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#e6e6e6;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:10;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" + inkscape:transform-center-y="-14.956361" + d="m 570.44399,316.02068 -80.6292,0.60214 -0.6022,-80.62929 80.6293,-0.60214 z" + inkscape:connector-curvature="0" /> + style="font-style:normal;font-weight:normal;font-size:20px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + xml:space="preserve"><tspan + style="stroke-width:1px" + sodipodi:role="line">yodl</tspan></text> + inkscape:label="="mhe"" + transform="translate(-14.078982,1.93848)"> + style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#e6e6e6;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:10;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" + inkscape:transform-center-y="-14.956361" + d="m 489.41787,314.0822 -80.6292,0.60214 -0.6022,-80.62929 80.6293,-0.60214 z" + inkscape:connector-curvature="0" /> + style="font-style:normal;font-weight:normal;font-size:20px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + style="stroke-width:1px">mhe</tspan></text> + inkscape:label="HMI:Display@/PUMP0/STROUT" + style="font-style:normal;font-weight:normal;font-size:80px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.5px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + xml:space="preserve"><tspan + style="fill:#000000;fill-opacity:1;stroke-width:0.5px" + sodipodi:role="line">8888</tspan></text> + inkscape:label="HMI:ForEach:PUMP@/@range@position@size" + transform="translate(-3180.7865,1314.0878)"> + inkscape:label="PUMP:1" + transform="translate(32.987139)"> + inkscape:label="HMI:Display@/PUMP0/STROUT" + style="font-style:normal;font-weight:normal;font-size:53.33333206px;line-height:125%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.14054523px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + xml:space="preserve"><tspan + style="font-size:53.33333206px;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke-width:0.14054523px" + sodipodi:role="line">8888</tspan></text> + xlink:href="#g1458-8-1" + transform="translate(601.4008,-504.68374)" + inkscape:label="HMI:Jump:ForEach1@en=/PUMP0#en" /> + inkscape:label="PUMP:2" + transform="translate(134.12728)"> + style="font-style:normal;font-weight:normal;font-size:53.33333206px;line-height:125%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.14054523px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + inkscape:label="HMI:Display@/PUMP1/STROUT"><tspan + style="font-size:53.33333206px;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke-width:0.14054523px">8888</tspan></text> + inkscape:label="HMI:Jump:ForEach1@en=/PUMP1#en" + transform="translate(761.4008,-504.68374)" + xlink:href="#g1458-8-1" + inkscape:label="PUMP:3" + transform="translate(235.26753)"> + style="font-style:normal;font-weight:normal;font-size:53.33333206px;line-height:125%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.14054523px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + inkscape:label="HMI:Display@/PUMP2/STROUT"><tspan + style="font-size:53.33333206px;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke-width:0.14054523px">8888</tspan></text> + xlink:href="#g1458-8-1" + transform="translate(921.4008,-504.68374)" + inkscape:label="HMI:Jump:ForEach1@en=/PUMP2#en" /> + inkscape:label="PUMP:4" + transform="translate(336.40767)"> + style="font-style:normal;font-weight:normal;font-size:53.33333206px;line-height:125%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.14054523px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + inkscape:label="HMI:Display@/PUMP3/STROUT"><tspan + style="font-size:53.33333206px;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke-width:0.14054523px">8888</tspan></text> + inkscape:label="HMI:Jump:ForEach1@en=/PUMP3#en" + transform="translate(1081.4008,-504.68374)" + xlink:href="#g1458-8-1" + inkscape:label="PUMP:+1" + transform="matrix(1.2451554,0,0,1.2451554,998.80041,-793.64078)"> + style="opacity:1;vector-effect:none;fill:#ffa32a;fill-opacity:1;stroke:#ffffff;stroke-width:4.81867552;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none" + d="m 1349.2185,612.41589 c 20.4882,0.19653 63.4534,40.65636 63.4534,40.65636 0,0 -39.5076,38.48741 -63.4534,38.48741 -12.4014,0 -22.3852,-9.35983 -22.3852,-20.98616 v -37.17144 c 0,-11.62634 9.9838,-20.98617 22.3852,-20.98617 z" + inkscape:connector-curvature="0" + sodipodi:nodetypes="cccssc" /> + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:32.12450409px;line-height:125%;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:center;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:0px;word-spacing:0px;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:middle;white-space:normal;shape-padding:0;opacity:1;vector-effect:none;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.80311257px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:32.12450409px;line-height:125%;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:center;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:0px;word-spacing:0px;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:middle;white-space:normal;shape-padding:0;vector-effect:none;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.80311257px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1">+1</tspan></text> + transform="matrix(1.2451555,0,0,1.2451555,-172.31931,-793.64085)" + inkscape:label="PUMP:-1"> + style="opacity:1;vector-effect:none;fill:#ffa32a;fill-opacity:1;stroke:#ffffff;stroke-width:4.81867504;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none" + d="m 1393.4848,612.41589 c 12.4014,0 22.3852,9.35983 22.3852,20.98617 v 37.17144 c 0,11.62633 -9.9838,20.98616 -22.3852,20.98616 -20.4882,-0.19653 -63.4534,-40.65636 -63.4534,-40.65636 0,0 39.5076,-38.48741 63.4534,-38.48741 z" + inkscape:connector-curvature="0" + sodipodi:nodetypes="cssccc" /> + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:32.12450027px;line-height:125%;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:center;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:0px;word-spacing:0px;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:middle;white-space:normal;shape-padding:0;opacity:1;vector-effect:none;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.80311251px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + xml:space="preserve"><tspan + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:32.12450027px;line-height:125%;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:center;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:0px;word-spacing:0px;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:middle;white-space:normal;shape-padding:0;vector-effect:none;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.80311251px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + sodipodi:role="line">-1</tspan></text> + inkscape:label="HMI:VarInit:50@position" + transform="translate(-3500,1580)" /> + inkscape:label="HMI:VarInit:100@range" + transform="translate(-3500,1580)" /> + inkscape:label="HMI:VarInit:7@size" + transform="translate(-3500,1580)" /> + inkscape:label="JumpButtonTemplate" + transform="translate(-3500,1580)"> + inkscape:label="disabled_template" + transform="translate(0,-559.63103)"> + inkscape:label="button" + style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#ffa32a;fill-opacity:0.3158683;fill-rule:nonzero;stroke:none;stroke-width:3.77952766;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" /> + style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;display:inline;fill:#434343;fill-opacity:1;stroke:none;stroke-width:0.99999994px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + id="text1454-0-7-20"><tspan + style="text-align:center;text-anchor:middle;fill:#434343;fill-opacity:1;stroke-width:0.99999994px" + id="tspan1460-3-5-2">Disabled</tspan></text> + inkscape:label="active_template" + transform="translate(0,-279.81551)"> + inkscape:label="button" + style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#ffa32a;fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:6;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" /> + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:40px;line-height:125%;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:center;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:0px;word-spacing:0px;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:middle;white-space:normal;shape-padding:0;display:inline;opacity:1;vector-effect:none;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.99999994px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="text1454-0-3-97"><tspan + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:40px;line-height:125%;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:center;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:0px;word-spacing:0px;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:middle;white-space:normal;shape-padding:0;vector-effect:none;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.99999994px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="tspan1460-3-6-3">Active</tspan></text> + inkscape:label="inactive_template" + transform="translate(0,-419.72327)"> + style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#ffa32a;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3.77952766;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" + inkscape:label="button" /> + style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;display:inline;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.99999994px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + id="text1454-0-5"><tspan + style="text-align:center;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke-width:0.99999994px" + id="tspan1460-3-92">Inactive</tspan></text> + inkscape:label="group_to_clone" + transform="translate(0,160)"> + transform="translate(0,279.81551)" + xlink:href="#g1450-4-8" + inkscape:label="disabled" /> + transform="translate(0,139.90775)" + inkscape:label="inactive" /> + inkscape:label="active" /> + inkscape:label="Gray Page Template" + transform="translate(-2020,1160)"> + style="color:#000000;opacity:1;vector-effect:none;fill:#d6d6d6;fill-opacity:1;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> + transform="translate(1356.9194,-759.99998)" + inkscape:label="HMI:Jump:Home" + style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#ffa32a;fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:6;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" + inkscape:label="active_template" /> + inkscape:label="inactive_template" + style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#ffa32a;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3.77952766;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" /> + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:40px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + xml:space="preserve"><tspan + sodipodi:role="line">Home</tspan></text> + inkscape:label="HMI:Jump:ForEach1@/PUMP0" + transform="translate(1356.9194,-739.99998)"> + style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#ffa32a;fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:6;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" + inkscape:label="active_template" /> + inkscape:label="inactive_template" + style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#ffa32a;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3.77952766;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" /> + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:40px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + id="tspan2347">ForEach 1</tspan></text> + inkscape:label="HMI:Jump:ForEach2@/PUMP0" + transform="translate(1356.9194,-719.99998)"> + style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#ffa32a;fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:6;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" + inkscape:label="active_template" /> + inkscape:label="inactive_template" + style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#ffa32a;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3.77952766;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" /> + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:40px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + xml:space="preserve"><tspan + sodipodi:role="line">ForEach 2</tspan></text> + transform="translate(-2816.5788,1138.5199)"> + inkscape:label="HMI:Display@position" + inkscape:label="format" + style="font-style:normal;font-weight:normal;font-size:45.74443054px;line-height:125%;font-family:sans-serif;text-align:end;letter-spacing:0px;word-spacing:0px;text-anchor:end;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.28590268px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + xml:space="preserve"><tspan + style="text-align:end;text-anchor:end;fill:#000000;fill-opacity:1;stroke-width:0.28590268px" + sodipodi:role="line">position: %d</tspan></text> + transform="translate(0,80)" + inkscape:label="HMI:Display@size"> + style="font-style:normal;font-weight:normal;font-size:45.74443054px;line-height:125%;font-family:sans-serif;text-align:end;letter-spacing:0px;word-spacing:0px;text-anchor:end;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.28590268px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + inkscape:label="format"><tspan + style="text-align:end;text-anchor:end;fill:#000000;fill-opacity:1;stroke-width:0.28590268px">size: %d</tspan></text> + inkscape:label="HMI:Display@range" + transform="translate(0,160)"> + inkscape:label="format" + style="font-style:normal;font-weight:normal;font-size:45.74443054px;line-height:125%;font-family:sans-serif;text-align:end;letter-spacing:0px;word-spacing:0px;text-anchor:end;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.28590268px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + xml:space="preserve"><tspan + style="text-align:end;text-anchor:end;fill:#000000;fill-opacity:1;stroke-width:0.28590268px" + sodipodi:role="line">range: %d</tspan></text> + transform="translate(0,240)" + inkscape:label="HMI:Display@page_node"> + style="font-style:normal;font-weight:normal;font-size:45.74443054px;line-height:125%;font-family:sans-serif;text-align:end;letter-spacing:0px;word-spacing:0px;text-anchor:end;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.28590268px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + inkscape:label="format"><tspan + style="text-align:end;text-anchor:end;fill:#000000;fill-opacity:1;stroke-width:0.28590268px">page_node: %s</tspan></text> + inkscape:label="HMI:ScrollBar@range@position@size" + transform="matrix(0,-2.3538121,2.3538121,0,-2719.3651,1633.2001)"> + sodipodi:nodetypes="cccc" + inkscape:connector-curvature="0" + d="m -234.01097,332.3551 21.18736,28.36866 h -42.37471 z" + style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#ffa32a;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.42391574px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" + inkscape:label="pageup" /> + style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#ffa32a;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.4007318px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" + d="m -234.01097,1077.5833 21.18736,-27.4524 h -42.37471 z" + inkscape:connector-curvature="0" + sodipodi:nodetypes="cccc" + inkscape:label="pagedown" /> + style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:0.30952382;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#727272;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2.03627348px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" + inkscape:label="range" /> + style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#ffa32a;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.11429262px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" + inkscape:label="cursor" /> + style="font-style:normal;font-weight:normal;font-size:40px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none" + y="1786.2694">String IN</tspan></text> + style="font-style:normal;font-weight:normal;font-size:40px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none" + xml:space="preserve"><tspan + sodipodi:role="line">String OUT</tspan></text> + inkscape:label="HMI:Page:Home" + transform="translate(2020)" /> + style="font-style:normal;font-weight:normal;font-size:74.66666412px;line-height:1.25;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none" + y="130.39062">ForEach widget example</tspan></text> + style="font-style:normal;font-weight:normal;font-size:40px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none" + y="479.20618">TODO: Readme</tspan></text> + inkscape:label="HMI:Page:ForEach2@/PUMP0" + transform="translate(2020,1220)" + transform="matrix(0.5,0,0,0.5,603.1965,1789.2488)" + inkscape:label="HMI:Input@/PUMP0/STRIN" + style="stroke-width:2"> + style="font-style:normal;font-weight:normal;font-size:160px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:2px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + xml:space="preserve"><tspan + style="fill:#000000;stroke-width:2px" + sodipodi:role="line">8888</tspan></text> + style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:0;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#ff00ff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:10;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" + inkscape:label="edit" /> + transform="translate(-412.63122,172.413)" + inkscape:label="+"dhu"" + style="stroke-width:2"> + style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#e6e6e6;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:10;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" + inkscape:transform-center-y="-14.956361" + d="m 792.86468,143.60768 -80.62929,0.60214 -0.60215,-80.629285 80.6293,-0.60214 z" + inkscape:connector-curvature="0" /> + style="font-style:normal;font-weight:normal;font-size:20px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + style="stroke-width:1px">dhu</tspan></text> + transform="translate(5.9838208)" + inkscape:label="="plop"" + inkscape:connector-curvature="0" + d="m 279.14413,316.02068 -80.6292,0.60214 -0.6022,-80.62929 80.6293,-0.60214 z" + inkscape:transform-center-y="-14.956361" + style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#e6e6e6;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:10;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" /> + style="font-style:normal;font-weight:normal;font-size:20px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + xml:space="preserve"><tspan + style="stroke-width:1px" + sodipodi:role="line">plop</tspan></text> + transform="translate(6.203125e-5,1.93848)" + inkscape:label="="mhoo"" + inkscape:connector-curvature="0" + d="m 190.02242,314.0822 -80.6292,0.60214 -0.6022,-80.62929 80.6293,-0.60214 z" + inkscape:transform-center-y="-14.956361" + style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#e6e6e6;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:10;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" /> + style="font-style:normal;font-weight:normal;font-size:20px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + style="stroke-width:1px">mhoo</tspan></text> + transform="translate(3.6703125e-4)" + inkscape:label="="yodl"" + inkscape:connector-curvature="0" + d="m 570.44399,316.02068 -80.6292,0.60214 -0.6022,-80.62929 80.6293,-0.60214 z" + inkscape:transform-center-y="-14.956361" + style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#e6e6e6;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:10;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" /> + style="font-style:normal;font-weight:normal;font-size:20px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + style="stroke-width:1px">yodl</tspan></text> + transform="translate(-14.078982,1.93848)" + inkscape:label="="mhe"" + inkscape:connector-curvature="0" + d="m 489.41787,314.0822 -80.6292,0.60214 -0.6022,-80.62929 80.6293,-0.60214 z" + inkscape:transform-center-y="-14.956361" + style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#e6e6e6;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:10;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" /> + style="font-style:normal;font-weight:normal;font-size:20px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + xml:space="preserve"><tspan + style="stroke-width:1px" + sodipodi:role="line">mhe</tspan></text> + style="font-style:normal;font-weight:normal;font-size:80px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.5px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + inkscape:label="HMI:Display@/PUMP0/STROUT"><tspan + style="fill:#000000;fill-opacity:1;stroke-width:0.5px">8888</tspan></text> + transform="translate(-1160.7865,1314.0878)" + inkscape:label="HMI:ForEach:PUMP@/@range@position@size" + transform="translate(32.987139)" + inkscape:label="PUMP:1" + inkscape:label="HMI:Display@/PUMP0/STROUT" + style="font-style:normal;font-weight:normal;font-size:53.33333206px;line-height:125%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.14054523px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + xml:space="preserve"><tspan + style="font-size:53.33333206px;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke-width:0.14054523px" + sodipodi:role="line">8888</tspan></text> + inkscape:label="HMI:Jump:ForEach2@en=/PUMP0#en" + transform="translate(601.4008,-504.68374)" + xlink:href="#g1458-8-1" + transform="translate(134.12728)" + inkscape:label="PUMP:2" + inkscape:label="HMI:Display@/PUMP1/STROUT" + style="font-style:normal;font-weight:normal;font-size:53.33333206px;line-height:125%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.14054523px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + xml:space="preserve"><tspan + style="font-size:53.33333206px;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke-width:0.14054523px" + sodipodi:role="line">8888</tspan></text> + xlink:href="#g1458-8-1" + transform="translate(761.4008,-504.68374)" + inkscape:label="HMI:Jump:ForEach2@en=/PUMP1#en" /> + transform="translate(235.26753)" + inkscape:label="PUMP:3" + inkscape:label="HMI:Display@/PUMP2/STROUT" + style="font-style:normal;font-weight:normal;font-size:53.33333206px;line-height:125%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.14054523px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + xml:space="preserve"><tspan + style="font-size:53.33333206px;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke-width:0.14054523px" + sodipodi:role="line">8888</tspan></text> + inkscape:label="HMI:Jump:ForEach2@en=/PUMP2#en" + transform="translate(921.4008,-504.68374)" + xlink:href="#g1458-8-1" + transform="translate(336.40767)" + inkscape:label="PUMP:4" + inkscape:label="HMI:Display@/PUMP3/STROUT" + style="font-style:normal;font-weight:normal;font-size:53.33333206px;line-height:125%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.14054523px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + xml:space="preserve"><tspan + style="font-size:53.33333206px;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke-width:0.14054523px" + sodipodi:role="line">8888</tspan></text> + xlink:href="#g1458-8-1" + transform="translate(1081.4008,-504.68374)" + inkscape:label="HMI:Jump:ForEach2@en=/PUMP3#en" /> + transform="matrix(1.2451554,0,0,1.2451554,998.80041,-793.64078)" + inkscape:label="PUMP:+1"> + sodipodi:nodetypes="cccssc" + inkscape:connector-curvature="0" + d="m 1349.2185,612.41589 c 20.4882,0.19653 63.4534,40.65636 63.4534,40.65636 0,0 -39.5076,38.48741 -63.4534,38.48741 -12.4014,0 -22.3852,-9.35983 -22.3852,-20.98616 v -37.17144 c 0,-11.62634 9.9838,-20.98617 22.3852,-20.98617 z" + style="opacity:1;vector-effect:none;fill:#ffa32a;fill-opacity:1;stroke:#ffffff;stroke-width:4.81867552;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none" /> + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:32.12450409px;line-height:125%;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:center;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:0px;word-spacing:0px;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:middle;white-space:normal;shape-padding:0;opacity:1;vector-effect:none;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.80311257px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + xml:space="preserve"><tspan + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:32.12450409px;line-height:125%;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:center;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:0px;word-spacing:0px;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:middle;white-space:normal;shape-padding:0;vector-effect:none;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.80311257px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + sodipodi:role="line">+1</tspan></text> + inkscape:label="PUMP:-1" + transform="matrix(1.2451555,0,0,1.2451555,-172.31931,-793.64085)"> + sodipodi:nodetypes="cssccc" + inkscape:connector-curvature="0" + d="m 1393.4848,612.41589 c 12.4014,0 22.3852,9.35983 22.3852,20.98617 v 37.17144 c 0,11.62633 -9.9838,20.98616 -22.3852,20.98616 -20.4882,-0.19653 -63.4534,-40.65636 -63.4534,-40.65636 0,0 39.5076,-38.48741 63.4534,-38.48741 z" + style="opacity:1;vector-effect:none;fill:#ffa32a;fill-opacity:1;stroke:#ffffff;stroke-width:4.81867504;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none" /> + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:32.12450027px;line-height:125%;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:center;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:0px;word-spacing:0px;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:middle;white-space:normal;shape-padding:0;opacity:1;vector-effect:none;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.80311251px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:32.12450027px;line-height:125%;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:center;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:0px;word-spacing:0px;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:middle;white-space:normal;shape-padding:0;vector-effect:none;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.80311251px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1">-1</tspan></text> + transform="translate(-796.5788,1138.5199)" + inkscape:label="HMI:Display@position"> + style="font-style:normal;font-weight:normal;font-size:45.74443054px;line-height:125%;font-family:sans-serif;text-align:end;letter-spacing:0px;word-spacing:0px;text-anchor:end;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.28590268px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + inkscape:label="format"><tspan + style="text-align:end;text-anchor:end;fill:#000000;fill-opacity:1;stroke-width:0.28590268px">position: %d</tspan></text> + inkscape:label="HMI:Display@size" + transform="translate(0,80)"> + inkscape:label="format" + style="font-style:normal;font-weight:normal;font-size:45.74443054px;line-height:125%;font-family:sans-serif;text-align:end;letter-spacing:0px;word-spacing:0px;text-anchor:end;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.28590268px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + xml:space="preserve"><tspan + style="text-align:end;text-anchor:end;fill:#000000;fill-opacity:1;stroke-width:0.28590268px" + sodipodi:role="line">size: %d</tspan></text> + transform="translate(0,160)" + inkscape:label="HMI:Display@range"> + style="font-style:normal;font-weight:normal;font-size:45.74443054px;line-height:125%;font-family:sans-serif;text-align:end;letter-spacing:0px;word-spacing:0px;text-anchor:end;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.28590268px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + inkscape:label="format"><tspan + style="text-align:end;text-anchor:end;fill:#000000;fill-opacity:1;stroke-width:0.28590268px">range: %d</tspan></text> + inkscape:label="HMI:Display@page_node" + transform="translate(0,240)"> + inkscape:label="format" + style="font-style:normal;font-weight:normal;font-size:45.74443054px;line-height:125%;font-family:sans-serif;text-align:end;letter-spacing:0px;word-spacing:0px;text-anchor:end;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.28590268px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + xml:space="preserve"><tspan + style="text-align:end;text-anchor:end;fill:#000000;fill-opacity:1;stroke-width:0.28590268px" + sodipodi:role="line">page_node: %s</tspan></text> + transform="matrix(0,-2.3538121,2.3538121,0,-699.36504,1633.2001)" + inkscape:label="HMI:ScrollBar@range@position@size" + inkscape:label="pageup" + style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#ffa32a;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.42391574px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" + d="m -234.01097,332.3551 21.18736,28.36866 h -42.37471 z" + inkscape:connector-curvature="0" + sodipodi:nodetypes="cccc" /> + inkscape:label="pagedown" + sodipodi:nodetypes="cccc" + inkscape:connector-curvature="0" + d="m -234.01097,1077.5833 21.18736,-27.4524 h -42.37471 z" + style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#ffa32a;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.4007318px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" /> + style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:0.30952382;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#727272;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2.03627348px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" /> + inkscape:label="cursor" + style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#ffa32a;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.11429262px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" /> + style="font-style:normal;font-weight:normal;font-size:40px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none" + xml:space="preserve"><tspan + sodipodi:role="line">String IN</tspan></text> + style="font-style:normal;font-weight:normal;font-size:40px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none" + y="1786.2694">String OUT</tspan></text> + style="font-style:normal;font-weight:normal;font-size:74.66666412px;line-height:1.25;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none" + xml:space="preserve"><tspan + sodipodi:role="line">ForEach2</tspan></text> + style="font-style:normal;font-weight:normal;font-size:74.66666412px;line-height:1.25;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none" + y="1610.3906">ForEach1</tspan></text>