<svg width="500" height="500">
<linearGradient id="metallic-2" x1="0%" y1="0%" x2="100%" y2="0%"
spreadMethod="pad" gradientUnits="objectBoundingBox">
<stop offset="0%" style="stop-color:rgb(254,255,255);"/>
<stop offset="13%" style="stop-color:rgb(96,96,96);"/>
<stop offset="26%" style="stop-color:rgb(160,160,160);"/>
<stop offset="47%" style="stop-color:rgb(225,225,225);"/>
<stop offset="62%" style="stop-color:rgb(255,255,255);"/>
<stop offset="80%" style="stop-color:rgb(225,225,225);"/>
<stop offset="100%" style="stop-color:rgb(96,96,96);"/>
<linearGradient id="metallic-case" x1="0%" y1="0%" x2="100%" y2="0%"
spreadMethod="pad" gradientUnits="objectBoundingBox">
<stop offset="0%" style="stop-color:rgb(254,255,255);"/>
<stop offset="50%" style="stop-color:rgb(96,96,96);"/>
<stop offset="100%" style="stop-color:rgb(225,225,225);"/>
<radialGradient id="metallic-case2" cx="50%" cy="50%" r="50%" fx="50%" fy="50%"
spreadMethod="pad" gradientUnits="objectBoundingBox">
<stop offset="0%" style="stop-color:rgb(0,0,0);"/>
<stop offset="100%" style="stop-color:rgb(255,255,255);"/>
<rect x="40" y="10" width="150" height="300"
style="fill:url(#metallic-case)"/>
<ellipse cx="115" cy="290" rx="80" ry="80"
style="fill:url(#metallic-case2);stroke:rgb(0,0,0);stroke-width:1"/>
<line x1="40" y1="10" x2="40" y2="260"
style="stroke:rgb(0,0,0);stroke-width:1"/>
<line x1="190" y1="10" x2="190" y2="260"
style="stroke:rgb(0,0,0);stroke-width:1"/>
<polygon points="40,10 45,10 55,0 40,0"
style="fill:rgb(120,120,120);stroke:rgb(0,0,0);stroke-width:1"/>
<polygon points="90,0 140,0 130,10 100,10"
style="fill:rgb(120,120,120);stroke:rgb(0,0,0);stroke-width:1"/>
<polygon points="190,0 190,10 185,10 175,0"
style="fill:rgb(120,120,120);stroke:rgb(0,0,0);stroke-width:1"/>
<polygon points="10,50 50,50 60,60 0,60"
style="fill:url(#metallic-case);stroke:rgb(0,0,0);stroke-width:1"/>
<rect x="25" y="0" width="10" height="50"
style="fill:url(#metallic-case);stroke:rgb(0,0,0);stroke-width:1"/>
<rect x="0" y="0" width="150" height="100"
style="fill:url(#metallic-2);stroke:rgb(0,0,0);stroke-width:1"/>
<rect x="0" y="20" width="150" height="8"
style="fill:rgb(160,160,176);stroke:rgb(0,0,0);stroke-width:1"/>
<rect x="0" y="40" width="150" height="8"
style="fill:rgb(160,160,176);stroke:rgb(0,0,0);stroke-width:1"/>
<ellipse cx="75" cy="80" rx="16" ry="16"
style="fill:rgb(255,255,255);stroke:rgb(0,0,0);stroke-width:1"/>
<rect x="10" y="30" width="30" height="40"
style="fill:rgb(240,132,16);stroke:rgb(0,0,0);stroke-width:1"/>
<ellipse cx="25" cy="30" rx="15" ry="15"
style="fill:rgb(240,132,16);stroke:rgb(0,0,0);stroke-width:2"/>
<ellipse cx="25" cy="70" rx="15" ry="15"
style="fill:rgb(240,132,16);stroke:rgb(0,0,0);stroke-width:2"/>
<symbol id="connecting_rod">
<rect x="10" y="30" width="40" height="155"
style="fill:rgb(149,149,149);stroke:rgb(0,0,0);stroke-width:1"/>
<ellipse cx="30" cy="30" rx="20" ry="20"
style="fill:rgb(149,149,149);stroke:rgb(0,0,0);stroke-width:1"/>
<ellipse cx="30" cy="185" rx="20" ry="20"
style="fill:rgb(149,149,149);stroke:rgb(0,0,0);stroke-width:1"/>
<ellipse cx="30" cy="185" rx="10" ry="10"
style="fill:rgb(255,255,255);stroke:rgb(0,0,0);stroke-width:1"/>
<use xlink:href="#case" transform="translate(125 110)"/>
<use id="inlet_valve" xlink:href="#valve"/>
<use id="outlet_valve" xlink:href="#valve" transform="translate(250 60)"/>
<use id="piston_instance" xlink:href="#piston" />
<use id="rod_instance" xlink:href="#connecting_rod" />
<use id="cshaft_instance" xlink:href="#crankshaft" />