beremiz

file isExecutable
Proper fix for error 'object has no attribute 'getSlave' in EtherCAT extension

traceback:
File "/home/developer/WorkData/PLC/beremiz/beremiz/IDEFrame.py", line 1433, in OnPouSelectedChanged
window.RefreshView()
File "/home/developer/WorkData/PLC/beremiz/beremiz/etherlab/ConfigEditor.py", line 837, in RefreshView
self.RefreshProcessVariables()
File "/home/developer/WorkData/PLC/beremiz/beremiz/etherlab/ConfigEditor.py", line 886, in RefreshProcessVariables
slaves = self.Controler.GetSlaves(**self.CurrentNodesFilter)
File "/home/developer/WorkData/PLC/beremiz/beremiz/etherlab/EthercatMaster.py", line 341, in GetSlaves
for slave in self.Config.getConfig().getSlave():
:_'lxml.etree._Element'_object_has_no_attribute_'getSlave'

Steps to reproduce problem:

- Add new EtherCAT master
- Add new EthercatNode to the master
- double click on


Revert commit "Dirty fix for error '_object_has_no_attribute_'getSlave' in EtherCAT extension"
[a3ac46366b86a0b237dac93be6b2281ac70b98a8].

The problem was that XML elements (proxy object) in some cases were created using custom XML
classes constructors and lxml.etree.Element() call and live python
patching. This causes that lxml backend doesn't know that custom python class
should be used for these XML elements.
Proxy object can be move/deleted and recreated by lxml
backend at any point in time or this can be done in python by copy/deepcopy operations.
If this happens, then newly created
proxy elements are using default class lxml.etree._Element. And all
custom functionality is lost.

All created XML elements should be always created through corresponding
parser and class lookup callback done by lxml backend.
It's described in more details in lxml documentation:
https://lxml.de/element_classes.html
<?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"
width="320"
height="250"
id="svg2"
sodipodi:version="0.32"
inkscape:version="0.47pre4 "
version="1.0"
sodipodi:docname="gui.svg"
inkscape:output_extension="org.inkscape.output.svg.inkscape">
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="1.4"
inkscape:cx="200.66323"
inkscape:cy="178.08292"
inkscape:document-units="px"
inkscape:current-layer="layer1"
showgrid="false"
inkscape:window-width="1071"
inkscape:window-height="805"
inkscape:window-x="106"
inkscape:window-y="16"
inkscape:window-maximized="0" />
<defs
id="defs4">
<linearGradient
id="linearGradient3770">
<stop
style="stop-color:#008000;stop-opacity:1;"
offset="0"
id="stop3772" />
<stop
style="stop-color:#00fb00;stop-opacity:1;"
offset="1"
id="stop3774" />
</linearGradient>
<linearGradient
id="linearGradient3708">
<stop
style="stop-color:#d40000;stop-opacity:1;"
offset="0"
id="stop3710" />
<stop
style="stop-color:#ff5c5c;stop-opacity:1;"
offset="1"
id="stop3712" />
</linearGradient>
<linearGradient
id="linearGradient4202">
<stop
id="stop4204"
offset="0"
style="stop-color:#f6edda;stop-opacity:1;" />
<stop
id="stop4206"
offset="1"
style="stop-color:#e6e6e6;stop-opacity:1;" />
</linearGradient>
<linearGradient
id="linearGradient4192">
<stop
style="stop-color:#faf4e9;stop-opacity:1;"
offset="0"
id="stop4194" />
<stop
style="stop-color:#f1f1f1;stop-opacity:1;"
offset="1"
id="stop4196" />
</linearGradient>
<linearGradient
id="linearGradient3302">
<stop
style="stop-color:#ff0000;stop-opacity:0;"
offset="0"
id="stop3304" />
<stop
id="stop3310"
offset="0.43817073"
style="stop-color:#ff0000;stop-opacity:0.49803922;" />
<stop
style="stop-color:#ff0000;stop-opacity:1;"
offset="0.68879533"
id="stop3312" />
<stop
style="stop-color:#ff0000;stop-opacity:0;"
offset="1"
id="stop3306" />
</linearGradient>
<linearGradient
id="linearGradient3687">
<stop
id="stop3689"
offset="0"
style="stop-color:#23d5ff;stop-opacity:1;" />
<stop
id="stop3691"
offset="1"
style="stop-color:#b1ffff;stop-opacity:1;" />
</linearGradient>
<linearGradient
id="linearGradient3679">
<stop
id="stop3681"
offset="0"
style="stop-color:#00b5ff;stop-opacity:1;" />
<stop
id="stop3683"
offset="1"
style="stop-color:#005bff;stop-opacity:1;" />
</linearGradient>
<linearGradient
id="linearGradient3659">
<stop
id="stop3661"
offset="0"
style="stop-color:#ff0030;stop-opacity:1;" />
<stop
style="stop-color:#e20000;stop-opacity:0.83211678;"
offset="0.60000002"
id="stop3669" />
<stop
id="stop3663"
offset="1"
style="stop-color:#ffffff;stop-opacity:0;" />
</linearGradient>
<linearGradient
id="linearGradient3639">
<stop
id="stop3641"
offset="0"
style="stop-color:#ffff00;stop-opacity:1;" />
<stop
style="stop-color:#8fff00;stop-opacity:0.49803922;"
offset="0.80000001"
id="stop3647" />
<stop
id="stop3643"
offset="1"
style="stop-color:#ffffff;stop-opacity:0;" />
</linearGradient>
<linearGradient
id="linearGradient3621">
<stop
id="stop3623"
offset="0"
style="stop-color:#ff8080;stop-opacity:1;" />
<stop
id="stop3625"
offset="1"
style="stop-color:#aa0000;stop-opacity:1;" />
</linearGradient>
<linearGradient
id="linearGradient3613"
inkscape:collect="always">
<stop
id="stop3615"
offset="0"
style="stop-color:#000000;stop-opacity:1;" />
<stop
id="stop3617"
offset="1"
style="stop-color:#000000;stop-opacity:0;" />
</linearGradient>
<linearGradient
id="linearGradient3497">
<stop
id="stop3499"
offset="0"
style="stop-color:#00cd00;stop-opacity:1;" />
<stop
id="stop3501"
offset="1"
style="stop-color:#007900;stop-opacity:1;" />
</linearGradient>
<linearGradient
id="linearGradient3453">
<stop
id="stop3455"
offset="0"
style="stop-color:#000000;stop-opacity:1;" />
<stop
id="stop3457"
offset="1"
style="stop-color:#ffffff;stop-opacity:0;" />
</linearGradient>
<linearGradient
id="linearGradient3173">
<stop
style="stop-color:#ffffff;stop-opacity:1;"
offset="0"
id="stop3175" />
<stop
id="stop3181"
offset="0.5"
style="stop-color:#ffffff;stop-opacity:0;" />
<stop
style="stop-color:#ff0000;stop-opacity:0;"
offset="1"
id="stop3177" />
</linearGradient>
<inkscape:perspective
sodipodi:type="inkscape:persp3d"
inkscape:vp_x="0 : 526.18109 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_z="744.09448 : 526.18109 : 1"
inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
id="perspective10" />
<inkscape:perspective
sodipodi:type="inkscape:persp3d"
inkscape:vp_x="0 : 526.18109 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_z="744.09448 : 526.18109 : 1"
inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
id="perspective2619" />
<linearGradient
gradientUnits="userSpaceOnUse"
y2="76.489952"
x2="96.68087"
y1="43.13879"
x1="96.68087"
id="linearGradient3503"
xlink:href="#linearGradient3497"
inkscape:collect="always" />
<linearGradient
gradientUnits="userSpaceOnUse"
y2="57.028084"
x2="146.58875"
y1="57.028084"
x1="56.098511"
id="linearGradient3619"
xlink:href="#linearGradient3613"
inkscape:collect="always" />
<linearGradient
gradientUnits="userSpaceOnUse"
y2="81.670944"
x2="102.30303"
y1="40.599514"
x1="101.45565"
id="linearGradient3627"
xlink:href="#linearGradient3621"
inkscape:collect="always" />
<linearGradient
gradientTransform="translate(-18,26)"
y2="81.670944"
x2="102.30303"
y1="40.599514"
x1="101.45565"
gradientUnits="userSpaceOnUse"
id="linearGradient3633"
xlink:href="#linearGradient3621"
inkscape:collect="always" />
<radialGradient
r="17.67767"
fy="101.69787"
fx="352.03818"
cy="101.69787"
cx="352.03818"
gradientUnits="userSpaceOnUse"
id="radialGradient3667"
xlink:href="#linearGradient3639"
inkscape:collect="always" />
<radialGradient
r="17.67767"
fy="101.69787"
fx="352.03818"
cy="101.69787"
cx="352.03818"
gradientUnits="userSpaceOnUse"
id="radialGradient3675"
xlink:href="#linearGradient3659"
inkscape:collect="always" />
<linearGradient
gradientTransform="translate(-1.3119965,1.110878)"
gradientUnits="userSpaceOnUse"
y2="74.0345"
x2="222.50246"
y1="102.89583"
x1="223.57851"
id="linearGradient3693"
xlink:href="#linearGradient3687"
inkscape:collect="always" />
<linearGradient
y2="116.84509"
x2="312.63715"
y1="62.306999"
x1="277.45764"
gradientUnits="userSpaceOnUse"
id="linearGradient3702"
xlink:href="#linearGradient4202"
inkscape:collect="always" />
<linearGradient
y2="66.89164"
x2="223.21674"
y1="102.89583"
x1="223.57851"
gradientTransform="translate(-1.3119965,1.110878)"
gradientUnits="userSpaceOnUse"
id="linearGradient3704"
xlink:href="#linearGradient3613"
inkscape:collect="always" />
<inkscape:perspective
sodipodi:type="inkscape:persp3d"
inkscape:vp_x="0 : 526.18109 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_z="744.09448 : 526.18109 : 1"
inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
id="perspective3767" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient3302"
id="linearGradient3308"
x1="255.95412"
y1="328.07761"
x2="258.63916"
y2="328.07761"
gradientUnits="userSpaceOnUse"
gradientTransform="translate(-25.178571,-3.0357143)" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient3613"
id="linearGradient3536"
gradientUnits="userSpaceOnUse"
gradientTransform="translate(5.555838,16.162441)"
x1="147.86807"
y1="287.98224"
x2="147.86807"
y2="341.01526" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient3613"
id="linearGradient3538"
gradientUnits="userSpaceOnUse"
gradientTransform="translate(5.555838,16.162441)"
x1="147.86807"
y1="287.98224"
x2="147.86807"
y2="341.01526" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient3613"
id="linearGradient3540"
gradientUnits="userSpaceOnUse"
gradientTransform="translate(5.555838,16.162441)"
x1="147.86807"
y1="287.98224"
x2="147.86807"
y2="341.01526" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient3613"
id="linearGradient3542"
gradientUnits="userSpaceOnUse"
gradientTransform="translate(5.555838,16.162441)"
x1="147.86807"
y1="287.98224"
x2="147.86807"
y2="341.01526" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient3613"
id="linearGradient3544"
gradientUnits="userSpaceOnUse"
gradientTransform="translate(5.555838,16.162441)"
x1="147.86807"
y1="287.98224"
x2="147.86807"
y2="341.01526" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient3613"
id="linearGradient3546"
gradientUnits="userSpaceOnUse"
gradientTransform="translate(5.555838,16.162441)"
x1="147.86807"
y1="287.98224"
x2="147.86807"
y2="341.01526" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient3613"
id="linearGradient3548"
gradientUnits="userSpaceOnUse"
gradientTransform="translate(5.555838,16.162441)"
x1="147.86807"
y1="287.98224"
x2="147.86807"
y2="341.01526" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient3613"
id="linearGradient3550"
gradientUnits="userSpaceOnUse"
gradientTransform="translate(5.555838,16.162441)"
x1="147.86807"
y1="287.98224"
x2="147.86807"
y2="341.01526" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient3613"
id="linearGradient3694"
gradientUnits="userSpaceOnUse"
gradientTransform="translate(-381.09403,-544.64978)"
x1="147.86807"
y1="287.98224"
x2="147.86807"
y2="341.01526" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient3613"
id="linearGradient3696"
gradientUnits="userSpaceOnUse"
gradientTransform="translate(-381.09403,-544.64978)"
x1="147.86807"
y1="287.98224"
x2="147.86807"
y2="341.01526" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient3613"
id="linearGradient3698"
gradientUnits="userSpaceOnUse"
gradientTransform="translate(-381.09403,-544.64978)"
x1="147.86807"
y1="287.98224"
x2="147.86807"
y2="341.01526" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient3613"
id="linearGradient3700"
gradientUnits="userSpaceOnUse"
gradientTransform="translate(-381.09403,-544.64978)"
x1="147.86807"
y1="287.98224"
x2="147.86807"
y2="341.01526" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient3613"
id="linearGradient3703"
gradientUnits="userSpaceOnUse"
gradientTransform="translate(-381.09403,-544.64978)"
x1="147.86807"
y1="287.98224"
x2="147.86807"
y2="341.01526" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient3613"
id="linearGradient3705"
gradientUnits="userSpaceOnUse"
gradientTransform="translate(-381.09403,-544.64978)"
x1="147.86807"
y1="287.98224"
x2="147.86807"
y2="341.01526" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient3613"
id="linearGradient3707"
gradientUnits="userSpaceOnUse"
gradientTransform="translate(-381.09403,-544.64978)"
x1="147.86807"
y1="287.98224"
x2="147.86807"
y2="341.01526" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient3613"
id="linearGradient3709"
gradientUnits="userSpaceOnUse"
gradientTransform="translate(-381.09403,-544.64978)"
x1="147.86807"
y1="287.98224"
x2="147.86807"
y2="341.01526" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient4192"
id="linearGradient4200"
x1="9.601512"
y1="10.789209"
x2="311.62698"
y2="232.99521"
gradientUnits="userSpaceOnUse" />
<inkscape:perspective
id="perspective3695"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient3708"
id="linearGradient3714"
x1="87.808205"
y1="244.84967"
x2="32.786144"
y2="103.0031"
gradientUnits="userSpaceOnUse" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient3708"
id="linearGradient3722"
x1="73.120178"
y1="183.3553"
x2="52.375767"
y2="141.61852"
gradientUnits="userSpaceOnUse" />
<inkscape:perspective
id="perspective3732"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<inkscape:perspective
id="perspective3757"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient3770"
id="linearGradient3776"
x1="149.16222"
y1="143.01329"
x2="-2.1779096"
y2="0.84358346"
gradientUnits="userSpaceOnUse" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient3770"
id="linearGradient3784"
x1="96.563065"
y1="81.798767"
x2="56.660259"
y2="47.094559"
gradientUnits="userSpaceOnUse" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient3621"
id="radialGradient3792"
cx="352.03818"
cy="101.69787"
fx="352.03818"
fy="101.69787"
r="18.67767"
gradientUnits="userSpaceOnUse" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient3497"
id="radialGradient3800"
cx="352.03818"
cy="101.69787"
fx="352.03818"
fy="101.69787"
r="18.67767"
gradientUnits="userSpaceOnUse" />
</defs>
<metadata
id="metadata7">
<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></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Calque 1"
inkscape:groupmode="layer"
id="layer1"
style="display:inline">
<rect
ry="23.307579"
y="11.523975"
x="10.336278"
height="220.73647"
width="300.55594"
id="rect3700"
style="fill:url(#linearGradient4200);fill-opacity:1;stroke:#000000;stroke-width:1.46953177;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<g
transform="translate(-127.27923,-40.406102)"
id="g3695">
<rect
style="fill:url(#linearGradient3702);fill-opacity:1;stroke:#000000;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:1, 2;stroke-dashoffset:0"
id="rect3677"
width="163.64471"
height="53.538086"
x="148.49243"
y="62.806999"
ry="5.029737" />
<text
sodipodi:linespacing="125%"
id="text_counter"
y="102.99694"
x="154.30698"
style="font-size:36px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:125%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;fill:#655fdb;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1px;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:DejaVu Sans;-inkscape-font-specification:DejaVu Sans Bold"
xml:space="preserve"><tspan
y="102.99694"
x="154.30698"
id="tspan3191"
sodipodi:role="line"
style="font-size:36px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#655fdb;fill-opacity:1;stroke:none;font-family:DejaVu Sans;-inkscape-font-specification:DejaVu Sans Bold">Default</tspan></text>
</g>
<g
id="stop_back"
transform="translate(-33.11078,95.2077)">
<path
sodipodi:type="star"
style="color:#000000;fill:url(#linearGradient3776);fill-opacity:1;fill-rule:nonzero;stroke:url(#linearGradient3784);stroke-width:3.80890393;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
id="path3747"
sodipodi:sides="3"
sodipodi:cx="103.21429"
sodipodi:cy="127.14286"
sodipodi:r1="91.508057"
sodipodi:r2="45.754028"
sodipodi:arg1="0"
sodipodi:arg2="1.0471976"
inkscape:flatsided="true"
inkscape:rounded="0"
inkscape:randomized="0"
d="m 194.72234,127.14286 -137.262082,79.2483 0,-158.496601 137.262082,79.248301 z"
transform="matrix(0.78762818,0,0,0.78762818,26.492161,-44.168468)" />
<text
sodipodi:linespacing="100%"
id="text2393"
y="68.857597"
x="151.45537"
style="font-size:36px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-indent:0;text-align:end;text-decoration:none;line-height:100%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:end;color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1px;marker:none;visibility:inherit;display:inline;overflow:visible;enable-background:accumulate;font-family:DejaVu Sans;-inkscape-font-specification:DejaVu Sans Bold"
xml:space="preserve"><tspan
style="font-size:36px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-indent:0;text-align:end;text-decoration:none;line-height:100%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:end;color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1px;marker:none;visibility:inherit;display:inline;overflow:visible;enable-background:accumulate;font-family:DejaVu Sans;-inkscape-font-specification:DejaVu Sans Bold"
y="68.857597"
x="151.45537"
id="tspan2395"
sodipodi:role="line">Start</tspan></text>
</g>
<g
transform="translate(-18.07106,94.06456)"
id="stop_sele"
style="fill:#aaffaa">
<path
sodipodi:type="star"
style="color:#000000;fill:url(#linearGradient3714);fill-opacity:1;fill-rule:nonzero;stroke:url(#linearGradient3722);stroke-width:3.94511151;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
id="path3685"
sodipodi:sides="8"
sodipodi:cx="83.571426"
sodipodi:cy="224.28571"
sodipodi:r1="94.724358"
sodipodi:r2="87.513893"
sodipodi:arg1="0"
sodipodi:arg2="0.39269908"
inkscape:flatsided="true"
inkscape:rounded="0"
inkscape:randomized="0"
d="m 178.29578,224.28571 -27.74412,66.98023 -66.980234,27.74412 -66.980235,-27.74412 -27.744122,-66.98023 27.744122,-66.98024 66.980235,-27.74412 66.980234,27.74412 27.74412,66.98024 z"
transform="matrix(0.70255013,-0.29100577,0.29100577,0.70255013,-13.216048,-76.13621)" />
<text
sodipodi:linespacing="100%"
id="text2401"
y="66.643318"
x="147.74109"
style="font-size:36px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-indent:0;text-align:end;text-decoration:none;line-height:100%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:end;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1px;marker:none;visibility:inherit;display:inline;overflow:visible;enable-background:accumulate;font-family:DejaVu Sans;-inkscape-font-specification:DejaVu Sans Bold"
xml:space="preserve"><tspan
style="font-size:36px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:end;line-height:100%;writing-mode:lr-tb;text-anchor:end;fill:#ffffff;fill-opacity:1;stroke:none;font-family:DejaVu Sans;-inkscape-font-specification:DejaVu Sans Bold"
y="66.643318"
x="147.74109"
id="tspan2403"
sodipodi:role="line">Stop</tspan></text>
</g>
<g
transform="matrix(2.0899173,0,0,2.0899173,-577.84265,-204.88668)"
id="led_start">
<path
transform="translate(42.282829,64.376725)"
d="m 369.71585,101.69787 a 17.67767,17.67767 0 1 1 -35.35534,0 17.67767,17.67767 0 1 1 35.35534,0 z"
sodipodi:ry="17.67767"
sodipodi:rx="17.67767"
sodipodi:cy="101.69787"
sodipodi:cx="352.03818"
id="pathLed"
style="fill:url(#radialGradient3800);fill-opacity:1;stroke:#000000;stroke-width:0.47848782;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
sodipodi:type="arc" />
</g>
<g
transform="matrix(2.0899173,0,0,2.0899173,-637.08625,-59.866062)"
id="led_stop">
<path
sodipodi:type="arc"
style="fill:url(#radialGradient3792);fill-opacity:1;stroke:#000000;stroke-width:0.47848782;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
id="path_led"
sodipodi:cx="352.03818"
sodipodi:cy="101.69787"
sodipodi:rx="17.67767"
sodipodi:ry="17.67767"
d="m 369.71585,101.69787 a 17.67767,17.67767 0 1 1 -35.35534,0 17.67767,17.67767 0 1 1 35.35534,0 z"
transform="translate(70.630181,-5.0138784)" />
</g>
</g>
</svg>