"initialVol = {initialVol};"+safe("""
wAll = wTip+wBarrel+wEnd;
wLeftBarrelToEnd = wAll-(wTip+wStroke2/2);
imageXCoord = -(wTip+wStroke2/2)/(wScale/wCalibration);
imageYCoord = -(hEnd/2)/((hBarrel-wStroke1)/hScale);
imageWidth = wAll/(wScale/wCalibration);
imageHeight = hEnd/((hBarrel-wStroke1)/hScale);
plungerCentreLineLeftXCoord = (wLeftBarrelToEnd-wStroke1/2)/(wScale/wCalibration)+wPlungerOut;
plungerCentreLineLeftYCoord = 0;
plungerCentreLineRightXCoord = (wLeftBarrelToEnd-wStroke1/2)/(wScale/wCalibration)+wPlungerOut+wCalibration;
plungerCentreLineRightYCoord = 0;
pOutLineLowerLeftXCoord = wLeftBarrelToEnd/(wScale/wCalibration);
pOutLineLowerLeftYCoord = -hPlungerLeft/2;
pOutLineLowerRightYCoord = -hPlungerRight/2;
pOutLineUpperLeftXCoord = pOutLineLowerLeftXCoord;
pOutLineUpperLeftYCoord = hPlungerLeft/2;
pOutLineUpperRightYCoord = hPlungerRight/2;
pOutLineLowerLeftXCoordStraightSection = wLeftBarrelToEnd/(wScale/wCalibration);
pOutLineLowerLeftYCoordStraightSection = -hPlungerLeft/2;
pOutLineUpperLeftXCoordStraightSection = pOutLineLowerLeftXCoordStraightSection;
pOutLineUpperLeftYCoordStraightSection = hPlungerLeft/2;
pOutLineLowerRightYCoordStraightSection = pOutLineLowerLeftYCoordStraightSection;
pOutLineUpperRightYCoordStraightSection = pOutLineUpperLeftYCoordStraightSection;
pOutLineLowerLeftYCoordSlopedSection = -hPlungerLeft/2;
pOutLineLowerRightYCoordSlopedSection = -hPlungerRight/2;
pOutLineUpperLeftYCoordSlopedSection = hPlungerLeft/2;
pOutLineUpperRightYCoordSlopedSection = hPlungerRight/2;
pOutMiddleLineLeftXCoord = wLeftBarrelToEnd/(wScale/wCalibration);
pOutMiddleLineLeftYCoord = 0;
pOutMiddleLineRightYCoord = pOutMiddleLineLeftYCoord;
pInLineLowerLeftXCoord = (wLeftBarrelToEnd-wStroke1/2)/(wScale/wCalibration)+wPlungerOut;
pInLineLowerYCoord = -hPlungerLeft/2;
pInLineLowerRightXCoord = (wLeftBarrelToEnd-wEnd)/(wScale/wCalibration);
pInLineUpperLeftXCoord = pInLineLowerLeftXCoord;
pInLineUpperRightXCoord = pInLineLowerRightXCoord;
pInLineUpperYCoord = hPlungerLeft/2;
pInMiddleLineLeftXCoord = pInLineLowerLeftXCoord;
pInMiddleLineLeftYCoord = 0;
pInMiddleLineRightXCoord = pInLineLowerRightXCoord;
pInMiddleLineRightYCoord = 0;
im = image('resources/question-resources/20mLSyringeImage_no_plunger_end.svg',
[imageXCoord,imageYCoord],[imageWidth,imageHeight])
<< highlight: false, fixed: true >>;
plungerCentreLine = segment([plungerCentreLineLeftXCoord,plungerCentreLineLeftYCoord],[plungerCentreLineRightXCoord,plungerCentreLineRightYCoord]) << visible: false, fixed: true >>;
movingPoint = glider(initialVol+plungerCentreLineLeftXCoord,0,plungerCentreLine)
<< id: 'mp', snapToGrid: true, snapSizeX: 0.5, withLabel: false, showInfobox: false,
size: 4, fillColor: '#00F', strokeWidth: 1, strokeColor: '#00F', highlight: true, highlightStrokeColor: '#c3d9ff'
phantom_point = point(plungerCentreLineLeftXCoord,0)
<< id: 'phantom_point', fixed: true, visible: false >>;
plungerEndLine = segment([function(){ return mp.X()-plungerCentreLineLeftXCoord;},-hScale/2],[function(){ return mp.X()-plungerCentreLineLeftXCoord;},hScale/2])
<< strokeColor: '#000', strokeWidth: 0.5, highlight: false >>;
rp1 = point(0,-hScale/2) << visible: false, fixed: true >>;
rp2 = point(function(){ return mp.X()-plungerCentreLineLeftXCoord;},-hScale/2) << visible: false, fixed: true >>;
rp3 = point(function(){ return mp.X()-plungerCentreLineLeftXCoord;},hScale/2) << visible: false, fixed: true >>;
rp4 = point(0,hScale/2) << visible: false, fixed: true >>;
rrect = polygon(rp1,rp2,rp3,rp4)
<< fillColor: '#ff99ff', fillOpacity: 0.25, highlight: false,
borders: << highlight: false, strokeWidth: 0 >>
repp1 = point(function(){ return mp.X()-wPlungerEnd/2;},-hPlungerEndLine/2) << visible: false, fixed: true >>;
repp2 = point(function(){ return mp.X()+wPlungerEnd/2;},-hPlungerEndLine/2) << visible: false, fixed: true >>;
repp3 = point(function(){ return mp.X()+wPlungerEnd/2;},hPlungerEndLine/2) << visible: false, fixed: true >>;
repp4 = point(function(){ return mp.X()-wPlungerEnd/2;},hPlungerEndLine/2) << visible: false, fixed: true >>;
eprect = polygon(repp1,repp2,repp3,repp4)
<<fillOpacity: 0, highlight: false, borders: << highlight: false, color: '#000',strokeWidth: wStroke3>> >>;
pOutLineLowerStraightSection = segment([pOutLineLowerLeftXCoordStraightSection,pOutLineLowerLeftYCoordStraightSection],[function(){return mp.X()-wPlungerOut;},pOutLineLowerRightYCoordStraightSection])
<< strokeColor: '#000', strokeWidth: wStroke4, highlight: false >>;
pOutLineUpperStraightSection = segment([pOutLineUpperLeftXCoordStraightSection,pOutLineUpperLeftYCoordStraightSection],[function(){return mp.X()-wPlungerOut;},pOutLineUpperRightYCoordStraightSection])
<< strokeColor: '#000', strokeWidth: wStroke4, highlight: false >>;
pOutLineLowerSlopedSection = segment([function(){return mp.X()-wPlungerOut;},pOutLineLowerLeftYCoordSlopedSection],[function(){return mp.X()-wPlungerEnd/2;},pOutLineLowerRightYCoordSlopedSection])
<< strokeColor: '#000', strokeWidth: wStroke4, highlight: false >>;
pOutLineUpperSlopedtSection = segment([function(){return mp.X()-wPlungerOut;},pOutLineUpperLeftYCoordSlopedSection],[function(){return mp.X()-wPlungerEnd/2;},pOutLineUpperRightYCoordSlopedSection])
<< strokeColor: '#000', strokeWidth: wStroke4, highlight: false >>;
pOutMiddleLine = segment([pOutMiddleLineLeftXCoord,pOutMiddleLineLeftYCoord],[function(){return mp.X()-wPlungerEnd/2;},pOutMiddleLineRightYCoord])
<< strokeColor: '#000', strokeWidth: wStroke4, highlight: false >>;
pInLineLower = segment([function(){ return mp.X()-pInLineLowerLeftXCoord;},pInLineLowerYCoord],[pInLineLowerRightXCoord,pInLineLowerYCoord])
<< strokeColor: '#000', strokeWidth: wStroke4, strokeOpacity: 0.15, highlight: false >>;
pInLineUpper = segment([function(){ return mp.X()-pInLineUpperLeftXCoord;},pInLineUpperYCoord],[pInLineUpperRightXCoord,pInLineUpperYCoord])
<< strokeColor: '#000', strokeWidth: wStroke4, strokeOpacity: 0.15, highlight: false >>;
pInMiddleLine = segment([function(){ return mp.X()-pInMiddleLineLeftXCoord;},pInMiddleLineLeftYCoord],[pInMiddleLineRightXCoord,pInMiddleLineRightYCoord])
<< strokeColor: '#000', strokeWidth: wStroke4, strokeOpacity: 0.15, highlight: false >>;