# HG changeset patch # User Edouard Tisserant <edouard@beremiz.fr> # Date 1728635655 -7200 # Node ID a3cf9f635952bdc3010f734ac79cfa432c62fff3 # Parent 92b3701fceed50fbffba2b408bed917cdf7fc512 SVGHMI: add ForEach widget example diff -r 92b3701fceed -r a3cf9f635952 exemples/svghmi_foreach/beremiz.xml --- /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"> + <TargetType/> + <Libraries Enable_SVGHMI_Library="true"/> +</BeremizRoot> diff -r 92b3701fceed -r a3cf9f635952 exemples/svghmi_foreach/plc.xml --- /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"> + <coordinateInfo> + <fbd> + <scaling x="5" y="5"/> + </fbd> + <ld> + <scaling x="0" y="0"/> + </ld> + <sfc> + <scaling x="0" y="0"/> + </sfc> + </coordinateInfo> + </contentHeader> + <types> + <dataTypes/> + <pous> + <pou name="MainStuff" pouType="program"> + <interface> + <localVars> + <variable name="Pump0"> + <type> + <derived name="PumpControl"/> + </type> + </variable> + <variable name="Pump1"> + <type> + <derived name="PumpControl"/> + </type> + </variable> + <variable name="Pump2"> + <type> + <derived name="PumpControl"/> + </type> + </variable> + <variable name="Pump3"> + <type> + <derived name="PumpControl"/> + </type> + </variable> + <variable name="Pump4"> + <type> + <derived name="PumpControl"/> + </type> + </variable> + <variable name="Pump5"> + <type> + <derived name="PumpControl"/> + </type> + </variable> + <variable name="Pump6"> + <type> + <derived name="PumpControl"/> + </type> + </variable> + <variable name="Pump7"> + <type> + <derived name="PumpControl"/> + </type> + </variable> + </localVars> + </interface> + <body> + <FBD> + <block localId="4" typeName="PumpControl" instanceName="Pump0" executionOrderId="0" height="60" width="127"> + <position x="595" y="50"/> + <inputVariables> + <variable formalParameter="Pump"> + <connectionPointIn> + <relPosition x="0" y="30"/> + </connectionPointIn> + </variable> + <variable formalParameter="strin"> + <connectionPointIn> + <relPosition x="0" y="50"/> + <connection refLocalId="12"> + <position x="595" y="100"/> + <position x="520" y="100"/> + </connection> + </connectionPointIn> + </variable> + </inputVariables> + <inOutVariables/> + <outputVariables/> + </block> + <block localId="1" typeName="PumpControl" instanceName="Pump1" executionOrderId="0" height="60" width="127"> + <position x="595" y="280"/> + <inputVariables> + <variable formalParameter="Pump"> + <connectionPointIn> + <relPosition x="0" y="30"/> + </connectionPointIn> + </variable> + <variable formalParameter="strin"> + <connectionPointIn> + <relPosition x="0" y="50"/> + <connection refLocalId="13"> + <position x="595" y="330"/> + <position x="525" y="330"/> + </connection> + </connectionPointIn> + </variable> + </inputVariables> + <inOutVariables/> + <outputVariables/> + </block> + <block localId="2" typeName="PumpControl" instanceName="Pump2" executionOrderId="0" height="60" width="127"> + <position x="595" y="160"/> + <inputVariables> + <variable formalParameter="Pump"> + <connectionPointIn> + <relPosition x="0" y="30"/> + </connectionPointIn> + </variable> + <variable formalParameter="strin"> + <connectionPointIn> + <relPosition x="0" y="50"/> + <connection refLocalId="5"> + <position x="595" y="210"/> + <position x="520" y="210"/> + </connection> + </connectionPointIn> + </variable> + </inputVariables> + <inOutVariables/> + <outputVariables/> + </block> + <block localId="3" typeName="PumpControl" instanceName="Pump3" executionOrderId="0" height="60" width="127"> + <position x="595" y="395"/> + <inputVariables> + <variable formalParameter="Pump"> + <connectionPointIn> + <relPosition x="0" y="30"/> + </connectionPointIn> + </variable> + <variable formalParameter="strin"> + <connectionPointIn> + <relPosition x="0" y="50"/> + <connection refLocalId="14"> + <position x="595" y="445"/> + <position x="525" y="445"/> + </connection> + </connectionPointIn> + </variable> + </inputVariables> + <inOutVariables/> + <outputVariables/> + </block> + <block localId="6" typeName="PumpControl" instanceName="Pump4" executionOrderId="0" height="60" width="127"> + <position x="595" y="515"/> + <inputVariables> + <variable formalParameter="Pump"> + <connectionPointIn> + <relPosition x="0" y="30"/> + </connectionPointIn> + </variable> + <variable formalParameter="strin"> + <connectionPointIn> + <relPosition x="0" y="50"/> + <connection refLocalId="15"> + <position x="595" y="565"/> + <position x="520" y="565"/> + </connection> + </connectionPointIn> + </variable> + </inputVariables> + <inOutVariables/> + <outputVariables/> + </block> + <block localId="7" typeName="PumpControl" instanceName="Pump5" executionOrderId="0" height="60" width="127"> + <position x="595" y="645"/> + <inputVariables> + <variable formalParameter="Pump"> + <connectionPointIn> + <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"/> + </connection> + </connectionPointIn> + </variable> + <variable formalParameter="strin"> + <connectionPointIn> + <relPosition x="0" y="50"/> + <connection refLocalId="16"> + <position x="595" y="695"/> + <position x="525" y="695"/> + </connection> + </connectionPointIn> + </variable> + </inputVariables> + <inOutVariables/> + <outputVariables/> + </block> + <block localId="8" typeName="PumpControl" instanceName="Pump6" executionOrderId="0" height="60" width="127"> + <position x="595" y="775"/> + <inputVariables> + <variable formalParameter="Pump"> + <connectionPointIn> + <relPosition x="0" y="30"/> + </connectionPointIn> + </variable> + <variable formalParameter="strin"> + <connectionPointIn> + <relPosition x="0" y="50"/> + <connection refLocalId="17"> + <position x="595" y="825"/> + <position x="530" y="825"/> + </connection> + </connectionPointIn> + </variable> + </inputVariables> + <inOutVariables/> + <outputVariables/> + </block> + <block localId="9" typeName="PumpControl" instanceName="Pump7" executionOrderId="0" height="60" width="127"> + <position x="595" y="895"/> + <inputVariables> + <variable formalParameter="Pump"> + <connectionPointIn> + <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"/> + </connection> + </connectionPointIn> + </variable> + <variable formalParameter="strin"> + <connectionPointIn> + <relPosition x="0" y="50"/> + <connection refLocalId="18"> + <position x="595" y="945"/> + <position x="530" y="945"/> + </connection> + </connectionPointIn> + </variable> + </inputVariables> + <inOutVariables/> + <outputVariables/> + </block> + <inVariable localId="10" executionOrderId="0" height="27" width="20" negated="false"> + <position x="540" y="890"/> + <connectionPointOut> + <relPosition x="20" y="15"/> + </connectionPointOut> + <expression>0</expression> + </inVariable> + <inVariable localId="11" executionOrderId="0" height="27" width="20" negated="false"> + <position x="550" y="650"/> + <connectionPointOut> + <relPosition x="20" y="15"/> + </connectionPointOut> + <expression>0</expression> + </inVariable> + <inVariable localId="12" executionOrderId="0" height="30" width="35" negated="false"> + <position x="485" y="85"/> + <connectionPointOut> + <relPosition x="35" y="15"/> + </connectionPointOut> + <expression>'1'</expression> + </inVariable> + <inVariable localId="5" executionOrderId="0" height="30" width="35" negated="false"> + <position x="485" y="195"/> + <connectionPointOut> + <relPosition x="35" y="15"/> + </connectionPointOut> + <expression>'B'</expression> + </inVariable> + <inVariable localId="13" executionOrderId="0" height="30" width="50" negated="false"> + <position x="490" y="315"/> + <connectionPointOut> + <relPosition x="50" y="15"/> + </connectionPointOut> + <expression>'red'</expression> + </inVariable> + <inVariable localId="14" executionOrderId="0" height="30" width="70" negated="false"> + <position x="490" y="430"/> + <connectionPointOut> + <relPosition x="70" y="15"/> + </connectionPointOut> + <expression>'three'</expression> + </inVariable> + <inVariable localId="15" executionOrderId="0" height="30" width="35" negated="false"> + <position x="485" y="550"/> + <connectionPointOut> + <relPosition x="35" y="15"/> + </connectionPointOut> + <expression>'4'</expression> + </inVariable> + <inVariable localId="16" executionOrderId="0" height="30" width="35" negated="false"> + <position x="490" y="680"/> + <connectionPointOut> + <relPosition x="35" y="15"/> + </connectionPointOut> + <expression>'5'</expression> + </inVariable> + <inVariable localId="17" executionOrderId="0" height="30" width="35" negated="false"> + <position x="495" y="810"/> + <connectionPointOut> + <relPosition x="35" y="15"/> + </connectionPointOut> + <expression>'6'</expression> + </inVariable> + <inVariable localId="18" executionOrderId="0" height="30" width="60" negated="false"> + <position x="495" y="930"/> + <connectionPointOut> + <relPosition x="60" y="15"/> + </connectionPointOut> + <expression>'last'</expression> + </inVariable> + </FBD> + </body> + </pou> + <pou name="PumpControl" pouType="functionBlock"> + <interface> + <inputVars> + <variable name="Pump"> + <type> + <derived name="HMI_NODE"/> + </type> + <initialValue> + <simpleValue value="1"/> + </initialValue> + </variable> + </inputVars> + <localVars> + <variable name="strout"> + <type> + <derived name="HMI_STRING"/> + </type> + </variable> + </localVars> + <inputVars> + <variable name="strin"> + <type> + <derived name="HMI_STRING"/> + </type> + <initialValue> + <simpleValue value="blup"/> + </initialValue> + </variable> + </inputVars> + </interface> + <body> + <FBD> + <block localId="10" typeName="CONCAT" executionOrderId="0" height="60" width="65"> + <position x="360" y="345"/> + <inputVariables> + <variable formalParameter="IN1"> + <connectionPointIn> + <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"/> + </connection> + </connectionPointIn> + </variable> + <variable formalParameter="IN2"> + <connectionPointIn> + <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"/> + </connection> + </connectionPointIn> + </variable> + </inputVariables> + <inOutVariables/> + <outputVariables> + <variable formalParameter="OUT"> + <connectionPointOut> + <relPosition x="65" y="30"/> + </connectionPointOut> + </variable> + </outputVariables> + </block> + <outVariable localId="11" executionOrderId="0" height="30" width="58" negated="false"> + <position x="495" y="355"/> + <connectionPointIn> + <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"/> + </connection> + </connectionPointIn> + <expression>strout</expression> + </outVariable> + <inVariable localId="14" executionOrderId="0" height="30" width="50" negated="false"> + <position x="210" y="390"/> + <connectionPointOut> + <relPosition x="50" y="15"/> + </connectionPointOut> + <expression>strin</expression> + </inVariable> + <inVariable localId="1" executionOrderId="0" height="30" width="75" negated="false"> + <position x="210" y="355"/> + <connectionPointOut> + <relPosition x="75" y="15"/> + </connectionPointOut> + <expression>'Pump '</expression> + </inVariable> + </FBD> + </body> + </pou> + </pous> + </types> + <instances> + <configurations> + <configuration name="config"> + <resource name="resource1"> + <task name="task0" priority="0" interval="T#20ms"> + <pouInstance name="instance0" typeName="MainStuff"/> + </task> + </resource> + </configuration> + </configurations> + </instances> +</project> diff -r 92b3701fceed -r a3cf9f635952 exemples/svghmi_foreach/py_ext_0@py_ext/baseconfnode.xml --- /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"/> diff -r 92b3701fceed -r a3cf9f635952 exemples/svghmi_foreach/py_ext_0@py_ext/pyfile.xml --- /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"> + <variables> + <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'"/> + </variables> + <globals> + <xhtml:p><![CDATA[ +from twisted.web.resource import Resource +import json, time, random, collections + +Alarms = [] +AlarmIndex = {} +lastid = 0 + +def TriggerAlarm(changed_var_name): + global Alarms, lastid + new_entry = [time.time(), PLCGlobals.AlarmText, PLCGlobals.AlarmStatus, lastid] + Alarms.append(new_entry) + AlarmIndex[lastid] = new_entry + lastid = lastid + 1 + PLCGlobals.AlarmNotify = random.randint(0, 4294967296) + +class AlarmJsonResource(Resource): + def render_GET(self, request): + return '' + + 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 len(options) == 1 : + action, = options + if action == "action_reset": + del Alarms[:] + AlarmIndex.clear() + 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) + return janswer + + 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] + else: + fAlarms = Alarms[:] + fAlarms.reverse() + 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 + + visible_alarms = [] + 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 + "status": status, + "alarmid": alarmid + }) + + return new_range, new_position, visible_alarms + + +]]></xhtml:p> + </globals> + <init> + <xhtml:p><![CDATA[ +]]></xhtml:p> + </init> + <cleanup> + <xhtml:p><![CDATA[ +]]></xhtml:p> + </cleanup> + <start> + <xhtml:p><![CDATA[ + +AddPathToSVGHMIServers("alarms", AlarmJsonResource) + + +]]></xhtml:p> + </start> + <stop> + <xhtml:p><![CDATA[ +]]></xhtml:p> + </stop> +</PyFile> diff -r 92b3701fceed -r a3cf9f635952 exemples/svghmi_foreach/svghmi_0@svghmi/baseconfnode.xml --- /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"/> diff -r 92b3701fceed -r a3cf9f635952 exemples/svghmi_foreach/svghmi_0@svghmi/confnode.xml --- /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=""/> diff -r 92b3701fceed -r a3cf9f635952 exemples/svghmi_foreach/svghmi_0@svghmi/svghmi.svg --- /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/) --> + +<svg + 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" + id="hmi0" + version="1.1" + viewBox="0 0 1920 1080" + height="1080" + width="1920"> + <metadata + id="metadata4542"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title /> + </cc:Work> + </rdf:RDF> + </metadata> + <defs + id="defs2" /> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0" + inkscape:pageshadow="2" + inkscape:document-units="px" + inkscape:current-layer="hmi0" + showgrid="false" + units="px" + inkscape:zoom="0.20046202" + inkscape:cx="-334.3572" + inkscape:cy="-700.15882" + inkscape:window-width="1850" + inkscape:window-height="1016" + inkscape:window-x="70" + inkscape:window-y="27" + inkscape:window-maximized="1" + showguides="true" + inkscape:guide-bbox="true" + inkscape:snap-global="true" + inkscape:snap-bbox="true" + inkscape:bbox-nodes="true" + fit-margin-top="0" + fit-margin-left="0" + fit-margin-right="0" + fit-margin-bottom="0" /> + <use + x="0" + y="0" + xlink:href="#g7994" + id="use7996" + transform="translate(0,1220)" + width="100%" + height="100%" + inkscape:label="HMI:Page:ForEach1@/PUMP0" /> + <g + style="stroke-width:2" + inkscape:label="HMI:Input@/PUMP0/STRIN" + id="g1442" + transform="matrix(0.5,0,0,0.5,-1416.8035,1789.2488)"> + <text + xml:space="preserve" + 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" + x="136.32812" + y="218.24219" + id="text1398" + inkscape:label="value"><tspan + sodipodi:role="line" + id="tspan1396" + x="136.32812" + y="218.24219" + style="fill:#000000;stroke-width:2px">8888</tspan></text> + <rect + inkscape:label="edit" + onclick="" + y="95.40741" + x="139.85185" + height="128" + width="407.7037" + id="rect1400" + 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" /> + <g + style="stroke-width:2" + id="g1408" + inkscape:label="+"dhu"" + transform="translate(-412.63122,172.413)"> + <path + inkscape:connector-curvature="0" + id="path1402" + 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" /> + <text + id="text1406" + y="111.05016" + x="733.58197" + 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" + y="111.05016" + x="733.58197" + id="tspan1404" + sodipodi:role="line">dhu</tspan></text> + </g> + <g + id="g18075" + inkscape:label="="plop"" + transform="translate(5.9838208)"> + <path + 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" + id="path1402-7" + inkscape:connector-curvature="0" /> + <text + xml:space="preserve" + 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" + x="216.5753" + y="281.52469" + id="text1414"><tspan + sodipodi:role="line" + id="tspan1412" + x="216.5753" + y="281.52469" + style="stroke-width:1px">plop</tspan></text> + </g> + <g + id="g18068" + inkscape:label="="mhoo"" + transform="translate(6.203125e-5,1.93848)"> + <path + 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" + id="path1402-6" + inkscape:connector-curvature="0" /> + <text + id="text1422" + y="281.52469" + x="120.72997" + 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" + y="281.52469" + x="120.72997" + id="tspan1420" + sodipodi:role="line">mhoo</tspan></text> + </g> + <g + id="g18061" + inkscape:label="="yodl"" + transform="translate(3.6703125e-4)"> + <path + 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" + id="path1402-69" + inkscape:connector-curvature="0" /> + <text + id="text1430" + y="281.52469" + x="509.30582" + 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" + y="281.52469" + x="509.30582" + id="tspan1428" + sodipodi:role="line">yodl</tspan></text> + </g> + <g + id="g18054" + inkscape:label="="mhe"" + transform="translate(-14.078982,1.93848)"> + <path + 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" + id="path1402-5" + inkscape:connector-curvature="0" /> + <text + xml:space="preserve" + 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" + x="426.19473" + y="281.52469" + id="text1438"><tspan + sodipodi:role="line" + id="tspan1436" + x="426.19473" + y="281.52469" + style="stroke-width:1px">mhe</tspan></text> + </g> + </g> + <text + inkscape:label="HMI:Display@/PUMP0/STROUT" + id="text1446" + y="1896.3275" + x="-1035.5979" + 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" + y="1896.3275" + x="-1035.5979" + id="tspan1444" + sodipodi:role="line">8888</tspan></text> + <g + id="g6077" + inkscape:label="HMI:ForEach:PUMP@/@range@position@size" + transform="translate(-3180.7865,1314.0878)"> + <g + id="g6130" + inkscape:label="PUMP:1" + transform="translate(32.987139)"> + <g + id="g14798"> + <text + inkscape:label="HMI:Display@/PUMP0/STROUT" + id="text1517-8" + y="118.34158" + x="1693.7719" + 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" + y="118.34158" + x="1693.7719" + id="tspan1515-5" + sodipodi:role="line">8888</tspan></text> + </g> + <use + x="0" + y="0" + xlink:href="#g1458-8-1" + id="use14195" + width="100%" + height="100%" + transform="translate(601.4008,-504.68374)" + inkscape:label="HMI:Jump:ForEach1@en=/PUMP0#en" /> + </g> + <g + id="g6122" + inkscape:label="PUMP:2" + transform="translate(134.12728)"> + <text + xml:space="preserve" + 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" + x="1853.9779" + y="118.34158" + id="text1517-8-5" + inkscape:label="HMI:Display@/PUMP1/STROUT"><tspan + sodipodi:role="line" + id="tspan1515-5-3" + x="1853.9779" + y="118.34158" + style="font-size:53.33333206px;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke-width:0.14054523px">8888</tspan></text> + <use + inkscape:label="HMI:Jump:ForEach1@en=/PUMP1#en" + transform="translate(761.4008,-504.68374)" + height="100%" + width="100%" + id="use14212" + xlink:href="#g1458-8-1" + y="0" + x="0" /> + </g> + <g + id="g6113" + inkscape:label="PUMP:3" + transform="translate(235.26753)"> + <text + xml:space="preserve" + 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" + x="2014.1837" + y="118.34158" + id="text1517-8-8" + inkscape:label="HMI:Display@/PUMP2/STROUT"><tspan + sodipodi:role="line" + id="tspan1515-5-8" + x="2014.1837" + y="118.34158" + style="font-size:53.33333206px;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke-width:0.14054523px">8888</tspan></text> + <use + x="0" + y="0" + xlink:href="#g1458-8-1" + id="use14218" + width="100%" + height="100%" + transform="translate(921.4008,-504.68374)" + inkscape:label="HMI:Jump:ForEach1@en=/PUMP2#en" /> + </g> + <g + id="g6104" + inkscape:label="PUMP:4" + transform="translate(336.40767)"> + <text + xml:space="preserve" + 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" + x="2174.3894" + y="118.34158" + id="text1517-8-3" + inkscape:label="HMI:Display@/PUMP3/STROUT"><tspan + sodipodi:role="line" + id="tspan1515-5-1" + x="2174.3894" + y="118.34158" + style="font-size:53.33333206px;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke-width:0.14054523px">8888</tspan></text> + <use + inkscape:label="HMI:Jump:ForEach1@en=/PUMP3#en" + transform="translate(1081.4008,-504.68374)" + height="100%" + width="100%" + id="use14221" + xlink:href="#g1458-8-1" + y="0" + x="0" /> + </g> + <g + inkscape:label="PUMP:+1" + id="g6241" + transform="matrix(1.2451554,0,0,1.2451554,998.80041,-793.64078)"> + <path + 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" + id="rect6235" + inkscape:connector-curvature="0" + sodipodi:nodetypes="cccssc" /> + <text + xml:space="preserve" + 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" + x="1369.9803" + y="663.6972" + id="text6239"><tspan + sodipodi:role="line" + id="tspan6237" + x="1369.9803" + y="663.6972" + 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> + </g> + <g + transform="matrix(1.2451555,0,0,1.2451555,-172.31931,-793.64085)" + id="g6209" + inkscape:label="PUMP:-1"> + <path + 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" + id="rect6200" + inkscape:connector-curvature="0" + sodipodi:nodetypes="cssccc" /> + <text + id="text6204" + y="663.6972" + x="1373.2013" + 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" + y="663.6972" + x="1373.2013" + id="tspan6202" + sodipodi:role="line">-1</tspan></text> + </g> + </g> + <g + inkscape:label="HMI:VarInit:50@position" + id="g906" + transform="translate(-3500,1580)" /> + <g + id="g908" + inkscape:label="HMI:VarInit:100@range" + transform="translate(-3500,1580)" /> + <g + inkscape:label="HMI:VarInit:7@size" + id="g906-3" + transform="translate(-3500,1580)" /> + <g + id="g14361" + inkscape:label="JumpButtonTemplate" + transform="translate(-3500,1580)"> + <g + inkscape:label="disabled_template" + id="g1450-4-8" + style="display:inline" + transform="translate(0,-559.63103)"> + <rect + inkscape:label="button" + ry="35.579063" + y="594.82263" + x="971.96545" + height="95.723877" + width="245.44583" + id="rect1448-8-79" + 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" /> + <text + xml:space="preserve" + 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" + x="1093.7899" + y="657.59668" + id="text1454-0-7-20"><tspan + sodipodi:role="line" + x="1093.7899" + y="657.59668" + style="text-align:center;text-anchor:middle;fill:#434343;fill-opacity:1;stroke-width:0.99999994px" + id="tspan1460-3-5-2">Disabled</tspan></text> + </g> + <g + inkscape:label="active_template" + id="g1071-2" + style="display:inline" + transform="translate(0,-279.81551)"> + <rect + inkscape:label="button" + ry="35.579063" + y="594.82263" + x="971.96545" + height="95.723877" + width="245.44583" + id="rect1069-8" + 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" /> + <text + xml:space="preserve" + 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" + x="1095.5966" + y="657.59668" + id="text1454-0-3-97"><tspan + sodipodi:role="line" + x="1095.5966" + y="657.59668" + 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> + </g> + <g + id="g1067-3" + inkscape:label="inactive_template" + style="display:inline" + transform="translate(0,-419.72327)"> + <rect + 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" + id="rect1065-7" + width="245.44583" + height="95.723877" + x="971.96545" + y="594.82263" + ry="35.579063" + inkscape:label="button" /> + <text + xml:space="preserve" + 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" + x="1093.7899" + y="657.59668" + id="text1454-0-5"><tspan + sodipodi:role="line" + x="1093.7899" + y="657.59668" + style="text-align:center;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke-width:0.99999994px" + id="tspan1460-3-92">Inactive</tspan></text> + </g> + <g + id="g1458-8-1" + inkscape:label="group_to_clone" + transform="translate(0,160)"> + <use + transform="translate(0,279.81551)" + height="100%" + width="100%" + id="use14331" + xlink:href="#g1450-4-8" + y="0" + x="0" + inkscape:label="disabled" /> + <use + transform="translate(0,139.90775)" + height="100%" + width="100%" + id="use14333" + xlink:href="#g1067-3" + y="0" + x="0" + inkscape:label="inactive" /> + <use + height="100%" + width="100%" + id="use14335" + xlink:href="#g1071-2" + y="0" + x="0" + inkscape:label="active" /> + </g> + </g> + <g + id="g7994" + inkscape:label="Gray Page Template" + transform="translate(-2020,1160)"> + <rect + y="-1160" + x="0" + height="1080" + width="1920" + id="rect4270" + 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" /> + <g + transform="translate(1356.9194,-759.99998)" + inkscape:label="HMI:Jump:Home" + id="g2455"> + <rect + 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" + id="use2435" + width="280" + height="81.859505" + x="-1305.9194" + y="17.836519" + ry="21.355932" + rx="21.355932" + inkscape:label="active_template" /> + <rect + inkscape:label="inactive_template" + rx="21.355932" + ry="21.355932" + y="17.836519" + x="-1305.9194" + height="81.859505" + width="280" + id="use2437" + 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" /> + <text + id="text855-7-1" + y="70.251053" + x="-1166.8177" + 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 + id="tspan66-3" + y="70.251053" + x="-1166.8177" + sodipodi:role="line">Home</tspan></text> + </g> + <g + inkscape:label="HMI:Jump:ForEach1@/PUMP0" + id="g2461" + transform="translate(1356.9194,-739.99998)"> + <rect + 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" + id="use2439" + width="280" + height="81.859505" + x="-1305.9194" + y="117.83652" + ry="21.355932" + rx="21.355932" + inkscape:label="active_template" /> + <rect + inkscape:label="inactive_template" + rx="21.355932" + ry="21.355932" + y="117.83652" + x="-1305.9194" + height="81.859505" + width="280" + id="use2441" + 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" /> + <text + xml:space="preserve" + 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" + x="-1165.1674" + y="170.25105" + id="text2349"><tspan + sodipodi:role="line" + x="-1165.1674" + y="170.25105" + id="tspan2347">ForEach 1</tspan></text> + </g> + <g + inkscape:label="HMI:Jump:ForEach2@/PUMP0" + id="g2467" + transform="translate(1356.9194,-719.99998)"> + <rect + 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" + id="use2443" + width="280" + height="81.859505" + x="-1305.9194" + y="217.83652" + ry="21.355932" + rx="21.355932" + inkscape:label="active_template" /> + <rect + inkscape:label="inactive_template" + rx="21.355932" + ry="21.355932" + y="217.83652" + x="-1305.9194" + height="81.859505" + width="280" + id="use2445" + 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" /> + <text + id="text2357" + y="270.25104" + x="-1165.7826" + 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 + id="tspan2355" + y="270.25104" + x="-1165.7826" + sodipodi:role="line">ForEach 2</tspan></text> + </g> + </g> + <g + id="g17978" + transform="translate(-2816.5788,1138.5199)"> + <g + inkscape:label="HMI:Display@position" + id="g14814"> + <text + inkscape:label="format" + id="text1457-1" + y="355.6521" + x="2608.2524" + 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" + y="355.6521" + x="2608.2524" + id="tspan1455-2" + sodipodi:role="line">position: %d</tspan></text> + </g> + <g + transform="translate(0,80)" + id="g14820" + inkscape:label="HMI:Display@size"> + <text + xml:space="preserve" + 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" + x="2608.2524" + y="355.6521" + id="text14818" + inkscape:label="format"><tspan + sodipodi:role="line" + id="tspan14816" + x="2608.2524" + y="355.6521" + style="text-align:end;text-anchor:end;fill:#000000;fill-opacity:1;stroke-width:0.28590268px">size: %d</tspan></text> + </g> + <g + inkscape:label="HMI:Display@range" + id="g14826" + transform="translate(0,160)"> + <text + inkscape:label="format" + id="text14824" + y="355.6521" + x="2608.2524" + 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" + y="355.6521" + x="2608.2524" + id="tspan14822" + sodipodi:role="line">range: %d</tspan></text> + </g> + <g + transform="translate(0,240)" + id="g17994" + inkscape:label="HMI:Display@page_node"> + <text + xml:space="preserve" + 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" + x="2608.2524" + y="355.6521" + id="text17992" + inkscape:label="format"><tspan + sodipodi:role="line" + id="tspan17990" + x="2608.2524" + y="355.6521" + style="text-align:end;text-anchor:end;fill:#000000;fill-opacity:1;stroke-width:0.28590268px">page_node: %s</tspan></text> + </g> + </g> + <g + id="g1766" + inkscape:label="HMI:ScrollBar@range@position@size" + transform="matrix(0,-2.3538121,2.3538121,0,-2719.3651,1633.2001)"> + <path + sodipodi:nodetypes="cccc" + inkscape:connector-curvature="0" + id="path1266" + 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" /> + <path + 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" + id="path1268" + inkscape:connector-curvature="0" + sodipodi:nodetypes="cccc" + inkscape:label="pagedown" /> + <rect + 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" + id="rect1264-3" + width="42.374725" + height="665.53912" + x="-255.19838" + y="372.65775" + rx="7.6034913" + ry="6.8822322" + inkscape:label="range" /> + <rect + 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" + id="rect1264" + width="42.374725" + height="82.841492" + x="-255.19838" + y="405.8981" + rx="7.6034913" + ry="7" + inkscape:label="cursor" /> + </g> + <text + xml:space="preserve" + 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" + x="-1333.2544" + y="1786.2694" + id="text18322"><tspan + sodipodi:role="line" + id="tspan18320" + x="-1333.2544" + y="1786.2694">String IN</tspan></text> + <text + id="text18326" + y="1786.2694" + x="-1043.8401" + 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 + y="1786.2694" + x="-1043.8401" + id="tspan18324" + sodipodi:role="line">String OUT</tspan></text> + <use + inkscape:label="HMI:Page:Home" + height="100%" + width="100%" + id="use18328" + xlink:href="#g7994" + y="0" + x="0" + transform="translate(2020)" /> + <text + xml:space="preserve" + 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" + x="957.42969" + y="130.39062" + id="text18332"><tspan + sodipodi:role="line" + id="tspan18330" + x="957.42969" + y="130.39062">ForEach widget example</tspan></text> + <text + xml:space="preserve" + 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" + x="570.59668" + y="479.20618" + id="text18336"><tspan + sodipodi:role="line" + id="tspan18334" + x="570.59668" + y="479.20618">TODO: Readme</tspan></text> + <use + inkscape:label="HMI:Page:ForEach2@/PUMP0" + height="100%" + width="100%" + transform="translate(2020,1220)" + id="use18338" + xlink:href="#g7994" + y="0" + x="0" /> + <g + transform="matrix(0.5,0,0,0.5,603.1965,1789.2488)" + id="g18386" + inkscape:label="HMI:Input@/PUMP0/STRIN" + style="stroke-width:2"> + <text + inkscape:label="value" + id="text18342" + y="218.24219" + x="136.32812" + 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" + y="218.24219" + x="136.32812" + id="tspan18340" + sodipodi:role="line">8888</tspan></text> + <rect + 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" + id="rect18344" + width="407.7037" + height="128" + x="139.85185" + y="95.40741" + onclick="" + inkscape:label="edit" /> + <g + transform="translate(-412.63122,172.413)" + inkscape:label="+"dhu"" + id="g18352" + style="stroke-width:2"> + <path + 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" + id="path18346" + inkscape:connector-curvature="0" /> + <text + xml:space="preserve" + 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" + x="733.58197" + y="111.05016" + id="text18350"><tspan + sodipodi:role="line" + id="tspan18348" + x="733.58197" + y="111.05016" + style="stroke-width:1px">dhu</tspan></text> + </g> + <g + transform="translate(5.9838208)" + inkscape:label="="plop"" + id="g18360"> + <path + inkscape:connector-curvature="0" + id="path18354" + 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" /> + <text + id="text18358" + y="281.52469" + x="216.5753" + 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" + y="281.52469" + x="216.5753" + id="tspan18356" + sodipodi:role="line">plop</tspan></text> + </g> + <g + transform="translate(6.203125e-5,1.93848)" + inkscape:label="="mhoo"" + id="g18368"> + <path + inkscape:connector-curvature="0" + id="path18362" + 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" /> + <text + xml:space="preserve" + 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" + x="120.72997" + y="281.52469" + id="text18366"><tspan + sodipodi:role="line" + id="tspan18364" + x="120.72997" + y="281.52469" + style="stroke-width:1px">mhoo</tspan></text> + </g> + <g + transform="translate(3.6703125e-4)" + inkscape:label="="yodl"" + id="g18376"> + <path + inkscape:connector-curvature="0" + id="path18370" + 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" /> + <text + xml:space="preserve" + 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" + x="509.30582" + y="281.52469" + id="text18374"><tspan + sodipodi:role="line" + id="tspan18372" + x="509.30582" + y="281.52469" + style="stroke-width:1px">yodl</tspan></text> + </g> + <g + transform="translate(-14.078982,1.93848)" + inkscape:label="="mhe"" + id="g18384"> + <path + inkscape:connector-curvature="0" + id="path18378" + 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" /> + <text + id="text18382" + y="281.52469" + x="426.19473" + 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" + y="281.52469" + x="426.19473" + id="tspan18380" + sodipodi:role="line">mhe</tspan></text> + </g> + </g> + <text + xml:space="preserve" + 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" + x="984.40234" + y="1896.3275" + id="text18390" + inkscape:label="HMI:Display@/PUMP0/STROUT"><tspan + sodipodi:role="line" + id="tspan18388" + x="984.40234" + y="1896.3275" + style="fill:#000000;fill-opacity:1;stroke-width:0.5px">8888</tspan></text> + <g + transform="translate(-1160.7865,1314.0878)" + inkscape:label="HMI:ForEach:PUMP@/@range@position@size" + id="g18442"> + <g + transform="translate(32.987139)" + inkscape:label="PUMP:1" + id="g18400"> + <text + inkscape:label="HMI:Display@/PUMP0/STROUT" + id="text18394" + y="118.34158" + x="1693.7719" + 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" + y="118.34158" + x="1693.7719" + id="tspan18392" + sodipodi:role="line">8888</tspan></text> + <use + inkscape:label="HMI:Jump:ForEach2@en=/PUMP0#en" + transform="translate(601.4008,-504.68374)" + height="100%" + width="100%" + id="use18398" + xlink:href="#g1458-8-1" + y="0" + x="0" /> + </g> + <g + transform="translate(134.12728)" + inkscape:label="PUMP:2" + id="g18408"> + <text + inkscape:label="HMI:Display@/PUMP1/STROUT" + id="text18404" + y="118.34158" + x="1853.9779" + 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" + y="118.34158" + x="1853.9779" + id="tspan18402" + sodipodi:role="line">8888</tspan></text> + <use + x="0" + y="0" + xlink:href="#g1458-8-1" + id="use18406" + width="100%" + height="100%" + transform="translate(761.4008,-504.68374)" + inkscape:label="HMI:Jump:ForEach2@en=/PUMP1#en" /> + </g> + <g + transform="translate(235.26753)" + inkscape:label="PUMP:3" + id="g18416"> + <text + inkscape:label="HMI:Display@/PUMP2/STROUT" + id="text18412" + y="118.34158" + x="2014.1837" + 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" + y="118.34158" + x="2014.1837" + id="tspan18410" + sodipodi:role="line">8888</tspan></text> + <use + inkscape:label="HMI:Jump:ForEach2@en=/PUMP2#en" + transform="translate(921.4008,-504.68374)" + height="100%" + width="100%" + id="use18414" + xlink:href="#g1458-8-1" + y="0" + x="0" /> + </g> + <g + transform="translate(336.40767)" + inkscape:label="PUMP:4" + id="g18424"> + <text + inkscape:label="HMI:Display@/PUMP3/STROUT" + id="text18420" + y="118.34158" + x="2174.3894" + 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" + y="118.34158" + x="2174.3894" + id="tspan18418" + sodipodi:role="line">8888</tspan></text> + <use + x="0" + y="0" + xlink:href="#g1458-8-1" + id="use18422" + width="100%" + height="100%" + transform="translate(1081.4008,-504.68374)" + inkscape:label="HMI:Jump:ForEach2@en=/PUMP3#en" /> + </g> + <g + transform="matrix(1.2451554,0,0,1.2451554,998.80041,-793.64078)" + id="g18432" + inkscape:label="PUMP:+1"> + <path + sodipodi:nodetypes="cccssc" + inkscape:connector-curvature="0" + id="path18426" + 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" /> + <text + id="text18430" + y="663.6972" + x="1369.9803" + 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" + y="663.6972" + x="1369.9803" + id="tspan18428" + sodipodi:role="line">+1</tspan></text> + </g> + <g + inkscape:label="PUMP:-1" + id="g18440" + transform="matrix(1.2451555,0,0,1.2451555,-172.31931,-793.64085)"> + <path + sodipodi:nodetypes="cssccc" + inkscape:connector-curvature="0" + id="path18434" + 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" /> + <text + xml:space="preserve" + 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" + x="1373.2013" + y="663.6972" + id="text18438"><tspan + sodipodi:role="line" + id="tspan18436" + x="1373.2013" + y="663.6972" + 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> + </g> + </g> + <g + transform="translate(-796.5788,1138.5199)" + id="g18468"> + <g + id="g18448" + inkscape:label="HMI:Display@position"> + <text + xml:space="preserve" + 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" + x="2608.2524" + y="355.6521" + id="text18446" + inkscape:label="format"><tspan + sodipodi:role="line" + id="tspan18444" + x="2608.2524" + y="355.6521" + style="text-align:end;text-anchor:end;fill:#000000;fill-opacity:1;stroke-width:0.28590268px">position: %d</tspan></text> + </g> + <g + inkscape:label="HMI:Display@size" + id="g18454" + transform="translate(0,80)"> + <text + inkscape:label="format" + id="text18452" + y="355.6521" + x="2608.2524" + 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" + y="355.6521" + x="2608.2524" + id="tspan18450" + sodipodi:role="line">size: %d</tspan></text> + </g> + <g + transform="translate(0,160)" + id="g18460" + inkscape:label="HMI:Display@range"> + <text + xml:space="preserve" + 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" + x="2608.2524" + y="355.6521" + id="text18458" + inkscape:label="format"><tspan + sodipodi:role="line" + id="tspan18456" + x="2608.2524" + y="355.6521" + style="text-align:end;text-anchor:end;fill:#000000;fill-opacity:1;stroke-width:0.28590268px">range: %d</tspan></text> + </g> + <g + inkscape:label="HMI:Display@page_node" + id="g18466" + transform="translate(0,240)"> + <text + inkscape:label="format" + id="text18464" + y="355.6521" + x="2608.2524" + 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" + y="355.6521" + x="2608.2524" + id="tspan18462" + sodipodi:role="line">page_node: %s</tspan></text> + </g> + </g> + <g + transform="matrix(0,-2.3538121,2.3538121,0,-699.36504,1633.2001)" + inkscape:label="HMI:ScrollBar@range@position@size" + id="g18478"> + <path + 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" + id="path18470" + inkscape:connector-curvature="0" + sodipodi:nodetypes="cccc" /> + <path + inkscape:label="pagedown" + sodipodi:nodetypes="cccc" + inkscape:connector-curvature="0" + id="path18472" + 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" /> + <rect + inkscape:label="range" + ry="6.8822322" + rx="7.6034913" + y="372.65775" + x="-255.19838" + height="665.53912" + width="42.374725" + id="rect18474" + 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" /> + <rect + inkscape:label="cursor" + ry="7" + rx="7.6034913" + y="405.8981" + x="-255.19838" + height="82.841492" + width="42.374725" + id="rect18476" + 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" /> + </g> + <text + id="text18482" + y="1786.2694" + x="686.74561" + 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 + y="1786.2694" + x="686.74561" + id="tspan18480" + sodipodi:role="line">String IN</tspan></text> + <text + xml:space="preserve" + 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" + x="976.16016" + y="1786.2694" + id="text18486"><tspan + sodipodi:role="line" + id="tspan18484" + x="976.16016" + y="1786.2694">String OUT</tspan></text> + <text + id="text18737" + y="1610.3906" + x="957.42969" + 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 + y="1610.3906" + x="957.42969" + id="tspan18735" + sodipodi:role="line">ForEach2</tspan></text> + <text + xml:space="preserve" + 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" + x="-1062.5703" + y="1610.3906" + id="text18741"><tspan + sodipodi:role="line" + id="tspan18739" + x="-1062.5703" + y="1610.3906">ForEach1</tspan></text> +</svg>