diff --git a/01_Code/physical_computing_interface/indexSimulation.html b/01_Code/physical_computing_interface/indexSimulation.html index e01e67dd791aa10bd55de049c6417287e1487f07..1972c1f85ba642a04d1f8126e04b3e169dbafc19 100644 --- a/01_Code/physical_computing_interface/indexSimulation.html +++ b/01_Code/physical_computing_interface/indexSimulation.html @@ -139,26 +139,26 @@ <script src="https://cdn.jsdelivr.net/npm/@tensorflow/tfjs@1.0.0/dist/tf.min.js"></script> <!-- simulation --> -<script src="./metavoxels/01_Code/191115_NodeJsJulia/lib/stats.js"></script> -<script src="./metavoxels/01_Code/191115_NodeJsJulia/lib/SVGRenderer.js"></script> -<script src="./metavoxels/01_Code/191115_NodeJsJulia/lib/js-colormaps.js"></script> -<script src="./metavoxels/01_Code/191115_NodeJsJulia/lib/LineSegments2.js"></script> -<script src="./metavoxels/01_Code/191115_NodeJsJulia/lib/LineSegmentsGeometry.js"></script> -<script src="./metavoxels/01_Code/191115_NodeJsJulia/lib/Line2.js"></script> -<script src="./metavoxels/01_Code/191115_NodeJsJulia/lib/LineMaterial.js"></script> -<script src="./metavoxels/01_Code/191115_NodeJsJulia/lib/LineGeometry.js"></script> -<script src="./metavoxels/01_Code/191115_NodeJsJulia/lib/GeometryUtils.js"></script> +<script src="./simulation/lib/stats.js"></script> +<script src="./simulation/lib/SVGRenderer.js"></script> +<script src="./simulation/lib/js-colormaps.js"></script> +<script src="./simulation/lib/LineSegments2.js"></script> +<script src="./simulation/lib/LineSegmentsGeometry.js"></script> +<script src="./simulation/lib/Line2.js"></script> +<script src="./simulation/lib/LineMaterial.js"></script> +<script src="./simulation/lib/LineGeometry.js"></script> +<script src="./simulation/lib/GeometryUtils.js"></script> <!-- <script src="./metavoxels/01_Code/191115_NodeJsJulia/fea/beamFea.js"></script> --> <!-- <script src="./simulation/visualization/geometry.js"></script> --> -<script src="./metavoxels/01_Code/191115_NodeJsJulia/visualization/utils.js"></script> -<script src="./metavoxels/01_Code/191115_NodeJsJulia/visualization/geometry.js"></script> +<script src="./simulation/visualization/utils.js"></script> +<script src="./simulation/visualization/geometry.js"></script> -<script src="./metavoxels/01_Code/191115_NodeJsJulia/visualization/main.js"></script> +<script src="./simulation/visualization/main.js"></script> -<script src="./metavoxels/01_Code/191115_NodeJsJulia/fea/parallelFea.js"></script> +<script src="./simulation/fea/parallelFea.js"></script> <!-- assembler control --> <!-- <script src="./assembly/assemblerControl/utils.js" type="text/javascript"></script> diff --git a/01_Code/physical_computing_interface/simulation/.gitignore b/01_Code/physical_computing_interface/simulation/.gitignore new file mode 100644 index 0000000000000000000000000000000000000000..37aa7a0dfdc7598f71083ab5b150b70ff1d59ae7 --- /dev/null +++ b/01_Code/physical_computing_interface/simulation/.gitignore @@ -0,0 +1,2 @@ +node_modules +.ipynb_checkpoints \ No newline at end of file diff --git a/01_Code/physical_computing_interface/simulation/app.js b/01_Code/physical_computing_interface/simulation/app.js index a98c261621bbac8be2260ed540a040eff04f6e74..dd5381c54c12ea06e151207fab1c77291c68d39b 100644 --- a/01_Code/physical_computing_interface/simulation/app.js +++ b/01_Code/physical_computing_interface/simulation/app.js @@ -1,3 +1,7 @@ +// Amira Abdel-Rahman +// (c) Massachusetts Institute of Technology 2020 + +/* // "use strict"; var node=true; var fs = require('fs'); @@ -25,29 +29,30 @@ eval(fs.readFileSync("./visualization/utils.js")+''); eval(fs.readFileSync("./fea/beamFea.js")+''); eval(fs.readFileSync('./visualization/geometry.js')+''); +*/ //////////////////////spawn julia//////////////////////// -// const { spawn } = require('child_process'); -// console.log("hi") -// // const ls = spawn('ls', ['', '../']); -// const ls = spawn('julia', ['counter.jl', __dirname]); -// // const npm = which.sync('npm'); -// // console.log(npm) -// // const child = spawn('dir'); +const { spawn } = require('child_process'); +console.log("hi") +// const ls = spawn('ls', ['', '../']); +const ls = spawn('julia', ['julia/BeamFEM.jl', __dirname]); +// const npm = which.sync('npm'); +// console.log(npm) +// const child = spawn('dir'); -// ls.stdout.on('data', (data) => { -// console.log(`stdout: ${data}`); -// }); +ls.stdout.on('data', (data) => { + console.log(`stdout: ${data}`); +}); -// ls.stderr.on('data', (data) => { -// console.error(`stderr: ${data}`); -// }); +ls.stderr.on('data', (data) => { + console.error(`stderr: ${data}`); +}); -// ls.on('close', (code) => { -// console.log(`child process exited with code ${code}`); -// }); +ls.on('close', (code) => { + console.log(`child process exited with code ${code}`); +}); //////////////////////////////serve ///////////////// diff --git a/01_Code/physical_computing_interface/simulation/demos/index.html b/01_Code/physical_computing_interface/simulation/demos/index.html index c544dc60b13cd584aca0a6081ff392abcf5406b7..77574297d35727c294ad18f5421c64cfc792aa6e 100644 --- a/01_Code/physical_computing_interface/simulation/demos/index.html +++ b/01_Code/physical_computing_interface/simulation/demos/index.html @@ -55,10 +55,17 @@ $.getJSON("../json/setup.json", function(json) { setup=json.setup; setup.viz.colorMaps=[coolwarm,YlGnBu, winter ,jet]; - init(); - drawStructure(); - colorEdges(); - animate(); + + three= new threejs(setup,"container",""); + three.init(); + // three.drawStructure(); + // three.colorEdges(); + // three.animate(); + + // init(); + // drawStructure(); + // colorEdges(); + // animate(); }); </script> diff --git a/01_Code/physical_computing_interface/simulation/demos/indexBeamComparison.html b/01_Code/physical_computing_interface/simulation/demos/indexBeamComparison.html new file mode 100644 index 0000000000000000000000000000000000000000..5b0ff5b7d78480c447d00cd673c0df9a1e197e46 --- /dev/null +++ b/01_Code/physical_computing_interface/simulation/demos/indexBeamComparison.html @@ -0,0 +1,306 @@ +<!DOCTYPE html> +<html lang="en"> + <head> + <title>MetaVoxel</title> + <meta charset="utf-8"> + <meta name="viewport" content="width=device-width, user-scalable=no, minimum-scale=1.0, maximum-scale=1.0"> + <!-- <link type="text/css" rel="stylesheet" href="main.css"> --> + <style> + body { + background-color: #f0f0f0; + color: #444; + } + a { + color: #08f; + } + </style> + + <link rel="stylesheet" type="text/css" href="style.css" media="screen"/> + + </head> + <body> + + <div id="threejs"> + <div class="header1"> + <i> Hierarchal Simulation</i> + <!-- Three.js --> + </div> + + <div id="webgl"></div> + + </div> + + <div id="graph"> + <div class="header2"> + <div class="dragbar"></div> + <i>. Detailed Simulation</i> + </div> + <div class="dragbar"></div> + <div id="webgl1"></div> + + </div> + + <div class="footer1"> + <strong>left-click left window</strong>: orbit, <strong>right-click</strong>: zoom + </div> + + <div class="footer2" id="footer2"> + <!-- update change to more instructions/feedback --> + <i> Loading RhinoScript</i> + </div> + + + + <!-- <div id="container"></div> + <div id="container"></div> --> + + <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script> + + <script type="text/javascript" src="https://files.mcneel.com/rhino3dm/js/latest/rhino3dm.js"></script> + + <script src="https://cdn.jsdelivr.net/npm/@tensorflow/tfjs@1.0.0/dist/tf.min.js"></script> + + <!-- <script src="./lib/require.js"></script> --> + + <script src="../lib/three.min.js"></script> + + <script src="../lib/stats.js"></script> + <script src="../lib/dat.gui.js"></script> + + <script src="../lib/SVGRenderer.js"></script> + + + <script src="../lib/DragControls.js"></script> + <script src="../lib/OrbitControls.js"></script> + <script src="../lib/TransformControls.js"></script> + + <script src="../lib/js-colormaps.js"></script> + <script src="../lib/LineSegments2.js"></script> + <script src="../lib/LineSegmentsGeometry.js"></script> + <script src="../lib/Line2.js"></script> + <script src="../lib/LineMaterial.js"></script> + <script src="../lib/LineGeometry.js"></script> + <script src="../lib/GeometryUtils.js"></script> + + <script src="../visualization/utils.js"></script> + <script src="../visualization/geometry.js"></script> + + <!-- <script src="./beamFea.js"></script> + <script src="./geometry.js"></script> --> + <script src="../visualization/main.js"></script> + + <script src="../fea/parallelFea.js"></script> + + + <script type="text/javascript" src="./rhino3dm.js"></script> + <!-- <script src="../visualization/draw.js"></script> --> + + <script> + + ////////////////////////dragbar/////////////// + $('.dragbar').mousedown(function(e){ + + e.preventDefault(); + $(document).mousemove(function(e){ + // $('#position').html(e.pageX +', '+ e.pageY); + $('#threejs').css("width",e.pageX+2); + + $('#webgl').css("width",e.pageX+2); + + $('#graph').css("left",e.pageX+2); + // $('#json').css("left",e.pageX+2); + $('.footer1').css("width",e.pageX+2); + $('.footer2').css("left",e.pageX+2); + + }) + onWindowResize();//todo change location + }); + $(document).mouseup(function(e){ + $(document).unbind('mousemove'); + onWindowResize();//todo change location + }); + ////////////////////////////////////////////////////////////////// + + /////////////////seemless mirror control///////////////////// + + + $('#graph').on('click mousedown touchstart', function(){ + three.controls = new THREE.OrbitControls( camera, three.renderer.domElement ); + }) + + $('#threejs').on('click mousedown touchstart', function(){ + three1.controls = new THREE.OrbitControls( camera, three1.renderer.domElement ); + }) + + + </script> + <script> + var three; //todo change location + var three1; //todo change location + var setup; + var setup1; + var globalSetup={ + exageration:10e3, + speed:3.0 + + }; + var ex=gui.add(globalSetup, 'exageration', 0, 10e4).listen(); + var sp=gui.add(globalSetup, 'speed', 0, 5).listen(); + + ex.onChange(updateExSpeed); + sp.onChange(); + + + rhino3dm().then(async m => { + console.log('Loaded rhino3dm.'); + + document.getElementById("footer2").innerHTML = "Loaded rhino3dm."; + _rhino3dm = m; // global + + var latticeSize=3; + var voxelSize=5; + + + setup=JSON.parse(JSON.stringify(setupEmpty)); + + var material={ + area:1.0, + density:0.028, + stiffness:10000000 + }; + + var material2={ + area:1.0, + density:0.028, + stiffness:10000000 + }; + + setup.hierarical=false; + setup.voxelSize=voxelSize; + + const position=new THREE.Vector3(0,0,0); + const position2=new THREE.Vector3(voxelSize*2,0,0); + + /// + //try bounding box conditions + var support=new _rhino3dm.BoundingBox([-voxelSize/2+position.x,-voxelSize/2+position.y,-voxelSize/2+position.z], [voxelSize/2+position.x,voxelSize/2+position.y,voxelSize/2+position.z]); + + var temp=voxelSize*latticeSize-voxelSize/8; + + var load=new _rhino3dm.BoundingBox([-voxelSize/2+position.x,temp-voxelSize/2+position.y,-voxelSize/2+position.z], [voxelSize/2+position.x,temp+voxelSize/2+position.y,+voxelSize/2+position.z]); + + var support2=new _rhino3dm.BoundingBox([-voxelSize/2+position2.x,-voxelSize/2+position2.y,-voxelSize/2+position2.z], [voxelSize/2+position2.x,voxelSize/2+position2.y,voxelSize/2+position2.z]); + var load2=new _rhino3dm.BoundingBox([-voxelSize/2+position2.x,temp-voxelSize/2+position2.y,-voxelSize/2+position2.z], [voxelSize/2+position2.x,temp+voxelSize/2+position2.y,0+voxelSize/2+position2.z]); + + + var temp1=voxelSize*latticeSize-3*voxelSize; + + var matB=new _rhino3dm.BoundingBox([-voxelSize/2+position2.x,-voxelSize/2+position2.y,temp1-voxelSize/2+position2.z], [voxelSize/2+position2.x,voxelSize/2+position2.y,temp]); + + var dof=[true,true,true,true,true,true]; + var supports=[[support,dof],[support2,dof]]; + var loads=[[load,{x:0,y:-400,z:0}],[load2,{x:0,y:-400,z:0}]]; + var diffMaterialBox=[[matB,material2]]; + + /// + + + lateralLoadSetup1(setup,position,latticeSize,voxelSize,createChiralVoxel,[],[],material); + lateralLoadSetup1(setup,position2,latticeSize,voxelSize,createVoxel,supports,loads,material2); + // changeMaterialFromBox(setup,diffMaterialBox); + + + setup.viz.colorMaps=[YlGnBu,coolwarm, winter ,jet]; + setup.viz.minStress=10e6; + setup.viz.maxStress=-10e6; + + setup.viz.exageration=globalSetup.exageration; + setup.solve=solveParallel; + setup.numTimeSteps=100; + setup.supports=supports; + setup.loads=loads; + + + three= new threejs(setup,"webgl1","graph"); + three.init(); + three.drawConstraintBoundingBoxes([support],[load]); + + + //////////////////////////////////// + setup1=JSON.parse(JSON.stringify(setupEmpty)); + + setup1.hierarical=true; + setup1.voxelSize=voxelSize; + + + + lateralLoadSetup1(setup1,position,latticeSize,voxelSize,createHieraricalVoxel,[],[],material); + lateralLoadSetup1(setup1,position2,latticeSize,voxelSize,createHieraricalVoxel,supports,loads,material2); + // changeMaterialFromBox(setup1,diffMaterialBox); + + setup1.viz.colorMaps=[YlGnBu,coolwarm, winter ,jet]; + setup1.viz.minStress=10e6; + setup1.viz.maxStress=-10e6; + + setup1.viz.exageration=globalSetup.exageration; + setup1.solve=solveParallel; + setup1.supports=supports; + setup1.loads=loads; + + + + three1= new threejs(setup1,"webgl","threejs"); + three1.init(); + + gui.add(three.setup,"numTimeSteps", 0, 500).listen(); + gui.add(three.setup,"solve"); + + + + document.getElementById("footer2").innerHTML = "Press solve for structure simulation."; + + // more stuff + }); + + function solveParallel(){ + document.getElementById("footer2").innerHTML = "Running..."; + var numTimeSteps=250; + ///////////////////////////////////////////////////// + + + var dt=0.0251646; //?? todo change to recommended step + // var dt=0.01; //?? todo change to recommended step + + + setTimeout(function() { + simulateParallel(setup,three.setup.numTimeSteps,dt); + simulateParallel(setup1,three.setup.numTimeSteps,dt); + }, 1); + + // var dt=0.0251646; //?? todo change to recommended step + // simulateParallel(setup1,numTimeSteps,dt); + + /////////////////////////////////////// + // updateColors(); + // three.animate(); + // three1.animate(); + + ///////////////////// + + } + + function updateExSpeed(){ + three.setup.animation.exageration=globalSetup.exageration; + three1.setup.animation.exageration=globalSetup.exageration; + three.setup.animation.speed=globalSetup.speed; + three1.setup.animation.speed=globalSetup.speed; + + } + + </script> + + + + + </body> +</html> diff --git a/01_Code/physical_computing_interface/simulation/demos/indexChiral.html b/01_Code/physical_computing_interface/simulation/demos/indexChiral.html index 97fda45c89cb198bc785a2806842d9fae720148a..ef3a029517abe6109313bb403b501202ab5c9d53 100644 --- a/01_Code/physical_computing_interface/simulation/demos/indexChiral.html +++ b/01_Code/physical_computing_interface/simulation/demos/indexChiral.html @@ -55,10 +55,17 @@ $.getJSON("../json/setupChiral.json", function(json) { setup=json.setup; setup.viz.colorMaps=[coolwarm,YlGnBu, winter ,jet]; - init(); - drawStructure(); - colorEdges(); - animate(); + + three= new threejs(setup,"container",""); + three.init(); + // three.drawStructure(); + // three.colorEdges(); + // three.animate(); + + // init(); + // drawStructure(); + // colorEdges(); + // animate(); }); </script> diff --git a/01_Code/physical_computing_interface/simulation/demos/indexChiral3.html b/01_Code/physical_computing_interface/simulation/demos/indexChiral3.html index 9d6c3938de4d94d2894f1208f7ed7c20cc2c1181..a413b648e7a512ec5b60d0cb72ec0dc44583e854 100644 --- a/01_Code/physical_computing_interface/simulation/demos/indexChiral3.html +++ b/01_Code/physical_computing_interface/simulation/demos/indexChiral3.html @@ -55,10 +55,17 @@ $.getJSON("../json/setupChiral3.json", function(json) { setup=json.setup; setup.viz.colorMaps=[coolwarm,YlGnBu, winter ,jet]; - init(); - drawStructure(); - colorEdges(); - animate(); + + three= new threejs(setup,"container",""); + three.init(); + // three.drawStructure(); + // three.colorEdges(); + // three.animate(); + + // init(); + // drawStructure(); + // colorEdges(); + // animate(); }); </script> diff --git a/01_Code/physical_computing_interface/simulation/demos/indexDrone.html b/01_Code/physical_computing_interface/simulation/demos/indexDrone.html index 277ebda81f45e098cd499612eb76fe4569d166e7..5ee80fb927cf29f970d12a65e14e1ff3539fc51a 100644 --- a/01_Code/physical_computing_interface/simulation/demos/indexDrone.html +++ b/01_Code/physical_computing_interface/simulation/demos/indexDrone.html @@ -73,10 +73,16 @@ // }); - init(); - drawStructure(); - colorEdges(); - animateEuler(); + three= new threejs(setup,"container"); + three.init(); + // three.drawStructure(); + // three.colorEdges(); + // three.animateEuler(); + + // init(); + // drawStructure(); + // colorEdges(); + // animateEuler(); </script> diff --git a/01_Code/physical_computing_interface/simulation/demos/indexHierarchical.html b/01_Code/physical_computing_interface/simulation/demos/indexHierarchical.html new file mode 100644 index 0000000000000000000000000000000000000000..0ab3ececef1b264499214a9abe4f4e083850ea12 --- /dev/null +++ b/01_Code/physical_computing_interface/simulation/demos/indexHierarchical.html @@ -0,0 +1,225 @@ +<!DOCTYPE html> +<html lang="en"> + <head> + <title>MetaVoxel</title> + <meta charset="utf-8"> + <meta name="viewport" content="width=device-width, user-scalable=no, minimum-scale=1.0, maximum-scale=1.0"> + <!-- <link type="text/css" rel="stylesheet" href="main.css"> --> + <style> + body { + background-color: #f0f0f0; + color: #444; + } + a { + color: #08f; + } + </style> + + <link rel="stylesheet" type="text/css" href="style.css" media="screen"/> + + </head> + <body> + + <div id="threejs"> + <div class="header1"> + <i> Hierarchal Simulation</i> + <!-- Three.js --> + </div> + + <div id="webgl"></div> + + </div> + + <div id="graph"> + <div class="header2"> + <div class="dragbar"></div> + <i>. Detailed Simulation</i> + </div> + <div class="dragbar"></div> + <div id="webgl1"></div> + + </div> + + <div class="footer1"> + <strong>left-click left window</strong>: orbit, <strong>right-click</strong>: zoom + </div> + + <div class="footer2" id="footer2"> + <!-- update change to more instructions/feedback --> + <i> Loading RhinoScript</i> + </div> + + + + <!-- <div id="container"></div> + <div id="container"></div> --> + + <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script> + + <script type="text/javascript" src="https://files.mcneel.com/rhino3dm/js/latest/rhino3dm.js"></script> + + <script src="https://cdn.jsdelivr.net/npm/@tensorflow/tfjs@1.0.0/dist/tf.min.js"></script> + + <!-- <script src="./lib/require.js"></script> --> + + <script src="../lib/three.min.js"></script> + + <script src="../lib/stats.js"></script> + <script src="../lib/dat.gui.js"></script> + + <script src="../lib/SVGRenderer.js"></script> + + + <script src="../lib/DragControls.js"></script> + <script src="../lib/OrbitControls.js"></script> + <script src="../lib/TransformControls.js"></script> + + <script src="../lib/js-colormaps.js"></script> + <script src="../lib/LineSegments2.js"></script> + <script src="../lib/LineSegmentsGeometry.js"></script> + <script src="../lib/Line2.js"></script> + <script src="../lib/LineMaterial.js"></script> + <script src="../lib/LineGeometry.js"></script> + <script src="../lib/GeometryUtils.js"></script> + + <script src="../visualization/utils.js"></script> + <script src="../visualization/geometry.js"></script> + + <!-- <script src="./beamFea.js"></script> + <script src="./geometry.js"></script> --> + <script src="../visualization/main.js"></script> + + <script src="../fea/parallelFea.js"></script> + + + <script type="text/javascript" src="./rhino3dm.js"></script> + <!-- <script src="../visualization/draw.js"></script> --> + + <script> + + ////////////////////////dragbar/////////////// + $('.dragbar').mousedown(function(e){ + + e.preventDefault(); + $(document).mousemove(function(e){ + // $('#position').html(e.pageX +', '+ e.pageY); + $('#threejs').css("width",e.pageX+2); + + $('#webgl').css("width",e.pageX+2); + + $('#graph').css("left",e.pageX+2); + // $('#json').css("left",e.pageX+2); + $('.footer1').css("width",e.pageX+2); + $('.footer2').css("left",e.pageX+2); + + }) + onWindowResize();//todo change location + }); + $(document).mouseup(function(e){ + $(document).unbind('mousemove'); + onWindowResize();//todo change location + }); + ////////////////////////////////////////////////////////////////// + + /////////////////seemless mirror control///////////////////// + + + $('#graph').on('click mousedown touchstart', function(){ + three.controls = new THREE.OrbitControls( camera, three.renderer.domElement ); + }) + + $('#threejs').on('click mousedown touchstart', function(){ + three1.controls = new THREE.OrbitControls( camera, three1.renderer.domElement ); + }) + + var three; //todo change location + var three1; //todo change location + var setup; + var setup1; + + rhino3dm().then(async m => { + console.log('Loaded rhino3dm.'); + + document.getElementById("footer2").innerHTML = "Loaded rhino3dm."; + _rhino3dm = m; // global + + var latticeSize=4; + var voxelSize=5; + + + + setup=JSON.parse(JSON.stringify(setupEmpty)); + + setup.hierarical=false; + setup.voxelSize=voxelSize; + + latticeSetup(setup,latticeSize,voxelSize,createVoxel,{x:0,y:-400,z:0}); + + + setup.viz.colorMaps=[YlGnBu,coolwarm, winter ,jet]; + setup.viz.minStress=10e6; + setup.viz.maxStress=-10e6; + + setup.viz.exageration=10e3; + setup.solve=solveParallel; + setup.numTimeSteps=100; + + + three= new threejs(setup,"webgl1","graph"); + three.init(); + + + //////////////////////////////////// + setup1=JSON.parse(JSON.stringify(setupEmpty)); + + setup1.hierarical=true; + setup1.voxelSize=voxelSize; + + latticeSetup(setup1,latticeSize,voxelSize,createHieraricalVoxel,{x:0,y:-400,z:0}); + + + setup1.viz.colorMaps=[YlGnBu,coolwarm, winter ,jet]; + setup1.viz.minStress=10e6; + setup1.viz.maxStress=-10e6; + + setup1.viz.exageration=10e3; + setup1.solve=solveParallel; + + + + three1= new threejs(setup1,"webgl","threejs"); + three1.init(); + + gui.add(three.setup,"numTimeSteps", 0, 200).listen(); + gui.add(three.setup,"solve"); + + + document.getElementById("footer2").innerHTML = "Press solve for structure simulation."; + + // more stuff + }); + + function solveParallel(){ + document.getElementById("footer2").innerHTML = "Running..."; + var numTimeSteps=250; + ///////////////////////////////////////////////////// + + + var dt=0.0251646; //?? todo change to recommended step + + + setTimeout(function() { + simulateParallel(setup,three.setup.numTimeSteps,dt); + simulateParallel(setup1,three.setup.numTimeSteps,dt); + }, 1); + } + + + + </script> + + + + + </body> +</html> diff --git a/01_Code/physical_computing_interface/simulation/demos/indexParallel.html b/01_Code/physical_computing_interface/simulation/demos/indexParallel.html index 00c931c032efa47f889109a4147d95dab64691ff..6aad3bc5014d246e4b4538ce2ba4d50c58d99a50 100644 --- a/01_Code/physical_computing_interface/simulation/demos/indexParallel.html +++ b/01_Code/physical_computing_interface/simulation/demos/indexParallel.html @@ -9,14 +9,18 @@ body { background-color: #f0f0f0; color: #444; + width: 100%; + height: 100%; } - a { - color: #08f; + #webgl { + width: 100px; + height: 100px; } </style> </head> - <body> - <div id="container"></div> + <body > + <div id="webgl"> </div> + <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script> <script type="text/javascript" src="https://files.mcneel.com/rhino3dm/js/latest/rhino3dm.js"></script> @@ -50,18 +54,18 @@ <!-- <script src="./beamFea.js"></script> <script src="./geometry.js"></script> --> <script src="../visualization/main.js"></script> + <script src="../visualization/geometry.js"></script> <script src="../fea/parallelFea.js"></script> + <script type="text/javascript" src="./rhino3dm.js"></script> + + + <script src="../json/parallelVoxel.js"></script> <script src="../json/parallelCube.js"></script> <script> - var numTimeSteps=100; - var dt=0.01; //?? todo change to recommended step - initialize(setup); - for(var i=0;i<numTimeSteps;i++){ - doTimeStep(setup,dt); - } + // $.getJSON("../json/setupChiral.json", function(json) { // setup=json.setup; @@ -73,10 +77,60 @@ // }); - init(); - drawStructure(); - colorEdges(); - animate(); + // init(); + // drawStructure(); + // colorEdges(); + // animate(); + + $.getJSON("../json/setupScaling.json", function(json) { + setup=json.setup; + setup.viz.colorMaps=[YlGnBu,coolwarm, winter ,jet]; + setup.viz.minStress=10e6; + setup.viz.maxStress=-10e6; + rhino3dm().then(async m => { + console.log('Loaded rhino3dm.'); + + _rhino3dm = m; // global + + + + var material={ + area:25.0, + density:0.028, + stiffness:10000000 + }; + + var matB=new _rhino3dm.BoundingBox([-1000,-1000,-1000], [1000,1000,1000]); + var diffMaterialBox=[[matB,material]]; + changeMaterialFromBox(setup,diffMaterialBox); + + + three= new threejs(setup,"webgl",""); + three.init(); + // three.drawStructure(); + // three.colorEdges(); + // three.animate(); + + var numTimeSteps=10; + var dt=0.0251646; //?? todo change to recommended step + // var dt=0.001; //?? todo change to recommended step + initialize(setup); + var tt0 = performance.now(); + for(var i=0;i<numTimeSteps;i++){ + var t0 = performance.now(); + doTimeStep(setup,dt); + var t1 = performance.now(); + console.log("doTimeStep "+ i+" took " + (t1 - t0) + " milliseconds."); + // console.log("") + // console.log("") + } + var tt1 = performance.now(); + console.log("total time: "+ (tt1 - tt0) + " milliseconds."); + three.colorEdges(); + }); + + + }); </script> diff --git a/01_Code/physical_computing_interface/simulation/demos/indexScaling.html b/01_Code/physical_computing_interface/simulation/demos/indexScaling.html index 87d753712436bfd048d95a02d17c52b2fb231958..3f0ff981317d242b97b40a3b32b6d2f356c083c7 100644 --- a/01_Code/physical_computing_interface/simulation/demos/indexScaling.html +++ b/01_Code/physical_computing_interface/simulation/demos/indexScaling.html @@ -55,10 +55,17 @@ $.getJSON("../json/setupScaling.json", function(json) { setup=json.setup; setup.viz.colorMaps=[coolwarm,YlGnBu, winter ,jet]; - init(); - drawStructure(); - colorEdges(); - animate(); + + three= new threejs(setup,"container",""); + three.init(); + // three.drawStructure(); + // three.colorEdges(); + // three.animate(); + + // init(); + // drawStructure(); + // colorEdges(); + // animate(); }); </script> diff --git a/01_Code/physical_computing_interface/simulation/demos/indexTrialJulia copy.html b/01_Code/physical_computing_interface/simulation/demos/indexTrialJulia copy.html new file mode 100644 index 0000000000000000000000000000000000000000..a4fee2dadb985146e00a3c592a4f2f2155d8d48d --- /dev/null +++ b/01_Code/physical_computing_interface/simulation/demos/indexTrialJulia copy.html @@ -0,0 +1,434 @@ +<!DOCTYPE html> +<html lang="en"> + <head> + <title>MetaVoxel</title> + <meta charset="utf-8"> + <meta name="viewport" content="width=device-width, user-scalable=no, minimum-scale=1.0, maximum-scale=1.0"> + <!-- <link type="text/css" rel="stylesheet" href="main.css"> --> + <style> + body { + background-color: #f0f0f0; + color: #444; + } + a { + color: #08f; + } + </style> + </head> + <body> + <div id="container"></div> + <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script> + + <script type="text/javascript" src="https://files.mcneel.com/rhino3dm/js/latest/rhino3dm.js"></script> + + <script src="https://cdn.jsdelivr.net/npm/@tensorflow/tfjs@1.0.0/dist/tf.min.js"></script> + + <!-- <script src="./lib/require.js"></script> --> + + <script src="../lib/three.min.js"></script> + + <script src="../lib/stats.js"></script> + <script src="../lib/dat.gui.js"></script> + + <script src="../lib/SVGRenderer.js"></script> + + + <script src="../lib/DragControls.js"></script> + <script src="../lib/OrbitControls.js"></script> + <script src="../lib/TransformControls.js"></script> + + <script src="../lib/js-colormaps.js"></script> + <script src="../lib/LineSegments2.js"></script> + <script src="../lib/LineSegmentsGeometry.js"></script> + <script src="../lib/Line2.js"></script> + <script src="../lib/LineMaterial.js"></script> + <script src="../lib/LineGeometry.js"></script> + <script src="../lib/GeometryUtils.js"></script> + + <script src="../visualization/utils.js"></script> + + <!-- <script src="./beamFea.js"></script> + <script src="./geometry.js"></script> --> + <script src="../fea/parallelFea.js"></script> + <script src="../visualization/main.js"></script> + + <script> + $.getJSON("../json/setup1.json", function(json) { + setup=json.setup; + console.log(json) + + setup.viz.colorMaps=[YlGnBu,coolwarm, winter ,jet]; + // setup.viz.minStress=10e6; + // setup.viz.maxStress=-10e6; + + setup.animation.exageration=75444; + + // setup.viz.colorMaps=[coolwarm,YlGnBu, winter ,jet]; + + three= new threejs(setup,"container",""); + + three.init(); + // three.drawStructure(); + // three.colorEdges(); + // three.animate(); + function composeMatrix( quaternion ) { + + var te = [ + + 1, 0, 0, 0, + 0, 1, 0, 0, + 0, 0, 1, 0, + 0, 0, 0, 1 + + ]; + var scale=new THREE.Vector3(1,1,1); + var position=new THREE.Vector3(0,0,0); + + var x = quaternion.x, y = quaternion.y, z = quaternion.z, w = quaternion.w; + var x2 = x + x, y2 = y + y, z2 = z + z; + var xx = x * x2, xy = x * y2, xz = x * z2; + var yy = y * y2, yz = y * z2, zz = z * z2; + var wx = w * x2, wy = w * y2, wz = w * z2; + + var sx = scale.x, sy = scale.y, sz = scale.z; + + te[ 0 ] = ( 1 - ( yy + zz ) ) * sx; + te[ 1 ] = ( xy + wz ) * sx; + te[ 2 ] = ( xz - wy ) * sx; + te[ 3 ] = 0; + + te[ 4 ] = ( xy - wz ) * sy; + te[ 5 ] = ( 1 - ( xx + zz ) ) * sy; + te[ 6 ] = ( yz + wx ) * sy; + te[ 7 ] = 0; + + te[ 8 ] = ( xz + wy ) * sz; + te[ 9 ] = ( yz - wx ) * sz; + te[ 10 ] = ( 1 - ( xx + yy ) ) * sz; + te[ 11 ] = 0; + + te[ 12 ] = position.x; + te[ 13 ] = position.y; + te[ 14 ] = position.z; + te[ 15 ] = 1; + + return te; + + } + + function clamp( value, min, max ) { + + return Math.max( min, Math.min( max, value ) ); + + } + + function setFromRotationMatrix ( te ) { + + var order='XYZ'; + // assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled) + + var m11 = te[ 0 ], m12 = te[ 4 ], m13 = te[ 8 ]; + var m21 = te[ 1 ], m22 = te[ 5 ], m23 = te[ 9 ]; + var m31 = te[ 2 ], m32 = te[ 6 ], m33 = te[ 10 ]; + + var eul=new THREE.Vector3(0,0,0); + + if ( order === 'XYZ' ) { + + eul.y = Math.asin( clamp( m13, - 1, 1 ) ); + + if ( Math.abs( m13 ) < 0.9999999 ) { + + + eul.x = Math.atan2( - m23, m33 ); + eul.z = Math.atan2( - m12, m11 ); + + } else { + + eul.x = Math.atan2( m32, m22 ); + eul.z = 0; + + } + + } else if ( order === 'YXZ' ) { + + eul.x = Math.asin( - clamp( m23, - 1, 1 ) ); + + if ( Math.abs( m23 ) < 0.9999999 ) { + + eul.y = Math.atan2( m13, m33 ); + eul.z = Math.atan2( m21, m22 ); + + } else { + + eul.y = Math.atan2( - m31, m11 ); + eul.z = 0; + + } + + } else if ( order === 'ZXY' ) { + + eul.x = Math.asin( clamp( m32, - 1, 1 ) ); + + if ( Math.abs( m32 ) < 0.9999999 ) { + + eul.y = Math.atan2( - m31, m33 ); + eul.z = Math.atan2( - m12, m22 ); + + } else { + + eul.y = 0; + eul.z = Math.atan2( m21, m11 ); + + } + + } else if ( order === 'ZYX' ) { + + eul.y = Math.asin( - clamp( m31, - 1, 1 ) ); + + if ( Math.abs( m31 ) < 0.9999999 ) { + + eul.x = Math.atan2( m32, m33 ); + eul.z = Math.atan2( m21, m11 ); + + } else { + + eul.x = 0; + eul.z = Math.atan2( - m12, m22 ); + + } + + } else if ( order === 'YZX' ) { + + eul.z = Math.asin( clamp( m21, - 1, 1 ) ); + + if ( Math.abs( m21 ) < 0.9999999 ) { + + eul.x = Math.atan2( - m23, m22 ); + eul.y = Math.atan2( - m31, m11 ); + + } else { + + eul.x = 0; + eul.y = Math.atan2( m13, m33 ); + + } + + } else if ( order === 'XZY' ) { + + eul.z = Math.asin( - clamp( m12, - 1, 1 ) ); + + if ( Math.abs( m12 ) < 0.9999999 ) { + + eul.x = Math.atan2( m32, m22 ); + eul.y = Math.atan2( m13, m11 ); + + } else { + + eul.x = Math.atan2( - m23, m33 ); + eul.y = 0; + + } + } + + return eul; + + } + + function setFromEuler( euler ) { + + + var quat=new THREE.Quaternion(); + var x = euler.x, y = euler.y, z = euler.z, order = 'XYZ'; + + // http://www.mathworks.com/matlabcentral/fileexchange/ + // 20696-function-to-convert-between-dcm-euler-angles-quaternions-and-euler-vectors/ + // content/SpinCalc.m + + var cos = Math.cos; + var sin = Math.sin; + + var c1 = cos( x / 2 ); + var c2 = cos( y / 2 ); + var c3 = cos( z / 2 ); + + var s1 = sin( x / 2 ); + var s2 = sin( y / 2 ); + var s3 = sin( z / 2 ); + + if ( order === 'XYZ' ) { + + quat.x = s1 * c2 * c3 + c1 * s2 * s3; + quat.y = c1 * s2 * c3 - s1 * c2 * s3; + quat.z = c1 * c2 * s3 + s1 * s2 * c3; + quat.w = c1 * c2 * c3 - s1 * s2 * s3; + + } else if ( order === 'YXZ' ) { + + quat.x = s1 * c2 * c3 + c1 * s2 * s3; + quat.y = c1 * s2 * c3 - s1 * c2 * s3; + quat.z = c1 * c2 * s3 - s1 * s2 * c3; + quat.w = c1 * c2 * c3 + s1 * s2 * s3; + + } else if ( order === 'ZXY' ) { + + quat.x = s1 * c2 * c3 - c1 * s2 * s3; + quat.y = c1 * s2 * c3 + s1 * c2 * s3; + quat.z = c1 * c2 * s3 + s1 * s2 * c3; + quat.w = c1 * c2 * c3 - s1 * s2 * s3; + + } else if ( order === 'ZYX' ) { + + quat.x = s1 * c2 * c3 - c1 * s2 * s3; + quat.y = c1 * s2 * c3 + s1 * c2 * s3; + quat.z = c1 * c2 * s3 - s1 * s2 * c3; + quat.w = c1 * c2 * c3 + s1 * s2 * s3; + + } else if ( order === 'YZX' ) { + + quat.x = s1 * c2 * c3 + c1 * s2 * s3; + quat.y = c1 * s2 * c3 + s1 * c2 * s3; + quat.z = c1 * c2 * s3 - s1 * s2 * c3; + quat.w = c1 * c2 * c3 - s1 * s2 * s3; + + } else if ( order === 'XZY' ) { + + quat.x = s1 * c2 * c3 - c1 * s2 * s3; + quat.y = c1 * s2 * c3 - s1 * c2 * s3; + quat.z = c1 * c2 * s3 + s1 * s2 * c3; + quat.w = c1 * c2 * c3 + s1 * s2 * s3; + + } + + return quat; + + } + + function applyQuaternion (eul1, q ) { + + + var x = eul1.x, y = eul1.y, z = eul1.z; + var qx = q.x, qy = q.y, qz = q.z, qw = q.w; + + // calculate quat * vector + + var ix = qw * x + qy * z - qz * y; + var iy = qw * y + qz * x - qx * z; + var iz = qw * z + qx * y - qy * x; + var iw = - qx * x - qy * y - qz * z; + + // calculate result * inverse quat + + eul1.x = ix * qw + iw * - qx + iy * - qz - iz * - qy; + eul1.y = iy * qw + iw * - qy + iz * - qx - ix * - qz; + eul1.z = iz * qw + iw * - qz + ix * - qy - iy * - qx; + + return eul1; + + } + + + + function toAxisXVector31(v,axis){ //TODO CHANGE + + + var vector=axis.clone(); + vector.normalize(); + var xaxis=new THREE.Vector3(1,0,0); + var geometry = new THREE.BoxGeometry( 1, 1, 1 ); + var material = new THREE.MeshBasicMaterial( {color: 0x00ff00} ); + var cube = new THREE.Mesh( geometry, material ); + var quaternion = new THREE.Quaternion(); // create one and reuse it + quaternion.setFromUnitVectors( vector, xaxis ); + // console.log(quaternion) + cube.applyQuaternion( quaternion ); + // console.log(cube.matrix.clone()) + + // console.log(cube.rotation.clone()) + eul=setFromRotationMatrix ( composeMatrix( quaternion.clone() )); + + // console.log(applyQuaternion(v.clone(), quaternion.clone())); + // console.log(composeMatrix( quaternion.clone() )) + // console.log(eul.clone() ) + // console.log(setFromEuler( eul.clone() )); + // console.log(""); + // console.log(applyQuaternion(v.clone(), setFromEuler( eul.clone() ) )); + // console.log(cube.rotation); + v.applyEuler(cube.rotation); + // var res=6; + // v=new THREE.Vector3( parseFloat(v.x.toFixed(res)),parseFloat(v.y.toFixed(res)),parseFloat(v.z.toFixed(res))) + + + + return v.clone(); + + } //transforms a vec3D in the original orientation of the bond to that as if the bond was in +X direction + + function toAxisXQuat1(q,axis){ + + var v=new THREE.Vector3(q.x,q.y,q.z); + var vector=axis.clone(); + vector.normalize(); + var xaxis=new THREE.Vector3(1,0,0); + var geometry = new THREE.BoxGeometry( 1, 1, 1 ); + var material = new THREE.MeshBasicMaterial( {color: 0x00ff00} ); + var cube = new THREE.Mesh( geometry, material ); + var quaternion = new THREE.Quaternion(); // create one and reuse it + quaternion.setFromUnitVectors( vector, xaxis ); + cube.applyQuaternion( quaternion ); + v.applyEuler(cube.rotation); + + return new THREE.Quaternion(v.x,v.y,v.z,q.w); + + } //transforms a vec3D in the original orientation of the bond to that as if the bond was in +X direction + + // console.log(toAxisXVector31(new THREE.Vector3(-5,0,5),new THREE.Vector3(-0.7071067811865475, 0.0, 0.7071067811865475))) + // console.log(toAxisXVector31(new THREE.Vector3(-5,0,-5),new THREE.Vector3(-0.7071067811865475,0,-0.7071067811865475))) + // console.log(toAxisXVector31(new THREE.Vector3(5,-5,0),new THREE.Vector3(0.7071067811865475,-0.7071067811865475,0))) + // console.log(toAxisXVector31(new THREE.Vector3(-5,5,0),new THREE.Vector3(-0.7071067811865475,0.7071067811865475,0))) + // console.log(toAxisXVector31(new THREE.Vector3(-5,-5,0),new THREE.Vector3(-0.7071067811865475,-0.7071067811865475,0))) + // console.log(toAxisXVector31(new THREE.Vector3(5,0,5),new THREE.Vector3(0.7071067811865475,0,0.7071067811865475))) + // console.log(toAxisXVector31(new THREE.Vector3(0,5,5),new THREE.Vector3(0,0.7071067811865475,0.7071067811865475))) + + // console.log(""); + + // console.log(toAxisOriginalVector3(new THREE.Vector3(1,0,0),new THREE.Vector3(0,0,1))) + // console.log(toAxisOriginalVector3(new THREE.Vector3(0,1,0),new THREE.Vector3(0,0,1))) + // console.log(toAxisOriginalVector3(new THREE.Vector3(0,0,1),new THREE.Vector3(0,0,1))) + // console.log(""); + + // console.log(toAxisXVector3(new THREE.Vector3(1,0,0),new THREE.Vector3(0,0,1))) + // console.log(toAxisXVector3(new THREE.Vector3(0,1,0),new THREE.Vector3(0,0,1))) + // console.log(toAxisXVector3(new THREE.Vector3(0,0,1),new THREE.Vector3(0,0,1))) + + console.log(""); + + var numTimeSteps=10; + var dt=0.0251646; //?? todo change to recommended step + // var dt=0.001; //?? todo change to recommended step + var static=true; + simulateParallel(setup,numTimeSteps,dt) + + // initialize(setup); + // var tt0 = performance.now(); + // for(var i=0;i<numTimeSteps;i++){ + // var t0 = performance.now(); + // doTimeStep(setup,dt); + // var t1 = performance.now(); + // console.log("doTimeStep "+ i+" took " + (t1 - t0) + " milliseconds."); + // // console.log("") + // // console.log("") + // } + // var tt1 = performance.now(); + // console.log("total time: "+ (tt1 - tt0) + " milliseconds."); + three.colorEdges(); + + + }); + </script> + + + + + </body> +</html> diff --git a/01_Code/physical_computing_interface/simulation/demos/indexTrialJulia.html b/01_Code/physical_computing_interface/simulation/demos/indexTrialJulia.html new file mode 100644 index 0000000000000000000000000000000000000000..a09249dea9583252c6bb1222e4f8e43bf806574b --- /dev/null +++ b/01_Code/physical_computing_interface/simulation/demos/indexTrialJulia.html @@ -0,0 +1,99 @@ +<!DOCTYPE html> +<html lang="en"> + <head> + <title>MetaVoxel</title> + <meta charset="utf-8"> + <meta name="viewport" content="width=device-width, user-scalable=no, minimum-scale=1.0, maximum-scale=1.0"> + <!-- <link type="text/css" rel="stylesheet" href="main.css"> --> + <style> + body { + background-color: #f0f0f0; + color: #444; + } + a { + color: #08f; + } + .label { + color: #FFF; + font-family: sans-serif; + padding: 2px; + background: rgba( 0, 0, 0, .6 ); + } + </style> + </head> + <body> + <div id="container"></div> + <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script> + + <script type="text/javascript" src="https://files.mcneel.com/rhino3dm/js/latest/rhino3dm.js"></script> + + <script src="https://cdn.jsdelivr.net/npm/@tensorflow/tfjs@1.0.0/dist/tf.min.js"></script> + + <!-- <script src="./lib/require.js"></script> --> + + <script src="../lib/three.min.js"></script> + + <script src="../lib/stats.js"></script> + <script src="../lib/dat.gui.js"></script> + + <script src="../lib/SVGRenderer.js"></script> + <script src="../lib/CSS2DRenderer.js"></script> + + + <script src="../lib/DragControls.js"></script> + <script src="../lib/OrbitControls.js"></script> + <script src="../lib/TransformControls.js"></script> + + <script src="../lib/js-colormaps.js"></script> + <script src="../lib/LineSegments2.js"></script> + <script src="../lib/LineSegmentsGeometry.js"></script> + <script src="../lib/Line2.js"></script> + <script src="../lib/LineMaterial.js"></script> + <script src="../lib/LineGeometry.js"></script> + <script src="../lib/GeometryUtils.js"></script> + + <script src="../visualization/utils.js"></script> + + <!-- <script src="./beamFea.js"></script> + <script src="./geometry.js"></script> --> + <script src="../visualization/main.js"></script> + + <script> + $.getJSON("../json/trialJuliaParallel.json", function(json) { + setup=json; + // console.log(json) + + setup.viz.colorMaps=[YlGnBu,coolwarm, winter ,jet]; + // setup.viz.minStress=10e6; + // setup.viz.maxStress=-10e6; + + setup.viz.exageration=10e3; + + // setup.viz.colorMaps=[coolwarm,YlGnBu, winter ,jet]; + + three= new threejs(setup,"container",""); + three.init(); + three.colorEdges(); + // three.drawStructure(); + // three.colorEdges(); + // three.animate(); + + // init(); + // drawStructure(); + // colorEdges(); + // animate(); + // orient= new THREE.Quaternion(1,1,1,1); + // console.log(orient.w) + // eulerOrder = "XYZ"; // TODO SEE IF CORRECT + // eul = new THREE.Euler().setFromQuaternion( orient, eulerOrder ) + // console.log(eul) + + + }); + </script> + + + + + </body> +</html> diff --git a/01_Code/physical_computing_interface/simulation/demos/indexWhale.html b/01_Code/physical_computing_interface/simulation/demos/indexWhale.html new file mode 100644 index 0000000000000000000000000000000000000000..262732bfbf37a7b777d0ff14b6de2a5dde892d39 --- /dev/null +++ b/01_Code/physical_computing_interface/simulation/demos/indexWhale.html @@ -0,0 +1,151 @@ +<!DOCTYPE html> +<html lang="en"> + <head> + <title>MetaVoxel</title> + <meta charset="utf-8"> + <meta name="viewport" content="width=device-width, user-scalable=no, minimum-scale=1.0, maximum-scale=1.0"> + <!-- <link type="text/css" rel="stylesheet" href="main.css"> --> + <style> + body { + background-color: #f0f0f0; + color: #444; + } + a { + color: #08f; + } + </style> + + <link rel="stylesheet" type="text/css" href="style.css" media="screen"/> + + </head> + <body> + + <div id="threejs"> + <div class="header1"> + <i> Hierarchal Simulation</i> + <!-- Three.js --> + </div> + + <div id="webgl"></div> + + </div> + + <div id="graph"> + <div class="header2"> + <div class="dragbar"></div> + <i>. Detailed Simulation</i> + </div> + <div class="dragbar"></div> + <div id="webgl1"></div> + + </div> + + <div class="footer1"> + <strong>left-click left window</strong>: orbit, <strong>right-click</strong>: zoom + </div> + + <div class="footer2" id="footer2"> + <!-- update change to more instructions/feedback --> + <i> Loading RhinoScript</i> + </div> + + + + <!-- <div id="container"></div> + <div id="container"></div> --> + + <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script> + + <script type="text/javascript" src="https://files.mcneel.com/rhino3dm/js/latest/rhino3dm.js"></script> + + <script src="https://cdn.jsdelivr.net/npm/@tensorflow/tfjs@1.0.0/dist/tf.min.js"></script> + + <!-- <script src="./lib/require.js"></script> --> + + <script src="../lib/three.min.js"></script> + + <script src="../lib/stats.js"></script> + <script src="../lib/dat.gui.js"></script> + + <script src="../lib/SVGRenderer.js"></script> + + + <script src="../lib/DragControls.js"></script> + <script src="../lib/OrbitControls.js"></script> + <script src="../lib/TransformControls.js"></script> + + <script src="../lib/js-colormaps.js"></script> + <script src="../lib/LineSegments2.js"></script> + <script src="../lib/LineSegmentsGeometry.js"></script> + <script src="../lib/Line2.js"></script> + <script src="../lib/LineMaterial.js"></script> + <script src="../lib/LineGeometry.js"></script> + <script src="../lib/GeometryUtils.js"></script> + + <script src="../visualization/utils.js"></script> + <script src="../visualization/geometry.js"></script> + + <!-- <script src="./beamFea.js"></script> + <script src="./geometry.js"></script> --> + <script src="../visualization/main.js"></script> + + <script src="../fea/parallelFea.js"></script> + + + <script type="text/javascript" src="./rhino3dm.js"></script> + <script src="../visualization/draw.js"></script> + + <script> + + ////////////////////////dragbar/////////////// + $('.dragbar').mousedown(function(e){ + + e.preventDefault(); + $(document).mousemove(function(e){ + // $('#position').html(e.pageX +', '+ e.pageY); + $('#threejs').css("width",e.pageX+2); + + $('#webgl').css("width",e.pageX+2); + + $('#graph').css("left",e.pageX+2); + // $('#json').css("left",e.pageX+2); + $('.footer1').css("width",e.pageX+2); + $('.footer2').css("left",e.pageX+2); + + }) + onWindowResize(three);//todo change location + onWindowResize(three1);//todo change location + }); + $(document).mouseup(function(e){ + $(document).unbind('mousemove'); + onWindowResize(three);//todo change location + onWindowResize(three1);//todo change location + }); + ////////////////////////////////////////////////////////////////// + + /////////////////seemless mirror control///////////////////// + + + $('#graph').on('click mousedown touchstart', function(){ + if(event.button!=0){ + three.controls = new THREE.OrbitControls( camera, three.renderer.domElement ); + + } + + }) + + $('#threejs').on('click mousedown touchstart', function(){ + if(event.button!=0){ + three1.controls = new THREE.OrbitControls( camera, three.renderer.domElement ); + + } + }) + + + </script> + + + + + </body> +</html> diff --git a/01_Code/physical_computing_interface/simulation/demos/rhino3dm.js b/01_Code/physical_computing_interface/simulation/demos/rhino3dm.js new file mode 100644 index 0000000000000000000000000000000000000000..4efa01f9ad170beb876c1f940ebb7c84416f9c84 --- /dev/null +++ b/01_Code/physical_computing_interface/simulation/demos/rhino3dm.js @@ -0,0 +1,8926 @@ + +var rhino3dm = (function() { + var _scriptDir = typeof document !== 'undefined' && document.currentScript ? document.currentScript.src : undefined; + return ( +function(rhino3dm) { + rhino3dm = rhino3dm || {}; + +// Copyright 2010 The Emscripten Authors. All rights reserved. +// Emscripten is available under two separate licenses, the MIT license and the +// University of Illinois/NCSA Open Source License. Both these licenses can be +// found in the LICENSE file. + +// The Module object: Our interface to the outside world. We import +// and export values on it. There are various ways Module can be used: +// 1. Not defined. We create it here +// 2. A function parameter, function(Module) { ..generated code.. } +// 3. pre-run appended it, var Module = {}; ..generated code.. +// 4. External script tag defines var Module. +// We need to check if Module already exists (e.g. case 3 above). +// Substitution will be replaced with actual code on later stage of the build, +// this way Closure Compiler will not mangle it (e.g. case 4. above). +// Note that if you want to run closure, and also to use Module +// after the generated code, you will need to define var Module = {}; +// before the code. Then that object will be used in the code, and you +// can continue to use Module afterwards as well. +var Module = typeof rhino3dm !== 'undefined' ? rhino3dm : {}; + +// --pre-jses are emitted after the Module integration code, so that they can +// refer to Module (if they choose; they can also define Module) +// {{PRE_JSES}} + +// Sometimes an existing Module object exists with properties +// meant to overwrite the default module functionality. Here +// we collect those properties and reapply _after_ we configure +// the current environment's defaults to avoid having to be so +// defensive during initialization. +var moduleOverrides = {}; +var key; +for (key in Module) { + if (Module.hasOwnProperty(key)) { + moduleOverrides[key] = Module[key]; + } +} + +var arguments_ = []; +var thisProgram = './this.program'; +var quit_ = function(status, toThrow) { + throw toThrow; +}; + +// Determine the runtime environment we are in. You can customize this by +// setting the ENVIRONMENT setting at compile time (see settings.js). + +var ENVIRONMENT_IS_WEB = false; +var ENVIRONMENT_IS_WORKER = false; +var ENVIRONMENT_IS_NODE = false; +var ENVIRONMENT_HAS_NODE = false; +var ENVIRONMENT_IS_SHELL = false; +ENVIRONMENT_IS_WEB = typeof window === 'object'; +ENVIRONMENT_IS_WORKER = typeof importScripts === 'function'; +// A web environment like Electron.js can have Node enabled, so we must +// distinguish between Node-enabled environments and Node environments per se. +// This will allow the former to do things like mount NODEFS. +// Extended check using process.versions fixes issue #8816. +// (Also makes redundant the original check that 'require' is a function.) +ENVIRONMENT_HAS_NODE = typeof process === 'object' && typeof process.versions === 'object' && typeof process.versions.node === 'string'; +ENVIRONMENT_IS_NODE = ENVIRONMENT_HAS_NODE && !ENVIRONMENT_IS_WEB && !ENVIRONMENT_IS_WORKER; +ENVIRONMENT_IS_SHELL = !ENVIRONMENT_IS_WEB && !ENVIRONMENT_IS_NODE && !ENVIRONMENT_IS_WORKER; + +if (Module['ENVIRONMENT']) { + throw new Error('Module.ENVIRONMENT has been deprecated. To force the environment, use the ENVIRONMENT compile-time option (for example, -s ENVIRONMENT=web or -s ENVIRONMENT=node)'); +} + + +// Three configurations we can be running in: +// 1) We could be the application main() thread running in the main JS UI thread. (ENVIRONMENT_IS_WORKER == false and ENVIRONMENT_IS_PTHREAD == false) +// 2) We could be the application main() thread proxied to worker. (with Emscripten -s PROXY_TO_WORKER=1) (ENVIRONMENT_IS_WORKER == true, ENVIRONMENT_IS_PTHREAD == false) +// 3) We could be an application pthread running in a worker. (ENVIRONMENT_IS_WORKER == true and ENVIRONMENT_IS_PTHREAD == true) + + + + +// `/` should be present at the end if `scriptDirectory` is not empty +var scriptDirectory = ''; +function locateFile(path) { + if (Module['locateFile']) { + return Module['locateFile'](path, scriptDirectory); + } + return scriptDirectory + path; +} + +// Hooks that are implemented differently in different runtime environments. +var read_, + readAsync, + readBinary, + setWindowTitle; + +if (ENVIRONMENT_IS_NODE) { + scriptDirectory = __dirname + '/'; + + // Expose functionality in the same simple way that the shells work + // Note that we pollute the global namespace here, otherwise we break in node + var nodeFS; + var nodePath; + + read_ = function shell_read(filename, binary) { + var ret; + if (!nodeFS) nodeFS = require('fs'); + if (!nodePath) nodePath = require('path'); + filename = nodePath['normalize'](filename); + ret = nodeFS['readFileSync'](filename); + return binary ? ret : ret.toString(); + }; + + readBinary = function readBinary(filename) { + var ret = read_(filename, true); + if (!ret.buffer) { + ret = new Uint8Array(ret); + } + assert(ret.buffer); + return ret; + }; + + if (process['argv'].length > 1) { + thisProgram = process['argv'][1].replace(/\\/g, '/'); + } + + arguments_ = process['argv'].slice(2); + + // MODULARIZE will export the module in the proper place outside, we don't need to export here + + process['on']('uncaughtException', function(ex) { + // suppress ExitStatus exceptions from showing an error + if (!(ex instanceof ExitStatus)) { + throw ex; + } + }); + + process['on']('unhandledRejection', abort); + + quit_ = function(status) { + process['exit'](status); + }; + + Module['inspect'] = function () { return '[Emscripten Module object]'; }; +} else +if (ENVIRONMENT_IS_SHELL) { + + + if (typeof read != 'undefined') { + read_ = function shell_read(f) { + return read(f); + }; + } + + readBinary = function readBinary(f) { + var data; + if (typeof readbuffer === 'function') { + return new Uint8Array(readbuffer(f)); + } + data = read(f, 'binary'); + assert(typeof data === 'object'); + return data; + }; + + if (typeof scriptArgs != 'undefined') { + arguments_ = scriptArgs; + } else if (typeof arguments != 'undefined') { + arguments_ = arguments; + } + + if (typeof quit === 'function') { + quit_ = function(status) { + quit(status); + }; + } + + if (typeof print !== 'undefined') { + // Prefer to use print/printErr where they exist, as they usually work better. + if (typeof console === 'undefined') console = {}; + console.log = print; + console.warn = console.error = typeof printErr !== 'undefined' ? printErr : print; + } +} else +if (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER) { + if (ENVIRONMENT_IS_WORKER) { // Check worker, not web, since window could be polyfilled + scriptDirectory = self.location.href; + } else if (document.currentScript) { // web + scriptDirectory = document.currentScript.src; + } + // When MODULARIZE (and not _INSTANCE), this JS may be executed later, after document.currentScript + // is gone, so we saved it, and we use it here instead of any other info. + if (_scriptDir) { + scriptDirectory = _scriptDir; + } + // blob urls look like blob:http://site.com/etc/etc and we cannot infer anything from them. + // otherwise, slice off the final part of the url to find the script directory. + // if scriptDirectory does not contain a slash, lastIndexOf will return -1, + // and scriptDirectory will correctly be replaced with an empty string. + if (scriptDirectory.indexOf('blob:') !== 0) { + scriptDirectory = scriptDirectory.substr(0, scriptDirectory.lastIndexOf('/')+1); + } else { + scriptDirectory = ''; + } + + + read_ = function shell_read(url) { + var xhr = new XMLHttpRequest(); + xhr.open('GET', url, false); + xhr.send(null); + return xhr.responseText; + }; + + if (ENVIRONMENT_IS_WORKER) { + readBinary = function readBinary(url) { + var xhr = new XMLHttpRequest(); + xhr.open('GET', url, false); + xhr.responseType = 'arraybuffer'; + xhr.send(null); + return new Uint8Array(xhr.response); + }; + } + + readAsync = function readAsync(url, onload, onerror) { + var xhr = new XMLHttpRequest(); + xhr.open('GET', url, true); + xhr.responseType = 'arraybuffer'; + xhr.onload = function xhr_onload() { + if (xhr.status == 200 || (xhr.status == 0 && xhr.response)) { // file URLs can return 0 + onload(xhr.response); + return; + } + onerror(); + }; + xhr.onerror = onerror; + xhr.send(null); + }; + + setWindowTitle = function(title) { document.title = title }; +} else +{ + throw new Error('environment detection error'); +} + +// Set up the out() and err() hooks, which are how we can print to stdout or +// stderr, respectively. +var out = Module['print'] || console.log.bind(console); +var err = Module['printErr'] || console.warn.bind(console); + +// Merge back in the overrides +for (key in moduleOverrides) { + if (moduleOverrides.hasOwnProperty(key)) { + Module[key] = moduleOverrides[key]; + } +} +// Free the object hierarchy contained in the overrides, this lets the GC +// reclaim data used e.g. in memoryInitializerRequest, which is a large typed array. +moduleOverrides = null; + +// Emit code to handle expected values on the Module object. This applies Module.x +// to the proper local x. This has two benefits: first, we only emit it if it is +// expected to arrive, and second, by using a local everywhere else that can be +// minified. +if (Module['arguments']) arguments_ = Module['arguments'];if (!Object.getOwnPropertyDescriptor(Module, 'arguments')) Object.defineProperty(Module, 'arguments', { get: function() { abort('Module.arguments has been replaced with plain arguments_') } }); +if (Module['thisProgram']) thisProgram = Module['thisProgram'];if (!Object.getOwnPropertyDescriptor(Module, 'thisProgram')) Object.defineProperty(Module, 'thisProgram', { get: function() { abort('Module.thisProgram has been replaced with plain thisProgram') } }); +if (Module['quit']) quit_ = Module['quit'];if (!Object.getOwnPropertyDescriptor(Module, 'quit')) Object.defineProperty(Module, 'quit', { get: function() { abort('Module.quit has been replaced with plain quit_') } }); + +// perform assertions in shell.js after we set up out() and err(), as otherwise if an assertion fails it cannot print the message +// Assertions on removed incoming Module JS APIs. +assert(typeof Module['memoryInitializerPrefixURL'] === 'undefined', 'Module.memoryInitializerPrefixURL option was removed, use Module.locateFile instead'); +assert(typeof Module['pthreadMainPrefixURL'] === 'undefined', 'Module.pthreadMainPrefixURL option was removed, use Module.locateFile instead'); +assert(typeof Module['cdInitializerPrefixURL'] === 'undefined', 'Module.cdInitializerPrefixURL option was removed, use Module.locateFile instead'); +assert(typeof Module['filePackagePrefixURL'] === 'undefined', 'Module.filePackagePrefixURL option was removed, use Module.locateFile instead'); +assert(typeof Module['read'] === 'undefined', 'Module.read option was removed (modify read_ in JS)'); +assert(typeof Module['readAsync'] === 'undefined', 'Module.readAsync option was removed (modify readAsync in JS)'); +assert(typeof Module['readBinary'] === 'undefined', 'Module.readBinary option was removed (modify readBinary in JS)'); +assert(typeof Module['setWindowTitle'] === 'undefined', 'Module.setWindowTitle option was removed (modify setWindowTitle in JS)'); +if (!Object.getOwnPropertyDescriptor(Module, 'read')) Object.defineProperty(Module, 'read', { get: function() { abort('Module.read has been replaced with plain read_') } }); +if (!Object.getOwnPropertyDescriptor(Module, 'readAsync')) Object.defineProperty(Module, 'readAsync', { get: function() { abort('Module.readAsync has been replaced with plain readAsync') } }); +if (!Object.getOwnPropertyDescriptor(Module, 'readBinary')) Object.defineProperty(Module, 'readBinary', { get: function() { abort('Module.readBinary has been replaced with plain readBinary') } }); +// TODO: add when SDL2 is fixed if (!Object.getOwnPropertyDescriptor(Module, 'setWindowTitle')) Object.defineProperty(Module, 'setWindowTitle', { get: function() { abort('Module.setWindowTitle has been replaced with plain setWindowTitle') } }); + + +// TODO remove when SDL2 is fixed (also see above) + + + +// Copyright 2017 The Emscripten Authors. All rights reserved. +// Emscripten is available under two separate licenses, the MIT license and the +// University of Illinois/NCSA Open Source License. Both these licenses can be +// found in the LICENSE file. + +// {{PREAMBLE_ADDITIONS}} + +var STACK_ALIGN = 16; + +// stack management, and other functionality that is provided by the compiled code, +// should not be used before it is ready +stackSave = stackRestore = stackAlloc = function() { + abort('cannot use the stack before compiled code is ready to run, and has provided stack access'); +}; + +function staticAlloc(size) { + abort('staticAlloc is no longer available at runtime; instead, perform static allocations at compile time (using makeStaticAlloc)'); +} + +function dynamicAlloc(size) { + assert(DYNAMICTOP_PTR); + var ret = HEAP32[DYNAMICTOP_PTR>>2]; + var end = (ret + size + 15) & -16; + if (end > _emscripten_get_heap_size()) { + abort('failure to dynamicAlloc - memory growth etc. is not supported there, call malloc/sbrk directly'); + } + HEAP32[DYNAMICTOP_PTR>>2] = end; + return ret; +} + +function alignMemory(size, factor) { + if (!factor) factor = STACK_ALIGN; // stack alignment (16-byte) by default + return Math.ceil(size / factor) * factor; +} + +function getNativeTypeSize(type) { + switch (type) { + case 'i1': case 'i8': return 1; + case 'i16': return 2; + case 'i32': return 4; + case 'i64': return 8; + case 'float': return 4; + case 'double': return 8; + default: { + if (type[type.length-1] === '*') { + return 4; // A pointer + } else if (type[0] === 'i') { + var bits = parseInt(type.substr(1)); + assert(bits % 8 === 0, 'getNativeTypeSize invalid bits ' + bits + ', type ' + type); + return bits / 8; + } else { + return 0; + } + } + } +} + +function warnOnce(text) { + if (!warnOnce.shown) warnOnce.shown = {}; + if (!warnOnce.shown[text]) { + warnOnce.shown[text] = 1; + err(text); + } +} + +var asm2wasmImports = { // special asm2wasm imports + "f64-rem": function(x, y) { + return x % y; + }, + "debugger": function() { + debugger; + } +}; + + + +var jsCallStartIndex = 1; +var functionPointers = new Array(0); + +// Wraps a JS function as a wasm function with a given signature. +// In the future, we may get a WebAssembly.Function constructor. Until then, +// we create a wasm module that takes the JS function as an import with a given +// signature, and re-exports that as a wasm function. +function convertJsFunctionToWasm(func, sig) { + + // The module is static, with the exception of the type section, which is + // generated based on the signature passed in. + var typeSection = [ + 0x01, // id: section, + 0x00, // length: 0 (placeholder) + 0x01, // count: 1 + 0x60, // form: func + ]; + var sigRet = sig.slice(0, 1); + var sigParam = sig.slice(1); + var typeCodes = { + 'i': 0x7f, // i32 + 'j': 0x7e, // i64 + 'f': 0x7d, // f32 + 'd': 0x7c, // f64 + }; + + // Parameters, length + signatures + typeSection.push(sigParam.length); + for (var i = 0; i < sigParam.length; ++i) { + typeSection.push(typeCodes[sigParam[i]]); + } + + // Return values, length + signatures + // With no multi-return in MVP, either 0 (void) or 1 (anything else) + if (sigRet == 'v') { + typeSection.push(0x00); + } else { + typeSection = typeSection.concat([0x01, typeCodes[sigRet]]); + } + + // Write the overall length of the type section back into the section header + // (excepting the 2 bytes for the section id and length) + typeSection[1] = typeSection.length - 2; + + // Rest of the module is static + var bytes = new Uint8Array([ + 0x00, 0x61, 0x73, 0x6d, // magic ("\0asm") + 0x01, 0x00, 0x00, 0x00, // version: 1 + ].concat(typeSection, [ + 0x02, 0x07, // import section + // (import "e" "f" (func 0 (type 0))) + 0x01, 0x01, 0x65, 0x01, 0x66, 0x00, 0x00, + 0x07, 0x05, // export section + // (export "f" (func 0 (type 0))) + 0x01, 0x01, 0x66, 0x00, 0x00, + ])); + + // We can compile this wasm module synchronously because it is very small. + // This accepts an import (at "e.f"), that it reroutes to an export (at "f") + var module = new WebAssembly.Module(bytes); + var instance = new WebAssembly.Instance(module, { + e: { + f: func + } + }); + var wrappedFunc = instance.exports.f; + return wrappedFunc; +} + +// Add a wasm function to the table. +function addFunctionWasm(func, sig) { + var table = wasmTable; + var ret = table.length; + + // Grow the table + try { + table.grow(1); + } catch (err) { + if (!err instanceof RangeError) { + throw err; + } + throw 'Unable to grow wasm table. Use a higher value for RESERVED_FUNCTION_POINTERS or set ALLOW_TABLE_GROWTH.'; + } + + // Insert new element + try { + // Attempting to call this with JS function will cause of table.set() to fail + table.set(ret, func); + } catch (err) { + if (!err instanceof TypeError) { + throw err; + } + assert(typeof sig !== 'undefined', 'Missing signature argument to addFunction'); + var wrapped = convertJsFunctionToWasm(func, sig); + table.set(ret, wrapped); + } + + return ret; +} + +function removeFunctionWasm(index) { + // TODO(sbc): Look into implementing this to allow re-using of table slots +} + +// 'sig' parameter is required for the llvm backend but only when func is not +// already a WebAssembly function. +function addFunction(func, sig) { + + + var base = 0; + for (var i = base; i < base + 0; i++) { + if (!functionPointers[i]) { + functionPointers[i] = func; + return jsCallStartIndex + i; + } + } + throw 'Finished up all reserved function pointers. Use a higher value for RESERVED_FUNCTION_POINTERS.'; + +} + +function removeFunction(index) { + + functionPointers[index-jsCallStartIndex] = null; +} + +var funcWrappers = {}; + +function getFuncWrapper(func, sig) { + if (!func) return; // on null pointer, return undefined + assert(sig); + if (!funcWrappers[sig]) { + funcWrappers[sig] = {}; + } + var sigCache = funcWrappers[sig]; + if (!sigCache[func]) { + // optimize away arguments usage in common cases + if (sig.length === 1) { + sigCache[func] = function dynCall_wrapper() { + return dynCall(sig, func); + }; + } else if (sig.length === 2) { + sigCache[func] = function dynCall_wrapper(arg) { + return dynCall(sig, func, [arg]); + }; + } else { + // general case + sigCache[func] = function dynCall_wrapper() { + return dynCall(sig, func, Array.prototype.slice.call(arguments)); + }; + } + } + return sigCache[func]; +} + + +function makeBigInt(low, high, unsigned) { + return unsigned ? ((+((low>>>0)))+((+((high>>>0)))*4294967296.0)) : ((+((low>>>0)))+((+((high|0)))*4294967296.0)); +} + +function dynCall(sig, ptr, args) { + if (args && args.length) { + assert(args.length == sig.length-1); + assert(('dynCall_' + sig) in Module, 'bad function pointer type - no table for sig \'' + sig + '\''); + return Module['dynCall_' + sig].apply(null, [ptr].concat(args)); + } else { + assert(sig.length == 1); + assert(('dynCall_' + sig) in Module, 'bad function pointer type - no table for sig \'' + sig + '\''); + return Module['dynCall_' + sig].call(null, ptr); + } +} + +var tempRet0 = 0; + +var setTempRet0 = function(value) { + tempRet0 = value; +}; + +var getTempRet0 = function() { + return tempRet0; +}; + +function getCompilerSetting(name) { + throw 'You must build with -s RETAIN_COMPILER_SETTINGS=1 for getCompilerSetting or emscripten_get_compiler_setting to work'; +} + +var Runtime = { + // helpful errors + getTempRet0: function() { abort('getTempRet0() is now a top-level function, after removing the Runtime object. Remove "Runtime."') }, + staticAlloc: function() { abort('staticAlloc() is now a top-level function, after removing the Runtime object. Remove "Runtime."') }, + stackAlloc: function() { abort('stackAlloc() is now a top-level function, after removing the Runtime object. Remove "Runtime."') }, +}; + +// The address globals begin at. Very low in memory, for code size and optimization opportunities. +// Above 0 is static memory, starting with globals. +// Then the stack. +// Then 'dynamic' memory for sbrk. +var GLOBAL_BASE = 1024; + + + + +// === Preamble library stuff === + +// Documentation for the public APIs defined in this file must be updated in: +// site/source/docs/api_reference/preamble.js.rst +// A prebuilt local version of the documentation is available at: +// site/build/text/docs/api_reference/preamble.js.txt +// You can also build docs locally as HTML or other formats in site/ +// An online HTML version (which may be of a different version of Emscripten) +// is up at http://kripken.github.io/emscripten-site/docs/api_reference/preamble.js.html + + +var wasmBinary;if (Module['wasmBinary']) wasmBinary = Module['wasmBinary'];if (!Object.getOwnPropertyDescriptor(Module, 'wasmBinary')) Object.defineProperty(Module, 'wasmBinary', { get: function() { abort('Module.wasmBinary has been replaced with plain wasmBinary') } }); +var noExitRuntime;if (Module['noExitRuntime']) noExitRuntime = Module['noExitRuntime'];if (!Object.getOwnPropertyDescriptor(Module, 'noExitRuntime')) Object.defineProperty(Module, 'noExitRuntime', { get: function() { abort('Module.noExitRuntime has been replaced with plain noExitRuntime') } }); + + +if (typeof WebAssembly !== 'object') { + abort('No WebAssembly support found. Build with -s WASM=0 to target JavaScript instead.'); +} + + +// In MINIMAL_RUNTIME, setValue() and getValue() are only available when building with safe heap enabled, for heap safety checking. +// In traditional runtime, setValue() and getValue() are always available (although their use is highly discouraged due to perf penalties) + +/** @type {function(number, number, string, boolean=)} */ +function setValue(ptr, value, type, noSafe) { + type = type || 'i8'; + if (type.charAt(type.length-1) === '*') type = 'i32'; // pointers are 32-bit + switch(type) { + case 'i1': HEAP8[((ptr)>>0)]=value; break; + case 'i8': HEAP8[((ptr)>>0)]=value; break; + case 'i16': HEAP16[((ptr)>>1)]=value; break; + case 'i32': HEAP32[((ptr)>>2)]=value; break; + case 'i64': (tempI64 = [value>>>0,(tempDouble=value,(+(Math_abs(tempDouble))) >= 1.0 ? (tempDouble > 0.0 ? ((Math_min((+(Math_floor((tempDouble)/4294967296.0))), 4294967295.0))|0)>>>0 : (~~((+(Math_ceil((tempDouble - +(((~~(tempDouble)))>>>0))/4294967296.0)))))>>>0) : 0)],HEAP32[((ptr)>>2)]=tempI64[0],HEAP32[(((ptr)+(4))>>2)]=tempI64[1]); break; + case 'float': HEAPF32[((ptr)>>2)]=value; break; + case 'double': HEAPF64[((ptr)>>3)]=value; break; + default: abort('invalid type for setValue: ' + type); + } +} + +/** @type {function(number, string, boolean=)} */ +function getValue(ptr, type, noSafe) { + type = type || 'i8'; + if (type.charAt(type.length-1) === '*') type = 'i32'; // pointers are 32-bit + switch(type) { + case 'i1': return HEAP8[((ptr)>>0)]; + case 'i8': return HEAP8[((ptr)>>0)]; + case 'i16': return HEAP16[((ptr)>>1)]; + case 'i32': return HEAP32[((ptr)>>2)]; + case 'i64': return HEAP32[((ptr)>>2)]; + case 'float': return HEAPF32[((ptr)>>2)]; + case 'double': return HEAPF64[((ptr)>>3)]; + default: abort('invalid type for getValue: ' + type); + } + return null; +} + + + + + +// Wasm globals + +var wasmMemory; + +// Potentially used for direct table calls. +var wasmTable; + + +//======================================== +// Runtime essentials +//======================================== + +// whether we are quitting the application. no code should run after this. +// set in exit() and abort() +var ABORT = false; + +// set by exit() and abort(). Passed to 'onExit' handler. +// NOTE: This is also used as the process return code code in shell environments +// but only when noExitRuntime is false. +var EXITSTATUS = 0; + +/** @type {function(*, string=)} */ +function assert(condition, text) { + if (!condition) { + abort('Assertion failed: ' + text); + } +} + +// Returns the C function with a specified identifier (for C++, you need to do manual name mangling) +function getCFunc(ident) { + var func = Module['_' + ident]; // closure exported function + assert(func, 'Cannot call unknown function ' + ident + ', make sure it is exported'); + return func; +} + +// C calling interface. +function ccall(ident, returnType, argTypes, args, opts) { + // For fast lookup of conversion functions + var toC = { + 'string': function(str) { + var ret = 0; + if (str !== null && str !== undefined && str !== 0) { // null string + // at most 4 bytes per UTF-8 code point, +1 for the trailing '\0' + var len = (str.length << 2) + 1; + ret = stackAlloc(len); + stringToUTF8(str, ret, len); + } + return ret; + }, + 'array': function(arr) { + var ret = stackAlloc(arr.length); + writeArrayToMemory(arr, ret); + return ret; + } + }; + + function convertReturnValue(ret) { + if (returnType === 'string') return UTF8ToString(ret); + if (returnType === 'boolean') return Boolean(ret); + return ret; + } + + var func = getCFunc(ident); + var cArgs = []; + var stack = 0; + assert(returnType !== 'array', 'Return type should not be "array".'); + if (args) { + for (var i = 0; i < args.length; i++) { + var converter = toC[argTypes[i]]; + if (converter) { + if (stack === 0) stack = stackSave(); + cArgs[i] = converter(args[i]); + } else { + cArgs[i] = args[i]; + } + } + } + var ret = func.apply(null, cArgs); + + ret = convertReturnValue(ret); + if (stack !== 0) stackRestore(stack); + return ret; +} + +function cwrap(ident, returnType, argTypes, opts) { + return function() { + return ccall(ident, returnType, argTypes, arguments, opts); + } +} + +var ALLOC_NORMAL = 0; // Tries to use _malloc() +var ALLOC_STACK = 1; // Lives for the duration of the current function call +var ALLOC_DYNAMIC = 2; // Cannot be freed except through sbrk +var ALLOC_NONE = 3; // Do not allocate + +// allocate(): This is for internal use. You can use it yourself as well, but the interface +// is a little tricky (see docs right below). The reason is that it is optimized +// for multiple syntaxes to save space in generated code. So you should +// normally not use allocate(), and instead allocate memory using _malloc(), +// initialize it with setValue(), and so forth. +// @slab: An array of data, or a number. If a number, then the size of the block to allocate, +// in *bytes* (note that this is sometimes confusing: the next parameter does not +// affect this!) +// @types: Either an array of types, one for each byte (or 0 if no type at that position), +// or a single type which is used for the entire block. This only matters if there +// is initial data - if @slab is a number, then this does not matter at all and is +// ignored. +// @allocator: How to allocate memory, see ALLOC_* +/** @type {function((TypedArray|Array<number>|number), string, number, number=)} */ +function allocate(slab, types, allocator, ptr) { + var zeroinit, size; + if (typeof slab === 'number') { + zeroinit = true; + size = slab; + } else { + zeroinit = false; + size = slab.length; + } + + var singleType = typeof types === 'string' ? types : null; + + var ret; + if (allocator == ALLOC_NONE) { + ret = ptr; + } else { + ret = [_malloc, + stackAlloc, + dynamicAlloc][allocator](Math.max(size, singleType ? 1 : types.length)); + } + + if (zeroinit) { + var stop; + ptr = ret; + assert((ret & 3) == 0); + stop = ret + (size & ~3); + for (; ptr < stop; ptr += 4) { + HEAP32[((ptr)>>2)]=0; + } + stop = ret + size; + while (ptr < stop) { + HEAP8[((ptr++)>>0)]=0; + } + return ret; + } + + if (singleType === 'i8') { + if (slab.subarray || slab.slice) { + HEAPU8.set(/** @type {!Uint8Array} */ (slab), ret); + } else { + HEAPU8.set(new Uint8Array(slab), ret); + } + return ret; + } + + var i = 0, type, typeSize, previousType; + while (i < size) { + var curr = slab[i]; + + type = singleType || types[i]; + if (type === 0) { + i++; + continue; + } + assert(type, 'Must know what type to store in allocate!'); + + if (type == 'i64') type = 'i32'; // special case: we have one i32 here, and one i32 later + + setValue(ret+i, curr, type); + + // no need to look up size unless type changes, so cache it + if (previousType !== type) { + typeSize = getNativeTypeSize(type); + previousType = type; + } + i += typeSize; + } + + return ret; +} + +// Allocate memory during any stage of startup - static memory early on, dynamic memory later, malloc when ready +function getMemory(size) { + if (!runtimeInitialized) return dynamicAlloc(size); + return _malloc(size); +} + + + + +/** @type {function(number, number=)} */ +function Pointer_stringify(ptr, length) { + abort("this function has been removed - you should use UTF8ToString(ptr, maxBytesToRead) instead!"); +} + +// Given a pointer 'ptr' to a null-terminated ASCII-encoded string in the emscripten HEAP, returns +// a copy of that string as a Javascript String object. + +function AsciiToString(ptr) { + var str = ''; + while (1) { + var ch = HEAPU8[((ptr++)>>0)]; + if (!ch) return str; + str += String.fromCharCode(ch); + } +} + +// Copies the given Javascript String object 'str' to the emscripten HEAP at address 'outPtr', +// null-terminated and encoded in ASCII form. The copy will require at most str.length+1 bytes of space in the HEAP. + +function stringToAscii(str, outPtr) { + return writeAsciiToMemory(str, outPtr, false); +} + + +// Given a pointer 'ptr' to a null-terminated UTF8-encoded string in the given array that contains uint8 values, returns +// a copy of that string as a Javascript String object. + +var UTF8Decoder = typeof TextDecoder !== 'undefined' ? new TextDecoder('utf8') : undefined; + +/** + * @param {number} idx + * @param {number=} maxBytesToRead + * @return {string} + */ +function UTF8ArrayToString(u8Array, idx, maxBytesToRead) { + var endIdx = idx + maxBytesToRead; + var endPtr = idx; + // TextDecoder needs to know the byte length in advance, it doesn't stop on null terminator by itself. + // Also, use the length info to avoid running tiny strings through TextDecoder, since .subarray() allocates garbage. + // (As a tiny code save trick, compare endPtr against endIdx using a negation, so that undefined means Infinity) + while (u8Array[endPtr] && !(endPtr >= endIdx)) ++endPtr; + + if (endPtr - idx > 16 && u8Array.subarray && UTF8Decoder) { + return UTF8Decoder.decode(u8Array.subarray(idx, endPtr)); + } else { + var str = ''; + // If building with TextDecoder, we have already computed the string length above, so test loop end condition against that + while (idx < endPtr) { + // For UTF8 byte structure, see: + // http://en.wikipedia.org/wiki/UTF-8#Description + // https://www.ietf.org/rfc/rfc2279.txt + // https://tools.ietf.org/html/rfc3629 + var u0 = u8Array[idx++]; + if (!(u0 & 0x80)) { str += String.fromCharCode(u0); continue; } + var u1 = u8Array[idx++] & 63; + if ((u0 & 0xE0) == 0xC0) { str += String.fromCharCode(((u0 & 31) << 6) | u1); continue; } + var u2 = u8Array[idx++] & 63; + if ((u0 & 0xF0) == 0xE0) { + u0 = ((u0 & 15) << 12) | (u1 << 6) | u2; + } else { + if ((u0 & 0xF8) != 0xF0) warnOnce('Invalid UTF-8 leading byte 0x' + u0.toString(16) + ' encountered when deserializing a UTF-8 string on the asm.js/wasm heap to a JS string!'); + u0 = ((u0 & 7) << 18) | (u1 << 12) | (u2 << 6) | (u8Array[idx++] & 63); + } + + if (u0 < 0x10000) { + str += String.fromCharCode(u0); + } else { + var ch = u0 - 0x10000; + str += String.fromCharCode(0xD800 | (ch >> 10), 0xDC00 | (ch & 0x3FF)); + } + } + } + return str; +} + +// Given a pointer 'ptr' to a null-terminated UTF8-encoded string in the emscripten HEAP, returns a +// copy of that string as a Javascript String object. +// maxBytesToRead: an optional length that specifies the maximum number of bytes to read. You can omit +// this parameter to scan the string until the first \0 byte. If maxBytesToRead is +// passed, and the string at [ptr, ptr+maxBytesToReadr[ contains a null byte in the +// middle, then the string will cut short at that byte index (i.e. maxBytesToRead will +// not produce a string of exact length [ptr, ptr+maxBytesToRead[) +// N.B. mixing frequent uses of UTF8ToString() with and without maxBytesToRead may +// throw JS JIT optimizations off, so it is worth to consider consistently using one +// style or the other. +/** + * @param {number} ptr + * @param {number=} maxBytesToRead + * @return {string} + */ +function UTF8ToString(ptr, maxBytesToRead) { + return ptr ? UTF8ArrayToString(HEAPU8, ptr, maxBytesToRead) : ''; +} + +// Copies the given Javascript String object 'str' to the given byte array at address 'outIdx', +// encoded in UTF8 form and null-terminated. The copy will require at most str.length*4+1 bytes of space in the HEAP. +// Use the function lengthBytesUTF8 to compute the exact number of bytes (excluding null terminator) that this function will write. +// Parameters: +// str: the Javascript string to copy. +// outU8Array: the array to copy to. Each index in this array is assumed to be one 8-byte element. +// outIdx: The starting offset in the array to begin the copying. +// maxBytesToWrite: The maximum number of bytes this function can write to the array. +// This count should include the null terminator, +// i.e. if maxBytesToWrite=1, only the null terminator will be written and nothing else. +// maxBytesToWrite=0 does not write any bytes to the output, not even the null terminator. +// Returns the number of bytes written, EXCLUDING the null terminator. + +function stringToUTF8Array(str, outU8Array, outIdx, maxBytesToWrite) { + if (!(maxBytesToWrite > 0)) // Parameter maxBytesToWrite is not optional. Negative values, 0, null, undefined and false each don't write out any bytes. + return 0; + + var startIdx = outIdx; + var endIdx = outIdx + maxBytesToWrite - 1; // -1 for string null terminator. + for (var i = 0; i < str.length; ++i) { + // Gotcha: charCodeAt returns a 16-bit word that is a UTF-16 encoded code unit, not a Unicode code point of the character! So decode UTF16->UTF32->UTF8. + // See http://unicode.org/faq/utf_bom.html#utf16-3 + // For UTF8 byte structure, see http://en.wikipedia.org/wiki/UTF-8#Description and https://www.ietf.org/rfc/rfc2279.txt and https://tools.ietf.org/html/rfc3629 + var u = str.charCodeAt(i); // possibly a lead surrogate + if (u >= 0xD800 && u <= 0xDFFF) { + var u1 = str.charCodeAt(++i); + u = 0x10000 + ((u & 0x3FF) << 10) | (u1 & 0x3FF); + } + if (u <= 0x7F) { + if (outIdx >= endIdx) break; + outU8Array[outIdx++] = u; + } else if (u <= 0x7FF) { + if (outIdx + 1 >= endIdx) break; + outU8Array[outIdx++] = 0xC0 | (u >> 6); + outU8Array[outIdx++] = 0x80 | (u & 63); + } else if (u <= 0xFFFF) { + if (outIdx + 2 >= endIdx) break; + outU8Array[outIdx++] = 0xE0 | (u >> 12); + outU8Array[outIdx++] = 0x80 | ((u >> 6) & 63); + outU8Array[outIdx++] = 0x80 | (u & 63); + } else { + if (outIdx + 3 >= endIdx) break; + if (u >= 0x200000) warnOnce('Invalid Unicode code point 0x' + u.toString(16) + ' encountered when serializing a JS string to an UTF-8 string on the asm.js/wasm heap! (Valid unicode code points should be in range 0-0x1FFFFF).'); + outU8Array[outIdx++] = 0xF0 | (u >> 18); + outU8Array[outIdx++] = 0x80 | ((u >> 12) & 63); + outU8Array[outIdx++] = 0x80 | ((u >> 6) & 63); + outU8Array[outIdx++] = 0x80 | (u & 63); + } + } + // Null-terminate the pointer to the buffer. + outU8Array[outIdx] = 0; + return outIdx - startIdx; +} + +// Copies the given Javascript String object 'str' to the emscripten HEAP at address 'outPtr', +// null-terminated and encoded in UTF8 form. The copy will require at most str.length*4+1 bytes of space in the HEAP. +// Use the function lengthBytesUTF8 to compute the exact number of bytes (excluding null terminator) that this function will write. +// Returns the number of bytes written, EXCLUDING the null terminator. + +function stringToUTF8(str, outPtr, maxBytesToWrite) { + assert(typeof maxBytesToWrite == 'number', 'stringToUTF8(str, outPtr, maxBytesToWrite) is missing the third parameter that specifies the length of the output buffer!'); + return stringToUTF8Array(str, HEAPU8,outPtr, maxBytesToWrite); +} + +// Returns the number of bytes the given Javascript string takes if encoded as a UTF8 byte array, EXCLUDING the null terminator byte. +function lengthBytesUTF8(str) { + var len = 0; + for (var i = 0; i < str.length; ++i) { + // Gotcha: charCodeAt returns a 16-bit word that is a UTF-16 encoded code unit, not a Unicode code point of the character! So decode UTF16->UTF32->UTF8. + // See http://unicode.org/faq/utf_bom.html#utf16-3 + var u = str.charCodeAt(i); // possibly a lead surrogate + if (u >= 0xD800 && u <= 0xDFFF) u = 0x10000 + ((u & 0x3FF) << 10) | (str.charCodeAt(++i) & 0x3FF); + if (u <= 0x7F) ++len; + else if (u <= 0x7FF) len += 2; + else if (u <= 0xFFFF) len += 3; + else len += 4; + } + return len; +} + + +// Given a pointer 'ptr' to a null-terminated UTF16LE-encoded string in the emscripten HEAP, returns +// a copy of that string as a Javascript String object. + +var UTF16Decoder = typeof TextDecoder !== 'undefined' ? new TextDecoder('utf-16le') : undefined; +function UTF16ToString(ptr) { + assert(ptr % 2 == 0, 'Pointer passed to UTF16ToString must be aligned to two bytes!'); + var endPtr = ptr; + // TextDecoder needs to know the byte length in advance, it doesn't stop on null terminator by itself. + // Also, use the length info to avoid running tiny strings through TextDecoder, since .subarray() allocates garbage. + var idx = endPtr >> 1; + while (HEAP16[idx]) ++idx; + endPtr = idx << 1; + + if (endPtr - ptr > 32 && UTF16Decoder) { + return UTF16Decoder.decode(HEAPU8.subarray(ptr, endPtr)); + } else { + var i = 0; + + var str = ''; + while (1) { + var codeUnit = HEAP16[(((ptr)+(i*2))>>1)]; + if (codeUnit == 0) return str; + ++i; + // fromCharCode constructs a character from a UTF-16 code unit, so we can pass the UTF16 string right through. + str += String.fromCharCode(codeUnit); + } + } +} + +// Copies the given Javascript String object 'str' to the emscripten HEAP at address 'outPtr', +// null-terminated and encoded in UTF16 form. The copy will require at most str.length*4+2 bytes of space in the HEAP. +// Use the function lengthBytesUTF16() to compute the exact number of bytes (excluding null terminator) that this function will write. +// Parameters: +// str: the Javascript string to copy. +// outPtr: Byte address in Emscripten HEAP where to write the string to. +// maxBytesToWrite: The maximum number of bytes this function can write to the array. This count should include the null +// terminator, i.e. if maxBytesToWrite=2, only the null terminator will be written and nothing else. +// maxBytesToWrite<2 does not write any bytes to the output, not even the null terminator. +// Returns the number of bytes written, EXCLUDING the null terminator. + +function stringToUTF16(str, outPtr, maxBytesToWrite) { + assert(outPtr % 2 == 0, 'Pointer passed to stringToUTF16 must be aligned to two bytes!'); + assert(typeof maxBytesToWrite == 'number', 'stringToUTF16(str, outPtr, maxBytesToWrite) is missing the third parameter that specifies the length of the output buffer!'); + // Backwards compatibility: if max bytes is not specified, assume unsafe unbounded write is allowed. + if (maxBytesToWrite === undefined) { + maxBytesToWrite = 0x7FFFFFFF; + } + if (maxBytesToWrite < 2) return 0; + maxBytesToWrite -= 2; // Null terminator. + var startPtr = outPtr; + var numCharsToWrite = (maxBytesToWrite < str.length*2) ? (maxBytesToWrite / 2) : str.length; + for (var i = 0; i < numCharsToWrite; ++i) { + // charCodeAt returns a UTF-16 encoded code unit, so it can be directly written to the HEAP. + var codeUnit = str.charCodeAt(i); // possibly a lead surrogate + HEAP16[((outPtr)>>1)]=codeUnit; + outPtr += 2; + } + // Null-terminate the pointer to the HEAP. + HEAP16[((outPtr)>>1)]=0; + return outPtr - startPtr; +} + +// Returns the number of bytes the given Javascript string takes if encoded as a UTF16 byte array, EXCLUDING the null terminator byte. + +function lengthBytesUTF16(str) { + return str.length*2; +} + +function UTF32ToString(ptr) { + assert(ptr % 4 == 0, 'Pointer passed to UTF32ToString must be aligned to four bytes!'); + var i = 0; + + var str = ''; + while (1) { + var utf32 = HEAP32[(((ptr)+(i*4))>>2)]; + if (utf32 == 0) + return str; + ++i; + // Gotcha: fromCharCode constructs a character from a UTF-16 encoded code (pair), not from a Unicode code point! So encode the code point to UTF-16 for constructing. + // See http://unicode.org/faq/utf_bom.html#utf16-3 + if (utf32 >= 0x10000) { + var ch = utf32 - 0x10000; + str += String.fromCharCode(0xD800 | (ch >> 10), 0xDC00 | (ch & 0x3FF)); + } else { + str += String.fromCharCode(utf32); + } + } +} + +// Copies the given Javascript String object 'str' to the emscripten HEAP at address 'outPtr', +// null-terminated and encoded in UTF32 form. The copy will require at most str.length*4+4 bytes of space in the HEAP. +// Use the function lengthBytesUTF32() to compute the exact number of bytes (excluding null terminator) that this function will write. +// Parameters: +// str: the Javascript string to copy. +// outPtr: Byte address in Emscripten HEAP where to write the string to. +// maxBytesToWrite: The maximum number of bytes this function can write to the array. This count should include the null +// terminator, i.e. if maxBytesToWrite=4, only the null terminator will be written and nothing else. +// maxBytesToWrite<4 does not write any bytes to the output, not even the null terminator. +// Returns the number of bytes written, EXCLUDING the null terminator. + +function stringToUTF32(str, outPtr, maxBytesToWrite) { + assert(outPtr % 4 == 0, 'Pointer passed to stringToUTF32 must be aligned to four bytes!'); + assert(typeof maxBytesToWrite == 'number', 'stringToUTF32(str, outPtr, maxBytesToWrite) is missing the third parameter that specifies the length of the output buffer!'); + // Backwards compatibility: if max bytes is not specified, assume unsafe unbounded write is allowed. + if (maxBytesToWrite === undefined) { + maxBytesToWrite = 0x7FFFFFFF; + } + if (maxBytesToWrite < 4) return 0; + var startPtr = outPtr; + var endPtr = startPtr + maxBytesToWrite - 4; + for (var i = 0; i < str.length; ++i) { + // Gotcha: charCodeAt returns a 16-bit word that is a UTF-16 encoded code unit, not a Unicode code point of the character! We must decode the string to UTF-32 to the heap. + // See http://unicode.org/faq/utf_bom.html#utf16-3 + var codeUnit = str.charCodeAt(i); // possibly a lead surrogate + if (codeUnit >= 0xD800 && codeUnit <= 0xDFFF) { + var trailSurrogate = str.charCodeAt(++i); + codeUnit = 0x10000 + ((codeUnit & 0x3FF) << 10) | (trailSurrogate & 0x3FF); + } + HEAP32[((outPtr)>>2)]=codeUnit; + outPtr += 4; + if (outPtr + 4 > endPtr) break; + } + // Null-terminate the pointer to the HEAP. + HEAP32[((outPtr)>>2)]=0; + return outPtr - startPtr; +} + +// Returns the number of bytes the given Javascript string takes if encoded as a UTF16 byte array, EXCLUDING the null terminator byte. + +function lengthBytesUTF32(str) { + var len = 0; + for (var i = 0; i < str.length; ++i) { + // Gotcha: charCodeAt returns a 16-bit word that is a UTF-16 encoded code unit, not a Unicode code point of the character! We must decode the string to UTF-32 to the heap. + // See http://unicode.org/faq/utf_bom.html#utf16-3 + var codeUnit = str.charCodeAt(i); + if (codeUnit >= 0xD800 && codeUnit <= 0xDFFF) ++i; // possibly a lead surrogate, so skip over the tail surrogate. + len += 4; + } + + return len; +} + +// Allocate heap space for a JS string, and write it there. +// It is the responsibility of the caller to free() that memory. +function allocateUTF8(str) { + var size = lengthBytesUTF8(str) + 1; + var ret = _malloc(size); + if (ret) stringToUTF8Array(str, HEAP8, ret, size); + return ret; +} + +// Allocate stack space for a JS string, and write it there. +function allocateUTF8OnStack(str) { + var size = lengthBytesUTF8(str) + 1; + var ret = stackAlloc(size); + stringToUTF8Array(str, HEAP8, ret, size); + return ret; +} + +// Deprecated: This function should not be called because it is unsafe and does not provide +// a maximum length limit of how many bytes it is allowed to write. Prefer calling the +// function stringToUTF8Array() instead, which takes in a maximum length that can be used +// to be secure from out of bounds writes. +/** @deprecated */ +function writeStringToMemory(string, buffer, dontAddNull) { + warnOnce('writeStringToMemory is deprecated and should not be called! Use stringToUTF8() instead!'); + + var /** @type {number} */ lastChar, /** @type {number} */ end; + if (dontAddNull) { + // stringToUTF8Array always appends null. If we don't want to do that, remember the + // character that existed at the location where the null will be placed, and restore + // that after the write (below). + end = buffer + lengthBytesUTF8(string); + lastChar = HEAP8[end]; + } + stringToUTF8(string, buffer, Infinity); + if (dontAddNull) HEAP8[end] = lastChar; // Restore the value under the null character. +} + +function writeArrayToMemory(array, buffer) { + assert(array.length >= 0, 'writeArrayToMemory array must have a length (should be an array or typed array)') + HEAP8.set(array, buffer); +} + +function writeAsciiToMemory(str, buffer, dontAddNull) { + for (var i = 0; i < str.length; ++i) { + assert(str.charCodeAt(i) === str.charCodeAt(i)&0xff); + HEAP8[((buffer++)>>0)]=str.charCodeAt(i); + } + // Null-terminate the pointer to the HEAP. + if (!dontAddNull) HEAP8[((buffer)>>0)]=0; +} + + + + +// Memory management + +var PAGE_SIZE = 16384; +var WASM_PAGE_SIZE = 65536; +var ASMJS_PAGE_SIZE = 16777216; + +function alignUp(x, multiple) { + if (x % multiple > 0) { + x += multiple - (x % multiple); + } + return x; +} + +var HEAP, +/** @type {ArrayBuffer} */ + buffer, +/** @type {Int8Array} */ + HEAP8, +/** @type {Uint8Array} */ + HEAPU8, +/** @type {Int16Array} */ + HEAP16, +/** @type {Uint16Array} */ + HEAPU16, +/** @type {Int32Array} */ + HEAP32, +/** @type {Uint32Array} */ + HEAPU32, +/** @type {Float32Array} */ + HEAPF32, +/** @type {Float64Array} */ + HEAPF64; + +function updateGlobalBufferAndViews(buf) { + buffer = buf; + Module['HEAP8'] = HEAP8 = new Int8Array(buf); + Module['HEAP16'] = HEAP16 = new Int16Array(buf); + Module['HEAP32'] = HEAP32 = new Int32Array(buf); + Module['HEAPU8'] = HEAPU8 = new Uint8Array(buf); + Module['HEAPU16'] = HEAPU16 = new Uint16Array(buf); + Module['HEAPU32'] = HEAPU32 = new Uint32Array(buf); + Module['HEAPF32'] = HEAPF32 = new Float32Array(buf); + Module['HEAPF64'] = HEAPF64 = new Float64Array(buf); +} + + +var STATIC_BASE = 1024, + STACK_BASE = 316128, + STACKTOP = STACK_BASE, + STACK_MAX = 5559008, + DYNAMIC_BASE = 5559008, + DYNAMICTOP_PTR = 316096; + +assert(STACK_BASE % 16 === 0, 'stack must start aligned'); +assert(DYNAMIC_BASE % 16 === 0, 'heap must start aligned'); + + + +var TOTAL_STACK = 5242880; +if (Module['TOTAL_STACK']) assert(TOTAL_STACK === Module['TOTAL_STACK'], 'the stack size can no longer be determined at runtime') + +var INITIAL_TOTAL_MEMORY = Module['TOTAL_MEMORY'] || 16777216;if (!Object.getOwnPropertyDescriptor(Module, 'TOTAL_MEMORY')) Object.defineProperty(Module, 'TOTAL_MEMORY', { get: function() { abort('Module.TOTAL_MEMORY has been replaced with plain INITIAL_TOTAL_MEMORY') } }); + +assert(INITIAL_TOTAL_MEMORY >= TOTAL_STACK, 'TOTAL_MEMORY should be larger than TOTAL_STACK, was ' + INITIAL_TOTAL_MEMORY + '! (TOTAL_STACK=' + TOTAL_STACK + ')'); + +// check for full engine support (use string 'subarray' to avoid closure compiler confusion) +assert(typeof Int32Array !== 'undefined' && typeof Float64Array !== 'undefined' && Int32Array.prototype.subarray !== undefined && Int32Array.prototype.set !== undefined, + 'JS engine does not provide full typed array support'); + + + + + + + + if (Module['wasmMemory']) { + wasmMemory = Module['wasmMemory']; + } else + { + wasmMemory = new WebAssembly.Memory({ + 'initial': INITIAL_TOTAL_MEMORY / WASM_PAGE_SIZE + }); + } + + +if (wasmMemory) { + buffer = wasmMemory.buffer; +} + +// If the user provides an incorrect length, just use that length instead rather than providing the user to +// specifically provide the memory length with Module['TOTAL_MEMORY']. +INITIAL_TOTAL_MEMORY = buffer.byteLength; +assert(INITIAL_TOTAL_MEMORY % WASM_PAGE_SIZE === 0); +updateGlobalBufferAndViews(buffer); + +HEAP32[DYNAMICTOP_PTR>>2] = DYNAMIC_BASE; + + +// Initializes the stack cookie. Called at the startup of main and at the startup of each thread in pthreads mode. +function writeStackCookie() { + assert((STACK_MAX & 3) == 0); + HEAPU32[(STACK_MAX >> 2)-1] = 0x02135467; + HEAPU32[(STACK_MAX >> 2)-2] = 0x89BACDFE; +} + +function checkStackCookie() { + var cookie1 = HEAPU32[(STACK_MAX >> 2)-1]; + var cookie2 = HEAPU32[(STACK_MAX >> 2)-2]; + if (cookie1 != 0x02135467 || cookie2 != 0x89BACDFE) { + abort('Stack overflow! Stack cookie has been overwritten, expected hex dwords 0x89BACDFE and 0x02135467, but received 0x' + cookie2.toString(16) + ' ' + cookie1.toString(16)); + } + // Also test the global address 0 for integrity. + // We don't do this with ASan because ASan does its own checks for this. + if (HEAP32[0] !== 0x63736d65 /* 'emsc' */) abort('Runtime error: The application has corrupted its heap memory area (address zero)!'); +} + +function abortStackOverflow(allocSize) { + abort('Stack overflow! Attempted to allocate ' + allocSize + ' bytes on the stack, but stack has only ' + (STACK_MAX - stackSave() + allocSize) + ' bytes available!'); +} + + + HEAP32[0] = 0x63736d65; /* 'emsc' */ + + + +// Endianness check (note: assumes compiler arch was little-endian) +HEAP16[1] = 0x6373; +if (HEAPU8[2] !== 0x73 || HEAPU8[3] !== 0x63) throw 'Runtime error: expected the system to be little-endian!'; + +function abortFnPtrError(ptr, sig) { + abort("Invalid function pointer " + ptr + " called with signature '" + sig + "'. Perhaps this is an invalid value (e.g. caused by calling a virtual method on a NULL pointer)? Or calling a function with an incorrect type, which will fail? (it is worth building your source files with -Werror (warnings are errors), as warnings can indicate undefined behavior which can cause this). Build with ASSERTIONS=2 for more info."); +} + + + +function callRuntimeCallbacks(callbacks) { + while(callbacks.length > 0) { + var callback = callbacks.shift(); + if (typeof callback == 'function') { + callback(); + continue; + } + var func = callback.func; + if (typeof func === 'number') { + if (callback.arg === undefined) { + Module['dynCall_v'](func); + } else { + Module['dynCall_vi'](func, callback.arg); + } + } else { + func(callback.arg === undefined ? null : callback.arg); + } + } +} + +var __ATPRERUN__ = []; // functions called before the runtime is initialized +var __ATINIT__ = []; // functions called during startup +var __ATMAIN__ = []; // functions called when main() is to be run +var __ATEXIT__ = []; // functions called during shutdown +var __ATPOSTRUN__ = []; // functions called after the main() is called + +var runtimeInitialized = false; +var runtimeExited = false; + + +function preRun() { + + if (Module['preRun']) { + if (typeof Module['preRun'] == 'function') Module['preRun'] = [Module['preRun']]; + while (Module['preRun'].length) { + addOnPreRun(Module['preRun'].shift()); + } + } + + callRuntimeCallbacks(__ATPRERUN__); +} + +function initRuntime() { + checkStackCookie(); + assert(!runtimeInitialized); + runtimeInitialized = true; + if (!Module["noFSInit"] && !FS.init.initialized) FS.init(); +TTY.init(); + callRuntimeCallbacks(__ATINIT__); +} + +function preMain() { + checkStackCookie(); + FS.ignorePermissions = false; + callRuntimeCallbacks(__ATMAIN__); +} + +function exitRuntime() { + checkStackCookie(); + runtimeExited = true; +} + +function postRun() { + checkStackCookie(); + + if (Module['postRun']) { + if (typeof Module['postRun'] == 'function') Module['postRun'] = [Module['postRun']]; + while (Module['postRun'].length) { + addOnPostRun(Module['postRun'].shift()); + } + } + + callRuntimeCallbacks(__ATPOSTRUN__); +} + +function addOnPreRun(cb) { + __ATPRERUN__.unshift(cb); +} + +function addOnInit(cb) { + __ATINIT__.unshift(cb); +} + +function addOnPreMain(cb) { + __ATMAIN__.unshift(cb); +} + +function addOnExit(cb) { +} + +function addOnPostRun(cb) { + __ATPOSTRUN__.unshift(cb); +} + +function unSign(value, bits, ignore) { + if (value >= 0) { + return value; + } + return bits <= 32 ? 2*Math.abs(1 << (bits-1)) + value // Need some trickery, since if bits == 32, we are right at the limit of the bits JS uses in bitshifts + : Math.pow(2, bits) + value; +} +function reSign(value, bits, ignore) { + if (value <= 0) { + return value; + } + var half = bits <= 32 ? Math.abs(1 << (bits-1)) // abs is needed if bits == 32 + : Math.pow(2, bits-1); + if (value >= half && (bits <= 32 || value > half)) { // for huge values, we can hit the precision limit and always get true here. so don't do that + // but, in general there is no perfect solution here. With 64-bit ints, we get rounding and errors + // TODO: In i64 mode 1, resign the two parts separately and safely + value = -2*half + value; // Cannot bitshift half, as it may be at the limit of the bits JS uses in bitshifts + } + return value; +} + + +assert(Math.imul, 'This browser does not support Math.imul(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill'); +assert(Math.fround, 'This browser does not support Math.fround(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill'); +assert(Math.clz32, 'This browser does not support Math.clz32(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill'); +assert(Math.trunc, 'This browser does not support Math.trunc(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill'); + +var Math_abs = Math.abs; +var Math_cos = Math.cos; +var Math_sin = Math.sin; +var Math_tan = Math.tan; +var Math_acos = Math.acos; +var Math_asin = Math.asin; +var Math_atan = Math.atan; +var Math_atan2 = Math.atan2; +var Math_exp = Math.exp; +var Math_log = Math.log; +var Math_sqrt = Math.sqrt; +var Math_ceil = Math.ceil; +var Math_floor = Math.floor; +var Math_pow = Math.pow; +var Math_imul = Math.imul; +var Math_fround = Math.fround; +var Math_round = Math.round; +var Math_min = Math.min; +var Math_max = Math.max; +var Math_clz32 = Math.clz32; +var Math_trunc = Math.trunc; + + + +// A counter of dependencies for calling run(). If we need to +// do asynchronous work before running, increment this and +// decrement it. Incrementing must happen in a place like +// Module.preRun (used by emcc to add file preloading). +// Note that you can add dependencies in preRun, even though +// it happens right before run - run will be postponed until +// the dependencies are met. +var runDependencies = 0; +var runDependencyWatcher = null; +var dependenciesFulfilled = null; // overridden to take different actions when all run dependencies are fulfilled +var runDependencyTracking = {}; + +function getUniqueRunDependency(id) { + var orig = id; + while (1) { + if (!runDependencyTracking[id]) return id; + id = orig + Math.random(); + } + return id; +} + +function addRunDependency(id) { + runDependencies++; + + if (Module['monitorRunDependencies']) { + Module['monitorRunDependencies'](runDependencies); + } + + if (id) { + assert(!runDependencyTracking[id]); + runDependencyTracking[id] = 1; + if (runDependencyWatcher === null && typeof setInterval !== 'undefined') { + // Check for missing dependencies every few seconds + runDependencyWatcher = setInterval(function() { + if (ABORT) { + clearInterval(runDependencyWatcher); + runDependencyWatcher = null; + return; + } + var shown = false; + for (var dep in runDependencyTracking) { + if (!shown) { + shown = true; + err('still waiting on run dependencies:'); + } + err('dependency: ' + dep); + } + if (shown) { + err('(end of list)'); + } + }, 10000); + } + } else { + err('warning: run dependency added without ID'); + } +} + +function removeRunDependency(id) { + runDependencies--; + + if (Module['monitorRunDependencies']) { + Module['monitorRunDependencies'](runDependencies); + } + + if (id) { + assert(runDependencyTracking[id]); + delete runDependencyTracking[id]; + } else { + err('warning: run dependency removed without ID'); + } + if (runDependencies == 0) { + if (runDependencyWatcher !== null) { + clearInterval(runDependencyWatcher); + runDependencyWatcher = null; + } + if (dependenciesFulfilled) { + var callback = dependenciesFulfilled; + dependenciesFulfilled = null; + callback(); // can add another dependenciesFulfilled + } + } +} + +Module["preloadedImages"] = {}; // maps url to image data +Module["preloadedAudios"] = {}; // maps url to audio data + + +var memoryInitializer = null; + + + + + + + +// Copyright 2017 The Emscripten Authors. All rights reserved. +// Emscripten is available under two separate licenses, the MIT license and the +// University of Illinois/NCSA Open Source License. Both these licenses can be +// found in the LICENSE file. + +// Prefix of data URIs emitted by SINGLE_FILE and related options. +var dataURIPrefix = 'data:application/octet-stream;base64,'; + +// Indicates whether filename is a base64 data URI. +function isDataURI(filename) { + return String.prototype.startsWith ? + filename.startsWith(dataURIPrefix) : + filename.indexOf(dataURIPrefix) === 0; +} + + + + +var wasmBinaryFile = 'rhino3dm.wasm'; +if (!isDataURI(wasmBinaryFile)) { + wasmBinaryFile = locateFile(wasmBinaryFile); +} + +function getBinary() { + try { + if (wasmBinary) { + return new Uint8Array(wasmBinary); + } + + if (readBinary) { + return readBinary(wasmBinaryFile); + } else { + throw "both async and sync fetching of the wasm failed"; + } + } + catch (err) { + abort(err); + } +} + +function getBinaryPromise() { + // if we don't have the binary yet, and have the Fetch api, use that + // in some environments, like Electron's render process, Fetch api may be present, but have a different context than expected, let's only use it on the Web + if (!wasmBinary && (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER) && typeof fetch === 'function') { + return fetch(wasmBinaryFile, { credentials: 'same-origin' }).then(function(response) { + if (!response['ok']) { + throw "failed to load wasm binary file at '" + wasmBinaryFile + "'"; + } + return response['arrayBuffer'](); + }).catch(function () { + return getBinary(); + }); + } + // Otherwise, getBinary should be able to get it synchronously + return new Promise(function(resolve, reject) { + resolve(getBinary()); + }); +} + + + +// Create the wasm instance. +// Receives the wasm imports, returns the exports. +function createWasm(env) { + + // prepare imports + var info = { + 'env': env + , + 'global': { + 'NaN': NaN, + 'Infinity': Infinity + }, + 'global.Math': Math, + 'asm2wasm': asm2wasmImports + }; + // Load the wasm module and create an instance of using native support in the JS engine. + // handle a generated wasm instance, receiving its exports and + // performing other necessary setup + function receiveInstance(instance, module) { + var exports = instance.exports; + Module['asm'] = exports; + removeRunDependency('wasm-instantiate'); + } + // we can't run yet (except in a pthread, where we have a custom sync instantiator) + addRunDependency('wasm-instantiate'); + + + // Async compilation can be confusing when an error on the page overwrites Module + // (for example, if the order of elements is wrong, and the one defining Module is + // later), so we save Module and check it later. + var trueModule = Module; + function receiveInstantiatedSource(output) { + // 'output' is a WebAssemblyInstantiatedSource object which has both the module and instance. + // receiveInstance() will swap in the exports (to Module.asm) so they can be called + assert(Module === trueModule, 'the Module object should not be replaced during async compilation - perhaps the order of HTML elements is wrong?'); + trueModule = null; + // TODO: Due to Closure regression https://github.com/google/closure-compiler/issues/3193, the above line no longer optimizes out down to the following line. + // When the regression is fixed, can restore the above USE_PTHREADS-enabled path. + receiveInstance(output['instance']); + } + + + function instantiateArrayBuffer(receiver) { + return getBinaryPromise().then(function(binary) { + return WebAssembly.instantiate(binary, info); + }).then(receiver, function(reason) { + err('failed to asynchronously prepare wasm: ' + reason); + abort(reason); + }); + } + + // Prefer streaming instantiation if available. + function instantiateAsync() { + if (!wasmBinary && + typeof WebAssembly.instantiateStreaming === 'function' && + !isDataURI(wasmBinaryFile) && + typeof fetch === 'function') { + fetch(wasmBinaryFile, { credentials: 'same-origin' }).then(function (response) { + var result = WebAssembly.instantiateStreaming(response, info); + return result.then(receiveInstantiatedSource, function(reason) { + // We expect the most common failure cause to be a bad MIME type for the binary, + // in which case falling back to ArrayBuffer instantiation should work. + err('wasm streaming compile failed: ' + reason); + err('falling back to ArrayBuffer instantiation'); + instantiateArrayBuffer(receiveInstantiatedSource); + }); + }); + } else { + return instantiateArrayBuffer(receiveInstantiatedSource); + } + } + // User shell pages can write their own Module.instantiateWasm = function(imports, successCallback) callback + // to manually instantiate the Wasm module themselves. This allows pages to run the instantiation parallel + // to any other async startup actions they are performing. + if (Module['instantiateWasm']) { + try { + var exports = Module['instantiateWasm'](info, receiveInstance); + return exports; + } catch(e) { + err('Module.instantiateWasm callback failed with error: ' + e); + return false; + } + } + + instantiateAsync(); + return {}; // no exports yet; we'll fill them in later +} + +// Provide an "asm.js function" for the application, called to "link" the asm.js module. We instantiate +// the wasm module at that time, and it receives imports and provides exports and so forth, the app +// doesn't need to care that it is wasm or asm.js. + +Module['asm'] = function(global, env, providedBuffer) { + // memory was already allocated (so js could use the buffer) + env['memory'] = wasmMemory + ; + // import table + env['table'] = wasmTable = new WebAssembly.Table({ + 'initial': 464128, + 'maximum': 464128, + 'element': 'anyfunc' + }); + // With the wasm backend __memory_base and __table_base and only needed for + // relocatable output. + env['__memory_base'] = 1024; // tell the memory segments where to place themselves + // table starts at 0 by default (even in dynamic linking, for the main module) + env['__table_base'] = 0; + + var exports = createWasm(env); + assert(exports, 'binaryen setup failed (no wasm support?)'); + return exports; +}; + +// Globals used by JS i64 conversions +var tempDouble; +var tempI64; + +// === Body === + +var ASM_CONSTS = []; + + + + + +// STATICTOP = STATIC_BASE + 315104; +/* global initializers */ __ATINIT__.push({ func: function() { globalCtors() } }); + + + + + + + + +/* no memory initializer */ +var tempDoublePtr = 316112 +assert(tempDoublePtr % 8 == 0); + +function copyTempFloat(ptr) { // functions, because inlining this code increases code size too much + HEAP8[tempDoublePtr] = HEAP8[ptr]; + HEAP8[tempDoublePtr+1] = HEAP8[ptr+1]; + HEAP8[tempDoublePtr+2] = HEAP8[ptr+2]; + HEAP8[tempDoublePtr+3] = HEAP8[ptr+3]; +} + +function copyTempDouble(ptr) { + HEAP8[tempDoublePtr] = HEAP8[ptr]; + HEAP8[tempDoublePtr+1] = HEAP8[ptr+1]; + HEAP8[tempDoublePtr+2] = HEAP8[ptr+2]; + HEAP8[tempDoublePtr+3] = HEAP8[ptr+3]; + HEAP8[tempDoublePtr+4] = HEAP8[ptr+4]; + HEAP8[tempDoublePtr+5] = HEAP8[ptr+5]; + HEAP8[tempDoublePtr+6] = HEAP8[ptr+6]; + HEAP8[tempDoublePtr+7] = HEAP8[ptr+7]; +} + +// {{PRE_LIBRARY}} + + + function demangle(func) { + warnOnce('warning: build with -s DEMANGLE_SUPPORT=1 to link in libcxxabi demangling'); + return func; + } + + function demangleAll(text) { + var regex = + /\b__Z[\w\d_]+/g; + return text.replace(regex, + function(x) { + var y = demangle(x); + return x === y ? x : (y + ' [' + x + ']'); + }); + } + + function jsStackTrace() { + var err = new Error(); + if (!err.stack) { + // IE10+ special cases: It does have callstack info, but it is only populated if an Error object is thrown, + // so try that as a special-case. + try { + throw new Error(0); + } catch(e) { + err = e; + } + if (!err.stack) { + return '(no stack trace available)'; + } + } + return err.stack.toString(); + } + + function stackTrace() { + var js = jsStackTrace(); + if (Module['extraStackTrace']) js += '\n' + Module['extraStackTrace'](); + return demangleAll(js); + } + + + function ___atomic_fetch_add_8(ptr, vall, valh, memmodel) { + var l = HEAP32[((ptr)>>2)]; + var h = HEAP32[(((ptr)+(4))>>2)]; + HEAP32[((ptr)>>2)]=_i64Add(l, h, vall, valh); + HEAP32[(((ptr)+(4))>>2)]=getTempRet0(); + return ((setTempRet0(h),l)|0); + } + + + var ENV={};function ___buildEnvironment(environ) { + // WARNING: Arbitrary limit! + var MAX_ENV_VALUES = 64; + var TOTAL_ENV_SIZE = 1024; + + // Statically allocate memory for the environment. + var poolPtr; + var envPtr; + if (!___buildEnvironment.called) { + ___buildEnvironment.called = true; + // Set default values. Use string keys for Closure Compiler compatibility. + ENV['USER'] = ENV['LOGNAME'] = 'web_user'; + ENV['PATH'] = '/'; + ENV['PWD'] = '/'; + ENV['HOME'] = '/home/web_user'; + // Browser language detection #8751 + ENV['LANG'] = ((typeof navigator === 'object' && navigator.languages && navigator.languages[0]) || 'C').replace('-', '_') + '.UTF-8'; + ENV['_'] = thisProgram; + // Allocate memory. + poolPtr = getMemory(TOTAL_ENV_SIZE); + envPtr = getMemory(MAX_ENV_VALUES * 4); + HEAP32[((envPtr)>>2)]=poolPtr; + HEAP32[((environ)>>2)]=envPtr; + } else { + envPtr = HEAP32[((environ)>>2)]; + poolPtr = HEAP32[((envPtr)>>2)]; + } + + // Collect key=value lines. + var strings = []; + var totalSize = 0; + for (var key in ENV) { + if (typeof ENV[key] === 'string') { + var line = key + '=' + ENV[key]; + strings.push(line); + totalSize += line.length; + } + } + if (totalSize > TOTAL_ENV_SIZE) { + throw new Error('Environment size exceeded TOTAL_ENV_SIZE!'); + } + + // Make new. + var ptrSize = 4; + for (var i = 0; i < strings.length; i++) { + var line = strings[i]; + writeAsciiToMemory(line, poolPtr); + HEAP32[(((envPtr)+(i * ptrSize))>>2)]=poolPtr; + poolPtr += line.length + 1; + } + HEAP32[(((envPtr)+(strings.length * ptrSize))>>2)]=0; + } + + function ___cxa_allocate_exception(size) { + return _malloc(size); + } + + + var ___exception_infos={}; + + var ___exception_caught= []; + + function ___exception_addRef(ptr) { + if (!ptr) return; + var info = ___exception_infos[ptr]; + info.refcount++; + } + + function ___exception_deAdjust(adjusted) { + if (!adjusted || ___exception_infos[adjusted]) return adjusted; + for (var key in ___exception_infos) { + var ptr = +key; // the iteration key is a string, and if we throw this, it must be an integer as that is what we look for + var adj = ___exception_infos[ptr].adjusted; + var len = adj.length; + for (var i = 0; i < len; i++) { + if (adj[i] === adjusted) { + return ptr; + } + } + } + return adjusted; + }function ___cxa_begin_catch(ptr) { + var info = ___exception_infos[ptr]; + if (info && !info.caught) { + info.caught = true; + __ZSt18uncaught_exceptionv.uncaught_exceptions--; + } + if (info) info.rethrown = false; + ___exception_caught.push(ptr); + ___exception_addRef(___exception_deAdjust(ptr)); + return ptr; + } + + function ___cxa_pure_virtual() { + ABORT = true; + + throw 'Pure virtual function called!'; + } + + + var ___exception_last=0;function ___cxa_throw(ptr, type, destructor) { + ___exception_infos[ptr] = { + ptr: ptr, + adjusted: [ptr], + type: type, + destructor: destructor, + refcount: 0, + caught: false, + rethrown: false + }; + ___exception_last = ptr; + if (!("uncaught_exception" in __ZSt18uncaught_exceptionv)) { + __ZSt18uncaught_exceptionv.uncaught_exceptions = 1; + } else { + __ZSt18uncaught_exceptionv.uncaught_exceptions++; + } + throw ptr + " - Exception catching is disabled, this exception cannot be caught. Compile with -s DISABLE_EXCEPTION_CATCHING=0 or DISABLE_EXCEPTION_CATCHING=2 to catch."; + } + + function ___cxa_uncaught_exceptions() { + return __ZSt18uncaught_exceptionv.uncaught_exceptions; + } + + function ___gxx_personality_v0() { + } + + function ___lock() {} + + + + var PATH={splitPath:function (filename) { + var splitPathRe = /^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/; + return splitPathRe.exec(filename).slice(1); + },normalizeArray:function (parts, allowAboveRoot) { + // if the path tries to go above the root, `up` ends up > 0 + var up = 0; + for (var i = parts.length - 1; i >= 0; i--) { + var last = parts[i]; + if (last === '.') { + parts.splice(i, 1); + } else if (last === '..') { + parts.splice(i, 1); + up++; + } else if (up) { + parts.splice(i, 1); + up--; + } + } + // if the path is allowed to go above the root, restore leading ..s + if (allowAboveRoot) { + for (; up; up--) { + parts.unshift('..'); + } + } + return parts; + },normalize:function (path) { + var isAbsolute = path.charAt(0) === '/', + trailingSlash = path.substr(-1) === '/'; + // Normalize the path + path = PATH.normalizeArray(path.split('/').filter(function(p) { + return !!p; + }), !isAbsolute).join('/'); + if (!path && !isAbsolute) { + path = '.'; + } + if (path && trailingSlash) { + path += '/'; + } + return (isAbsolute ? '/' : '') + path; + },dirname:function (path) { + var result = PATH.splitPath(path), + root = result[0], + dir = result[1]; + if (!root && !dir) { + // No dirname whatsoever + return '.'; + } + if (dir) { + // It has a dirname, strip trailing slash + dir = dir.substr(0, dir.length - 1); + } + return root + dir; + },basename:function (path) { + // EMSCRIPTEN return '/'' for '/', not an empty string + if (path === '/') return '/'; + var lastSlash = path.lastIndexOf('/'); + if (lastSlash === -1) return path; + return path.substr(lastSlash+1); + },extname:function (path) { + return PATH.splitPath(path)[3]; + },join:function () { + var paths = Array.prototype.slice.call(arguments, 0); + return PATH.normalize(paths.join('/')); + },join2:function (l, r) { + return PATH.normalize(l + '/' + r); + }}; + + + function ___setErrNo(value) { + if (Module['___errno_location']) HEAP32[((Module['___errno_location']())>>2)]=value; + else err('failed to set errno from JS'); + return value; + } + + var PATH_FS={resolve:function () { + var resolvedPath = '', + resolvedAbsolute = false; + for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) { + var path = (i >= 0) ? arguments[i] : FS.cwd(); + // Skip empty and invalid entries + if (typeof path !== 'string') { + throw new TypeError('Arguments to path.resolve must be strings'); + } else if (!path) { + return ''; // an invalid portion invalidates the whole thing + } + resolvedPath = path + '/' + resolvedPath; + resolvedAbsolute = path.charAt(0) === '/'; + } + // At this point the path should be resolved to a full absolute path, but + // handle relative paths to be safe (might happen when process.cwd() fails) + resolvedPath = PATH.normalizeArray(resolvedPath.split('/').filter(function(p) { + return !!p; + }), !resolvedAbsolute).join('/'); + return ((resolvedAbsolute ? '/' : '') + resolvedPath) || '.'; + },relative:function (from, to) { + from = PATH_FS.resolve(from).substr(1); + to = PATH_FS.resolve(to).substr(1); + function trim(arr) { + var start = 0; + for (; start < arr.length; start++) { + if (arr[start] !== '') break; + } + var end = arr.length - 1; + for (; end >= 0; end--) { + if (arr[end] !== '') break; + } + if (start > end) return []; + return arr.slice(start, end - start + 1); + } + var fromParts = trim(from.split('/')); + var toParts = trim(to.split('/')); + var length = Math.min(fromParts.length, toParts.length); + var samePartsLength = length; + for (var i = 0; i < length; i++) { + if (fromParts[i] !== toParts[i]) { + samePartsLength = i; + break; + } + } + var outputParts = []; + for (var i = samePartsLength; i < fromParts.length; i++) { + outputParts.push('..'); + } + outputParts = outputParts.concat(toParts.slice(samePartsLength)); + return outputParts.join('/'); + }}; + + var TTY={ttys:[],init:function () { + // https://github.com/emscripten-core/emscripten/pull/1555 + // if (ENVIRONMENT_IS_NODE) { + // // currently, FS.init does not distinguish if process.stdin is a file or TTY + // // device, it always assumes it's a TTY device. because of this, we're forcing + // // process.stdin to UTF8 encoding to at least make stdin reading compatible + // // with text files until FS.init can be refactored. + // process['stdin']['setEncoding']('utf8'); + // } + },shutdown:function () { + // https://github.com/emscripten-core/emscripten/pull/1555 + // if (ENVIRONMENT_IS_NODE) { + // // inolen: any idea as to why node -e 'process.stdin.read()' wouldn't exit immediately (with process.stdin being a tty)? + // // isaacs: because now it's reading from the stream, you've expressed interest in it, so that read() kicks off a _read() which creates a ReadReq operation + // // inolen: I thought read() in that case was a synchronous operation that just grabbed some amount of buffered data if it exists? + // // isaacs: it is. but it also triggers a _read() call, which calls readStart() on the handle + // // isaacs: do process.stdin.pause() and i'd think it'd probably close the pending call + // process['stdin']['pause'](); + // } + },register:function (dev, ops) { + TTY.ttys[dev] = { input: [], output: [], ops: ops }; + FS.registerDevice(dev, TTY.stream_ops); + },stream_ops:{open:function (stream) { + var tty = TTY.ttys[stream.node.rdev]; + if (!tty) { + throw new FS.ErrnoError(19); + } + stream.tty = tty; + stream.seekable = false; + },close:function (stream) { + // flush any pending line data + stream.tty.ops.flush(stream.tty); + },flush:function (stream) { + stream.tty.ops.flush(stream.tty); + },read:function (stream, buffer, offset, length, pos /* ignored */) { + if (!stream.tty || !stream.tty.ops.get_char) { + throw new FS.ErrnoError(6); + } + var bytesRead = 0; + for (var i = 0; i < length; i++) { + var result; + try { + result = stream.tty.ops.get_char(stream.tty); + } catch (e) { + throw new FS.ErrnoError(5); + } + if (result === undefined && bytesRead === 0) { + throw new FS.ErrnoError(11); + } + if (result === null || result === undefined) break; + bytesRead++; + buffer[offset+i] = result; + } + if (bytesRead) { + stream.node.timestamp = Date.now(); + } + return bytesRead; + },write:function (stream, buffer, offset, length, pos) { + if (!stream.tty || !stream.tty.ops.put_char) { + throw new FS.ErrnoError(6); + } + try { + for (var i = 0; i < length; i++) { + stream.tty.ops.put_char(stream.tty, buffer[offset+i]); + } + } catch (e) { + throw new FS.ErrnoError(5); + } + if (length) { + stream.node.timestamp = Date.now(); + } + return i; + }},default_tty_ops:{get_char:function (tty) { + if (!tty.input.length) { + var result = null; + if (ENVIRONMENT_IS_NODE) { + // we will read data by chunks of BUFSIZE + var BUFSIZE = 256; + var buf = Buffer.alloc ? Buffer.alloc(BUFSIZE) : new Buffer(BUFSIZE); + var bytesRead = 0; + + var isPosixPlatform = (process.platform != 'win32'); // Node doesn't offer a direct check, so test by exclusion + + var fd = process.stdin.fd; + if (isPosixPlatform) { + // Linux and Mac cannot use process.stdin.fd (which isn't set up as sync) + var usingDevice = false; + try { + fd = fs.openSync('/dev/stdin', 'r'); + usingDevice = true; + } catch (e) {} + } + + try { + bytesRead = fs.readSync(fd, buf, 0, BUFSIZE, null); + } catch(e) { + // Cross-platform differences: on Windows, reading EOF throws an exception, but on other OSes, + // reading EOF returns 0. Uniformize behavior by treating the EOF exception to return 0. + if (e.toString().indexOf('EOF') != -1) bytesRead = 0; + else throw e; + } + + if (usingDevice) { fs.closeSync(fd); } + if (bytesRead > 0) { + result = buf.slice(0, bytesRead).toString('utf-8'); + } else { + result = null; + } + } else + if (typeof window != 'undefined' && + typeof window.prompt == 'function') { + // Browser. + result = window.prompt('Input: '); // returns null on cancel + if (result !== null) { + result += '\n'; + } + } else if (typeof readline == 'function') { + // Command line. + result = readline(); + if (result !== null) { + result += '\n'; + } + } + if (!result) { + return null; + } + tty.input = intArrayFromString(result, true); + } + return tty.input.shift(); + },put_char:function (tty, val) { + if (val === null || val === 10) { + out(UTF8ArrayToString(tty.output, 0)); + tty.output = []; + } else { + if (val != 0) tty.output.push(val); // val == 0 would cut text output off in the middle. + } + },flush:function (tty) { + if (tty.output && tty.output.length > 0) { + out(UTF8ArrayToString(tty.output, 0)); + tty.output = []; + } + }},default_tty1_ops:{put_char:function (tty, val) { + if (val === null || val === 10) { + err(UTF8ArrayToString(tty.output, 0)); + tty.output = []; + } else { + if (val != 0) tty.output.push(val); + } + },flush:function (tty) { + if (tty.output && tty.output.length > 0) { + err(UTF8ArrayToString(tty.output, 0)); + tty.output = []; + } + }}}; + + var MEMFS={ops_table:null,mount:function (mount) { + return MEMFS.createNode(null, '/', 16384 | 511 /* 0777 */, 0); + },createNode:function (parent, name, mode, dev) { + if (FS.isBlkdev(mode) || FS.isFIFO(mode)) { + // no supported + throw new FS.ErrnoError(1); + } + if (!MEMFS.ops_table) { + MEMFS.ops_table = { + dir: { + node: { + getattr: MEMFS.node_ops.getattr, + setattr: MEMFS.node_ops.setattr, + lookup: MEMFS.node_ops.lookup, + mknod: MEMFS.node_ops.mknod, + rename: MEMFS.node_ops.rename, + unlink: MEMFS.node_ops.unlink, + rmdir: MEMFS.node_ops.rmdir, + readdir: MEMFS.node_ops.readdir, + symlink: MEMFS.node_ops.symlink + }, + stream: { + llseek: MEMFS.stream_ops.llseek + } + }, + file: { + node: { + getattr: MEMFS.node_ops.getattr, + setattr: MEMFS.node_ops.setattr + }, + stream: { + llseek: MEMFS.stream_ops.llseek, + read: MEMFS.stream_ops.read, + write: MEMFS.stream_ops.write, + allocate: MEMFS.stream_ops.allocate, + mmap: MEMFS.stream_ops.mmap, + msync: MEMFS.stream_ops.msync + } + }, + link: { + node: { + getattr: MEMFS.node_ops.getattr, + setattr: MEMFS.node_ops.setattr, + readlink: MEMFS.node_ops.readlink + }, + stream: {} + }, + chrdev: { + node: { + getattr: MEMFS.node_ops.getattr, + setattr: MEMFS.node_ops.setattr + }, + stream: FS.chrdev_stream_ops + } + }; + } + var node = FS.createNode(parent, name, mode, dev); + if (FS.isDir(node.mode)) { + node.node_ops = MEMFS.ops_table.dir.node; + node.stream_ops = MEMFS.ops_table.dir.stream; + node.contents = {}; + } else if (FS.isFile(node.mode)) { + node.node_ops = MEMFS.ops_table.file.node; + node.stream_ops = MEMFS.ops_table.file.stream; + node.usedBytes = 0; // The actual number of bytes used in the typed array, as opposed to contents.length which gives the whole capacity. + // When the byte data of the file is populated, this will point to either a typed array, or a normal JS array. Typed arrays are preferred + // for performance, and used by default. However, typed arrays are not resizable like normal JS arrays are, so there is a small disk size + // penalty involved for appending file writes that continuously grow a file similar to std::vector capacity vs used -scheme. + node.contents = null; + } else if (FS.isLink(node.mode)) { + node.node_ops = MEMFS.ops_table.link.node; + node.stream_ops = MEMFS.ops_table.link.stream; + } else if (FS.isChrdev(node.mode)) { + node.node_ops = MEMFS.ops_table.chrdev.node; + node.stream_ops = MEMFS.ops_table.chrdev.stream; + } + node.timestamp = Date.now(); + // add the new node to the parent + if (parent) { + parent.contents[name] = node; + } + return node; + },getFileDataAsRegularArray:function (node) { + if (node.contents && node.contents.subarray) { + var arr = []; + for (var i = 0; i < node.usedBytes; ++i) arr.push(node.contents[i]); + return arr; // Returns a copy of the original data. + } + return node.contents; // No-op, the file contents are already in a JS array. Return as-is. + },getFileDataAsTypedArray:function (node) { + if (!node.contents) return new Uint8Array; + if (node.contents.subarray) return node.contents.subarray(0, node.usedBytes); // Make sure to not return excess unused bytes. + return new Uint8Array(node.contents); + },expandFileStorage:function (node, newCapacity) { + var prevCapacity = node.contents ? node.contents.length : 0; + if (prevCapacity >= newCapacity) return; // No need to expand, the storage was already large enough. + // Don't expand strictly to the given requested limit if it's only a very small increase, but instead geometrically grow capacity. + // For small filesizes (<1MB), perform size*2 geometric increase, but for large sizes, do a much more conservative size*1.125 increase to + // avoid overshooting the allocation cap by a very large margin. + var CAPACITY_DOUBLING_MAX = 1024 * 1024; + newCapacity = Math.max(newCapacity, (prevCapacity * (prevCapacity < CAPACITY_DOUBLING_MAX ? 2.0 : 1.125)) | 0); + if (prevCapacity != 0) newCapacity = Math.max(newCapacity, 256); // At minimum allocate 256b for each file when expanding. + var oldContents = node.contents; + node.contents = new Uint8Array(newCapacity); // Allocate new storage. + if (node.usedBytes > 0) node.contents.set(oldContents.subarray(0, node.usedBytes), 0); // Copy old data over to the new storage. + return; + },resizeFileStorage:function (node, newSize) { + if (node.usedBytes == newSize) return; + if (newSize == 0) { + node.contents = null; // Fully decommit when requesting a resize to zero. + node.usedBytes = 0; + return; + } + if (!node.contents || node.contents.subarray) { // Resize a typed array if that is being used as the backing store. + var oldContents = node.contents; + node.contents = new Uint8Array(new ArrayBuffer(newSize)); // Allocate new storage. + if (oldContents) { + node.contents.set(oldContents.subarray(0, Math.min(newSize, node.usedBytes))); // Copy old data over to the new storage. + } + node.usedBytes = newSize; + return; + } + // Backing with a JS array. + if (!node.contents) node.contents = []; + if (node.contents.length > newSize) node.contents.length = newSize; + else while (node.contents.length < newSize) node.contents.push(0); + node.usedBytes = newSize; + },node_ops:{getattr:function (node) { + var attr = {}; + // device numbers reuse inode numbers. + attr.dev = FS.isChrdev(node.mode) ? node.id : 1; + attr.ino = node.id; + attr.mode = node.mode; + attr.nlink = 1; + attr.uid = 0; + attr.gid = 0; + attr.rdev = node.rdev; + if (FS.isDir(node.mode)) { + attr.size = 4096; + } else if (FS.isFile(node.mode)) { + attr.size = node.usedBytes; + } else if (FS.isLink(node.mode)) { + attr.size = node.link.length; + } else { + attr.size = 0; + } + attr.atime = new Date(node.timestamp); + attr.mtime = new Date(node.timestamp); + attr.ctime = new Date(node.timestamp); + // NOTE: In our implementation, st_blocks = Math.ceil(st_size/st_blksize), + // but this is not required by the standard. + attr.blksize = 4096; + attr.blocks = Math.ceil(attr.size / attr.blksize); + return attr; + },setattr:function (node, attr) { + if (attr.mode !== undefined) { + node.mode = attr.mode; + } + if (attr.timestamp !== undefined) { + node.timestamp = attr.timestamp; + } + if (attr.size !== undefined) { + MEMFS.resizeFileStorage(node, attr.size); + } + },lookup:function (parent, name) { + throw FS.genericErrors[2]; + },mknod:function (parent, name, mode, dev) { + return MEMFS.createNode(parent, name, mode, dev); + },rename:function (old_node, new_dir, new_name) { + // if we're overwriting a directory at new_name, make sure it's empty. + if (FS.isDir(old_node.mode)) { + var new_node; + try { + new_node = FS.lookupNode(new_dir, new_name); + } catch (e) { + } + if (new_node) { + for (var i in new_node.contents) { + throw new FS.ErrnoError(39); + } + } + } + // do the internal rewiring + delete old_node.parent.contents[old_node.name]; + old_node.name = new_name; + new_dir.contents[new_name] = old_node; + old_node.parent = new_dir; + },unlink:function (parent, name) { + delete parent.contents[name]; + },rmdir:function (parent, name) { + var node = FS.lookupNode(parent, name); + for (var i in node.contents) { + throw new FS.ErrnoError(39); + } + delete parent.contents[name]; + },readdir:function (node) { + var entries = ['.', '..']; + for (var key in node.contents) { + if (!node.contents.hasOwnProperty(key)) { + continue; + } + entries.push(key); + } + return entries; + },symlink:function (parent, newname, oldpath) { + var node = MEMFS.createNode(parent, newname, 511 /* 0777 */ | 40960, 0); + node.link = oldpath; + return node; + },readlink:function (node) { + if (!FS.isLink(node.mode)) { + throw new FS.ErrnoError(22); + } + return node.link; + }},stream_ops:{read:function (stream, buffer, offset, length, position) { + var contents = stream.node.contents; + if (position >= stream.node.usedBytes) return 0; + var size = Math.min(stream.node.usedBytes - position, length); + assert(size >= 0); + if (size > 8 && contents.subarray) { // non-trivial, and typed array + buffer.set(contents.subarray(position, position + size), offset); + } else { + for (var i = 0; i < size; i++) buffer[offset + i] = contents[position + i]; + } + return size; + },write:function (stream, buffer, offset, length, position, canOwn) { + // If memory can grow, we don't want to hold on to references of + // the memory Buffer, as they may get invalidated. That means + // we need to do a copy here. + // FIXME: this is inefficient as the file packager may have + // copied the data into memory already - we may want to + // integrate more there and let the file packager loading + // code be able to query if memory growth is on or off. + if (canOwn) { + warnOnce('file packager has copied file data into memory, but in memory growth we are forced to copy it again (see --no-heap-copy)'); + } + canOwn = false; + + if (!length) return 0; + var node = stream.node; + node.timestamp = Date.now(); + + if (buffer.subarray && (!node.contents || node.contents.subarray)) { // This write is from a typed array to a typed array? + if (canOwn) { + assert(position === 0, 'canOwn must imply no weird position inside the file'); + node.contents = buffer.subarray(offset, offset + length); + node.usedBytes = length; + return length; + } else if (node.usedBytes === 0 && position === 0) { // If this is a simple first write to an empty file, do a fast set since we don't need to care about old data. + node.contents = new Uint8Array(buffer.subarray(offset, offset + length)); + node.usedBytes = length; + return length; + } else if (position + length <= node.usedBytes) { // Writing to an already allocated and used subrange of the file? + node.contents.set(buffer.subarray(offset, offset + length), position); + return length; + } + } + + // Appending to an existing file and we need to reallocate, or source data did not come as a typed array. + MEMFS.expandFileStorage(node, position+length); + if (node.contents.subarray && buffer.subarray) node.contents.set(buffer.subarray(offset, offset + length), position); // Use typed array write if available. + else { + for (var i = 0; i < length; i++) { + node.contents[position + i] = buffer[offset + i]; // Or fall back to manual write if not. + } + } + node.usedBytes = Math.max(node.usedBytes, position+length); + return length; + },llseek:function (stream, offset, whence) { + var position = offset; + if (whence === 1) { // SEEK_CUR. + position += stream.position; + } else if (whence === 2) { // SEEK_END. + if (FS.isFile(stream.node.mode)) { + position += stream.node.usedBytes; + } + } + if (position < 0) { + throw new FS.ErrnoError(22); + } + return position; + },allocate:function (stream, offset, length) { + MEMFS.expandFileStorage(stream.node, offset + length); + stream.node.usedBytes = Math.max(stream.node.usedBytes, offset + length); + },mmap:function (stream, buffer, offset, length, position, prot, flags) { + if (!FS.isFile(stream.node.mode)) { + throw new FS.ErrnoError(19); + } + var ptr; + var allocated; + var contents = stream.node.contents; + // Only make a new copy when MAP_PRIVATE is specified. + if ( !(flags & 2) && + (contents.buffer === buffer || contents.buffer === buffer.buffer) ) { + // We can't emulate MAP_SHARED when the file is not backed by the buffer + // we're mapping to (e.g. the HEAP buffer). + allocated = false; + ptr = contents.byteOffset; + } else { + // Try to avoid unnecessary slices. + if (position > 0 || position + length < stream.node.usedBytes) { + if (contents.subarray) { + contents = contents.subarray(position, position + length); + } else { + contents = Array.prototype.slice.call(contents, position, position + length); + } + } + allocated = true; + // malloc() can lead to growing the heap. If targeting the heap, we need to + // re-acquire the heap buffer object in case growth had occurred. + var fromHeap = (buffer.buffer == HEAP8.buffer); + ptr = _malloc(length); + if (!ptr) { + throw new FS.ErrnoError(12); + } + (fromHeap ? HEAP8 : buffer).set(contents, ptr); + } + return { ptr: ptr, allocated: allocated }; + },msync:function (stream, buffer, offset, length, mmapFlags) { + if (!FS.isFile(stream.node.mode)) { + throw new FS.ErrnoError(19); + } + if (mmapFlags & 2) { + // MAP_PRIVATE calls need not to be synced back to underlying fs + return 0; + } + + var bytesWritten = MEMFS.stream_ops.write(stream, buffer, 0, length, offset, false); + // should we check if bytesWritten and length are the same? + return 0; + }}}; + + var IDBFS={dbs:{},indexedDB:function () { + if (typeof indexedDB !== 'undefined') return indexedDB; + var ret = null; + if (typeof window === 'object') ret = window.indexedDB || window.mozIndexedDB || window.webkitIndexedDB || window.msIndexedDB; + assert(ret, 'IDBFS used, but indexedDB not supported'); + return ret; + },DB_VERSION:21,DB_STORE_NAME:"FILE_DATA",mount:function (mount) { + // reuse all of the core MEMFS functionality + return MEMFS.mount.apply(null, arguments); + },syncfs:function (mount, populate, callback) { + IDBFS.getLocalSet(mount, function(err, local) { + if (err) return callback(err); + + IDBFS.getRemoteSet(mount, function(err, remote) { + if (err) return callback(err); + + var src = populate ? remote : local; + var dst = populate ? local : remote; + + IDBFS.reconcile(src, dst, callback); + }); + }); + },getDB:function (name, callback) { + // check the cache first + var db = IDBFS.dbs[name]; + if (db) { + return callback(null, db); + } + + var req; + try { + req = IDBFS.indexedDB().open(name, IDBFS.DB_VERSION); + } catch (e) { + return callback(e); + } + if (!req) { + return callback("Unable to connect to IndexedDB"); + } + req.onupgradeneeded = function(e) { + var db = e.target.result; + var transaction = e.target.transaction; + + var fileStore; + + if (db.objectStoreNames.contains(IDBFS.DB_STORE_NAME)) { + fileStore = transaction.objectStore(IDBFS.DB_STORE_NAME); + } else { + fileStore = db.createObjectStore(IDBFS.DB_STORE_NAME); + } + + if (!fileStore.indexNames.contains('timestamp')) { + fileStore.createIndex('timestamp', 'timestamp', { unique: false }); + } + }; + req.onsuccess = function() { + db = req.result; + + // add to the cache + IDBFS.dbs[name] = db; + callback(null, db); + }; + req.onerror = function(e) { + callback(this.error); + e.preventDefault(); + }; + },getLocalSet:function (mount, callback) { + var entries = {}; + + function isRealDir(p) { + return p !== '.' && p !== '..'; + }; + function toAbsolute(root) { + return function(p) { + return PATH.join2(root, p); + } + }; + + var check = FS.readdir(mount.mountpoint).filter(isRealDir).map(toAbsolute(mount.mountpoint)); + + while (check.length) { + var path = check.pop(); + var stat; + + try { + stat = FS.stat(path); + } catch (e) { + return callback(e); + } + + if (FS.isDir(stat.mode)) { + check.push.apply(check, FS.readdir(path).filter(isRealDir).map(toAbsolute(path))); + } + + entries[path] = { timestamp: stat.mtime }; + } + + return callback(null, { type: 'local', entries: entries }); + },getRemoteSet:function (mount, callback) { + var entries = {}; + + IDBFS.getDB(mount.mountpoint, function(err, db) { + if (err) return callback(err); + + try { + var transaction = db.transaction([IDBFS.DB_STORE_NAME], 'readonly'); + transaction.onerror = function(e) { + callback(this.error); + e.preventDefault(); + }; + + var store = transaction.objectStore(IDBFS.DB_STORE_NAME); + var index = store.index('timestamp'); + + index.openKeyCursor().onsuccess = function(event) { + var cursor = event.target.result; + + if (!cursor) { + return callback(null, { type: 'remote', db: db, entries: entries }); + } + + entries[cursor.primaryKey] = { timestamp: cursor.key }; + + cursor.continue(); + }; + } catch (e) { + return callback(e); + } + }); + },loadLocalEntry:function (path, callback) { + var stat, node; + + try { + var lookup = FS.lookupPath(path); + node = lookup.node; + stat = FS.stat(path); + } catch (e) { + return callback(e); + } + + if (FS.isDir(stat.mode)) { + return callback(null, { timestamp: stat.mtime, mode: stat.mode }); + } else if (FS.isFile(stat.mode)) { + // Performance consideration: storing a normal JavaScript array to a IndexedDB is much slower than storing a typed array. + // Therefore always convert the file contents to a typed array first before writing the data to IndexedDB. + node.contents = MEMFS.getFileDataAsTypedArray(node); + return callback(null, { timestamp: stat.mtime, mode: stat.mode, contents: node.contents }); + } else { + return callback(new Error('node type not supported')); + } + },storeLocalEntry:function (path, entry, callback) { + try { + if (FS.isDir(entry.mode)) { + FS.mkdir(path, entry.mode); + } else if (FS.isFile(entry.mode)) { + FS.writeFile(path, entry.contents, { canOwn: true }); + } else { + return callback(new Error('node type not supported')); + } + + FS.chmod(path, entry.mode); + FS.utime(path, entry.timestamp, entry.timestamp); + } catch (e) { + return callback(e); + } + + callback(null); + },removeLocalEntry:function (path, callback) { + try { + var lookup = FS.lookupPath(path); + var stat = FS.stat(path); + + if (FS.isDir(stat.mode)) { + FS.rmdir(path); + } else if (FS.isFile(stat.mode)) { + FS.unlink(path); + } + } catch (e) { + return callback(e); + } + + callback(null); + },loadRemoteEntry:function (store, path, callback) { + var req = store.get(path); + req.onsuccess = function(event) { callback(null, event.target.result); }; + req.onerror = function(e) { + callback(this.error); + e.preventDefault(); + }; + },storeRemoteEntry:function (store, path, entry, callback) { + var req = store.put(entry, path); + req.onsuccess = function() { callback(null); }; + req.onerror = function(e) { + callback(this.error); + e.preventDefault(); + }; + },removeRemoteEntry:function (store, path, callback) { + var req = store.delete(path); + req.onsuccess = function() { callback(null); }; + req.onerror = function(e) { + callback(this.error); + e.preventDefault(); + }; + },reconcile:function (src, dst, callback) { + var total = 0; + + var create = []; + Object.keys(src.entries).forEach(function (key) { + var e = src.entries[key]; + var e2 = dst.entries[key]; + if (!e2 || e.timestamp > e2.timestamp) { + create.push(key); + total++; + } + }); + + var remove = []; + Object.keys(dst.entries).forEach(function (key) { + var e = dst.entries[key]; + var e2 = src.entries[key]; + if (!e2) { + remove.push(key); + total++; + } + }); + + if (!total) { + return callback(null); + } + + var errored = false; + var db = src.type === 'remote' ? src.db : dst.db; + var transaction = db.transaction([IDBFS.DB_STORE_NAME], 'readwrite'); + var store = transaction.objectStore(IDBFS.DB_STORE_NAME); + + function done(err) { + if (err && !errored) { + errored = true; + return callback(err); + } + }; + + transaction.onerror = function(e) { + done(this.error); + e.preventDefault(); + }; + + transaction.oncomplete = function(e) { + if (!errored) { + callback(null); + } + }; + + // sort paths in ascending order so directory entries are created + // before the files inside them + create.sort().forEach(function (path) { + if (dst.type === 'local') { + IDBFS.loadRemoteEntry(store, path, function (err, entry) { + if (err) return done(err); + IDBFS.storeLocalEntry(path, entry, done); + }); + } else { + IDBFS.loadLocalEntry(path, function (err, entry) { + if (err) return done(err); + IDBFS.storeRemoteEntry(store, path, entry, done); + }); + } + }); + + // sort paths in descending order so files are deleted before their + // parent directories + remove.sort().reverse().forEach(function(path) { + if (dst.type === 'local') { + IDBFS.removeLocalEntry(path, done); + } else { + IDBFS.removeRemoteEntry(store, path, done); + } + }); + }}; + + var NODEFS={isWindows:false,staticInit:function () { + NODEFS.isWindows = !!process.platform.match(/^win/); + var flags = process["binding"]("constants"); + // Node.js 4 compatibility: it has no namespaces for constants + if (flags["fs"]) { + flags = flags["fs"]; + } + NODEFS.flagsForNodeMap = { + "1024": flags["O_APPEND"], + "64": flags["O_CREAT"], + "128": flags["O_EXCL"], + "0": flags["O_RDONLY"], + "2": flags["O_RDWR"], + "4096": flags["O_SYNC"], + "512": flags["O_TRUNC"], + "1": flags["O_WRONLY"] + }; + },bufferFrom:function (arrayBuffer) { + // Node.js < 4.5 compatibility: Buffer.from does not support ArrayBuffer + // Buffer.from before 4.5 was just a method inherited from Uint8Array + // Buffer.alloc has been added with Buffer.from together, so check it instead + return Buffer.alloc ? Buffer.from(arrayBuffer) : new Buffer(arrayBuffer); + },mount:function (mount) { + assert(ENVIRONMENT_HAS_NODE); + return NODEFS.createNode(null, '/', NODEFS.getMode(mount.opts.root), 0); + },createNode:function (parent, name, mode, dev) { + if (!FS.isDir(mode) && !FS.isFile(mode) && !FS.isLink(mode)) { + throw new FS.ErrnoError(22); + } + var node = FS.createNode(parent, name, mode); + node.node_ops = NODEFS.node_ops; + node.stream_ops = NODEFS.stream_ops; + return node; + },getMode:function (path) { + var stat; + try { + stat = fs.lstatSync(path); + if (NODEFS.isWindows) { + // Node.js on Windows never represents permission bit 'x', so + // propagate read bits to execute bits + stat.mode = stat.mode | ((stat.mode & 292) >> 2); + } + } catch (e) { + if (!e.code) throw e; + throw new FS.ErrnoError(-e.errno); // syscall errnos are negated, node's are not + } + return stat.mode; + },realPath:function (node) { + var parts = []; + while (node.parent !== node) { + parts.push(node.name); + node = node.parent; + } + parts.push(node.mount.opts.root); + parts.reverse(); + return PATH.join.apply(null, parts); + },flagsForNode:function (flags) { + flags &= ~0x200000 /*O_PATH*/; // Ignore this flag from musl, otherwise node.js fails to open the file. + flags &= ~0x800 /*O_NONBLOCK*/; // Ignore this flag from musl, otherwise node.js fails to open the file. + flags &= ~0x8000 /*O_LARGEFILE*/; // Ignore this flag from musl, otherwise node.js fails to open the file. + flags &= ~0x80000 /*O_CLOEXEC*/; // Some applications may pass it; it makes no sense for a single process. + var newFlags = 0; + for (var k in NODEFS.flagsForNodeMap) { + if (flags & k) { + newFlags |= NODEFS.flagsForNodeMap[k]; + flags ^= k; + } + } + + if (!flags) { + return newFlags; + } else { + throw new FS.ErrnoError(22); + } + },node_ops:{getattr:function (node) { + var path = NODEFS.realPath(node); + var stat; + try { + stat = fs.lstatSync(path); + } catch (e) { + if (!e.code) throw e; + throw new FS.ErrnoError(-e.errno); + } + // node.js v0.10.20 doesn't report blksize and blocks on Windows. Fake them with default blksize of 4096. + // See http://support.microsoft.com/kb/140365 + if (NODEFS.isWindows && !stat.blksize) { + stat.blksize = 4096; + } + if (NODEFS.isWindows && !stat.blocks) { + stat.blocks = (stat.size+stat.blksize-1)/stat.blksize|0; + } + return { + dev: stat.dev, + ino: stat.ino, + mode: stat.mode, + nlink: stat.nlink, + uid: stat.uid, + gid: stat.gid, + rdev: stat.rdev, + size: stat.size, + atime: stat.atime, + mtime: stat.mtime, + ctime: stat.ctime, + blksize: stat.blksize, + blocks: stat.blocks + }; + },setattr:function (node, attr) { + var path = NODEFS.realPath(node); + try { + if (attr.mode !== undefined) { + fs.chmodSync(path, attr.mode); + // update the common node structure mode as well + node.mode = attr.mode; + } + if (attr.timestamp !== undefined) { + var date = new Date(attr.timestamp); + fs.utimesSync(path, date, date); + } + if (attr.size !== undefined) { + fs.truncateSync(path, attr.size); + } + } catch (e) { + if (!e.code) throw e; + throw new FS.ErrnoError(-e.errno); + } + },lookup:function (parent, name) { + var path = PATH.join2(NODEFS.realPath(parent), name); + var mode = NODEFS.getMode(path); + return NODEFS.createNode(parent, name, mode); + },mknod:function (parent, name, mode, dev) { + var node = NODEFS.createNode(parent, name, mode, dev); + // create the backing node for this in the fs root as well + var path = NODEFS.realPath(node); + try { + if (FS.isDir(node.mode)) { + fs.mkdirSync(path, node.mode); + } else { + fs.writeFileSync(path, '', { mode: node.mode }); + } + } catch (e) { + if (!e.code) throw e; + throw new FS.ErrnoError(-e.errno); + } + return node; + },rename:function (oldNode, newDir, newName) { + var oldPath = NODEFS.realPath(oldNode); + var newPath = PATH.join2(NODEFS.realPath(newDir), newName); + try { + fs.renameSync(oldPath, newPath); + } catch (e) { + if (!e.code) throw e; + throw new FS.ErrnoError(-e.errno); + } + },unlink:function (parent, name) { + var path = PATH.join2(NODEFS.realPath(parent), name); + try { + fs.unlinkSync(path); + } catch (e) { + if (!e.code) throw e; + throw new FS.ErrnoError(-e.errno); + } + },rmdir:function (parent, name) { + var path = PATH.join2(NODEFS.realPath(parent), name); + try { + fs.rmdirSync(path); + } catch (e) { + if (!e.code) throw e; + throw new FS.ErrnoError(-e.errno); + } + },readdir:function (node) { + var path = NODEFS.realPath(node); + try { + return fs.readdirSync(path); + } catch (e) { + if (!e.code) throw e; + throw new FS.ErrnoError(-e.errno); + } + },symlink:function (parent, newName, oldPath) { + var newPath = PATH.join2(NODEFS.realPath(parent), newName); + try { + fs.symlinkSync(oldPath, newPath); + } catch (e) { + if (!e.code) throw e; + throw new FS.ErrnoError(-e.errno); + } + },readlink:function (node) { + var path = NODEFS.realPath(node); + try { + path = fs.readlinkSync(path); + path = NODEJS_PATH.relative(NODEJS_PATH.resolve(node.mount.opts.root), path); + return path; + } catch (e) { + if (!e.code) throw e; + throw new FS.ErrnoError(-e.errno); + } + }},stream_ops:{open:function (stream) { + var path = NODEFS.realPath(stream.node); + try { + if (FS.isFile(stream.node.mode)) { + stream.nfd = fs.openSync(path, NODEFS.flagsForNode(stream.flags)); + } + } catch (e) { + if (!e.code) throw e; + throw new FS.ErrnoError(-e.errno); + } + },close:function (stream) { + try { + if (FS.isFile(stream.node.mode) && stream.nfd) { + fs.closeSync(stream.nfd); + } + } catch (e) { + if (!e.code) throw e; + throw new FS.ErrnoError(-e.errno); + } + },read:function (stream, buffer, offset, length, position) { + // Node.js < 6 compatibility: node errors on 0 length reads + if (length === 0) return 0; + try { + return fs.readSync(stream.nfd, NODEFS.bufferFrom(buffer.buffer), offset, length, position); + } catch (e) { + throw new FS.ErrnoError(-e.errno); + } + },write:function (stream, buffer, offset, length, position) { + try { + return fs.writeSync(stream.nfd, NODEFS.bufferFrom(buffer.buffer), offset, length, position); + } catch (e) { + throw new FS.ErrnoError(-e.errno); + } + },llseek:function (stream, offset, whence) { + var position = offset; + if (whence === 1) { // SEEK_CUR. + position += stream.position; + } else if (whence === 2) { // SEEK_END. + if (FS.isFile(stream.node.mode)) { + try { + var stat = fs.fstatSync(stream.nfd); + position += stat.size; + } catch (e) { + throw new FS.ErrnoError(-e.errno); + } + } + } + + if (position < 0) { + throw new FS.ErrnoError(22); + } + + return position; + }}}; + + var WORKERFS={DIR_MODE:16895,FILE_MODE:33279,reader:null,mount:function (mount) { + assert(ENVIRONMENT_IS_WORKER); + if (!WORKERFS.reader) WORKERFS.reader = new FileReaderSync(); + var root = WORKERFS.createNode(null, '/', WORKERFS.DIR_MODE, 0); + var createdParents = {}; + function ensureParent(path) { + // return the parent node, creating subdirs as necessary + var parts = path.split('/'); + var parent = root; + for (var i = 0; i < parts.length-1; i++) { + var curr = parts.slice(0, i+1).join('/'); + // Issue 4254: Using curr as a node name will prevent the node + // from being found in FS.nameTable when FS.open is called on + // a path which holds a child of this node, + // given that all FS functions assume node names + // are just their corresponding parts within their given path, + // rather than incremental aggregates which include their parent's + // directories. + if (!createdParents[curr]) { + createdParents[curr] = WORKERFS.createNode(parent, parts[i], WORKERFS.DIR_MODE, 0); + } + parent = createdParents[curr]; + } + return parent; + } + function base(path) { + var parts = path.split('/'); + return parts[parts.length-1]; + } + // We also accept FileList here, by using Array.prototype + Array.prototype.forEach.call(mount.opts["files"] || [], function(file) { + WORKERFS.createNode(ensureParent(file.name), base(file.name), WORKERFS.FILE_MODE, 0, file, file.lastModifiedDate); + }); + (mount.opts["blobs"] || []).forEach(function(obj) { + WORKERFS.createNode(ensureParent(obj["name"]), base(obj["name"]), WORKERFS.FILE_MODE, 0, obj["data"]); + }); + (mount.opts["packages"] || []).forEach(function(pack) { + pack['metadata'].files.forEach(function(file) { + var name = file.filename.substr(1); // remove initial slash + WORKERFS.createNode(ensureParent(name), base(name), WORKERFS.FILE_MODE, 0, pack['blob'].slice(file.start, file.end)); + }); + }); + return root; + },createNode:function (parent, name, mode, dev, contents, mtime) { + var node = FS.createNode(parent, name, mode); + node.mode = mode; + node.node_ops = WORKERFS.node_ops; + node.stream_ops = WORKERFS.stream_ops; + node.timestamp = (mtime || new Date).getTime(); + assert(WORKERFS.FILE_MODE !== WORKERFS.DIR_MODE); + if (mode === WORKERFS.FILE_MODE) { + node.size = contents.size; + node.contents = contents; + } else { + node.size = 4096; + node.contents = {}; + } + if (parent) { + parent.contents[name] = node; + } + return node; + },node_ops:{getattr:function (node) { + return { + dev: 1, + ino: undefined, + mode: node.mode, + nlink: 1, + uid: 0, + gid: 0, + rdev: undefined, + size: node.size, + atime: new Date(node.timestamp), + mtime: new Date(node.timestamp), + ctime: new Date(node.timestamp), + blksize: 4096, + blocks: Math.ceil(node.size / 4096), + }; + },setattr:function (node, attr) { + if (attr.mode !== undefined) { + node.mode = attr.mode; + } + if (attr.timestamp !== undefined) { + node.timestamp = attr.timestamp; + } + },lookup:function (parent, name) { + throw new FS.ErrnoError(2); + },mknod:function (parent, name, mode, dev) { + throw new FS.ErrnoError(1); + },rename:function (oldNode, newDir, newName) { + throw new FS.ErrnoError(1); + },unlink:function (parent, name) { + throw new FS.ErrnoError(1); + },rmdir:function (parent, name) { + throw new FS.ErrnoError(1); + },readdir:function (node) { + var entries = ['.', '..']; + for (var key in node.contents) { + if (!node.contents.hasOwnProperty(key)) { + continue; + } + entries.push(key); + } + return entries; + },symlink:function (parent, newName, oldPath) { + throw new FS.ErrnoError(1); + },readlink:function (node) { + throw new FS.ErrnoError(1); + }},stream_ops:{read:function (stream, buffer, offset, length, position) { + if (position >= stream.node.size) return 0; + var chunk = stream.node.contents.slice(position, position + length); + var ab = WORKERFS.reader.readAsArrayBuffer(chunk); + buffer.set(new Uint8Array(ab), offset); + return chunk.size; + },write:function (stream, buffer, offset, length, position) { + throw new FS.ErrnoError(5); + },llseek:function (stream, offset, whence) { + var position = offset; + if (whence === 1) { // SEEK_CUR. + position += stream.position; + } else if (whence === 2) { // SEEK_END. + if (FS.isFile(stream.node.mode)) { + position += stream.node.size; + } + } + if (position < 0) { + throw new FS.ErrnoError(22); + } + return position; + }}}; + + var ERRNO_MESSAGES={0:"Success",1:"Not super-user",2:"No such file or directory",3:"No such process",4:"Interrupted system call",5:"I/O error",6:"No such device or address",7:"Arg list too long",8:"Exec format error",9:"Bad file number",10:"No children",11:"No more processes",12:"Not enough core",13:"Permission denied",14:"Bad address",15:"Block device required",16:"Mount device busy",17:"File exists",18:"Cross-device link",19:"No such device",20:"Not a directory",21:"Is a directory",22:"Invalid argument",23:"Too many open files in system",24:"Too many open files",25:"Not a typewriter",26:"Text file busy",27:"File too large",28:"No space left on device",29:"Illegal seek",30:"Read only file system",31:"Too many links",32:"Broken pipe",33:"Math arg out of domain of func",34:"Math result not representable",35:"File locking deadlock error",36:"File or path name too long",37:"No record locks available",38:"Function not implemented",39:"Directory not empty",40:"Too many symbolic links",42:"No message of desired type",43:"Identifier removed",44:"Channel number out of range",45:"Level 2 not synchronized",46:"Level 3 halted",47:"Level 3 reset",48:"Link number out of range",49:"Protocol driver not attached",50:"No CSI structure available",51:"Level 2 halted",52:"Invalid exchange",53:"Invalid request descriptor",54:"Exchange full",55:"No anode",56:"Invalid request code",57:"Invalid slot",59:"Bad font file fmt",60:"Device not a stream",61:"No data (for no delay io)",62:"Timer expired",63:"Out of streams resources",64:"Machine is not on the network",65:"Package not installed",66:"The object is remote",67:"The link has been severed",68:"Advertise error",69:"Srmount error",70:"Communication error on send",71:"Protocol error",72:"Multihop attempted",73:"Cross mount point (not really error)",74:"Trying to read unreadable message",75:"Value too large for defined data type",76:"Given log. name not unique",77:"f.d. invalid for this operation",78:"Remote address changed",79:"Can access a needed shared lib",80:"Accessing a corrupted shared lib",81:".lib section in a.out corrupted",82:"Attempting to link in too many libs",83:"Attempting to exec a shared library",84:"Illegal byte sequence",86:"Streams pipe error",87:"Too many users",88:"Socket operation on non-socket",89:"Destination address required",90:"Message too long",91:"Protocol wrong type for socket",92:"Protocol not available",93:"Unknown protocol",94:"Socket type not supported",95:"Not supported",96:"Protocol family not supported",97:"Address family not supported by protocol family",98:"Address already in use",99:"Address not available",100:"Network interface is not configured",101:"Network is unreachable",102:"Connection reset by network",103:"Connection aborted",104:"Connection reset by peer",105:"No buffer space available",106:"Socket is already connected",107:"Socket is not connected",108:"Can't send after socket shutdown",109:"Too many references",110:"Connection timed out",111:"Connection refused",112:"Host is down",113:"Host is unreachable",114:"Socket already connected",115:"Connection already in progress",116:"Stale file handle",122:"Quota exceeded",123:"No medium (in tape drive)",125:"Operation canceled",130:"Previous owner died",131:"State not recoverable"}; + + var ERRNO_CODES={EPERM:1,ENOENT:2,ESRCH:3,EINTR:4,EIO:5,ENXIO:6,E2BIG:7,ENOEXEC:8,EBADF:9,ECHILD:10,EAGAIN:11,EWOULDBLOCK:11,ENOMEM:12,EACCES:13,EFAULT:14,ENOTBLK:15,EBUSY:16,EEXIST:17,EXDEV:18,ENODEV:19,ENOTDIR:20,EISDIR:21,EINVAL:22,ENFILE:23,EMFILE:24,ENOTTY:25,ETXTBSY:26,EFBIG:27,ENOSPC:28,ESPIPE:29,EROFS:30,EMLINK:31,EPIPE:32,EDOM:33,ERANGE:34,ENOMSG:42,EIDRM:43,ECHRNG:44,EL2NSYNC:45,EL3HLT:46,EL3RST:47,ELNRNG:48,EUNATCH:49,ENOCSI:50,EL2HLT:51,EDEADLK:35,ENOLCK:37,EBADE:52,EBADR:53,EXFULL:54,ENOANO:55,EBADRQC:56,EBADSLT:57,EDEADLOCK:35,EBFONT:59,ENOSTR:60,ENODATA:61,ETIME:62,ENOSR:63,ENONET:64,ENOPKG:65,EREMOTE:66,ENOLINK:67,EADV:68,ESRMNT:69,ECOMM:70,EPROTO:71,EMULTIHOP:72,EDOTDOT:73,EBADMSG:74,ENOTUNIQ:76,EBADFD:77,EREMCHG:78,ELIBACC:79,ELIBBAD:80,ELIBSCN:81,ELIBMAX:82,ELIBEXEC:83,ENOSYS:38,ENOTEMPTY:39,ENAMETOOLONG:36,ELOOP:40,EOPNOTSUPP:95,EPFNOSUPPORT:96,ECONNRESET:104,ENOBUFS:105,EAFNOSUPPORT:97,EPROTOTYPE:91,ENOTSOCK:88,ENOPROTOOPT:92,ESHUTDOWN:108,ECONNREFUSED:111,EADDRINUSE:98,ECONNABORTED:103,ENETUNREACH:101,ENETDOWN:100,ETIMEDOUT:110,EHOSTDOWN:112,EHOSTUNREACH:113,EINPROGRESS:115,EALREADY:114,EDESTADDRREQ:89,EMSGSIZE:90,EPROTONOSUPPORT:93,ESOCKTNOSUPPORT:94,EADDRNOTAVAIL:99,ENETRESET:102,EISCONN:106,ENOTCONN:107,ETOOMANYREFS:109,EUSERS:87,EDQUOT:122,ESTALE:116,ENOTSUP:95,ENOMEDIUM:123,EILSEQ:84,EOVERFLOW:75,ECANCELED:125,ENOTRECOVERABLE:131,EOWNERDEAD:130,ESTRPIPE:86};var FS={root:null,mounts:[],devices:{},streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:false,ignorePermissions:true,trackingDelegate:{},tracking:{openFlags:{READ:1,WRITE:2}},ErrnoError:null,genericErrors:{},filesystems:null,syncFSRequests:0,handleFSError:function (e) { + if (!(e instanceof FS.ErrnoError)) throw e + ' : ' + stackTrace(); + return ___setErrNo(e.errno); + },lookupPath:function (path, opts) { + path = PATH_FS.resolve(FS.cwd(), path); + opts = opts || {}; + + if (!path) return { path: '', node: null }; + + var defaults = { + follow_mount: true, + recurse_count: 0 + }; + for (var key in defaults) { + if (opts[key] === undefined) { + opts[key] = defaults[key]; + } + } + + if (opts.recurse_count > 8) { // max recursive lookup of 8 + throw new FS.ErrnoError(40); + } + + // split the path + var parts = PATH.normalizeArray(path.split('/').filter(function(p) { + return !!p; + }), false); + + // start at the root + var current = FS.root; + var current_path = '/'; + + for (var i = 0; i < parts.length; i++) { + var islast = (i === parts.length-1); + if (islast && opts.parent) { + // stop resolving + break; + } + + current = FS.lookupNode(current, parts[i]); + current_path = PATH.join2(current_path, parts[i]); + + // jump to the mount's root node if this is a mountpoint + if (FS.isMountpoint(current)) { + if (!islast || (islast && opts.follow_mount)) { + current = current.mounted.root; + } + } + + // by default, lookupPath will not follow a symlink if it is the final path component. + // setting opts.follow = true will override this behavior. + if (!islast || opts.follow) { + var count = 0; + while (FS.isLink(current.mode)) { + var link = FS.readlink(current_path); + current_path = PATH_FS.resolve(PATH.dirname(current_path), link); + + var lookup = FS.lookupPath(current_path, { recurse_count: opts.recurse_count }); + current = lookup.node; + + if (count++ > 40) { // limit max consecutive symlinks to 40 (SYMLOOP_MAX). + throw new FS.ErrnoError(40); + } + } + } + } + + return { path: current_path, node: current }; + },getPath:function (node) { + var path; + while (true) { + if (FS.isRoot(node)) { + var mount = node.mount.mountpoint; + if (!path) return mount; + return mount[mount.length-1] !== '/' ? mount + '/' + path : mount + path; + } + path = path ? node.name + '/' + path : node.name; + node = node.parent; + } + },hashName:function (parentid, name) { + var hash = 0; + + + for (var i = 0; i < name.length; i++) { + hash = ((hash << 5) - hash + name.charCodeAt(i)) | 0; + } + return ((parentid + hash) >>> 0) % FS.nameTable.length; + },hashAddNode:function (node) { + var hash = FS.hashName(node.parent.id, node.name); + node.name_next = FS.nameTable[hash]; + FS.nameTable[hash] = node; + },hashRemoveNode:function (node) { + var hash = FS.hashName(node.parent.id, node.name); + if (FS.nameTable[hash] === node) { + FS.nameTable[hash] = node.name_next; + } else { + var current = FS.nameTable[hash]; + while (current) { + if (current.name_next === node) { + current.name_next = node.name_next; + break; + } + current = current.name_next; + } + } + },lookupNode:function (parent, name) { + var err = FS.mayLookup(parent); + if (err) { + throw new FS.ErrnoError(err, parent); + } + var hash = FS.hashName(parent.id, name); + for (var node = FS.nameTable[hash]; node; node = node.name_next) { + var nodeName = node.name; + if (node.parent.id === parent.id && nodeName === name) { + return node; + } + } + // if we failed to find it in the cache, call into the VFS + return FS.lookup(parent, name); + },createNode:function (parent, name, mode, rdev) { + if (!FS.FSNode) { + FS.FSNode = function(parent, name, mode, rdev) { + if (!parent) { + parent = this; // root node sets parent to itself + } + this.parent = parent; + this.mount = parent.mount; + this.mounted = null; + this.id = FS.nextInode++; + this.name = name; + this.mode = mode; + this.node_ops = {}; + this.stream_ops = {}; + this.rdev = rdev; + }; + + FS.FSNode.prototype = {}; + + // compatibility + var readMode = 292 | 73; + var writeMode = 146; + + // NOTE we must use Object.defineProperties instead of individual calls to + // Object.defineProperty in order to make closure compiler happy + Object.defineProperties(FS.FSNode.prototype, { + read: { + get: function() { return (this.mode & readMode) === readMode; }, + set: function(val) { val ? this.mode |= readMode : this.mode &= ~readMode; } + }, + write: { + get: function() { return (this.mode & writeMode) === writeMode; }, + set: function(val) { val ? this.mode |= writeMode : this.mode &= ~writeMode; } + }, + isFolder: { + get: function() { return FS.isDir(this.mode); } + }, + isDevice: { + get: function() { return FS.isChrdev(this.mode); } + } + }); + } + + var node = new FS.FSNode(parent, name, mode, rdev); + + FS.hashAddNode(node); + + return node; + },destroyNode:function (node) { + FS.hashRemoveNode(node); + },isRoot:function (node) { + return node === node.parent; + },isMountpoint:function (node) { + return !!node.mounted; + },isFile:function (mode) { + return (mode & 61440) === 32768; + },isDir:function (mode) { + return (mode & 61440) === 16384; + },isLink:function (mode) { + return (mode & 61440) === 40960; + },isChrdev:function (mode) { + return (mode & 61440) === 8192; + },isBlkdev:function (mode) { + return (mode & 61440) === 24576; + },isFIFO:function (mode) { + return (mode & 61440) === 4096; + },isSocket:function (mode) { + return (mode & 49152) === 49152; + },flagModes:{"r":0,"rs":1052672,"r+":2,"w":577,"wx":705,"xw":705,"w+":578,"wx+":706,"xw+":706,"a":1089,"ax":1217,"xa":1217,"a+":1090,"ax+":1218,"xa+":1218},modeStringToFlags:function (str) { + var flags = FS.flagModes[str]; + if (typeof flags === 'undefined') { + throw new Error('Unknown file open mode: ' + str); + } + return flags; + },flagsToPermissionString:function (flag) { + var perms = ['r', 'w', 'rw'][flag & 3]; + if ((flag & 512)) { + perms += 'w'; + } + return perms; + },nodePermissions:function (node, perms) { + if (FS.ignorePermissions) { + return 0; + } + // return 0 if any user, group or owner bits are set. + if (perms.indexOf('r') !== -1 && !(node.mode & 292)) { + return 13; + } else if (perms.indexOf('w') !== -1 && !(node.mode & 146)) { + return 13; + } else if (perms.indexOf('x') !== -1 && !(node.mode & 73)) { + return 13; + } + return 0; + },mayLookup:function (dir) { + var err = FS.nodePermissions(dir, 'x'); + if (err) return err; + if (!dir.node_ops.lookup) return 13; + return 0; + },mayCreate:function (dir, name) { + try { + var node = FS.lookupNode(dir, name); + return 17; + } catch (e) { + } + return FS.nodePermissions(dir, 'wx'); + },mayDelete:function (dir, name, isdir) { + var node; + try { + node = FS.lookupNode(dir, name); + } catch (e) { + return e.errno; + } + var err = FS.nodePermissions(dir, 'wx'); + if (err) { + return err; + } + if (isdir) { + if (!FS.isDir(node.mode)) { + return 20; + } + if (FS.isRoot(node) || FS.getPath(node) === FS.cwd()) { + return 16; + } + } else { + if (FS.isDir(node.mode)) { + return 21; + } + } + return 0; + },mayOpen:function (node, flags) { + if (!node) { + return 2; + } + if (FS.isLink(node.mode)) { + return 40; + } else if (FS.isDir(node.mode)) { + if (FS.flagsToPermissionString(flags) !== 'r' || // opening for write + (flags & 512)) { // TODO: check for O_SEARCH? (== search for dir only) + return 21; + } + } + return FS.nodePermissions(node, FS.flagsToPermissionString(flags)); + },MAX_OPEN_FDS:4096,nextfd:function (fd_start, fd_end) { + fd_start = fd_start || 0; + fd_end = fd_end || FS.MAX_OPEN_FDS; + for (var fd = fd_start; fd <= fd_end; fd++) { + if (!FS.streams[fd]) { + return fd; + } + } + throw new FS.ErrnoError(24); + },getStream:function (fd) { + return FS.streams[fd]; + },createStream:function (stream, fd_start, fd_end) { + if (!FS.FSStream) { + FS.FSStream = function(){}; + FS.FSStream.prototype = {}; + // compatibility + Object.defineProperties(FS.FSStream.prototype, { + object: { + get: function() { return this.node; }, + set: function(val) { this.node = val; } + }, + isRead: { + get: function() { return (this.flags & 2097155) !== 1; } + }, + isWrite: { + get: function() { return (this.flags & 2097155) !== 0; } + }, + isAppend: { + get: function() { return (this.flags & 1024); } + } + }); + } + // clone it, so we can return an instance of FSStream + var newStream = new FS.FSStream(); + for (var p in stream) { + newStream[p] = stream[p]; + } + stream = newStream; + var fd = FS.nextfd(fd_start, fd_end); + stream.fd = fd; + FS.streams[fd] = stream; + return stream; + },closeStream:function (fd) { + FS.streams[fd] = null; + },chrdev_stream_ops:{open:function (stream) { + var device = FS.getDevice(stream.node.rdev); + // override node's stream ops with the device's + stream.stream_ops = device.stream_ops; + // forward the open call + if (stream.stream_ops.open) { + stream.stream_ops.open(stream); + } + },llseek:function () { + throw new FS.ErrnoError(29); + }},major:function (dev) { + return ((dev) >> 8); + },minor:function (dev) { + return ((dev) & 0xff); + },makedev:function (ma, mi) { + return ((ma) << 8 | (mi)); + },registerDevice:function (dev, ops) { + FS.devices[dev] = { stream_ops: ops }; + },getDevice:function (dev) { + return FS.devices[dev]; + },getMounts:function (mount) { + var mounts = []; + var check = [mount]; + + while (check.length) { + var m = check.pop(); + + mounts.push(m); + + check.push.apply(check, m.mounts); + } + + return mounts; + },syncfs:function (populate, callback) { + if (typeof(populate) === 'function') { + callback = populate; + populate = false; + } + + FS.syncFSRequests++; + + if (FS.syncFSRequests > 1) { + console.log('warning: ' + FS.syncFSRequests + ' FS.syncfs operations in flight at once, probably just doing extra work'); + } + + var mounts = FS.getMounts(FS.root.mount); + var completed = 0; + + function doCallback(err) { + assert(FS.syncFSRequests > 0); + FS.syncFSRequests--; + return callback(err); + } + + function done(err) { + if (err) { + if (!done.errored) { + done.errored = true; + return doCallback(err); + } + return; + } + if (++completed >= mounts.length) { + doCallback(null); + } + }; + + // sync all mounts + mounts.forEach(function (mount) { + if (!mount.type.syncfs) { + return done(null); + } + mount.type.syncfs(mount, populate, done); + }); + },mount:function (type, opts, mountpoint) { + var root = mountpoint === '/'; + var pseudo = !mountpoint; + var node; + + if (root && FS.root) { + throw new FS.ErrnoError(16); + } else if (!root && !pseudo) { + var lookup = FS.lookupPath(mountpoint, { follow_mount: false }); + + mountpoint = lookup.path; // use the absolute path + node = lookup.node; + + if (FS.isMountpoint(node)) { + throw new FS.ErrnoError(16); + } + + if (!FS.isDir(node.mode)) { + throw new FS.ErrnoError(20); + } + } + + var mount = { + type: type, + opts: opts, + mountpoint: mountpoint, + mounts: [] + }; + + // create a root node for the fs + var mountRoot = type.mount(mount); + mountRoot.mount = mount; + mount.root = mountRoot; + + if (root) { + FS.root = mountRoot; + } else if (node) { + // set as a mountpoint + node.mounted = mount; + + // add the new mount to the current mount's children + if (node.mount) { + node.mount.mounts.push(mount); + } + } + + return mountRoot; + },unmount:function (mountpoint) { + var lookup = FS.lookupPath(mountpoint, { follow_mount: false }); + + if (!FS.isMountpoint(lookup.node)) { + throw new FS.ErrnoError(22); + } + + // destroy the nodes for this mount, and all its child mounts + var node = lookup.node; + var mount = node.mounted; + var mounts = FS.getMounts(mount); + + Object.keys(FS.nameTable).forEach(function (hash) { + var current = FS.nameTable[hash]; + + while (current) { + var next = current.name_next; + + if (mounts.indexOf(current.mount) !== -1) { + FS.destroyNode(current); + } + + current = next; + } + }); + + // no longer a mountpoint + node.mounted = null; + + // remove this mount from the child mounts + var idx = node.mount.mounts.indexOf(mount); + assert(idx !== -1); + node.mount.mounts.splice(idx, 1); + },lookup:function (parent, name) { + return parent.node_ops.lookup(parent, name); + },mknod:function (path, mode, dev) { + var lookup = FS.lookupPath(path, { parent: true }); + var parent = lookup.node; + var name = PATH.basename(path); + if (!name || name === '.' || name === '..') { + throw new FS.ErrnoError(22); + } + var err = FS.mayCreate(parent, name); + if (err) { + throw new FS.ErrnoError(err); + } + if (!parent.node_ops.mknod) { + throw new FS.ErrnoError(1); + } + return parent.node_ops.mknod(parent, name, mode, dev); + },create:function (path, mode) { + mode = mode !== undefined ? mode : 438 /* 0666 */; + mode &= 4095; + mode |= 32768; + return FS.mknod(path, mode, 0); + },mkdir:function (path, mode) { + mode = mode !== undefined ? mode : 511 /* 0777 */; + mode &= 511 | 512; + mode |= 16384; + return FS.mknod(path, mode, 0); + },mkdirTree:function (path, mode) { + var dirs = path.split('/'); + var d = ''; + for (var i = 0; i < dirs.length; ++i) { + if (!dirs[i]) continue; + d += '/' + dirs[i]; + try { + FS.mkdir(d, mode); + } catch(e) { + if (e.errno != 17) throw e; + } + } + },mkdev:function (path, mode, dev) { + if (typeof(dev) === 'undefined') { + dev = mode; + mode = 438 /* 0666 */; + } + mode |= 8192; + return FS.mknod(path, mode, dev); + },symlink:function (oldpath, newpath) { + if (!PATH_FS.resolve(oldpath)) { + throw new FS.ErrnoError(2); + } + var lookup = FS.lookupPath(newpath, { parent: true }); + var parent = lookup.node; + if (!parent) { + throw new FS.ErrnoError(2); + } + var newname = PATH.basename(newpath); + var err = FS.mayCreate(parent, newname); + if (err) { + throw new FS.ErrnoError(err); + } + if (!parent.node_ops.symlink) { + throw new FS.ErrnoError(1); + } + return parent.node_ops.symlink(parent, newname, oldpath); + },rename:function (old_path, new_path) { + var old_dirname = PATH.dirname(old_path); + var new_dirname = PATH.dirname(new_path); + var old_name = PATH.basename(old_path); + var new_name = PATH.basename(new_path); + // parents must exist + var lookup, old_dir, new_dir; + try { + lookup = FS.lookupPath(old_path, { parent: true }); + old_dir = lookup.node; + lookup = FS.lookupPath(new_path, { parent: true }); + new_dir = lookup.node; + } catch (e) { + throw new FS.ErrnoError(16); + } + if (!old_dir || !new_dir) throw new FS.ErrnoError(2); + // need to be part of the same mount + if (old_dir.mount !== new_dir.mount) { + throw new FS.ErrnoError(18); + } + // source must exist + var old_node = FS.lookupNode(old_dir, old_name); + // old path should not be an ancestor of the new path + var relative = PATH_FS.relative(old_path, new_dirname); + if (relative.charAt(0) !== '.') { + throw new FS.ErrnoError(22); + } + // new path should not be an ancestor of the old path + relative = PATH_FS.relative(new_path, old_dirname); + if (relative.charAt(0) !== '.') { + throw new FS.ErrnoError(39); + } + // see if the new path already exists + var new_node; + try { + new_node = FS.lookupNode(new_dir, new_name); + } catch (e) { + // not fatal + } + // early out if nothing needs to change + if (old_node === new_node) { + return; + } + // we'll need to delete the old entry + var isdir = FS.isDir(old_node.mode); + var err = FS.mayDelete(old_dir, old_name, isdir); + if (err) { + throw new FS.ErrnoError(err); + } + // need delete permissions if we'll be overwriting. + // need create permissions if new doesn't already exist. + err = new_node ? + FS.mayDelete(new_dir, new_name, isdir) : + FS.mayCreate(new_dir, new_name); + if (err) { + throw new FS.ErrnoError(err); + } + if (!old_dir.node_ops.rename) { + throw new FS.ErrnoError(1); + } + if (FS.isMountpoint(old_node) || (new_node && FS.isMountpoint(new_node))) { + throw new FS.ErrnoError(16); + } + // if we are going to change the parent, check write permissions + if (new_dir !== old_dir) { + err = FS.nodePermissions(old_dir, 'w'); + if (err) { + throw new FS.ErrnoError(err); + } + } + try { + if (FS.trackingDelegate['willMovePath']) { + FS.trackingDelegate['willMovePath'](old_path, new_path); + } + } catch(e) { + console.log("FS.trackingDelegate['willMovePath']('"+old_path+"', '"+new_path+"') threw an exception: " + e.message); + } + // remove the node from the lookup hash + FS.hashRemoveNode(old_node); + // do the underlying fs rename + try { + old_dir.node_ops.rename(old_node, new_dir, new_name); + } catch (e) { + throw e; + } finally { + // add the node back to the hash (in case node_ops.rename + // changed its name) + FS.hashAddNode(old_node); + } + try { + if (FS.trackingDelegate['onMovePath']) FS.trackingDelegate['onMovePath'](old_path, new_path); + } catch(e) { + console.log("FS.trackingDelegate['onMovePath']('"+old_path+"', '"+new_path+"') threw an exception: " + e.message); + } + },rmdir:function (path) { + var lookup = FS.lookupPath(path, { parent: true }); + var parent = lookup.node; + var name = PATH.basename(path); + var node = FS.lookupNode(parent, name); + var err = FS.mayDelete(parent, name, true); + if (err) { + throw new FS.ErrnoError(err); + } + if (!parent.node_ops.rmdir) { + throw new FS.ErrnoError(1); + } + if (FS.isMountpoint(node)) { + throw new FS.ErrnoError(16); + } + try { + if (FS.trackingDelegate['willDeletePath']) { + FS.trackingDelegate['willDeletePath'](path); + } + } catch(e) { + console.log("FS.trackingDelegate['willDeletePath']('"+path+"') threw an exception: " + e.message); + } + parent.node_ops.rmdir(parent, name); + FS.destroyNode(node); + try { + if (FS.trackingDelegate['onDeletePath']) FS.trackingDelegate['onDeletePath'](path); + } catch(e) { + console.log("FS.trackingDelegate['onDeletePath']('"+path+"') threw an exception: " + e.message); + } + },readdir:function (path) { + var lookup = FS.lookupPath(path, { follow: true }); + var node = lookup.node; + if (!node.node_ops.readdir) { + throw new FS.ErrnoError(20); + } + return node.node_ops.readdir(node); + },unlink:function (path) { + var lookup = FS.lookupPath(path, { parent: true }); + var parent = lookup.node; + var name = PATH.basename(path); + var node = FS.lookupNode(parent, name); + var err = FS.mayDelete(parent, name, false); + if (err) { + // According to POSIX, we should map EISDIR to EPERM, but + // we instead do what Linux does (and we must, as we use + // the musl linux libc). + throw new FS.ErrnoError(err); + } + if (!parent.node_ops.unlink) { + throw new FS.ErrnoError(1); + } + if (FS.isMountpoint(node)) { + throw new FS.ErrnoError(16); + } + try { + if (FS.trackingDelegate['willDeletePath']) { + FS.trackingDelegate['willDeletePath'](path); + } + } catch(e) { + console.log("FS.trackingDelegate['willDeletePath']('"+path+"') threw an exception: " + e.message); + } + parent.node_ops.unlink(parent, name); + FS.destroyNode(node); + try { + if (FS.trackingDelegate['onDeletePath']) FS.trackingDelegate['onDeletePath'](path); + } catch(e) { + console.log("FS.trackingDelegate['onDeletePath']('"+path+"') threw an exception: " + e.message); + } + },readlink:function (path) { + var lookup = FS.lookupPath(path); + var link = lookup.node; + if (!link) { + throw new FS.ErrnoError(2); + } + if (!link.node_ops.readlink) { + throw new FS.ErrnoError(22); + } + return PATH_FS.resolve(FS.getPath(link.parent), link.node_ops.readlink(link)); + },stat:function (path, dontFollow) { + var lookup = FS.lookupPath(path, { follow: !dontFollow }); + var node = lookup.node; + if (!node) { + throw new FS.ErrnoError(2); + } + if (!node.node_ops.getattr) { + throw new FS.ErrnoError(1); + } + return node.node_ops.getattr(node); + },lstat:function (path) { + return FS.stat(path, true); + },chmod:function (path, mode, dontFollow) { + var node; + if (typeof path === 'string') { + var lookup = FS.lookupPath(path, { follow: !dontFollow }); + node = lookup.node; + } else { + node = path; + } + if (!node.node_ops.setattr) { + throw new FS.ErrnoError(1); + } + node.node_ops.setattr(node, { + mode: (mode & 4095) | (node.mode & ~4095), + timestamp: Date.now() + }); + },lchmod:function (path, mode) { + FS.chmod(path, mode, true); + },fchmod:function (fd, mode) { + var stream = FS.getStream(fd); + if (!stream) { + throw new FS.ErrnoError(9); + } + FS.chmod(stream.node, mode); + },chown:function (path, uid, gid, dontFollow) { + var node; + if (typeof path === 'string') { + var lookup = FS.lookupPath(path, { follow: !dontFollow }); + node = lookup.node; + } else { + node = path; + } + if (!node.node_ops.setattr) { + throw new FS.ErrnoError(1); + } + node.node_ops.setattr(node, { + timestamp: Date.now() + // we ignore the uid / gid for now + }); + },lchown:function (path, uid, gid) { + FS.chown(path, uid, gid, true); + },fchown:function (fd, uid, gid) { + var stream = FS.getStream(fd); + if (!stream) { + throw new FS.ErrnoError(9); + } + FS.chown(stream.node, uid, gid); + },truncate:function (path, len) { + if (len < 0) { + throw new FS.ErrnoError(22); + } + var node; + if (typeof path === 'string') { + var lookup = FS.lookupPath(path, { follow: true }); + node = lookup.node; + } else { + node = path; + } + if (!node.node_ops.setattr) { + throw new FS.ErrnoError(1); + } + if (FS.isDir(node.mode)) { + throw new FS.ErrnoError(21); + } + if (!FS.isFile(node.mode)) { + throw new FS.ErrnoError(22); + } + var err = FS.nodePermissions(node, 'w'); + if (err) { + throw new FS.ErrnoError(err); + } + node.node_ops.setattr(node, { + size: len, + timestamp: Date.now() + }); + },ftruncate:function (fd, len) { + var stream = FS.getStream(fd); + if (!stream) { + throw new FS.ErrnoError(9); + } + if ((stream.flags & 2097155) === 0) { + throw new FS.ErrnoError(22); + } + FS.truncate(stream.node, len); + },utime:function (path, atime, mtime) { + var lookup = FS.lookupPath(path, { follow: true }); + var node = lookup.node; + node.node_ops.setattr(node, { + timestamp: Math.max(atime, mtime) + }); + },open:function (path, flags, mode, fd_start, fd_end) { + if (path === "") { + throw new FS.ErrnoError(2); + } + flags = typeof flags === 'string' ? FS.modeStringToFlags(flags) : flags; + mode = typeof mode === 'undefined' ? 438 /* 0666 */ : mode; + if ((flags & 64)) { + mode = (mode & 4095) | 32768; + } else { + mode = 0; + } + var node; + if (typeof path === 'object') { + node = path; + } else { + path = PATH.normalize(path); + try { + var lookup = FS.lookupPath(path, { + follow: !(flags & 131072) + }); + node = lookup.node; + } catch (e) { + // ignore + } + } + // perhaps we need to create the node + var created = false; + if ((flags & 64)) { + if (node) { + // if O_CREAT and O_EXCL are set, error out if the node already exists + if ((flags & 128)) { + throw new FS.ErrnoError(17); + } + } else { + // node doesn't exist, try to create it + node = FS.mknod(path, mode, 0); + created = true; + } + } + if (!node) { + throw new FS.ErrnoError(2); + } + // can't truncate a device + if (FS.isChrdev(node.mode)) { + flags &= ~512; + } + // if asked only for a directory, then this must be one + if ((flags & 65536) && !FS.isDir(node.mode)) { + throw new FS.ErrnoError(20); + } + // check permissions, if this is not a file we just created now (it is ok to + // create and write to a file with read-only permissions; it is read-only + // for later use) + if (!created) { + var err = FS.mayOpen(node, flags); + if (err) { + throw new FS.ErrnoError(err); + } + } + // do truncation if necessary + if ((flags & 512)) { + FS.truncate(node, 0); + } + // we've already handled these, don't pass down to the underlying vfs + flags &= ~(128 | 512); + + // register the stream with the filesystem + var stream = FS.createStream({ + node: node, + path: FS.getPath(node), // we want the absolute path to the node + flags: flags, + seekable: true, + position: 0, + stream_ops: node.stream_ops, + // used by the file family libc calls (fopen, fwrite, ferror, etc.) + ungotten: [], + error: false + }, fd_start, fd_end); + // call the new stream's open function + if (stream.stream_ops.open) { + stream.stream_ops.open(stream); + } + if (Module['logReadFiles'] && !(flags & 1)) { + if (!FS.readFiles) FS.readFiles = {}; + if (!(path in FS.readFiles)) { + FS.readFiles[path] = 1; + console.log("FS.trackingDelegate error on read file: " + path); + } + } + try { + if (FS.trackingDelegate['onOpenFile']) { + var trackingFlags = 0; + if ((flags & 2097155) !== 1) { + trackingFlags |= FS.tracking.openFlags.READ; + } + if ((flags & 2097155) !== 0) { + trackingFlags |= FS.tracking.openFlags.WRITE; + } + FS.trackingDelegate['onOpenFile'](path, trackingFlags); + } + } catch(e) { + console.log("FS.trackingDelegate['onOpenFile']('"+path+"', flags) threw an exception: " + e.message); + } + return stream; + },close:function (stream) { + if (FS.isClosed(stream)) { + throw new FS.ErrnoError(9); + } + if (stream.getdents) stream.getdents = null; // free readdir state + try { + if (stream.stream_ops.close) { + stream.stream_ops.close(stream); + } + } catch (e) { + throw e; + } finally { + FS.closeStream(stream.fd); + } + stream.fd = null; + },isClosed:function (stream) { + return stream.fd === null; + },llseek:function (stream, offset, whence) { + if (FS.isClosed(stream)) { + throw new FS.ErrnoError(9); + } + if (!stream.seekable || !stream.stream_ops.llseek) { + throw new FS.ErrnoError(29); + } + if (whence != 0 /* SEEK_SET */ && whence != 1 /* SEEK_CUR */ && whence != 2 /* SEEK_END */) { + throw new FS.ErrnoError(22); + } + stream.position = stream.stream_ops.llseek(stream, offset, whence); + stream.ungotten = []; + return stream.position; + },read:function (stream, buffer, offset, length, position) { + if (length < 0 || position < 0) { + throw new FS.ErrnoError(22); + } + if (FS.isClosed(stream)) { + throw new FS.ErrnoError(9); + } + if ((stream.flags & 2097155) === 1) { + throw new FS.ErrnoError(9); + } + if (FS.isDir(stream.node.mode)) { + throw new FS.ErrnoError(21); + } + if (!stream.stream_ops.read) { + throw new FS.ErrnoError(22); + } + var seeking = typeof position !== 'undefined'; + if (!seeking) { + position = stream.position; + } else if (!stream.seekable) { + throw new FS.ErrnoError(29); + } + var bytesRead = stream.stream_ops.read(stream, buffer, offset, length, position); + if (!seeking) stream.position += bytesRead; + return bytesRead; + },write:function (stream, buffer, offset, length, position, canOwn) { + if (length < 0 || position < 0) { + throw new FS.ErrnoError(22); + } + if (FS.isClosed(stream)) { + throw new FS.ErrnoError(9); + } + if ((stream.flags & 2097155) === 0) { + throw new FS.ErrnoError(9); + } + if (FS.isDir(stream.node.mode)) { + throw new FS.ErrnoError(21); + } + if (!stream.stream_ops.write) { + throw new FS.ErrnoError(22); + } + if (stream.flags & 1024) { + // seek to the end before writing in append mode + FS.llseek(stream, 0, 2); + } + var seeking = typeof position !== 'undefined'; + if (!seeking) { + position = stream.position; + } else if (!stream.seekable) { + throw new FS.ErrnoError(29); + } + var bytesWritten = stream.stream_ops.write(stream, buffer, offset, length, position, canOwn); + if (!seeking) stream.position += bytesWritten; + try { + if (stream.path && FS.trackingDelegate['onWriteToFile']) FS.trackingDelegate['onWriteToFile'](stream.path); + } catch(e) { + console.log("FS.trackingDelegate['onWriteToFile']('"+stream.path+"') threw an exception: " + e.message); + } + return bytesWritten; + },allocate:function (stream, offset, length) { + if (FS.isClosed(stream)) { + throw new FS.ErrnoError(9); + } + if (offset < 0 || length <= 0) { + throw new FS.ErrnoError(22); + } + if ((stream.flags & 2097155) === 0) { + throw new FS.ErrnoError(9); + } + if (!FS.isFile(stream.node.mode) && !FS.isDir(stream.node.mode)) { + throw new FS.ErrnoError(19); + } + if (!stream.stream_ops.allocate) { + throw new FS.ErrnoError(95); + } + stream.stream_ops.allocate(stream, offset, length); + },mmap:function (stream, buffer, offset, length, position, prot, flags) { + // User requests writing to file (prot & PROT_WRITE != 0). + // Checking if we have permissions to write to the file unless + // MAP_PRIVATE flag is set. According to POSIX spec it is possible + // to write to file opened in read-only mode with MAP_PRIVATE flag, + // as all modifications will be visible only in the memory of + // the current process. + if ((prot & 2) !== 0 + && (flags & 2) === 0 + && (stream.flags & 2097155) !== 2) { + throw new FS.ErrnoError(13); + } + if ((stream.flags & 2097155) === 1) { + throw new FS.ErrnoError(13); + } + if (!stream.stream_ops.mmap) { + throw new FS.ErrnoError(19); + } + return stream.stream_ops.mmap(stream, buffer, offset, length, position, prot, flags); + },msync:function (stream, buffer, offset, length, mmapFlags) { + if (!stream || !stream.stream_ops.msync) { + return 0; + } + return stream.stream_ops.msync(stream, buffer, offset, length, mmapFlags); + },munmap:function (stream) { + return 0; + },ioctl:function (stream, cmd, arg) { + if (!stream.stream_ops.ioctl) { + throw new FS.ErrnoError(25); + } + return stream.stream_ops.ioctl(stream, cmd, arg); + },readFile:function (path, opts) { + opts = opts || {}; + opts.flags = opts.flags || 'r'; + opts.encoding = opts.encoding || 'binary'; + if (opts.encoding !== 'utf8' && opts.encoding !== 'binary') { + throw new Error('Invalid encoding type "' + opts.encoding + '"'); + } + var ret; + var stream = FS.open(path, opts.flags); + var stat = FS.stat(path); + var length = stat.size; + var buf = new Uint8Array(length); + FS.read(stream, buf, 0, length, 0); + if (opts.encoding === 'utf8') { + ret = UTF8ArrayToString(buf, 0); + } else if (opts.encoding === 'binary') { + ret = buf; + } + FS.close(stream); + return ret; + },writeFile:function (path, data, opts) { + opts = opts || {}; + opts.flags = opts.flags || 'w'; + var stream = FS.open(path, opts.flags, opts.mode); + if (typeof data === 'string') { + var buf = new Uint8Array(lengthBytesUTF8(data)+1); + var actualNumBytes = stringToUTF8Array(data, buf, 0, buf.length); + FS.write(stream, buf, 0, actualNumBytes, undefined, opts.canOwn); + } else if (ArrayBuffer.isView(data)) { + FS.write(stream, data, 0, data.byteLength, undefined, opts.canOwn); + } else { + throw new Error('Unsupported data type'); + } + FS.close(stream); + },cwd:function () { + return FS.currentPath; + },chdir:function (path) { + var lookup = FS.lookupPath(path, { follow: true }); + if (lookup.node === null) { + throw new FS.ErrnoError(2); + } + if (!FS.isDir(lookup.node.mode)) { + throw new FS.ErrnoError(20); + } + var err = FS.nodePermissions(lookup.node, 'x'); + if (err) { + throw new FS.ErrnoError(err); + } + FS.currentPath = lookup.path; + },createDefaultDirectories:function () { + FS.mkdir('/tmp'); + FS.mkdir('/home'); + FS.mkdir('/home/web_user'); + },createDefaultDevices:function () { + // create /dev + FS.mkdir('/dev'); + // setup /dev/null + FS.registerDevice(FS.makedev(1, 3), { + read: function() { return 0; }, + write: function(stream, buffer, offset, length, pos) { return length; } + }); + FS.mkdev('/dev/null', FS.makedev(1, 3)); + // setup /dev/tty and /dev/tty1 + // stderr needs to print output using Module['printErr'] + // so we register a second tty just for it. + TTY.register(FS.makedev(5, 0), TTY.default_tty_ops); + TTY.register(FS.makedev(6, 0), TTY.default_tty1_ops); + FS.mkdev('/dev/tty', FS.makedev(5, 0)); + FS.mkdev('/dev/tty1', FS.makedev(6, 0)); + // setup /dev/[u]random + var random_device; + if (typeof crypto === 'object' && typeof crypto['getRandomValues'] === 'function') { + // for modern web browsers + var randomBuffer = new Uint8Array(1); + random_device = function() { crypto.getRandomValues(randomBuffer); return randomBuffer[0]; }; + } else + if (ENVIRONMENT_IS_NODE) { + // for nodejs with or without crypto support included + try { + var crypto_module = require('crypto'); + // nodejs has crypto support + random_device = function() { return crypto_module['randomBytes'](1)[0]; }; + } catch (e) { + // nodejs doesn't have crypto support + } + } else + {} + if (!random_device) { + // we couldn't find a proper implementation, as Math.random() is not suitable for /dev/random, see emscripten-core/emscripten/pull/7096 + random_device = function() { abort("no cryptographic support found for random_device. consider polyfilling it if you want to use something insecure like Math.random(), e.g. put this in a --pre-js: var crypto = { getRandomValues: function(array) { for (var i = 0; i < array.length; i++) array[i] = (Math.random()*256)|0 } };"); }; + } + FS.createDevice('/dev', 'random', random_device); + FS.createDevice('/dev', 'urandom', random_device); + // we're not going to emulate the actual shm device, + // just create the tmp dirs that reside in it commonly + FS.mkdir('/dev/shm'); + FS.mkdir('/dev/shm/tmp'); + },createSpecialDirectories:function () { + // create /proc/self/fd which allows /proc/self/fd/6 => readlink gives the name of the stream for fd 6 (see test_unistd_ttyname) + FS.mkdir('/proc'); + FS.mkdir('/proc/self'); + FS.mkdir('/proc/self/fd'); + FS.mount({ + mount: function() { + var node = FS.createNode('/proc/self', 'fd', 16384 | 511 /* 0777 */, 73); + node.node_ops = { + lookup: function(parent, name) { + var fd = +name; + var stream = FS.getStream(fd); + if (!stream) throw new FS.ErrnoError(9); + var ret = { + parent: null, + mount: { mountpoint: 'fake' }, + node_ops: { readlink: function() { return stream.path } } + }; + ret.parent = ret; // make it look like a simple root node + return ret; + } + }; + return node; + } + }, {}, '/proc/self/fd'); + },createStandardStreams:function () { + // TODO deprecate the old functionality of a single + // input / output callback and that utilizes FS.createDevice + // and instead require a unique set of stream ops + + // by default, we symlink the standard streams to the + // default tty devices. however, if the standard streams + // have been overwritten we create a unique device for + // them instead. + if (Module['stdin']) { + FS.createDevice('/dev', 'stdin', Module['stdin']); + } else { + FS.symlink('/dev/tty', '/dev/stdin'); + } + if (Module['stdout']) { + FS.createDevice('/dev', 'stdout', null, Module['stdout']); + } else { + FS.symlink('/dev/tty', '/dev/stdout'); + } + if (Module['stderr']) { + FS.createDevice('/dev', 'stderr', null, Module['stderr']); + } else { + FS.symlink('/dev/tty1', '/dev/stderr'); + } + + // open default streams for the stdin, stdout and stderr devices + var stdin = FS.open('/dev/stdin', 'r'); + var stdout = FS.open('/dev/stdout', 'w'); + var stderr = FS.open('/dev/stderr', 'w'); + assert(stdin.fd === 0, 'invalid handle for stdin (' + stdin.fd + ')'); + assert(stdout.fd === 1, 'invalid handle for stdout (' + stdout.fd + ')'); + assert(stderr.fd === 2, 'invalid handle for stderr (' + stderr.fd + ')'); + },ensureErrnoError:function () { + if (FS.ErrnoError) return; + FS.ErrnoError = function ErrnoError(errno, node) { + this.node = node; + this.setErrno = function(errno) { + this.errno = errno; + for (var key in ERRNO_CODES) { + if (ERRNO_CODES[key] === errno) { + this.code = key; + break; + } + } + }; + this.setErrno(errno); + this.message = ERRNO_MESSAGES[errno]; + + // Try to get a maximally helpful stack trace. On Node.js, getting Error.stack + // now ensures it shows what we want. + if (this.stack) { + // Define the stack property for Node.js 4, which otherwise errors on the next line. + Object.defineProperty(this, "stack", { value: (new Error).stack, writable: true }); + this.stack = demangleAll(this.stack); + } + }; + FS.ErrnoError.prototype = new Error(); + FS.ErrnoError.prototype.constructor = FS.ErrnoError; + // Some errors may happen quite a bit, to avoid overhead we reuse them (and suffer a lack of stack info) + [2].forEach(function(code) { + FS.genericErrors[code] = new FS.ErrnoError(code); + FS.genericErrors[code].stack = '<generic error, no stack>'; + }); + },staticInit:function () { + FS.ensureErrnoError(); + + FS.nameTable = new Array(4096); + + FS.mount(MEMFS, {}, '/'); + + FS.createDefaultDirectories(); + FS.createDefaultDevices(); + FS.createSpecialDirectories(); + + FS.filesystems = { + 'MEMFS': MEMFS, + 'IDBFS': IDBFS, + 'NODEFS': NODEFS, + 'WORKERFS': WORKERFS, + }; + },init:function (input, output, error) { + assert(!FS.init.initialized, 'FS.init was previously called. If you want to initialize later with custom parameters, remove any earlier calls (note that one is automatically added to the generated code)'); + FS.init.initialized = true; + + FS.ensureErrnoError(); + + // Allow Module.stdin etc. to provide defaults, if none explicitly passed to us here + Module['stdin'] = input || Module['stdin']; + Module['stdout'] = output || Module['stdout']; + Module['stderr'] = error || Module['stderr']; + + FS.createStandardStreams(); + },quit:function () { + FS.init.initialized = false; + // force-flush all streams, so we get musl std streams printed out + var fflush = Module['_fflush']; + if (fflush) fflush(0); + // close all of our streams + for (var i = 0; i < FS.streams.length; i++) { + var stream = FS.streams[i]; + if (!stream) { + continue; + } + FS.close(stream); + } + },getMode:function (canRead, canWrite) { + var mode = 0; + if (canRead) mode |= 292 | 73; + if (canWrite) mode |= 146; + return mode; + },joinPath:function (parts, forceRelative) { + var path = PATH.join.apply(null, parts); + if (forceRelative && path[0] == '/') path = path.substr(1); + return path; + },absolutePath:function (relative, base) { + return PATH_FS.resolve(base, relative); + },standardizePath:function (path) { + return PATH.normalize(path); + },findObject:function (path, dontResolveLastLink) { + var ret = FS.analyzePath(path, dontResolveLastLink); + if (ret.exists) { + return ret.object; + } else { + ___setErrNo(ret.error); + return null; + } + },analyzePath:function (path, dontResolveLastLink) { + // operate from within the context of the symlink's target + try { + var lookup = FS.lookupPath(path, { follow: !dontResolveLastLink }); + path = lookup.path; + } catch (e) { + } + var ret = { + isRoot: false, exists: false, error: 0, name: null, path: null, object: null, + parentExists: false, parentPath: null, parentObject: null + }; + try { + var lookup = FS.lookupPath(path, { parent: true }); + ret.parentExists = true; + ret.parentPath = lookup.path; + ret.parentObject = lookup.node; + ret.name = PATH.basename(path); + lookup = FS.lookupPath(path, { follow: !dontResolveLastLink }); + ret.exists = true; + ret.path = lookup.path; + ret.object = lookup.node; + ret.name = lookup.node.name; + ret.isRoot = lookup.path === '/'; + } catch (e) { + ret.error = e.errno; + }; + return ret; + },createFolder:function (parent, name, canRead, canWrite) { + var path = PATH.join2(typeof parent === 'string' ? parent : FS.getPath(parent), name); + var mode = FS.getMode(canRead, canWrite); + return FS.mkdir(path, mode); + },createPath:function (parent, path, canRead, canWrite) { + parent = typeof parent === 'string' ? parent : FS.getPath(parent); + var parts = path.split('/').reverse(); + while (parts.length) { + var part = parts.pop(); + if (!part) continue; + var current = PATH.join2(parent, part); + try { + FS.mkdir(current); + } catch (e) { + // ignore EEXIST + } + parent = current; + } + return current; + },createFile:function (parent, name, properties, canRead, canWrite) { + var path = PATH.join2(typeof parent === 'string' ? parent : FS.getPath(parent), name); + var mode = FS.getMode(canRead, canWrite); + return FS.create(path, mode); + },createDataFile:function (parent, name, data, canRead, canWrite, canOwn) { + var path = name ? PATH.join2(typeof parent === 'string' ? parent : FS.getPath(parent), name) : parent; + var mode = FS.getMode(canRead, canWrite); + var node = FS.create(path, mode); + if (data) { + if (typeof data === 'string') { + var arr = new Array(data.length); + for (var i = 0, len = data.length; i < len; ++i) arr[i] = data.charCodeAt(i); + data = arr; + } + // make sure we can write to the file + FS.chmod(node, mode | 146); + var stream = FS.open(node, 'w'); + FS.write(stream, data, 0, data.length, 0, canOwn); + FS.close(stream); + FS.chmod(node, mode); + } + return node; + },createDevice:function (parent, name, input, output) { + var path = PATH.join2(typeof parent === 'string' ? parent : FS.getPath(parent), name); + var mode = FS.getMode(!!input, !!output); + if (!FS.createDevice.major) FS.createDevice.major = 64; + var dev = FS.makedev(FS.createDevice.major++, 0); + // Create a fake device that a set of stream ops to emulate + // the old behavior. + FS.registerDevice(dev, { + open: function(stream) { + stream.seekable = false; + }, + close: function(stream) { + // flush any pending line data + if (output && output.buffer && output.buffer.length) { + output(10); + } + }, + read: function(stream, buffer, offset, length, pos /* ignored */) { + var bytesRead = 0; + for (var i = 0; i < length; i++) { + var result; + try { + result = input(); + } catch (e) { + throw new FS.ErrnoError(5); + } + if (result === undefined && bytesRead === 0) { + throw new FS.ErrnoError(11); + } + if (result === null || result === undefined) break; + bytesRead++; + buffer[offset+i] = result; + } + if (bytesRead) { + stream.node.timestamp = Date.now(); + } + return bytesRead; + }, + write: function(stream, buffer, offset, length, pos) { + for (var i = 0; i < length; i++) { + try { + output(buffer[offset+i]); + } catch (e) { + throw new FS.ErrnoError(5); + } + } + if (length) { + stream.node.timestamp = Date.now(); + } + return i; + } + }); + return FS.mkdev(path, mode, dev); + },createLink:function (parent, name, target, canRead, canWrite) { + var path = PATH.join2(typeof parent === 'string' ? parent : FS.getPath(parent), name); + return FS.symlink(target, path); + },forceLoadFile:function (obj) { + if (obj.isDevice || obj.isFolder || obj.link || obj.contents) return true; + var success = true; + if (typeof XMLHttpRequest !== 'undefined') { + throw new Error("Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread."); + } else if (read_) { + // Command-line. + try { + // WARNING: Can't read binary files in V8's d8 or tracemonkey's js, as + // read() will try to parse UTF8. + obj.contents = intArrayFromString(read_(obj.url), true); + obj.usedBytes = obj.contents.length; + } catch (e) { + success = false; + } + } else { + throw new Error('Cannot load without read() or XMLHttpRequest.'); + } + if (!success) ___setErrNo(5); + return success; + },createLazyFile:function (parent, name, url, canRead, canWrite) { + // Lazy chunked Uint8Array (implements get and length from Uint8Array). Actual getting is abstracted away for eventual reuse. + function LazyUint8Array() { + this.lengthKnown = false; + this.chunks = []; // Loaded chunks. Index is the chunk number + } + LazyUint8Array.prototype.get = function LazyUint8Array_get(idx) { + if (idx > this.length-1 || idx < 0) { + return undefined; + } + var chunkOffset = idx % this.chunkSize; + var chunkNum = (idx / this.chunkSize)|0; + return this.getter(chunkNum)[chunkOffset]; + }; + LazyUint8Array.prototype.setDataGetter = function LazyUint8Array_setDataGetter(getter) { + this.getter = getter; + }; + LazyUint8Array.prototype.cacheLength = function LazyUint8Array_cacheLength() { + // Find length + var xhr = new XMLHttpRequest(); + xhr.open('HEAD', url, false); + xhr.send(null); + if (!(xhr.status >= 200 && xhr.status < 300 || xhr.status === 304)) throw new Error("Couldn't load " + url + ". Status: " + xhr.status); + var datalength = Number(xhr.getResponseHeader("Content-length")); + var header; + var hasByteServing = (header = xhr.getResponseHeader("Accept-Ranges")) && header === "bytes"; + var usesGzip = (header = xhr.getResponseHeader("Content-Encoding")) && header === "gzip"; + + var chunkSize = 1024*1024; // Chunk size in bytes + + if (!hasByteServing) chunkSize = datalength; + + // Function to get a range from the remote URL. + var doXHR = (function(from, to) { + if (from > to) throw new Error("invalid range (" + from + ", " + to + ") or no bytes requested!"); + if (to > datalength-1) throw new Error("only " + datalength + " bytes available! programmer error!"); + + // TODO: Use mozResponseArrayBuffer, responseStream, etc. if available. + var xhr = new XMLHttpRequest(); + xhr.open('GET', url, false); + if (datalength !== chunkSize) xhr.setRequestHeader("Range", "bytes=" + from + "-" + to); + + // Some hints to the browser that we want binary data. + if (typeof Uint8Array != 'undefined') xhr.responseType = 'arraybuffer'; + if (xhr.overrideMimeType) { + xhr.overrideMimeType('text/plain; charset=x-user-defined'); + } + + xhr.send(null); + if (!(xhr.status >= 200 && xhr.status < 300 || xhr.status === 304)) throw new Error("Couldn't load " + url + ". Status: " + xhr.status); + if (xhr.response !== undefined) { + return new Uint8Array(xhr.response || []); + } else { + return intArrayFromString(xhr.responseText || '', true); + } + }); + var lazyArray = this; + lazyArray.setDataGetter(function(chunkNum) { + var start = chunkNum * chunkSize; + var end = (chunkNum+1) * chunkSize - 1; // including this byte + end = Math.min(end, datalength-1); // if datalength-1 is selected, this is the last block + if (typeof(lazyArray.chunks[chunkNum]) === "undefined") { + lazyArray.chunks[chunkNum] = doXHR(start, end); + } + if (typeof(lazyArray.chunks[chunkNum]) === "undefined") throw new Error("doXHR failed!"); + return lazyArray.chunks[chunkNum]; + }); + + if (usesGzip || !datalength) { + // if the server uses gzip or doesn't supply the length, we have to download the whole file to get the (uncompressed) length + chunkSize = datalength = 1; // this will force getter(0)/doXHR do download the whole file + datalength = this.getter(0).length; + chunkSize = datalength; + console.log("LazyFiles on gzip forces download of the whole file when length is accessed"); + } + + this._length = datalength; + this._chunkSize = chunkSize; + this.lengthKnown = true; + }; + if (typeof XMLHttpRequest !== 'undefined') { + if (!ENVIRONMENT_IS_WORKER) throw 'Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc'; + var lazyArray = new LazyUint8Array(); + Object.defineProperties(lazyArray, { + length: { + get: function() { + if(!this.lengthKnown) { + this.cacheLength(); + } + return this._length; + } + }, + chunkSize: { + get: function() { + if(!this.lengthKnown) { + this.cacheLength(); + } + return this._chunkSize; + } + } + }); + + var properties = { isDevice: false, contents: lazyArray }; + } else { + var properties = { isDevice: false, url: url }; + } + + var node = FS.createFile(parent, name, properties, canRead, canWrite); + // This is a total hack, but I want to get this lazy file code out of the + // core of MEMFS. If we want to keep this lazy file concept I feel it should + // be its own thin LAZYFS proxying calls to MEMFS. + if (properties.contents) { + node.contents = properties.contents; + } else if (properties.url) { + node.contents = null; + node.url = properties.url; + } + // Add a function that defers querying the file size until it is asked the first time. + Object.defineProperties(node, { + usedBytes: { + get: function() { return this.contents.length; } + } + }); + // override each stream op with one that tries to force load the lazy file first + var stream_ops = {}; + var keys = Object.keys(node.stream_ops); + keys.forEach(function(key) { + var fn = node.stream_ops[key]; + stream_ops[key] = function forceLoadLazyFile() { + if (!FS.forceLoadFile(node)) { + throw new FS.ErrnoError(5); + } + return fn.apply(null, arguments); + }; + }); + // use a custom read function + stream_ops.read = function stream_ops_read(stream, buffer, offset, length, position) { + if (!FS.forceLoadFile(node)) { + throw new FS.ErrnoError(5); + } + var contents = stream.node.contents; + if (position >= contents.length) + return 0; + var size = Math.min(contents.length - position, length); + assert(size >= 0); + if (contents.slice) { // normal array + for (var i = 0; i < size; i++) { + buffer[offset + i] = contents[position + i]; + } + } else { + for (var i = 0; i < size; i++) { // LazyUint8Array from sync binary XHR + buffer[offset + i] = contents.get(position + i); + } + } + return size; + }; + node.stream_ops = stream_ops; + return node; + },createPreloadedFile:function (parent, name, url, canRead, canWrite, onload, onerror, dontCreateFile, canOwn, preFinish) { + Browser.init(); // XXX perhaps this method should move onto Browser? + // TODO we should allow people to just pass in a complete filename instead + // of parent and name being that we just join them anyways + var fullname = name ? PATH_FS.resolve(PATH.join2(parent, name)) : parent; + var dep = getUniqueRunDependency('cp ' + fullname); // might have several active requests for the same fullname + function processData(byteArray) { + function finish(byteArray) { + if (preFinish) preFinish(); + if (!dontCreateFile) { + FS.createDataFile(parent, name, byteArray, canRead, canWrite, canOwn); + } + if (onload) onload(); + removeRunDependency(dep); + } + var handled = false; + Module['preloadPlugins'].forEach(function(plugin) { + if (handled) return; + if (plugin['canHandle'](fullname)) { + plugin['handle'](byteArray, fullname, finish, function() { + if (onerror) onerror(); + removeRunDependency(dep); + }); + handled = true; + } + }); + if (!handled) finish(byteArray); + } + addRunDependency(dep); + if (typeof url == 'string') { + Browser.asyncLoad(url, function(byteArray) { + processData(byteArray); + }, onerror); + } else { + processData(url); + } + },indexedDB:function () { + return window.indexedDB || window.mozIndexedDB || window.webkitIndexedDB || window.msIndexedDB; + },DB_NAME:function () { + return 'EM_FS_' + window.location.pathname; + },DB_VERSION:20,DB_STORE_NAME:"FILE_DATA",saveFilesToDB:function (paths, onload, onerror) { + onload = onload || function(){}; + onerror = onerror || function(){}; + var indexedDB = FS.indexedDB(); + try { + var openRequest = indexedDB.open(FS.DB_NAME(), FS.DB_VERSION); + } catch (e) { + return onerror(e); + } + openRequest.onupgradeneeded = function openRequest_onupgradeneeded() { + console.log('creating db'); + var db = openRequest.result; + db.createObjectStore(FS.DB_STORE_NAME); + }; + openRequest.onsuccess = function openRequest_onsuccess() { + var db = openRequest.result; + var transaction = db.transaction([FS.DB_STORE_NAME], 'readwrite'); + var files = transaction.objectStore(FS.DB_STORE_NAME); + var ok = 0, fail = 0, total = paths.length; + function finish() { + if (fail == 0) onload(); else onerror(); + } + paths.forEach(function(path) { + var putRequest = files.put(FS.analyzePath(path).object.contents, path); + putRequest.onsuccess = function putRequest_onsuccess() { ok++; if (ok + fail == total) finish() }; + putRequest.onerror = function putRequest_onerror() { fail++; if (ok + fail == total) finish() }; + }); + transaction.onerror = onerror; + }; + openRequest.onerror = onerror; + },loadFilesFromDB:function (paths, onload, onerror) { + onload = onload || function(){}; + onerror = onerror || function(){}; + var indexedDB = FS.indexedDB(); + try { + var openRequest = indexedDB.open(FS.DB_NAME(), FS.DB_VERSION); + } catch (e) { + return onerror(e); + } + openRequest.onupgradeneeded = onerror; // no database to load from + openRequest.onsuccess = function openRequest_onsuccess() { + var db = openRequest.result; + try { + var transaction = db.transaction([FS.DB_STORE_NAME], 'readonly'); + } catch(e) { + onerror(e); + return; + } + var files = transaction.objectStore(FS.DB_STORE_NAME); + var ok = 0, fail = 0, total = paths.length; + function finish() { + if (fail == 0) onload(); else onerror(); + } + paths.forEach(function(path) { + var getRequest = files.get(path); + getRequest.onsuccess = function getRequest_onsuccess() { + if (FS.analyzePath(path).exists) { + FS.unlink(path); + } + FS.createDataFile(PATH.dirname(path), PATH.basename(path), getRequest.result, true, true, true); + ok++; + if (ok + fail == total) finish(); + }; + getRequest.onerror = function getRequest_onerror() { fail++; if (ok + fail == total) finish() }; + }); + transaction.onerror = onerror; + }; + openRequest.onerror = onerror; + }};var SYSCALLS={DEFAULT_POLLMASK:5,mappings:{},umask:511,calculateAt:function (dirfd, path) { + if (path[0] !== '/') { + // relative path + var dir; + if (dirfd === -100) { + dir = FS.cwd(); + } else { + var dirstream = FS.getStream(dirfd); + if (!dirstream) throw new FS.ErrnoError(9); + dir = dirstream.path; + } + path = PATH.join2(dir, path); + } + return path; + },doStat:function (func, path, buf) { + try { + var stat = func(path); + } catch (e) { + if (e && e.node && PATH.normalize(path) !== PATH.normalize(FS.getPath(e.node))) { + // an error occurred while trying to look up the path; we should just report ENOTDIR + return -20; + } + throw e; + } + HEAP32[((buf)>>2)]=stat.dev; + HEAP32[(((buf)+(4))>>2)]=0; + HEAP32[(((buf)+(8))>>2)]=stat.ino; + HEAP32[(((buf)+(12))>>2)]=stat.mode; + HEAP32[(((buf)+(16))>>2)]=stat.nlink; + HEAP32[(((buf)+(20))>>2)]=stat.uid; + HEAP32[(((buf)+(24))>>2)]=stat.gid; + HEAP32[(((buf)+(28))>>2)]=stat.rdev; + HEAP32[(((buf)+(32))>>2)]=0; + (tempI64 = [stat.size>>>0,(tempDouble=stat.size,(+(Math_abs(tempDouble))) >= 1.0 ? (tempDouble > 0.0 ? ((Math_min((+(Math_floor((tempDouble)/4294967296.0))), 4294967295.0))|0)>>>0 : (~~((+(Math_ceil((tempDouble - +(((~~(tempDouble)))>>>0))/4294967296.0)))))>>>0) : 0)],HEAP32[(((buf)+(40))>>2)]=tempI64[0],HEAP32[(((buf)+(44))>>2)]=tempI64[1]); + HEAP32[(((buf)+(48))>>2)]=4096; + HEAP32[(((buf)+(52))>>2)]=stat.blocks; + HEAP32[(((buf)+(56))>>2)]=(stat.atime.getTime() / 1000)|0; + HEAP32[(((buf)+(60))>>2)]=0; + HEAP32[(((buf)+(64))>>2)]=(stat.mtime.getTime() / 1000)|0; + HEAP32[(((buf)+(68))>>2)]=0; + HEAP32[(((buf)+(72))>>2)]=(stat.ctime.getTime() / 1000)|0; + HEAP32[(((buf)+(76))>>2)]=0; + (tempI64 = [stat.ino>>>0,(tempDouble=stat.ino,(+(Math_abs(tempDouble))) >= 1.0 ? (tempDouble > 0.0 ? ((Math_min((+(Math_floor((tempDouble)/4294967296.0))), 4294967295.0))|0)>>>0 : (~~((+(Math_ceil((tempDouble - +(((~~(tempDouble)))>>>0))/4294967296.0)))))>>>0) : 0)],HEAP32[(((buf)+(80))>>2)]=tempI64[0],HEAP32[(((buf)+(84))>>2)]=tempI64[1]); + return 0; + },doMsync:function (addr, stream, len, flags) { + var buffer = new Uint8Array(HEAPU8.subarray(addr, addr + len)); + FS.msync(stream, buffer, 0, len, flags); + },doMkdir:function (path, mode) { + // remove a trailing slash, if one - /a/b/ has basename of '', but + // we want to create b in the context of this function + path = PATH.normalize(path); + if (path[path.length-1] === '/') path = path.substr(0, path.length-1); + FS.mkdir(path, mode, 0); + return 0; + },doMknod:function (path, mode, dev) { + // we don't want this in the JS API as it uses mknod to create all nodes. + switch (mode & 61440) { + case 32768: + case 8192: + case 24576: + case 4096: + case 49152: + break; + default: return -22; + } + FS.mknod(path, mode, dev); + return 0; + },doReadlink:function (path, buf, bufsize) { + if (bufsize <= 0) return -22; + var ret = FS.readlink(path); + + var len = Math.min(bufsize, lengthBytesUTF8(ret)); + var endChar = HEAP8[buf+len]; + stringToUTF8(ret, buf, bufsize+1); + // readlink is one of the rare functions that write out a C string, but does never append a null to the output buffer(!) + // stringToUTF8() always appends a null byte, so restore the character under the null byte after the write. + HEAP8[buf+len] = endChar; + + return len; + },doAccess:function (path, amode) { + if (amode & ~7) { + // need a valid mode + return -22; + } + var node; + var lookup = FS.lookupPath(path, { follow: true }); + node = lookup.node; + if (!node) { + return -2; + } + var perms = ''; + if (amode & 4) perms += 'r'; + if (amode & 2) perms += 'w'; + if (amode & 1) perms += 'x'; + if (perms /* otherwise, they've just passed F_OK */ && FS.nodePermissions(node, perms)) { + return -13; + } + return 0; + },doDup:function (path, flags, suggestFD) { + var suggest = FS.getStream(suggestFD); + if (suggest) FS.close(suggest); + return FS.open(path, flags, 0, suggestFD, suggestFD).fd; + },doReadv:function (stream, iov, iovcnt, offset) { + var ret = 0; + for (var i = 0; i < iovcnt; i++) { + var ptr = HEAP32[(((iov)+(i*8))>>2)]; + var len = HEAP32[(((iov)+(i*8 + 4))>>2)]; + var curr = FS.read(stream, HEAP8,ptr, len, offset); + if (curr < 0) return -1; + ret += curr; + if (curr < len) break; // nothing more to read + } + return ret; + },doWritev:function (stream, iov, iovcnt, offset) { + var ret = 0; + for (var i = 0; i < iovcnt; i++) { + var ptr = HEAP32[(((iov)+(i*8))>>2)]; + var len = HEAP32[(((iov)+(i*8 + 4))>>2)]; + var curr = FS.write(stream, HEAP8,ptr, len, offset); + if (curr < 0) return -1; + ret += curr; + } + return ret; + },varargs:0,get:function (varargs) { + SYSCALLS.varargs += 4; + var ret = HEAP32[(((SYSCALLS.varargs)-(4))>>2)]; + return ret; + },getStr:function () { + var ret = UTF8ToString(SYSCALLS.get()); + return ret; + },getStreamFromFD:function () { + var stream = FS.getStream(SYSCALLS.get()); + if (!stream) throw new FS.ErrnoError(9); + return stream; + },get64:function () { + var low = SYSCALLS.get(), high = SYSCALLS.get(); + if (low >= 0) assert(high === 0); + else assert(high === -1); + return low; + },getZero:function () { + assert(SYSCALLS.get() === 0); + }};function ___syscall140(which, varargs) {SYSCALLS.varargs = varargs; + try { + // llseek + var stream = SYSCALLS.getStreamFromFD(), offset_high = SYSCALLS.get(), offset_low = SYSCALLS.get(), result = SYSCALLS.get(), whence = SYSCALLS.get(); + var HIGH_OFFSET = 0x100000000; // 2^32 + // use an unsigned operator on low and shift high by 32-bits + var offset = offset_high * HIGH_OFFSET + (offset_low >>> 0); + + var DOUBLE_LIMIT = 0x20000000000000; // 2^53 + // we also check for equality since DOUBLE_LIMIT + 1 == DOUBLE_LIMIT + if (offset <= -DOUBLE_LIMIT || offset >= DOUBLE_LIMIT) { + return -75; + } + + FS.llseek(stream, offset, whence); + (tempI64 = [stream.position>>>0,(tempDouble=stream.position,(+(Math_abs(tempDouble))) >= 1.0 ? (tempDouble > 0.0 ? ((Math_min((+(Math_floor((tempDouble)/4294967296.0))), 4294967295.0))|0)>>>0 : (~~((+(Math_ceil((tempDouble - +(((~~(tempDouble)))>>>0))/4294967296.0)))))>>>0) : 0)],HEAP32[((result)>>2)]=tempI64[0],HEAP32[(((result)+(4))>>2)]=tempI64[1]); + if (stream.getdents && offset === 0 && whence === 0) stream.getdents = null; // reset readdir state + return 0; + } catch (e) { + if (typeof FS === 'undefined' || !(e instanceof FS.ErrnoError)) abort(e); + return -e.errno; + } + } + + function ___syscall145(which, varargs) {SYSCALLS.varargs = varargs; + try { + // readv + var stream = SYSCALLS.getStreamFromFD(), iov = SYSCALLS.get(), iovcnt = SYSCALLS.get(); + return SYSCALLS.doReadv(stream, iov, iovcnt); + } catch (e) { + if (typeof FS === 'undefined' || !(e instanceof FS.ErrnoError)) abort(e); + return -e.errno; + } + } + + function ___syscall146(which, varargs) {SYSCALLS.varargs = varargs; + try { + // writev + var stream = SYSCALLS.getStreamFromFD(), iov = SYSCALLS.get(), iovcnt = SYSCALLS.get(); + return SYSCALLS.doWritev(stream, iov, iovcnt); + } catch (e) { + if (typeof FS === 'undefined' || !(e instanceof FS.ErrnoError)) abort(e); + return -e.errno; + } + } + + function ___syscall195(which, varargs) {SYSCALLS.varargs = varargs; + try { + // SYS_stat64 + var path = SYSCALLS.getStr(), buf = SYSCALLS.get(); + return SYSCALLS.doStat(FS.stat, path, buf); + } catch (e) { + if (typeof FS === 'undefined' || !(e instanceof FS.ErrnoError)) abort(e); + return -e.errno; + } + } + + function ___syscall197(which, varargs) {SYSCALLS.varargs = varargs; + try { + // SYS_fstat64 + var stream = SYSCALLS.getStreamFromFD(), buf = SYSCALLS.get(); + return SYSCALLS.doStat(FS.stat, stream.path, buf); + } catch (e) { + if (typeof FS === 'undefined' || !(e instanceof FS.ErrnoError)) abort(e); + return -e.errno; + } + } + + function ___syscall221(which, varargs) {SYSCALLS.varargs = varargs; + try { + // fcntl64 + var stream = SYSCALLS.getStreamFromFD(), cmd = SYSCALLS.get(); + switch (cmd) { + case 0: { + var arg = SYSCALLS.get(); + if (arg < 0) { + return -22; + } + var newStream; + newStream = FS.open(stream.path, stream.flags, 0, arg); + return newStream.fd; + } + case 1: + case 2: + return 0; // FD_CLOEXEC makes no sense for a single process. + case 3: + return stream.flags; + case 4: { + var arg = SYSCALLS.get(); + stream.flags |= arg; + return 0; + } + case 12: + /* case 12: Currently in musl F_GETLK64 has same value as F_GETLK, so omitted to avoid duplicate case blocks. If that changes, uncomment this */ { + + var arg = SYSCALLS.get(); + var offset = 0; + // We're always unlocked. + HEAP16[(((arg)+(offset))>>1)]=2; + return 0; + } + case 13: + case 14: + /* case 13: Currently in musl F_SETLK64 has same value as F_SETLK, so omitted to avoid duplicate case blocks. If that changes, uncomment this */ + /* case 14: Currently in musl F_SETLKW64 has same value as F_SETLKW, so omitted to avoid duplicate case blocks. If that changes, uncomment this */ + + + return 0; // Pretend that the locking is successful. + case 16: + case 8: + return -22; // These are for sockets. We don't have them fully implemented yet. + case 9: + // musl trusts getown return values, due to a bug where they must be, as they overlap with errors. just return -1 here, so fnctl() returns that, and we set errno ourselves. + ___setErrNo(22); + return -1; + default: { + return -22; + } + } + } catch (e) { + if (typeof FS === 'undefined' || !(e instanceof FS.ErrnoError)) abort(e); + return -e.errno; + } + } + + function ___syscall5(which, varargs) {SYSCALLS.varargs = varargs; + try { + // open + var pathname = SYSCALLS.getStr(), flags = SYSCALLS.get(), mode = SYSCALLS.get(); // optional TODO + var stream = FS.open(pathname, flags, mode); + return stream.fd; + } catch (e) { + if (typeof FS === 'undefined' || !(e instanceof FS.ErrnoError)) abort(e); + return -e.errno; + } + } + + function ___syscall54(which, varargs) {SYSCALLS.varargs = varargs; + try { + // ioctl + var stream = SYSCALLS.getStreamFromFD(), op = SYSCALLS.get(); + switch (op) { + case 21509: + case 21505: { + if (!stream.tty) return -25; + return 0; + } + case 21510: + case 21511: + case 21512: + case 21506: + case 21507: + case 21508: { + if (!stream.tty) return -25; + return 0; // no-op, not actually adjusting terminal settings + } + case 21519: { + if (!stream.tty) return -25; + var argp = SYSCALLS.get(); + HEAP32[((argp)>>2)]=0; + return 0; + } + case 21520: { + if (!stream.tty) return -25; + return -22; // not supported + } + case 21531: { + var argp = SYSCALLS.get(); + return FS.ioctl(stream, op, argp); + } + case 21523: { + // TODO: in theory we should write to the winsize struct that gets + // passed in, but for now musl doesn't read anything on it + if (!stream.tty) return -25; + return 0; + } + case 21524: { + // TODO: technically, this ioctl call should change the window size. + // but, since emscripten doesn't have any concept of a terminal window + // yet, we'll just silently throw it away as we do TIOCGWINSZ + if (!stream.tty) return -25; + return 0; + } + default: abort('bad ioctl syscall ' + op); + } + } catch (e) { + if (typeof FS === 'undefined' || !(e instanceof FS.ErrnoError)) abort(e); + return -e.errno; + } + } + + function ___syscall6(which, varargs) {SYSCALLS.varargs = varargs; + try { + // close + var stream = SYSCALLS.getStreamFromFD(); + FS.close(stream); + return 0; + } catch (e) { + if (typeof FS === 'undefined' || !(e instanceof FS.ErrnoError)) abort(e); + return -e.errno; + } + } + + function ___unlock() {} + + + var tupleRegistrations={}; + + function runDestructors(destructors) { + while (destructors.length) { + var ptr = destructors.pop(); + var del = destructors.pop(); + del(ptr); + } + } + + function simpleReadValueFromPointer(pointer) { + return this['fromWireType'](HEAPU32[pointer >> 2]); + } + + + var awaitingDependencies={}; + + var registeredTypes={}; + + var typeDependencies={}; + + + + + + + var char_0=48; + + var char_9=57;function makeLegalFunctionName(name) { + if (undefined === name) { + return '_unknown'; + } + name = name.replace(/[^a-zA-Z0-9_]/g, '$'); + var f = name.charCodeAt(0); + if (f >= char_0 && f <= char_9) { + return '_' + name; + } else { + return name; + } + }function createNamedFunction(name, body) { + name = makeLegalFunctionName(name); + /*jshint evil:true*/ + return new Function( + "body", + "return function " + name + "() {\n" + + " \"use strict\";" + + " return body.apply(this, arguments);\n" + + "};\n" + )(body); + }function extendError(baseErrorType, errorName) { + var errorClass = createNamedFunction(errorName, function(message) { + this.name = errorName; + this.message = message; + + var stack = (new Error(message)).stack; + if (stack !== undefined) { + this.stack = this.toString() + '\n' + + stack.replace(/^Error(:[^\n]*)?\n/, ''); + } + }); + errorClass.prototype = Object.create(baseErrorType.prototype); + errorClass.prototype.constructor = errorClass; + errorClass.prototype.toString = function() { + if (this.message === undefined) { + return this.name; + } else { + return this.name + ': ' + this.message; + } + }; + + return errorClass; + }var InternalError=undefined;function throwInternalError(message) { + throw new InternalError(message); + }function whenDependentTypesAreResolved(myTypes, dependentTypes, getTypeConverters) { + myTypes.forEach(function(type) { + typeDependencies[type] = dependentTypes; + }); + + function onComplete(typeConverters) { + var myTypeConverters = getTypeConverters(typeConverters); + if (myTypeConverters.length !== myTypes.length) { + throwInternalError('Mismatched type converter count'); + } + for (var i = 0; i < myTypes.length; ++i) { + registerType(myTypes[i], myTypeConverters[i]); + } + } + + var typeConverters = new Array(dependentTypes.length); + var unregisteredTypes = []; + var registered = 0; + dependentTypes.forEach(function(dt, i) { + if (registeredTypes.hasOwnProperty(dt)) { + typeConverters[i] = registeredTypes[dt]; + } else { + unregisteredTypes.push(dt); + if (!awaitingDependencies.hasOwnProperty(dt)) { + awaitingDependencies[dt] = []; + } + awaitingDependencies[dt].push(function() { + typeConverters[i] = registeredTypes[dt]; + ++registered; + if (registered === unregisteredTypes.length) { + onComplete(typeConverters); + } + }); + } + }); + if (0 === unregisteredTypes.length) { + onComplete(typeConverters); + } + }function __embind_finalize_value_array(rawTupleType) { + var reg = tupleRegistrations[rawTupleType]; + delete tupleRegistrations[rawTupleType]; + var elements = reg.elements; + var elementsLength = elements.length; + var elementTypes = elements.map(function(elt) { return elt.getterReturnType; }). + concat(elements.map(function(elt) { return elt.setterArgumentType; })); + + var rawConstructor = reg.rawConstructor; + var rawDestructor = reg.rawDestructor; + + whenDependentTypesAreResolved([rawTupleType], elementTypes, function(elementTypes) { + elements.forEach(function(elt, i) { + var getterReturnType = elementTypes[i]; + var getter = elt.getter; + var getterContext = elt.getterContext; + var setterArgumentType = elementTypes[i + elementsLength]; + var setter = elt.setter; + var setterContext = elt.setterContext; + elt.read = function(ptr) { + return getterReturnType['fromWireType'](getter(getterContext, ptr)); + }; + elt.write = function(ptr, o) { + var destructors = []; + setter(setterContext, ptr, setterArgumentType['toWireType'](destructors, o)); + runDestructors(destructors); + }; + }); + + return [{ + name: reg.name, + 'fromWireType': function(ptr) { + var rv = new Array(elementsLength); + for (var i = 0; i < elementsLength; ++i) { + rv[i] = elements[i].read(ptr); + } + rawDestructor(ptr); + return rv; + }, + 'toWireType': function(destructors, o) { + if (elementsLength !== o.length) { + throw new TypeError("Incorrect number of tuple elements for " + reg.name + ": expected=" + elementsLength + ", actual=" + o.length); + } + var ptr = rawConstructor(); + for (var i = 0; i < elementsLength; ++i) { + elements[i].write(ptr, o[i]); + } + if (destructors !== null) { + destructors.push(rawDestructor, ptr); + } + return ptr; + }, + 'argPackAdvance': 8, + 'readValueFromPointer': simpleReadValueFromPointer, + destructorFunction: rawDestructor, + }]; + }); + } + + + var structRegistrations={};function __embind_finalize_value_object(structType) { + var reg = structRegistrations[structType]; + delete structRegistrations[structType]; + + var rawConstructor = reg.rawConstructor; + var rawDestructor = reg.rawDestructor; + var fieldRecords = reg.fields; + var fieldTypes = fieldRecords.map(function(field) { return field.getterReturnType; }). + concat(fieldRecords.map(function(field) { return field.setterArgumentType; })); + whenDependentTypesAreResolved([structType], fieldTypes, function(fieldTypes) { + var fields = {}; + fieldRecords.forEach(function(field, i) { + var fieldName = field.fieldName; + var getterReturnType = fieldTypes[i]; + var getter = field.getter; + var getterContext = field.getterContext; + var setterArgumentType = fieldTypes[i + fieldRecords.length]; + var setter = field.setter; + var setterContext = field.setterContext; + fields[fieldName] = { + read: function(ptr) { + return getterReturnType['fromWireType']( + getter(getterContext, ptr)); + }, + write: function(ptr, o) { + var destructors = []; + setter(setterContext, ptr, setterArgumentType['toWireType'](destructors, o)); + runDestructors(destructors); + } + }; + }); + + return [{ + name: reg.name, + 'fromWireType': function(ptr) { + var rv = {}; + for (var i in fields) { + rv[i] = fields[i].read(ptr); + } + rawDestructor(ptr); + return rv; + }, + 'toWireType': function(destructors, o) { + // todo: Here we have an opportunity for -O3 level "unsafe" optimizations: + // assume all fields are present without checking. + for (var fieldName in fields) { + if (!(fieldName in o)) { + throw new TypeError('Missing field'); + } + } + var ptr = rawConstructor(); + for (fieldName in fields) { + fields[fieldName].write(ptr, o[fieldName]); + } + if (destructors !== null) { + destructors.push(rawDestructor, ptr); + } + return ptr; + }, + 'argPackAdvance': 8, + 'readValueFromPointer': simpleReadValueFromPointer, + destructorFunction: rawDestructor, + }]; + }); + } + + + function getShiftFromSize(size) { + switch (size) { + case 1: return 0; + case 2: return 1; + case 4: return 2; + case 8: return 3; + default: + throw new TypeError('Unknown type size: ' + size); + } + } + + + + function embind_init_charCodes() { + var codes = new Array(256); + for (var i = 0; i < 256; ++i) { + codes[i] = String.fromCharCode(i); + } + embind_charCodes = codes; + }var embind_charCodes=undefined;function readLatin1String(ptr) { + var ret = ""; + var c = ptr; + while (HEAPU8[c]) { + ret += embind_charCodes[HEAPU8[c++]]; + } + return ret; + } + + + + var BindingError=undefined;function throwBindingError(message) { + throw new BindingError(message); + }function registerType(rawType, registeredInstance, options) { + options = options || {}; + + if (!('argPackAdvance' in registeredInstance)) { + throw new TypeError('registerType registeredInstance requires argPackAdvance'); + } + + var name = registeredInstance.name; + if (!rawType) { + throwBindingError('type "' + name + '" must have a positive integer typeid pointer'); + } + if (registeredTypes.hasOwnProperty(rawType)) { + if (options.ignoreDuplicateRegistrations) { + return; + } else { + throwBindingError("Cannot register type '" + name + "' twice"); + } + } + + registeredTypes[rawType] = registeredInstance; + delete typeDependencies[rawType]; + + if (awaitingDependencies.hasOwnProperty(rawType)) { + var callbacks = awaitingDependencies[rawType]; + delete awaitingDependencies[rawType]; + callbacks.forEach(function(cb) { + cb(); + }); + } + }function __embind_register_bool(rawType, name, size, trueValue, falseValue) { + var shift = getShiftFromSize(size); + + name = readLatin1String(name); + registerType(rawType, { + name: name, + 'fromWireType': function(wt) { + // ambiguous emscripten ABI: sometimes return values are + // true or false, and sometimes integers (0 or 1) + return !!wt; + }, + 'toWireType': function(destructors, o) { + return o ? trueValue : falseValue; + }, + 'argPackAdvance': 8, + 'readValueFromPointer': function(pointer) { + // TODO: if heap is fixed (like in asm.js) this could be executed outside + var heap; + if (size === 1) { + heap = HEAP8; + } else if (size === 2) { + heap = HEAP16; + } else if (size === 4) { + heap = HEAP32; + } else { + throw new TypeError("Unknown boolean type size: " + name); + } + return this['fromWireType'](heap[pointer >> shift]); + }, + destructorFunction: null, // This type does not need a destructor + }); + } + + + + + function ClassHandle_isAliasOf(other) { + if (!(this instanceof ClassHandle)) { + return false; + } + if (!(other instanceof ClassHandle)) { + return false; + } + + var leftClass = this.$$.ptrType.registeredClass; + var left = this.$$.ptr; + var rightClass = other.$$.ptrType.registeredClass; + var right = other.$$.ptr; + + while (leftClass.baseClass) { + left = leftClass.upcast(left); + leftClass = leftClass.baseClass; + } + + while (rightClass.baseClass) { + right = rightClass.upcast(right); + rightClass = rightClass.baseClass; + } + + return leftClass === rightClass && left === right; + } + + + function shallowCopyInternalPointer(o) { + return { + count: o.count, + deleteScheduled: o.deleteScheduled, + preservePointerOnDelete: o.preservePointerOnDelete, + ptr: o.ptr, + ptrType: o.ptrType, + smartPtr: o.smartPtr, + smartPtrType: o.smartPtrType, + }; + } + + function throwInstanceAlreadyDeleted(obj) { + function getInstanceTypeName(handle) { + return handle.$$.ptrType.registeredClass.name; + } + throwBindingError(getInstanceTypeName(obj) + ' instance already deleted'); + } + + + var finalizationGroup=false; + + function detachFinalizer(handle) {} + + + function runDestructor($$) { + if ($$.smartPtr) { + $$.smartPtrType.rawDestructor($$.smartPtr); + } else { + $$.ptrType.registeredClass.rawDestructor($$.ptr); + } + }function releaseClassHandle($$) { + $$.count.value -= 1; + var toDelete = 0 === $$.count.value; + if (toDelete) { + runDestructor($$); + } + }function attachFinalizer(handle) { + if ('undefined' === typeof FinalizationGroup) { + attachFinalizer = function (handle) { return handle; }; + return handle; + } + // If the running environment has a FinalizationGroup (see + // https://github.com/tc39/proposal-weakrefs), then attach finalizers + // for class handles. We check for the presence of FinalizationGroup + // at run-time, not build-time. + finalizationGroup = new FinalizationGroup(function (iter) { + for (var result = iter.next(); !result.done; result = iter.next()) { + var $$ = result.value; + if (!$$.ptr) { + console.warn('object already deleted: ' + $$.ptr); + } else { + releaseClassHandle($$); + } + } + }); + attachFinalizer = function(handle) { + finalizationGroup.register(handle, handle.$$, handle.$$); + return handle; + }; + detachFinalizer = function(handle) { + finalizationGroup.unregister(handle.$$); + }; + return attachFinalizer(handle); + }function ClassHandle_clone() { + if (!this.$$.ptr) { + throwInstanceAlreadyDeleted(this); + } + + if (this.$$.preservePointerOnDelete) { + this.$$.count.value += 1; + return this; + } else { + var clone = attachFinalizer(Object.create(Object.getPrototypeOf(this), { + $$: { + value: shallowCopyInternalPointer(this.$$), + } + })); + + clone.$$.count.value += 1; + clone.$$.deleteScheduled = false; + return clone; + } + } + + function ClassHandle_delete() { + if (!this.$$.ptr) { + throwInstanceAlreadyDeleted(this); + } + + if (this.$$.deleteScheduled && !this.$$.preservePointerOnDelete) { + throwBindingError('Object already scheduled for deletion'); + } + + detachFinalizer(this); + releaseClassHandle(this.$$); + + if (!this.$$.preservePointerOnDelete) { + this.$$.smartPtr = undefined; + this.$$.ptr = undefined; + } + } + + function ClassHandle_isDeleted() { + return !this.$$.ptr; + } + + + var delayFunction=undefined; + + var deletionQueue=[]; + + function flushPendingDeletes() { + while (deletionQueue.length) { + var obj = deletionQueue.pop(); + obj.$$.deleteScheduled = false; + obj['delete'](); + } + }function ClassHandle_deleteLater() { + if (!this.$$.ptr) { + throwInstanceAlreadyDeleted(this); + } + if (this.$$.deleteScheduled && !this.$$.preservePointerOnDelete) { + throwBindingError('Object already scheduled for deletion'); + } + deletionQueue.push(this); + if (deletionQueue.length === 1 && delayFunction) { + delayFunction(flushPendingDeletes); + } + this.$$.deleteScheduled = true; + return this; + }function init_ClassHandle() { + ClassHandle.prototype['isAliasOf'] = ClassHandle_isAliasOf; + ClassHandle.prototype['clone'] = ClassHandle_clone; + ClassHandle.prototype['delete'] = ClassHandle_delete; + ClassHandle.prototype['isDeleted'] = ClassHandle_isDeleted; + ClassHandle.prototype['deleteLater'] = ClassHandle_deleteLater; + }function ClassHandle() { + } + + var registeredPointers={}; + + + function ensureOverloadTable(proto, methodName, humanName) { + if (undefined === proto[methodName].overloadTable) { + var prevFunc = proto[methodName]; + // Inject an overload resolver function that routes to the appropriate overload based on the number of arguments. + proto[methodName] = function() { + // TODO This check can be removed in -O3 level "unsafe" optimizations. + if (!proto[methodName].overloadTable.hasOwnProperty(arguments.length)) { + throwBindingError("Function '" + humanName + "' called with an invalid number of arguments (" + arguments.length + ") - expects one of (" + proto[methodName].overloadTable + ")!"); + } + return proto[methodName].overloadTable[arguments.length].apply(this, arguments); + }; + // Move the previous function into the overload table. + proto[methodName].overloadTable = []; + proto[methodName].overloadTable[prevFunc.argCount] = prevFunc; + } + }function exposePublicSymbol(name, value, numArguments) { + if (Module.hasOwnProperty(name)) { + if (undefined === numArguments || (undefined !== Module[name].overloadTable && undefined !== Module[name].overloadTable[numArguments])) { + throwBindingError("Cannot register public name '" + name + "' twice"); + } + + // We are exposing a function with the same name as an existing function. Create an overload table and a function selector + // that routes between the two. + ensureOverloadTable(Module, name, name); + if (Module.hasOwnProperty(numArguments)) { + throwBindingError("Cannot register multiple overloads of a function with the same number of arguments (" + numArguments + ")!"); + } + // Add the new function into the overload table. + Module[name].overloadTable[numArguments] = value; + } + else { + Module[name] = value; + if (undefined !== numArguments) { + Module[name].numArguments = numArguments; + } + } + } + + function RegisteredClass( + name, + constructor, + instancePrototype, + rawDestructor, + baseClass, + getActualType, + upcast, + downcast + ) { + this.name = name; + this.constructor = constructor; + this.instancePrototype = instancePrototype; + this.rawDestructor = rawDestructor; + this.baseClass = baseClass; + this.getActualType = getActualType; + this.upcast = upcast; + this.downcast = downcast; + this.pureVirtualFunctions = []; + } + + + + function upcastPointer(ptr, ptrClass, desiredClass) { + while (ptrClass !== desiredClass) { + if (!ptrClass.upcast) { + throwBindingError("Expected null or instance of " + desiredClass.name + ", got an instance of " + ptrClass.name); + } + ptr = ptrClass.upcast(ptr); + ptrClass = ptrClass.baseClass; + } + return ptr; + }function constNoSmartPtrRawPointerToWireType(destructors, handle) { + if (handle === null) { + if (this.isReference) { + throwBindingError('null is not a valid ' + this.name); + } + return 0; + } + + if (!handle.$$) { + throwBindingError('Cannot pass "' + _embind_repr(handle) + '" as a ' + this.name); + } + if (!handle.$$.ptr) { + throwBindingError('Cannot pass deleted object as a pointer of type ' + this.name); + } + var handleClass = handle.$$.ptrType.registeredClass; + var ptr = upcastPointer(handle.$$.ptr, handleClass, this.registeredClass); + return ptr; + } + + function genericPointerToWireType(destructors, handle) { + var ptr; + if (handle === null) { + if (this.isReference) { + throwBindingError('null is not a valid ' + this.name); + } + + if (this.isSmartPointer) { + ptr = this.rawConstructor(); + if (destructors !== null) { + destructors.push(this.rawDestructor, ptr); + } + return ptr; + } else { + return 0; + } + } + + if (!handle.$$) { + throwBindingError('Cannot pass "' + _embind_repr(handle) + '" as a ' + this.name); + } + if (!handle.$$.ptr) { + throwBindingError('Cannot pass deleted object as a pointer of type ' + this.name); + } + if (!this.isConst && handle.$$.ptrType.isConst) { + throwBindingError('Cannot convert argument of type ' + (handle.$$.smartPtrType ? handle.$$.smartPtrType.name : handle.$$.ptrType.name) + ' to parameter type ' + this.name); + } + var handleClass = handle.$$.ptrType.registeredClass; + ptr = upcastPointer(handle.$$.ptr, handleClass, this.registeredClass); + + if (this.isSmartPointer) { + // TODO: this is not strictly true + // We could support BY_EMVAL conversions from raw pointers to smart pointers + // because the smart pointer can hold a reference to the handle + if (undefined === handle.$$.smartPtr) { + throwBindingError('Passing raw pointer to smart pointer is illegal'); + } + + switch (this.sharingPolicy) { + case 0: // NONE + // no upcasting + if (handle.$$.smartPtrType === this) { + ptr = handle.$$.smartPtr; + } else { + throwBindingError('Cannot convert argument of type ' + (handle.$$.smartPtrType ? handle.$$.smartPtrType.name : handle.$$.ptrType.name) + ' to parameter type ' + this.name); + } + break; + + case 1: // INTRUSIVE + ptr = handle.$$.smartPtr; + break; + + case 2: // BY_EMVAL + if (handle.$$.smartPtrType === this) { + ptr = handle.$$.smartPtr; + } else { + var clonedHandle = handle['clone'](); + ptr = this.rawShare( + ptr, + __emval_register(function() { + clonedHandle['delete'](); + }) + ); + if (destructors !== null) { + destructors.push(this.rawDestructor, ptr); + } + } + break; + + default: + throwBindingError('Unsupporting sharing policy'); + } + } + return ptr; + } + + function nonConstNoSmartPtrRawPointerToWireType(destructors, handle) { + if (handle === null) { + if (this.isReference) { + throwBindingError('null is not a valid ' + this.name); + } + return 0; + } + + if (!handle.$$) { + throwBindingError('Cannot pass "' + _embind_repr(handle) + '" as a ' + this.name); + } + if (!handle.$$.ptr) { + throwBindingError('Cannot pass deleted object as a pointer of type ' + this.name); + } + if (handle.$$.ptrType.isConst) { + throwBindingError('Cannot convert argument of type ' + handle.$$.ptrType.name + ' to parameter type ' + this.name); + } + var handleClass = handle.$$.ptrType.registeredClass; + var ptr = upcastPointer(handle.$$.ptr, handleClass, this.registeredClass); + return ptr; + } + + + function RegisteredPointer_getPointee(ptr) { + if (this.rawGetPointee) { + ptr = this.rawGetPointee(ptr); + } + return ptr; + } + + function RegisteredPointer_destructor(ptr) { + if (this.rawDestructor) { + this.rawDestructor(ptr); + } + } + + function RegisteredPointer_deleteObject(handle) { + if (handle !== null) { + handle['delete'](); + } + } + + + function downcastPointer(ptr, ptrClass, desiredClass) { + if (ptrClass === desiredClass) { + return ptr; + } + if (undefined === desiredClass.baseClass) { + return null; // no conversion + } + + var rv = downcastPointer(ptr, ptrClass, desiredClass.baseClass); + if (rv === null) { + return null; + } + return desiredClass.downcast(rv); + } + + + + + function getInheritedInstanceCount() { + return Object.keys(registeredInstances).length; + } + + function getLiveInheritedInstances() { + var rv = []; + for (var k in registeredInstances) { + if (registeredInstances.hasOwnProperty(k)) { + rv.push(registeredInstances[k]); + } + } + return rv; + } + + function setDelayFunction(fn) { + delayFunction = fn; + if (deletionQueue.length && delayFunction) { + delayFunction(flushPendingDeletes); + } + }function init_embind() { + Module['getInheritedInstanceCount'] = getInheritedInstanceCount; + Module['getLiveInheritedInstances'] = getLiveInheritedInstances; + Module['flushPendingDeletes'] = flushPendingDeletes; + Module['setDelayFunction'] = setDelayFunction; + }var registeredInstances={}; + + function getBasestPointer(class_, ptr) { + if (ptr === undefined) { + throwBindingError('ptr should not be undefined'); + } + while (class_.baseClass) { + ptr = class_.upcast(ptr); + class_ = class_.baseClass; + } + return ptr; + }function getInheritedInstance(class_, ptr) { + ptr = getBasestPointer(class_, ptr); + return registeredInstances[ptr]; + } + + function makeClassHandle(prototype, record) { + if (!record.ptrType || !record.ptr) { + throwInternalError('makeClassHandle requires ptr and ptrType'); + } + var hasSmartPtrType = !!record.smartPtrType; + var hasSmartPtr = !!record.smartPtr; + if (hasSmartPtrType !== hasSmartPtr) { + throwInternalError('Both smartPtrType and smartPtr must be specified'); + } + record.count = { value: 1 }; + return attachFinalizer(Object.create(prototype, { + $$: { + value: record, + }, + })); + }function RegisteredPointer_fromWireType(ptr) { + // ptr is a raw pointer (or a raw smartpointer) + + // rawPointer is a maybe-null raw pointer + var rawPointer = this.getPointee(ptr); + if (!rawPointer) { + this.destructor(ptr); + return null; + } + + var registeredInstance = getInheritedInstance(this.registeredClass, rawPointer); + if (undefined !== registeredInstance) { + // JS object has been neutered, time to repopulate it + if (0 === registeredInstance.$$.count.value) { + registeredInstance.$$.ptr = rawPointer; + registeredInstance.$$.smartPtr = ptr; + return registeredInstance['clone'](); + } else { + // else, just increment reference count on existing object + // it already has a reference to the smart pointer + var rv = registeredInstance['clone'](); + this.destructor(ptr); + return rv; + } + } + + function makeDefaultHandle() { + if (this.isSmartPointer) { + return makeClassHandle(this.registeredClass.instancePrototype, { + ptrType: this.pointeeType, + ptr: rawPointer, + smartPtrType: this, + smartPtr: ptr, + }); + } else { + return makeClassHandle(this.registeredClass.instancePrototype, { + ptrType: this, + ptr: ptr, + }); + } + } + + var actualType = this.registeredClass.getActualType(rawPointer); + var registeredPointerRecord = registeredPointers[actualType]; + if (!registeredPointerRecord) { + return makeDefaultHandle.call(this); + } + + var toType; + if (this.isConst) { + toType = registeredPointerRecord.constPointerType; + } else { + toType = registeredPointerRecord.pointerType; + } + var dp = downcastPointer( + rawPointer, + this.registeredClass, + toType.registeredClass); + if (dp === null) { + return makeDefaultHandle.call(this); + } + if (this.isSmartPointer) { + return makeClassHandle(toType.registeredClass.instancePrototype, { + ptrType: toType, + ptr: dp, + smartPtrType: this, + smartPtr: ptr, + }); + } else { + return makeClassHandle(toType.registeredClass.instancePrototype, { + ptrType: toType, + ptr: dp, + }); + } + }function init_RegisteredPointer() { + RegisteredPointer.prototype.getPointee = RegisteredPointer_getPointee; + RegisteredPointer.prototype.destructor = RegisteredPointer_destructor; + RegisteredPointer.prototype['argPackAdvance'] = 8; + RegisteredPointer.prototype['readValueFromPointer'] = simpleReadValueFromPointer; + RegisteredPointer.prototype['deleteObject'] = RegisteredPointer_deleteObject; + RegisteredPointer.prototype['fromWireType'] = RegisteredPointer_fromWireType; + }function RegisteredPointer( + name, + registeredClass, + isReference, + isConst, + + // smart pointer properties + isSmartPointer, + pointeeType, + sharingPolicy, + rawGetPointee, + rawConstructor, + rawShare, + rawDestructor + ) { + this.name = name; + this.registeredClass = registeredClass; + this.isReference = isReference; + this.isConst = isConst; + + // smart pointer properties + this.isSmartPointer = isSmartPointer; + this.pointeeType = pointeeType; + this.sharingPolicy = sharingPolicy; + this.rawGetPointee = rawGetPointee; + this.rawConstructor = rawConstructor; + this.rawShare = rawShare; + this.rawDestructor = rawDestructor; + + if (!isSmartPointer && registeredClass.baseClass === undefined) { + if (isConst) { + this['toWireType'] = constNoSmartPtrRawPointerToWireType; + this.destructorFunction = null; + } else { + this['toWireType'] = nonConstNoSmartPtrRawPointerToWireType; + this.destructorFunction = null; + } + } else { + this['toWireType'] = genericPointerToWireType; + // Here we must leave this.destructorFunction undefined, since whether genericPointerToWireType returns + // a pointer that needs to be freed up is runtime-dependent, and cannot be evaluated at registration time. + // TODO: Create an alternative mechanism that allows removing the use of var destructors = []; array in + // craftInvokerFunction altogether. + } + } + + function replacePublicSymbol(name, value, numArguments) { + if (!Module.hasOwnProperty(name)) { + throwInternalError('Replacing nonexistant public symbol'); + } + // If there's an overload table for this symbol, replace the symbol in the overload table instead. + if (undefined !== Module[name].overloadTable && undefined !== numArguments) { + Module[name].overloadTable[numArguments] = value; + } + else { + Module[name] = value; + Module[name].argCount = numArguments; + } + } + + function embind__requireFunction(signature, rawFunction) { + signature = readLatin1String(signature); + + function makeDynCaller(dynCall) { + var args = []; + for (var i = 1; i < signature.length; ++i) { + args.push('a' + i); + } + + var name = 'dynCall_' + signature + '_' + rawFunction; + var body = 'return function ' + name + '(' + args.join(', ') + ') {\n'; + body += ' return dynCall(rawFunction' + (args.length ? ', ' : '') + args.join(', ') + ');\n'; + body += '};\n'; + + return (new Function('dynCall', 'rawFunction', body))(dynCall, rawFunction); + } + + var fp; + if (Module['FUNCTION_TABLE_' + signature] !== undefined) { + fp = Module['FUNCTION_TABLE_' + signature][rawFunction]; + } else if (typeof FUNCTION_TABLE !== "undefined") { + fp = FUNCTION_TABLE[rawFunction]; + } else { + // asm.js does not give direct access to the function tables, + // and thus we must go through the dynCall interface which allows + // calling into a signature's function table by pointer value. + // + // https://github.com/dherman/asm.js/issues/83 + // + // This has three main penalties: + // - dynCall is another function call in the path from JavaScript to C++. + // - JITs may not predict through the function table indirection at runtime. + var dc = Module['dynCall_' + signature]; + if (dc === undefined) { + // We will always enter this branch if the signature + // contains 'f' and PRECISE_F32 is not enabled. + // + // Try again, replacing 'f' with 'd'. + dc = Module['dynCall_' + signature.replace(/f/g, 'd')]; + if (dc === undefined) { + throwBindingError("No dynCall invoker for signature: " + signature); + } + } + fp = makeDynCaller(dc); + } + + if (typeof fp !== "function") { + throwBindingError("unknown function pointer with signature " + signature + ": " + rawFunction); + } + return fp; + } + + + var UnboundTypeError=undefined; + + function getTypeName(type) { + var ptr = ___getTypeName(type); + var rv = readLatin1String(ptr); + _free(ptr); + return rv; + }function throwUnboundTypeError(message, types) { + var unboundTypes = []; + var seen = {}; + function visit(type) { + if (seen[type]) { + return; + } + if (registeredTypes[type]) { + return; + } + if (typeDependencies[type]) { + typeDependencies[type].forEach(visit); + return; + } + unboundTypes.push(type); + seen[type] = true; + } + types.forEach(visit); + + throw new UnboundTypeError(message + ': ' + unboundTypes.map(getTypeName).join([', '])); + }function __embind_register_class( + rawType, + rawPointerType, + rawConstPointerType, + baseClassRawType, + getActualTypeSignature, + getActualType, + upcastSignature, + upcast, + downcastSignature, + downcast, + name, + destructorSignature, + rawDestructor + ) { + name = readLatin1String(name); + getActualType = embind__requireFunction(getActualTypeSignature, getActualType); + if (upcast) { + upcast = embind__requireFunction(upcastSignature, upcast); + } + if (downcast) { + downcast = embind__requireFunction(downcastSignature, downcast); + } + rawDestructor = embind__requireFunction(destructorSignature, rawDestructor); + var legalFunctionName = makeLegalFunctionName(name); + + exposePublicSymbol(legalFunctionName, function() { + // this code cannot run if baseClassRawType is zero + throwUnboundTypeError('Cannot construct ' + name + ' due to unbound types', [baseClassRawType]); + }); + + whenDependentTypesAreResolved( + [rawType, rawPointerType, rawConstPointerType], + baseClassRawType ? [baseClassRawType] : [], + function(base) { + base = base[0]; + + var baseClass; + var basePrototype; + if (baseClassRawType) { + baseClass = base.registeredClass; + basePrototype = baseClass.instancePrototype; + } else { + basePrototype = ClassHandle.prototype; + } + + var constructor = createNamedFunction(legalFunctionName, function() { + if (Object.getPrototypeOf(this) !== instancePrototype) { + throw new BindingError("Use 'new' to construct " + name); + } + if (undefined === registeredClass.constructor_body) { + throw new BindingError(name + " has no accessible constructor"); + } + var body = registeredClass.constructor_body[arguments.length]; + if (undefined === body) { + throw new BindingError("Tried to invoke ctor of " + name + " with invalid number of parameters (" + arguments.length + ") - expected (" + Object.keys(registeredClass.constructor_body).toString() + ") parameters instead!"); + } + return body.apply(this, arguments); + }); + + var instancePrototype = Object.create(basePrototype, { + constructor: { value: constructor }, + }); + + constructor.prototype = instancePrototype; + + var registeredClass = new RegisteredClass( + name, + constructor, + instancePrototype, + rawDestructor, + baseClass, + getActualType, + upcast, + downcast); + + var referenceConverter = new RegisteredPointer( + name, + registeredClass, + true, + false, + false); + + var pointerConverter = new RegisteredPointer( + name + '*', + registeredClass, + false, + false, + false); + + var constPointerConverter = new RegisteredPointer( + name + ' const*', + registeredClass, + false, + true, + false); + + registeredPointers[rawType] = { + pointerType: pointerConverter, + constPointerType: constPointerConverter + }; + + replacePublicSymbol(legalFunctionName, constructor); + + return [referenceConverter, pointerConverter, constPointerConverter]; + } + ); + } + + + + function new_(constructor, argumentList) { + if (!(constructor instanceof Function)) { + throw new TypeError('new_ called with constructor type ' + typeof(constructor) + " which is not a function"); + } + + /* + * Previously, the following line was just: + + function dummy() {}; + + * Unfortunately, Chrome was preserving 'dummy' as the object's name, even though at creation, the 'dummy' has the + * correct constructor name. Thus, objects created with IMVU.new would show up in the debugger as 'dummy', which + * isn't very helpful. Using IMVU.createNamedFunction addresses the issue. Doublely-unfortunately, there's no way + * to write a test for this behavior. -NRD 2013.02.22 + */ + var dummy = createNamedFunction(constructor.name || 'unknownFunctionName', function(){}); + dummy.prototype = constructor.prototype; + var obj = new dummy; + + var r = constructor.apply(obj, argumentList); + return (r instanceof Object) ? r : obj; + }function craftInvokerFunction(humanName, argTypes, classType, cppInvokerFunc, cppTargetFunc) { + // humanName: a human-readable string name for the function to be generated. + // argTypes: An array that contains the embind type objects for all types in the function signature. + // argTypes[0] is the type object for the function return value. + // argTypes[1] is the type object for function this object/class type, or null if not crafting an invoker for a class method. + // argTypes[2...] are the actual function parameters. + // classType: The embind type object for the class to be bound, or null if this is not a method of a class. + // cppInvokerFunc: JS Function object to the C++-side function that interops into C++ code. + // cppTargetFunc: Function pointer (an integer to FUNCTION_TABLE) to the target C++ function the cppInvokerFunc will end up calling. + var argCount = argTypes.length; + + if (argCount < 2) { + throwBindingError("argTypes array size mismatch! Must at least get return value and 'this' types!"); + } + + var isClassMethodFunc = (argTypes[1] !== null && classType !== null); + + // Free functions with signature "void function()" do not need an invoker that marshalls between wire types. + // TODO: This omits argument count check - enable only at -O3 or similar. + // if (ENABLE_UNSAFE_OPTS && argCount == 2 && argTypes[0].name == "void" && !isClassMethodFunc) { + // return FUNCTION_TABLE[fn]; + // } + + + // Determine if we need to use a dynamic stack to store the destructors for the function parameters. + // TODO: Remove this completely once all function invokers are being dynamically generated. + var needsDestructorStack = false; + + for(var i = 1; i < argTypes.length; ++i) { // Skip return value at index 0 - it's not deleted here. + if (argTypes[i] !== null && argTypes[i].destructorFunction === undefined) { // The type does not define a destructor function - must use dynamic stack + needsDestructorStack = true; + break; + } + } + + var returns = (argTypes[0].name !== "void"); + + var argsList = ""; + var argsListWired = ""; + for(var i = 0; i < argCount - 2; ++i) { + argsList += (i!==0?", ":"")+"arg"+i; + argsListWired += (i!==0?", ":"")+"arg"+i+"Wired"; + } + + var invokerFnBody = + "return function "+makeLegalFunctionName(humanName)+"("+argsList+") {\n" + + "if (arguments.length !== "+(argCount - 2)+") {\n" + + "throwBindingError('function "+humanName+" called with ' + arguments.length + ' arguments, expected "+(argCount - 2)+" args!');\n" + + "}\n"; + + + if (needsDestructorStack) { + invokerFnBody += + "var destructors = [];\n"; + } + + var dtorStack = needsDestructorStack ? "destructors" : "null"; + var args1 = ["throwBindingError", "invoker", "fn", "runDestructors", "retType", "classParam"]; + var args2 = [throwBindingError, cppInvokerFunc, cppTargetFunc, runDestructors, argTypes[0], argTypes[1]]; + + + if (isClassMethodFunc) { + invokerFnBody += "var thisWired = classParam.toWireType("+dtorStack+", this);\n"; + } + + for(var i = 0; i < argCount - 2; ++i) { + invokerFnBody += "var arg"+i+"Wired = argType"+i+".toWireType("+dtorStack+", arg"+i+"); // "+argTypes[i+2].name+"\n"; + args1.push("argType"+i); + args2.push(argTypes[i+2]); + } + + if (isClassMethodFunc) { + argsListWired = "thisWired" + (argsListWired.length > 0 ? ", " : "") + argsListWired; + } + + invokerFnBody += + (returns?"var rv = ":"") + "invoker(fn"+(argsListWired.length>0?", ":"")+argsListWired+");\n"; + + if (needsDestructorStack) { + invokerFnBody += "runDestructors(destructors);\n"; + } else { + for(var i = isClassMethodFunc?1:2; i < argTypes.length; ++i) { // Skip return value at index 0 - it's not deleted here. Also skip class type if not a method. + var paramName = (i === 1 ? "thisWired" : ("arg"+(i - 2)+"Wired")); + if (argTypes[i].destructorFunction !== null) { + invokerFnBody += paramName+"_dtor("+paramName+"); // "+argTypes[i].name+"\n"; + args1.push(paramName+"_dtor"); + args2.push(argTypes[i].destructorFunction); + } + } + } + + if (returns) { + invokerFnBody += "var ret = retType.fromWireType(rv);\n" + + "return ret;\n"; + } else { + } + invokerFnBody += "}\n"; + + args1.push(invokerFnBody); + + var invokerFunction = new_(Function, args1).apply(null, args2); + return invokerFunction; + } + + function heap32VectorToArray(count, firstElement) { + var array = []; + for (var i = 0; i < count; i++) { + array.push(HEAP32[(firstElement >> 2) + i]); + } + return array; + }function __embind_register_class_class_function( + rawClassType, + methodName, + argCount, + rawArgTypesAddr, + invokerSignature, + rawInvoker, + fn + ) { + var rawArgTypes = heap32VectorToArray(argCount, rawArgTypesAddr); + methodName = readLatin1String(methodName); + rawInvoker = embind__requireFunction(invokerSignature, rawInvoker); + whenDependentTypesAreResolved([], [rawClassType], function(classType) { + classType = classType[0]; + var humanName = classType.name + '.' + methodName; + + function unboundTypesHandler() { + throwUnboundTypeError('Cannot call ' + humanName + ' due to unbound types', rawArgTypes); + } + + var proto = classType.registeredClass.constructor; + if (undefined === proto[methodName]) { + // This is the first function to be registered with this name. + unboundTypesHandler.argCount = argCount-1; + proto[methodName] = unboundTypesHandler; + } else { + // There was an existing function with the same name registered. Set up a function overload routing table. + ensureOverloadTable(proto, methodName, humanName); + proto[methodName].overloadTable[argCount-1] = unboundTypesHandler; + } + + whenDependentTypesAreResolved([], rawArgTypes, function(argTypes) { + // Replace the initial unbound-types-handler stub with the proper function. If multiple overloads are registered, + // the function handlers go into an overload table. + var invokerArgsArray = [argTypes[0] /* return value */, null /* no class 'this'*/].concat(argTypes.slice(1) /* actual params */); + var func = craftInvokerFunction(humanName, invokerArgsArray, null /* no class 'this'*/, rawInvoker, fn); + if (undefined === proto[methodName].overloadTable) { + func.argCount = argCount-1; + proto[methodName] = func; + } else { + proto[methodName].overloadTable[argCount-1] = func; + } + return []; + }); + return []; + }); + } + + function __embind_register_class_constructor( + rawClassType, + argCount, + rawArgTypesAddr, + invokerSignature, + invoker, + rawConstructor + ) { + var rawArgTypes = heap32VectorToArray(argCount, rawArgTypesAddr); + invoker = embind__requireFunction(invokerSignature, invoker); + + whenDependentTypesAreResolved([], [rawClassType], function(classType) { + classType = classType[0]; + var humanName = 'constructor ' + classType.name; + + if (undefined === classType.registeredClass.constructor_body) { + classType.registeredClass.constructor_body = []; + } + if (undefined !== classType.registeredClass.constructor_body[argCount - 1]) { + throw new BindingError("Cannot register multiple constructors with identical number of parameters (" + (argCount-1) + ") for class '" + classType.name + "'! Overload resolution is currently only performed using the parameter count, not actual type info!"); + } + classType.registeredClass.constructor_body[argCount - 1] = function unboundTypeHandler() { + throwUnboundTypeError('Cannot construct ' + classType.name + ' due to unbound types', rawArgTypes); + }; + + whenDependentTypesAreResolved([], rawArgTypes, function(argTypes) { + classType.registeredClass.constructor_body[argCount - 1] = function constructor_body() { + if (arguments.length !== argCount - 1) { + throwBindingError(humanName + ' called with ' + arguments.length + ' arguments, expected ' + (argCount-1)); + } + var destructors = []; + var args = new Array(argCount); + args[0] = rawConstructor; + for (var i = 1; i < argCount; ++i) { + args[i] = argTypes[i]['toWireType'](destructors, arguments[i - 1]); + } + + var ptr = invoker.apply(null, args); + runDestructors(destructors); + + return argTypes[0]['fromWireType'](ptr); + }; + return []; + }); + return []; + }); + } + + function __embind_register_class_function( + rawClassType, + methodName, + argCount, + rawArgTypesAddr, // [ReturnType, ThisType, Args...] + invokerSignature, + rawInvoker, + context, + isPureVirtual + ) { + var rawArgTypes = heap32VectorToArray(argCount, rawArgTypesAddr); + methodName = readLatin1String(methodName); + rawInvoker = embind__requireFunction(invokerSignature, rawInvoker); + + whenDependentTypesAreResolved([], [rawClassType], function(classType) { + classType = classType[0]; + var humanName = classType.name + '.' + methodName; + + if (isPureVirtual) { + classType.registeredClass.pureVirtualFunctions.push(methodName); + } + + function unboundTypesHandler() { + throwUnboundTypeError('Cannot call ' + humanName + ' due to unbound types', rawArgTypes); + } + + var proto = classType.registeredClass.instancePrototype; + var method = proto[methodName]; + if (undefined === method || (undefined === method.overloadTable && method.className !== classType.name && method.argCount === argCount - 2)) { + // This is the first overload to be registered, OR we are replacing a function in the base class with a function in the derived class. + unboundTypesHandler.argCount = argCount - 2; + unboundTypesHandler.className = classType.name; + proto[methodName] = unboundTypesHandler; + } else { + // There was an existing function with the same name registered. Set up a function overload routing table. + ensureOverloadTable(proto, methodName, humanName); + proto[methodName].overloadTable[argCount - 2] = unboundTypesHandler; + } + + whenDependentTypesAreResolved([], rawArgTypes, function(argTypes) { + + var memberFunction = craftInvokerFunction(humanName, argTypes, classType, rawInvoker, context); + + // Replace the initial unbound-handler-stub function with the appropriate member function, now that all types + // are resolved. If multiple overloads are registered for this function, the function goes into an overload table. + if (undefined === proto[methodName].overloadTable) { + // Set argCount in case an overload is registered later + memberFunction.argCount = argCount - 2; + proto[methodName] = memberFunction; + } else { + proto[methodName].overloadTable[argCount - 2] = memberFunction; + } + + return []; + }); + return []; + }); + } + + + function validateThis(this_, classType, humanName) { + if (!(this_ instanceof Object)) { + throwBindingError(humanName + ' with invalid "this": ' + this_); + } + if (!(this_ instanceof classType.registeredClass.constructor)) { + throwBindingError(humanName + ' incompatible with "this" of type ' + this_.constructor.name); + } + if (!this_.$$.ptr) { + throwBindingError('cannot call emscripten binding method ' + humanName + ' on deleted object'); + } + + // todo: kill this + return upcastPointer( + this_.$$.ptr, + this_.$$.ptrType.registeredClass, + classType.registeredClass); + }function __embind_register_class_property( + classType, + fieldName, + getterReturnType, + getterSignature, + getter, + getterContext, + setterArgumentType, + setterSignature, + setter, + setterContext + ) { + fieldName = readLatin1String(fieldName); + getter = embind__requireFunction(getterSignature, getter); + + whenDependentTypesAreResolved([], [classType], function(classType) { + classType = classType[0]; + var humanName = classType.name + '.' + fieldName; + var desc = { + get: function() { + throwUnboundTypeError('Cannot access ' + humanName + ' due to unbound types', [getterReturnType, setterArgumentType]); + }, + enumerable: true, + configurable: true + }; + if (setter) { + desc.set = function() { + throwUnboundTypeError('Cannot access ' + humanName + ' due to unbound types', [getterReturnType, setterArgumentType]); + }; + } else { + desc.set = function(v) { + throwBindingError(humanName + ' is a read-only property'); + }; + } + + Object.defineProperty(classType.registeredClass.instancePrototype, fieldName, desc); + + whenDependentTypesAreResolved( + [], + (setter ? [getterReturnType, setterArgumentType] : [getterReturnType]), + function(types) { + var getterReturnType = types[0]; + var desc = { + get: function() { + var ptr = validateThis(this, classType, humanName + ' getter'); + return getterReturnType['fromWireType'](getter(getterContext, ptr)); + }, + enumerable: true + }; + + if (setter) { + setter = embind__requireFunction(setterSignature, setter); + var setterArgumentType = types[1]; + desc.set = function(v) { + var ptr = validateThis(this, classType, humanName + ' setter'); + var destructors = []; + setter(setterContext, ptr, setterArgumentType['toWireType'](destructors, v)); + runDestructors(destructors); + }; + } + + Object.defineProperty(classType.registeredClass.instancePrototype, fieldName, desc); + return []; + }); + + return []; + }); + } + + + + var emval_free_list=[]; + + var emval_handle_array=[{},{value:undefined},{value:null},{value:true},{value:false}];function __emval_decref(handle) { + if (handle > 4 && 0 === --emval_handle_array[handle].refcount) { + emval_handle_array[handle] = undefined; + emval_free_list.push(handle); + } + } + + + + function count_emval_handles() { + var count = 0; + for (var i = 5; i < emval_handle_array.length; ++i) { + if (emval_handle_array[i] !== undefined) { + ++count; + } + } + return count; + } + + function get_first_emval() { + for (var i = 5; i < emval_handle_array.length; ++i) { + if (emval_handle_array[i] !== undefined) { + return emval_handle_array[i]; + } + } + return null; + }function init_emval() { + Module['count_emval_handles'] = count_emval_handles; + Module['get_first_emval'] = get_first_emval; + }function __emval_register(value) { + + switch(value){ + case undefined :{ return 1; } + case null :{ return 2; } + case true :{ return 3; } + case false :{ return 4; } + default:{ + var handle = emval_free_list.length ? + emval_free_list.pop() : + emval_handle_array.length; + + emval_handle_array[handle] = {refcount: 1, value: value}; + return handle; + } + } + }function __embind_register_emval(rawType, name) { + name = readLatin1String(name); + registerType(rawType, { + name: name, + 'fromWireType': function(handle) { + var rv = emval_handle_array[handle].value; + __emval_decref(handle); + return rv; + }, + 'toWireType': function(destructors, value) { + return __emval_register(value); + }, + 'argPackAdvance': 8, + 'readValueFromPointer': simpleReadValueFromPointer, + destructorFunction: null, // This type does not need a destructor + + // TODO: do we need a deleteObject here? write a test where + // emval is passed into JS via an interface + }); + } + + + function enumReadValueFromPointer(name, shift, signed) { + switch (shift) { + case 0: return function(pointer) { + var heap = signed ? HEAP8 : HEAPU8; + return this['fromWireType'](heap[pointer]); + }; + case 1: return function(pointer) { + var heap = signed ? HEAP16 : HEAPU16; + return this['fromWireType'](heap[pointer >> 1]); + }; + case 2: return function(pointer) { + var heap = signed ? HEAP32 : HEAPU32; + return this['fromWireType'](heap[pointer >> 2]); + }; + default: + throw new TypeError("Unknown integer type: " + name); + } + }function __embind_register_enum( + rawType, + name, + size, + isSigned + ) { + var shift = getShiftFromSize(size); + name = readLatin1String(name); + + function ctor() { + } + ctor.values = {}; + + registerType(rawType, { + name: name, + constructor: ctor, + 'fromWireType': function(c) { + return this.constructor.values[c]; + }, + 'toWireType': function(destructors, c) { + return c.value; + }, + 'argPackAdvance': 8, + 'readValueFromPointer': enumReadValueFromPointer(name, shift, isSigned), + destructorFunction: null, + }); + exposePublicSymbol(name, ctor); + } + + + function requireRegisteredType(rawType, humanName) { + var impl = registeredTypes[rawType]; + if (undefined === impl) { + throwBindingError(humanName + " has unknown type " + getTypeName(rawType)); + } + return impl; + }function __embind_register_enum_value( + rawEnumType, + name, + enumValue + ) { + var enumType = requireRegisteredType(rawEnumType, 'enum'); + name = readLatin1String(name); + + var Enum = enumType.constructor; + + var Value = Object.create(enumType.constructor.prototype, { + value: {value: enumValue}, + constructor: {value: createNamedFunction(enumType.name + '_' + name, function() {})}, + }); + Enum.values[enumValue] = Value; + Enum[name] = Value; + } + + + function _embind_repr(v) { + if (v === null) { + return 'null'; + } + var t = typeof v; + if (t === 'object' || t === 'array' || t === 'function') { + return v.toString(); + } else { + return '' + v; + } + } + + function floatReadValueFromPointer(name, shift) { + switch (shift) { + case 2: return function(pointer) { + return this['fromWireType'](HEAPF32[pointer >> 2]); + }; + case 3: return function(pointer) { + return this['fromWireType'](HEAPF64[pointer >> 3]); + }; + default: + throw new TypeError("Unknown float type: " + name); + } + }function __embind_register_float(rawType, name, size) { + var shift = getShiftFromSize(size); + name = readLatin1String(name); + registerType(rawType, { + name: name, + 'fromWireType': function(value) { + return value; + }, + 'toWireType': function(destructors, value) { + // todo: Here we have an opportunity for -O3 level "unsafe" optimizations: we could + // avoid the following if() and assume value is of proper type. + if (typeof value !== "number" && typeof value !== "boolean") { + throw new TypeError('Cannot convert "' + _embind_repr(value) + '" to ' + this.name); + } + return value; + }, + 'argPackAdvance': 8, + 'readValueFromPointer': floatReadValueFromPointer(name, shift), + destructorFunction: null, // This type does not need a destructor + }); + } + + + function integerReadValueFromPointer(name, shift, signed) { + // integers are quite common, so generate very specialized functions + switch (shift) { + case 0: return signed ? + function readS8FromPointer(pointer) { return HEAP8[pointer]; } : + function readU8FromPointer(pointer) { return HEAPU8[pointer]; }; + case 1: return signed ? + function readS16FromPointer(pointer) { return HEAP16[pointer >> 1]; } : + function readU16FromPointer(pointer) { return HEAPU16[pointer >> 1]; }; + case 2: return signed ? + function readS32FromPointer(pointer) { return HEAP32[pointer >> 2]; } : + function readU32FromPointer(pointer) { return HEAPU32[pointer >> 2]; }; + default: + throw new TypeError("Unknown integer type: " + name); + } + }function __embind_register_integer(primitiveType, name, size, minRange, maxRange) { + name = readLatin1String(name); + if (maxRange === -1) { // LLVM doesn't have signed and unsigned 32-bit types, so u32 literals come out as 'i32 -1'. Always treat those as max u32. + maxRange = 4294967295; + } + + var shift = getShiftFromSize(size); + + var fromWireType = function(value) { + return value; + }; + + if (minRange === 0) { + var bitshift = 32 - 8*size; + fromWireType = function(value) { + return (value << bitshift) >>> bitshift; + }; + } + + var isUnsignedType = (name.indexOf('unsigned') != -1); + + registerType(primitiveType, { + name: name, + 'fromWireType': fromWireType, + 'toWireType': function(destructors, value) { + // todo: Here we have an opportunity for -O3 level "unsafe" optimizations: we could + // avoid the following two if()s and assume value is of proper type. + if (typeof value !== "number" && typeof value !== "boolean") { + throw new TypeError('Cannot convert "' + _embind_repr(value) + '" to ' + this.name); + } + if (value < minRange || value > maxRange) { + throw new TypeError('Passing a number "' + _embind_repr(value) + '" from JS side to C/C++ side to an argument of type "' + name + '", which is outside the valid range [' + minRange + ', ' + maxRange + ']!'); + } + return isUnsignedType ? (value >>> 0) : (value | 0); + }, + 'argPackAdvance': 8, + 'readValueFromPointer': integerReadValueFromPointer(name, shift, minRange !== 0), + destructorFunction: null, // This type does not need a destructor + }); + } + + function __embind_register_memory_view(rawType, dataTypeIndex, name) { + var typeMapping = [ + Int8Array, + Uint8Array, + Int16Array, + Uint16Array, + Int32Array, + Uint32Array, + Float32Array, + Float64Array, + ]; + + var TA = typeMapping[dataTypeIndex]; + + function decodeMemoryView(handle) { + handle = handle >> 2; + var heap = HEAPU32; + var size = heap[handle]; // in elements + var data = heap[handle + 1]; // byte offset into emscripten heap + return new TA(heap['buffer'], data, size); + } + + name = readLatin1String(name); + registerType(rawType, { + name: name, + 'fromWireType': decodeMemoryView, + 'argPackAdvance': 8, + 'readValueFromPointer': decodeMemoryView, + }, { + ignoreDuplicateRegistrations: true, + }); + } + + function __embind_register_std_string(rawType, name) { + name = readLatin1String(name); + var stdStringIsUTF8 + //process only std::string bindings with UTF8 support, in contrast to e.g. std::basic_string<unsigned char> + = (name === "std::string"); + + registerType(rawType, { + name: name, + 'fromWireType': function(value) { + var length = HEAPU32[value >> 2]; + + var str; + if(stdStringIsUTF8) { + //ensure null termination at one-past-end byte if not present yet + var endChar = HEAPU8[value + 4 + length]; + var endCharSwap = 0; + if(endChar != 0) + { + endCharSwap = endChar; + HEAPU8[value + 4 + length] = 0; + } + + var decodeStartPtr = value + 4; + //looping here to support possible embedded '0' bytes + for (var i = 0; i <= length; ++i) { + var currentBytePtr = value + 4 + i; + if(HEAPU8[currentBytePtr] == 0) + { + var stringSegment = UTF8ToString(decodeStartPtr); + if(str === undefined) + str = stringSegment; + else + { + str += String.fromCharCode(0); + str += stringSegment; + } + decodeStartPtr = currentBytePtr + 1; + } + } + + if(endCharSwap != 0) + HEAPU8[value + 4 + length] = endCharSwap; + } else { + var a = new Array(length); + for (var i = 0; i < length; ++i) { + a[i] = String.fromCharCode(HEAPU8[value + 4 + i]); + } + str = a.join(''); + } + + _free(value); + + return str; + }, + 'toWireType': function(destructors, value) { + if (value instanceof ArrayBuffer) { + value = new Uint8Array(value); + } + + var getLength; + var valueIsOfTypeString = (typeof value === 'string'); + + if (!(valueIsOfTypeString || value instanceof Uint8Array || value instanceof Uint8ClampedArray || value instanceof Int8Array)) { + throwBindingError('Cannot pass non-string to std::string'); + } + if (stdStringIsUTF8 && valueIsOfTypeString) { + getLength = function() {return lengthBytesUTF8(value);}; + } else { + getLength = function() {return value.length;}; + } + + // assumes 4-byte alignment + var length = getLength(); + var ptr = _malloc(4 + length + 1); + HEAPU32[ptr >> 2] = length; + + if (stdStringIsUTF8 && valueIsOfTypeString) { + stringToUTF8(value, ptr + 4, length + 1); + } else { + if(valueIsOfTypeString) { + for (var i = 0; i < length; ++i) { + var charCode = value.charCodeAt(i); + if (charCode > 255) { + _free(ptr); + throwBindingError('String has UTF-16 code units that do not fit in 8 bits'); + } + HEAPU8[ptr + 4 + i] = charCode; + } + } else { + for (var i = 0; i < length; ++i) { + HEAPU8[ptr + 4 + i] = value[i]; + } + } + } + + if (destructors !== null) { + destructors.push(_free, ptr); + } + return ptr; + }, + 'argPackAdvance': 8, + 'readValueFromPointer': simpleReadValueFromPointer, + destructorFunction: function(ptr) { _free(ptr); }, + }); + } + + function __embind_register_std_wstring(rawType, charSize, name) { + // nb. do not cache HEAPU16 and HEAPU32, they may be destroyed by emscripten_resize_heap(). + name = readLatin1String(name); + var getHeap, shift; + if (charSize === 2) { + getHeap = function() { return HEAPU16; }; + shift = 1; + } else if (charSize === 4) { + getHeap = function() { return HEAPU32; }; + shift = 2; + } + registerType(rawType, { + name: name, + 'fromWireType': function(value) { + var HEAP = getHeap(); + var length = HEAPU32[value >> 2]; + var a = new Array(length); + var start = (value + 4) >> shift; + for (var i = 0; i < length; ++i) { + a[i] = String.fromCharCode(HEAP[start + i]); + } + _free(value); + return a.join(''); + }, + 'toWireType': function(destructors, value) { + // assumes 4-byte alignment + var HEAP = getHeap(); + var length = value.length; + var ptr = _malloc(4 + length * charSize); + HEAPU32[ptr >> 2] = length; + var start = (ptr + 4) >> shift; + for (var i = 0; i < length; ++i) { + HEAP[start + i] = value.charCodeAt(i); + } + if (destructors !== null) { + destructors.push(_free, ptr); + } + return ptr; + }, + 'argPackAdvance': 8, + 'readValueFromPointer': simpleReadValueFromPointer, + destructorFunction: function(ptr) { _free(ptr); }, + }); + } + + function __embind_register_value_array( + rawType, + name, + constructorSignature, + rawConstructor, + destructorSignature, + rawDestructor + ) { + tupleRegistrations[rawType] = { + name: readLatin1String(name), + rawConstructor: embind__requireFunction(constructorSignature, rawConstructor), + rawDestructor: embind__requireFunction(destructorSignature, rawDestructor), + elements: [], + }; + } + + function __embind_register_value_array_element( + rawTupleType, + getterReturnType, + getterSignature, + getter, + getterContext, + setterArgumentType, + setterSignature, + setter, + setterContext + ) { + tupleRegistrations[rawTupleType].elements.push({ + getterReturnType: getterReturnType, + getter: embind__requireFunction(getterSignature, getter), + getterContext: getterContext, + setterArgumentType: setterArgumentType, + setter: embind__requireFunction(setterSignature, setter), + setterContext: setterContext, + }); + } + + function __embind_register_value_object( + rawType, + name, + constructorSignature, + rawConstructor, + destructorSignature, + rawDestructor + ) { + structRegistrations[rawType] = { + name: readLatin1String(name), + rawConstructor: embind__requireFunction(constructorSignature, rawConstructor), + rawDestructor: embind__requireFunction(destructorSignature, rawDestructor), + fields: [], + }; + } + + function __embind_register_value_object_field( + structType, + fieldName, + getterReturnType, + getterSignature, + getter, + getterContext, + setterArgumentType, + setterSignature, + setter, + setterContext + ) { + structRegistrations[structType].fields.push({ + fieldName: readLatin1String(fieldName), + getterReturnType: getterReturnType, + getter: embind__requireFunction(getterSignature, getter), + getterContext: getterContext, + setterArgumentType: setterArgumentType, + setter: embind__requireFunction(setterSignature, setter), + setterContext: setterContext, + }); + } + + function __embind_register_void(rawType, name) { + name = readLatin1String(name); + registerType(rawType, { + isVoid: true, // void return values can be optimized out sometimes + name: name, + 'argPackAdvance': 0, + 'fromWireType': function() { + return undefined; + }, + 'toWireType': function(destructors, o) { + // TODO: assert if anything else is given? + return undefined; + }, + }); + } + + + function requireHandle(handle) { + if (!handle) { + throwBindingError('Cannot use deleted val. handle = ' + handle); + } + return emval_handle_array[handle].value; + }function __emval_as(handle, returnType, destructorsRef) { + handle = requireHandle(handle); + returnType = requireRegisteredType(returnType, 'emval::as'); + var destructors = []; + var rd = __emval_register(destructors); + HEAP32[destructorsRef >> 2] = rd; + return returnType['toWireType'](destructors, handle); + } + + + function __emval_allocateDestructors(destructorsRef) { + var destructors = []; + HEAP32[destructorsRef >> 2] = __emval_register(destructors); + return destructors; + } + + + var emval_symbols={};function getStringOrSymbol(address) { + var symbol = emval_symbols[address]; + if (symbol === undefined) { + return readLatin1String(address); + } else { + return symbol; + } + } + + var emval_methodCallers=[];function __emval_call_method(caller, handle, methodName, destructorsRef, args) { + caller = emval_methodCallers[caller]; + handle = requireHandle(handle); + methodName = getStringOrSymbol(methodName); + return caller(handle, methodName, __emval_allocateDestructors(destructorsRef), args); + } + + function __emval_call_void_method(caller, handle, methodName, args) { + caller = emval_methodCallers[caller]; + handle = requireHandle(handle); + methodName = getStringOrSymbol(methodName); + caller(handle, methodName, null, args); + } + + + function __emval_equals(first, second) { + first = requireHandle(first); + second = requireHandle(second); + return first == second; + } + + + function emval_get_global() { + if (typeof globalThis === 'object') { + return globalThis; + } + return (function(){ + return Function; + })()('return this')(); + }function __emval_get_global(name) { + if(name===0){ + return __emval_register(emval_get_global()); + } else { + name = getStringOrSymbol(name); + return __emval_register(emval_get_global()[name]); + } + } + + + function __emval_addMethodCaller(caller) { + var id = emval_methodCallers.length; + emval_methodCallers.push(caller); + return id; + } + + function __emval_lookupTypes(argCount, argTypes, argWireTypes) { + var a = new Array(argCount); + for (var i = 0; i < argCount; ++i) { + a[i] = requireRegisteredType( + HEAP32[(argTypes >> 2) + i], + "parameter " + i); + } + return a; + }function __emval_get_method_caller(argCount, argTypes) { + var types = __emval_lookupTypes(argCount, argTypes); + + var retType = types[0]; + var signatureName = retType.name + "_$" + types.slice(1).map(function (t) { return t.name; }).join("_") + "$"; + + var params = ["retType"]; + var args = [retType]; + + var argsList = ""; // 'arg0, arg1, arg2, ... , argN' + for (var i = 0; i < argCount - 1; ++i) { + argsList += (i !== 0 ? ", " : "") + "arg" + i; + params.push("argType" + i); + args.push(types[1 + i]); + } + + var functionName = makeLegalFunctionName("methodCaller_" + signatureName); + var functionBody = + "return function " + functionName + "(handle, name, destructors, args) {\n"; + + var offset = 0; + for (var i = 0; i < argCount - 1; ++i) { + functionBody += + " var arg" + i + " = argType" + i + ".readValueFromPointer(args" + (offset ? ("+"+offset) : "") + ");\n"; + offset += types[i + 1]['argPackAdvance']; + } + functionBody += + " var rv = handle[name](" + argsList + ");\n"; + for (var i = 0; i < argCount - 1; ++i) { + if (types[i + 1]['deleteObject']) { + functionBody += + " argType" + i + ".deleteObject(arg" + i + ");\n"; + } + } + if (!retType.isVoid) { + functionBody += + " return retType.toWireType(destructors, rv);\n"; + } + functionBody += + "};\n"; + + params.push(functionBody); + var invokerFunction = new_(Function, params).apply(null, args); + return __emval_addMethodCaller(invokerFunction); + } + + function __emval_get_module_property(name) { + name = getStringOrSymbol(name); + return __emval_register(Module[name]); + } + + function __emval_get_property(handle, key) { + handle = requireHandle(handle); + key = requireHandle(key); + return __emval_register(handle[key]); + } + + function __emval_incref(handle) { + if (handle > 4) { + emval_handle_array[handle].refcount += 1; + } + } + + function __emval_instanceof(object, constructor) { + object = requireHandle(object); + constructor = requireHandle(constructor); + return object instanceof constructor; + } + + function __emval_is_number(handle) { + handle = requireHandle(handle); + return typeof handle === 'number'; + } + + function __emval_is_string(handle) { + handle = requireHandle(handle); + return typeof handle === 'string'; + } + + + function craftEmvalAllocator(argCount) { + /*This function returns a new function that looks like this: + function emval_allocator_3(constructor, argTypes, args) { + var argType0 = requireRegisteredType(HEAP32[(argTypes >> 2)], "parameter 0"); + var arg0 = argType0.readValueFromPointer(args); + var argType1 = requireRegisteredType(HEAP32[(argTypes >> 2) + 1], "parameter 1"); + var arg1 = argType1.readValueFromPointer(args + 8); + var argType2 = requireRegisteredType(HEAP32[(argTypes >> 2) + 2], "parameter 2"); + var arg2 = argType2.readValueFromPointer(args + 16); + var obj = new constructor(arg0, arg1, arg2); + return __emval_register(obj); + } */ + var argsList = ""; + for(var i = 0; i < argCount; ++i) { + argsList += (i!==0?", ":"")+"arg"+i; // 'arg0, arg1, ..., argn' + } + + var functionBody = + "return function emval_allocator_"+argCount+"(constructor, argTypes, args) {\n"; + + for(var i = 0; i < argCount; ++i) { + functionBody += + "var argType"+i+" = requireRegisteredType(Module['HEAP32'][(argTypes >> 2) + "+i+"], \"parameter "+i+"\");\n" + + "var arg"+i+" = argType"+i+".readValueFromPointer(args);\n" + + "args += argType"+i+"['argPackAdvance'];\n"; + } + functionBody += + "var obj = new constructor("+argsList+");\n" + + "return __emval_register(obj);\n" + + "}\n"; + + /*jshint evil:true*/ + return (new Function("requireRegisteredType", "Module", "__emval_register", functionBody))( + requireRegisteredType, Module, __emval_register); + } + + var emval_newers={};function __emval_new(handle, argCount, argTypes, args) { + handle = requireHandle(handle); + + var newer = emval_newers[argCount]; + if (!newer) { + newer = craftEmvalAllocator(argCount); + emval_newers[argCount] = newer; + } + + return newer(handle, argTypes, args); + } + + function __emval_new_array() { + return __emval_register([]); + } + + function __emval_new_cstring(v) { + return __emval_register(getStringOrSymbol(v)); + } + + function __emval_new_object() { + return __emval_register({}); + } + + function __emval_run_destructors(handle) { + var destructors = emval_handle_array[handle].value; + runDestructors(destructors); + __emval_decref(handle); + } + + function __emval_set_property(handle, key, value) { + handle = requireHandle(handle); + key = requireHandle(key); + value = requireHandle(value); + handle[key] = value; + } + + function __emval_take_value(type, argv) { + type = requireRegisteredType(type, '_emval_take_value'); + var v = type['readValueFromPointer'](argv); + return __emval_register(v); + } + + function _abort() { + Module['abort'](); + } + + function _emscripten_get_heap_size() { + return HEAP8.length; + } + + function _getenv(name) { + // char *getenv(const char *name); + // http://pubs.opengroup.org/onlinepubs/009695399/functions/getenv.html + if (name === 0) return 0; + name = UTF8ToString(name); + if (!ENV.hasOwnProperty(name)) return 0; + + if (_getenv.ret) _free(_getenv.ret); + _getenv.ret = allocateUTF8(ENV[name]); + return _getenv.ret; + } + + + var ___tm_current=315952; + + + var ___tm_timezone=(stringToUTF8("GMT", 316000, 4), 316000);function _gmtime_r(time, tmPtr) { + var date = new Date(HEAP32[((time)>>2)]*1000); + HEAP32[((tmPtr)>>2)]=date.getUTCSeconds(); + HEAP32[(((tmPtr)+(4))>>2)]=date.getUTCMinutes(); + HEAP32[(((tmPtr)+(8))>>2)]=date.getUTCHours(); + HEAP32[(((tmPtr)+(12))>>2)]=date.getUTCDate(); + HEAP32[(((tmPtr)+(16))>>2)]=date.getUTCMonth(); + HEAP32[(((tmPtr)+(20))>>2)]=date.getUTCFullYear()-1900; + HEAP32[(((tmPtr)+(24))>>2)]=date.getUTCDay(); + HEAP32[(((tmPtr)+(36))>>2)]=0; + HEAP32[(((tmPtr)+(32))>>2)]=0; + var start = Date.UTC(date.getUTCFullYear(), 0, 1, 0, 0, 0, 0); + var yday = ((date.getTime() - start) / (1000 * 60 * 60 * 24))|0; + HEAP32[(((tmPtr)+(28))>>2)]=yday; + HEAP32[(((tmPtr)+(40))>>2)]=___tm_timezone; + + return tmPtr; + }function _gmtime(time) { + return _gmtime_r(time, ___tm_current); + } + + + + var _llvm_cos_f64=Math_cos; + + + function _llvm_log2_f32(x) { + return Math.log(x) / Math.LN2; // TODO: Math.log2, when browser support is there + }function _llvm_log2_f64(a0 + /*``*/) { + return _llvm_log2_f32(a0); + } + + var _llvm_sin_f64=Math_sin; + + function _llvm_trap() { + abort('trap!'); + } + + + function _emscripten_memcpy_big(dest, src, num) { + HEAPU8.set(HEAPU8.subarray(src, src+num), dest); + } + + + + + + + + + function _usleep(useconds) { + // int usleep(useconds_t useconds); + // http://pubs.opengroup.org/onlinepubs/000095399/functions/usleep.html + // We're single-threaded, so use a busy loop. Super-ugly. + var msec = useconds / 1000; + if ((ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER) && self['performance'] && self['performance']['now']) { + var start = self['performance']['now'](); + while (self['performance']['now']() - start < msec) { + // Do nothing. + } + } else { + var start = Date.now(); + while (Date.now() - start < msec) { + // Do nothing. + } + } + return 0; + }function _nanosleep(rqtp, rmtp) { + // int nanosleep(const struct timespec *rqtp, struct timespec *rmtp); + if (rqtp === 0) { + ___setErrNo(22); + return -1; + } + var seconds = HEAP32[((rqtp)>>2)]; + var nanoseconds = HEAP32[(((rqtp)+(4))>>2)]; + if (nanoseconds < 0 || nanoseconds > 999999999 || seconds < 0) { + ___setErrNo(22); + return -1; + } + if (rmtp !== 0) { + HEAP32[((rmtp)>>2)]=0; + HEAP32[(((rmtp)+(4))>>2)]=0; + } + return _usleep((seconds * 1e6) + (nanoseconds / 1000)); + } + + + + function abortOnCannotGrowMemory(requestedSize) { + abort('Cannot enlarge memory arrays to size ' + requestedSize + ' bytes (OOM). Either (1) compile with -s TOTAL_MEMORY=X with X higher than the current value ' + HEAP8.length + ', (2) compile with -s ALLOW_MEMORY_GROWTH=1 which allows increasing the size at runtime, or (3) if you want malloc to return NULL (0) instead of this abort, compile with -s ABORTING_MALLOC=0 '); + } + + function emscripten_realloc_buffer(size) { + try { + // round size grow request up to wasm page size (fixed 64KB per spec) + wasmMemory.grow((size - buffer.byteLength + 65535) >> 16); // .grow() takes a delta compared to the previous size + updateGlobalBufferAndViews(wasmMemory.buffer); + return 1 /*success*/; + } catch(e) { + console.error('emscripten_realloc_buffer: Attempted to grow heap from ' + buffer.byteLength + ' bytes to ' + size + ' bytes, but got error: ' + e); + } + }function _emscripten_resize_heap(requestedSize) { + var oldSize = _emscripten_get_heap_size(); + // With pthreads, races can happen (another thread might increase the size in between), so return a failure, and let the caller retry. + assert(requestedSize > oldSize); + + + var PAGE_MULTIPLE = 65536; + var LIMIT = 2147483648 - PAGE_MULTIPLE; // We can do one page short of 2GB as theoretical maximum. + + if (requestedSize > LIMIT) { + err('Cannot enlarge memory, asked to go up to ' + requestedSize + ' bytes, but the limit is ' + LIMIT + ' bytes!'); + return false; + } + + var MIN_TOTAL_MEMORY = 16777216; + var newSize = Math.max(oldSize, MIN_TOTAL_MEMORY); // So the loop below will not be infinite, and minimum asm.js memory size is 16MB. + + // TODO: see realloc_buffer - for PTHREADS we may want to decrease these jumps + while (newSize < requestedSize) { // Keep incrementing the heap size as long as it's less than what is requested. + if (newSize <= 536870912) { + newSize = alignUp(2 * newSize, PAGE_MULTIPLE); // Simple heuristic: double until 1GB... + } else { + // ..., but after that, add smaller increments towards 2GB, which we cannot reach + newSize = Math.min(alignUp((3 * newSize + 2147483648) / 4, PAGE_MULTIPLE), LIMIT); + } + + if (newSize === oldSize) { + warnOnce('Cannot ask for more memory since we reached the practical limit in browsers (which is just below 2GB), so the request would have failed. Requesting only ' + HEAP8.length); + } + } + + + + var replacement = emscripten_realloc_buffer(newSize); + if (!replacement) { + err('Failed to grow the heap from ' + oldSize + ' bytes to ' + newSize + ' bytes, not enough memory!'); + return false; + } + + + + return true; + } + + function _time(ptr) { + var ret = (Date.now()/1000)|0; + if (ptr) { + HEAP32[((ptr)>>2)]=ret; + } + return ret; + } + + function _uuid_generate(out) { + // void uuid_generate(uuid_t out); + var uuid = null; + + if (ENVIRONMENT_IS_NODE) { + // If Node.js try to use crypto.randomBytes + try { + var rb = require('crypto')['randomBytes']; + uuid = rb(16); + } catch(e) {} + } else if (ENVIRONMENT_IS_WEB && + typeof(window.crypto) !== 'undefined' && + typeof(window.crypto.getRandomValues) !== 'undefined') { + // If crypto.getRandomValues is available try to use it. + uuid = new Uint8Array(16); + window.crypto.getRandomValues(uuid); + } + + // Fall back to Math.random if a higher quality random number generator is not available. + if (!uuid) { + uuid = new Array(16); + var d = new Date().getTime(); + for (var i = 0; i < 16; i++) { + var r = ((d + Math.random() * 256) % 256)|0; + d = (d / 256)|0; + uuid[i] = r; + } + } + + uuid[6] = (uuid[6] & 0x0F) | 0x40; + uuid[8] = (uuid[8] & 0x7F) | 0x80; + writeArrayToMemory(uuid, out); + } +FS.staticInit();; +if (ENVIRONMENT_HAS_NODE) { var fs = require("fs"); var NODEJS_PATH = require("path"); NODEFS.staticInit(); }; +InternalError = Module['InternalError'] = extendError(Error, 'InternalError');; +embind_init_charCodes(); +BindingError = Module['BindingError'] = extendError(Error, 'BindingError');; +init_ClassHandle(); +init_RegisteredPointer(); +init_embind();; +UnboundTypeError = Module['UnboundTypeError'] = extendError(Error, 'UnboundTypeError');; +init_emval();; +var ASSERTIONS = true; + +// Copyright 2017 The Emscripten Authors. All rights reserved. +// Emscripten is available under two separate licenses, the MIT license and the +// University of Illinois/NCSA Open Source License. Both these licenses can be +// found in the LICENSE file. + +/** @type {function(string, boolean=, number=)} */ +function intArrayFromString(stringy, dontAddNull, length) { + var len = length > 0 ? length : lengthBytesUTF8(stringy)+1; + var u8array = new Array(len); + var numBytesWritten = stringToUTF8Array(stringy, u8array, 0, u8array.length); + if (dontAddNull) u8array.length = numBytesWritten; + return u8array; +} + +function intArrayToString(array) { + var ret = []; + for (var i = 0; i < array.length; i++) { + var chr = array[i]; + if (chr > 0xFF) { + if (ASSERTIONS) { + assert(false, 'Character code ' + chr + ' (' + String.fromCharCode(chr) + ') at offset ' + i + ' not in 0x00-0xFF.'); + } + chr &= 0xFF; + } + ret.push(String.fromCharCode(chr)); + } + return ret.join(''); +} + + +// ASM_LIBRARY EXTERN PRIMITIVES: Int8Array,Int32Array + +function nullFunc_di(x) { abortFnPtrError(x, 'di'); } +function nullFunc_did(x) { abortFnPtrError(x, 'did'); } +function nullFunc_dii(x) { abortFnPtrError(x, 'dii'); } +function nullFunc_diid(x) { abortFnPtrError(x, 'diid'); } +function nullFunc_diii(x) { abortFnPtrError(x, 'diii'); } +function nullFunc_diiid(x) { abortFnPtrError(x, 'diiid'); } +function nullFunc_fii(x) { abortFnPtrError(x, 'fii'); } +function nullFunc_i(x) { abortFnPtrError(x, 'i'); } +function nullFunc_ii(x) { abortFnPtrError(x, 'ii'); } +function nullFunc_iid(x) { abortFnPtrError(x, 'iid'); } +function nullFunc_iidd(x) { abortFnPtrError(x, 'iidd'); } +function nullFunc_iiddd(x) { abortFnPtrError(x, 'iiddd'); } +function nullFunc_iidddddd(x) { abortFnPtrError(x, 'iidddddd'); } +function nullFunc_iiddi(x) { abortFnPtrError(x, 'iiddi'); } +function nullFunc_iiddii(x) { abortFnPtrError(x, 'iiddii'); } +function nullFunc_iiddiiiii(x) { abortFnPtrError(x, 'iiddiiiii'); } +function nullFunc_iidi(x) { abortFnPtrError(x, 'iidi'); } +function nullFunc_iidid(x) { abortFnPtrError(x, 'iidid'); } +function nullFunc_iididii(x) { abortFnPtrError(x, 'iididii'); } +function nullFunc_iidii(x) { abortFnPtrError(x, 'iidii'); } +function nullFunc_iidiii(x) { abortFnPtrError(x, 'iidiii'); } +function nullFunc_iidiiii(x) { abortFnPtrError(x, 'iidiiii'); } +function nullFunc_iidiiiii(x) { abortFnPtrError(x, 'iidiiiii'); } +function nullFunc_iifff(x) { abortFnPtrError(x, 'iifff'); } +function nullFunc_iii(x) { abortFnPtrError(x, 'iii'); } +function nullFunc_iiid(x) { abortFnPtrError(x, 'iiid'); } +function nullFunc_iiidd(x) { abortFnPtrError(x, 'iiidd'); } +function nullFunc_iiiddd(x) { abortFnPtrError(x, 'iiiddd'); } +function nullFunc_iiidddddd(x) { abortFnPtrError(x, 'iiidddddd'); } +function nullFunc_iiiddi(x) { abortFnPtrError(x, 'iiiddi'); } +function nullFunc_iiiddiddddd(x) { abortFnPtrError(x, 'iiiddiddddd'); } +function nullFunc_iiiddiiidd(x) { abortFnPtrError(x, 'iiiddiiidd'); } +function nullFunc_iiidi(x) { abortFnPtrError(x, 'iiidi'); } +function nullFunc_iiidid(x) { abortFnPtrError(x, 'iiidid'); } +function nullFunc_iiididdddd(x) { abortFnPtrError(x, 'iiididdddd'); } +function nullFunc_iiidii(x) { abortFnPtrError(x, 'iiidii'); } +function nullFunc_iiidiii(x) { abortFnPtrError(x, 'iiidiii'); } +function nullFunc_iiifff(x) { abortFnPtrError(x, 'iiifff'); } +function nullFunc_iiii(x) { abortFnPtrError(x, 'iiii'); } +function nullFunc_iiiid(x) { abortFnPtrError(x, 'iiiid'); } +function nullFunc_iiiidd(x) { abortFnPtrError(x, 'iiiidd'); } +function nullFunc_iiiiddiiidd(x) { abortFnPtrError(x, 'iiiiddiiidd'); } +function nullFunc_iiiidi(x) { abortFnPtrError(x, 'iiiidi'); } +function nullFunc_iiiidiii(x) { abortFnPtrError(x, 'iiiidiii'); } +function nullFunc_iiiii(x) { abortFnPtrError(x, 'iiiii'); } +function nullFunc_iiiiii(x) { abortFnPtrError(x, 'iiiiii'); } +function nullFunc_iiiiiii(x) { abortFnPtrError(x, 'iiiiiii'); } +function nullFunc_iiiiiiii(x) { abortFnPtrError(x, 'iiiiiiii'); } +function nullFunc_ji(x) { abortFnPtrError(x, 'ji'); } +function nullFunc_jiji(x) { abortFnPtrError(x, 'jiji'); } +function nullFunc_v(x) { abortFnPtrError(x, 'v'); } +function nullFunc_vi(x) { abortFnPtrError(x, 'vi'); } +function nullFunc_vid(x) { abortFnPtrError(x, 'vid'); } +function nullFunc_viddd(x) { abortFnPtrError(x, 'viddd'); } +function nullFunc_vidii(x) { abortFnPtrError(x, 'vidii'); } +function nullFunc_vii(x) { abortFnPtrError(x, 'vii'); } +function nullFunc_viid(x) { abortFnPtrError(x, 'viid'); } +function nullFunc_viidd(x) { abortFnPtrError(x, 'viidd'); } +function nullFunc_viiddd(x) { abortFnPtrError(x, 'viiddd'); } +function nullFunc_viif(x) { abortFnPtrError(x, 'viif'); } +function nullFunc_viii(x) { abortFnPtrError(x, 'viii'); } +function nullFunc_viiid(x) { abortFnPtrError(x, 'viiid'); } +function nullFunc_viiidi(x) { abortFnPtrError(x, 'viiidi'); } +function nullFunc_viiii(x) { abortFnPtrError(x, 'viiii'); } +function nullFunc_viiiii(x) { abortFnPtrError(x, 'viiiii'); } +function nullFunc_viiiiii(x) { abortFnPtrError(x, 'viiiiii'); } + +var asmGlobalArg = {}; + +var asmLibraryArg = { + "abort": abort, + "setTempRet0": setTempRet0, + "getTempRet0": getTempRet0, + "abortStackOverflow": abortStackOverflow, + "nullFunc_di": nullFunc_di, + "nullFunc_did": nullFunc_did, + "nullFunc_dii": nullFunc_dii, + "nullFunc_diid": nullFunc_diid, + "nullFunc_diii": nullFunc_diii, + "nullFunc_diiid": nullFunc_diiid, + "nullFunc_fii": nullFunc_fii, + "nullFunc_i": nullFunc_i, + "nullFunc_ii": nullFunc_ii, + "nullFunc_iid": nullFunc_iid, + "nullFunc_iidd": nullFunc_iidd, + "nullFunc_iiddd": nullFunc_iiddd, + "nullFunc_iidddddd": nullFunc_iidddddd, + "nullFunc_iiddi": nullFunc_iiddi, + "nullFunc_iiddii": nullFunc_iiddii, + "nullFunc_iiddiiiii": nullFunc_iiddiiiii, + "nullFunc_iidi": nullFunc_iidi, + "nullFunc_iidid": nullFunc_iidid, + "nullFunc_iididii": nullFunc_iididii, + "nullFunc_iidii": nullFunc_iidii, + "nullFunc_iidiii": nullFunc_iidiii, + "nullFunc_iidiiii": nullFunc_iidiiii, + "nullFunc_iidiiiii": nullFunc_iidiiiii, + "nullFunc_iifff": nullFunc_iifff, + "nullFunc_iii": nullFunc_iii, + "nullFunc_iiid": nullFunc_iiid, + "nullFunc_iiidd": nullFunc_iiidd, + "nullFunc_iiiddd": nullFunc_iiiddd, + "nullFunc_iiidddddd": nullFunc_iiidddddd, + "nullFunc_iiiddi": nullFunc_iiiddi, + "nullFunc_iiiddiddddd": nullFunc_iiiddiddddd, + "nullFunc_iiiddiiidd": nullFunc_iiiddiiidd, + "nullFunc_iiidi": nullFunc_iiidi, + "nullFunc_iiidid": nullFunc_iiidid, + "nullFunc_iiididdddd": nullFunc_iiididdddd, + "nullFunc_iiidii": nullFunc_iiidii, + "nullFunc_iiidiii": nullFunc_iiidiii, + "nullFunc_iiifff": nullFunc_iiifff, + "nullFunc_iiii": nullFunc_iiii, + "nullFunc_iiiid": nullFunc_iiiid, + "nullFunc_iiiidd": nullFunc_iiiidd, + "nullFunc_iiiiddiiidd": nullFunc_iiiiddiiidd, + "nullFunc_iiiidi": nullFunc_iiiidi, + "nullFunc_iiiidiii": nullFunc_iiiidiii, + "nullFunc_iiiii": nullFunc_iiiii, + "nullFunc_iiiiii": nullFunc_iiiiii, + "nullFunc_iiiiiii": nullFunc_iiiiiii, + "nullFunc_iiiiiiii": nullFunc_iiiiiiii, + "nullFunc_ji": nullFunc_ji, + "nullFunc_jiji": nullFunc_jiji, + "nullFunc_v": nullFunc_v, + "nullFunc_vi": nullFunc_vi, + "nullFunc_vid": nullFunc_vid, + "nullFunc_viddd": nullFunc_viddd, + "nullFunc_vidii": nullFunc_vidii, + "nullFunc_vii": nullFunc_vii, + "nullFunc_viid": nullFunc_viid, + "nullFunc_viidd": nullFunc_viidd, + "nullFunc_viiddd": nullFunc_viiddd, + "nullFunc_viif": nullFunc_viif, + "nullFunc_viii": nullFunc_viii, + "nullFunc_viiid": nullFunc_viiid, + "nullFunc_viiidi": nullFunc_viiidi, + "nullFunc_viiii": nullFunc_viiii, + "nullFunc_viiiii": nullFunc_viiiii, + "nullFunc_viiiiii": nullFunc_viiiiii, + "ClassHandle": ClassHandle, + "ClassHandle_clone": ClassHandle_clone, + "ClassHandle_delete": ClassHandle_delete, + "ClassHandle_deleteLater": ClassHandle_deleteLater, + "ClassHandle_isAliasOf": ClassHandle_isAliasOf, + "ClassHandle_isDeleted": ClassHandle_isDeleted, + "RegisteredClass": RegisteredClass, + "RegisteredPointer": RegisteredPointer, + "RegisteredPointer_deleteObject": RegisteredPointer_deleteObject, + "RegisteredPointer_destructor": RegisteredPointer_destructor, + "RegisteredPointer_fromWireType": RegisteredPointer_fromWireType, + "RegisteredPointer_getPointee": RegisteredPointer_getPointee, + "___atomic_fetch_add_8": ___atomic_fetch_add_8, + "___buildEnvironment": ___buildEnvironment, + "___cxa_allocate_exception": ___cxa_allocate_exception, + "___cxa_begin_catch": ___cxa_begin_catch, + "___cxa_pure_virtual": ___cxa_pure_virtual, + "___cxa_throw": ___cxa_throw, + "___cxa_uncaught_exceptions": ___cxa_uncaught_exceptions, + "___exception_addRef": ___exception_addRef, + "___exception_deAdjust": ___exception_deAdjust, + "___gxx_personality_v0": ___gxx_personality_v0, + "___lock": ___lock, + "___setErrNo": ___setErrNo, + "___syscall140": ___syscall140, + "___syscall145": ___syscall145, + "___syscall146": ___syscall146, + "___syscall195": ___syscall195, + "___syscall197": ___syscall197, + "___syscall221": ___syscall221, + "___syscall5": ___syscall5, + "___syscall54": ___syscall54, + "___syscall6": ___syscall6, + "___unlock": ___unlock, + "__embind_finalize_value_array": __embind_finalize_value_array, + "__embind_finalize_value_object": __embind_finalize_value_object, + "__embind_register_bool": __embind_register_bool, + "__embind_register_class": __embind_register_class, + "__embind_register_class_class_function": __embind_register_class_class_function, + "__embind_register_class_constructor": __embind_register_class_constructor, + "__embind_register_class_function": __embind_register_class_function, + "__embind_register_class_property": __embind_register_class_property, + "__embind_register_emval": __embind_register_emval, + "__embind_register_enum": __embind_register_enum, + "__embind_register_enum_value": __embind_register_enum_value, + "__embind_register_float": __embind_register_float, + "__embind_register_integer": __embind_register_integer, + "__embind_register_memory_view": __embind_register_memory_view, + "__embind_register_std_string": __embind_register_std_string, + "__embind_register_std_wstring": __embind_register_std_wstring, + "__embind_register_value_array": __embind_register_value_array, + "__embind_register_value_array_element": __embind_register_value_array_element, + "__embind_register_value_object": __embind_register_value_object, + "__embind_register_value_object_field": __embind_register_value_object_field, + "__embind_register_void": __embind_register_void, + "__emval_addMethodCaller": __emval_addMethodCaller, + "__emval_allocateDestructors": __emval_allocateDestructors, + "__emval_as": __emval_as, + "__emval_call_method": __emval_call_method, + "__emval_call_void_method": __emval_call_void_method, + "__emval_decref": __emval_decref, + "__emval_equals": __emval_equals, + "__emval_get_global": __emval_get_global, + "__emval_get_method_caller": __emval_get_method_caller, + "__emval_get_module_property": __emval_get_module_property, + "__emval_get_property": __emval_get_property, + "__emval_incref": __emval_incref, + "__emval_instanceof": __emval_instanceof, + "__emval_is_number": __emval_is_number, + "__emval_is_string": __emval_is_string, + "__emval_lookupTypes": __emval_lookupTypes, + "__emval_new": __emval_new, + "__emval_new_array": __emval_new_array, + "__emval_new_cstring": __emval_new_cstring, + "__emval_new_object": __emval_new_object, + "__emval_register": __emval_register, + "__emval_run_destructors": __emval_run_destructors, + "__emval_set_property": __emval_set_property, + "__emval_take_value": __emval_take_value, + "_abort": _abort, + "_embind_repr": _embind_repr, + "_emscripten_get_heap_size": _emscripten_get_heap_size, + "_emscripten_memcpy_big": _emscripten_memcpy_big, + "_emscripten_resize_heap": _emscripten_resize_heap, + "_getenv": _getenv, + "_gmtime": _gmtime, + "_gmtime_r": _gmtime_r, + "_llvm_cos_f64": _llvm_cos_f64, + "_llvm_log2_f32": _llvm_log2_f32, + "_llvm_log2_f64": _llvm_log2_f64, + "_llvm_sin_f64": _llvm_sin_f64, + "_llvm_trap": _llvm_trap, + "_nanosleep": _nanosleep, + "_time": _time, + "_usleep": _usleep, + "_uuid_generate": _uuid_generate, + "abortOnCannotGrowMemory": abortOnCannotGrowMemory, + "attachFinalizer": attachFinalizer, + "constNoSmartPtrRawPointerToWireType": constNoSmartPtrRawPointerToWireType, + "count_emval_handles": count_emval_handles, + "craftEmvalAllocator": craftEmvalAllocator, + "craftInvokerFunction": craftInvokerFunction, + "createNamedFunction": createNamedFunction, + "demangle": demangle, + "demangleAll": demangleAll, + "detachFinalizer": detachFinalizer, + "downcastPointer": downcastPointer, + "embind__requireFunction": embind__requireFunction, + "embind_init_charCodes": embind_init_charCodes, + "emscripten_realloc_buffer": emscripten_realloc_buffer, + "emval_get_global": emval_get_global, + "ensureOverloadTable": ensureOverloadTable, + "enumReadValueFromPointer": enumReadValueFromPointer, + "exposePublicSymbol": exposePublicSymbol, + "extendError": extendError, + "floatReadValueFromPointer": floatReadValueFromPointer, + "flushPendingDeletes": flushPendingDeletes, + "genericPointerToWireType": genericPointerToWireType, + "getBasestPointer": getBasestPointer, + "getInheritedInstance": getInheritedInstance, + "getInheritedInstanceCount": getInheritedInstanceCount, + "getLiveInheritedInstances": getLiveInheritedInstances, + "getShiftFromSize": getShiftFromSize, + "getStringOrSymbol": getStringOrSymbol, + "getTypeName": getTypeName, + "get_first_emval": get_first_emval, + "heap32VectorToArray": heap32VectorToArray, + "init_ClassHandle": init_ClassHandle, + "init_RegisteredPointer": init_RegisteredPointer, + "init_embind": init_embind, + "init_emval": init_emval, + "integerReadValueFromPointer": integerReadValueFromPointer, + "jsStackTrace": jsStackTrace, + "makeClassHandle": makeClassHandle, + "makeLegalFunctionName": makeLegalFunctionName, + "new_": new_, + "nonConstNoSmartPtrRawPointerToWireType": nonConstNoSmartPtrRawPointerToWireType, + "readLatin1String": readLatin1String, + "registerType": registerType, + "releaseClassHandle": releaseClassHandle, + "replacePublicSymbol": replacePublicSymbol, + "requireHandle": requireHandle, + "requireRegisteredType": requireRegisteredType, + "runDestructor": runDestructor, + "runDestructors": runDestructors, + "setDelayFunction": setDelayFunction, + "shallowCopyInternalPointer": shallowCopyInternalPointer, + "simpleReadValueFromPointer": simpleReadValueFromPointer, + "stackTrace": stackTrace, + "throwBindingError": throwBindingError, + "throwInstanceAlreadyDeleted": throwInstanceAlreadyDeleted, + "throwInternalError": throwInternalError, + "throwUnboundTypeError": throwUnboundTypeError, + "upcastPointer": upcastPointer, + "validateThis": validateThis, + "whenDependentTypesAreResolved": whenDependentTypesAreResolved, + "tempDoublePtr": tempDoublePtr, + "DYNAMICTOP_PTR": DYNAMICTOP_PTR +}; +// EMSCRIPTEN_START_ASM +var asm =Module["asm"]// EMSCRIPTEN_END_ASM +(asmGlobalArg, asmLibraryArg, buffer); + +Module["asm"] = asm; +var __ZSt18uncaught_exceptionv = Module["__ZSt18uncaught_exceptionv"] = function() { + assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); + assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); + return Module["asm"]["__ZSt18uncaught_exceptionv"].apply(null, arguments) +}; + +var ___cxa_can_catch = Module["___cxa_can_catch"] = function() { + assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); + assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); + return Module["asm"]["___cxa_can_catch"].apply(null, arguments) +}; + +var ___cxa_is_pointer_type = Module["___cxa_is_pointer_type"] = function() { + assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); + assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); + return Module["asm"]["___cxa_is_pointer_type"].apply(null, arguments) +}; + +var ___embind_register_native_and_builtin_types = Module["___embind_register_native_and_builtin_types"] = function() { + assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); + assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); + return Module["asm"]["___embind_register_native_and_builtin_types"].apply(null, arguments) +}; + +var ___errno_location = Module["___errno_location"] = function() { + assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); + assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); + return Module["asm"]["___errno_location"].apply(null, arguments) +}; + +var ___getTypeName = Module["___getTypeName"] = function() { + assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); + assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); + return Module["asm"]["___getTypeName"].apply(null, arguments) +}; + +var __get_environ = Module["__get_environ"] = function() { + assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); + assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); + return Module["asm"]["__get_environ"].apply(null, arguments) +}; + +var _emscripten_replace_memory = Module["_emscripten_replace_memory"] = function() { + assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); + assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); + return Module["asm"]["_emscripten_replace_memory"].apply(null, arguments) +}; + +var _fflush = Module["_fflush"] = function() { + assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); + assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); + return Module["asm"]["_fflush"].apply(null, arguments) +}; + +var _free = Module["_free"] = function() { + assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); + assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); + return Module["asm"]["_free"].apply(null, arguments) +}; + +var _i64Add = Module["_i64Add"] = function() { + assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); + assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); + return Module["asm"]["_i64Add"].apply(null, arguments) +}; + +var _llvm_bswap_i32 = Module["_llvm_bswap_i32"] = function() { + assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); + assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); + return Module["asm"]["_llvm_bswap_i32"].apply(null, arguments) +}; + +var _malloc = Module["_malloc"] = function() { + assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); + assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); + return Module["asm"]["_malloc"].apply(null, arguments) +}; + +var _memcpy = Module["_memcpy"] = function() { + assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); + assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); + return Module["asm"]["_memcpy"].apply(null, arguments) +}; + +var _memmove = Module["_memmove"] = function() { + assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); + assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); + return Module["asm"]["_memmove"].apply(null, arguments) +}; + +var _memset = Module["_memset"] = function() { + assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); + assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); + return Module["asm"]["_memset"].apply(null, arguments) +}; + +var _sbrk = Module["_sbrk"] = function() { + assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); + assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); + return Module["asm"]["_sbrk"].apply(null, arguments) +}; + +var establishStackSpace = Module["establishStackSpace"] = function() { + assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); + assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); + return Module["asm"]["establishStackSpace"].apply(null, arguments) +}; + +var globalCtors = Module["globalCtors"] = function() { + assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); + assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); + return Module["asm"]["globalCtors"].apply(null, arguments) +}; + +var stackAlloc = Module["stackAlloc"] = function() { + assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); + assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); + return Module["asm"]["stackAlloc"].apply(null, arguments) +}; + +var stackRestore = Module["stackRestore"] = function() { + assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); + assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); + return Module["asm"]["stackRestore"].apply(null, arguments) +}; + +var stackSave = Module["stackSave"] = function() { + assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); + assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); + return Module["asm"]["stackSave"].apply(null, arguments) +}; + +var dynCall_di = Module["dynCall_di"] = function() { + assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); + assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); + return Module["asm"]["dynCall_di"].apply(null, arguments) +}; + +var dynCall_did = Module["dynCall_did"] = function() { + assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); + assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); + return Module["asm"]["dynCall_did"].apply(null, arguments) +}; + +var dynCall_dii = Module["dynCall_dii"] = function() { + assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); + assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); + return Module["asm"]["dynCall_dii"].apply(null, arguments) +}; + +var dynCall_diid = Module["dynCall_diid"] = function() { + assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); + assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); + return Module["asm"]["dynCall_diid"].apply(null, arguments) +}; + +var dynCall_diii = Module["dynCall_diii"] = function() { + assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); + assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); + return Module["asm"]["dynCall_diii"].apply(null, arguments) +}; + +var dynCall_diiid = Module["dynCall_diiid"] = function() { + assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); + assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); + return Module["asm"]["dynCall_diiid"].apply(null, arguments) +}; + +var dynCall_fii = Module["dynCall_fii"] = function() { + assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); + assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); + return Module["asm"]["dynCall_fii"].apply(null, arguments) +}; + +var dynCall_i = Module["dynCall_i"] = function() { + assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); + assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); + return Module["asm"]["dynCall_i"].apply(null, arguments) +}; + +var dynCall_ii = Module["dynCall_ii"] = function() { + assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); + assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); + return Module["asm"]["dynCall_ii"].apply(null, arguments) +}; + +var dynCall_iid = Module["dynCall_iid"] = function() { + assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); + assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); + return Module["asm"]["dynCall_iid"].apply(null, arguments) +}; + +var dynCall_iidd = Module["dynCall_iidd"] = function() { + assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); + assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); + return Module["asm"]["dynCall_iidd"].apply(null, arguments) +}; + +var dynCall_iiddd = Module["dynCall_iiddd"] = function() { + assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); + assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); + return Module["asm"]["dynCall_iiddd"].apply(null, arguments) +}; + +var dynCall_iidddddd = Module["dynCall_iidddddd"] = function() { + assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); + assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); + return Module["asm"]["dynCall_iidddddd"].apply(null, arguments) +}; + +var dynCall_iiddi = Module["dynCall_iiddi"] = function() { + assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); + assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); + return Module["asm"]["dynCall_iiddi"].apply(null, arguments) +}; + +var dynCall_iiddii = Module["dynCall_iiddii"] = function() { + assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); + assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); + return Module["asm"]["dynCall_iiddii"].apply(null, arguments) +}; + +var dynCall_iiddiiiii = Module["dynCall_iiddiiiii"] = function() { + assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); + assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); + return Module["asm"]["dynCall_iiddiiiii"].apply(null, arguments) +}; + +var dynCall_iidi = Module["dynCall_iidi"] = function() { + assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); + assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); + return Module["asm"]["dynCall_iidi"].apply(null, arguments) +}; + +var dynCall_iidid = Module["dynCall_iidid"] = function() { + assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); + assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); + return Module["asm"]["dynCall_iidid"].apply(null, arguments) +}; + +var dynCall_iididii = Module["dynCall_iididii"] = function() { + assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); + assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); + return Module["asm"]["dynCall_iididii"].apply(null, arguments) +}; + +var dynCall_iidii = Module["dynCall_iidii"] = function() { + assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); + assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); + return Module["asm"]["dynCall_iidii"].apply(null, arguments) +}; + +var dynCall_iidiii = Module["dynCall_iidiii"] = function() { + assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); + assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); + return Module["asm"]["dynCall_iidiii"].apply(null, arguments) +}; + +var dynCall_iidiiii = Module["dynCall_iidiiii"] = function() { + assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); + assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); + return Module["asm"]["dynCall_iidiiii"].apply(null, arguments) +}; + +var dynCall_iidiiiii = Module["dynCall_iidiiiii"] = function() { + assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); + assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); + return Module["asm"]["dynCall_iidiiiii"].apply(null, arguments) +}; + +var dynCall_iifff = Module["dynCall_iifff"] = function() { + assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); + assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); + return Module["asm"]["dynCall_iifff"].apply(null, arguments) +}; + +var dynCall_iii = Module["dynCall_iii"] = function() { + assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); + assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); + return Module["asm"]["dynCall_iii"].apply(null, arguments) +}; + +var dynCall_iiid = Module["dynCall_iiid"] = function() { + assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); + assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); + return Module["asm"]["dynCall_iiid"].apply(null, arguments) +}; + +var dynCall_iiidd = Module["dynCall_iiidd"] = function() { + assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); + assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); + return Module["asm"]["dynCall_iiidd"].apply(null, arguments) +}; + +var dynCall_iiiddd = Module["dynCall_iiiddd"] = function() { + assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); + assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); + return Module["asm"]["dynCall_iiiddd"].apply(null, arguments) +}; + +var dynCall_iiidddddd = Module["dynCall_iiidddddd"] = function() { + assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); + assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); + return Module["asm"]["dynCall_iiidddddd"].apply(null, arguments) +}; + +var dynCall_iiiddi = Module["dynCall_iiiddi"] = function() { + assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); + assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); + return Module["asm"]["dynCall_iiiddi"].apply(null, arguments) +}; + +var dynCall_iiiddiddddd = Module["dynCall_iiiddiddddd"] = function() { + assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); + assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); + return Module["asm"]["dynCall_iiiddiddddd"].apply(null, arguments) +}; + +var dynCall_iiiddiiidd = Module["dynCall_iiiddiiidd"] = function() { + assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); + assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); + return Module["asm"]["dynCall_iiiddiiidd"].apply(null, arguments) +}; + +var dynCall_iiidi = Module["dynCall_iiidi"] = function() { + assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); + assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); + return Module["asm"]["dynCall_iiidi"].apply(null, arguments) +}; + +var dynCall_iiidid = Module["dynCall_iiidid"] = function() { + assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); + assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); + return Module["asm"]["dynCall_iiidid"].apply(null, arguments) +}; + +var dynCall_iiididdddd = Module["dynCall_iiididdddd"] = function() { + assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); + assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); + return Module["asm"]["dynCall_iiididdddd"].apply(null, arguments) +}; + +var dynCall_iiidii = Module["dynCall_iiidii"] = function() { + assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); + assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); + return Module["asm"]["dynCall_iiidii"].apply(null, arguments) +}; + +var dynCall_iiidiii = Module["dynCall_iiidiii"] = function() { + assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); + assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); + return Module["asm"]["dynCall_iiidiii"].apply(null, arguments) +}; + +var dynCall_iiifff = Module["dynCall_iiifff"] = function() { + assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); + assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); + return Module["asm"]["dynCall_iiifff"].apply(null, arguments) +}; + +var dynCall_iiii = Module["dynCall_iiii"] = function() { + assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); + assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); + return Module["asm"]["dynCall_iiii"].apply(null, arguments) +}; + +var dynCall_iiiid = Module["dynCall_iiiid"] = function() { + assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); + assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); + return Module["asm"]["dynCall_iiiid"].apply(null, arguments) +}; + +var dynCall_iiiidd = Module["dynCall_iiiidd"] = function() { + assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); + assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); + return Module["asm"]["dynCall_iiiidd"].apply(null, arguments) +}; + +var dynCall_iiiiddiiidd = Module["dynCall_iiiiddiiidd"] = function() { + assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); + assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); + return Module["asm"]["dynCall_iiiiddiiidd"].apply(null, arguments) +}; + +var dynCall_iiiidi = Module["dynCall_iiiidi"] = function() { + assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); + assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); + return Module["asm"]["dynCall_iiiidi"].apply(null, arguments) +}; + +var dynCall_iiiidiii = Module["dynCall_iiiidiii"] = function() { + assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); + assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); + return Module["asm"]["dynCall_iiiidiii"].apply(null, arguments) +}; + +var dynCall_iiiii = Module["dynCall_iiiii"] = function() { + assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); + assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); + return Module["asm"]["dynCall_iiiii"].apply(null, arguments) +}; + +var dynCall_iiiiii = Module["dynCall_iiiiii"] = function() { + assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); + assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); + return Module["asm"]["dynCall_iiiiii"].apply(null, arguments) +}; + +var dynCall_iiiiiii = Module["dynCall_iiiiiii"] = function() { + assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); + assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); + return Module["asm"]["dynCall_iiiiiii"].apply(null, arguments) +}; + +var dynCall_iiiiiiii = Module["dynCall_iiiiiiii"] = function() { + assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); + assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); + return Module["asm"]["dynCall_iiiiiiii"].apply(null, arguments) +}; + +var dynCall_ji = Module["dynCall_ji"] = function() { + assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); + assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); + return Module["asm"]["dynCall_ji"].apply(null, arguments) +}; + +var dynCall_jiji = Module["dynCall_jiji"] = function() { + assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); + assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); + return Module["asm"]["dynCall_jiji"].apply(null, arguments) +}; + +var dynCall_v = Module["dynCall_v"] = function() { + assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); + assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); + return Module["asm"]["dynCall_v"].apply(null, arguments) +}; + +var dynCall_vi = Module["dynCall_vi"] = function() { + assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); + assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); + return Module["asm"]["dynCall_vi"].apply(null, arguments) +}; + +var dynCall_vid = Module["dynCall_vid"] = function() { + assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); + assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); + return Module["asm"]["dynCall_vid"].apply(null, arguments) +}; + +var dynCall_viddd = Module["dynCall_viddd"] = function() { + assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); + assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); + return Module["asm"]["dynCall_viddd"].apply(null, arguments) +}; + +var dynCall_vidii = Module["dynCall_vidii"] = function() { + assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); + assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); + return Module["asm"]["dynCall_vidii"].apply(null, arguments) +}; + +var dynCall_vii = Module["dynCall_vii"] = function() { + assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); + assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); + return Module["asm"]["dynCall_vii"].apply(null, arguments) +}; + +var dynCall_viid = Module["dynCall_viid"] = function() { + assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); + assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); + return Module["asm"]["dynCall_viid"].apply(null, arguments) +}; + +var dynCall_viidd = Module["dynCall_viidd"] = function() { + assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); + assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); + return Module["asm"]["dynCall_viidd"].apply(null, arguments) +}; + +var dynCall_viiddd = Module["dynCall_viiddd"] = function() { + assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); + assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); + return Module["asm"]["dynCall_viiddd"].apply(null, arguments) +}; + +var dynCall_viif = Module["dynCall_viif"] = function() { + assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); + assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); + return Module["asm"]["dynCall_viif"].apply(null, arguments) +}; + +var dynCall_viii = Module["dynCall_viii"] = function() { + assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); + assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); + return Module["asm"]["dynCall_viii"].apply(null, arguments) +}; + +var dynCall_viiid = Module["dynCall_viiid"] = function() { + assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); + assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); + return Module["asm"]["dynCall_viiid"].apply(null, arguments) +}; + +var dynCall_viiidi = Module["dynCall_viiidi"] = function() { + assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); + assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); + return Module["asm"]["dynCall_viiidi"].apply(null, arguments) +}; + +var dynCall_viiii = Module["dynCall_viiii"] = function() { + assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); + assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); + return Module["asm"]["dynCall_viiii"].apply(null, arguments) +}; + +var dynCall_viiiii = Module["dynCall_viiiii"] = function() { + assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); + assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); + return Module["asm"]["dynCall_viiiii"].apply(null, arguments) +}; + +var dynCall_viiiiii = Module["dynCall_viiiiii"] = function() { + assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); + assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); + return Module["asm"]["dynCall_viiiiii"].apply(null, arguments) +}; +; + + + +// === Auto-generated postamble setup entry stuff === + +Module['asm'] = asm; + +if (!Object.getOwnPropertyDescriptor(Module, "intArrayFromString")) Module["intArrayFromString"] = function() { abort("'intArrayFromString' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "intArrayToString")) Module["intArrayToString"] = function() { abort("'intArrayToString' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "ccall")) Module["ccall"] = function() { abort("'ccall' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "cwrap")) Module["cwrap"] = function() { abort("'cwrap' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "setValue")) Module["setValue"] = function() { abort("'setValue' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "getValue")) Module["getValue"] = function() { abort("'getValue' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "allocate")) Module["allocate"] = function() { abort("'allocate' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "getMemory")) Module["getMemory"] = function() { abort("'getMemory' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you") }; +if (!Object.getOwnPropertyDescriptor(Module, "AsciiToString")) Module["AsciiToString"] = function() { abort("'AsciiToString' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "stringToAscii")) Module["stringToAscii"] = function() { abort("'stringToAscii' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "UTF8ArrayToString")) Module["UTF8ArrayToString"] = function() { abort("'UTF8ArrayToString' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "UTF8ToString")) Module["UTF8ToString"] = function() { abort("'UTF8ToString' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "stringToUTF8Array")) Module["stringToUTF8Array"] = function() { abort("'stringToUTF8Array' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "stringToUTF8")) Module["stringToUTF8"] = function() { abort("'stringToUTF8' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "lengthBytesUTF8")) Module["lengthBytesUTF8"] = function() { abort("'lengthBytesUTF8' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "UTF16ToString")) Module["UTF16ToString"] = function() { abort("'UTF16ToString' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "stringToUTF16")) Module["stringToUTF16"] = function() { abort("'stringToUTF16' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "lengthBytesUTF16")) Module["lengthBytesUTF16"] = function() { abort("'lengthBytesUTF16' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "UTF32ToString")) Module["UTF32ToString"] = function() { abort("'UTF32ToString' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "stringToUTF32")) Module["stringToUTF32"] = function() { abort("'stringToUTF32' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "lengthBytesUTF32")) Module["lengthBytesUTF32"] = function() { abort("'lengthBytesUTF32' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "allocateUTF8")) Module["allocateUTF8"] = function() { abort("'allocateUTF8' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "stackTrace")) Module["stackTrace"] = function() { abort("'stackTrace' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "addOnPreRun")) Module["addOnPreRun"] = function() { abort("'addOnPreRun' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "addOnInit")) Module["addOnInit"] = function() { abort("'addOnInit' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "addOnPreMain")) Module["addOnPreMain"] = function() { abort("'addOnPreMain' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "addOnExit")) Module["addOnExit"] = function() { abort("'addOnExit' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "addOnPostRun")) Module["addOnPostRun"] = function() { abort("'addOnPostRun' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "writeStringToMemory")) Module["writeStringToMemory"] = function() { abort("'writeStringToMemory' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "writeArrayToMemory")) Module["writeArrayToMemory"] = function() { abort("'writeArrayToMemory' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "writeAsciiToMemory")) Module["writeAsciiToMemory"] = function() { abort("'writeAsciiToMemory' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "addRunDependency")) Module["addRunDependency"] = function() { abort("'addRunDependency' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you") }; +if (!Object.getOwnPropertyDescriptor(Module, "removeRunDependency")) Module["removeRunDependency"] = function() { abort("'removeRunDependency' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you") }; +if (!Object.getOwnPropertyDescriptor(Module, "ENV")) Module["ENV"] = function() { abort("'ENV' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "FS")) Module["FS"] = function() { abort("'FS' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "FS_createFolder")) Module["FS_createFolder"] = function() { abort("'FS_createFolder' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you") }; +if (!Object.getOwnPropertyDescriptor(Module, "FS_createPath")) Module["FS_createPath"] = function() { abort("'FS_createPath' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you") }; +if (!Object.getOwnPropertyDescriptor(Module, "FS_createDataFile")) Module["FS_createDataFile"] = function() { abort("'FS_createDataFile' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you") }; +if (!Object.getOwnPropertyDescriptor(Module, "FS_createPreloadedFile")) Module["FS_createPreloadedFile"] = function() { abort("'FS_createPreloadedFile' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you") }; +if (!Object.getOwnPropertyDescriptor(Module, "FS_createLazyFile")) Module["FS_createLazyFile"] = function() { abort("'FS_createLazyFile' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you") }; +if (!Object.getOwnPropertyDescriptor(Module, "FS_createLink")) Module["FS_createLink"] = function() { abort("'FS_createLink' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you") }; +if (!Object.getOwnPropertyDescriptor(Module, "FS_createDevice")) Module["FS_createDevice"] = function() { abort("'FS_createDevice' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you") }; +if (!Object.getOwnPropertyDescriptor(Module, "FS_unlink")) Module["FS_unlink"] = function() { abort("'FS_unlink' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you") }; +if (!Object.getOwnPropertyDescriptor(Module, "GL")) Module["GL"] = function() { abort("'GL' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "dynamicAlloc")) Module["dynamicAlloc"] = function() { abort("'dynamicAlloc' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "loadDynamicLibrary")) Module["loadDynamicLibrary"] = function() { abort("'loadDynamicLibrary' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "loadWebAssemblyModule")) Module["loadWebAssemblyModule"] = function() { abort("'loadWebAssemblyModule' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "getLEB")) Module["getLEB"] = function() { abort("'getLEB' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "getFunctionTables")) Module["getFunctionTables"] = function() { abort("'getFunctionTables' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "alignFunctionTables")) Module["alignFunctionTables"] = function() { abort("'alignFunctionTables' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "registerFunctions")) Module["registerFunctions"] = function() { abort("'registerFunctions' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "addFunction")) Module["addFunction"] = function() { abort("'addFunction' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "removeFunction")) Module["removeFunction"] = function() { abort("'removeFunction' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "getFuncWrapper")) Module["getFuncWrapper"] = function() { abort("'getFuncWrapper' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "prettyPrint")) Module["prettyPrint"] = function() { abort("'prettyPrint' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "makeBigInt")) Module["makeBigInt"] = function() { abort("'makeBigInt' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "dynCall")) Module["dynCall"] = function() { abort("'dynCall' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "getCompilerSetting")) Module["getCompilerSetting"] = function() { abort("'getCompilerSetting' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "stackSave")) Module["stackSave"] = function() { abort("'stackSave' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "stackRestore")) Module["stackRestore"] = function() { abort("'stackRestore' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "stackAlloc")) Module["stackAlloc"] = function() { abort("'stackAlloc' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "establishStackSpace")) Module["establishStackSpace"] = function() { abort("'establishStackSpace' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "print")) Module["print"] = function() { abort("'print' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "printErr")) Module["printErr"] = function() { abort("'printErr' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "getTempRet0")) Module["getTempRet0"] = function() { abort("'getTempRet0' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "setTempRet0")) Module["setTempRet0"] = function() { abort("'setTempRet0' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "callMain")) Module["callMain"] = function() { abort("'callMain' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "Pointer_stringify")) Module["Pointer_stringify"] = function() { abort("'Pointer_stringify' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "warnOnce")) Module["warnOnce"] = function() { abort("'warnOnce' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "writeStackCookie")) Module["writeStackCookie"] = function() { abort("'writeStackCookie' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "checkStackCookie")) Module["checkStackCookie"] = function() { abort("'checkStackCookie' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "abortStackOverflow")) Module["abortStackOverflow"] = function() { abort("'abortStackOverflow' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") };if (!Object.getOwnPropertyDescriptor(Module, "ALLOC_NORMAL")) Object.defineProperty(Module, "ALLOC_NORMAL", { get: function() { abort("'ALLOC_NORMAL' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") } }); +if (!Object.getOwnPropertyDescriptor(Module, "ALLOC_STACK")) Object.defineProperty(Module, "ALLOC_STACK", { get: function() { abort("'ALLOC_STACK' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") } }); +if (!Object.getOwnPropertyDescriptor(Module, "ALLOC_DYNAMIC")) Object.defineProperty(Module, "ALLOC_DYNAMIC", { get: function() { abort("'ALLOC_DYNAMIC' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") } }); +if (!Object.getOwnPropertyDescriptor(Module, "ALLOC_NONE")) Object.defineProperty(Module, "ALLOC_NONE", { get: function() { abort("'ALLOC_NONE' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") } }); +if (!Object.getOwnPropertyDescriptor(Module, "calledRun")) Object.defineProperty(Module, "calledRun", { get: function() { abort("'calledRun' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you") } }); + + + +var calledRun; + +// Modularize mode returns a function, which can be called to +// create instances. The instances provide a then() method, +// must like a Promise, that receives a callback. The callback +// is called when the module is ready to run, with the module +// as a parameter. (Like a Promise, it also returns the module +// so you can use the output of .then(..)). +Module['then'] = function(func) { + // We may already be ready to run code at this time. if + // so, just queue a call to the callback. + if (calledRun) { + func(Module); + } else { + // we are not ready to call then() yet. we must call it + // at the same time we would call onRuntimeInitialized. + var old = Module['onRuntimeInitialized']; + Module['onRuntimeInitialized'] = function() { + if (old) old(); + func(Module); + }; + } + return Module; +}; + +/** + * @constructor + * @this {ExitStatus} + */ +function ExitStatus(status) { + this.name = "ExitStatus"; + this.message = "Program terminated with exit(" + status + ")"; + this.status = status; +} + +var calledMain = false; + +dependenciesFulfilled = function runCaller() { + // If run has never been called, and we should call run (INVOKE_RUN is true, and Module.noInitialRun is not false) + if (!calledRun) run(); + if (!calledRun) dependenciesFulfilled = runCaller; // try this again later, after new deps are fulfilled +}; + + + + + +/** @type {function(Array=)} */ +function run(args) { + args = args || arguments_; + + if (runDependencies > 0) { + return; + } + + writeStackCookie(); + + preRun(); + + if (runDependencies > 0) return; // a preRun added a dependency, run will be called later + + function doRun() { + // run may have just been called through dependencies being fulfilled just in this very frame, + // or while the async setStatus time below was happening + if (calledRun) return; + calledRun = true; + + if (ABORT) return; + + initRuntime(); + + preMain(); + + if (Module['onRuntimeInitialized']) Module['onRuntimeInitialized'](); + + assert(!Module['_main'], 'compiled without a main, but one is present. if you added it from JS, use Module["onRuntimeInitialized"]'); + + postRun(); + } + + if (Module['setStatus']) { + Module['setStatus']('Running...'); + setTimeout(function() { + setTimeout(function() { + Module['setStatus'](''); + }, 1); + doRun(); + }, 1); + } else + { + doRun(); + } + checkStackCookie(); +} +Module['run'] = run; + +function checkUnflushedContent() { + // Compiler settings do not allow exiting the runtime, so flushing + // the streams is not possible. but in ASSERTIONS mode we check + // if there was something to flush, and if so tell the user they + // should request that the runtime be exitable. + // Normally we would not even include flush() at all, but in ASSERTIONS + // builds we do so just for this check, and here we see if there is any + // content to flush, that is, we check if there would have been + // something a non-ASSERTIONS build would have not seen. + // How we flush the streams depends on whether we are in SYSCALLS_REQUIRE_FILESYSTEM=0 + // mode (which has its own special function for this; otherwise, all + // the code is inside libc) + var print = out; + var printErr = err; + var has = false; + out = err = function(x) { + has = true; + } + try { // it doesn't matter if it fails + var flush = Module['_fflush']; + if (flush) flush(0); + // also flush in the JS FS layer + ['stdout', 'stderr'].forEach(function(name) { + var info = FS.analyzePath('/dev/' + name); + if (!info) return; + var stream = info.object; + var rdev = stream.rdev; + var tty = TTY.ttys[rdev]; + if (tty && tty.output && tty.output.length) { + has = true; + } + }); + } catch(e) {} + out = print; + err = printErr; + if (has) { + warnOnce('stdio streams had content in them that was not flushed. you should set EXIT_RUNTIME to 1 (see the FAQ), or make sure to emit a newline when you printf etc.'); + } +} + +function exit(status, implicit) { + checkUnflushedContent(); + + // if this is just main exit-ing implicitly, and the status is 0, then we + // don't need to do anything here and can just leave. if the status is + // non-zero, though, then we need to report it. + // (we may have warned about this earlier, if a situation justifies doing so) + if (implicit && noExitRuntime && status === 0) { + return; + } + + if (noExitRuntime) { + // if exit() was called, we may warn the user if the runtime isn't actually being shut down + if (!implicit) { + err('exit(' + status + ') called, but EXIT_RUNTIME is not set, so halting execution but not exiting the runtime or preventing further async execution (build with EXIT_RUNTIME=1, if you want a true shutdown)'); + } + } else { + + ABORT = true; + EXITSTATUS = status; + + exitRuntime(); + + if (Module['onExit']) Module['onExit'](status); + } + + quit_(status, new ExitStatus(status)); +} + +var abortDecorators = []; + +function abort(what) { + if (Module['onAbort']) { + Module['onAbort'](what); + } + + what += ''; + out(what); + err(what); + + ABORT = true; + EXITSTATUS = 1; + + var extra = ''; + var output = 'abort(' + what + ') at ' + stackTrace() + extra; + if (abortDecorators) { + abortDecorators.forEach(function(decorator) { + output = decorator(output, what); + }); + } + throw output; +} +Module['abort'] = abort; + +if (Module['preInit']) { + if (typeof Module['preInit'] == 'function') Module['preInit'] = [Module['preInit']]; + while (Module['preInit'].length > 0) { + Module['preInit'].pop()(); + } +} + + + noExitRuntime = true; + +run(); + + + + + +// {{MODULE_ADDITIONS}} + + + + + + return rhino3dm +} +); +})(); +if (typeof exports === 'object' && typeof module === 'object') + module.exports = rhino3dm; + else if (typeof define === 'function' && define['amd']) + define([], function() { return rhino3dm; }); + else if (typeof exports === 'object') + exports["rhino3dm"] = rhino3dm; + \ No newline at end of file diff --git a/01_Code/physical_computing_interface/simulation/demos/rhino3dm.wasm b/01_Code/physical_computing_interface/simulation/demos/rhino3dm.wasm new file mode 100644 index 0000000000000000000000000000000000000000..44845a67814a04f4dd38170cadd229c2c7aa06b8 Binary files /dev/null and b/01_Code/physical_computing_interface/simulation/demos/rhino3dm.wasm differ diff --git a/01_Code/physical_computing_interface/simulation/demos/style.css b/01_Code/physical_computing_interface/simulation/demos/style.css new file mode 100644 index 0000000000000000000000000000000000000000..476b379ef2ed4a09b208271ef149553421752811 --- /dev/null +++ b/01_Code/physical_computing_interface/simulation/demos/style.css @@ -0,0 +1,307 @@ +body,html{width:100%;height:100%;padding:0;margin:0;} + +:root { + --color1: #ffffff; /*white*/ + --color11: #ffffff8c; /*shafaf*/ + --color2: #020227; /*kohly*/ + --color3: #1c5c61; /*teal*/ + --top: 20px; + --dragwidth: 5px; + --bottom: 20px; + --font: "Times New Roman", Times, serif; + /* --font: "Andale Mono", AndaleMono, monospace; */ + /* --font: "Courier New", Courier, monospace; */ +} + +.header1{ + background-color: rgba(0, 0, 0, 0);/*transparent*/ + + height: var(--top); + width: 50%; + float: left; + position: absolute; + + bottom: var(--bottom); + overflow-y: hidden; + top:var(--dragwidth); + /* left:var(--dragwidth); */ + + font-family: var(--font); + color: var(--color1); + top:var(--dragwidth); +} + +.header2{ + background-color: rgba(0, 0, 0, 0);/*transparent*/ + + height: var(--top); + float: left; + position: absolute; + + bottom: var(--bottom); + top:var(--dragwidth); + /* left:var(--dragwidth); */ + + + font-family: var(--font); + color: var(--color1); + +} + +#threejs1{ + background-color: var(--color11); + /* background-image: linear-gradient(+90deg, #03023d 90%,#ffffff ); */ + width: 100%; + height: 100%; + float: top; + /* z-index: -1; */ +} + +#threejs{ + background-color: var(--color2); + /* background-image: linear-gradient(+90deg, #03023d 90%,#ffffff ); */ + width: 50%; + float: left; + position: absolute; + top:0px; + /* bottom: 50%; */ + bottom: var(--bottom); + overflow-y: hidden; + font-family: var(--font); + color: var(--color1); + /* z-index: -1; */ +} + +#simulation{ + background-color: var(--color11); + /* background-image: linear-gradient(+90deg, #03023d 90%,#ffffff ); */ + width: 50%; + float: left; + position: absolute; + top:50%; + bottom: var(--bottom); + overflow-y: hidden; + font-family: var(--font); + color: var(--color2); + /* z-index: -1; */ +} + +#webgl{ + top:var(--top); + bottom: var(--bottom); + overflow-y: hidden; + font-family: var(--font); + color: var(--color2); +} + +#webgl1{ + /* top:100; */ + top:var(--top); + bottom: var(--bottom); + overflow-y: hidden; + font-family: var(--font); + color: var(--color2); +} + +#graph{ + background-color: var(--color2); + /* background-image: linear-gradient(+90deg, #ffffff, #ffffff); */ + float: right; + float: top; + position: absolute; + top: 0px; + /* bottom: 50%; */ + bottom: var(--bottom); + right: 0; + left:50%; + font-family: var(--font); + color: var(--color1); +} + +#json{ + background-color: var(--color2); + /* background-image: linear-gradient(+90deg, #ffffff, #ffffff); */ + float: right; + float: bottom; + position: absolute; + /* top:var(--top); */ + bottom: var(--bottom); + right: 0; + left:50%; + top:50%; + font-family: var(--font); + color: var(--color1); +} + +.footer1{ + background-color: var(--color1); + width: 50%; + float: left; + position: absolute; + overflow-y: hidden; + font-family: var(--font); + color: var(--color2); + height: var(--bottom); + bottom:0; +} + +.footer2{ + background-color: var(--color1); + float: right; + position: absolute; + right: 0; + left:50%; + font-family: var(--font); + color: var(--color2); + height: var(--bottom); + bottom:0; +} + + +.dragbar{ + /* background-color: var(--color3); */ + /* background-image: linear-gradient(+90deg, var(--color1) ,var(--color2) ,var(--color2)); */ + background-color: var(--color1); + height:100%; + float: left; + width: var(--dragwidth); + cursor: col-resize; +} + +.dragbar1{ + /* background-color: var(--color3); */ + background-image: linear-gradient(+0deg, var(--color2)50% ,var(--color1)60% ,var(--color2)); + width:100%; + left:var(--dragwidth); + float: bottom; + /* position: absolute; */ + height: var(--dragwidth); + cursor: row-resize; +} + +.dragbar2{ + /* background-color: var(--color3); */ + background-image: linear-gradient(+0deg, var(--color1)50% ,var(--color2)60% ,var(--color1)); + width:100%; + left:var(--dragwidth); + float: bottom; + /* position: absolute; */ + height: var(--dragwidth); + cursor: row-resize; +} + +#cy { + height: 100%; + width: 100%; + /* position: absolute; */ + /* float: right; */ + float: top; + font-family: var(--font); + /* left: var(--dragwidth); + top:var(--top); */ +} + +#jsoneditor { + width: 100%; + height: 100%; + float: bottom; +} + +#jsondiveditor { + width: 95%; + height: 90%; + left: var(--top); + top:var(--top); + float: right; + float: top; + position: absolute; + color: var(--color1); +} + +.button { + background-color: transparent; + border: 0; + color: var(--color1); + border: 1px solid var(--color3); + padding: 4px 12px; + + -o-transition: background-color .2s ease-in; + -moz-transition: background-color .2s ease-in; + -webkit-transition: background-color .2s ease-in; + transition: background-color .2s ease-in; +} + +.button:hover { + background-color: #e5e5e5; +} + +.button:active { + background-color: #ccc; +} + +#time{ + z-index: 9999999; + +} + +.slidecontainer { + width: 100%; + /* background-color: var(--color1); */ + /* opacity: 0.0; */ + + height: var(--top); + /* width: 100%; */ + float: left; + float: bottom; + position: absolute; + border-width: 10px; + + bottom: var(--bottom); + overflow-y: hidden; + /* top:var(--dragwidth); */ + /* left:var(--dragwidth); */ + + font-family: var(--font); + color: var(--color2); + z-index: 1000000; + /* top:var(--dragwidth); */ +} + + +.slider { + -webkit-appearance: none; + width: 80%; + margin-left: 10%; + /* left: 50%; */ + height: var(--dragwidth/3); + /* border-width: 10px; */ + border-radius: 5px; + background: #d3d3d3; + outline: none; + opacity: 0.7; + -webkit-transition: .2s; + transition: opacity .2s; +} + +.slider:hover { + opacity: 1; +} + +.slider::-webkit-slider-thumb { + -webkit-appearance: none; + appearance: none; + width: 10px; + height: 10px; + border-radius: 50%; + background: var(--color3); + cursor: pointer; +} + +.slider::-moz-range-thumb { + width: 10px; + height: 10px; + border-radius: 50%; + background: var(--color3); + cursor: pointer; +} + diff --git a/01_Code/physical_computing_interface/simulation/fea/barFea.js b/01_Code/physical_computing_interface/simulation/fea/barFea.js index c209ada239761634a785c4682bd5f9e30cb58604..35d5fee883b7ba041aca3ea00590c80387a84241 100644 --- a/01_Code/physical_computing_interface/simulation/fea/barFea.js +++ b/01_Code/physical_computing_interface/simulation/fea/barFea.js @@ -1,3 +1,6 @@ +// Amira Abdel-Rahman +// (c) Massachusetts Institute of Technology 2019 + ////////////3D bar-truss fea///////////////////// function solveFea(){ // # determine the global matrices diff --git a/01_Code/physical_computing_interface/simulation/fea/beamFea.js b/01_Code/physical_computing_interface/simulation/fea/beamFea.js index 788518da337c70ecb5f00c81adb378cbd2b4d55f..33e86b40877aad25da442509ce831c44d7151c0a 100644 --- a/01_Code/physical_computing_interface/simulation/fea/beamFea.js +++ b/01_Code/physical_computing_interface/simulation/fea/beamFea.js @@ -1,3 +1,6 @@ +// Amira Abdel-Rahman +// (c) Massachusetts Institute of Technology 2019 + ////////////3D bar-truss fea///////////////////// function solveFea(){ // # determine the global matrices diff --git a/01_Code/physical_computing_interface/simulation/fea/flight.js b/01_Code/physical_computing_interface/simulation/fea/flight.js index 21a4a3f38d3bf32d6674209c3213792840a86139..b787f91ea295f71064d03706b3451a83092a3ae1 100644 --- a/01_Code/physical_computing_interface/simulation/fea/flight.js +++ b/01_Code/physical_computing_interface/simulation/fea/flight.js @@ -1,3 +1,6 @@ +// Amira Abdel-Rahman +// (c) Massachusetts Institute of Technology 2019 + function initialize(setup){ var voxCount = setup.nodes.length; for(var i=0;i<voxCount;i++){ diff --git a/01_Code/physical_computing_interface/simulation/fea/parallelFea.js b/01_Code/physical_computing_interface/simulation/fea/parallelFea.js index 82914d984b645281b0e5eb0526304e35fdf8bb8c..1b82a83fc62fdb40cfe1998fa8c8b8997a3d71e0 100644 --- a/01_Code/physical_computing_interface/simulation/fea/parallelFea.js +++ b/01_Code/physical_computing_interface/simulation/fea/parallelFea.js @@ -1,4 +1,9 @@ +// Amira Abdel-Rahman +// (c) Massachusetts Institute of Technology 2020 + //BASED ON https://github.com/jonhiller/Voxelyze + + var DBL_EPSILONx24 =5.328e-15; //DBL_EPSILON*24 var DISCARD_ANGLE_RAD= 1e-7; //Anything less than this angle can be considered 0 var SMALL_ANGLE_RAD= 1.732e-2; //Angles less than this get small angle approximations. To get: Root solve atan(t)/t-1+MAX_ERROR_PERCENT. From: MAX_ERROR_PERCENT = (t-atan(t))/t @@ -10,15 +15,67 @@ var Z_AXIS = 2; //!< Z Axis var currentTime=0; var maxStrain=0; + + + +function simulateParallel(setup,numTimeSteps,dt,static=true,saveInterval=10){ + // var instuctionsDiv=document.getElementById("footer2").innerHTML; + initialize(setup); + for(var i=0;i<numTimeSteps;i++){ + var t0 = performance.now(); + doTimeStep(setup,dt,static,i,saveInterval); + var t1 = performance.now(); + console.log("doTimeStep took " + (t1 - t0) + " milliseconds."); + + // document.getElementById("footer2").innerHTML = "Timestep "+i +" out of "+ numTimeSteps+"."; + } + updateColors(); +} + function initialize(setup){ + + // pre-calculate current position var voxCount = setup.nodes.length; for(var i=0;i<voxCount;i++){ setup.nodes[i].currPosition=new THREE.Vector3(setup.nodes[i].position.x,setup.nodes[i].position.y,setup.nodes[i].position.z); + setup.nodes[i].orient= new THREE.Quaternion(); + setup.nodes[i].linMom=new THREE.Vector3(0,0,0); + setup.nodes[i].angMom=new THREE.Vector3(0,0,0); + setup.nodes[i].intForce=new THREE.Vector3(0,0,0); + setup.nodes[i].intMoment=new THREE.Vector3(0,0,0); + setup.nodes[i].moment={ x: 0, y: 0,z:0 }; + setup.nodes[i].displacement={ x: 0, y: 0,z:0 }; + //for dynamic simulations + setup.nodes[i].posTimeSteps=[]; + setup.nodes[i].angTimeSteps=[]; + } + // pre-calculate the axis + var linkCount = setup.edges.length; + for(var i=0;i<linkCount;i++){ + var node1=setup.nodes[setup.edges[i].source]; + var node2=setup.nodes[setup.edges[i].target]; + var pVNeg=new THREE.Vector3(node1.position.x,node1.position.y,node1.position.z); + var pVPos=new THREE.Vector3(node2.position.x,node2.position.y,node2.position.z); + var axis=pVPos.clone().sub(pVNeg).normalize(); + setup.edges[i].axis=axis.clone(); + + + setup.edges[i].currentRestLength=0; + setup.edges[i].pos2= new THREE.Vector3(0,0,0); + setup.edges[i].angle1v= new THREE.Vector3(0,0,0); + setup.edges[i].angle2v= new THREE.Vector3(0,0,0); + setup.edges[i].angle1=new THREE.Quaternion(); + setup.edges[i].angle2=new THREE.Quaternion(); + setup.edges[i].currentTransverseArea=0; + setup.edges[i].currentTransverseStrainSum=0; + //todo update stresses + setup.edges[i].stressTimeSteps=[]; + } } -function doTimeStep(setup,dt){ +function doTimeStep(setup,dt,static=true,currentTimeStep,saveInterval){ if (dt==0) return true; else if (dt<0) @@ -33,7 +90,7 @@ function doTimeStep(setup,dt){ var Diverged = false; var linkCount = setup.edges.length; for(var i=0;i<linkCount;i++){ - updateForces(setup.edges[i],setup.nodes[setup.edges[i].source],setup.nodes[setup.edges[i].target]); + updateForces(setup,setup.edges[i],setup.nodes[setup.edges[i].source],setup.nodes[setup.edges[i].target],static); // todo: update forces and whatever if (axialStrain(setup.edges[i]) > 100) { Diverged = true; //catch divergent condition! (if any thread sets true we will fail, so don't need mutex... @@ -48,7 +105,12 @@ function doTimeStep(setup,dt){ var voxCount = setup.nodes.length; for(var i=0;i<voxCount;i++){ - timeStep(dt,setup.nodes[i]); + timeStep(dt,setup.nodes[i],static,currentTimeStep); + if(!static&& currentTimeStep%saveInterval==0){ + setup.nodes[i].posTimeSteps.push(setup.nodes[i].displacement); + setup.nodes[i].angTimeSteps.push(setup.nodes[i].angle); + + } // todo: update linMom,angMom, orient and whatever } @@ -58,16 +120,16 @@ function doTimeStep(setup,dt){ } -function updateForces(edge,node1,node2){ +function updateForces(setup,edge,node1,node2,static=true){ - var pVPos=new THREE.Vector3(node1.position.x,node1.position.y,node1.position.z); - var pVNeg=new THREE.Vector3(node2.position.x,node2.position.y,node2.position.z); + var pVNeg=new THREE.Vector3(node1.position.x,node1.position.y,node1.position.z); + var pVPos=new THREE.Vector3(node2.position.x,node2.position.y,node2.position.z); var currentRestLength=pVPos.clone().sub(pVNeg).length(); edge.currentRestLength=currentRestLength; //todo make sure updated - pVPos=node1.currPosition.clone(); - pVNeg=node2.currPosition.clone(); + pVNeg=node1.currPosition.clone(); + pVPos=node2.currPosition.clone(); // Vec3D<double> three var oldPos2 = edge.pos2.clone();//?? @@ -90,22 +152,28 @@ function updateForces(edge,node1,node2){ //updateTransverseInfo(); //currentTransverseStrainSum != 0 catches when we disable poissons mid-simulation - - var _stress=updateStrain((edge.pos2.x/edge.currentRestLength)); - var _stress=updateStrain(1.0); - var scaleFactor=1; - edge.stress = _stress/scaleFactor; + var _stress=updateStrain((edge.pos2.x/edge.currentRestLength),edge.stiffness); + // var _stress=updateStrain(1.0); + edge.stress = _stress; + if(!static){ + edge.stressTimeSteps.push(_stress); + } - console.log(edge.stress) + // console.log("Stress:"+edge.stress) + if(setup.viz.minStress>edge.stress){ + setup.viz.minStress=edge.stress; + }else if (setup.viz.maxStress<edge.stress){ + setup.viz.maxStress=edge.stress; + } // if (isFailed()){forceNeg = forcePos = momentNeg = momentPos = Vec3D<double>(0,0,0); return;} // var b1=mat->_b1, b2=mat->_b2, b3=mat->_b3, a2=mat->_a2; //local copies //todo get from where i had var l = currentRestLength;//?? - var rho = edge.density/scaleFactor; - var A = edge.area/scaleFactor; - var E = edge.stiffness/scaleFactor;// youngs modulus + var rho = edge.density; + var A = edge.area; + var E = edge.stiffness;// youngs modulus var G=1.0;//todo shear_modulus var ixx = 1.0;//todo section ixx var I=1.0; @@ -119,8 +187,36 @@ function updateForces(edge,node1,node2){ var b3= 2*E*I/(l); var a1= E*A/l; var a2= G*J/l; + var nu=0; + + // var b1= 5e6; + // var b2= 1.25e7; + // var b3= 2.08333e+07; + // var a1= E*A/l; + // var a2= 1.04167e+07; + + var E=1000000; + var E=edge.stiffness; + var L = 5; + var a1 = E*L; //EA/L : Units of N/m + var a2 = E * L*L*L / (12.0*(1+nu)); //GJ/L : Units of N-m + var b1 = E*L; //12EI/L^3 : Units of N/m + var b2 = E*L*L/2.0; //6EI/L^2 : Units of N (or N-m/m: torque related to linear distance) + var b3 = E*L*L*L/6.0; //2EI/L : Units of N-m + // console.log("currentRestLength:"+currentRestLength); + // console.log("b1:"+b1/10e6); + // console.log("b2:"+b2/10e7); + // console.log("b3:"+b3/10e7); + // console.log("a2:"+a2/10e7); + // var b1= 5e6; + // var b2= 1.25e7; + // var b3= 2.08333e+07; + // var a1= E*A/l; + // var a2= 1.04167e+07; + + var currentTransverseArea=25.0;// todo ?? later change + var currentTransverseArea=edge.area; - var currentTransverseArea=1.0;// todo ?? later change //Beam equations. All relevant terms are here, even though some are zero for small angle and others are zero for large angle (profiled as negligible performance penalty) var forceNeg = new THREE.Vector3 ( _stress*currentTransverseArea, //currentA1*pos2.x, @@ -135,11 +231,7 @@ function updateForces(edge,node1,node2){ -b2*edge.pos2.z - b3*(edge.angle1v.y + 2*edge.angle2v.y), b2*edge.pos2.y - b3*(edge.angle1v.z + 2*edge.angle2v.z)); - // console.log( forceNeg ) - // console.log( forcePos ) - // console.log( momentNeg ) - // console.log( momentPos ) - + // //local damping: // if (isLocalVelocityValid()){ //if we don't have the basis for a good damping calculation, don't do any damping. // float sqA1=mat->_sqA1, sqA2xIp=mat->_sqA2xIp,sqB1=mat->_sqB1, sqB2xFMp=mat->_sqB2xFMp, sqB3xIp=mat->_sqB3xIp; @@ -179,16 +271,17 @@ function updateForces(edge,node1,node2){ momentNeg=toAxisOriginalQuat(momentNeg,edge.axis); momentPos=toAxisOriginalQuat(momentPos,edge.axis); + - node1.intForce.add(forcePos.clone()); - node2.intForce.add(forceNeg.clone()); - node1.intMoment.add(forcePos.clone()); - node2.intMoment.add(momentNeg.clone()); + node1.intForce.add(forceNeg.clone()); + node2.intForce.add(forcePos.clone()); + node1.intMoment.add(momentNeg.clone()); + node2.intMoment.add(momentPos.clone()); // assert(!(forceNeg.x != forceNeg.x) || !(forceNeg.y != forceNeg.y) || !(forceNeg.z != forceNeg.z)); //assert non QNAN // assert(!(forcePos.x != forcePos.x) || !(forcePos.y != forcePos.y) || !(forcePos.z != forcePos.z)); //assert non QNAN - console.log("") + } function orientLink( edge,node1,node2){ //updates pos2, angle1, angle2, and smallAngle //Quat3D<double> /*double restLength*/ @@ -196,26 +289,27 @@ function orientLink( edge,node1,node2){ //updates pos2, angle1, angle2, and smal var pVPos=node2.currPosition.clone(); var pVNeg=node1.currPosition.clone(); + var currentRestLength=edge.currentRestLength; // var currentRestLength=0; var pos2 = toAxisXVector3(pVPos.clone().sub(pVNeg),edge.axis); //digit truncation happens here... + + // pos2.x = Math.round(pos2.x * 1e4) / 1e4; + var angle1 = toAxisXQuat(node1.orient,edge.axis); var angle2 = toAxisXQuat(node2.orient,edge.axis); + var totalRot = angle1.conjugate(); //keep track of the total rotation of this bond (after toAxisX()) //Quat3D<double> pos2 = RotateVec3D(totalRot,pos2); angle2 = totalRot.clone().multiply(angle2); angle1 = new THREE.Quaternion(); //zero for now... - - console.log(edge.id) - // console.log(pVPos.clone().sub(pVNeg)) - // console.log(edge.axis) - console.log(pos2) + //small angle approximation? // var SmallTurn = ((Math.abs(pos2.z)+Math.abs(pos2.y))/pos2.x); @@ -229,7 +323,7 @@ function orientLink( edge,node1,node2){ //updates pos2, angle1, angle2, and smal // setBoolState(LOCAL_VELOCITY_VALID, false); // } - var smallAngle=false; //todo later remove + var smallAngle=true; //todo later remove if (smallAngle) { //Align so Angle1 is all zeros pos2.x -= currentRestLength; //only valid for small angles @@ -241,6 +335,7 @@ function orientLink( edge,node1,node2){ //updates pos2, angle1, angle2, and smal pos2 = new THREE.Vector3(pos2.length() - currentRestLength, 0, 0); } + angle1v = ToRotationVector(angle1); angle2v = ToRotationVector(angle2); @@ -264,9 +359,11 @@ function RotateVec3D(a, f) { var tx = fx*a.w - fy*a.z + fz*a.y; var ty = fx*a.z + fy*a.w - fz*a.x; var tz = -fx*a.y + fy*a.x + fz*a.w; + return new THREE.Vector3(a.w*tx + a.x*tw + a.y*tz - a.z*ty, a.w*ty - a.x*tz + a.y*tw + a.z*tx, a.w*tz + a.x*ty - a.y*tx + a.z*tw); } //!< Returns a vector representing the specified vector "f" rotated by this quaternion. @param[in] f The vector to transform. + function RotateVec3DInv(a, f) { var fx=f.x, fy=f.y, fz=f.z; var tw = a.x*fx + a.y*fy + a.z*fz; @@ -277,67 +374,182 @@ function RotateVec3DInv(a, f) { } //!< Returns a vector representing the specified vector "f" rotated by the inverse of this quaternion. This is the opposite of RotateVec3D. @param[in] f The vector to transform. function toAxisOriginalVector3(pV,axis){ - switch (axis){ - case Y_AXIS:{ - var tmp = pV.y; - pV.y=pV.x; - pV.x = -tmp; - break; - } - case Z_AXIS: { - var tmp = pV.z; - pV.z=pV.x; - pV.x = -tmp; - break; - } - default: - break; - } + // switch (axis){ + // case Y_AXIS:{ + // var tmp = pV.y; + // pV.y=pV.x; + // pV.x = -tmp; + // break; + // } + // case Z_AXIS: { + // var tmp = pV.z; + // pV.z=pV.x; + // pV.x = -tmp; + // break; + // } + // default: + // break; + // } + // if(axis.equals(new THREE.Vector3(0,1,0))){ + // var tmp = pV.y; + // pV.y=pV.x; + // pV.x = -tmp; + + // }else if(axis.equals(new THREE.Vector3(0,0,1))){ + // var tmp = pV.z; + // pV.z=pV.x; + // pV.x = -tmp; + + // } + + var vector=axis.clone(); + vector.normalize(); + var xaxis=new THREE.Vector3(1,0,0); + var geometry = new THREE.BoxGeometry( 1, 1, 1 ); + var material = new THREE.MeshBasicMaterial( {color: 0x00ff00} ); + var cube = new THREE.Mesh( geometry, material ); + var quaternion = new THREE.Quaternion(); // create one and reuse it + quaternion.setFromUnitVectors( xaxis,vector ); + cube.applyQuaternion( quaternion ); + pV.applyEuler(cube.rotation); + + return pV; } function toAxisOriginalQuat(pQ,axis){ - switch (axis){ - case Y_AXIS: { - var tmp = pQ.y; - pQ.y=pQ.x; - pQ.x = -tmp; - break; - } - case Z_AXIS: { - var tmp = pQ.z; - pQ.z=pQ.x; - pQ.x = -tmp; - break; - } - default: - break; - } - return pQ; + // switch (axis){ + // case Y_AXIS: { + // var tmp = pQ.y; + // pQ.y=pQ.x; + // pQ.x = -tmp; + // break; + // } + // case Z_AXIS: { + // var tmp = pQ.z; + // pQ.z=pQ.x; + // pQ.x = -tmp; + // break; + // } + // default: + // break; + // } + // if(axis.equals(new THREE.Vector3(0,1,0))){ + // var tmp = pQ.y; + // pQ.y=pQ.x; + // pQ.x = -tmp; + + // }else if(axis.equals(new THREE.Vector3(0,0,1))){ + // var tmp = pQ.z; + // pQ.z=pQ.x; + // pQ.x = -tmp; + + // } + + var v=new THREE.Vector3(pQ.x,pQ.y,pQ.z); + var vector=axis.clone(); + vector.normalize(); + var xaxis=new THREE.Vector3(1,0,0); + var geometry = new THREE.BoxGeometry( 1, 1, 1 ); + var material = new THREE.MeshBasicMaterial( {color: 0x00ff00} ); + var cube = new THREE.Mesh( geometry, material ); + var quaternion = new THREE.Quaternion(); // create one and reuse it + // quaternion.setFromUnitVectors( vector, xaxis ); + quaternion.setFromUnitVectors( xaxis, vector ); //amira changed to see 3 march 2020 + cube.applyQuaternion( quaternion ); + v.applyEuler(cube.rotation); + + return new THREE.Quaternion(v.x,v.y,v.z,pQ.w); + } function toAxisXVector3(v,axis){ //TODO CHANGE - switch (axis){ - case Y_AXIS: - return new THREE.Vector3(v.y, -v.x, v.z); - case Z_AXIS: - return new THREE.Vector3(v.z, v.y, -v.x); - default: - return v; - } + + // var vector=new THREE.Vector3(1,0,0); + + // switch (axis){ + // case Y_AXIS: + // return new THREE.Vector3(v.y, -v.x, v.z); + // break; + // case Z_AXIS: + // return new THREE.Vector3(v.z, v.y, -v.x); + // break; + // default: + // + // return v; + // break; + // } + + // switch (axis){ + // case Y_AXIS: + // vector=new THREE.Vector3(0,1,0); + // break; + // case Z_AXIS: + // vector=new THREE.Vector3(0,0,1); + // break; + // default: + // vector=new THREE.Vector3(1,0,0); + // break; + // } + + var vector=axis.clone(); + vector.normalize(); + var xaxis=new THREE.Vector3(1,0,0); + var geometry = new THREE.BoxGeometry( 1, 1, 1 ); + var material = new THREE.MeshBasicMaterial( {color: 0x00ff00} ); + var cube = new THREE.Mesh( geometry, material ); + var quaternion = new THREE.Quaternion(); // create one and reuse it + quaternion.setFromUnitVectors( vector, xaxis ); + cube.applyQuaternion( quaternion ); + v.applyEuler(cube.rotation); + // var res=6; + // v=new THREE.Vector3( parseFloat(v.x.toFixed(res)),parseFloat(v.y.toFixed(res)),parseFloat(v.z.toFixed(res))) + + + + return v.clone(); + } //transforms a vec3D in the original orientation of the bond to that as if the bond was in +X direction function toAxisXQuat(q,axis){ - switch (axis){ - case Y_AXIS: - return new THREE.Quaternion(q.w, q.y, -q.x, q.z); - case Z_AXIS: - return new THREE.Quaternion(q.w, q.z, q.y, -q.x); - default: - return q; - } + // var vector=new THREE.Vector3(1,0,0); + // switch (axis){ + // case Y_AXIS: + // return new THREE.Quaternion( q.y, -q.x, q.z,q.w); + // case Z_AXIS: + // return new THREE.Quaternion( q.z, q.y, -q.x,q.w); + // default: + // return q; + // } + + // switch (axis){ + // case Y_AXIS: + // vector=new THREE.Vector3(0,1,0); + // break; + // case Z_AXIS: + // vector=new THREE.Vector3(0,0,1); + // break; + // default: + // vector=new THREE.Vector3(1,0,0); + // break; + // } + var v=new THREE.Vector3(q.x,q.y,q.z); + var vector=axis.clone(); + vector.normalize(); + var xaxis=new THREE.Vector3(1,0,0); + var geometry = new THREE.BoxGeometry( 1, 1, 1 ); + var material = new THREE.MeshBasicMaterial( {color: 0x00ff00} ); + var cube = new THREE.Mesh( geometry, material ); + var quaternion = new THREE.Quaternion(); // create one and reuse it + quaternion.setFromUnitVectors( vector, xaxis ); + cube.applyQuaternion( quaternion ); + v.applyEuler(cube.rotation); + + return new THREE.Quaternion(v.x,v.y,v.z,q.w); + } //transforms a vec3D in the original orientation of the bond to that as if the bond was in +X direction + //const Quat3D Conjugate() const {return Quat3D(w, -x, -y, -z);} //!< Returns a quaternion that is the conjugate of this quaternion. This quaternion is not modified. function ToRotationVector(a) { if (a.w >= 1.0 || a.w <= -1.0) { @@ -422,25 +634,26 @@ function axialStrain( positiveEnd) { return positiveEnd ? 2.0 *strain*strainRatio/(1.0+strainRatio) : 2.0*strain/(1.0+strainRatio); } -function updateStrain( axialStrain){ //?from where strain +function updateStrain( axialStrain,E){ //?from where strain strain = axialStrain; //redundant? - var currentTransverseStrainSum=1.0; //??? todo + var currentTransverseStrainSum=0.0; //??? todo var linear=true; // var maxStrain=100000000000000000000;//?? todo later change if (linear){ if (axialStrain > maxStrain) maxStrain = axialStrain; //remember this maximum for easy reference - return stress(axialStrain, currentTransverseStrainSum); + + return stress(axialStrain,E); } else { var returnStress; if (axialStrain > maxStrain){ //if new territory on the stress/strain curve maxStrain = axialStrain; //remember this maximum for easy reference - returnStress = stress(axialStrain, currentTransverseStrainSum); //??currentTransverseStrainSum + returnStress = stress(axialStrain,E); //??currentTransverseStrainSum if (nu != 0.0) - strainOffset = maxStrain-stress(axialStrain)/(_eHat*(1-nu)); //precalculate strain offset for when we back off + strainOffset = maxStrain-stress(axialStrain,E)/(_eHat*(1-nu)); //precalculate strain offset for when we back off else strainOffset = maxStrain-returnStress/E; //precalculate strain offset for when we back off } @@ -448,7 +661,7 @@ function updateStrain( axialStrain){ //?from where strain var relativeStrain = axialStrain-strainOffset; // treat the material as linear with a strain offset according to the maximum plastic deformation if (nu != 0.0) - returnStress = stress(relativeStrain, currentTransverseStrainSum, true); + returnStress = stress(relativeStrain,E); else returnStress = E*relativeStrain; } @@ -458,12 +671,13 @@ function updateStrain( axialStrain){ //?from where strain } -function stress( strain, transverseStrainSum, forceLinear){ +function stress( strain , E ){//,transverseStrainSum, forceLinear){ //reference: http://www.colorado.edu/engineering/CAS/courses.d/Structures.d/IAST.Lect05.d/IAST.Lect05.pdf page 10 //if (isFailed(strain)) return 0.0f; //if a failure point is set and exceeded, we've broken! - var E =setup.edges[0].stiffness; //todo change later to material ?? - var scaleFactor=1; - return E*strain/scaleFactor; + // var E =setup.edges[0].stiffness; //todo change later to material ?? + // var E=1000000;//todo change later to material ?? + // var scaleFactor=1; + return E*strain; // if (strain <= strainData[1] || linear || forceLinear){ //for compression/first segment and linear materials (forced or otherwise), simple calculation @@ -517,7 +731,7 @@ function transverseArea( axis){ } //http://klas-physics.googlecode.com/svn/trunk/src/general/Integrator.cpp (reference) -function timeStep( dt,node){ +function timeStep( dt,node,static=true,currentTimeStep){ var previousDt = dt; var linMom=node.linMom.clone(); var angMom=node.angMom.clone(); @@ -546,7 +760,8 @@ function timeStep( dt,node){ } //Translation - var curForce = force(node); + var curForce = force(node,static,currentTimeStep); + //var fricForce = curForce.clone(); //if (isFloorEnabled()) floorForce(dt, &curForce); //floor force needs dt to calculate threshold to "stop" a slow voxel into static friction. @@ -556,7 +771,7 @@ function timeStep( dt,node){ //assert(!(curForce.x != curForce.x) || !(curForce.y != curForce.y) || !(curForce.z != curForce.z)); //assert non QNAN linMom.add(curForce).multiplyScalar(dt); - var massInverse=1.0;//todo ?? later change + var massInverse=8e-6;//todo ?? later change var translate=linMom.clone().multiplyScalar(dt*massInverse);//??massInverse // // we need to check for friction conditions here (after calculating the translation) and stop things accordingly @@ -589,6 +804,16 @@ function timeStep( dt,node){ orient.multiply(FromRotationVector(angMom.clone().multiplyScalar((dt*momentInertiaInverse)))); //update the orientation //momentInertiaInverse node.orient=orient.clone(); + + var eulerOrder = "ZYX"; //TODO SEE IF CORRECT + var eul = new THREE.Euler().setFromQuaternion( orient, eulerOrder ); + + node.angle={ + x:eul.x, + y:eul.y, + z:eul.z}; + + node.linMom=linMom.clone(); node.angMom=angMom.clone(); @@ -617,7 +842,8 @@ function timeStep( dt,node){ } -function force(node) { + +function force(node,static=true,currentTimeStep) { //forces from internal bonds var totalForce=new THREE.Vector3(0,0,0); //new THREE.Vector3(node.force.x,node.force.y,node.force.z); @@ -633,7 +859,25 @@ function force(node) { //assert(!(totalForce.x != totalForce.x) || !(totalForce.y != totalForce.y) || !(totalForce.z != totalForce.z)); //assert non QNAN //other forces - totalForce.add(new THREE.Vector3(node.force.x,node.force.y,node.force.z)); + if(static){ + totalForce.add(new THREE.Vector3(node.force.x,node.force.y,node.force.z)); + // }else if(currentTimeStep<50){ + // totalForce.add(new THREE.Vector3(node.force.x,node.force.y,node.force.z)); + }else{ + // var ex=0.1; + // if(node.force.y!=0){ + // var f=400*Math.sin(currentTimeStep*ex); + // totalForce.add(new THREE.Vector3(0,f,0)); + + // } + var x=node.position.z; + var t=currentTimeStep; + var wave=getForce(x,t); + totalForce.add(new THREE.Vector3(0,wave,0)); + + + } + // if (externalExists()) totalForce += external()->force(); //external forces // totalForce -= velocity()*mat->globalDampingTranslateC(); //global damping f-cv diff --git a/01_Code/physical_computing_interface/simulation/json/parallelCube.js b/01_Code/physical_computing_interface/simulation/json/parallelCube.js index b5f6274f76e6d62a3d705102a95d4d2ff17fdc5c..68520ac06d3a372befa4d9858c501806e347e903 100644 --- a/01_Code/physical_computing_interface/simulation/json/parallelCube.js +++ b/01_Code/physical_computing_interface/simulation/json/parallelCube.js @@ -26,7 +26,7 @@ var setup= restrained_degrees_of_freedom:[false,false,false,false,false,false], position: { x: 0, y: 5,z:0 }, currPosition:new THREE.Vector3(0,5,0), - force:{ x: 0, y: -0,z:0 }, + force:{ x: 0, y: 0,z:0 }, displacement: { x: 0, y: 0,z:0 }, angle: { x: 0, y: 0,z:0 }, orient: new THREE.Quaternion(), @@ -206,7 +206,7 @@ var setup= restrained_degrees_of_freedom:[false,false,false,false,false,false], position: { x: 0, y: 10,z:0 }, currPosition:new THREE.Vector3(0,10,0), - force:{ x: -0, y: -0,z:0 }, + force:{ x: -0, y: -1000,z:0 }, displacement: { x: 0, y: 0,z:0 }, angle: { x: 0, y: 0,z:0 }, orient: new THREE.Quaternion(), @@ -221,7 +221,7 @@ var setup= edges: [ { - id: 'e0', source: 0, target: 1 ,area:1.0,density:0.284,stiffness:30.0e6,stress:0, + id: 'e0', source: 0, target: 1 ,area:1.0,density:1000,stiffness:1000000,stress:0, currentRestLength:0, axis:Y_AXIS, pos2: new THREE.Vector3(0,0,0), @@ -285,8 +285,9 @@ var setup= currentTransverseStrainSum:0 }, + { - id: 'e5', source: 5, target: 7 ,area:1.0,density:0.284,stiffness:30.0e6,stress:0, + id: 'e5', source: 4, target: 6 ,area:1.0,density:0.284,stiffness:30.0e6,stress:0, currentRestLength:0, axis:X_AXIS, pos2: new THREE.Vector3(0,0,0), @@ -299,9 +300,9 @@ var setup= }, { - id: 'e6', source: 6, target: 7 ,area:1.0,density:0.284,stiffness:30.0e6,stress:0, + id: 'e6', source: 0, target: 4 ,area:1.0,density:0.284,stiffness:30.0e6,stress:0, currentRestLength:0, - axis:Y_AXIS, + axis:Z_AXIS, pos2: new THREE.Vector3(0,0,0), angle1v: new THREE.Vector3(0,0,0), angle2v: new THREE.Vector3(0,0,0), @@ -311,10 +312,11 @@ var setup= currentTransverseStrainSum:0 }, + { - id: 'e7', source: 4, target: 6 ,area:1.0,density:0.284,stiffness:30.0e6,stress:0, + id: 'e7', source: 2, target: 6 ,area:1.0,density:0.284,stiffness:30.0e6,stress:0, currentRestLength:0, - axis:X_AXIS, + axis:Z_AXIS, pos2: new THREE.Vector3(0,0,0), angle1v: new THREE.Vector3(0,0,0), angle2v: new THREE.Vector3(0,0,0), @@ -325,7 +327,7 @@ var setup= }, { - id: 'e8', source: 0, target: 4 ,area:1.0,density:0.284,stiffness:30.0e6,stress:0, + id: 'e8', source: 1, target: 5 ,area:1.0,density:0.284,stiffness:30.0e6,stress:0, currentRestLength:0, axis:Z_AXIS, pos2: new THREE.Vector3(0,0,0), @@ -338,9 +340,9 @@ var setup= }, { - id: 'e9', source: 1, target: 5 ,area:1.0,density:0.284,stiffness:30.0e6,stress:0, + id: 'e9', source: 5, target: 7 ,area:1.0,density:0.284,stiffness:30.0e6,stress:0, currentRestLength:0, - axis:Z_AXIS, + axis:X_AXIS, pos2: new THREE.Vector3(0,0,0), angle1v: new THREE.Vector3(0,0,0), angle2v: new THREE.Vector3(0,0,0), @@ -351,9 +353,9 @@ var setup= }, { - id: 'e10', source: 3, target: 7 ,area:1.0,density:0.284,stiffness:30.0e6,stress:0, + id: 'e10', source: 6, target: 7 ,area:1.0,density:0.284,stiffness:30.0e6,stress:0, currentRestLength:0, - axis:Z_AXIS, + axis:Y_AXIS, pos2: new THREE.Vector3(0,0,0), angle1v: new THREE.Vector3(0,0,0), angle2v: new THREE.Vector3(0,0,0), @@ -364,7 +366,7 @@ var setup= }, { - id: 'e11', source: 2, target: 6 ,area:1.0,density:0.284,stiffness:30.0e6,stress:0, + id: 'e11', source: 3, target: 7 ,area:1.0,density:0.284,stiffness:30.0e6,stress:0, currentRestLength:0, axis:Z_AXIS, pos2: new THREE.Vector3(0,0,0), @@ -489,7 +491,7 @@ var setup= animation : { showDisplacement : true, - exageration : 10, + exageration : 10e1, speed:3.0 }, @@ -497,8 +499,8 @@ var setup= viz : { - minStress:-500, - maxStress: 500, + minStress:-20, + maxStress: 10, colorMaps:[YlGnBu, winter, coolwarm,jet], colorMap:0, diff --git a/01_Code/physical_computing_interface/simulation/json/parallelVoxel.js b/01_Code/physical_computing_interface/simulation/json/parallelVoxel.js new file mode 100644 index 0000000000000000000000000000000000000000..092fef5436bac7df4023f3aad1e44573e6eceb38 --- /dev/null +++ b/01_Code/physical_computing_interface/simulation/json/parallelVoxel.js @@ -0,0 +1,257 @@ +var setup={ + nodes: [ + { + id: 'n0', + parent: '11', + degrees_of_freedom:[0,1,2] , //todo automate + restrained_degrees_of_freedom:[true,true,true], + position: { x: 0, y: 0,z:0 }, + currPosition:new THREE.Vector3(0,0,0), + force:{ x: 0, y: 0,z:0 }, + displacement: { x: 0, y: 0,z:0 }, + angle: { x: 0, y: 0,z:0 }, + orient: new THREE.Quaternion(), + linMom:new THREE.Vector3(0,0,0), + angMom:new THREE.Vector3(0,0,0), + intForce:new THREE.Vector3(0,0,0), + intMoment:new THREE.Vector3(0,0,0), + moment:{ x: 0, y: 0,z:0 }, + }, + { + id: 'n1', + parent: '11', + degrees_of_freedom:[3,4,5] , + restrained_degrees_of_freedom:[false,false,false], + position: { x: -5, y: 7.5,z:-5 }, + currPosition:new THREE.Vector3(0,0,0), + force:{ x: 0, y: 0,z:0 }, + displacement: { x: 0, y: 0,z:0 }, + angle: { x: 0, y: 0,z:0 }, + orient: new THREE.Quaternion(), + linMom:new THREE.Vector3(0,0,0), + angMom:new THREE.Vector3(0,0,0), + intForce:new THREE.Vector3(0,0,0), + intMoment:new THREE.Vector3(0,0,0), + moment:{ x: 0, y: 0,z:0 }, + }, + { + id: 'n2', + parent: '11', + degrees_of_freedom:[6,7,8] , + restrained_degrees_of_freedom:[false,false,false], + position: { x: -5, y: 7.5,z:5 }, + currPosition:new THREE.Vector3(0,0,0), + force:{ x: 0, y: 0,z:0 }, + displacement: { x: 0, y: 0,z:0 }, + angle: { x: 0, y: 0,z:0 }, + orient: new THREE.Quaternion(), + linMom:new THREE.Vector3(0,0,0), + angMom:new THREE.Vector3(0,0,0), + intForce:new THREE.Vector3(0,0,0), + intMoment:new THREE.Vector3(0,0,0), + moment:{ x: 0, y: 0,z:0 }, + }, + { + id: 'n3', + parent: '11', + degrees_of_freedom:[9,10,11] , + restrained_degrees_of_freedom:[false,false,false], + position: { x: 5, y: 7.5,z:5 }, + currPosition:new THREE.Vector3(0,0,0), + force:{ x: 0, y: 0,z:0 }, + displacement: { x: 0, y: 0,z:0 }, + angle: { x: 0, y: 0,z:0 }, + orient: new THREE.Quaternion(), + linMom:new THREE.Vector3(0,0,0), + angMom:new THREE.Vector3(0,0,0), + intForce:new THREE.Vector3(0,0,0), + intMoment:new THREE.Vector3(0,0,0), + moment:{ x: 0, y: 0,z:0 }, + }, + { + id: 'n4', + parent: '11', + degrees_of_freedom:[12,13,14] , + restrained_degrees_of_freedom:[false,false,false], + position: { x: 5, y: 7.5,z: -5 }, + currPosition:new THREE.Vector3(0,0,0), + force:{ x: 0, y: 0,z:0 }, + displacement: { x: 0, y: 0,z:0 }, + angle: { x: 0, y: 0,z:0 }, + orient: new THREE.Quaternion(), + linMom:new THREE.Vector3(0,0,0), + angMom:new THREE.Vector3(0,0,0), + intForce:new THREE.Vector3(0,0,0), + intMoment:new THREE.Vector3(0,0,0), + moment:{ x: 0, y: 0,z:0 }, + }, + { + id: 'n5', + parent: '11', + degrees_of_freedom:[15,16,17] , + restrained_degrees_of_freedom:[false,false,false], + position: { x: 0, y: 15,z: 0 }, + currPosition:new THREE.Vector3(0,0,0), + force:{ x: 0, y: -1000,z:0 }, + displacement: { x: 0, y: 0,z:0 }, + angle: { x: 0, y: 0,z:0 }, + orient: new THREE.Quaternion(), + linMom:new THREE.Vector3(0,0,0), + angMom:new THREE.Vector3(0,0,0), + intForce:new THREE.Vector3(0,0,0), + intMoment:new THREE.Vector3(0,0,0), + moment:{ x: 0, y: 0,z:0 }, + } + ], + edges: [ + { id: 'e0', source: 0, target: 1 ,area:1.0,density:0.284,stiffness:30.0e6,stress:0 , + currentRestLength:0, + axis:Y_AXIS, + pos2: new THREE.Vector3(0,0,0), + angle1v: new THREE.Vector3(0,0,0), + angle2v: new THREE.Vector3(0,0,0), + angle1:new THREE.Quaternion(), + angle2:new THREE.Quaternion(), + currentTransverseArea:0, + currentTransverseStrainSum:0 + }, + { id: 'e1', source: 0, target: 2 ,area:1.0,density:0.284,stiffness:30.0e6,stress:0 + , + currentRestLength:0, + axis:Y_AXIS, + pos2: new THREE.Vector3(0,0,0), + angle1v: new THREE.Vector3(0,0,0), + angle2v: new THREE.Vector3(0,0,0), + angle1:new THREE.Quaternion(), + angle2:new THREE.Quaternion(), + currentTransverseArea:0, + currentTransverseStrainSum:0}, + { id: 'e2', source: 0, target: 3 ,area:1.0,density:0.284,stiffness:30.0e6,stress:0 + , + currentRestLength:0, + axis:Y_AXIS, + pos2: new THREE.Vector3(0,0,0), + angle1v: new THREE.Vector3(0,0,0), + angle2v: new THREE.Vector3(0,0,0), + angle1:new THREE.Quaternion(), + angle2:new THREE.Quaternion(), + currentTransverseArea:0, + currentTransverseStrainSum:0}, + { id: 'e3', source: 0, target: 4 ,area:1.0,density:0.284,stiffness:30.0e6,stress:0 , + currentRestLength:0, + axis:Y_AXIS, + pos2: new THREE.Vector3(0,0,0), + angle1v: new THREE.Vector3(0,0,0), + angle2v: new THREE.Vector3(0,0,0), + angle1:new THREE.Quaternion(), + angle2:new THREE.Quaternion(), + currentTransverseArea:0, + currentTransverseStrainSum:0}, + + { id: 'e4', source: 1, target: 2 ,area:1.0,density:0.284,stiffness:30.0e6,stress:0 , + currentRestLength:0, + axis:Y_AXIS, + pos2: new THREE.Vector3(0,0,0), + angle1v: new THREE.Vector3(0,0,0), + angle2v: new THREE.Vector3(0,0,0), + angle1:new THREE.Quaternion(), + angle2:new THREE.Quaternion(), + currentTransverseArea:0, + currentTransverseStrainSum:0 + }, + { id: 'e5', source: 2, target: 3 ,area:1.0,density:0.284,stiffness:30.0e6,stress:0 , + currentRestLength:0, + axis:Y_AXIS, + pos2: new THREE.Vector3(0,0,0), + angle1v: new THREE.Vector3(0,0,0), + angle2v: new THREE.Vector3(0,0,0), + angle1:new THREE.Quaternion(), + angle2:new THREE.Quaternion(), + currentTransverseArea:0, + currentTransverseStrainSum:0 + }, + { id: 'e6', source: 3, target: 4 ,area:1.0,density:0.284,stiffness:30.0e6,stress:0 , + currentRestLength:0, + axis:Y_AXIS, + pos2: new THREE.Vector3(0,0,0), + angle1v: new THREE.Vector3(0,0,0), + angle2v: new THREE.Vector3(0,0,0), + angle1:new THREE.Quaternion(), + angle2:new THREE.Quaternion(), + currentTransverseArea:0, + currentTransverseStrainSum:0}, + { id: 'e7', source: 4, target: 1 ,area:1.0,density:0.284,stiffness:30.0e6,stress:0 , + currentRestLength:0, + axis:Y_AXIS, + pos2: new THREE.Vector3(0,0,0), + angle1v: new THREE.Vector3(0,0,0), + angle2v: new THREE.Vector3(0,0,0), + angle1:new THREE.Quaternion(), + angle2:new THREE.Quaternion(), + currentTransverseArea:0, + currentTransverseStrainSum:0}, + + { id: 'e8', source: 5, target: 1 ,area:1.0,density:0.284,stiffness:30.0e6,stress:0 , + currentRestLength:0, + axis:Y_AXIS, + pos2: new THREE.Vector3(0,0,0), + angle1v: new THREE.Vector3(0,0,0), + angle2v: new THREE.Vector3(0,0,0), + angle1:new THREE.Quaternion(), + angle2:new THREE.Quaternion(), + currentTransverseArea:0, + currentTransverseStrainSum:0}, + { id: 'e9', source: 5, target: 2 ,area:1.0,density:0.284,stiffness:30.0e6,stress:0 , + currentRestLength:0, + axis:Y_AXIS, + pos2: new THREE.Vector3(0,0,0), + angle1v: new THREE.Vector3(0,0,0), + angle2v: new THREE.Vector3(0,0,0), + angle1:new THREE.Quaternion(), + angle2:new THREE.Quaternion(), + currentTransverseArea:0, + currentTransverseStrainSum:0}, + { id: 'e10', source: 5, target: 3 ,area:1.0,density:0.284,stiffness:30.0e6,stress:0 , + currentRestLength:0, + axis:Y_AXIS, + pos2: new THREE.Vector3(0,0,0), + angle1v: new THREE.Vector3(0,0,0), + angle2v: new THREE.Vector3(0,0,0), + angle1:new THREE.Quaternion(), + angle2:new THREE.Quaternion(), + currentTransverseArea:0, + currentTransverseStrainSum:0}, + { id: 'e11', source: 5, target: 4 ,area:1.0,density:0.284,stiffness:30.0e6,stress:0 , + currentRestLength:0, + axis:Y_AXIS, + pos2: new THREE.Vector3(0,0,0), + angle1v: new THREE.Vector3(0,0,0), + angle2v: new THREE.Vector3(0,0,0), + angle1:new THREE.Quaternion(), + angle2:new THREE.Quaternion(), + currentTransverseArea:0, + currentTransverseStrainSum:0}, + + ], + //material properties - AISI 1095 Carbon Steel (Spring Steel) + ndofs : 6*3, + + animation : { + + showDisplacement : true, + exageration : 100000, + speed:3.0 + + }, + viz : { + + + minStress:-500, + maxStress: 500, + colorMaps:[YlGnBu, winter, coolwarm,jet], + colorMap:0, + + }, + bar:true + +}; \ No newline at end of file diff --git a/01_Code/physical_computing_interface/simulation/json/setup1.json b/01_Code/physical_computing_interface/simulation/json/setup1.json new file mode 100644 index 0000000000000000000000000000000000000000..6e78148d837c22eeb5925b4bb95ded9484fc239d --- /dev/null +++ b/01_Code/physical_computing_interface/simulation/json/setup1.json @@ -0,0 +1,26062 @@ +{ + "setup": { + "nodes": [ + { + "id": "n0", + "parent": "11", + "degrees_of_freedom": [ + 0, + 1, + 2, + 3, + 4, + 5 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": 5, + "y": -5, + "z": 0 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n1", + "parent": "11", + "degrees_of_freedom": [ + 6, + 7, + 8, + 9, + 10, + 11 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": 0, + "y": -5, + "z": -5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n2", + "parent": "11", + "degrees_of_freedom": [ + 12, + 13, + 14, + 15, + 16, + 17 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": -5, + "y": -5, + "z": 0 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n3", + "parent": "11", + "degrees_of_freedom": [ + 18, + 19, + 20, + 21, + 22, + 23 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": 0, + "y": -5, + "z": 5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n4", + "parent": "11", + "degrees_of_freedom": [ + 24, + 25, + 26, + 27, + 28, + 29 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": 5, + "z": 0 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00002622864138933497, + "y": -0.00018152241119498953, + "z": -0.000036502713359746806 + }, + "angle": { + "x": -0.0000019768800606990103, + "y": -1.7481234021478985e-7, + "z": 6.762494668535576e-7 + } + }, + { + "id": "n5", + "parent": "11", + "degrees_of_freedom": [ + 30, + 31, + 32, + 33, + 34, + 35 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": 0, + "z": -5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.000010664913408883408, + "y": -0.00009241210451338415, + "z": -0.00004622535585178834 + }, + "angle": { + "x": -0.00000572369962540217, + "y": -5.219334338239175e-7, + "z": 0.0000021468004208940566 + } + }, + { + "id": "n6", + "parent": "11", + "degrees_of_freedom": [ + 36, + 37, + 38, + 39, + 40, + 41 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": 0, + "z": 5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.000010415579947638816, + "y": -0.00008226901165040695, + "z": -0.000007979642588036861 + }, + "angle": { + "x": -0.0000026790130975322866, + "y": -5.6446188054045654e-8, + "z": 0.0000018599825904017288 + } + }, + { + "id": "n7", + "parent": "11", + "degrees_of_freedom": [ + 42, + 43, + 44, + 45, + 46, + 47 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": 5, + "z": 0 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.000059445832525564164, + "y": -0.00019856789825485767, + "z": -0.00004647750477051891 + }, + "angle": { + "x": -0.0000027839207617081436, + "y": -3.601023288326688e-8, + "z": 0.000001021847627569177 + } + }, + { + "id": "n8", + "parent": "11", + "degrees_of_freedom": [ + 48, + 49, + 50, + 51, + 52, + 53 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 0, + "y": 5, + "z": -5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00005378207806999956, + "y": -0.00019661901533700712, + "z": -0.00004927630353978256 + }, + "angle": { + "x": -0.0000022646877012549364, + "y": -0.0000011598684419124896, + "z": 0.0000018845450876241937 + } + }, + { + "id": "n9", + "parent": "11", + "degrees_of_freedom": [ + 54, + 55, + 56, + 57, + 58, + 59 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 0, + "y": 5, + "z": 5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.000047625804339374116, + "y": -0.00018333641312291013, + "z": -0.00002152478119261483 + }, + "angle": { + "x": -0.0000013490505980199579, + "y": -4.998564457158674e-7, + "z": 0.0000013216244407872563 + } + }, + { + "id": "n10", + "parent": "11", + "degrees_of_freedom": [ + 60, + 61, + 62, + 63, + 64, + 65 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": 0, + "z": -5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00007540391387844241, + "y": -0.00012068520685074323, + "z": -0.00006276763116544908 + }, + "angle": { + "x": -0.000008300537310666148, + "y": -0.000003068623712275053, + "z": 0.00000555867424068448 + } + }, + { + "id": "n11", + "parent": "11", + "degrees_of_freedom": [ + 66, + 67, + 68, + 69, + 70, + 71 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": 0, + "z": 5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00006411140617328967, + "y": -0.00009601806195762757, + "z": -0.000009330397719579237 + }, + "angle": { + "x": -0.0000034075054153921752, + "y": 4.738116250052522e-7, + "z": 0.000003859545798817398 + } + }, + { + "id": "n12", + "parent": "11", + "degrees_of_freedom": [ + 72, + 73, + 74, + 75, + 76, + 77 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": 5, + "y": -5, + "z": 10 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n13", + "parent": "11", + "degrees_of_freedom": [ + 78, + 79, + 80, + 81, + 82, + 83 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": -5, + "y": -5, + "z": 10 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n14", + "parent": "11", + "degrees_of_freedom": [ + 84, + 85, + 86, + 87, + 88, + 89 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": 0, + "y": -5, + "z": 15 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n15", + "parent": "11", + "degrees_of_freedom": [ + 90, + 91, + 92, + 93, + 94, + 95 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": 5, + "z": 10 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.000024717429382643215, + "y": -0.00017522638850120853, + "z": -3.853412368911661e-19 + }, + "angle": { + "x": -8.287074949742442e-20, + "y": 1.1227513757904977e-20, + "z": 5.393933833152322e-7 + } + }, + { + "id": "n16", + "parent": "11", + "degrees_of_freedom": [ + 96, + 97, + 98, + 99, + 100, + 101 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": 0, + "z": 15 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.000010415579947638694, + "y": -0.0000822690116504067, + "z": 0.000007979642588036653 + }, + "angle": { + "x": 0.000002679013097532179, + "y": 5.644618805405049e-8, + "z": 0.0000018599825904017314 + } + }, + { + "id": "n17", + "parent": "11", + "degrees_of_freedom": [ + 102, + 103, + 104, + 105, + 106, + 107 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": 5, + "z": 10 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00005012652726496924, + "y": -0.0001861618734880066, + "z": -1.831029932104046e-19 + }, + "angle": { + "x": -9.443586347793757e-20, + "y": 6.266117161604259e-20, + "z": 0.0000011293467807969843 + } + }, + { + "id": "n18", + "parent": "11", + "degrees_of_freedom": [ + 108, + 109, + 110, + 111, + 112, + 113 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 0, + "y": 5, + "z": 15 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.000047625804339373906, + "y": -0.00018333641312290972, + "z": 0.000021524781192614132 + }, + "angle": { + "x": 0.0000013490505980198643, + "y": 4.998564457158943e-7, + "z": 0.0000013216244407872357 + } + }, + { + "id": "n19", + "parent": "11", + "degrees_of_freedom": [ + 114, + 115, + 116, + 117, + 118, + 119 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": 0, + "z": 15 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00006411140617328946, + "y": -0.00009601806195762729, + "z": 0.000009330397719579203 + }, + "angle": { + "x": 0.0000034075054153920927, + "y": -4.7381162500522084e-7, + "z": 0.000003859545798817379 + } + }, + { + "id": "n20", + "parent": "11", + "degrees_of_freedom": [ + 120, + 121, + 122, + 123, + 124, + 125 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": 5, + "y": -5, + "z": 20 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n21", + "parent": "11", + "degrees_of_freedom": [ + 126, + 127, + 128, + 129, + 130, + 131 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": -5, + "y": -5, + "z": 20 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n22", + "parent": "11", + "degrees_of_freedom": [ + 132, + 133, + 134, + 135, + 136, + 137 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": 0, + "y": -5, + "z": 25 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n23", + "parent": "11", + "degrees_of_freedom": [ + 138, + 139, + 140, + 141, + 142, + 143 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": 5, + "z": 20 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.000026228641389334866, + "y": -0.0001815224111949885, + "z": 0.00003650271335974602 + }, + "angle": { + "x": 0.0000019768800606988494, + "y": 1.7481234021478752e-7, + "z": 6.762494668535684e-7 + } + }, + { + "id": "n24", + "parent": "11", + "degrees_of_freedom": [ + 144, + 145, + 146, + 147, + 148, + 149 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": 0, + "z": 25 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.000010664913408883426, + "y": -0.00009241210451338346, + "z": 0.00004622535585178787 + }, + "angle": { + "x": 0.000005723699625402066, + "y": 5.219334338239073e-7, + "z": 0.000002146800420894044 + } + }, + { + "id": "n25", + "parent": "11", + "degrees_of_freedom": [ + 150, + 151, + 152, + 153, + 154, + 155 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": 5, + "z": 20 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.000059445832525563805, + "y": -0.00019856789825485624, + "z": 0.00004647750477051813 + }, + "angle": { + "x": 0.000002783920761707973, + "y": 3.601023288328971e-8, + "z": 0.0000010218476275691547 + } + }, + { + "id": "n26", + "parent": "11", + "degrees_of_freedom": [ + 156, + 157, + 158, + 159, + 160, + 161 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 0, + "y": 5, + "z": 25 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.000053782078069999177, + "y": -0.0001966190153370055, + "z": 0.000049276303539781696 + }, + "angle": { + "x": 0.000002264687701254841, + "y": 0.0000011598684419124939, + "z": 0.00000188454508762419 + } + }, + { + "id": "n27", + "parent": "11", + "degrees_of_freedom": [ + 162, + 163, + 164, + 165, + 166, + 167 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": 0, + "z": 25 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00007540391387844183, + "y": -0.0001206852068507422, + "z": 0.00006276763116544852 + }, + "angle": { + "x": 0.000008300537310666022, + "y": 0.0000030686237122750453, + "z": 0.000005558674240684432 + } + }, + { + "id": "n28", + "parent": "11", + "degrees_of_freedom": [ + 168, + 169, + 170, + 171, + 172, + 173 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": 15, + "z": 0 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00003160768617078865, + "y": -0.00038421021479772026, + "z": -0.000044650091188757176 + }, + "angle": { + "x": 2.9443272562560155e-7, + "y": -2.293998372558639e-7, + "z": -1.76532386124594e-7 + } + }, + { + "id": "n29", + "parent": "11", + "degrees_of_freedom": [ + 174, + 175, + 176, + 177, + 178, + 179 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": 10, + "z": -5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00003161301358759842, + "y": -0.0002855993148795416, + "z": -0.00007640073085744396 + }, + "angle": { + "x": -8.587648290117704e-7, + "y": -9.238629242562497e-7, + "z": 5.321007889075065e-7 + } + }, + { + "id": "n30", + "parent": "11", + "degrees_of_freedom": [ + 180, + 181, + 182, + 183, + 184, + 185 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": 10, + "z": 5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.000028408313026056454, + "y": -0.0002807120780898382, + "z": -0.000022341034517885825 + }, + "angle": { + "x": -4.7604157145661206e-7, + "y": -1.7159196943215916e-7, + "z": 4.3131274078675475e-7 + } + }, + { + "id": "n31", + "parent": "11", + "degrees_of_freedom": [ + 186, + 187, + 188, + 189, + 190, + 191 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": 15, + "z": 0 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00006892749860208825, + "y": -0.00038845819073154265, + "z": -0.00005534293558019206 + }, + "angle": { + "x": 4.019565988634059e-7, + "y": -9.221794983364167e-7, + "z": 1.961296444558978e-7 + } + }, + { + "id": "n32", + "parent": "11", + "degrees_of_freedom": [ + 192, + 193, + 194, + 195, + 196, + 197 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 0, + "y": 15, + "z": -5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00006345795733542635, + "y": -0.0003851431827692085, + "z": -0.00005786582165786531 + }, + "angle": { + "x": -1.4018277806238246e-7, + "y": -7.468865793878647e-7, + "z": 1.8763856807610548e-7 + } + }, + { + "id": "n33", + "parent": "11", + "degrees_of_freedom": [ + 198, + 199, + 200, + 201, + 202, + 203 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 0, + "y": 15, + "z": 5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.000058538084593703605, + "y": -0.00038732628647417344, + "z": -0.000025729529284394498 + }, + "angle": { + "x": 5.661066533530062e-7, + "y": -5.892213344640755e-7, + "z": 3.2380617736840813e-7 + } + }, + { + "id": "n34", + "parent": "11", + "degrees_of_freedom": [ + 204, + 205, + 206, + 207, + 208, + 209 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": 10, + "z": -5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00010762648421880148, + "y": -0.000296512796866764, + "z": -0.00009229247105260852 + }, + "angle": { + "x": -8.841255398076375e-7, + "y": -0.000002786193548639812, + "z": 6.741295688837753e-7 + } + }, + { + "id": "n35", + "parent": "11", + "degrees_of_freedom": [ + 210, + 211, + 212, + 213, + 214, + 215 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": 10, + "z": 5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00010109469337712761, + "y": -0.00028978280205341455, + "z": -0.000027935201630708098 + }, + "angle": { + "x": -6.063842950789149e-7, + "y": 4.619298488842624e-7, + "z": 6.658395649784975e-7 + } + }, + { + "id": "n36", + "parent": "11", + "degrees_of_freedom": [ + 216, + 217, + 218, + 219, + 220, + 221 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": 15, + "z": 10 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.000030317284714468223, + "y": -0.0003875285978614561, + "z": -1.194919092354525e-18 + }, + "angle": { + "x": -1.7828385889214382e-19, + "y": 2.075791753951441e-20, + "z": -1.4608835976100064e-7 + } + }, + { + "id": "n37", + "parent": "11", + "degrees_of_freedom": [ + 222, + 223, + 224, + 225, + 226, + 227 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": 10, + "z": 15 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.000028408313026056474, + "y": -0.0002807120780898376, + "z": 0.000022341034517884348 + }, + "angle": { + "x": 4.760415714563734e-7, + "y": 1.7159196943216774e-7, + "z": 4.3131274078675364e-7 + } + }, + { + "id": "n38", + "parent": "11", + "degrees_of_freedom": [ + 228, + 229, + 230, + 231, + 232, + 233 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": 15, + "z": 10 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00006012053274386848, + "y": -0.00039249739135155767, + "z": -1.0619821183202947e-18 + }, + "angle": { + "x": -2.083459690311549e-19, + "y": 7.513815153278436e-20, + "z": 2.4751216021238443e-7 + } + }, + { + "id": "n39", + "parent": "11", + "degrees_of_freedom": [ + 234, + 235, + 236, + 237, + 238, + 239 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 0, + "y": 15, + "z": 15 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.000058538084593703205, + "y": -0.0003873262864741718, + "z": 0.00002572952928439205 + }, + "angle": { + "x": -5.661066533531945e-7, + "y": 5.892213344641025e-7, + "z": 3.238061773684067e-7 + } + }, + { + "id": "n40", + "parent": "11", + "degrees_of_freedom": [ + 240, + 241, + 242, + 243, + 244, + 245 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": 10, + "z": 15 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00010109469337712688, + "y": -0.00028978280205341336, + "z": 0.000027935201630706898 + }, + "angle": { + "x": 6.063842950786683e-7, + "y": -4.6192984888421117e-7, + "z": 6.658395649785294e-7 + } + }, + { + "id": "n41", + "parent": "11", + "degrees_of_freedom": [ + 246, + 247, + 248, + 249, + 250, + 251 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": 15, + "z": 20 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00003160768617078852, + "y": -0.0003842102147977177, + "z": 0.00004465009118875448 + }, + "angle": { + "x": -2.9443272562591257e-7, + "y": 2.2939983725586816e-7, + "z": -1.765323861246122e-7 + } + }, + { + "id": "n42", + "parent": "11", + "degrees_of_freedom": [ + 252, + 253, + 254, + 255, + 256, + 257 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": 10, + "z": 25 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00003161301358759837, + "y": -0.00028559931487953904, + "z": 0.00007640073085744211 + }, + "angle": { + "x": 8.587648290115321e-7, + "y": 9.238629242562462e-7, + "z": 5.321007889074905e-7 + } + }, + { + "id": "n43", + "parent": "11", + "degrees_of_freedom": [ + 258, + 259, + 260, + 261, + 262, + 263 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": 15, + "z": 20 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00006892749860208768, + "y": -0.0003884581907315404, + "z": 0.0000553429355801896 + }, + "angle": { + "x": -4.0195659886368765e-7, + "y": 9.221794983364658e-7, + "z": 1.961296444559091e-7 + } + }, + { + "id": "n44", + "parent": "11", + "degrees_of_freedom": [ + 264, + 265, + 266, + 267, + 268, + 269 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 0, + "y": 15, + "z": 25 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00006345795733542579, + "y": -0.0003851431827692051, + "z": 0.00005786582165786268 + }, + "angle": { + "x": 1.401827780621872e-7, + "y": 7.468865793879056e-7, + "z": 1.8763856807612788e-7 + } + }, + { + "id": "n45", + "parent": "11", + "degrees_of_freedom": [ + 270, + 271, + 272, + 273, + 274, + 275 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": 10, + "z": 25 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00010762648421880038, + "y": -0.0002965127968667615, + "z": 0.00009229247105260663 + }, + "angle": { + "x": 8.841255398074132e-7, + "y": 0.000002786193548639784, + "z": 6.741295688836934e-7 + } + }, + { + "id": "n46", + "parent": "11", + "degrees_of_freedom": [ + 276, + 277, + 278, + 279, + 280, + 281 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": 25, + "z": 0 + }, + "force": { + "x": 0, + "y": -400, + "z": 0 + }, + "displacement": { + "x": -0.000026405098020731667, + "y": -0.0005931493327102243, + "z": -0.000027709128814633563 + }, + "angle": { + "x": 0.0000024673344647704618, + "y": -5.999429791782009e-7, + "z": 5.048200775847035e-7 + } + }, + { + "id": "n47", + "parent": "11", + "degrees_of_freedom": [ + 282, + 283, + 284, + 285, + 286, + 287 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": 20, + "z": -5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00002740240428211587, + "y": -0.0004820596370546303, + "z": -0.00007585217201456155 + }, + "angle": { + "x": 0.0000017227333381704394, + "y": -0.000001130804891854178, + "z": -2.2252296271655502e-7 + } + }, + { + "id": "n48", + "parent": "11", + "degrees_of_freedom": [ + 288, + 289, + 290, + 291, + 292, + 293 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": 20, + "z": 5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.000025535958326455337, + "y": -0.000490848017066856, + "z": -0.000017616299692986213 + }, + "angle": { + "x": 0.000001021940880091436, + "y": -1.6383332858675318e-7, + "z": -2.204093323274601e-7 + } + }, + { + "id": "n49", + "parent": "11", + "degrees_of_freedom": [ + 294, + 295, + 296, + 297, + 298, + 299 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": 25, + "z": 0 + }, + "force": { + "x": 0, + "y": -400, + "z": 0 + }, + "displacement": { + "x": -0.00005208971150769329, + "y": -0.0005903548977356445, + "z": -0.000037209253327273345 + }, + "angle": { + "x": 0.0000041435060670169986, + "y": -0.000002073939313508303, + "z": -0.000004549619498392542 + } + }, + { + "id": "n50", + "parent": "11", + "degrees_of_freedom": [ + 300, + 301, + 302, + 303, + 304, + 305 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 0, + "y": 25, + "z": -5 + }, + "force": { + "x": 0, + "y": -400, + "z": 0 + }, + "displacement": { + "x": -0.00005113513655497014, + "y": -0.0005794589123228938, + "z": -0.000030945392960982035 + }, + "angle": { + "x": 0.000011069653781772074, + "y": -6.028261131402947e-8, + "z": -9.422709454847621e-7 + } + }, + { + "id": "n51", + "parent": "11", + "degrees_of_freedom": [ + 306, + 307, + 308, + 309, + 310, + 311 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 0, + "y": 25, + "z": 5 + }, + "force": { + "x": 0, + "y": -400, + "z": 0 + }, + "displacement": { + "x": -0.000048105683213181485, + "y": -0.0005958373815721199, + "z": -0.000017253755035667718 + }, + "angle": { + "x": -3.656830818070209e-7, + "y": -3.05360456932557e-7, + "z": -8.754255138801362e-8 + } + }, + { + "id": "n52", + "parent": "11", + "degrees_of_freedom": [ + 312, + 313, + 314, + 315, + 316, + 317 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": 20, + "z": -5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.000108168090970198, + "y": -0.00047901916813383326, + "z": -0.00009177257356267015 + }, + "angle": { + "x": 0.0000023095703953609793, + "y": -0.0000032458917860641926, + "z": -7.731334344398806e-7 + } + }, + { + "id": "n53", + "parent": "11", + "degrees_of_freedom": [ + 318, + 319, + 320, + 321, + 322, + 323 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": 20, + "z": 5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.0001043177048887908, + "y": -0.0004915846699266274, + "z": -0.00002261287974413449 + }, + "angle": { + "x": 9.954939324093213e-7, + "y": 6.077758991967776e-7, + "z": -3.1246012986313475e-7 + } + }, + { + "id": "n54", + "parent": "11", + "degrees_of_freedom": [ + 324, + 325, + 326, + 327, + 328, + 329 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": 25, + "z": 10 + }, + "force": { + "x": 0, + "y": -400, + "z": 0 + }, + "displacement": { + "x": -0.00002543991581872975, + "y": -0.0005881537225982241, + "z": -2.7558674017484822e-18 + }, + "angle": { + "x": -3.699916165174321e-19, + "y": 1.6846287173131103e-20, + "z": 5.812481567599484e-7 + } + }, + { + "id": "n55", + "parent": "11", + "degrees_of_freedom": [ + 330, + 331, + 332, + 333, + 334, + 335 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": 20, + "z": 15 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00002553595832645503, + "y": -0.0004908480170668536, + "z": 0.000017616299692982523 + }, + "angle": { + "x": -0.000001021940880091788, + "y": 1.6383332858677586e-7, + "z": -2.2040933232744966e-7 + } + }, + { + "id": "n56", + "parent": "11", + "degrees_of_freedom": [ + 336, + 337, + 338, + 339, + 340, + 341 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": 25, + "z": 10 + }, + "force": { + "x": 0, + "y": -400, + "z": 0 + }, + "displacement": { + "x": -0.000043620878852821605, + "y": -0.0005877899587063024, + "z": -2.574081631139398e-18 + }, + "angle": { + "x": -3.243465598104418e-19, + "y": 3.0975083704044344e-20, + "z": -0.000004934135523425825 + } + }, + { + "id": "n57", + "parent": "11", + "degrees_of_freedom": [ + 342, + 343, + 344, + 345, + 346, + 347 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 0, + "y": 25, + "z": 15 + }, + "force": { + "x": 0, + "y": -400, + "z": 0 + }, + "displacement": { + "x": -0.000048105683213181235, + "y": -0.0005958373815721175, + "z": 0.00001725375503566255 + }, + "angle": { + "x": 3.6568308180673576e-7, + "y": 3.0536045693259046e-7, + "z": -8.754255138798024e-8 + } + }, + { + "id": "n58", + "parent": "11", + "degrees_of_freedom": [ + 348, + 349, + 350, + 351, + 352, + 353 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": 20, + "z": 15 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00010431770488879024, + "y": -0.0004915846699266254, + "z": 0.000022612879744131052 + }, + "angle": { + "x": -9.954939324096824e-7, + "y": -6.077758991967072e-7, + "z": -3.12460129863148e-7 + } + }, + { + "id": "n59", + "parent": "11", + "degrees_of_freedom": [ + 354, + 355, + 356, + 357, + 358, + 359 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": 25, + "z": 20 + }, + "force": { + "x": 0, + "y": -400, + "z": 0 + }, + "displacement": { + "x": -0.000026405098020731504, + "y": -0.0005931493327102205, + "z": 0.000027709128814628613 + }, + "angle": { + "x": -0.000002467334464770669, + "y": 5.999429791782108e-7, + "z": 5.048200775847721e-7 + } + }, + { + "id": "n60", + "parent": "11", + "degrees_of_freedom": [ + 360, + 361, + 362, + 363, + 364, + 365 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": 20, + "z": 25 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.000027402404282115712, + "y": -0.0004820596370546261, + "z": 0.00007585217201455743 + }, + "angle": { + "x": -0.0000017227333381706965, + "y": 0.0000011308048918541725, + "z": -2.2252296271656294e-7 + } + }, + { + "id": "n61", + "parent": "11", + "degrees_of_freedom": [ + 366, + 367, + 368, + 369, + 370, + 371 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": 25, + "z": 20 + }, + "force": { + "x": 0, + "y": -400, + "z": 0 + }, + "displacement": { + "x": -0.00005208971150769275, + "y": -0.0005903548977356411, + "z": 0.000037209253327268534 + }, + "angle": { + "x": -0.000004143506067017332, + "y": 0.0000020739393135083857, + "z": -0.0000045496194983924395 + } + }, + { + "id": "n62", + "parent": "11", + "degrees_of_freedom": [ + 372, + 373, + 374, + 375, + 376, + 377 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 0, + "y": 25, + "z": 25 + }, + "force": { + "x": 0, + "y": -400, + "z": 0 + }, + "displacement": { + "x": -0.000051135136554969566, + "y": -0.0005794589123228891, + "z": 0.000030945392960977095 + }, + "angle": { + "x": -0.000011069653781772267, + "y": 6.02826113140686e-8, + "z": -9.422709454847609e-7 + } + }, + { + "id": "n63", + "parent": "11", + "degrees_of_freedom": [ + 378, + 379, + 380, + 381, + 382, + 383 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": 20, + "z": 25 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00010816809097019691, + "y": -0.0004790191681338291, + "z": 0.0000917725735626664 + }, + "angle": { + "x": -0.0000023095703953612445, + "y": 0.0000032458917860642375, + "z": -7.731334344399108e-7 + } + }, + { + "id": "n64", + "parent": "11", + "degrees_of_freedom": [ + 384, + 385, + 386, + 387, + 388, + 389 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": 15, + "y": -5, + "z": 0 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n65", + "parent": "11", + "degrees_of_freedom": [ + 390, + 391, + 392, + 393, + 394, + 395 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": 10, + "y": -5, + "z": -5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n66", + "parent": "11", + "degrees_of_freedom": [ + 396, + 397, + 398, + 399, + 400, + 401 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": 10, + "y": -5, + "z": 5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n67", + "parent": "11", + "degrees_of_freedom": [ + 402, + 403, + 404, + 405, + 406, + 407 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": 5, + "z": 0 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.000026228641392648245, + "y": -0.00018152241119447863, + "z": -0.00003650271336470909 + }, + "angle": { + "x": -0.0000019768800599221883, + "y": 1.748123359346037e-7, + "z": -6.762494670897101e-7 + } + }, + { + "id": "n68", + "parent": "11", + "degrees_of_freedom": [ + 408, + 409, + 410, + 411, + 412, + 413 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": 0, + "z": -5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.000010664913418784987, + "y": -0.00009241210451487291, + "z": -0.000046225355854331 + }, + "angle": { + "x": -0.000005723699626264722, + "y": 5.21933433849803e-7, + "z": -0.000002146800421902141 + } + }, + { + "id": "n69", + "parent": "11", + "degrees_of_freedom": [ + 414, + 415, + 416, + 417, + 418, + 419 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": 0, + "z": 5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.000010415579939559989, + "y": -0.00008226901165096286, + "z": -0.00000797964258976351 + }, + "angle": { + "x": -0.0000026790130977719537, + "y": 5.644618780749575e-8, + "z": -0.0000018599825896138035 + } + }, + { + "id": "n70", + "parent": "11", + "degrees_of_freedom": [ + 420, + 421, + 422, + 423, + 424, + 425 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 10, + "y": 5, + "z": -5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 1.3865310070578829e-14, + "y": -0.00018193038371290828, + "z": -0.000039690145134755384 + }, + "angle": { + "x": -0.0000021862065854465846, + "y": 5.620235320330761e-16, + "z": -4.532483204300491e-16 + } + }, + { + "id": "n71", + "parent": "11", + "degrees_of_freedom": [ + 426, + 427, + 428, + 429, + 430, + 431 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 10, + "y": 5, + "z": 5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -9.146846399893487e-15, + "y": -0.0001745430109100038, + "z": -0.000018338419031203287 + }, + "angle": { + "x": -0.0000010183576346988434, + "y": 5.442796898523196e-16, + "z": 8.934549440530761e-17 + } + }, + { + "id": "n72", + "parent": "11", + "degrees_of_freedom": [ + 432, + 433, + 434, + 435, + 436, + 437 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": 15, + "y": -5, + "z": 10 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n73", + "parent": "11", + "degrees_of_freedom": [ + 438, + 439, + 440, + 441, + 442, + 443 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": 10, + "y": -5, + "z": 15 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n74", + "parent": "11", + "degrees_of_freedom": [ + 444, + 445, + 446, + 447, + 448, + 449 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": 5, + "z": 10 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.000024717429366741733, + "y": -0.0001752263885062386, + "z": -3.2445890372668854e-19 + }, + "angle": { + "x": -9.941394774839273e-20, + "y": -2.2050403508485116e-20, + "z": -5.393933824513366e-7 + } + }, + { + "id": "n75", + "parent": "11", + "degrees_of_freedom": [ + 450, + 451, + 452, + 453, + 454, + 455 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": 0, + "z": 15 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.000010415579939559846, + "y": -0.00008226901165096248, + "z": 0.000007979642589763355 + }, + "angle": { + "x": 0.0000026790130977718576, + "y": -5.644618780751206e-8, + "z": -0.0000018599825896137957 + } + }, + { + "id": "n76", + "parent": "11", + "degrees_of_freedom": [ + 456, + 457, + 458, + 459, + 460, + 461 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 10, + "y": 5, + "z": 15 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -9.146868016137978e-15, + "y": -0.00017454301091000284, + "z": 0.00001833841903120248 + }, + "angle": { + "x": 0.0000010183576346987417, + "y": -5.442910403146435e-16, + "z": 8.936909668004068e-17 + } + }, + { + "id": "n77", + "parent": "11", + "degrees_of_freedom": [ + 462, + 463, + 464, + 465, + 466, + 467 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": 15, + "y": -5, + "z": 20 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n78", + "parent": "11", + "degrees_of_freedom": [ + 468, + 469, + 470, + 471, + 472, + 473 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": 10, + "y": -5, + "z": 25 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n79", + "parent": "11", + "degrees_of_freedom": [ + 474, + 475, + 476, + 477, + 478, + 479 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": 5, + "z": 20 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.000026228641392647832, + "y": -0.00018152241119447752, + "z": 0.0000365027133647083 + }, + "angle": { + "x": 0.0000019768800599220465, + "y": -1.7481233593465926e-7, + "z": -6.762494670897014e-7 + } + }, + { + "id": "n80", + "parent": "11", + "degrees_of_freedom": [ + 480, + 481, + 482, + 483, + 484, + 485 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": 0, + "z": 25 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.000010664913418784801, + "y": -0.00009241210451487213, + "z": 0.000046225355854330546 + }, + "angle": { + "x": 0.0000057236996262646225, + "y": -5.219334338498097e-7, + "z": -0.0000021468004219020885 + } + }, + { + "id": "n81", + "parent": "11", + "degrees_of_freedom": [ + 486, + 487, + 488, + 489, + 490, + 491 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 10, + "y": 5, + "z": 25 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 1.3865045924245275e-14, + "y": -0.00018193038371290687, + "z": 0.00003969014513475457 + }, + "angle": { + "x": 0.0000021862065854464774, + "y": -5.620114981167697e-16, + "z": -4.532399343459023e-16 + } + }, + { + "id": "n82", + "parent": "11", + "degrees_of_freedom": [ + 492, + 493, + 494, + 495, + 496, + 497 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": 15, + "z": 0 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.000031607686171082855, + "y": -0.00038421021479061586, + "z": -0.00004465009118692885 + }, + "angle": { + "x": 2.9443273476968776e-7, + "y": 2.2939982418207863e-7, + "z": 1.7653238669694965e-7 + } + }, + { + "id": "n83", + "parent": "11", + "degrees_of_freedom": [ + 498, + 499, + 500, + 501, + 502, + 503 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": 10, + "z": -5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00003161301364191379, + "y": -0.00028559931485821837, + "z": -0.00007640073086263446 + }, + "angle": { + "x": -8.587648287860664e-7, + "y": 9.23862923146645e-7, + "z": -5.321007890563879e-7 + } + }, + { + "id": "n84", + "parent": "11", + "degrees_of_freedom": [ + 504, + 505, + 506, + 507, + 508, + 509 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": 10, + "z": 5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.000028408312982396557, + "y": -0.0002807120781040109, + "z": -0.00002234103452478317 + }, + "angle": { + "x": -4.760415708928076e-7, + "y": 1.715919684411197e-7, + "z": -4.313127391205318e-7 + } + }, + { + "id": "n85", + "parent": "11", + "degrees_of_freedom": [ + 510, + 511, + 512, + 513, + 514, + 515 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 10, + "y": 15, + "z": -5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 3.255016297830612e-14, + "y": -0.00038493872549210073, + "z": -0.00004733548982648204 + }, + "angle": { + "x": -1.0342566701619179e-7, + "y": -1.822989349504809e-16, + "z": 1.7984461454393334e-15 + } + }, + { + "id": "n86", + "parent": "11", + "degrees_of_freedom": [ + 516, + 517, + 518, + 519, + 520, + 521 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 10, + "y": 15, + "z": 5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -2.968816801827531e-14, + "y": -0.0003866369923737763, + "z": -0.00002228626119342783 + }, + "angle": { + "x": 5.165062652975513e-7, + "y": -5.708909286840247e-17, + "z": -1.0322239859218117e-15 + } + }, + { + "id": "n87", + "parent": "11", + "degrees_of_freedom": [ + 522, + 523, + 524, + 525, + 526, + 527 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": 15, + "z": 10 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.000030317284651357665, + "y": -0.00038752859789879254, + "z": -1.1435733884629091e-18 + }, + "angle": { + "x": -2.753096115154352e-19, + "y": -4.8710194128888875e-20, + "z": 1.4608835965311038e-7 + } + }, + { + "id": "n88", + "parent": "11", + "degrees_of_freedom": [ + 528, + 529, + 530, + 531, + 532, + 533 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": 10, + "z": 15 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.000028408312982396527, + "y": -0.00028071207810400966, + "z": 0.000022341034524781774 + }, + "angle": { + "x": 4.760415708925626e-7, + "y": -1.7159196844115568e-7, + "z": -4.3131273912051177e-7 + } + }, + { + "id": "n89", + "parent": "11", + "degrees_of_freedom": [ + 534, + 535, + 536, + 537, + 538, + 539 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 10, + "y": 15, + "z": 15 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -2.968829500940246e-14, + "y": -0.00038663699237377516, + "z": 0.00002228626119342523 + }, + "angle": { + "x": -5.165062652977329e-7, + "y": 5.707837635506336e-17, + "z": -1.0321844175584516e-15 + } + }, + { + "id": "n90", + "parent": "11", + "degrees_of_freedom": [ + 540, + 541, + 542, + 543, + 544, + 545 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": 15, + "z": 20 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00003160768617108225, + "y": -0.0003842102147906132, + "z": 0.00004465009118692614 + }, + "angle": { + "x": -2.9443273476985955e-7, + "y": -2.2939982418215052e-7, + "z": 1.765323866969835e-7 + } + }, + { + "id": "n91", + "parent": "11", + "degrees_of_freedom": [ + 546, + 547, + 548, + 549, + 550, + 551 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": 10, + "z": 25 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00003161301364191288, + "y": -0.00028559931485821593, + "z": 0.00007640073086263249 + }, + "angle": { + "x": 8.587648287858303e-7, + "y": -9.238629231466718e-7, + "z": -5.321007890563738e-7 + } + }, + { + "id": "n92", + "parent": "11", + "degrees_of_freedom": [ + 552, + 553, + 554, + 555, + 556, + 557 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 10, + "y": 15, + "z": 25 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 3.254977062589042e-14, + "y": -0.00038493872549209753, + "z": 0.000047335489826479304 + }, + "angle": { + "x": 1.0342566701600252e-7, + "y": 1.8228758147608519e-16, + "z": 1.7984315371793024e-15 + } + }, + { + "id": "n93", + "parent": "11", + "degrees_of_freedom": [ + 558, + 559, + 560, + 561, + 562, + 563 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": 25, + "z": 0 + }, + "force": { + "x": 0, + "y": -400, + "z": 0 + }, + "displacement": { + "x": 0.000026405097980038503, + "y": -0.0005931493326894829, + "z": -0.000027709128760260146 + }, + "angle": { + "x": 0.000002467334482367695, + "y": 5.999429541723965e-7, + "z": -5.048200770190845e-7 + } + }, + { + "id": "n94", + "parent": "11", + "degrees_of_freedom": [ + 564, + 565, + 566, + 567, + 568, + 569 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": 20, + "z": -5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.000027402404369942827, + "y": -0.00048205963697686255, + "z": -0.00007585217197516203 + }, + "angle": { + "x": 0.0000017227333487273865, + "y": 0.00000113080487749215, + "z": 2.225229670888826e-7 + } + }, + { + "id": "n95", + "parent": "11", + "degrees_of_freedom": [ + 570, + 571, + 572, + 573, + 574, + 575 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": 20, + "z": 5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.000025535958223377268, + "y": -0.0004908480171067353, + "z": -0.000017616299675157945 + }, + "angle": { + "x": 0.0000010219408852435415, + "y": 1.6383332147626562e-7, + "z": 2.2040933468033704e-7 + } + }, + { + "id": "n96", + "parent": "11", + "degrees_of_freedom": [ + 576, + 577, + 578, + 579, + 580, + 581 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 10, + "y": 25, + "z": -5 + }, + "force": { + "x": 0, + "y": -400, + "z": 0 + }, + "displacement": { + "x": 9.736456600040849e-15, + "y": -0.0005718424560634143, + "z": -0.000019931375832840092 + }, + "angle": { + "x": 0.00001178417105853316, + "y": -5.6878378315461154e-15, + "z": 6.739964749751976e-15 + } + }, + { + "id": "n97", + "parent": "11", + "degrees_of_freedom": [ + 582, + 583, + 584, + 585, + 586, + 587 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 10, + "y": 25, + "z": 5 + }, + "force": { + "x": 0, + "y": -400, + "z": 0 + }, + "displacement": { + "x": -4.99682200349907e-14, + "y": -0.0005850546833667759, + "z": -0.00001413602530237457 + }, + "angle": { + "x": -4.765969534013898e-7, + "y": -3.702941744809042e-15, + "z": -2.0247247534559328e-15 + } + }, + { + "id": "n98", + "parent": "11", + "degrees_of_freedom": [ + 588, + 589, + 590, + 591, + 592, + 593 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": 25, + "z": 10 + }, + "force": { + "x": 0, + "y": -400, + "z": 0 + }, + "displacement": { + "x": 0.000025439915684441715, + "y": -0.0005881537226239135, + "z": -2.724112538624098e-18 + }, + "angle": { + "x": -4.344174163810944e-19, + "y": -4.558322855001377e-20, + "z": -5.812481585711673e-7 + } + }, + { + "id": "n99", + "parent": "11", + "degrees_of_freedom": [ + 594, + 595, + 596, + 597, + 598, + 599 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": 20, + "z": 15 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00002553595822337649, + "y": -0.0004908480171067319, + "z": 0.000017616299675154285 + }, + "angle": { + "x": -0.0000010219408852438797, + "y": -1.6383332147630217e-7, + "z": 2.2040933468032222e-7 + } + }, + { + "id": "n100", + "parent": "11", + "degrees_of_freedom": [ + 600, + 601, + 602, + 603, + 604, + 605 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 10, + "y": 25, + "z": 15 + }, + "force": { + "x": 0, + "y": -400, + "z": 0 + }, + "displacement": { + "x": -4.996835990448244e-14, + "y": -0.000585054683366772, + "z": 0.000014136025302369293 + }, + "angle": { + "x": 4.765969534010602e-7, + "y": 3.702907304422507e-15, + "z": -2.024706765271598e-15 + } + }, + { + "id": "n101", + "parent": "11", + "degrees_of_freedom": [ + 606, + 607, + 608, + 609, + 610, + 611 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": 25, + "z": 20 + }, + "force": { + "x": 0, + "y": -400, + "z": 0 + }, + "displacement": { + "x": 0.000026405097980038164, + "y": -0.0005931493326894797, + "z": 0.000027709128760255542 + }, + "angle": { + "x": -0.000002467334482367723, + "y": -5.999429541724549e-7, + "z": -5.048200770191665e-7 + } + }, + { + "id": "n102", + "parent": "11", + "degrees_of_freedom": [ + 612, + 613, + 614, + 615, + 616, + 617 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": 20, + "z": 25 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00002740240436994185, + "y": -0.0004820596369768592, + "z": 0.0000758521719751583 + }, + "angle": { + "x": -0.0000017227333487276454, + "y": -0.0000011308048774922007, + "z": 2.225229670887843e-7 + } + }, + { + "id": "n103", + "parent": "11", + "degrees_of_freedom": [ + 618, + 619, + 620, + 621, + 622, + 623 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 10, + "y": 25, + "z": 25 + }, + "force": { + "x": 0, + "y": -400, + "z": 0 + }, + "displacement": { + "x": 9.7362380078371e-15, + "y": -0.0005718424560634094, + "z": 0.000019931375832835223 + }, + "angle": { + "x": -0.000011784171058533358, + "y": 5.687781308282235e-15, + "z": 6.739886503662898e-15 + } + }, + { + "id": "n104", + "parent": "11", + "degrees_of_freedom": [ + 624, + 625, + 626, + 627, + 628, + 629 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": 25, + "y": -5, + "z": 0 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n105", + "parent": "11", + "degrees_of_freedom": [ + 630, + 631, + 632, + 633, + 634, + 635 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": 20, + "y": -5, + "z": -5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n106", + "parent": "11", + "degrees_of_freedom": [ + 636, + 637, + 638, + 639, + 640, + 641 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": 20, + "y": -5, + "z": 5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n107", + "parent": "11", + "degrees_of_freedom": [ + 642, + 643, + 644, + 645, + 646, + 647 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 25, + "y": 5, + "z": 0 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00005944583252241687, + "y": -0.00019856789825608407, + "z": -0.000046477504784309474 + }, + "angle": { + "x": -0.0000027839207618292698, + "y": 3.601023199099333e-8, + "z": -0.0000010218476270654885 + } + }, + { + "id": "n108", + "parent": "11", + "degrees_of_freedom": [ + 648, + 649, + 650, + 651, + 652, + 653 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 25, + "y": 0, + "z": -5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00007540391388246572, + "y": -0.000120685206855352, + "z": -0.00006276763117223869 + }, + "angle": { + "x": -0.000008300537312807266, + "y": 0.000003068623712135185, + "z": -0.000005558674241558133 + } + }, + { + "id": "n109", + "parent": "11", + "degrees_of_freedom": [ + 654, + 655, + 656, + 657, + 658, + 659 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 25, + "y": 0, + "z": 5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00006411140616864552, + "y": -0.00009601806195606804, + "z": -0.000009330397723028237 + }, + "angle": { + "x": -0.0000034075054162034553, + "y": -4.7381162517355096e-7, + "z": -0.000003859545797888439 + } + }, + { + "id": "n110", + "parent": "11", + "degrees_of_freedom": [ + 660, + 661, + 662, + 663, + 664, + 665 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 20, + "y": 5, + "z": -5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00005378207808231139, + "y": -0.00019661901533295394, + "z": -0.000049276303548698676 + }, + "angle": { + "x": -0.00000226468770110246, + "y": 0.0000011598684429887083, + "z": -0.0000018845450883154209 + } + }, + { + "id": "n111", + "parent": "11", + "degrees_of_freedom": [ + 666, + 667, + 668, + 669, + 670, + 671 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 20, + "y": 5, + "z": 5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00004762580432586523, + "y": -0.0001833364131284662, + "z": -0.000021524781196956013 + }, + "angle": { + "x": -0.0000013490505991030951, + "y": 4.998564465831843e-7, + "z": -0.0000013216244404100134 + } + }, + { + "id": "n112", + "parent": "11", + "degrees_of_freedom": [ + 672, + 673, + 674, + 675, + 676, + 677 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": 25, + "y": -5, + "z": 10 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n113", + "parent": "11", + "degrees_of_freedom": [ + 678, + 679, + 680, + 681, + 682, + 683 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": 20, + "y": -5, + "z": 15 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n114", + "parent": "11", + "degrees_of_freedom": [ + 684, + 685, + 686, + 687, + 688, + 689 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 25, + "y": 5, + "z": 10 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00005012652725192152, + "y": -0.0001861618734919221, + "z": -4.846201756675599e-20 + }, + "angle": { + "x": -1.0007121751771408e-19, + "y": -8.889855267028227e-20, + "z": -0.0000011293467808656173 + } + }, + { + "id": "n115", + "parent": "11", + "degrees_of_freedom": [ + 690, + 691, + 692, + 693, + 694, + 695 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 25, + "y": 0, + "z": 15 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00006411140616864515, + "y": -0.0000960180619560677, + "z": 0.000009330397723028323 + }, + "angle": { + "x": 0.000003407505416203405, + "y": 4.738116251735091e-7, + "z": -0.0000038595457978884055 + } + }, + { + "id": "n116", + "parent": "11", + "degrees_of_freedom": [ + 696, + 697, + 698, + 699, + 700, + 701 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 20, + "y": 5, + "z": 15 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.000047625804325864815, + "y": -0.00018333641312846558, + "z": 0.000021524781196955532 + }, + "angle": { + "x": 0.0000013490505991030077, + "y": -4.998564465832304e-7, + "z": -0.0000013216244404100102 + } + }, + { + "id": "n117", + "parent": "11", + "degrees_of_freedom": [ + 702, + 703, + 704, + 705, + 706, + 707 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": 25, + "y": -5, + "z": 20 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n118", + "parent": "11", + "degrees_of_freedom": [ + 708, + 709, + 710, + 711, + 712, + 713 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": 20, + "y": -5, + "z": 25 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n119", + "parent": "11", + "degrees_of_freedom": [ + 714, + 715, + 716, + 717, + 718, + 719 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 25, + "y": 5, + "z": 20 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.000059445832522416156, + "y": -0.00019856789825608282, + "z": 0.00004647750478430896 + }, + "angle": { + "x": 0.0000027839207618291033, + "y": -3.601023199103048e-8, + "z": -0.000001021847627065472 + } + }, + { + "id": "n120", + "parent": "11", + "degrees_of_freedom": [ + 720, + 721, + 722, + 723, + 724, + 725 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 25, + "y": 0, + "z": 25 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.0000754039138824648, + "y": -0.00012068520685535087, + "z": 0.00006276763117223824 + }, + "angle": { + "x": 0.000008300537312807185, + "y": -0.0000030686237121352015, + "z": -0.000005558674241558062 + } + }, + { + "id": "n121", + "parent": "11", + "degrees_of_freedom": [ + 726, + 727, + 728, + 729, + 730, + 731 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 20, + "y": 5, + "z": 25 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.000053782078082310475, + "y": -0.00019661901533295196, + "z": 0.000049276303548697985 + }, + "angle": { + "x": 0.0000022646877011023464, + "y": -0.000001159868442988749, + "z": -0.0000018845450883153963 + } + }, + { + "id": "n122", + "parent": "11", + "degrees_of_freedom": [ + 732, + 733, + 734, + 735, + 736, + 737 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 25, + "y": 15, + "z": 0 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00006892749860133515, + "y": -0.0003884581907178515, + "z": -0.00005534293559208053 + }, + "angle": { + "x": 4.01956622566068e-7, + "y": 9.22179489610602e-7, + "z": -1.9612964409224827e-7 + } + }, + { + "id": "n123", + "parent": "11", + "degrees_of_freedom": [ + 738, + 739, + 740, + 741, + 742, + 743 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 25, + "y": 10, + "z": -5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00010762648422462989, + "y": -0.0002965127968419432, + "z": -0.00009229247107130932 + }, + "angle": { + "x": -8.841255409541756e-7, + "y": 0.000002786193550641583, + "z": -6.74129573548594e-7 + } + }, + { + "id": "n124", + "parent": "11", + "degrees_of_freedom": [ + 744, + 745, + 746, + 747, + 748, + 749 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 25, + "y": 10, + "z": 5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00010109469335822341, + "y": -0.00028978280207679234, + "z": -0.000027935201654142714 + }, + "angle": { + "x": -6.063842940180793e-7, + "y": -4.619298475960664e-7, + "z": -6.658395623725542e-7 + } + }, + { + "id": "n125", + "parent": "11", + "degrees_of_freedom": [ + 750, + 751, + 752, + 753, + 754, + 755 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 20, + "y": 15, + "z": -5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00006345795739038817, + "y": -0.00038514318266884366, + "z": -0.00005786582164591502 + }, + "angle": { + "x": -1.401827650309121e-7, + "y": 7.468865776852472e-7, + "z": -1.876385647964746e-7 + } + }, + { + "id": "n126", + "parent": "11", + "degrees_of_freedom": [ + 756, + 757, + 758, + 759, + 760, + 761 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 20, + "y": 15, + "z": 5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00005853808453893822, + "y": -0.00038732628653611695, + "z": -0.000025729529278811263 + }, + "angle": { + "x": 5.661066604269594e-7, + "y": 5.89221334037529e-7, + "z": -3.2380617969460883e-7 + } + }, + { + "id": "n127", + "parent": "11", + "degrees_of_freedom": [ + 762, + 763, + 764, + 765, + 766, + 767 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 25, + "y": 15, + "z": 10 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.000060120532705302504, + "y": -0.00039249739144821906, + "z": -8.791616395436295e-19 + }, + "angle": { + "x": -2.4222545859726697e-19, + "y": -1.0111675771986626e-19, + "z": -2.475121608794427e-7 + } + }, + { + "id": "n128", + "parent": "11", + "degrees_of_freedom": [ + 768, + 769, + 770, + 771, + 772, + 773 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 25, + "y": 10, + "z": 15 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00010109469335822235, + "y": -0.0002897828020767911, + "z": 0.000027935201654141837 + }, + "angle": { + "x": 6.063842940178336e-7, + "y": 4.619298475959887e-7, + "z": -6.658395623725646e-7 + } + }, + { + "id": "n129", + "parent": "11", + "degrees_of_freedom": [ + 774, + 775, + 776, + 777, + 778, + 779 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 20, + "y": 15, + "z": 15 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00005853808453893766, + "y": -0.00038732628653611435, + "z": 0.000025729529278809007 + }, + "angle": { + "x": -5.661066604271746e-7, + "y": -5.89221334037595e-7, + "z": -3.2380617969464e-7 + } + }, + { + "id": "n130", + "parent": "11", + "degrees_of_freedom": [ + 780, + 781, + 782, + 783, + 784, + 785 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 25, + "y": 15, + "z": 20 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00006892749860133422, + "y": -0.0003884581907178489, + "z": 0.00005534293559207841 + }, + "angle": { + "x": -4.019566225662346e-7, + "y": -9.221794896106594e-7, + "z": -1.9612964409229314e-7 + } + }, + { + "id": "n131", + "parent": "11", + "degrees_of_freedom": [ + 786, + 787, + 788, + 789, + 790, + 791 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 25, + "y": 10, + "z": 25 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00010762648422462862, + "y": -0.00029651279684194065, + "z": 0.00009229247107130778 + }, + "angle": { + "x": 8.841255409539619e-7, + "y": -0.000002786193550641577, + "z": -6.741295735485422e-7 + } + }, + { + "id": "n132", + "parent": "11", + "degrees_of_freedom": [ + 792, + 793, + 794, + 795, + 796, + 797 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 20, + "y": 15, + "z": 25 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00006345795739038705, + "y": -0.00038514318266884105, + "z": 0.00005786582164591272 + }, + "angle": { + "x": 1.401827650308591e-7, + "y": -7.468865776853203e-7, + "z": -1.8763856479649913e-7 + } + }, + { + "id": "n133", + "parent": "11", + "degrees_of_freedom": [ + 798, + 799, + 800, + 801, + 802, + 803 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 25, + "y": 25, + "z": 0 + }, + "force": { + "x": 0, + "y": -400, + "z": 0 + }, + "displacement": { + "x": 0.000052089711519681175, + "y": -0.000590354897685957, + "z": -0.00003720925289857247 + }, + "angle": { + "x": 0.000004143506526762335, + "y": 0.0000020739390559793468, + "z": 0.0000045496194979031535 + } + }, + { + "id": "n134", + "parent": "11", + "degrees_of_freedom": [ + 804, + 805, + 806, + 807, + 808, + 809 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 25, + "y": 20, + "z": -5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00010816809105545167, + "y": -0.0004790191679042, + "z": -0.00009177257352139102 + }, + "angle": { + "x": 0.0000023095703916438083, + "y": 0.0000032458918109570895, + "z": 7.731334165728316e-7 + } + }, + { + "id": "n135", + "parent": "11", + "degrees_of_freedom": [ + 810, + 811, + 812, + 813, + 814, + 815 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 25, + "y": 20, + "z": 5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.0001043177047858302, + "y": -0.0004915846700814171, + "z": -0.000022612879740108442 + }, + "angle": { + "x": 9.954939256819974e-7, + "y": -6.077758800670688e-7, + "z": 3.1246014300343336e-7 + } + }, + { + "id": "n136", + "parent": "11", + "degrees_of_freedom": [ + 816, + 817, + 818, + 819, + 820, + 821 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 20, + "y": 25, + "z": -5 + }, + "force": { + "x": 0, + "y": -400, + "z": 0 + }, + "displacement": { + "x": 0.00005113513665098508, + "y": -0.0005794589120844551, + "z": -0.000030945392819969935 + }, + "angle": { + "x": 0.000011069653774592236, + "y": 6.028261060566622e-8, + "z": 9.42270980866201e-7 + } + }, + { + "id": "n137", + "parent": "11", + "degrees_of_freedom": [ + 822, + 823, + 824, + 825, + 826, + 827 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 20, + "y": 25, + "z": 5 + }, + "force": { + "x": 0, + "y": -400, + "z": 0 + }, + "displacement": { + "x": 0.00004810568308869591, + "y": -0.0005958373817388597, + "z": -0.00001725375497258348 + }, + "angle": { + "x": -3.6568309644701887e-7, + "y": 3.0536045753396326e-7, + "z": 8.754252705793524e-8 + } + }, + { + "id": "n138", + "parent": "11", + "degrees_of_freedom": [ + 828, + 829, + 830, + 831, + 832, + 833 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 25, + "y": 25, + "z": 10 + }, + "force": { + "x": 0, + "y": -400, + "z": 0 + }, + "displacement": { + "x": 0.000043620878762194955, + "y": -0.0005877899588706887, + "z": -2.330120749063402e-18 + }, + "angle": { + "x": -2.8681405724903353e-19, + "y": 2.4448007945963985e-21, + "z": 0.000004934135526035945 + } + }, + { + "id": "n139", + "parent": "11", + "degrees_of_freedom": [ + 834, + 835, + 836, + 837, + 838, + 839 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 25, + "y": 20, + "z": 15 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00010431770478582986, + "y": -0.0004915846700814151, + "z": 0.00002261287974010536 + }, + "angle": { + "x": -9.954939256823351e-7, + "y": 6.077758800670022e-7, + "z": 3.1246014300336475e-7 + } + }, + { + "id": "n140", + "parent": "11", + "degrees_of_freedom": [ + 840, + 841, + 842, + 843, + 844, + 845 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 20, + "y": 25, + "z": 15 + }, + "force": { + "x": 0, + "y": -400, + "z": 0 + }, + "displacement": { + "x": 0.00004810568308869575, + "y": -0.0005958373817388572, + "z": 0.000017253754972578756 + }, + "angle": { + "x": 3.65683096446793e-7, + "y": -3.0536045753406554e-7, + "z": 8.754252705783169e-8 + } + }, + { + "id": "n141", + "parent": "11", + "degrees_of_freedom": [ + 846, + 847, + 848, + 849, + 850, + 851 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 25, + "y": 25, + "z": 20 + }, + "force": { + "x": 0, + "y": -400, + "z": 0 + }, + "displacement": { + "x": 0.00005208971151968049, + "y": -0.0005903548976859546, + "z": 0.00003720925289856861 + }, + "angle": { + "x": -0.00000414350652676247, + "y": -0.0000020739390559795183, + "z": 0.000004549619497903155 + } + }, + { + "id": "n142", + "parent": "11", + "degrees_of_freedom": [ + 852, + 853, + 854, + 855, + 856, + 857 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 25, + "y": 20, + "z": 25 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00010816809105545065, + "y": -0.0004790191679041972, + "z": 0.00009177257352138808 + }, + "angle": { + "x": -0.0000023095703916440637, + "y": -0.0000032458918109571323, + "z": 7.731334165728396e-7 + } + }, + { + "id": "n143", + "parent": "11", + "degrees_of_freedom": [ + 858, + 859, + 860, + 861, + 862, + 863 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 20, + "y": 25, + "z": 25 + }, + "force": { + "x": 0, + "y": -400, + "z": 0 + }, + "displacement": { + "x": 0.000051135136650984146, + "y": -0.0005794589120844523, + "z": 0.000030945392819965666 + }, + "angle": { + "x": -0.000011069653774592379, + "y": -6.028261060579193e-8, + "z": 9.422709808661569e-7 + } + } + ], + "edges": [ + { + "id": "e0", + "source": 0, + "target": 1, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": 0 + }, + { + "id": "e1", + "source": 1, + "target": 2, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": 0 + }, + { + "id": "e2", + "source": 2, + "target": 3, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": 0 + }, + { + "id": "e3", + "source": 3, + "target": 0, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": 0 + }, + { + "id": "e4", + "source": 4, + "target": 5, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -238.1629638671875 + }, + { + "id": "e5", + "source": 5, + "target": 0, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -138.56024169921875 + }, + { + "id": "e6", + "source": 0, + "target": 6, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -270.7459716796875 + }, + { + "id": "e7", + "source": 6, + "target": 4, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -212.19097900390625 + }, + { + "id": "e8", + "source": 7, + "target": 8, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": 25.38766098022461 + }, + { + "id": "e9", + "source": 8, + "target": 4, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": 120.9810791015625 + }, + { + "id": "e10", + "source": 4, + "target": 9, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": 109.12527465820312 + }, + { + "id": "e11", + "source": 9, + "target": 7, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": 110.31824493408203 + }, + { + "id": "e12", + "source": 2, + "target": 10, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -173.75271606445312 + }, + { + "id": "e13", + "source": 10, + "target": 7, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -184.7776641845703 + }, + { + "id": "e14", + "source": 7, + "target": 11, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -196.20819091796875 + }, + { + "id": "e15", + "source": 11, + "target": 2, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -316.04534912109375 + }, + { + "id": "e16", + "source": 8, + "target": 10, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -162.93592834472656 + }, + { + "id": "e17", + "source": 10, + "target": 1, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -135.84388732910156 + }, + { + "id": "e18", + "source": 1, + "target": 5, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -309.23101806640625 + }, + { + "id": "e19", + "source": 5, + "target": 8, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -183.26922607421875 + }, + { + "id": "e20", + "source": 6, + "target": 3, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -278.05377197265625 + }, + { + "id": "e21", + "source": 3, + "target": 11, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -95.71995544433594 + }, + { + "id": "e22", + "source": 11, + "target": 9, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -212.49818420410156 + }, + { + "id": "e23", + "source": 9, + "target": 6, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -191.57150268554688 + }, + { + "id": "e24", + "source": 12, + "target": 3, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": 0 + }, + { + "id": "e25", + "source": 3, + "target": 13, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": 0 + }, + { + "id": "e26", + "source": 13, + "target": 14, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": 0 + }, + { + "id": "e27", + "source": 14, + "target": 12, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": 0 + }, + { + "id": "e28", + "source": 15, + "target": 6, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -254.9331817626953 + }, + { + "id": "e29", + "source": 6, + "target": 12, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -222.86810302734375 + }, + { + "id": "e30", + "source": 12, + "target": 16, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -222.86810302734375 + }, + { + "id": "e31", + "source": 16, + "target": 15, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -254.9331817626953 + }, + { + "id": "e32", + "source": 17, + "target": 9, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": 72.0765151977539 + }, + { + "id": "e33", + "source": 9, + "target": 15, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": 133.29946899414062 + }, + { + "id": "e34", + "source": 15, + "target": 18, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": 133.29946899414062 + }, + { + "id": "e35", + "source": 18, + "target": 17, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": 72.0765151977539 + }, + { + "id": "e36", + "source": 13, + "target": 11, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -260.06298828125 + }, + { + "id": "e37", + "source": 11, + "target": 17, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -242.44024658203125 + }, + { + "id": "e38", + "source": 17, + "target": 19, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -242.44024658203125 + }, + { + "id": "e39", + "source": 19, + "target": 13, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -260.06298828125 + }, + { + "id": "e40", + "source": 16, + "target": 14, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -278.05377197265625 + }, + { + "id": "e41", + "source": 14, + "target": 19, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -95.71995544433594 + }, + { + "id": "e42", + "source": 19, + "target": 18, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -212.49818420410156 + }, + { + "id": "e43", + "source": 18, + "target": 16, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -191.57150268554688 + }, + { + "id": "e44", + "source": 20, + "target": 14, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": 0 + }, + { + "id": "e45", + "source": 14, + "target": 21, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": 0 + }, + { + "id": "e46", + "source": 21, + "target": 22, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": 0 + }, + { + "id": "e47", + "source": 22, + "target": 20, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": 0 + }, + { + "id": "e48", + "source": 23, + "target": 16, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -212.19097900390625 + }, + { + "id": "e49", + "source": 16, + "target": 20, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -270.7459716796875 + }, + { + "id": "e50", + "source": 20, + "target": 24, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -138.56024169921875 + }, + { + "id": "e51", + "source": 24, + "target": 23, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -238.1629638671875 + }, + { + "id": "e52", + "source": 25, + "target": 18, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": 110.31824493408203 + }, + { + "id": "e53", + "source": 18, + "target": 23, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": 109.12527465820312 + }, + { + "id": "e54", + "source": 23, + "target": 26, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": 120.9810791015625 + }, + { + "id": "e55", + "source": 26, + "target": 25, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": 25.38766098022461 + }, + { + "id": "e56", + "source": 21, + "target": 19, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -316.04534912109375 + }, + { + "id": "e57", + "source": 19, + "target": 25, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -196.20819091796875 + }, + { + "id": "e58", + "source": 25, + "target": 27, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -184.7776641845703 + }, + { + "id": "e59", + "source": 27, + "target": 21, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -173.75271606445312 + }, + { + "id": "e60", + "source": 24, + "target": 22, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -309.23101806640625 + }, + { + "id": "e61", + "source": 22, + "target": 27, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -135.84388732910156 + }, + { + "id": "e62", + "source": 27, + "target": 26, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -162.93592834472656 + }, + { + "id": "e63", + "source": 26, + "target": 24, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -183.26922607421875 + }, + { + "id": "e64", + "source": 28, + "target": 29, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -200.58062744140625 + }, + { + "id": "e65", + "source": 29, + "target": 4, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -192.53672790527344 + }, + { + "id": "e66", + "source": 4, + "target": 30, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -255.08404541015625 + }, + { + "id": "e67", + "source": 30, + "target": 28, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -243.56716918945312 + }, + { + "id": "e68", + "source": 31, + "target": 32, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": 23.977283477783203 + }, + { + "id": "e69", + "source": 32, + "target": 28, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": 135.19801330566406 + }, + { + "id": "e70", + "source": 28, + "target": 33, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": 137.55287170410156 + }, + { + "id": "e71", + "source": 33, + "target": 31, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": 120.0084457397461 + }, + { + "id": "e72", + "source": 7, + "target": 34, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -156.3897705078125 + }, + { + "id": "e73", + "source": 34, + "target": 31, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -164.9876251220703 + }, + { + "id": "e74", + "source": 31, + "target": 35, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -213.80300903320312 + }, + { + "id": "e75", + "source": 35, + "target": 7, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -218.01776123046875 + }, + { + "id": "e76", + "source": 32, + "target": 34, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -133.38563537597656 + }, + { + "id": "e77", + "source": 34, + "target": 8, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -138.1481170654297 + }, + { + "id": "e78", + "source": 8, + "target": 29, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -200.43370056152344 + }, + { + "id": "e79", + "source": 29, + "target": 32, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -203.09674072265625 + }, + { + "id": "e80", + "source": 30, + "target": 9, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -234.47459411621094 + }, + { + "id": "e81", + "source": 9, + "target": 35, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -158.93252563476562 + }, + { + "id": "e82", + "source": 35, + "target": 33, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -164.96058654785156 + }, + { + "id": "e83", + "source": 33, + "target": 30, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -229.4532928466797 + }, + { + "id": "e84", + "source": 36, + "target": 30, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -253.42637634277344 + }, + { + "id": "e85", + "source": 30, + "target": 15, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -249.43397521972656 + }, + { + "id": "e86", + "source": 15, + "target": 37, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -249.43397521972656 + }, + { + "id": "e87", + "source": 37, + "target": 36, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -253.42637634277344 + }, + { + "id": "e88", + "source": 38, + "target": 33, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": 81.93592834472656 + }, + { + "id": "e89", + "source": 33, + "target": 36, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": 161.85098266601562 + }, + { + "id": "e90", + "source": 36, + "target": 39, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": 161.85098266601562 + }, + { + "id": "e91", + "source": 39, + "target": 38, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": 81.93592834472656 + }, + { + "id": "e92", + "source": 17, + "target": 35, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -227.05714416503906 + }, + { + "id": "e93", + "source": 35, + "target": 38, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -224.3381805419922 + }, + { + "id": "e94", + "source": 38, + "target": 40, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -224.3381805419922 + }, + { + "id": "e95", + "source": 40, + "target": 17, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -227.05714416503906 + }, + { + "id": "e96", + "source": 37, + "target": 18, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -234.47459411621094 + }, + { + "id": "e97", + "source": 18, + "target": 40, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -158.93252563476562 + }, + { + "id": "e98", + "source": 40, + "target": 39, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -164.96058654785156 + }, + { + "id": "e99", + "source": 39, + "target": 37, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -229.4532928466797 + }, + { + "id": "e100", + "source": 41, + "target": 37, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -243.56716918945312 + }, + { + "id": "e101", + "source": 37, + "target": 23, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -255.08404541015625 + }, + { + "id": "e102", + "source": 23, + "target": 42, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -192.53672790527344 + }, + { + "id": "e103", + "source": 42, + "target": 41, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -200.58062744140625 + }, + { + "id": "e104", + "source": 43, + "target": 39, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": 120.0084457397461 + }, + { + "id": "e105", + "source": 39, + "target": 41, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": 137.55287170410156 + }, + { + "id": "e106", + "source": 41, + "target": 44, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": 135.19801330566406 + }, + { + "id": "e107", + "source": 44, + "target": 43, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": 23.977283477783203 + }, + { + "id": "e108", + "source": 25, + "target": 40, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -218.01776123046875 + }, + { + "id": "e109", + "source": 40, + "target": 43, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -213.80300903320312 + }, + { + "id": "e110", + "source": 43, + "target": 45, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -164.9876251220703 + }, + { + "id": "e111", + "source": 45, + "target": 25, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -156.3897705078125 + }, + { + "id": "e112", + "source": 42, + "target": 26, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -200.43370056152344 + }, + { + "id": "e113", + "source": 26, + "target": 45, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -138.1481170654297 + }, + { + "id": "e114", + "source": 45, + "target": 44, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -133.38563537597656 + }, + { + "id": "e115", + "source": 44, + "target": 42, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -203.09674072265625 + }, + { + "id": "e116", + "source": 46, + "target": 47, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -188.84005737304688 + }, + { + "id": "e117", + "source": 47, + "target": 28, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -199.94207763671875 + }, + { + "id": "e118", + "source": 28, + "target": 48, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -238.81210327148438 + }, + { + "id": "e119", + "source": 48, + "target": 46, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -276.6253662109375 + }, + { + "id": "e120", + "source": 49, + "target": 50, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -15.927849769592285 + }, + { + "id": "e121", + "source": 50, + "target": 46, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": 83.89891052246094 + }, + { + "id": "e122", + "source": 46, + "target": 51, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": 96.46788787841797 + }, + { + "id": "e123", + "source": 51, + "target": 49, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": 71.81858825683594 + }, + { + "id": "e124", + "source": 31, + "target": 52, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -162.39405822753906 + }, + { + "id": "e125", + "source": 52, + "target": 49, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -170.31727600097656 + }, + { + "id": "e126", + "source": 49, + "target": 53, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -252.52163696289062 + }, + { + "id": "e127", + "source": 53, + "target": 31, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -211.18917846679688 + }, + { + "id": "e128", + "source": 50, + "target": 52, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -130.22030639648438 + }, + { + "id": "e129", + "source": 52, + "target": 32, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -147.49752807617188 + }, + { + "id": "e130", + "source": 32, + "target": 47, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -182.58273315429688 + }, + { + "id": "e131", + "source": 47, + "target": 50, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -220.99954223632812 + }, + { + "id": "e132", + "source": 48, + "target": 33, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -211.55886840820312 + }, + { + "id": "e133", + "source": 33, + "target": 53, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -175.43618774414062 + }, + { + "id": "e134", + "source": 53, + "target": 51, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -144.12208557128906 + }, + { + "id": "e135", + "source": 51, + "target": 48, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -247.25880432128906 + }, + { + "id": "e136", + "source": 54, + "target": 48, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -239.0681915283203 + }, + { + "id": "e137", + "source": 48, + "target": 36, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -257.10943603515625 + }, + { + "id": "e138", + "source": 36, + "target": 55, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -257.10943603515625 + }, + { + "id": "e139", + "source": 55, + "target": 54, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -239.0681915283203 + }, + { + "id": "e140", + "source": 56, + "target": 51, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": 38.30683898925781 + }, + { + "id": "e141", + "source": 51, + "target": 54, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": 119.75855255126953 + }, + { + "id": "e142", + "source": 54, + "target": 57, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": 119.75855255126953 + }, + { + "id": "e143", + "source": 57, + "target": 56, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": 38.30683898925781 + }, + { + "id": "e144", + "source": 38, + "target": 53, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -229.4231719970703 + }, + { + "id": "e145", + "source": 53, + "target": 56, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -220.7774200439453 + }, + { + "id": "e146", + "source": 56, + "target": 58, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -220.7774200439453 + }, + { + "id": "e147", + "source": 58, + "target": 38, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -229.4231719970703 + }, + { + "id": "e148", + "source": 55, + "target": 39, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -211.55886840820312 + }, + { + "id": "e149", + "source": 39, + "target": 58, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -175.43618774414062 + }, + { + "id": "e150", + "source": 58, + "target": 57, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -144.12208557128906 + }, + { + "id": "e151", + "source": 57, + "target": 55, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -247.25880432128906 + }, + { + "id": "e152", + "source": 59, + "target": 55, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -276.6253662109375 + }, + { + "id": "e153", + "source": 55, + "target": 41, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -238.81210327148438 + }, + { + "id": "e154", + "source": 41, + "target": 60, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -199.94207763671875 + }, + { + "id": "e155", + "source": 60, + "target": 59, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -188.84005737304688 + }, + { + "id": "e156", + "source": 61, + "target": 57, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": 71.81858825683594 + }, + { + "id": "e157", + "source": 57, + "target": 59, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": 96.46788787841797 + }, + { + "id": "e158", + "source": 59, + "target": 62, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": 83.89891052246094 + }, + { + "id": "e159", + "source": 62, + "target": 61, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -15.927849769592285 + }, + { + "id": "e160", + "source": 43, + "target": 58, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -211.18917846679688 + }, + { + "id": "e161", + "source": 58, + "target": 61, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -252.52163696289062 + }, + { + "id": "e162", + "source": 61, + "target": 63, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -170.31727600097656 + }, + { + "id": "e163", + "source": 63, + "target": 43, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -162.39405822753906 + }, + { + "id": "e164", + "source": 60, + "target": 44, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -182.58273315429688 + }, + { + "id": "e165", + "source": 44, + "target": 63, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -147.49752807617188 + }, + { + "id": "e166", + "source": 63, + "target": 62, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -130.22030639648438 + }, + { + "id": "e167", + "source": 62, + "target": 60, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -220.99954223632812 + }, + { + "id": "e168", + "source": 64, + "target": 65, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": 0 + }, + { + "id": "e169", + "source": 65, + "target": 0, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": 0 + }, + { + "id": "e170", + "source": 0, + "target": 66, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": 0 + }, + { + "id": "e171", + "source": 66, + "target": 64, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": 0 + }, + { + "id": "e172", + "source": 67, + "target": 68, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -238.1629638671875 + }, + { + "id": "e173", + "source": 68, + "target": 64, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -138.56024169921875 + }, + { + "id": "e174", + "source": 64, + "target": 69, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -270.7459716796875 + }, + { + "id": "e175", + "source": 69, + "target": 67, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -212.19097900390625 + }, + { + "id": "e176", + "source": 4, + "target": 70, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": 88.24822235107422 + }, + { + "id": "e177", + "source": 70, + "target": 67, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": 88.24822235107422 + }, + { + "id": "e178", + "source": 67, + "target": 71, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": 133.17880249023438 + }, + { + "id": "e179", + "source": 71, + "target": 4, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": 133.17880249023438 + }, + { + "id": "e180", + "source": 70, + "target": 5, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -236.56015014648438 + }, + { + "id": "e181", + "source": 5, + "target": 65, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -245.2415771484375 + }, + { + "id": "e182", + "source": 65, + "target": 68, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -245.2415771484375 + }, + { + "id": "e183", + "source": 68, + "target": 70, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -236.56015014648438 + }, + { + "id": "e184", + "source": 69, + "target": 66, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -215.560302734375 + }, + { + "id": "e185", + "source": 66, + "target": 6, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -215.560302734375 + }, + { + "id": "e186", + "source": 6, + "target": 71, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -245.57522583007812 + }, + { + "id": "e187", + "source": 71, + "target": 69, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -245.57522583007812 + }, + { + "id": "e188", + "source": 72, + "target": 66, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": 0 + }, + { + "id": "e189", + "source": 66, + "target": 12, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": 0 + }, + { + "id": "e190", + "source": 12, + "target": 73, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": 0 + }, + { + "id": "e191", + "source": 73, + "target": 72, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": 0 + }, + { + "id": "e192", + "source": 74, + "target": 69, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -254.9331817626953 + }, + { + "id": "e193", + "source": 69, + "target": 72, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -222.86810302734375 + }, + { + "id": "e194", + "source": 72, + "target": 75, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -222.86810302734375 + }, + { + "id": "e195", + "source": 75, + "target": 74, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -254.9331817626953 + }, + { + "id": "e196", + "source": 15, + "target": 71, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": 129.16754150390625 + }, + { + "id": "e197", + "source": 71, + "target": 74, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": 129.16754150390625 + }, + { + "id": "e198", + "source": 74, + "target": 76, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": 129.16754150390625 + }, + { + "id": "e199", + "source": 76, + "target": 15, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": 129.16754150390625 + }, + { + "id": "e200", + "source": 75, + "target": 73, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -215.560302734375 + }, + { + "id": "e201", + "source": 73, + "target": 16, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -215.560302734375 + }, + { + "id": "e202", + "source": 16, + "target": 76, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -245.57522583007812 + }, + { + "id": "e203", + "source": 76, + "target": 75, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -245.57522583007812 + }, + { + "id": "e204", + "source": 77, + "target": 73, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": 0 + }, + { + "id": "e205", + "source": 73, + "target": 20, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": 0 + }, + { + "id": "e206", + "source": 20, + "target": 78, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": 0 + }, + { + "id": "e207", + "source": 78, + "target": 77, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": 0 + }, + { + "id": "e208", + "source": 79, + "target": 75, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -212.19097900390625 + }, + { + "id": "e209", + "source": 75, + "target": 77, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -270.7459716796875 + }, + { + "id": "e210", + "source": 77, + "target": 80, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -138.56024169921875 + }, + { + "id": "e211", + "source": 80, + "target": 79, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -238.1629638671875 + }, + { + "id": "e212", + "source": 23, + "target": 76, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": 133.17880249023438 + }, + { + "id": "e213", + "source": 76, + "target": 79, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": 133.17880249023438 + }, + { + "id": "e214", + "source": 79, + "target": 81, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": 88.24822235107422 + }, + { + "id": "e215", + "source": 81, + "target": 23, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": 88.24822235107422 + }, + { + "id": "e216", + "source": 80, + "target": 78, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -245.2415771484375 + }, + { + "id": "e217", + "source": 78, + "target": 24, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -245.2415771484375 + }, + { + "id": "e218", + "source": 24, + "target": 81, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -236.56015014648438 + }, + { + "id": "e219", + "source": 81, + "target": 80, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -236.56015014648438 + }, + { + "id": "e220", + "source": 82, + "target": 83, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -200.58062744140625 + }, + { + "id": "e221", + "source": 83, + "target": 67, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -192.53672790527344 + }, + { + "id": "e222", + "source": 67, + "target": 84, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -255.08404541015625 + }, + { + "id": "e223", + "source": 84, + "target": 82, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -243.56716918945312 + }, + { + "id": "e224", + "source": 28, + "target": 85, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": 102.8792495727539 + }, + { + "id": "e225", + "source": 85, + "target": 82, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": 102.8792495727539 + }, + { + "id": "e226", + "source": 82, + "target": 86, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": 161.91453552246094 + }, + { + "id": "e227", + "source": 86, + "target": 28, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": 161.91453552246094 + }, + { + "id": "e228", + "source": 85, + "target": 29, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -203.17921447753906 + }, + { + "id": "e229", + "source": 29, + "target": 70, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -216.1677703857422 + }, + { + "id": "e230", + "source": 70, + "target": 83, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -216.1677703857422 + }, + { + "id": "e231", + "source": 83, + "target": 85, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -203.17921447753906 + }, + { + "id": "e232", + "source": 84, + "target": 71, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -233.2823028564453 + }, + { + "id": "e233", + "source": 71, + "target": 30, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -233.2823028564453 + }, + { + "id": "e234", + "source": 30, + "target": 86, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -232.54978942871094 + }, + { + "id": "e235", + "source": 86, + "target": 84, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -232.54978942871094 + }, + { + "id": "e236", + "source": 87, + "target": 84, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -253.42637634277344 + }, + { + "id": "e237", + "source": 84, + "target": 74, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -249.43397521972656 + }, + { + "id": "e238", + "source": 74, + "target": 88, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -249.43397521972656 + }, + { + "id": "e239", + "source": 88, + "target": 87, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -253.42637634277344 + }, + { + "id": "e240", + "source": 36, + "target": 86, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": 157.81063842773438 + }, + { + "id": "e241", + "source": 86, + "target": 87, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": 157.81063842773438 + }, + { + "id": "e242", + "source": 87, + "target": 89, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": 157.81063842773438 + }, + { + "id": "e243", + "source": 89, + "target": 36, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": 157.81063842773438 + }, + { + "id": "e244", + "source": 88, + "target": 76, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -233.2823028564453 + }, + { + "id": "e245", + "source": 76, + "target": 37, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -233.2823028564453 + }, + { + "id": "e246", + "source": 37, + "target": 89, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -232.54978942871094 + }, + { + "id": "e247", + "source": 89, + "target": 88, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -232.54978942871094 + }, + { + "id": "e248", + "source": 90, + "target": 88, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -243.56716918945312 + }, + { + "id": "e249", + "source": 88, + "target": 79, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -255.08404541015625 + }, + { + "id": "e250", + "source": 79, + "target": 91, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -192.53672790527344 + }, + { + "id": "e251", + "source": 91, + "target": 90, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -200.58062744140625 + }, + { + "id": "e252", + "source": 41, + "target": 89, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": 161.91453552246094 + }, + { + "id": "e253", + "source": 89, + "target": 90, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": 161.91453552246094 + }, + { + "id": "e254", + "source": 90, + "target": 92, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": 102.8792495727539 + }, + { + "id": "e255", + "source": 92, + "target": 41, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": 102.8792495727539 + }, + { + "id": "e256", + "source": 91, + "target": 81, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -216.1677703857422 + }, + { + "id": "e257", + "source": 81, + "target": 42, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -216.1677703857422 + }, + { + "id": "e258", + "source": 42, + "target": 92, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -203.17921447753906 + }, + { + "id": "e259", + "source": 92, + "target": 91, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -203.17921447753906 + }, + { + "id": "e260", + "source": 93, + "target": 94, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -188.84005737304688 + }, + { + "id": "e261", + "source": 94, + "target": 82, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -199.94207763671875 + }, + { + "id": "e262", + "source": 82, + "target": 95, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -238.81210327148438 + }, + { + "id": "e263", + "source": 95, + "target": 93, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -276.6253662109375 + }, + { + "id": "e264", + "source": 46, + "target": 96, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": 55.88203048706055 + }, + { + "id": "e265", + "source": 96, + "target": 93, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": 55.88203048706055 + }, + { + "id": "e266", + "source": 93, + "target": 97, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": 119.93460845947266 + }, + { + "id": "e267", + "source": 97, + "target": 46, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": 119.93460845947266 + }, + { + "id": "e268", + "source": 96, + "target": 47, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -187.14126586914062 + }, + { + "id": "e269", + "source": 47, + "target": 85, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -209.15550231933594 + }, + { + "id": "e270", + "source": 85, + "target": 94, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -209.15550231933594 + }, + { + "id": "e271", + "source": 94, + "target": 96, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -187.14126586914062 + }, + { + "id": "e272", + "source": 95, + "target": 86, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -236.0252227783203 + }, + { + "id": "e273", + "source": 86, + "target": 48, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -236.0252227783203 + }, + { + "id": "e274", + "source": 48, + "target": 97, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -206.01214599609375 + }, + { + "id": "e275", + "source": 97, + "target": 95, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -206.01214599609375 + }, + { + "id": "e276", + "source": 98, + "target": 95, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -239.0681915283203 + }, + { + "id": "e277", + "source": 95, + "target": 87, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -257.10943603515625 + }, + { + "id": "e278", + "source": 87, + "target": 99, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -257.10943603515625 + }, + { + "id": "e279", + "source": 99, + "target": 98, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -239.0681915283203 + }, + { + "id": "e280", + "source": 54, + "target": 97, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": 118.72782897949219 + }, + { + "id": "e281", + "source": 97, + "target": 98, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": 118.72782897949219 + }, + { + "id": "e282", + "source": 98, + "target": 100, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": 118.72782897949219 + }, + { + "id": "e283", + "source": 100, + "target": 54, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": 118.72782897949219 + }, + { + "id": "e284", + "source": 99, + "target": 89, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -236.0252227783203 + }, + { + "id": "e285", + "source": 89, + "target": 55, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -236.0252227783203 + }, + { + "id": "e286", + "source": 55, + "target": 100, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -206.01214599609375 + }, + { + "id": "e287", + "source": 100, + "target": 99, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -206.01214599609375 + }, + { + "id": "e288", + "source": 101, + "target": 99, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -276.6253662109375 + }, + { + "id": "e289", + "source": 99, + "target": 90, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -238.81210327148438 + }, + { + "id": "e290", + "source": 90, + "target": 102, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -199.94207763671875 + }, + { + "id": "e291", + "source": 102, + "target": 101, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -188.84005737304688 + }, + { + "id": "e292", + "source": 59, + "target": 100, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": 119.93460845947266 + }, + { + "id": "e293", + "source": 100, + "target": 101, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": 119.93460845947266 + }, + { + "id": "e294", + "source": 101, + "target": 103, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": 55.88203048706055 + }, + { + "id": "e295", + "source": 103, + "target": 59, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": 55.88203048706055 + }, + { + "id": "e296", + "source": 102, + "target": 92, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -209.15550231933594 + }, + { + "id": "e297", + "source": 92, + "target": 60, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -209.15550231933594 + }, + { + "id": "e298", + "source": 60, + "target": 103, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -187.14126586914062 + }, + { + "id": "e299", + "source": 103, + "target": 102, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -187.14126586914062 + }, + { + "id": "e300", + "source": 104, + "target": 105, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": 0 + }, + { + "id": "e301", + "source": 105, + "target": 64, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": 0 + }, + { + "id": "e302", + "source": 64, + "target": 106, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": 0 + }, + { + "id": "e303", + "source": 106, + "target": 104, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": 0 + }, + { + "id": "e304", + "source": 107, + "target": 108, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -184.7776641845703 + }, + { + "id": "e305", + "source": 108, + "target": 104, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -173.75271606445312 + }, + { + "id": "e306", + "source": 104, + "target": 109, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -316.04534912109375 + }, + { + "id": "e307", + "source": 109, + "target": 107, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -196.20819091796875 + }, + { + "id": "e308", + "source": 67, + "target": 110, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": 120.9810791015625 + }, + { + "id": "e309", + "source": 110, + "target": 107, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": 25.38766098022461 + }, + { + "id": "e310", + "source": 107, + "target": 111, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": 110.31824493408203 + }, + { + "id": "e311", + "source": 111, + "target": 67, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": 109.12527465820312 + }, + { + "id": "e312", + "source": 110, + "target": 68, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -183.26922607421875 + }, + { + "id": "e313", + "source": 68, + "target": 105, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -309.23101806640625 + }, + { + "id": "e314", + "source": 105, + "target": 108, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -135.84388732910156 + }, + { + "id": "e315", + "source": 108, + "target": 110, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -162.93592834472656 + }, + { + "id": "e316", + "source": 109, + "target": 106, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -95.71995544433594 + }, + { + "id": "e317", + "source": 106, + "target": 69, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -278.05377197265625 + }, + { + "id": "e318", + "source": 69, + "target": 111, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -191.57150268554688 + }, + { + "id": "e319", + "source": 111, + "target": 109, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -212.49818420410156 + }, + { + "id": "e320", + "source": 112, + "target": 106, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": 0 + }, + { + "id": "e321", + "source": 106, + "target": 72, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": 0 + }, + { + "id": "e322", + "source": 72, + "target": 113, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": 0 + }, + { + "id": "e323", + "source": 113, + "target": 112, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": 0 + }, + { + "id": "e324", + "source": 114, + "target": 109, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -242.44024658203125 + }, + { + "id": "e325", + "source": 109, + "target": 112, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -260.06298828125 + }, + { + "id": "e326", + "source": 112, + "target": 115, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -260.06298828125 + }, + { + "id": "e327", + "source": 115, + "target": 114, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -242.44024658203125 + }, + { + "id": "e328", + "source": 74, + "target": 111, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": 133.29946899414062 + }, + { + "id": "e329", + "source": 111, + "target": 114, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": 72.0765151977539 + }, + { + "id": "e330", + "source": 114, + "target": 116, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": 72.0765151977539 + }, + { + "id": "e331", + "source": 116, + "target": 74, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": 133.29946899414062 + }, + { + "id": "e332", + "source": 115, + "target": 113, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -95.71995544433594 + }, + { + "id": "e333", + "source": 113, + "target": 75, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -278.05377197265625 + }, + { + "id": "e334", + "source": 75, + "target": 116, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -191.57150268554688 + }, + { + "id": "e335", + "source": 116, + "target": 115, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -212.49818420410156 + }, + { + "id": "e336", + "source": 117, + "target": 113, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": 0 + }, + { + "id": "e337", + "source": 113, + "target": 77, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": 0 + }, + { + "id": "e338", + "source": 77, + "target": 118, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": 0 + }, + { + "id": "e339", + "source": 118, + "target": 117, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": 0 + }, + { + "id": "e340", + "source": 119, + "target": 115, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -196.20819091796875 + }, + { + "id": "e341", + "source": 115, + "target": 117, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -316.04534912109375 + }, + { + "id": "e342", + "source": 117, + "target": 120, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -173.75271606445312 + }, + { + "id": "e343", + "source": 120, + "target": 119, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -184.7776641845703 + }, + { + "id": "e344", + "source": 79, + "target": 116, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": 109.12527465820312 + }, + { + "id": "e345", + "source": 116, + "target": 119, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": 110.31824493408203 + }, + { + "id": "e346", + "source": 119, + "target": 121, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": 25.38766098022461 + }, + { + "id": "e347", + "source": 121, + "target": 79, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": 120.9810791015625 + }, + { + "id": "e348", + "source": 120, + "target": 118, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -135.84388732910156 + }, + { + "id": "e349", + "source": 118, + "target": 80, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -309.23101806640625 + }, + { + "id": "e350", + "source": 80, + "target": 121, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -183.26922607421875 + }, + { + "id": "e351", + "source": 121, + "target": 120, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -162.93592834472656 + }, + { + "id": "e352", + "source": 122, + "target": 123, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -164.9876251220703 + }, + { + "id": "e353", + "source": 123, + "target": 107, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -156.3897705078125 + }, + { + "id": "e354", + "source": 107, + "target": 124, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -218.01776123046875 + }, + { + "id": "e355", + "source": 124, + "target": 122, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -213.80300903320312 + }, + { + "id": "e356", + "source": 82, + "target": 125, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": 135.19801330566406 + }, + { + "id": "e357", + "source": 125, + "target": 122, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": 23.977283477783203 + }, + { + "id": "e358", + "source": 122, + "target": 126, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": 120.0084457397461 + }, + { + "id": "e359", + "source": 126, + "target": 82, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": 137.55287170410156 + }, + { + "id": "e360", + "source": 125, + "target": 83, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -203.09674072265625 + }, + { + "id": "e361", + "source": 83, + "target": 110, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -200.43370056152344 + }, + { + "id": "e362", + "source": 110, + "target": 123, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -138.1481170654297 + }, + { + "id": "e363", + "source": 123, + "target": 125, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -133.38563537597656 + }, + { + "id": "e364", + "source": 124, + "target": 111, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -158.93252563476562 + }, + { + "id": "e365", + "source": 111, + "target": 84, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -234.47459411621094 + }, + { + "id": "e366", + "source": 84, + "target": 126, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -229.4532928466797 + }, + { + "id": "e367", + "source": 126, + "target": 124, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -164.96058654785156 + }, + { + "id": "e368", + "source": 127, + "target": 124, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -224.3381805419922 + }, + { + "id": "e369", + "source": 124, + "target": 114, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -227.05714416503906 + }, + { + "id": "e370", + "source": 114, + "target": 128, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -227.05714416503906 + }, + { + "id": "e371", + "source": 128, + "target": 127, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -224.3381805419922 + }, + { + "id": "e372", + "source": 87, + "target": 126, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": 161.8509979248047 + }, + { + "id": "e373", + "source": 126, + "target": 127, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": 81.93592834472656 + }, + { + "id": "e374", + "source": 127, + "target": 129, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": 81.93592834472656 + }, + { + "id": "e375", + "source": 129, + "target": 87, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": 161.8509979248047 + }, + { + "id": "e376", + "source": 128, + "target": 116, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -158.93252563476562 + }, + { + "id": "e377", + "source": 116, + "target": 88, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -234.47459411621094 + }, + { + "id": "e378", + "source": 88, + "target": 129, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -229.4532928466797 + }, + { + "id": "e379", + "source": 129, + "target": 128, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -164.96058654785156 + }, + { + "id": "e380", + "source": 130, + "target": 128, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -213.80300903320312 + }, + { + "id": "e381", + "source": 128, + "target": 119, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -218.01776123046875 + }, + { + "id": "e382", + "source": 119, + "target": 131, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -156.3897705078125 + }, + { + "id": "e383", + "source": 131, + "target": 130, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -164.9876251220703 + }, + { + "id": "e384", + "source": 90, + "target": 129, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": 137.55287170410156 + }, + { + "id": "e385", + "source": 129, + "target": 130, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": 120.0084457397461 + }, + { + "id": "e386", + "source": 130, + "target": 132, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": 23.977283477783203 + }, + { + "id": "e387", + "source": 132, + "target": 90, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": 135.19801330566406 + }, + { + "id": "e388", + "source": 131, + "target": 121, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -138.1481170654297 + }, + { + "id": "e389", + "source": 121, + "target": 91, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -200.43370056152344 + }, + { + "id": "e390", + "source": 91, + "target": 132, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -203.09674072265625 + }, + { + "id": "e391", + "source": 132, + "target": 131, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -133.38563537597656 + }, + { + "id": "e392", + "source": 133, + "target": 134, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -170.31727600097656 + }, + { + "id": "e393", + "source": 134, + "target": 122, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -162.39405822753906 + }, + { + "id": "e394", + "source": 122, + "target": 135, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -211.18917846679688 + }, + { + "id": "e395", + "source": 135, + "target": 133, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -252.52163696289062 + }, + { + "id": "e396", + "source": 93, + "target": 136, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": 83.89891052246094 + }, + { + "id": "e397", + "source": 136, + "target": 133, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -15.927849769592285 + }, + { + "id": "e398", + "source": 133, + "target": 137, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": 71.81858825683594 + }, + { + "id": "e399", + "source": 137, + "target": 93, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": 96.46786499023438 + }, + { + "id": "e400", + "source": 136, + "target": 94, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -220.99954223632812 + }, + { + "id": "e401", + "source": 94, + "target": 125, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -182.58273315429688 + }, + { + "id": "e402", + "source": 125, + "target": 134, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -147.49752807617188 + }, + { + "id": "e403", + "source": 134, + "target": 136, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -130.22030639648438 + }, + { + "id": "e404", + "source": 135, + "target": 126, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -175.43618774414062 + }, + { + "id": "e405", + "source": 126, + "target": 95, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -211.55886840820312 + }, + { + "id": "e406", + "source": 95, + "target": 137, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -247.25880432128906 + }, + { + "id": "e407", + "source": 137, + "target": 135, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -144.12208557128906 + }, + { + "id": "e408", + "source": 138, + "target": 135, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -220.7774200439453 + }, + { + "id": "e409", + "source": 135, + "target": 127, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -229.4231719970703 + }, + { + "id": "e410", + "source": 127, + "target": 139, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -229.4231719970703 + }, + { + "id": "e411", + "source": 139, + "target": 138, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -220.7774200439453 + }, + { + "id": "e412", + "source": 98, + "target": 137, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": 119.75855255126953 + }, + { + "id": "e413", + "source": 137, + "target": 138, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": 38.306854248046875 + }, + { + "id": "e414", + "source": 138, + "target": 140, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": 38.306854248046875 + }, + { + "id": "e415", + "source": 140, + "target": 98, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": 119.75855255126953 + }, + { + "id": "e416", + "source": 139, + "target": 129, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -175.43618774414062 + }, + { + "id": "e417", + "source": 129, + "target": 99, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -211.55886840820312 + }, + { + "id": "e418", + "source": 99, + "target": 140, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -247.25880432128906 + }, + { + "id": "e419", + "source": 140, + "target": 139, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -144.12208557128906 + }, + { + "id": "e420", + "source": 141, + "target": 139, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -252.52163696289062 + }, + { + "id": "e421", + "source": 139, + "target": 130, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -211.18917846679688 + }, + { + "id": "e422", + "source": 130, + "target": 142, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -162.39405822753906 + }, + { + "id": "e423", + "source": 142, + "target": 141, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -170.31727600097656 + }, + { + "id": "e424", + "source": 101, + "target": 140, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": 96.46786499023438 + }, + { + "id": "e425", + "source": 140, + "target": 141, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": 71.81858825683594 + }, + { + "id": "e426", + "source": 141, + "target": 143, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -15.927849769592285 + }, + { + "id": "e427", + "source": 143, + "target": 101, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": 83.89891052246094 + }, + { + "id": "e428", + "source": 142, + "target": 132, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -147.49752807617188 + }, + { + "id": "e429", + "source": 132, + "target": 102, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -182.58273315429688 + }, + { + "id": "e430", + "source": 102, + "target": 143, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -220.99954223632812 + }, + { + "id": "e431", + "source": 143, + "target": 142, + "area": 1, + "density": 0.028, + "stiffness": 1000000, + "stress": -130.22030639648438 + } + ], + "ndofs": 864, + "animation": { + "showDisplacement": true, + "exageration": 2000, + "speed": 3 + }, + "viz": { + "minStress": -347.64988403320314, + "maxStress": 178.10598907470705, + "colorMaps": [ + [ + [ + 0, + [ + 0.23, + 0.299, + 0.754 + ] + ], + [ + 0.002, + [ + 0.23, + 0.299, + 0.754 + ] + ], + [ + 0.004, + [ + 0.234, + 0.306, + 0.76 + ] + ], + [ + 0.006, + [ + 0.234, + 0.306, + 0.76 + ] + ], + [ + 0.008, + [ + 0.239, + 0.312, + 0.766 + ] + ], + [ + 0.01, + [ + 0.239, + 0.312, + 0.766 + ] + ], + [ + 0.012, + [ + 0.244, + 0.319, + 0.772 + ] + ], + [ + 0.014, + [ + 0.244, + 0.319, + 0.772 + ] + ], + [ + 0.016, + [ + 0.248, + 0.326, + 0.778 + ] + ], + [ + 0.018, + [ + 0.248, + 0.326, + 0.778 + ] + ], + [ + 0.02, + [ + 0.253, + 0.333, + 0.784 + ] + ], + [ + 0.022, + [ + 0.253, + 0.333, + 0.784 + ] + ], + [ + 0.023, + [ + 0.257, + 0.34, + 0.79 + ] + ], + [ + 0.025, + [ + 0.257, + 0.34, + 0.79 + ] + ], + [ + 0.027, + [ + 0.262, + 0.346, + 0.796 + ] + ], + [ + 0.029, + [ + 0.262, + 0.346, + 0.796 + ] + ], + [ + 0.031, + [ + 0.266, + 0.353, + 0.802 + ] + ], + [ + 0.033, + [ + 0.266, + 0.353, + 0.802 + ] + ], + [ + 0.035, + [ + 0.271, + 0.36, + 0.807 + ] + ], + [ + 0.037, + [ + 0.271, + 0.36, + 0.807 + ] + ], + [ + 0.039, + [ + 0.276, + 0.367, + 0.813 + ] + ], + [ + 0.041, + [ + 0.276, + 0.367, + 0.813 + ] + ], + [ + 0.043, + [ + 0.281, + 0.373, + 0.818 + ] + ], + [ + 0.045, + [ + 0.281, + 0.373, + 0.818 + ] + ], + [ + 0.047, + [ + 0.285, + 0.38, + 0.823 + ] + ], + [ + 0.049, + [ + 0.285, + 0.38, + 0.823 + ] + ], + [ + 0.051, + [ + 0.29, + 0.387, + 0.829 + ] + ], + [ + 0.053, + [ + 0.29, + 0.387, + 0.829 + ] + ], + [ + 0.055, + [ + 0.295, + 0.394, + 0.834 + ] + ], + [ + 0.057, + [ + 0.295, + 0.394, + 0.834 + ] + ], + [ + 0.059, + [ + 0.299, + 0.4, + 0.84 + ] + ], + [ + 0.061, + [ + 0.299, + 0.4, + 0.84 + ] + ], + [ + 0.063, + [ + 0.304, + 0.407, + 0.845 + ] + ], + [ + 0.065, + [ + 0.304, + 0.407, + 0.845 + ] + ], + [ + 0.067, + [ + 0.309, + 0.413, + 0.85 + ] + ], + [ + 0.068, + [ + 0.309, + 0.413, + 0.85 + ] + ], + [ + 0.07, + [ + 0.314, + 0.42, + 0.855 + ] + ], + [ + 0.072, + [ + 0.314, + 0.42, + 0.855 + ] + ], + [ + 0.074, + [ + 0.319, + 0.427, + 0.86 + ] + ], + [ + 0.076, + [ + 0.319, + 0.427, + 0.86 + ] + ], + [ + 0.078, + [ + 0.324, + 0.433, + 0.865 + ] + ], + [ + 0.08, + [ + 0.324, + 0.433, + 0.865 + ] + ], + [ + 0.082, + [ + 0.329, + 0.44, + 0.87 + ] + ], + [ + 0.084, + [ + 0.329, + 0.44, + 0.87 + ] + ], + [ + 0.086, + [ + 0.333, + 0.446, + 0.874 + ] + ], + [ + 0.088, + [ + 0.333, + 0.446, + 0.874 + ] + ], + [ + 0.09, + [ + 0.338, + 0.453, + 0.879 + ] + ], + [ + 0.092, + [ + 0.338, + 0.453, + 0.879 + ] + ], + [ + 0.094, + [ + 0.343, + 0.459, + 0.884 + ] + ], + [ + 0.096, + [ + 0.343, + 0.459, + 0.884 + ] + ], + [ + 0.098, + [ + 0.348, + 0.466, + 0.888 + ] + ], + [ + 0.1, + [ + 0.348, + 0.466, + 0.888 + ] + ], + [ + 0.102, + [ + 0.353, + 0.472, + 0.893 + ] + ], + [ + 0.104, + [ + 0.353, + 0.472, + 0.893 + ] + ], + [ + 0.106, + [ + 0.358, + 0.478, + 0.897 + ] + ], + [ + 0.108, + [ + 0.358, + 0.478, + 0.897 + ] + ], + [ + 0.11, + [ + 0.363, + 0.485, + 0.901 + ] + ], + [ + 0.112, + [ + 0.363, + 0.485, + 0.901 + ] + ], + [ + 0.114, + [ + 0.369, + 0.491, + 0.905 + ] + ], + [ + 0.115, + [ + 0.369, + 0.491, + 0.905 + ] + ], + [ + 0.117, + [ + 0.374, + 0.497, + 0.909 + ] + ], + [ + 0.119, + [ + 0.374, + 0.497, + 0.909 + ] + ], + [ + 0.121, + [ + 0.379, + 0.504, + 0.914 + ] + ], + [ + 0.123, + [ + 0.379, + 0.504, + 0.914 + ] + ], + [ + 0.125, + [ + 0.384, + 0.51, + 0.918 + ] + ], + [ + 0.127, + [ + 0.384, + 0.51, + 0.918 + ] + ], + [ + 0.129, + [ + 0.389, + 0.516, + 0.921 + ] + ], + [ + 0.131, + [ + 0.389, + 0.516, + 0.921 + ] + ], + [ + 0.133, + [ + 0.394, + 0.522, + 0.925 + ] + ], + [ + 0.135, + [ + 0.394, + 0.522, + 0.925 + ] + ], + [ + 0.137, + [ + 0.399, + 0.529, + 0.928 + ] + ], + [ + 0.139, + [ + 0.399, + 0.529, + 0.928 + ] + ], + [ + 0.141, + [ + 0.404, + 0.535, + 0.932 + ] + ], + [ + 0.143, + [ + 0.404, + 0.535, + 0.932 + ] + ], + [ + 0.145, + [ + 0.41, + 0.541, + 0.936 + ] + ], + [ + 0.147, + [ + 0.41, + 0.541, + 0.936 + ] + ], + [ + 0.149, + [ + 0.415, + 0.547, + 0.939 + ] + ], + [ + 0.151, + [ + 0.415, + 0.547, + 0.939 + ] + ], + [ + 0.153, + [ + 0.42, + 0.553, + 0.943 + ] + ], + [ + 0.155, + [ + 0.42, + 0.553, + 0.943 + ] + ], + [ + 0.157, + [ + 0.425, + 0.559, + 0.946 + ] + ], + [ + 0.159, + [ + 0.425, + 0.559, + 0.946 + ] + ], + [ + 0.16, + [ + 0.431, + 0.565, + 0.949 + ] + ], + [ + 0.162, + [ + 0.431, + 0.565, + 0.949 + ] + ], + [ + 0.164, + [ + 0.436, + 0.571, + 0.952 + ] + ], + [ + 0.166, + [ + 0.436, + 0.571, + 0.952 + ] + ], + [ + 0.168, + [ + 0.441, + 0.577, + 0.955 + ] + ], + [ + 0.17, + [ + 0.441, + 0.577, + 0.955 + ] + ], + [ + 0.172, + [ + 0.446, + 0.582, + 0.957 + ] + ], + [ + 0.174, + [ + 0.446, + 0.582, + 0.957 + ] + ], + [ + 0.176, + [ + 0.452, + 0.588, + 0.96 + ] + ], + [ + 0.178, + [ + 0.452, + 0.588, + 0.96 + ] + ], + [ + 0.18, + [ + 0.457, + 0.594, + 0.963 + ] + ], + [ + 0.182, + [ + 0.457, + 0.594, + 0.963 + ] + ], + [ + 0.184, + [ + 0.462, + 0.6, + 0.966 + ] + ], + [ + 0.186, + [ + 0.462, + 0.6, + 0.966 + ] + ], + [ + 0.188, + [ + 0.468, + 0.606, + 0.969 + ] + ], + [ + 0.19, + [ + 0.468, + 0.606, + 0.969 + ] + ], + [ + 0.192, + [ + 0.473, + 0.611, + 0.971 + ] + ], + [ + 0.194, + [ + 0.473, + 0.611, + 0.971 + ] + ], + [ + 0.196, + [ + 0.478, + 0.617, + 0.973 + ] + ], + [ + 0.198, + [ + 0.478, + 0.617, + 0.973 + ] + ], + [ + 0.2, + [ + 0.484, + 0.622, + 0.975 + ] + ], + [ + 0.202, + [ + 0.484, + 0.622, + 0.975 + ] + ], + [ + 0.204, + [ + 0.489, + 0.628, + 0.977 + ] + ], + [ + 0.205, + [ + 0.489, + 0.628, + 0.977 + ] + ], + [ + 0.207, + [ + 0.495, + 0.633, + 0.979 + ] + ], + [ + 0.209, + [ + 0.495, + 0.633, + 0.979 + ] + ], + [ + 0.211, + [ + 0.5, + 0.639, + 0.981 + ] + ], + [ + 0.213, + [ + 0.5, + 0.639, + 0.981 + ] + ], + [ + 0.215, + [ + 0.505, + 0.644, + 0.983 + ] + ], + [ + 0.217, + [ + 0.505, + 0.644, + 0.983 + ] + ], + [ + 0.219, + [ + 0.511, + 0.649, + 0.985 + ] + ], + [ + 0.221, + [ + 0.511, + 0.649, + 0.985 + ] + ], + [ + 0.223, + [ + 0.516, + 0.654, + 0.986 + ] + ], + [ + 0.225, + [ + 0.516, + 0.654, + 0.986 + ] + ], + [ + 0.227, + [ + 0.522, + 0.66, + 0.988 + ] + ], + [ + 0.229, + [ + 0.522, + 0.66, + 0.988 + ] + ], + [ + 0.231, + [ + 0.527, + 0.665, + 0.989 + ] + ], + [ + 0.233, + [ + 0.527, + 0.665, + 0.989 + ] + ], + [ + 0.235, + [ + 0.533, + 0.67, + 0.99 + ] + ], + [ + 0.237, + [ + 0.533, + 0.67, + 0.99 + ] + ], + [ + 0.239, + [ + 0.538, + 0.675, + 0.992 + ] + ], + [ + 0.241, + [ + 0.538, + 0.675, + 0.992 + ] + ], + [ + 0.243, + [ + 0.543, + 0.68, + 0.993 + ] + ], + [ + 0.245, + [ + 0.543, + 0.68, + 0.993 + ] + ], + [ + 0.247, + [ + 0.549, + 0.685, + 0.994 + ] + ], + [ + 0.249, + [ + 0.549, + 0.685, + 0.994 + ] + ], + [ + 0.25, + [ + 0.554, + 0.69, + 0.996 + ] + ], + [ + 0.252, + [ + 0.554, + 0.69, + 0.996 + ] + ], + [ + 0.254, + [ + 0.56, + 0.695, + 0.996 + ] + ], + [ + 0.256, + [ + 0.56, + 0.695, + 0.996 + ] + ], + [ + 0.258, + [ + 0.565, + 0.699, + 0.997 + ] + ], + [ + 0.26, + [ + 0.565, + 0.699, + 0.997 + ] + ], + [ + 0.262, + [ + 0.571, + 0.704, + 0.997 + ] + ], + [ + 0.264, + [ + 0.571, + 0.704, + 0.997 + ] + ], + [ + 0.266, + [ + 0.576, + 0.709, + 0.998 + ] + ], + [ + 0.268, + [ + 0.576, + 0.709, + 0.998 + ] + ], + [ + 0.27, + [ + 0.581, + 0.713, + 0.998 + ] + ], + [ + 0.272, + [ + 0.581, + 0.713, + 0.998 + ] + ], + [ + 0.274, + [ + 0.587, + 0.718, + 0.999 + ] + ], + [ + 0.276, + [ + 0.587, + 0.718, + 0.999 + ] + ], + [ + 0.278, + [ + 0.592, + 0.723, + 0.999 + ] + ], + [ + 0.28, + [ + 0.592, + 0.723, + 0.999 + ] + ], + [ + 0.282, + [ + 0.598, + 0.727, + 1 + ] + ], + [ + 0.028, + [ + 0.598, + 0.727, + 1 + ] + ], + [ + 0.286, + [ + 0.603, + 0.732, + 1 + ] + ], + [ + 0.288, + [ + 0.603, + 0.732, + 1 + ] + ], + [ + 0.29, + [ + 0.609, + 0.736, + 0.999 + ] + ], + [ + 0.292, + [ + 0.609, + 0.736, + 0.999 + ] + ], + [ + 0.294, + [ + 0.614, + 0.74, + 0.999 + ] + ], + [ + 0.295, + [ + 0.614, + 0.74, + 0.999 + ] + ], + [ + 0.297, + [ + 0.619, + 0.744, + 0.999 + ] + ], + [ + 0.299, + [ + 0.619, + 0.744, + 0.999 + ] + ], + [ + 0.301, + [ + 0.625, + 0.748, + 0.999 + ] + ], + [ + 0.303, + [ + 0.625, + 0.748, + 0.999 + ] + ], + [ + 0.305, + [ + 0.63, + 0.753, + 0.999 + ] + ], + [ + 0.307, + [ + 0.63, + 0.753, + 0.999 + ] + ], + [ + 0.309, + [ + 0.635, + 0.757, + 0.998 + ] + ], + [ + 0.311, + [ + 0.635, + 0.757, + 0.998 + ] + ], + [ + 0.313, + [ + 0.641, + 0.761, + 0.998 + ] + ], + [ + 0.315, + [ + 0.641, + 0.761, + 0.998 + ] + ], + [ + 0.317, + [ + 0.646, + 0.764, + 0.997 + ] + ], + [ + 0.319, + [ + 0.646, + 0.764, + 0.997 + ] + ], + [ + 0.321, + [ + 0.651, + 0.768, + 0.996 + ] + ], + [ + 0.323, + [ + 0.651, + 0.768, + 0.996 + ] + ], + [ + 0.325, + [ + 0.657, + 0.772, + 0.995 + ] + ], + [ + 0.327, + [ + 0.657, + 0.772, + 0.995 + ] + ], + [ + 0.329, + [ + 0.662, + 0.775, + 0.994 + ] + ], + [ + 0.331, + [ + 0.662, + 0.775, + 0.994 + ] + ], + [ + 0.333, + [ + 0.667, + 0.779, + 0.993 + ] + ], + [ + 0.335, + [ + 0.667, + 0.779, + 0.993 + ] + ], + [ + 0.337, + [ + 0.673, + 0.783, + 0.992 + ] + ], + [ + 0.339, + [ + 0.673, + 0.783, + 0.992 + ] + ], + [ + 0.341, + [ + 0.678, + 0.787, + 0.991 + ] + ], + [ + 0.342, + [ + 0.678, + 0.787, + 0.991 + ] + ], + [ + 0.344, + [ + 0.683, + 0.79, + 0.99 + ] + ], + [ + 0.346, + [ + 0.683, + 0.79, + 0.99 + ] + ], + [ + 0.348, + [ + 0.688, + 0.793, + 0.988 + ] + ], + [ + 0.35, + [ + 0.688, + 0.793, + 0.988 + ] + ], + [ + 0.352, + [ + 0.693, + 0.796, + 0.986 + ] + ], + [ + 0.354, + [ + 0.693, + 0.796, + 0.986 + ] + ], + [ + 0.356, + [ + 0.698, + 0.799, + 0.985 + ] + ], + [ + 0.358, + [ + 0.698, + 0.799, + 0.985 + ] + ], + [ + 0.36, + [ + 0.704, + 0.803, + 0.983 + ] + ], + [ + 0.362, + [ + 0.704, + 0.803, + 0.983 + ] + ], + [ + 0.364, + [ + 0.709, + 0.806, + 0.981 + ] + ], + [ + 0.366, + [ + 0.709, + 0.806, + 0.981 + ] + ], + [ + 0.368, + [ + 0.714, + 0.809, + 0.979 + ] + ], + [ + 0.37, + [ + 0.714, + 0.809, + 0.979 + ] + ], + [ + 0.372, + [ + 0.719, + 0.812, + 0.978 + ] + ], + [ + 0.374, + [ + 0.719, + 0.812, + 0.978 + ] + ], + [ + 0.376, + [ + 0.724, + 0.815, + 0.976 + ] + ], + [ + 0.378, + [ + 0.724, + 0.815, + 0.976 + ] + ], + [ + 0.38, + [ + 0.729, + 0.817, + 0.973 + ] + ], + [ + 0.382, + [ + 0.729, + 0.817, + 0.973 + ] + ], + [ + 0.384, + [ + 0.734, + 0.82, + 0.971 + ] + ], + [ + 0.386, + [ + 0.734, + 0.82, + 0.971 + ] + ], + [ + 0.387, + [ + 0.739, + 0.823, + 0.968 + ] + ], + [ + 0.389, + [ + 0.739, + 0.823, + 0.968 + ] + ], + [ + 0.391, + [ + 0.744, + 0.825, + 0.966 + ] + ], + [ + 0.393, + [ + 0.744, + 0.825, + 0.966 + ] + ], + [ + 0.395, + [ + 0.749, + 0.828, + 0.963 + ] + ], + [ + 0.397, + [ + 0.749, + 0.828, + 0.963 + ] + ], + [ + 0.399, + [ + 0.754, + 0.83, + 0.961 + ] + ], + [ + 0.401, + [ + 0.754, + 0.83, + 0.961 + ] + ], + [ + 0.403, + [ + 0.759, + 0.833, + 0.958 + ] + ], + [ + 0.405, + [ + 0.759, + 0.833, + 0.958 + ] + ], + [ + 0.407, + [ + 0.763, + 0.835, + 0.956 + ] + ], + [ + 0.409, + [ + 0.763, + 0.835, + 0.956 + ] + ], + [ + 0.411, + [ + 0.768, + 0.837, + 0.952 + ] + ], + [ + 0.413, + [ + 0.768, + 0.837, + 0.952 + ] + ], + [ + 0.415, + [ + 0.773, + 0.839, + 0.949 + ] + ], + [ + 0.417, + [ + 0.773, + 0.839, + 0.949 + ] + ], + [ + 0.419, + [ + 0.777, + 0.841, + 0.946 + ] + ], + [ + 0.421, + [ + 0.777, + 0.841, + 0.946 + ] + ], + [ + 0.423, + [ + 0.782, + 0.843, + 0.943 + ] + ], + [ + 0.425, + [ + 0.782, + 0.843, + 0.943 + ] + ], + [ + 0.427, + [ + 0.787, + 0.845, + 0.94 + ] + ], + [ + 0.429, + [ + 0.787, + 0.845, + 0.94 + ] + ], + [ + 0.431, + [ + 0.791, + 0.847, + 0.937 + ] + ], + [ + 0.432, + [ + 0.791, + 0.847, + 0.937 + ] + ], + [ + 0.434, + [ + 0.796, + 0.849, + 0.933 + ] + ], + [ + 0.436, + [ + 0.796, + 0.849, + 0.933 + ] + ], + [ + 0.438, + [ + 0.801, + 0.85, + 0.93 + ] + ], + [ + 0.44, + [ + 0.801, + 0.85, + 0.93 + ] + ], + [ + 0.442, + [ + 0.805, + 0.852, + 0.926 + ] + ], + [ + 0.444, + [ + 0.805, + 0.852, + 0.926 + ] + ], + [ + 0.446, + [ + 0.809, + 0.853, + 0.922 + ] + ], + [ + 0.448, + [ + 0.809, + 0.853, + 0.922 + ] + ], + [ + 0.45, + [ + 0.814, + 0.854, + 0.918 + ] + ], + [ + 0.452, + [ + 0.814, + 0.854, + 0.918 + ] + ], + [ + 0.454, + [ + 0.818, + 0.856, + 0.915 + ] + ], + [ + 0.456, + [ + 0.818, + 0.856, + 0.915 + ] + ], + [ + 0.458, + [ + 0.822, + 0.857, + 0.911 + ] + ], + [ + 0.46, + [ + 0.822, + 0.857, + 0.911 + ] + ], + [ + 0.462, + [ + 0.827, + 0.858, + 0.907 + ] + ], + [ + 0.464, + [ + 0.827, + 0.858, + 0.907 + ] + ], + [ + 0.466, + [ + 0.831, + 0.86, + 0.903 + ] + ], + [ + 0.468, + [ + 0.831, + 0.86, + 0.903 + ] + ], + [ + 0.47, + [ + 0.835, + 0.861, + 0.899 + ] + ], + [ + 0.472, + [ + 0.835, + 0.861, + 0.899 + ] + ], + [ + 0.474, + [ + 0.839, + 0.861, + 0.894 + ] + ], + [ + 0.476, + [ + 0.839, + 0.861, + 0.894 + ] + ], + [ + 0.477, + [ + 0.843, + 0.862, + 0.89 + ] + ], + [ + 0.479, + [ + 0.843, + 0.862, + 0.89 + ] + ], + [ + 0.481, + [ + 0.847, + 0.862, + 0.886 + ] + ], + [ + 0.483, + [ + 0.847, + 0.862, + 0.886 + ] + ], + [ + 0.485, + [ + 0.851, + 0.863, + 0.881 + ] + ], + [ + 0.487, + [ + 0.851, + 0.863, + 0.881 + ] + ], + [ + 0.489, + [ + 0.855, + 0.864, + 0.877 + ] + ], + [ + 0.491, + [ + 0.855, + 0.864, + 0.877 + ] + ], + [ + 0.493, + [ + 0.859, + 0.864, + 0.872 + ] + ], + [ + 0.495, + [ + 0.859, + 0.864, + 0.872 + ] + ], + [ + 0.497, + [ + 0.863, + 0.865, + 0.868 + ] + ], + [ + 0.499, + [ + 0.863, + 0.865, + 0.868 + ] + ], + [ + 0.501, + [ + 0.867, + 0.864, + 0.863 + ] + ], + [ + 0.503, + [ + 0.867, + 0.864, + 0.863 + ] + ], + [ + 0.505, + [ + 0.871, + 0.862, + 0.857 + ] + ], + [ + 0.507, + [ + 0.871, + 0.862, + 0.857 + ] + ], + [ + 0.509, + [ + 0.876, + 0.86, + 0.851 + ] + ], + [ + 0.511, + [ + 0.876, + 0.86, + 0.851 + ] + ], + [ + 0.513, + [ + 0.88, + 0.858, + 0.846 + ] + ], + [ + 0.515, + [ + 0.88, + 0.858, + 0.846 + ] + ], + [ + 0.517, + [ + 0.884, + 0.856, + 0.84 + ] + ], + [ + 0.519, + [ + 0.884, + 0.856, + 0.84 + ] + ], + [ + 0.521, + [ + 0.888, + 0.854, + 0.835 + ] + ], + [ + 0.523, + [ + 0.888, + 0.854, + 0.835 + ] + ], + [ + 0.524, + [ + 0.892, + 0.852, + 0.829 + ] + ], + [ + 0.526, + [ + 0.892, + 0.852, + 0.829 + ] + ], + [ + 0.528, + [ + 0.896, + 0.85, + 0.823 + ] + ], + [ + 0.53, + [ + 0.896, + 0.85, + 0.823 + ] + ], + [ + 0.532, + [ + 0.9, + 0.848, + 0.818 + ] + ], + [ + 0.534, + [ + 0.9, + 0.848, + 0.818 + ] + ], + [ + 0.536, + [ + 0.903, + 0.845, + 0.812 + ] + ], + [ + 0.538, + [ + 0.903, + 0.845, + 0.812 + ] + ], + [ + 0.54, + [ + 0.906, + 0.842, + 0.806 + ] + ], + [ + 0.542, + [ + 0.906, + 0.842, + 0.806 + ] + ], + [ + 0.544, + [ + 0.909, + 0.839, + 0.8 + ] + ], + [ + 0.546, + [ + 0.909, + 0.839, + 0.8 + ] + ], + [ + 0.548, + [ + 0.913, + 0.837, + 0.795 + ] + ], + [ + 0.55, + [ + 0.913, + 0.837, + 0.795 + ] + ], + [ + 0.552, + [ + 0.916, + 0.834, + 0.789 + ] + ], + [ + 0.554, + [ + 0.916, + 0.834, + 0.789 + ] + ], + [ + 0.556, + [ + 0.919, + 0.831, + 0.783 + ] + ], + [ + 0.558, + [ + 0.919, + 0.831, + 0.783 + ] + ], + [ + 0.56, + [ + 0.923, + 0.829, + 0.777 + ] + ], + [ + 0.562, + [ + 0.923, + 0.829, + 0.777 + ] + ], + [ + 0.564, + [ + 0.926, + 0.826, + 0.771 + ] + ], + [ + 0.566, + [ + 0.926, + 0.826, + 0.771 + ] + ], + [ + 0.568, + [ + 0.928, + 0.822, + 0.765 + ] + ], + [ + 0.569, + [ + 0.928, + 0.822, + 0.765 + ] + ], + [ + 0.571, + [ + 0.931, + 0.819, + 0.759 + ] + ], + [ + 0.573, + [ + 0.931, + 0.819, + 0.759 + ] + ], + [ + 0.575, + [ + 0.933, + 0.816, + 0.753 + ] + ], + [ + 0.577, + [ + 0.933, + 0.816, + 0.753 + ] + ], + [ + 0.579, + [ + 0.936, + 0.812, + 0.747 + ] + ], + [ + 0.581, + [ + 0.936, + 0.812, + 0.747 + ] + ], + [ + 0.583, + [ + 0.938, + 0.809, + 0.741 + ] + ], + [ + 0.585, + [ + 0.938, + 0.809, + 0.741 + ] + ], + [ + 0.587, + [ + 0.941, + 0.806, + 0.735 + ] + ], + [ + 0.589, + [ + 0.941, + 0.806, + 0.735 + ] + ], + [ + 0.591, + [ + 0.943, + 0.802, + 0.729 + ] + ], + [ + 0.593, + [ + 0.943, + 0.802, + 0.729 + ] + ], + [ + 0.595, + [ + 0.946, + 0.799, + 0.723 + ] + ], + [ + 0.597, + [ + 0.946, + 0.799, + 0.723 + ] + ], + [ + 0.599, + [ + 0.947, + 0.795, + 0.717 + ] + ], + [ + 0.601, + [ + 0.947, + 0.795, + 0.717 + ] + ], + [ + 0.603, + [ + 0.949, + 0.791, + 0.711 + ] + ], + [ + 0.605, + [ + 0.949, + 0.791, + 0.711 + ] + ], + [ + 0.607, + [ + 0.951, + 0.787, + 0.705 + ] + ], + [ + 0.609, + [ + 0.951, + 0.787, + 0.705 + ] + ], + [ + 0.611, + [ + 0.953, + 0.783, + 0.699 + ] + ], + [ + 0.613, + [ + 0.953, + 0.783, + 0.699 + ] + ], + [ + 0.614, + [ + 0.955, + 0.779, + 0.693 + ] + ], + [ + 0.616, + [ + 0.955, + 0.779, + 0.693 + ] + ], + [ + 0.618, + [ + 0.956, + 0.775, + 0.686 + ] + ], + [ + 0.62, + [ + 0.956, + 0.775, + 0.686 + ] + ], + [ + 0.622, + [ + 0.958, + 0.771, + 0.68 + ] + ], + [ + 0.624, + [ + 0.958, + 0.771, + 0.68 + ] + ], + [ + 0.626, + [ + 0.96, + 0.767, + 0.674 + ] + ], + [ + 0.628, + [ + 0.96, + 0.767, + 0.674 + ] + ], + [ + 0.63, + [ + 0.961, + 0.763, + 0.668 + ] + ], + [ + 0.632, + [ + 0.961, + 0.763, + 0.668 + ] + ], + [ + 0.634, + [ + 0.962, + 0.758, + 0.662 + ] + ], + [ + 0.636, + [ + 0.962, + 0.758, + 0.662 + ] + ], + [ + 0.638, + [ + 0.963, + 0.754, + 0.656 + ] + ], + [ + 0.64, + [ + 0.963, + 0.754, + 0.656 + ] + ], + [ + 0.642, + [ + 0.964, + 0.749, + 0.649 + ] + ], + [ + 0.644, + [ + 0.964, + 0.749, + 0.649 + ] + ], + [ + 0.646, + [ + 0.965, + 0.745, + 0.643 + ] + ], + [ + 0.648, + [ + 0.965, + 0.745, + 0.643 + ] + ], + [ + 0.65, + [ + 0.966, + 0.74, + 0.637 + ] + ], + [ + 0.652, + [ + 0.966, + 0.74, + 0.637 + ] + ], + [ + 0.654, + [ + 0.967, + 0.736, + 0.631 + ] + ], + [ + 0.656, + [ + 0.967, + 0.736, + 0.631 + ] + ], + [ + 0.658, + [ + 0.968, + 0.731, + 0.625 + ] + ], + [ + 0.659, + [ + 0.968, + 0.731, + 0.625 + ] + ], + [ + 0.661, + [ + 0.968, + 0.726, + 0.618 + ] + ], + [ + 0.663, + [ + 0.968, + 0.726, + 0.618 + ] + ], + [ + 0.665, + [ + 0.968, + 0.721, + 0.612 + ] + ], + [ + 0.667, + [ + 0.968, + 0.721, + 0.612 + ] + ], + [ + 0.669, + [ + 0.969, + 0.716, + 0.606 + ] + ], + [ + 0.671, + [ + 0.969, + 0.716, + 0.606 + ] + ], + [ + 0.673, + [ + 0.969, + 0.711, + 0.6 + ] + ], + [ + 0.675, + [ + 0.969, + 0.711, + 0.6 + ] + ], + [ + 0.677, + [ + 0.969, + 0.706, + 0.594 + ] + ], + [ + 0.679, + [ + 0.969, + 0.706, + 0.594 + ] + ], + [ + 0.681, + [ + 0.97, + 0.701, + 0.588 + ] + ], + [ + 0.683, + [ + 0.97, + 0.701, + 0.588 + ] + ], + [ + 0.685, + [ + 0.97, + 0.696, + 0.581 + ] + ], + [ + 0.687, + [ + 0.97, + 0.696, + 0.581 + ] + ], + [ + 0.689, + [ + 0.97, + 0.69, + 0.575 + ] + ], + [ + 0.691, + [ + 0.97, + 0.69, + 0.575 + ] + ], + [ + 0.693, + [ + 0.969, + 0.685, + 0.569 + ] + ], + [ + 0.695, + [ + 0.969, + 0.685, + 0.569 + ] + ], + [ + 0.697, + [ + 0.969, + 0.679, + 0.563 + ] + ], + [ + 0.699, + [ + 0.969, + 0.679, + 0.563 + ] + ], + [ + 0.701, + [ + 0.968, + 0.674, + 0.557 + ] + ], + [ + 0.703, + [ + 0.968, + 0.674, + 0.557 + ] + ], + [ + 0.705, + [ + 0.968, + 0.668, + 0.55 + ] + ], + [ + 0.706, + [ + 0.968, + 0.668, + 0.55 + ] + ], + [ + 0.708, + [ + 0.968, + 0.663, + 0.544 + ] + ], + [ + 0.71, + [ + 0.968, + 0.663, + 0.544 + ] + ], + [ + 0.712, + [ + 0.967, + 0.657, + 0.538 + ] + ], + [ + 0.714, + [ + 0.967, + 0.657, + 0.538 + ] + ], + [ + 0.716, + [ + 0.967, + 0.652, + 0.532 + ] + ], + [ + 0.718, + [ + 0.967, + 0.652, + 0.532 + ] + ], + [ + 0.72, + [ + 0.966, + 0.646, + 0.526 + ] + ], + [ + 0.722, + [ + 0.966, + 0.646, + 0.526 + ] + ], + [ + 0.724, + [ + 0.965, + 0.64, + 0.52 + ] + ], + [ + 0.726, + [ + 0.965, + 0.64, + 0.52 + ] + ], + [ + 0.728, + [ + 0.964, + 0.634, + 0.514 + ] + ], + [ + 0.73, + [ + 0.964, + 0.634, + 0.514 + ] + ], + [ + 0.732, + [ + 0.963, + 0.628, + 0.508 + ] + ], + [ + 0.734, + [ + 0.963, + 0.628, + 0.508 + ] + ], + [ + 0.736, + [ + 0.962, + 0.622, + 0.502 + ] + ], + [ + 0.738, + [ + 0.962, + 0.622, + 0.502 + ] + ], + [ + 0.74, + [ + 0.96, + 0.616, + 0.495 + ] + ], + [ + 0.742, + [ + 0.96, + 0.616, + 0.495 + ] + ], + [ + 0.744, + [ + 0.959, + 0.61, + 0.489 + ] + ], + [ + 0.746, + [ + 0.959, + 0.61, + 0.489 + ] + ], + [ + 0.748, + [ + 0.958, + 0.604, + 0.483 + ] + ], + [ + 0.75, + [ + 0.958, + 0.604, + 0.483 + ] + ], + [ + 0.751, + [ + 0.957, + 0.598, + 0.477 + ] + ], + [ + 0.753, + [ + 0.957, + 0.598, + 0.477 + ] + ], + [ + 0.755, + [ + 0.955, + 0.592, + 0.471 + ] + ], + [ + 0.757, + [ + 0.955, + 0.592, + 0.471 + ] + ], + [ + 0.759, + [ + 0.953, + 0.585, + 0.465 + ] + ], + [ + 0.761, + [ + 0.953, + 0.585, + 0.465 + ] + ], + [ + 0.763, + [ + 0.951, + 0.579, + 0.459 + ] + ], + [ + 0.765, + [ + 0.951, + 0.579, + 0.459 + ] + ], + [ + 0.767, + [ + 0.949, + 0.572, + 0.453 + ] + ], + [ + 0.769, + [ + 0.949, + 0.572, + 0.453 + ] + ], + [ + 0.771, + [ + 0.948, + 0.566, + 0.447 + ] + ], + [ + 0.773, + [ + 0.948, + 0.566, + 0.447 + ] + ], + [ + 0.775, + [ + 0.946, + 0.56, + 0.442 + ] + ], + [ + 0.777, + [ + 0.946, + 0.56, + 0.442 + ] + ], + [ + 0.779, + [ + 0.944, + 0.553, + 0.436 + ] + ], + [ + 0.781, + [ + 0.944, + 0.553, + 0.436 + ] + ], + [ + 0.783, + [ + 0.942, + 0.546, + 0.43 + ] + ], + [ + 0.785, + [ + 0.942, + 0.546, + 0.43 + ] + ], + [ + 0.787, + [ + 0.939, + 0.54, + 0.424 + ] + ], + [ + 0.789, + [ + 0.939, + 0.54, + 0.424 + ] + ], + [ + 0.791, + [ + 0.937, + 0.533, + 0.418 + ] + ], + [ + 0.793, + [ + 0.937, + 0.533, + 0.418 + ] + ], + [ + 0.795, + [ + 0.934, + 0.526, + 0.412 + ] + ], + [ + 0.796, + [ + 0.934, + 0.526, + 0.412 + ] + ], + [ + 0.798, + [ + 0.932, + 0.519, + 0.406 + ] + ], + [ + 0.8, + [ + 0.932, + 0.519, + 0.406 + ] + ], + [ + 0.802, + [ + 0.929, + 0.512, + 0.401 + ] + ], + [ + 0.804, + [ + 0.929, + 0.512, + 0.401 + ] + ], + [ + 0.806, + [ + 0.927, + 0.505, + 0.395 + ] + ], + [ + 0.808, + [ + 0.927, + 0.505, + 0.395 + ] + ], + [ + 0.81, + [ + 0.924, + 0.499, + 0.389 + ] + ], + [ + 0.812, + [ + 0.924, + 0.499, + 0.389 + ] + ], + [ + 0.814, + [ + 0.921, + 0.491, + 0.383 + ] + ], + [ + 0.816, + [ + 0.921, + 0.491, + 0.383 + ] + ], + [ + 0.818, + [ + 0.918, + 0.484, + 0.378 + ] + ], + [ + 0.82, + [ + 0.918, + 0.484, + 0.378 + ] + ], + [ + 0.822, + [ + 0.915, + 0.477, + 0.372 + ] + ], + [ + 0.824, + [ + 0.915, + 0.477, + 0.372 + ] + ], + [ + 0.826, + [ + 0.912, + 0.47, + 0.367 + ] + ], + [ + 0.828, + [ + 0.912, + 0.47, + 0.367 + ] + ], + [ + 0.83, + [ + 0.909, + 0.462, + 0.361 + ] + ], + [ + 0.832, + [ + 0.909, + 0.462, + 0.361 + ] + ], + [ + 0.834, + [ + 0.906, + 0.455, + 0.355 + ] + ], + [ + 0.836, + [ + 0.906, + 0.455, + 0.355 + ] + ], + [ + 0.838, + [ + 0.903, + 0.448, + 0.35 + ] + ], + [ + 0.84, + [ + 0.903, + 0.448, + 0.35 + ] + ], + [ + 0.841, + [ + 0.9, + 0.441, + 0.344 + ] + ], + [ + 0.843, + [ + 0.9, + 0.441, + 0.344 + ] + ], + [ + 0.845, + [ + 0.896, + 0.433, + 0.339 + ] + ], + [ + 0.847, + [ + 0.896, + 0.433, + 0.339 + ] + ], + [ + 0.849, + [ + 0.892, + 0.425, + 0.333 + ] + ], + [ + 0.851, + [ + 0.892, + 0.425, + 0.333 + ] + ], + [ + 0.853, + [ + 0.888, + 0.418, + 0.328 + ] + ], + [ + 0.855, + [ + 0.888, + 0.418, + 0.328 + ] + ], + [ + 0.857, + [ + 0.885, + 0.41, + 0.323 + ] + ], + [ + 0.859, + [ + 0.885, + 0.41, + 0.323 + ] + ], + [ + 0.861, + [ + 0.881, + 0.402, + 0.317 + ] + ], + [ + 0.863, + [ + 0.881, + 0.402, + 0.317 + ] + ], + [ + 0.865, + [ + 0.877, + 0.395, + 0.312 + ] + ], + [ + 0.867, + [ + 0.877, + 0.395, + 0.312 + ] + ], + [ + 0.869, + [ + 0.873, + 0.387, + 0.306 + ] + ], + [ + 0.871, + [ + 0.873, + 0.387, + 0.306 + ] + ], + [ + 0.873, + [ + 0.87, + 0.379, + 0.301 + ] + ], + [ + 0.875, + [ + 0.87, + 0.379, + 0.301 + ] + ], + [ + 0.877, + [ + 0.865, + 0.371, + 0.296 + ] + ], + [ + 0.879, + [ + 0.865, + 0.371, + 0.296 + ] + ], + [ + 0.881, + [ + 0.861, + 0.363, + 0.291 + ] + ], + [ + 0.883, + [ + 0.861, + 0.363, + 0.291 + ] + ], + [ + 0.885, + [ + 0.857, + 0.355, + 0.285 + ] + ], + [ + 0.886, + [ + 0.857, + 0.355, + 0.285 + ] + ], + [ + 0.888, + [ + 0.852, + 0.346, + 0.28 + ] + ], + [ + 0.89, + [ + 0.852, + 0.346, + 0.28 + ] + ], + [ + 0.892, + [ + 0.848, + 0.338, + 0.275 + ] + ], + [ + 0.894, + [ + 0.848, + 0.338, + 0.275 + ] + ], + [ + 0.896, + [ + 0.844, + 0.33, + 0.27 + ] + ], + [ + 0.898, + [ + 0.844, + 0.33, + 0.27 + ] + ], + [ + 0.9, + [ + 0.839, + 0.322, + 0.265 + ] + ], + [ + 0.902, + [ + 0.839, + 0.322, + 0.265 + ] + ], + [ + 0.904, + [ + 0.835, + 0.314, + 0.26 + ] + ], + [ + 0.906, + [ + 0.835, + 0.314, + 0.26 + ] + ], + [ + 0.908, + [ + 0.83, + 0.305, + 0.255 + ] + ], + [ + 0.91, + [ + 0.83, + 0.305, + 0.255 + ] + ], + [ + 0.912, + [ + 0.825, + 0.296, + 0.25 + ] + ], + [ + 0.914, + [ + 0.825, + 0.296, + 0.25 + ] + ], + [ + 0.916, + [ + 0.82, + 0.287, + 0.245 + ] + ], + [ + 0.918, + [ + 0.82, + 0.287, + 0.245 + ] + ], + [ + 0.92, + [ + 0.816, + 0.278, + 0.24 + ] + ], + [ + 0.922, + [ + 0.816, + 0.278, + 0.24 + ] + ], + [ + 0.924, + [ + 0.811, + 0.269, + 0.235 + ] + ], + [ + 0.926, + [ + 0.811, + 0.269, + 0.235 + ] + ], + [ + 0.928, + [ + 0.806, + 0.26, + 0.231 + ] + ], + [ + 0.93, + [ + 0.806, + 0.26, + 0.231 + ] + ], + [ + 0.932, + [ + 0.801, + 0.251, + 0.226 + ] + ], + [ + 0.933, + [ + 0.801, + 0.251, + 0.226 + ] + ], + [ + 0.935, + [ + 0.796, + 0.242, + 0.221 + ] + ], + [ + 0.937, + [ + 0.796, + 0.242, + 0.221 + ] + ], + [ + 0.939, + [ + 0.791, + 0.231, + 0.216 + ] + ], + [ + 0.941, + [ + 0.791, + 0.231, + 0.216 + ] + ], + [ + 0.943, + [ + 0.785, + 0.221, + 0.212 + ] + ], + [ + 0.945, + [ + 0.785, + 0.221, + 0.212 + ] + ], + [ + 0.947, + [ + 0.78, + 0.21, + 0.207 + ] + ], + [ + 0.949, + [ + 0.78, + 0.21, + 0.207 + ] + ], + [ + 0.951, + [ + 0.774, + 0.2, + 0.203 + ] + ], + [ + 0.953, + [ + 0.774, + 0.2, + 0.203 + ] + ], + [ + 0.955, + [ + 0.769, + 0.189, + 0.198 + ] + ], + [ + 0.957, + [ + 0.769, + 0.189, + 0.198 + ] + ], + [ + 0.959, + [ + 0.764, + 0.179, + 0.193 + ] + ], + [ + 0.961, + [ + 0.764, + 0.179, + 0.193 + ] + ], + [ + 0.963, + [ + 0.758, + 0.168, + 0.189 + ] + ], + [ + 0.965, + [ + 0.758, + 0.168, + 0.189 + ] + ], + [ + 0.967, + [ + 0.753, + 0.158, + 0.184 + ] + ], + [ + 0.969, + [ + 0.753, + 0.158, + 0.184 + ] + ], + [ + 0.971, + [ + 0.747, + 0.14, + 0.18 + ] + ], + [ + 0.973, + [ + 0.747, + 0.14, + 0.18 + ] + ], + [ + 0.975, + [ + 0.741, + 0.122, + 0.176 + ] + ], + [ + 0.977, + [ + 0.741, + 0.122, + 0.176 + ] + ], + [ + 0.978, + [ + 0.735, + 0.104, + 0.171 + ] + ], + [ + 0.98, + [ + 0.735, + 0.104, + 0.171 + ] + ], + [ + 0.982, + [ + 0.729, + 0.087, + 0.167 + ] + ], + [ + 0.984, + [ + 0.729, + 0.087, + 0.167 + ] + ], + [ + 0.986, + [ + 0.723, + 0.069, + 0.163 + ] + ], + [ + 0.988, + [ + 0.723, + 0.069, + 0.163 + ] + ], + [ + 0.99, + [ + 0.717, + 0.051, + 0.159 + ] + ], + [ + 0.992, + [ + 0.717, + 0.051, + 0.159 + ] + ], + [ + 0.994, + [ + 0.712, + 0.033, + 0.154 + ] + ], + [ + 0.996, + [ + 0.712, + 0.033, + 0.154 + ] + ], + [ + 0.998, + [ + 0.706, + 0.016, + 0.15 + ] + ], + [ + 1, + [ + 0.706, + 0.016, + 0.15 + ] + ] + ], + [ + [ + 0, + [ + 1, + 1, + 0.851 + ] + ], + [ + 0.002, + [ + 1, + 1, + 0.851 + ] + ], + [ + 0.004, + [ + 0.998, + 0.999, + 0.846 + ] + ], + [ + 0.006, + [ + 0.998, + 0.999, + 0.846 + ] + ], + [ + 0.008, + [ + 0.996, + 0.998, + 0.841 + ] + ], + [ + 0.01, + [ + 0.996, + 0.998, + 0.841 + ] + ], + [ + 0.012, + [ + 0.993, + 0.997, + 0.836 + ] + ], + [ + 0.014, + [ + 0.993, + 0.997, + 0.836 + ] + ], + [ + 0.016, + [ + 0.991, + 0.997, + 0.831 + ] + ], + [ + 0.018, + [ + 0.991, + 0.997, + 0.831 + ] + ], + [ + 0.02, + [ + 0.989, + 0.996, + 0.826 + ] + ], + [ + 0.022, + [ + 0.989, + 0.996, + 0.826 + ] + ], + [ + 0.023, + [ + 0.987, + 0.995, + 0.821 + ] + ], + [ + 0.025, + [ + 0.987, + 0.995, + 0.821 + ] + ], + [ + 0.027, + [ + 0.984, + 0.994, + 0.817 + ] + ], + [ + 0.029, + [ + 0.984, + 0.994, + 0.817 + ] + ], + [ + 0.031, + [ + 0.982, + 0.993, + 0.812 + ] + ], + [ + 0.033, + [ + 0.982, + 0.993, + 0.812 + ] + ], + [ + 0.035, + [ + 0.98, + 0.992, + 0.807 + ] + ], + [ + 0.037, + [ + 0.98, + 0.992, + 0.807 + ] + ], + [ + 0.039, + [ + 0.978, + 0.991, + 0.802 + ] + ], + [ + 0.041, + [ + 0.978, + 0.991, + 0.802 + ] + ], + [ + 0.043, + [ + 0.976, + 0.991, + 0.797 + ] + ], + [ + 0.045, + [ + 0.976, + 0.991, + 0.797 + ] + ], + [ + 0.047, + [ + 0.973, + 0.99, + 0.792 + ] + ], + [ + 0.049, + [ + 0.973, + 0.99, + 0.792 + ] + ], + [ + 0.051, + [ + 0.971, + 0.989, + 0.787 + ] + ], + [ + 0.053, + [ + 0.971, + 0.989, + 0.787 + ] + ], + [ + 0.055, + [ + 0.969, + 0.988, + 0.782 + ] + ], + [ + 0.057, + [ + 0.969, + 0.988, + 0.782 + ] + ], + [ + 0.059, + [ + 0.967, + 0.987, + 0.777 + ] + ], + [ + 0.061, + [ + 0.967, + 0.987, + 0.777 + ] + ], + [ + 0.063, + [ + 0.965, + 0.986, + 0.772 + ] + ], + [ + 0.065, + [ + 0.965, + 0.986, + 0.772 + ] + ], + [ + 0.067, + [ + 0.962, + 0.985, + 0.767 + ] + ], + [ + 0.068, + [ + 0.962, + 0.985, + 0.767 + ] + ], + [ + 0.07, + [ + 0.96, + 0.984, + 0.762 + ] + ], + [ + 0.072, + [ + 0.96, + 0.984, + 0.762 + ] + ], + [ + 0.074, + [ + 0.958, + 0.984, + 0.757 + ] + ], + [ + 0.076, + [ + 0.958, + 0.984, + 0.757 + ] + ], + [ + 0.078, + [ + 0.956, + 0.983, + 0.753 + ] + ], + [ + 0.08, + [ + 0.956, + 0.983, + 0.753 + ] + ], + [ + 0.082, + [ + 0.953, + 0.982, + 0.748 + ] + ], + [ + 0.084, + [ + 0.953, + 0.982, + 0.748 + ] + ], + [ + 0.086, + [ + 0.951, + 0.981, + 0.743 + ] + ], + [ + 0.088, + [ + 0.951, + 0.981, + 0.743 + ] + ], + [ + 0.09, + [ + 0.949, + 0.98, + 0.738 + ] + ], + [ + 0.092, + [ + 0.949, + 0.98, + 0.738 + ] + ], + [ + 0.094, + [ + 0.947, + 0.979, + 0.733 + ] + ], + [ + 0.096, + [ + 0.947, + 0.979, + 0.733 + ] + ], + [ + 0.098, + [ + 0.945, + 0.978, + 0.728 + ] + ], + [ + 0.1, + [ + 0.945, + 0.978, + 0.728 + ] + ], + [ + 0.102, + [ + 0.942, + 0.978, + 0.723 + ] + ], + [ + 0.104, + [ + 0.942, + 0.978, + 0.723 + ] + ], + [ + 0.106, + [ + 0.94, + 0.977, + 0.718 + ] + ], + [ + 0.108, + [ + 0.94, + 0.977, + 0.718 + ] + ], + [ + 0.11, + [ + 0.938, + 0.976, + 0.713 + ] + ], + [ + 0.112, + [ + 0.938, + 0.976, + 0.713 + ] + ], + [ + 0.114, + [ + 0.936, + 0.975, + 0.708 + ] + ], + [ + 0.115, + [ + 0.936, + 0.975, + 0.708 + ] + ], + [ + 0.117, + [ + 0.934, + 0.974, + 0.703 + ] + ], + [ + 0.119, + [ + 0.934, + 0.974, + 0.703 + ] + ], + [ + 0.121, + [ + 0.931, + 0.973, + 0.698 + ] + ], + [ + 0.123, + [ + 0.931, + 0.973, + 0.698 + ] + ], + [ + 0.125, + [ + 0.929, + 0.972, + 0.694 + ] + ], + [ + 0.127, + [ + 0.929, + 0.972, + 0.694 + ] + ], + [ + 0.129, + [ + 0.924, + 0.97, + 0.695 + ] + ], + [ + 0.131, + [ + 0.924, + 0.97, + 0.695 + ] + ], + [ + 0.133, + [ + 0.919, + 0.969, + 0.695 + ] + ], + [ + 0.135, + [ + 0.919, + 0.969, + 0.695 + ] + ], + [ + 0.137, + [ + 0.915, + 0.967, + 0.695 + ] + ], + [ + 0.139, + [ + 0.915, + 0.967, + 0.695 + ] + ], + [ + 0.141, + [ + 0.91, + 0.965, + 0.696 + ] + ], + [ + 0.143, + [ + 0.91, + 0.965, + 0.696 + ] + ], + [ + 0.145, + [ + 0.905, + 0.963, + 0.696 + ] + ], + [ + 0.147, + [ + 0.905, + 0.963, + 0.696 + ] + ], + [ + 0.149, + [ + 0.901, + 0.961, + 0.696 + ] + ], + [ + 0.151, + [ + 0.901, + 0.961, + 0.696 + ] + ], + [ + 0.153, + [ + 0.896, + 0.959, + 0.697 + ] + ], + [ + 0.155, + [ + 0.896, + 0.959, + 0.697 + ] + ], + [ + 0.157, + [ + 0.891, + 0.958, + 0.697 + ] + ], + [ + 0.159, + [ + 0.891, + 0.958, + 0.697 + ] + ], + [ + 0.16, + [ + 0.887, + 0.956, + 0.697 + ] + ], + [ + 0.162, + [ + 0.887, + 0.956, + 0.697 + ] + ], + [ + 0.164, + [ + 0.882, + 0.954, + 0.698 + ] + ], + [ + 0.166, + [ + 0.882, + 0.954, + 0.698 + ] + ], + [ + 0.168, + [ + 0.877, + 0.952, + 0.698 + ] + ], + [ + 0.17, + [ + 0.877, + 0.952, + 0.698 + ] + ], + [ + 0.172, + [ + 0.873, + 0.95, + 0.699 + ] + ], + [ + 0.174, + [ + 0.873, + 0.95, + 0.699 + ] + ], + [ + 0.176, + [ + 0.868, + 0.948, + 0.699 + ] + ], + [ + 0.178, + [ + 0.868, + 0.948, + 0.699 + ] + ], + [ + 0.18, + [ + 0.863, + 0.946, + 0.699 + ] + ], + [ + 0.182, + [ + 0.863, + 0.946, + 0.699 + ] + ], + [ + 0.184, + [ + 0.859, + 0.945, + 0.7 + ] + ], + [ + 0.186, + [ + 0.859, + 0.945, + 0.7 + ] + ], + [ + 0.188, + [ + 0.854, + 0.943, + 0.7 + ] + ], + [ + 0.19, + [ + 0.854, + 0.943, + 0.7 + ] + ], + [ + 0.192, + [ + 0.849, + 0.941, + 0.7 + ] + ], + [ + 0.194, + [ + 0.849, + 0.941, + 0.7 + ] + ], + [ + 0.196, + [ + 0.845, + 0.939, + 0.701 + ] + ], + [ + 0.198, + [ + 0.845, + 0.939, + 0.701 + ] + ], + [ + 0.2, + [ + 0.84, + 0.937, + 0.701 + ] + ], + [ + 0.202, + [ + 0.84, + 0.937, + 0.701 + ] + ], + [ + 0.204, + [ + 0.835, + 0.935, + 0.702 + ] + ], + [ + 0.205, + [ + 0.835, + 0.935, + 0.702 + ] + ], + [ + 0.207, + [ + 0.831, + 0.934, + 0.702 + ] + ], + [ + 0.209, + [ + 0.831, + 0.934, + 0.702 + ] + ], + [ + 0.211, + [ + 0.826, + 0.932, + 0.702 + ] + ], + [ + 0.213, + [ + 0.826, + 0.932, + 0.702 + ] + ], + [ + 0.215, + [ + 0.821, + 0.93, + 0.703 + ] + ], + [ + 0.217, + [ + 0.821, + 0.93, + 0.703 + ] + ], + [ + 0.219, + [ + 0.817, + 0.928, + 0.703 + ] + ], + [ + 0.221, + [ + 0.817, + 0.928, + 0.703 + ] + ], + [ + 0.223, + [ + 0.812, + 0.926, + 0.703 + ] + ], + [ + 0.225, + [ + 0.812, + 0.926, + 0.703 + ] + ], + [ + 0.227, + [ + 0.807, + 0.924, + 0.704 + ] + ], + [ + 0.229, + [ + 0.807, + 0.924, + 0.704 + ] + ], + [ + 0.231, + [ + 0.803, + 0.922, + 0.704 + ] + ], + [ + 0.233, + [ + 0.803, + 0.922, + 0.704 + ] + ], + [ + 0.235, + [ + 0.798, + 0.921, + 0.704 + ] + ], + [ + 0.237, + [ + 0.798, + 0.921, + 0.704 + ] + ], + [ + 0.239, + [ + 0.793, + 0.919, + 0.705 + ] + ], + [ + 0.241, + [ + 0.793, + 0.919, + 0.705 + ] + ], + [ + 0.243, + [ + 0.789, + 0.917, + 0.705 + ] + ], + [ + 0.245, + [ + 0.789, + 0.917, + 0.705 + ] + ], + [ + 0.247, + [ + 0.784, + 0.915, + 0.706 + ] + ], + [ + 0.249, + [ + 0.784, + 0.915, + 0.706 + ] + ], + [ + 0.25, + [ + 0.778, + 0.913, + 0.706 + ] + ], + [ + 0.252, + [ + 0.778, + 0.913, + 0.706 + ] + ], + [ + 0.254, + [ + 0.769, + 0.909, + 0.707 + ] + ], + [ + 0.256, + [ + 0.769, + 0.909, + 0.707 + ] + ], + [ + 0.258, + [ + 0.76, + 0.906, + 0.708 + ] + ], + [ + 0.26, + [ + 0.76, + 0.906, + 0.708 + ] + ], + [ + 0.262, + [ + 0.752, + 0.903, + 0.709 + ] + ], + [ + 0.264, + [ + 0.752, + 0.903, + 0.709 + ] + ], + [ + 0.266, + [ + 0.743, + 0.899, + 0.71 + ] + ], + [ + 0.268, + [ + 0.743, + 0.899, + 0.71 + ] + ], + [ + 0.27, + [ + 0.734, + 0.896, + 0.71 + ] + ], + [ + 0.272, + [ + 0.734, + 0.896, + 0.71 + ] + ], + [ + 0.274, + [ + 0.725, + 0.892, + 0.711 + ] + ], + [ + 0.276, + [ + 0.725, + 0.892, + 0.711 + ] + ], + [ + 0.278, + [ + 0.716, + 0.889, + 0.712 + ] + ], + [ + 0.28, + [ + 0.716, + 0.889, + 0.712 + ] + ], + [ + 0.282, + [ + 0.707, + 0.885, + 0.713 + ] + ], + [ + 0.028, + [ + 0.707, + 0.885, + 0.713 + ] + ], + [ + 0.286, + [ + 0.698, + 0.882, + 0.714 + ] + ], + [ + 0.288, + [ + 0.698, + 0.882, + 0.714 + ] + ], + [ + 0.29, + [ + 0.69, + 0.878, + 0.715 + ] + ], + [ + 0.292, + [ + 0.69, + 0.878, + 0.715 + ] + ], + [ + 0.294, + [ + 0.681, + 0.875, + 0.716 + ] + ], + [ + 0.295, + [ + 0.681, + 0.875, + 0.716 + ] + ], + [ + 0.297, + [ + 0.672, + 0.872, + 0.716 + ] + ], + [ + 0.299, + [ + 0.672, + 0.872, + 0.716 + ] + ], + [ + 0.301, + [ + 0.663, + 0.868, + 0.717 + ] + ], + [ + 0.303, + [ + 0.663, + 0.868, + 0.717 + ] + ], + [ + 0.305, + [ + 0.654, + 0.865, + 0.718 + ] + ], + [ + 0.307, + [ + 0.654, + 0.865, + 0.718 + ] + ], + [ + 0.309, + [ + 0.645, + 0.861, + 0.719 + ] + ], + [ + 0.311, + [ + 0.645, + 0.861, + 0.719 + ] + ], + [ + 0.313, + [ + 0.636, + 0.858, + 0.72 + ] + ], + [ + 0.315, + [ + 0.636, + 0.858, + 0.72 + ] + ], + [ + 0.317, + [ + 0.628, + 0.854, + 0.721 + ] + ], + [ + 0.319, + [ + 0.628, + 0.854, + 0.721 + ] + ], + [ + 0.321, + [ + 0.619, + 0.851, + 0.722 + ] + ], + [ + 0.323, + [ + 0.619, + 0.851, + 0.722 + ] + ], + [ + 0.325, + [ + 0.61, + 0.847, + 0.722 + ] + ], + [ + 0.327, + [ + 0.61, + 0.847, + 0.722 + ] + ], + [ + 0.329, + [ + 0.601, + 0.844, + 0.723 + ] + ], + [ + 0.331, + [ + 0.601, + 0.844, + 0.723 + ] + ], + [ + 0.333, + [ + 0.592, + 0.841, + 0.724 + ] + ], + [ + 0.335, + [ + 0.592, + 0.841, + 0.724 + ] + ], + [ + 0.337, + [ + 0.583, + 0.837, + 0.725 + ] + ], + [ + 0.339, + [ + 0.583, + 0.837, + 0.725 + ] + ], + [ + 0.341, + [ + 0.574, + 0.834, + 0.726 + ] + ], + [ + 0.342, + [ + 0.574, + 0.834, + 0.726 + ] + ], + [ + 0.344, + [ + 0.566, + 0.83, + 0.727 + ] + ], + [ + 0.346, + [ + 0.566, + 0.83, + 0.727 + ] + ], + [ + 0.348, + [ + 0.557, + 0.827, + 0.728 + ] + ], + [ + 0.35, + [ + 0.557, + 0.827, + 0.728 + ] + ], + [ + 0.352, + [ + 0.548, + 0.823, + 0.728 + ] + ], + [ + 0.354, + [ + 0.548, + 0.823, + 0.728 + ] + ], + [ + 0.356, + [ + 0.539, + 0.82, + 0.729 + ] + ], + [ + 0.358, + [ + 0.539, + 0.82, + 0.729 + ] + ], + [ + 0.36, + [ + 0.53, + 0.816, + 0.73 + ] + ], + [ + 0.362, + [ + 0.53, + 0.816, + 0.73 + ] + ], + [ + 0.364, + [ + 0.521, + 0.813, + 0.731 + ] + ], + [ + 0.366, + [ + 0.521, + 0.813, + 0.731 + ] + ], + [ + 0.368, + [ + 0.512, + 0.81, + 0.732 + ] + ], + [ + 0.37, + [ + 0.512, + 0.81, + 0.732 + ] + ], + [ + 0.372, + [ + 0.504, + 0.806, + 0.733 + ] + ], + [ + 0.374, + [ + 0.504, + 0.806, + 0.733 + ] + ], + [ + 0.376, + [ + 0.495, + 0.803, + 0.734 + ] + ], + [ + 0.378, + [ + 0.495, + 0.803, + 0.734 + ] + ], + [ + 0.38, + [ + 0.488, + 0.8, + 0.735 + ] + ], + [ + 0.382, + [ + 0.488, + 0.8, + 0.735 + ] + ], + [ + 0.384, + [ + 0.48, + 0.797, + 0.736 + ] + ], + [ + 0.386, + [ + 0.48, + 0.797, + 0.736 + ] + ], + [ + 0.387, + [ + 0.472, + 0.794, + 0.737 + ] + ], + [ + 0.389, + [ + 0.472, + 0.794, + 0.737 + ] + ], + [ + 0.391, + [ + 0.465, + 0.792, + 0.738 + ] + ], + [ + 0.393, + [ + 0.465, + 0.792, + 0.738 + ] + ], + [ + 0.395, + [ + 0.457, + 0.789, + 0.739 + ] + ], + [ + 0.397, + [ + 0.457, + 0.789, + 0.739 + ] + ], + [ + 0.399, + [ + 0.449, + 0.786, + 0.74 + ] + ], + [ + 0.401, + [ + 0.449, + 0.786, + 0.74 + ] + ], + [ + 0.403, + [ + 0.442, + 0.783, + 0.741 + ] + ], + [ + 0.405, + [ + 0.442, + 0.783, + 0.741 + ] + ], + [ + 0.407, + [ + 0.434, + 0.78, + 0.743 + ] + ], + [ + 0.409, + [ + 0.434, + 0.78, + 0.743 + ] + ], + [ + 0.411, + [ + 0.427, + 0.777, + 0.744 + ] + ], + [ + 0.413, + [ + 0.427, + 0.777, + 0.744 + ] + ], + [ + 0.415, + [ + 0.419, + 0.775, + 0.745 + ] + ], + [ + 0.417, + [ + 0.419, + 0.775, + 0.745 + ] + ], + [ + 0.419, + [ + 0.411, + 0.772, + 0.746 + ] + ], + [ + 0.421, + [ + 0.411, + 0.772, + 0.746 + ] + ], + [ + 0.423, + [ + 0.404, + 0.769, + 0.747 + ] + ], + [ + 0.425, + [ + 0.404, + 0.769, + 0.747 + ] + ], + [ + 0.427, + [ + 0.396, + 0.766, + 0.748 + ] + ], + [ + 0.429, + [ + 0.396, + 0.766, + 0.748 + ] + ], + [ + 0.431, + [ + 0.388, + 0.763, + 0.749 + ] + ], + [ + 0.432, + [ + 0.388, + 0.763, + 0.749 + ] + ], + [ + 0.434, + [ + 0.381, + 0.76, + 0.75 + ] + ], + [ + 0.436, + [ + 0.381, + 0.76, + 0.75 + ] + ], + [ + 0.438, + [ + 0.373, + 0.758, + 0.751 + ] + ], + [ + 0.44, + [ + 0.373, + 0.758, + 0.751 + ] + ], + [ + 0.442, + [ + 0.366, + 0.755, + 0.753 + ] + ], + [ + 0.444, + [ + 0.366, + 0.755, + 0.753 + ] + ], + [ + 0.446, + [ + 0.358, + 0.752, + 0.754 + ] + ], + [ + 0.448, + [ + 0.358, + 0.752, + 0.754 + ] + ], + [ + 0.45, + [ + 0.35, + 0.749, + 0.755 + ] + ], + [ + 0.452, + [ + 0.35, + 0.749, + 0.755 + ] + ], + [ + 0.454, + [ + 0.343, + 0.746, + 0.756 + ] + ], + [ + 0.456, + [ + 0.343, + 0.746, + 0.756 + ] + ], + [ + 0.458, + [ + 0.335, + 0.743, + 0.757 + ] + ], + [ + 0.46, + [ + 0.335, + 0.743, + 0.757 + ] + ], + [ + 0.462, + [ + 0.327, + 0.741, + 0.758 + ] + ], + [ + 0.464, + [ + 0.327, + 0.741, + 0.758 + ] + ], + [ + 0.466, + [ + 0.32, + 0.738, + 0.759 + ] + ], + [ + 0.468, + [ + 0.32, + 0.738, + 0.759 + ] + ], + [ + 0.47, + [ + 0.312, + 0.735, + 0.76 + ] + ], + [ + 0.472, + [ + 0.312, + 0.735, + 0.76 + ] + ], + [ + 0.474, + [ + 0.304, + 0.732, + 0.761 + ] + ], + [ + 0.476, + [ + 0.304, + 0.732, + 0.761 + ] + ], + [ + 0.477, + [ + 0.297, + 0.729, + 0.763 + ] + ], + [ + 0.479, + [ + 0.297, + 0.729, + 0.763 + ] + ], + [ + 0.481, + [ + 0.289, + 0.726, + 0.764 + ] + ], + [ + 0.483, + [ + 0.289, + 0.726, + 0.764 + ] + ], + [ + 0.485, + [ + 0.282, + 0.724, + 0.765 + ] + ], + [ + 0.487, + [ + 0.282, + 0.724, + 0.765 + ] + ], + [ + 0.489, + [ + 0.274, + 0.721, + 0.766 + ] + ], + [ + 0.491, + [ + 0.274, + 0.721, + 0.766 + ] + ], + [ + 0.493, + [ + 0.266, + 0.718, + 0.767 + ] + ], + [ + 0.495, + [ + 0.266, + 0.718, + 0.767 + ] + ], + [ + 0.497, + [ + 0.259, + 0.715, + 0.768 + ] + ], + [ + 0.499, + [ + 0.259, + 0.715, + 0.768 + ] + ], + [ + 0.501, + [ + 0.253, + 0.711, + 0.768 + ] + ], + [ + 0.503, + [ + 0.253, + 0.711, + 0.768 + ] + ], + [ + 0.505, + [ + 0.248, + 0.707, + 0.768 + ] + ], + [ + 0.507, + [ + 0.248, + 0.707, + 0.768 + ] + ], + [ + 0.509, + [ + 0.244, + 0.702, + 0.767 + ] + ], + [ + 0.511, + [ + 0.244, + 0.702, + 0.767 + ] + ], + [ + 0.513, + [ + 0.239, + 0.698, + 0.767 + ] + ], + [ + 0.515, + [ + 0.239, + 0.698, + 0.767 + ] + ], + [ + 0.517, + [ + 0.235, + 0.693, + 0.766 + ] + ], + [ + 0.519, + [ + 0.235, + 0.693, + 0.766 + ] + ], + [ + 0.521, + [ + 0.231, + 0.689, + 0.766 + ] + ], + [ + 0.523, + [ + 0.231, + 0.689, + 0.766 + ] + ], + [ + 0.524, + [ + 0.226, + 0.684, + 0.765 + ] + ], + [ + 0.526, + [ + 0.226, + 0.684, + 0.765 + ] + ], + [ + 0.528, + [ + 0.222, + 0.68, + 0.765 + ] + ], + [ + 0.53, + [ + 0.222, + 0.68, + 0.765 + ] + ], + [ + 0.532, + [ + 0.217, + 0.675, + 0.764 + ] + ], + [ + 0.534, + [ + 0.217, + 0.675, + 0.764 + ] + ], + [ + 0.536, + [ + 0.213, + 0.67, + 0.764 + ] + ], + [ + 0.538, + [ + 0.213, + 0.67, + 0.764 + ] + ], + [ + 0.54, + [ + 0.208, + 0.666, + 0.763 + ] + ], + [ + 0.542, + [ + 0.208, + 0.666, + 0.763 + ] + ], + [ + 0.544, + [ + 0.204, + 0.661, + 0.763 + ] + ], + [ + 0.546, + [ + 0.204, + 0.661, + 0.763 + ] + ], + [ + 0.548, + [ + 0.2, + 0.657, + 0.762 + ] + ], + [ + 0.55, + [ + 0.2, + 0.657, + 0.762 + ] + ], + [ + 0.552, + [ + 0.195, + 0.652, + 0.762 + ] + ], + [ + 0.554, + [ + 0.195, + 0.652, + 0.762 + ] + ], + [ + 0.556, + [ + 0.191, + 0.648, + 0.761 + ] + ], + [ + 0.558, + [ + 0.191, + 0.648, + 0.761 + ] + ], + [ + 0.56, + [ + 0.186, + 0.643, + 0.761 + ] + ], + [ + 0.562, + [ + 0.186, + 0.643, + 0.761 + ] + ], + [ + 0.564, + [ + 0.182, + 0.639, + 0.761 + ] + ], + [ + 0.566, + [ + 0.182, + 0.639, + 0.761 + ] + ], + [ + 0.568, + [ + 0.177, + 0.634, + 0.76 + ] + ], + [ + 0.569, + [ + 0.177, + 0.634, + 0.76 + ] + ], + [ + 0.571, + [ + 0.173, + 0.63, + 0.76 + ] + ], + [ + 0.573, + [ + 0.173, + 0.63, + 0.76 + ] + ], + [ + 0.575, + [ + 0.169, + 0.625, + 0.759 + ] + ], + [ + 0.577, + [ + 0.169, + 0.625, + 0.759 + ] + ], + [ + 0.579, + [ + 0.164, + 0.62, + 0.759 + ] + ], + [ + 0.581, + [ + 0.164, + 0.62, + 0.759 + ] + ], + [ + 0.583, + [ + 0.16, + 0.616, + 0.758 + ] + ], + [ + 0.585, + [ + 0.16, + 0.616, + 0.758 + ] + ], + [ + 0.587, + [ + 0.155, + 0.611, + 0.758 + ] + ], + [ + 0.589, + [ + 0.155, + 0.611, + 0.758 + ] + ], + [ + 0.591, + [ + 0.151, + 0.607, + 0.757 + ] + ], + [ + 0.593, + [ + 0.151, + 0.607, + 0.757 + ] + ], + [ + 0.595, + [ + 0.146, + 0.602, + 0.757 + ] + ], + [ + 0.597, + [ + 0.146, + 0.602, + 0.757 + ] + ], + [ + 0.599, + [ + 0.142, + 0.598, + 0.756 + ] + ], + [ + 0.601, + [ + 0.142, + 0.598, + 0.756 + ] + ], + [ + 0.603, + [ + 0.138, + 0.593, + 0.756 + ] + ], + [ + 0.605, + [ + 0.138, + 0.593, + 0.756 + ] + ], + [ + 0.607, + [ + 0.133, + 0.589, + 0.755 + ] + ], + [ + 0.609, + [ + 0.133, + 0.589, + 0.755 + ] + ], + [ + 0.611, + [ + 0.129, + 0.584, + 0.755 + ] + ], + [ + 0.613, + [ + 0.129, + 0.584, + 0.755 + ] + ], + [ + 0.614, + [ + 0.124, + 0.579, + 0.754 + ] + ], + [ + 0.616, + [ + 0.124, + 0.579, + 0.754 + ] + ], + [ + 0.618, + [ + 0.12, + 0.575, + 0.754 + ] + ], + [ + 0.62, + [ + 0.12, + 0.575, + 0.754 + ] + ], + [ + 0.622, + [ + 0.115, + 0.57, + 0.753 + ] + ], + [ + 0.624, + [ + 0.115, + 0.57, + 0.753 + ] + ], + [ + 0.626, + [ + 0.114, + 0.565, + 0.751 + ] + ], + [ + 0.628, + [ + 0.114, + 0.565, + 0.751 + ] + ], + [ + 0.63, + [ + 0.115, + 0.558, + 0.748 + ] + ], + [ + 0.632, + [ + 0.115, + 0.558, + 0.748 + ] + ], + [ + 0.634, + [ + 0.115, + 0.552, + 0.745 + ] + ], + [ + 0.636, + [ + 0.115, + 0.552, + 0.745 + ] + ], + [ + 0.638, + [ + 0.116, + 0.546, + 0.742 + ] + ], + [ + 0.64, + [ + 0.116, + 0.546, + 0.742 + ] + ], + [ + 0.642, + [ + 0.117, + 0.54, + 0.739 + ] + ], + [ + 0.644, + [ + 0.117, + 0.54, + 0.739 + ] + ], + [ + 0.646, + [ + 0.117, + 0.533, + 0.736 + ] + ], + [ + 0.648, + [ + 0.117, + 0.533, + 0.736 + ] + ], + [ + 0.65, + [ + 0.118, + 0.527, + 0.733 + ] + ], + [ + 0.652, + [ + 0.118, + 0.527, + 0.733 + ] + ], + [ + 0.654, + [ + 0.118, + 0.521, + 0.73 + ] + ], + [ + 0.656, + [ + 0.118, + 0.521, + 0.73 + ] + ], + [ + 0.658, + [ + 0.119, + 0.515, + 0.727 + ] + ], + [ + 0.659, + [ + 0.119, + 0.515, + 0.727 + ] + ], + [ + 0.661, + [ + 0.12, + 0.508, + 0.725 + ] + ], + [ + 0.663, + [ + 0.12, + 0.508, + 0.725 + ] + ], + [ + 0.665, + [ + 0.12, + 0.502, + 0.722 + ] + ], + [ + 0.667, + [ + 0.12, + 0.502, + 0.722 + ] + ], + [ + 0.669, + [ + 0.121, + 0.496, + 0.719 + ] + ], + [ + 0.671, + [ + 0.121, + 0.496, + 0.719 + ] + ], + [ + 0.673, + [ + 0.121, + 0.489, + 0.716 + ] + ], + [ + 0.675, + [ + 0.121, + 0.489, + 0.716 + ] + ], + [ + 0.677, + [ + 0.122, + 0.483, + 0.713 + ] + ], + [ + 0.679, + [ + 0.122, + 0.483, + 0.713 + ] + ], + [ + 0.681, + [ + 0.123, + 0.477, + 0.71 + ] + ], + [ + 0.683, + [ + 0.123, + 0.477, + 0.71 + ] + ], + [ + 0.685, + [ + 0.123, + 0.471, + 0.707 + ] + ], + [ + 0.687, + [ + 0.123, + 0.471, + 0.707 + ] + ], + [ + 0.689, + [ + 0.124, + 0.464, + 0.704 + ] + ], + [ + 0.691, + [ + 0.124, + 0.464, + 0.704 + ] + ], + [ + 0.693, + [ + 0.125, + 0.458, + 0.701 + ] + ], + [ + 0.695, + [ + 0.125, + 0.458, + 0.701 + ] + ], + [ + 0.697, + [ + 0.125, + 0.452, + 0.698 + ] + ], + [ + 0.699, + [ + 0.125, + 0.452, + 0.698 + ] + ], + [ + 0.701, + [ + 0.126, + 0.445, + 0.695 + ] + ], + [ + 0.703, + [ + 0.126, + 0.445, + 0.695 + ] + ], + [ + 0.705, + [ + 0.126, + 0.439, + 0.692 + ] + ], + [ + 0.706, + [ + 0.126, + 0.439, + 0.692 + ] + ], + [ + 0.708, + [ + 0.127, + 0.433, + 0.689 + ] + ], + [ + 0.71, + [ + 0.127, + 0.433, + 0.689 + ] + ], + [ + 0.712, + [ + 0.128, + 0.427, + 0.686 + ] + ], + [ + 0.714, + [ + 0.128, + 0.427, + 0.686 + ] + ], + [ + 0.716, + [ + 0.128, + 0.42, + 0.683 + ] + ], + [ + 0.718, + [ + 0.128, + 0.42, + 0.683 + ] + ], + [ + 0.72, + [ + 0.129, + 0.414, + 0.68 + ] + ], + [ + 0.722, + [ + 0.129, + 0.414, + 0.68 + ] + ], + [ + 0.724, + [ + 0.129, + 0.408, + 0.677 + ] + ], + [ + 0.726, + [ + 0.129, + 0.408, + 0.677 + ] + ], + [ + 0.728, + [ + 0.13, + 0.402, + 0.674 + ] + ], + [ + 0.73, + [ + 0.13, + 0.402, + 0.674 + ] + ], + [ + 0.732, + [ + 0.131, + 0.395, + 0.671 + ] + ], + [ + 0.734, + [ + 0.131, + 0.395, + 0.671 + ] + ], + [ + 0.736, + [ + 0.131, + 0.389, + 0.668 + ] + ], + [ + 0.738, + [ + 0.131, + 0.389, + 0.668 + ] + ], + [ + 0.74, + [ + 0.132, + 0.383, + 0.665 + ] + ], + [ + 0.742, + [ + 0.132, + 0.383, + 0.665 + ] + ], + [ + 0.744, + [ + 0.133, + 0.376, + 0.663 + ] + ], + [ + 0.746, + [ + 0.133, + 0.376, + 0.663 + ] + ], + [ + 0.748, + [ + 0.133, + 0.37, + 0.66 + ] + ], + [ + 0.75, + [ + 0.133, + 0.37, + 0.66 + ] + ], + [ + 0.751, + [ + 0.134, + 0.365, + 0.657 + ] + ], + [ + 0.753, + [ + 0.134, + 0.365, + 0.657 + ] + ], + [ + 0.755, + [ + 0.134, + 0.36, + 0.655 + ] + ], + [ + 0.757, + [ + 0.134, + 0.36, + 0.655 + ] + ], + [ + 0.759, + [ + 0.134, + 0.354, + 0.652 + ] + ], + [ + 0.761, + [ + 0.134, + 0.354, + 0.652 + ] + ], + [ + 0.763, + [ + 0.135, + 0.349, + 0.65 + ] + ], + [ + 0.765, + [ + 0.135, + 0.349, + 0.65 + ] + ], + [ + 0.767, + [ + 0.135, + 0.344, + 0.647 + ] + ], + [ + 0.769, + [ + 0.135, + 0.344, + 0.647 + ] + ], + [ + 0.771, + [ + 0.135, + 0.339, + 0.645 + ] + ], + [ + 0.773, + [ + 0.135, + 0.339, + 0.645 + ] + ], + [ + 0.775, + [ + 0.136, + 0.334, + 0.642 + ] + ], + [ + 0.777, + [ + 0.136, + 0.334, + 0.642 + ] + ], + [ + 0.779, + [ + 0.136, + 0.329, + 0.64 + ] + ], + [ + 0.781, + [ + 0.136, + 0.329, + 0.64 + ] + ], + [ + 0.783, + [ + 0.137, + 0.323, + 0.637 + ] + ], + [ + 0.785, + [ + 0.137, + 0.323, + 0.637 + ] + ], + [ + 0.787, + [ + 0.137, + 0.318, + 0.635 + ] + ], + [ + 0.789, + [ + 0.137, + 0.318, + 0.635 + ] + ], + [ + 0.791, + [ + 0.137, + 0.313, + 0.632 + ] + ], + [ + 0.793, + [ + 0.137, + 0.313, + 0.632 + ] + ], + [ + 0.795, + [ + 0.138, + 0.308, + 0.63 + ] + ], + [ + 0.796, + [ + 0.138, + 0.308, + 0.63 + ] + ], + [ + 0.798, + [ + 0.138, + 0.303, + 0.627 + ] + ], + [ + 0.8, + [ + 0.138, + 0.303, + 0.627 + ] + ], + [ + 0.802, + [ + 0.138, + 0.298, + 0.625 + ] + ], + [ + 0.804, + [ + 0.138, + 0.298, + 0.625 + ] + ], + [ + 0.806, + [ + 0.139, + 0.292, + 0.623 + ] + ], + [ + 0.808, + [ + 0.139, + 0.292, + 0.623 + ] + ], + [ + 0.81, + [ + 0.139, + 0.287, + 0.62 + ] + ], + [ + 0.812, + [ + 0.139, + 0.287, + 0.62 + ] + ], + [ + 0.814, + [ + 0.14, + 0.282, + 0.618 + ] + ], + [ + 0.816, + [ + 0.14, + 0.282, + 0.618 + ] + ], + [ + 0.818, + [ + 0.14, + 0.277, + 0.615 + ] + ], + [ + 0.82, + [ + 0.14, + 0.277, + 0.615 + ] + ], + [ + 0.822, + [ + 0.14, + 0.272, + 0.613 + ] + ], + [ + 0.824, + [ + 0.14, + 0.272, + 0.613 + ] + ], + [ + 0.826, + [ + 0.141, + 0.267, + 0.61 + ] + ], + [ + 0.828, + [ + 0.141, + 0.267, + 0.61 + ] + ], + [ + 0.83, + [ + 0.141, + 0.261, + 0.608 + ] + ], + [ + 0.832, + [ + 0.141, + 0.261, + 0.608 + ] + ], + [ + 0.834, + [ + 0.141, + 0.256, + 0.605 + ] + ], + [ + 0.836, + [ + 0.141, + 0.256, + 0.605 + ] + ], + [ + 0.838, + [ + 0.142, + 0.251, + 0.603 + ] + ], + [ + 0.84, + [ + 0.142, + 0.251, + 0.603 + ] + ], + [ + 0.841, + [ + 0.142, + 0.246, + 0.6 + ] + ], + [ + 0.843, + [ + 0.142, + 0.246, + 0.6 + ] + ], + [ + 0.845, + [ + 0.142, + 0.241, + 0.598 + ] + ], + [ + 0.847, + [ + 0.142, + 0.241, + 0.598 + ] + ], + [ + 0.849, + [ + 0.143, + 0.236, + 0.595 + ] + ], + [ + 0.851, + [ + 0.143, + 0.236, + 0.595 + ] + ], + [ + 0.853, + [ + 0.143, + 0.23, + 0.593 + ] + ], + [ + 0.855, + [ + 0.143, + 0.23, + 0.593 + ] + ], + [ + 0.857, + [ + 0.144, + 0.225, + 0.591 + ] + ], + [ + 0.859, + [ + 0.144, + 0.225, + 0.591 + ] + ], + [ + 0.861, + [ + 0.144, + 0.22, + 0.588 + ] + ], + [ + 0.863, + [ + 0.144, + 0.22, + 0.588 + ] + ], + [ + 0.865, + [ + 0.144, + 0.215, + 0.586 + ] + ], + [ + 0.867, + [ + 0.144, + 0.215, + 0.586 + ] + ], + [ + 0.869, + [ + 0.145, + 0.21, + 0.583 + ] + ], + [ + 0.871, + [ + 0.145, + 0.21, + 0.583 + ] + ], + [ + 0.873, + [ + 0.145, + 0.205, + 0.581 + ] + ], + [ + 0.875, + [ + 0.145, + 0.205, + 0.581 + ] + ], + [ + 0.877, + [ + 0.142, + 0.201, + 0.574 + ] + ], + [ + 0.879, + [ + 0.142, + 0.201, + 0.574 + ] + ], + [ + 0.881, + [ + 0.138, + 0.199, + 0.567 + ] + ], + [ + 0.883, + [ + 0.138, + 0.199, + 0.567 + ] + ], + [ + 0.885, + [ + 0.135, + 0.196, + 0.559 + ] + ], + [ + 0.886, + [ + 0.135, + 0.196, + 0.559 + ] + ], + [ + 0.888, + [ + 0.131, + 0.193, + 0.552 + ] + ], + [ + 0.89, + [ + 0.131, + 0.193, + 0.552 + ] + ], + [ + 0.892, + [ + 0.128, + 0.19, + 0.544 + ] + ], + [ + 0.894, + [ + 0.128, + 0.19, + 0.544 + ] + ], + [ + 0.896, + [ + 0.124, + 0.187, + 0.537 + ] + ], + [ + 0.898, + [ + 0.124, + 0.187, + 0.537 + ] + ], + [ + 0.9, + [ + 0.121, + 0.184, + 0.53 + ] + ], + [ + 0.902, + [ + 0.121, + 0.184, + 0.53 + ] + ], + [ + 0.904, + [ + 0.117, + 0.182, + 0.522 + ] + ], + [ + 0.906, + [ + 0.117, + 0.182, + 0.522 + ] + ], + [ + 0.908, + [ + 0.113, + 0.179, + 0.515 + ] + ], + [ + 0.91, + [ + 0.113, + 0.179, + 0.515 + ] + ], + [ + 0.912, + [ + 0.11, + 0.176, + 0.507 + ] + ], + [ + 0.914, + [ + 0.11, + 0.176, + 0.507 + ] + ], + [ + 0.916, + [ + 0.106, + 0.173, + 0.5 + ] + ], + [ + 0.918, + [ + 0.106, + 0.173, + 0.5 + ] + ], + [ + 0.92, + [ + 0.103, + 0.17, + 0.493 + ] + ], + [ + 0.922, + [ + 0.103, + 0.17, + 0.493 + ] + ], + [ + 0.924, + [ + 0.099, + 0.167, + 0.485 + ] + ], + [ + 0.926, + [ + 0.099, + 0.167, + 0.485 + ] + ], + [ + 0.928, + [ + 0.096, + 0.165, + 0.478 + ] + ], + [ + 0.93, + [ + 0.096, + 0.165, + 0.478 + ] + ], + [ + 0.932, + [ + 0.092, + 0.162, + 0.471 + ] + ], + [ + 0.933, + [ + 0.092, + 0.162, + 0.471 + ] + ], + [ + 0.935, + [ + 0.088, + 0.159, + 0.463 + ] + ], + [ + 0.937, + [ + 0.088, + 0.159, + 0.463 + ] + ], + [ + 0.939, + [ + 0.085, + 0.156, + 0.456 + ] + ], + [ + 0.941, + [ + 0.085, + 0.156, + 0.456 + ] + ], + [ + 0.943, + [ + 0.081, + 0.153, + 0.448 + ] + ], + [ + 0.945, + [ + 0.081, + 0.153, + 0.448 + ] + ], + [ + 0.947, + [ + 0.078, + 0.151, + 0.441 + ] + ], + [ + 0.949, + [ + 0.078, + 0.151, + 0.441 + ] + ], + [ + 0.951, + [ + 0.074, + 0.148, + 0.434 + ] + ], + [ + 0.953, + [ + 0.074, + 0.148, + 0.434 + ] + ], + [ + 0.955, + [ + 0.071, + 0.145, + 0.426 + ] + ], + [ + 0.957, + [ + 0.071, + 0.145, + 0.426 + ] + ], + [ + 0.959, + [ + 0.067, + 0.142, + 0.419 + ] + ], + [ + 0.961, + [ + 0.067, + 0.142, + 0.419 + ] + ], + [ + 0.963, + [ + 0.063, + 0.139, + 0.412 + ] + ], + [ + 0.965, + [ + 0.063, + 0.139, + 0.412 + ] + ], + [ + 0.967, + [ + 0.06, + 0.136, + 0.404 + ] + ], + [ + 0.969, + [ + 0.06, + 0.136, + 0.404 + ] + ], + [ + 0.971, + [ + 0.056, + 0.134, + 0.397 + ] + ], + [ + 0.973, + [ + 0.056, + 0.134, + 0.397 + ] + ], + [ + 0.975, + [ + 0.053, + 0.131, + 0.389 + ] + ], + [ + 0.977, + [ + 0.053, + 0.131, + 0.389 + ] + ], + [ + 0.978, + [ + 0.049, + 0.128, + 0.382 + ] + ], + [ + 0.98, + [ + 0.049, + 0.128, + 0.382 + ] + ], + [ + 0.982, + [ + 0.046, + 0.125, + 0.375 + ] + ], + [ + 0.984, + [ + 0.046, + 0.125, + 0.375 + ] + ], + [ + 0.986, + [ + 0.042, + 0.122, + 0.367 + ] + ], + [ + 0.988, + [ + 0.042, + 0.122, + 0.367 + ] + ], + [ + 0.99, + [ + 0.039, + 0.119, + 0.36 + ] + ], + [ + 0.992, + [ + 0.039, + 0.119, + 0.36 + ] + ], + [ + 0.994, + [ + 0.035, + 0.117, + 0.352 + ] + ], + [ + 0.996, + [ + 0.035, + 0.117, + 0.352 + ] + ], + [ + 0.998, + [ + 0.031, + 0.114, + 0.345 + ] + ], + [ + 1, + [ + 0.031, + 0.114, + 0.345 + ] + ] + ], + [ + [ + 0, + [ + 0, + 0, + 1 + ] + ], + [ + 0.002, + [ + 0, + 0, + 1 + ] + ], + [ + 0.004, + [ + 0, + 0.004, + 0.998 + ] + ], + [ + 0.006, + [ + 0, + 0.004, + 0.998 + ] + ], + [ + 0.008, + [ + 0, + 0.008, + 0.996 + ] + ], + [ + 0.01, + [ + 0, + 0.008, + 0.996 + ] + ], + [ + 0.012, + [ + 0, + 0.012, + 0.994 + ] + ], + [ + 0.014, + [ + 0, + 0.012, + 0.994 + ] + ], + [ + 0.016, + [ + 0, + 0.016, + 0.992 + ] + ], + [ + 0.018, + [ + 0, + 0.016, + 0.992 + ] + ], + [ + 0.02, + [ + 0, + 0.02, + 0.99 + ] + ], + [ + 0.022, + [ + 0, + 0.02, + 0.99 + ] + ], + [ + 0.023, + [ + 0, + 0.024, + 0.988 + ] + ], + [ + 0.025, + [ + 0, + 0.024, + 0.988 + ] + ], + [ + 0.027, + [ + 0, + 0.027, + 0.986 + ] + ], + [ + 0.029, + [ + 0, + 0.027, + 0.986 + ] + ], + [ + 0.031, + [ + 0, + 0.031, + 0.984 + ] + ], + [ + 0.033, + [ + 0, + 0.031, + 0.984 + ] + ], + [ + 0.035, + [ + 0, + 0.035, + 0.982 + ] + ], + [ + 0.037, + [ + 0, + 0.035, + 0.982 + ] + ], + [ + 0.039, + [ + 0, + 0.039, + 0.98 + ] + ], + [ + 0.041, + [ + 0, + 0.039, + 0.98 + ] + ], + [ + 0.043, + [ + 0, + 0.043, + 0.978 + ] + ], + [ + 0.045, + [ + 0, + 0.043, + 0.978 + ] + ], + [ + 0.047, + [ + 0, + 0.047, + 0.976 + ] + ], + [ + 0.049, + [ + 0, + 0.047, + 0.976 + ] + ], + [ + 0.051, + [ + 0, + 0.051, + 0.975 + ] + ], + [ + 0.053, + [ + 0, + 0.051, + 0.975 + ] + ], + [ + 0.055, + [ + 0, + 0.055, + 0.973 + ] + ], + [ + 0.057, + [ + 0, + 0.055, + 0.973 + ] + ], + [ + 0.059, + [ + 0, + 0.059, + 0.971 + ] + ], + [ + 0.061, + [ + 0, + 0.059, + 0.971 + ] + ], + [ + 0.063, + [ + 0, + 0.063, + 0.969 + ] + ], + [ + 0.065, + [ + 0, + 0.063, + 0.969 + ] + ], + [ + 0.067, + [ + 0, + 0.067, + 0.967 + ] + ], + [ + 0.068, + [ + 0, + 0.067, + 0.967 + ] + ], + [ + 0.07, + [ + 0, + 0.071, + 0.965 + ] + ], + [ + 0.072, + [ + 0, + 0.071, + 0.965 + ] + ], + [ + 0.074, + [ + 0, + 0.075, + 0.963 + ] + ], + [ + 0.076, + [ + 0, + 0.075, + 0.963 + ] + ], + [ + 0.078, + [ + 0, + 0.078, + 0.961 + ] + ], + [ + 0.08, + [ + 0, + 0.078, + 0.961 + ] + ], + [ + 0.082, + [ + 0, + 0.082, + 0.959 + ] + ], + [ + 0.084, + [ + 0, + 0.082, + 0.959 + ] + ], + [ + 0.086, + [ + 0, + 0.086, + 0.957 + ] + ], + [ + 0.088, + [ + 0, + 0.086, + 0.957 + ] + ], + [ + 0.09, + [ + 0, + 0.09, + 0.955 + ] + ], + [ + 0.092, + [ + 0, + 0.09, + 0.955 + ] + ], + [ + 0.094, + [ + 0, + 0.094, + 0.953 + ] + ], + [ + 0.096, + [ + 0, + 0.094, + 0.953 + ] + ], + [ + 0.098, + [ + 0, + 0.098, + 0.951 + ] + ], + [ + 0.1, + [ + 0, + 0.098, + 0.951 + ] + ], + [ + 0.102, + [ + 0, + 0.102, + 0.949 + ] + ], + [ + 0.104, + [ + 0, + 0.102, + 0.949 + ] + ], + [ + 0.106, + [ + 0, + 0.106, + 0.947 + ] + ], + [ + 0.108, + [ + 0, + 0.106, + 0.947 + ] + ], + [ + 0.11, + [ + 0, + 0.11, + 0.945 + ] + ], + [ + 0.112, + [ + 0, + 0.11, + 0.945 + ] + ], + [ + 0.114, + [ + 0, + 0.114, + 0.943 + ] + ], + [ + 0.115, + [ + 0, + 0.114, + 0.943 + ] + ], + [ + 0.117, + [ + 0, + 0.118, + 0.941 + ] + ], + [ + 0.119, + [ + 0, + 0.118, + 0.941 + ] + ], + [ + 0.121, + [ + 0, + 0.122, + 0.939 + ] + ], + [ + 0.123, + [ + 0, + 0.122, + 0.939 + ] + ], + [ + 0.125, + [ + 0, + 0.125, + 0.937 + ] + ], + [ + 0.127, + [ + 0, + 0.125, + 0.937 + ] + ], + [ + 0.129, + [ + 0, + 0.129, + 0.935 + ] + ], + [ + 0.131, + [ + 0, + 0.129, + 0.935 + ] + ], + [ + 0.133, + [ + 0, + 0.133, + 0.933 + ] + ], + [ + 0.135, + [ + 0, + 0.133, + 0.933 + ] + ], + [ + 0.137, + [ + 0, + 0.137, + 0.931 + ] + ], + [ + 0.139, + [ + 0, + 0.137, + 0.931 + ] + ], + [ + 0.141, + [ + 0, + 0.141, + 0.929 + ] + ], + [ + 0.143, + [ + 0, + 0.141, + 0.929 + ] + ], + [ + 0.145, + [ + 0, + 0.145, + 0.927 + ] + ], + [ + 0.147, + [ + 0, + 0.145, + 0.927 + ] + ], + [ + 0.149, + [ + 0, + 0.149, + 0.925 + ] + ], + [ + 0.151, + [ + 0, + 0.149, + 0.925 + ] + ], + [ + 0.153, + [ + 0, + 0.153, + 0.924 + ] + ], + [ + 0.155, + [ + 0, + 0.153, + 0.924 + ] + ], + [ + 0.157, + [ + 0, + 0.157, + 0.922 + ] + ], + [ + 0.159, + [ + 0, + 0.157, + 0.922 + ] + ], + [ + 0.16, + [ + 0, + 0.161, + 0.92 + ] + ], + [ + 0.162, + [ + 0, + 0.161, + 0.92 + ] + ], + [ + 0.164, + [ + 0, + 0.165, + 0.918 + ] + ], + [ + 0.166, + [ + 0, + 0.165, + 0.918 + ] + ], + [ + 0.168, + [ + 0, + 0.169, + 0.916 + ] + ], + [ + 0.17, + [ + 0, + 0.169, + 0.916 + ] + ], + [ + 0.172, + [ + 0, + 0.173, + 0.914 + ] + ], + [ + 0.174, + [ + 0, + 0.173, + 0.914 + ] + ], + [ + 0.176, + [ + 0, + 0.176, + 0.912 + ] + ], + [ + 0.178, + [ + 0, + 0.176, + 0.912 + ] + ], + [ + 0.18, + [ + 0, + 0.18, + 0.91 + ] + ], + [ + 0.182, + [ + 0, + 0.18, + 0.91 + ] + ], + [ + 0.184, + [ + 0, + 0.184, + 0.908 + ] + ], + [ + 0.186, + [ + 0, + 0.184, + 0.908 + ] + ], + [ + 0.188, + [ + 0, + 0.188, + 0.906 + ] + ], + [ + 0.19, + [ + 0, + 0.188, + 0.906 + ] + ], + [ + 0.192, + [ + 0, + 0.192, + 0.904 + ] + ], + [ + 0.194, + [ + 0, + 0.192, + 0.904 + ] + ], + [ + 0.196, + [ + 0, + 0.196, + 0.902 + ] + ], + [ + 0.198, + [ + 0, + 0.196, + 0.902 + ] + ], + [ + 0.2, + [ + 0, + 0.2, + 0.9 + ] + ], + [ + 0.202, + [ + 0, + 0.2, + 0.9 + ] + ], + [ + 0.204, + [ + 0, + 0.204, + 0.898 + ] + ], + [ + 0.205, + [ + 0, + 0.204, + 0.898 + ] + ], + [ + 0.207, + [ + 0, + 0.208, + 0.896 + ] + ], + [ + 0.209, + [ + 0, + 0.208, + 0.896 + ] + ], + [ + 0.211, + [ + 0, + 0.212, + 0.894 + ] + ], + [ + 0.213, + [ + 0, + 0.212, + 0.894 + ] + ], + [ + 0.215, + [ + 0, + 0.216, + 0.892 + ] + ], + [ + 0.217, + [ + 0, + 0.216, + 0.892 + ] + ], + [ + 0.219, + [ + 0, + 0.22, + 0.89 + ] + ], + [ + 0.221, + [ + 0, + 0.22, + 0.89 + ] + ], + [ + 0.223, + [ + 0, + 0.224, + 0.888 + ] + ], + [ + 0.225, + [ + 0, + 0.224, + 0.888 + ] + ], + [ + 0.227, + [ + 0, + 0.227, + 0.886 + ] + ], + [ + 0.229, + [ + 0, + 0.227, + 0.886 + ] + ], + [ + 0.231, + [ + 0, + 0.231, + 0.884 + ] + ], + [ + 0.233, + [ + 0, + 0.231, + 0.884 + ] + ], + [ + 0.235, + [ + 0, + 0.235, + 0.882 + ] + ], + [ + 0.237, + [ + 0, + 0.235, + 0.882 + ] + ], + [ + 0.239, + [ + 0, + 0.239, + 0.88 + ] + ], + [ + 0.241, + [ + 0, + 0.239, + 0.88 + ] + ], + [ + 0.243, + [ + 0, + 0.243, + 0.878 + ] + ], + [ + 0.245, + [ + 0, + 0.243, + 0.878 + ] + ], + [ + 0.247, + [ + 0, + 0.247, + 0.876 + ] + ], + [ + 0.249, + [ + 0, + 0.247, + 0.876 + ] + ], + [ + 0.25, + [ + 0, + 0.251, + 0.875 + ] + ], + [ + 0.252, + [ + 0, + 0.251, + 0.875 + ] + ], + [ + 0.254, + [ + 0, + 0.255, + 0.873 + ] + ], + [ + 0.256, + [ + 0, + 0.255, + 0.873 + ] + ], + [ + 0.258, + [ + 0, + 0.259, + 0.871 + ] + ], + [ + 0.26, + [ + 0, + 0.259, + 0.871 + ] + ], + [ + 0.262, + [ + 0, + 0.263, + 0.869 + ] + ], + [ + 0.264, + [ + 0, + 0.263, + 0.869 + ] + ], + [ + 0.266, + [ + 0, + 0.267, + 0.867 + ] + ], + [ + 0.268, + [ + 0, + 0.267, + 0.867 + ] + ], + [ + 0.27, + [ + 0, + 0.271, + 0.865 + ] + ], + [ + 0.272, + [ + 0, + 0.271, + 0.865 + ] + ], + [ + 0.274, + [ + 0, + 0.275, + 0.863 + ] + ], + [ + 0.276, + [ + 0, + 0.275, + 0.863 + ] + ], + [ + 0.278, + [ + 0, + 0.278, + 0.861 + ] + ], + [ + 0.28, + [ + 0, + 0.278, + 0.861 + ] + ], + [ + 0.282, + [ + 0, + 0.282, + 0.859 + ] + ], + [ + 0.028, + [ + 0, + 0.282, + 0.859 + ] + ], + [ + 0.286, + [ + 0, + 0.286, + 0.857 + ] + ], + [ + 0.288, + [ + 0, + 0.286, + 0.857 + ] + ], + [ + 0.29, + [ + 0, + 0.29, + 0.855 + ] + ], + [ + 0.292, + [ + 0, + 0.29, + 0.855 + ] + ], + [ + 0.294, + [ + 0, + 0.294, + 0.853 + ] + ], + [ + 0.295, + [ + 0, + 0.294, + 0.853 + ] + ], + [ + 0.297, + [ + 0, + 0.298, + 0.851 + ] + ], + [ + 0.299, + [ + 0, + 0.298, + 0.851 + ] + ], + [ + 0.301, + [ + 0, + 0.302, + 0.849 + ] + ], + [ + 0.303, + [ + 0, + 0.302, + 0.849 + ] + ], + [ + 0.305, + [ + 0, + 0.306, + 0.847 + ] + ], + [ + 0.307, + [ + 0, + 0.306, + 0.847 + ] + ], + [ + 0.309, + [ + 0, + 0.31, + 0.845 + ] + ], + [ + 0.311, + [ + 0, + 0.31, + 0.845 + ] + ], + [ + 0.313, + [ + 0, + 0.314, + 0.843 + ] + ], + [ + 0.315, + [ + 0, + 0.314, + 0.843 + ] + ], + [ + 0.317, + [ + 0, + 0.318, + 0.841 + ] + ], + [ + 0.319, + [ + 0, + 0.318, + 0.841 + ] + ], + [ + 0.321, + [ + 0, + 0.322, + 0.839 + ] + ], + [ + 0.323, + [ + 0, + 0.322, + 0.839 + ] + ], + [ + 0.325, + [ + 0, + 0.325, + 0.837 + ] + ], + [ + 0.327, + [ + 0, + 0.325, + 0.837 + ] + ], + [ + 0.329, + [ + 0, + 0.329, + 0.835 + ] + ], + [ + 0.331, + [ + 0, + 0.329, + 0.835 + ] + ], + [ + 0.333, + [ + 0, + 0.333, + 0.833 + ] + ], + [ + 0.335, + [ + 0, + 0.333, + 0.833 + ] + ], + [ + 0.337, + [ + 0, + 0.337, + 0.831 + ] + ], + [ + 0.339, + [ + 0, + 0.337, + 0.831 + ] + ], + [ + 0.341, + [ + 0, + 0.341, + 0.829 + ] + ], + [ + 0.342, + [ + 0, + 0.341, + 0.829 + ] + ], + [ + 0.344, + [ + 0, + 0.345, + 0.827 + ] + ], + [ + 0.346, + [ + 0, + 0.345, + 0.827 + ] + ], + [ + 0.348, + [ + 0, + 0.349, + 0.825 + ] + ], + [ + 0.35, + [ + 0, + 0.349, + 0.825 + ] + ], + [ + 0.352, + [ + 0, + 0.353, + 0.824 + ] + ], + [ + 0.354, + [ + 0, + 0.353, + 0.824 + ] + ], + [ + 0.356, + [ + 0, + 0.357, + 0.822 + ] + ], + [ + 0.358, + [ + 0, + 0.357, + 0.822 + ] + ], + [ + 0.36, + [ + 0, + 0.361, + 0.82 + ] + ], + [ + 0.362, + [ + 0, + 0.361, + 0.82 + ] + ], + [ + 0.364, + [ + 0, + 0.365, + 0.818 + ] + ], + [ + 0.366, + [ + 0, + 0.365, + 0.818 + ] + ], + [ + 0.368, + [ + 0, + 0.369, + 0.816 + ] + ], + [ + 0.37, + [ + 0, + 0.369, + 0.816 + ] + ], + [ + 0.372, + [ + 0, + 0.373, + 0.814 + ] + ], + [ + 0.374, + [ + 0, + 0.373, + 0.814 + ] + ], + [ + 0.376, + [ + 0, + 0.376, + 0.812 + ] + ], + [ + 0.378, + [ + 0, + 0.376, + 0.812 + ] + ], + [ + 0.38, + [ + 0, + 0.38, + 0.81 + ] + ], + [ + 0.382, + [ + 0, + 0.38, + 0.81 + ] + ], + [ + 0.384, + [ + 0, + 0.384, + 0.808 + ] + ], + [ + 0.386, + [ + 0, + 0.384, + 0.808 + ] + ], + [ + 0.387, + [ + 0, + 0.388, + 0.806 + ] + ], + [ + 0.389, + [ + 0, + 0.388, + 0.806 + ] + ], + [ + 0.391, + [ + 0, + 0.392, + 0.804 + ] + ], + [ + 0.393, + [ + 0, + 0.392, + 0.804 + ] + ], + [ + 0.395, + [ + 0, + 0.396, + 0.802 + ] + ], + [ + 0.397, + [ + 0, + 0.396, + 0.802 + ] + ], + [ + 0.399, + [ + 0, + 0.4, + 0.8 + ] + ], + [ + 0.401, + [ + 0, + 0.4, + 0.8 + ] + ], + [ + 0.403, + [ + 0, + 0.404, + 0.798 + ] + ], + [ + 0.405, + [ + 0, + 0.404, + 0.798 + ] + ], + [ + 0.407, + [ + 0, + 0.408, + 0.796 + ] + ], + [ + 0.409, + [ + 0, + 0.408, + 0.796 + ] + ], + [ + 0.411, + [ + 0, + 0.412, + 0.794 + ] + ], + [ + 0.413, + [ + 0, + 0.412, + 0.794 + ] + ], + [ + 0.415, + [ + 0, + 0.416, + 0.792 + ] + ], + [ + 0.417, + [ + 0, + 0.416, + 0.792 + ] + ], + [ + 0.419, + [ + 0, + 0.42, + 0.79 + ] + ], + [ + 0.421, + [ + 0, + 0.42, + 0.79 + ] + ], + [ + 0.423, + [ + 0, + 0.424, + 0.788 + ] + ], + [ + 0.425, + [ + 0, + 0.424, + 0.788 + ] + ], + [ + 0.427, + [ + 0, + 0.427, + 0.786 + ] + ], + [ + 0.429, + [ + 0, + 0.427, + 0.786 + ] + ], + [ + 0.431, + [ + 0, + 0.431, + 0.784 + ] + ], + [ + 0.432, + [ + 0, + 0.431, + 0.784 + ] + ], + [ + 0.434, + [ + 0, + 0.435, + 0.782 + ] + ], + [ + 0.436, + [ + 0, + 0.435, + 0.782 + ] + ], + [ + 0.438, + [ + 0, + 0.439, + 0.78 + ] + ], + [ + 0.44, + [ + 0, + 0.439, + 0.78 + ] + ], + [ + 0.442, + [ + 0, + 0.443, + 0.778 + ] + ], + [ + 0.444, + [ + 0, + 0.443, + 0.778 + ] + ], + [ + 0.446, + [ + 0, + 0.447, + 0.776 + ] + ], + [ + 0.448, + [ + 0, + 0.447, + 0.776 + ] + ], + [ + 0.45, + [ + 0, + 0.451, + 0.775 + ] + ], + [ + 0.452, + [ + 0, + 0.451, + 0.775 + ] + ], + [ + 0.454, + [ + 0, + 0.455, + 0.773 + ] + ], + [ + 0.456, + [ + 0, + 0.455, + 0.773 + ] + ], + [ + 0.458, + [ + 0, + 0.459, + 0.771 + ] + ], + [ + 0.46, + [ + 0, + 0.459, + 0.771 + ] + ], + [ + 0.462, + [ + 0, + 0.463, + 0.769 + ] + ], + [ + 0.464, + [ + 0, + 0.463, + 0.769 + ] + ], + [ + 0.466, + [ + 0, + 0.467, + 0.767 + ] + ], + [ + 0.468, + [ + 0, + 0.467, + 0.767 + ] + ], + [ + 0.47, + [ + 0, + 0.471, + 0.765 + ] + ], + [ + 0.472, + [ + 0, + 0.471, + 0.765 + ] + ], + [ + 0.474, + [ + 0, + 0.475, + 0.763 + ] + ], + [ + 0.476, + [ + 0, + 0.475, + 0.763 + ] + ], + [ + 0.477, + [ + 0, + 0.478, + 0.761 + ] + ], + [ + 0.479, + [ + 0, + 0.478, + 0.761 + ] + ], + [ + 0.481, + [ + 0, + 0.482, + 0.759 + ] + ], + [ + 0.483, + [ + 0, + 0.482, + 0.759 + ] + ], + [ + 0.485, + [ + 0, + 0.486, + 0.757 + ] + ], + [ + 0.487, + [ + 0, + 0.486, + 0.757 + ] + ], + [ + 0.489, + [ + 0, + 0.49, + 0.755 + ] + ], + [ + 0.491, + [ + 0, + 0.49, + 0.755 + ] + ], + [ + 0.493, + [ + 0, + 0.494, + 0.753 + ] + ], + [ + 0.495, + [ + 0, + 0.494, + 0.753 + ] + ], + [ + 0.497, + [ + 0, + 0.498, + 0.751 + ] + ], + [ + 0.499, + [ + 0, + 0.498, + 0.751 + ] + ], + [ + 0.501, + [ + 0, + 0.502, + 0.749 + ] + ], + [ + 0.503, + [ + 0, + 0.502, + 0.749 + ] + ], + [ + 0.505, + [ + 0, + 0.506, + 0.747 + ] + ], + [ + 0.507, + [ + 0, + 0.506, + 0.747 + ] + ], + [ + 0.509, + [ + 0, + 0.51, + 0.745 + ] + ], + [ + 0.511, + [ + 0, + 0.51, + 0.745 + ] + ], + [ + 0.513, + [ + 0, + 0.514, + 0.743 + ] + ], + [ + 0.515, + [ + 0, + 0.514, + 0.743 + ] + ], + [ + 0.517, + [ + 0, + 0.518, + 0.741 + ] + ], + [ + 0.519, + [ + 0, + 0.518, + 0.741 + ] + ], + [ + 0.521, + [ + 0, + 0.522, + 0.739 + ] + ], + [ + 0.523, + [ + 0, + 0.522, + 0.739 + ] + ], + [ + 0.524, + [ + 0, + 0.525, + 0.737 + ] + ], + [ + 0.526, + [ + 0, + 0.525, + 0.737 + ] + ], + [ + 0.528, + [ + 0, + 0.529, + 0.735 + ] + ], + [ + 0.53, + [ + 0, + 0.529, + 0.735 + ] + ], + [ + 0.532, + [ + 0, + 0.533, + 0.733 + ] + ], + [ + 0.534, + [ + 0, + 0.533, + 0.733 + ] + ], + [ + 0.536, + [ + 0, + 0.537, + 0.731 + ] + ], + [ + 0.538, + [ + 0, + 0.537, + 0.731 + ] + ], + [ + 0.54, + [ + 0, + 0.541, + 0.729 + ] + ], + [ + 0.542, + [ + 0, + 0.541, + 0.729 + ] + ], + [ + 0.544, + [ + 0, + 0.545, + 0.727 + ] + ], + [ + 0.546, + [ + 0, + 0.545, + 0.727 + ] + ], + [ + 0.548, + [ + 0, + 0.549, + 0.725 + ] + ], + [ + 0.55, + [ + 0, + 0.549, + 0.725 + ] + ], + [ + 0.552, + [ + 0, + 0.553, + 0.724 + ] + ], + [ + 0.554, + [ + 0, + 0.553, + 0.724 + ] + ], + [ + 0.556, + [ + 0, + 0.557, + 0.722 + ] + ], + [ + 0.558, + [ + 0, + 0.557, + 0.722 + ] + ], + [ + 0.56, + [ + 0, + 0.561, + 0.72 + ] + ], + [ + 0.562, + [ + 0, + 0.561, + 0.72 + ] + ], + [ + 0.564, + [ + 0, + 0.565, + 0.718 + ] + ], + [ + 0.566, + [ + 0, + 0.565, + 0.718 + ] + ], + [ + 0.568, + [ + 0, + 0.569, + 0.716 + ] + ], + [ + 0.569, + [ + 0, + 0.569, + 0.716 + ] + ], + [ + 0.571, + [ + 0, + 0.573, + 0.714 + ] + ], + [ + 0.573, + [ + 0, + 0.573, + 0.714 + ] + ], + [ + 0.575, + [ + 0, + 0.576, + 0.712 + ] + ], + [ + 0.577, + [ + 0, + 0.576, + 0.712 + ] + ], + [ + 0.579, + [ + 0, + 0.58, + 0.71 + ] + ], + [ + 0.581, + [ + 0, + 0.58, + 0.71 + ] + ], + [ + 0.583, + [ + 0, + 0.584, + 0.708 + ] + ], + [ + 0.585, + [ + 0, + 0.584, + 0.708 + ] + ], + [ + 0.587, + [ + 0, + 0.588, + 0.706 + ] + ], + [ + 0.589, + [ + 0, + 0.588, + 0.706 + ] + ], + [ + 0.591, + [ + 0, + 0.592, + 0.704 + ] + ], + [ + 0.593, + [ + 0, + 0.592, + 0.704 + ] + ], + [ + 0.595, + [ + 0, + 0.596, + 0.702 + ] + ], + [ + 0.597, + [ + 0, + 0.596, + 0.702 + ] + ], + [ + 0.599, + [ + 0, + 0.6, + 0.7 + ] + ], + [ + 0.601, + [ + 0, + 0.6, + 0.7 + ] + ], + [ + 0.603, + [ + 0, + 0.604, + 0.698 + ] + ], + [ + 0.605, + [ + 0, + 0.604, + 0.698 + ] + ], + [ + 0.607, + [ + 0, + 0.608, + 0.696 + ] + ], + [ + 0.609, + [ + 0, + 0.608, + 0.696 + ] + ], + [ + 0.611, + [ + 0, + 0.612, + 0.694 + ] + ], + [ + 0.613, + [ + 0, + 0.612, + 0.694 + ] + ], + [ + 0.614, + [ + 0, + 0.616, + 0.692 + ] + ], + [ + 0.616, + [ + 0, + 0.616, + 0.692 + ] + ], + [ + 0.618, + [ + 0, + 0.62, + 0.69 + ] + ], + [ + 0.62, + [ + 0, + 0.62, + 0.69 + ] + ], + [ + 0.622, + [ + 0, + 0.624, + 0.688 + ] + ], + [ + 0.624, + [ + 0, + 0.624, + 0.688 + ] + ], + [ + 0.626, + [ + 0, + 0.627, + 0.686 + ] + ], + [ + 0.628, + [ + 0, + 0.627, + 0.686 + ] + ], + [ + 0.63, + [ + 0, + 0.631, + 0.684 + ] + ], + [ + 0.632, + [ + 0, + 0.631, + 0.684 + ] + ], + [ + 0.634, + [ + 0, + 0.635, + 0.682 + ] + ], + [ + 0.636, + [ + 0, + 0.635, + 0.682 + ] + ], + [ + 0.638, + [ + 0, + 0.639, + 0.68 + ] + ], + [ + 0.64, + [ + 0, + 0.639, + 0.68 + ] + ], + [ + 0.642, + [ + 0, + 0.643, + 0.678 + ] + ], + [ + 0.644, + [ + 0, + 0.643, + 0.678 + ] + ], + [ + 0.646, + [ + 0, + 0.647, + 0.676 + ] + ], + [ + 0.648, + [ + 0, + 0.647, + 0.676 + ] + ], + [ + 0.65, + [ + 0, + 0.651, + 0.675 + ] + ], + [ + 0.652, + [ + 0, + 0.651, + 0.675 + ] + ], + [ + 0.654, + [ + 0, + 0.655, + 0.673 + ] + ], + [ + 0.656, + [ + 0, + 0.655, + 0.673 + ] + ], + [ + 0.658, + [ + 0, + 0.659, + 0.671 + ] + ], + [ + 0.659, + [ + 0, + 0.659, + 0.671 + ] + ], + [ + 0.661, + [ + 0, + 0.663, + 0.669 + ] + ], + [ + 0.663, + [ + 0, + 0.663, + 0.669 + ] + ], + [ + 0.665, + [ + 0, + 0.667, + 0.667 + ] + ], + [ + 0.667, + [ + 0, + 0.667, + 0.667 + ] + ], + [ + 0.669, + [ + 0, + 0.671, + 0.665 + ] + ], + [ + 0.671, + [ + 0, + 0.671, + 0.665 + ] + ], + [ + 0.673, + [ + 0, + 0.675, + 0.663 + ] + ], + [ + 0.675, + [ + 0, + 0.675, + 0.663 + ] + ], + [ + 0.677, + [ + 0, + 0.678, + 0.661 + ] + ], + [ + 0.679, + [ + 0, + 0.678, + 0.661 + ] + ], + [ + 0.681, + [ + 0, + 0.682, + 0.659 + ] + ], + [ + 0.683, + [ + 0, + 0.682, + 0.659 + ] + ], + [ + 0.685, + [ + 0, + 0.686, + 0.657 + ] + ], + [ + 0.687, + [ + 0, + 0.686, + 0.657 + ] + ], + [ + 0.689, + [ + 0, + 0.69, + 0.655 + ] + ], + [ + 0.691, + [ + 0, + 0.69, + 0.655 + ] + ], + [ + 0.693, + [ + 0, + 0.694, + 0.653 + ] + ], + [ + 0.695, + [ + 0, + 0.694, + 0.653 + ] + ], + [ + 0.697, + [ + 0, + 0.698, + 0.651 + ] + ], + [ + 0.699, + [ + 0, + 0.698, + 0.651 + ] + ], + [ + 0.701, + [ + 0, + 0.702, + 0.649 + ] + ], + [ + 0.703, + [ + 0, + 0.702, + 0.649 + ] + ], + [ + 0.705, + [ + 0, + 0.706, + 0.647 + ] + ], + [ + 0.706, + [ + 0, + 0.706, + 0.647 + ] + ], + [ + 0.708, + [ + 0, + 0.71, + 0.645 + ] + ], + [ + 0.71, + [ + 0, + 0.71, + 0.645 + ] + ], + [ + 0.712, + [ + 0, + 0.714, + 0.643 + ] + ], + [ + 0.714, + [ + 0, + 0.714, + 0.643 + ] + ], + [ + 0.716, + [ + 0, + 0.718, + 0.641 + ] + ], + [ + 0.718, + [ + 0, + 0.718, + 0.641 + ] + ], + [ + 0.72, + [ + 0, + 0.722, + 0.639 + ] + ], + [ + 0.722, + [ + 0, + 0.722, + 0.639 + ] + ], + [ + 0.724, + [ + 0, + 0.725, + 0.637 + ] + ], + [ + 0.726, + [ + 0, + 0.725, + 0.637 + ] + ], + [ + 0.728, + [ + 0, + 0.729, + 0.635 + ] + ], + [ + 0.73, + [ + 0, + 0.729, + 0.635 + ] + ], + [ + 0.732, + [ + 0, + 0.733, + 0.633 + ] + ], + [ + 0.734, + [ + 0, + 0.733, + 0.633 + ] + ], + [ + 0.736, + [ + 0, + 0.737, + 0.631 + ] + ], + [ + 0.738, + [ + 0, + 0.737, + 0.631 + ] + ], + [ + 0.74, + [ + 0, + 0.741, + 0.629 + ] + ], + [ + 0.742, + [ + 0, + 0.741, + 0.629 + ] + ], + [ + 0.744, + [ + 0, + 0.745, + 0.627 + ] + ], + [ + 0.746, + [ + 0, + 0.745, + 0.627 + ] + ], + [ + 0.748, + [ + 0, + 0.749, + 0.625 + ] + ], + [ + 0.75, + [ + 0, + 0.749, + 0.625 + ] + ], + [ + 0.751, + [ + 0, + 0.753, + 0.624 + ] + ], + [ + 0.753, + [ + 0, + 0.753, + 0.624 + ] + ], + [ + 0.755, + [ + 0, + 0.757, + 0.622 + ] + ], + [ + 0.757, + [ + 0, + 0.757, + 0.622 + ] + ], + [ + 0.759, + [ + 0, + 0.761, + 0.62 + ] + ], + [ + 0.761, + [ + 0, + 0.761, + 0.62 + ] + ], + [ + 0.763, + [ + 0, + 0.765, + 0.618 + ] + ], + [ + 0.765, + [ + 0, + 0.765, + 0.618 + ] + ], + [ + 0.767, + [ + 0, + 0.769, + 0.616 + ] + ], + [ + 0.769, + [ + 0, + 0.769, + 0.616 + ] + ], + [ + 0.771, + [ + 0, + 0.773, + 0.614 + ] + ], + [ + 0.773, + [ + 0, + 0.773, + 0.614 + ] + ], + [ + 0.775, + [ + 0, + 0.776, + 0.612 + ] + ], + [ + 0.777, + [ + 0, + 0.776, + 0.612 + ] + ], + [ + 0.779, + [ + 0, + 0.78, + 0.61 + ] + ], + [ + 0.781, + [ + 0, + 0.78, + 0.61 + ] + ], + [ + 0.783, + [ + 0, + 0.784, + 0.608 + ] + ], + [ + 0.785, + [ + 0, + 0.784, + 0.608 + ] + ], + [ + 0.787, + [ + 0, + 0.788, + 0.606 + ] + ], + [ + 0.789, + [ + 0, + 0.788, + 0.606 + ] + ], + [ + 0.791, + [ + 0, + 0.792, + 0.604 + ] + ], + [ + 0.793, + [ + 0, + 0.792, + 0.604 + ] + ], + [ + 0.795, + [ + 0, + 0.796, + 0.602 + ] + ], + [ + 0.796, + [ + 0, + 0.796, + 0.602 + ] + ], + [ + 0.798, + [ + 0, + 0.8, + 0.6 + ] + ], + [ + 0.8, + [ + 0, + 0.8, + 0.6 + ] + ], + [ + 0.802, + [ + 0, + 0.804, + 0.598 + ] + ], + [ + 0.804, + [ + 0, + 0.804, + 0.598 + ] + ], + [ + 0.806, + [ + 0, + 0.808, + 0.596 + ] + ], + [ + 0.808, + [ + 0, + 0.808, + 0.596 + ] + ], + [ + 0.81, + [ + 0, + 0.812, + 0.594 + ] + ], + [ + 0.812, + [ + 0, + 0.812, + 0.594 + ] + ], + [ + 0.814, + [ + 0, + 0.816, + 0.592 + ] + ], + [ + 0.816, + [ + 0, + 0.816, + 0.592 + ] + ], + [ + 0.818, + [ + 0, + 0.82, + 0.59 + ] + ], + [ + 0.82, + [ + 0, + 0.82, + 0.59 + ] + ], + [ + 0.822, + [ + 0, + 0.824, + 0.588 + ] + ], + [ + 0.824, + [ + 0, + 0.824, + 0.588 + ] + ], + [ + 0.826, + [ + 0, + 0.827, + 0.586 + ] + ], + [ + 0.828, + [ + 0, + 0.827, + 0.586 + ] + ], + [ + 0.83, + [ + 0, + 0.831, + 0.584 + ] + ], + [ + 0.832, + [ + 0, + 0.831, + 0.584 + ] + ], + [ + 0.834, + [ + 0, + 0.835, + 0.582 + ] + ], + [ + 0.836, + [ + 0, + 0.835, + 0.582 + ] + ], + [ + 0.838, + [ + 0, + 0.839, + 0.58 + ] + ], + [ + 0.84, + [ + 0, + 0.839, + 0.58 + ] + ], + [ + 0.841, + [ + 0, + 0.843, + 0.578 + ] + ], + [ + 0.843, + [ + 0, + 0.843, + 0.578 + ] + ], + [ + 0.845, + [ + 0, + 0.847, + 0.576 + ] + ], + [ + 0.847, + [ + 0, + 0.847, + 0.576 + ] + ], + [ + 0.849, + [ + 0, + 0.851, + 0.575 + ] + ], + [ + 0.851, + [ + 0, + 0.851, + 0.575 + ] + ], + [ + 0.853, + [ + 0, + 0.855, + 0.573 + ] + ], + [ + 0.855, + [ + 0, + 0.855, + 0.573 + ] + ], + [ + 0.857, + [ + 0, + 0.859, + 0.571 + ] + ], + [ + 0.859, + [ + 0, + 0.859, + 0.571 + ] + ], + [ + 0.861, + [ + 0, + 0.863, + 0.569 + ] + ], + [ + 0.863, + [ + 0, + 0.863, + 0.569 + ] + ], + [ + 0.865, + [ + 0, + 0.867, + 0.567 + ] + ], + [ + 0.867, + [ + 0, + 0.867, + 0.567 + ] + ], + [ + 0.869, + [ + 0, + 0.871, + 0.565 + ] + ], + [ + 0.871, + [ + 0, + 0.871, + 0.565 + ] + ], + [ + 0.873, + [ + 0, + 0.875, + 0.563 + ] + ], + [ + 0.875, + [ + 0, + 0.875, + 0.563 + ] + ], + [ + 0.877, + [ + 0, + 0.878, + 0.561 + ] + ], + [ + 0.879, + [ + 0, + 0.878, + 0.561 + ] + ], + [ + 0.881, + [ + 0, + 0.882, + 0.559 + ] + ], + [ + 0.883, + [ + 0, + 0.882, + 0.559 + ] + ], + [ + 0.885, + [ + 0, + 0.886, + 0.557 + ] + ], + [ + 0.886, + [ + 0, + 0.886, + 0.557 + ] + ], + [ + 0.888, + [ + 0, + 0.89, + 0.555 + ] + ], + [ + 0.89, + [ + 0, + 0.89, + 0.555 + ] + ], + [ + 0.892, + [ + 0, + 0.894, + 0.553 + ] + ], + [ + 0.894, + [ + 0, + 0.894, + 0.553 + ] + ], + [ + 0.896, + [ + 0, + 0.898, + 0.551 + ] + ], + [ + 0.898, + [ + 0, + 0.898, + 0.551 + ] + ], + [ + 0.9, + [ + 0, + 0.902, + 0.549 + ] + ], + [ + 0.902, + [ + 0, + 0.902, + 0.549 + ] + ], + [ + 0.904, + [ + 0, + 0.906, + 0.547 + ] + ], + [ + 0.906, + [ + 0, + 0.906, + 0.547 + ] + ], + [ + 0.908, + [ + 0, + 0.91, + 0.545 + ] + ], + [ + 0.91, + [ + 0, + 0.91, + 0.545 + ] + ], + [ + 0.912, + [ + 0, + 0.914, + 0.543 + ] + ], + [ + 0.914, + [ + 0, + 0.914, + 0.543 + ] + ], + [ + 0.916, + [ + 0, + 0.918, + 0.541 + ] + ], + [ + 0.918, + [ + 0, + 0.918, + 0.541 + ] + ], + [ + 0.92, + [ + 0, + 0.922, + 0.539 + ] + ], + [ + 0.922, + [ + 0, + 0.922, + 0.539 + ] + ], + [ + 0.924, + [ + 0, + 0.925, + 0.537 + ] + ], + [ + 0.926, + [ + 0, + 0.925, + 0.537 + ] + ], + [ + 0.928, + [ + 0, + 0.929, + 0.535 + ] + ], + [ + 0.93, + [ + 0, + 0.929, + 0.535 + ] + ], + [ + 0.932, + [ + 0, + 0.933, + 0.533 + ] + ], + [ + 0.933, + [ + 0, + 0.933, + 0.533 + ] + ], + [ + 0.935, + [ + 0, + 0.937, + 0.531 + ] + ], + [ + 0.937, + [ + 0, + 0.937, + 0.531 + ] + ], + [ + 0.939, + [ + 0, + 0.941, + 0.529 + ] + ], + [ + 0.941, + [ + 0, + 0.941, + 0.529 + ] + ], + [ + 0.943, + [ + 0, + 0.945, + 0.527 + ] + ], + [ + 0.945, + [ + 0, + 0.945, + 0.527 + ] + ], + [ + 0.947, + [ + 0, + 0.949, + 0.525 + ] + ], + [ + 0.949, + [ + 0, + 0.949, + 0.525 + ] + ], + [ + 0.951, + [ + 0, + 0.953, + 0.524 + ] + ], + [ + 0.953, + [ + 0, + 0.953, + 0.524 + ] + ], + [ + 0.955, + [ + 0, + 0.957, + 0.522 + ] + ], + [ + 0.957, + [ + 0, + 0.957, + 0.522 + ] + ], + [ + 0.959, + [ + 0, + 0.961, + 0.52 + ] + ], + [ + 0.961, + [ + 0, + 0.961, + 0.52 + ] + ], + [ + 0.963, + [ + 0, + 0.965, + 0.518 + ] + ], + [ + 0.965, + [ + 0, + 0.965, + 0.518 + ] + ], + [ + 0.967, + [ + 0, + 0.969, + 0.516 + ] + ], + [ + 0.969, + [ + 0, + 0.969, + 0.516 + ] + ], + [ + 0.971, + [ + 0, + 0.973, + 0.514 + ] + ], + [ + 0.973, + [ + 0, + 0.973, + 0.514 + ] + ], + [ + 0.975, + [ + 0, + 0.976, + 0.512 + ] + ], + [ + 0.977, + [ + 0, + 0.976, + 0.512 + ] + ], + [ + 0.978, + [ + 0, + 0.98, + 0.51 + ] + ], + [ + 0.98, + [ + 0, + 0.98, + 0.51 + ] + ], + [ + 0.982, + [ + 0, + 0.984, + 0.508 + ] + ], + [ + 0.984, + [ + 0, + 0.984, + 0.508 + ] + ], + [ + 0.986, + [ + 0, + 0.988, + 0.506 + ] + ], + [ + 0.988, + [ + 0, + 0.988, + 0.506 + ] + ], + [ + 0.99, + [ + 0, + 0.992, + 0.504 + ] + ], + [ + 0.992, + [ + 0, + 0.992, + 0.504 + ] + ], + [ + 0.994, + [ + 0, + 0.996, + 0.502 + ] + ], + [ + 0.996, + [ + 0, + 0.996, + 0.502 + ] + ], + [ + 0.998, + [ + 0, + 1, + 0.5 + ] + ], + [ + 1, + [ + 0, + 1, + 0.5 + ] + ] + ], + [ + [ + 0, + [ + 0, + 0, + 0.5 + ] + ], + [ + 0.002, + [ + 0, + 0, + 0.5 + ] + ], + [ + 0.004, + [ + 0, + 0, + 0.518 + ] + ], + [ + 0.006, + [ + 0, + 0, + 0.518 + ] + ], + [ + 0.008, + [ + 0, + 0, + 0.536 + ] + ], + [ + 0.01, + [ + 0, + 0, + 0.536 + ] + ], + [ + 0.012, + [ + 0, + 0, + 0.553 + ] + ], + [ + 0.014, + [ + 0, + 0, + 0.553 + ] + ], + [ + 0.016, + [ + 0, + 0, + 0.571 + ] + ], + [ + 0.018, + [ + 0, + 0, + 0.571 + ] + ], + [ + 0.02, + [ + 0, + 0, + 0.589 + ] + ], + [ + 0.022, + [ + 0, + 0, + 0.589 + ] + ], + [ + 0.023, + [ + 0, + 0, + 0.607 + ] + ], + [ + 0.025, + [ + 0, + 0, + 0.607 + ] + ], + [ + 0.027, + [ + 0, + 0, + 0.625 + ] + ], + [ + 0.029, + [ + 0, + 0, + 0.625 + ] + ], + [ + 0.031, + [ + 0, + 0, + 0.643 + ] + ], + [ + 0.033, + [ + 0, + 0, + 0.643 + ] + ], + [ + 0.035, + [ + 0, + 0, + 0.66 + ] + ], + [ + 0.037, + [ + 0, + 0, + 0.66 + ] + ], + [ + 0.039, + [ + 0, + 0, + 0.678 + ] + ], + [ + 0.041, + [ + 0, + 0, + 0.678 + ] + ], + [ + 0.043, + [ + 0, + 0, + 0.696 + ] + ], + [ + 0.045, + [ + 0, + 0, + 0.696 + ] + ], + [ + 0.047, + [ + 0, + 0, + 0.714 + ] + ], + [ + 0.049, + [ + 0, + 0, + 0.714 + ] + ], + [ + 0.051, + [ + 0, + 0, + 0.732 + ] + ], + [ + 0.053, + [ + 0, + 0, + 0.732 + ] + ], + [ + 0.055, + [ + 0, + 0, + 0.75 + ] + ], + [ + 0.057, + [ + 0, + 0, + 0.75 + ] + ], + [ + 0.059, + [ + 0, + 0, + 0.767 + ] + ], + [ + 0.061, + [ + 0, + 0, + 0.767 + ] + ], + [ + 0.063, + [ + 0, + 0, + 0.785 + ] + ], + [ + 0.065, + [ + 0, + 0, + 0.785 + ] + ], + [ + 0.067, + [ + 0, + 0, + 0.803 + ] + ], + [ + 0.068, + [ + 0, + 0, + 0.803 + ] + ], + [ + 0.07, + [ + 0, + 0, + 0.821 + ] + ], + [ + 0.072, + [ + 0, + 0, + 0.821 + ] + ], + [ + 0.074, + [ + 0, + 0, + 0.839 + ] + ], + [ + 0.076, + [ + 0, + 0, + 0.839 + ] + ], + [ + 0.078, + [ + 0, + 0, + 0.857 + ] + ], + [ + 0.08, + [ + 0, + 0, + 0.857 + ] + ], + [ + 0.082, + [ + 0, + 0, + 0.874 + ] + ], + [ + 0.084, + [ + 0, + 0, + 0.874 + ] + ], + [ + 0.086, + [ + 0, + 0, + 0.892 + ] + ], + [ + 0.088, + [ + 0, + 0, + 0.892 + ] + ], + [ + 0.09, + [ + 0, + 0, + 0.91 + ] + ], + [ + 0.092, + [ + 0, + 0, + 0.91 + ] + ], + [ + 0.094, + [ + 0, + 0, + 0.928 + ] + ], + [ + 0.096, + [ + 0, + 0, + 0.928 + ] + ], + [ + 0.098, + [ + 0, + 0, + 0.946 + ] + ], + [ + 0.1, + [ + 0, + 0, + 0.946 + ] + ], + [ + 0.102, + [ + 0, + 0, + 0.963 + ] + ], + [ + 0.104, + [ + 0, + 0, + 0.963 + ] + ], + [ + 0.106, + [ + 0, + 0, + 0.981 + ] + ], + [ + 0.108, + [ + 0, + 0, + 0.981 + ] + ], + [ + 0.11, + [ + 0, + 0, + 0.999 + ] + ], + [ + 0.112, + [ + 0, + 0, + 0.999 + ] + ], + [ + 0.114, + [ + 0, + 0, + 1 + ] + ], + [ + 0.115, + [ + 0, + 0, + 1 + ] + ], + [ + 0.117, + [ + 0, + 0, + 1 + ] + ], + [ + 0.119, + [ + 0, + 0, + 1 + ] + ], + [ + 0.121, + [ + 0, + 0, + 1 + ] + ], + [ + 0.123, + [ + 0, + 0, + 1 + ] + ], + [ + 0.125, + [ + 0, + 0.002, + 1 + ] + ], + [ + 0.127, + [ + 0, + 0.002, + 1 + ] + ], + [ + 0.129, + [ + 0, + 0.018, + 1 + ] + ], + [ + 0.131, + [ + 0, + 0.018, + 1 + ] + ], + [ + 0.133, + [ + 0, + 0.033, + 1 + ] + ], + [ + 0.135, + [ + 0, + 0.033, + 1 + ] + ], + [ + 0.137, + [ + 0, + 0.049, + 1 + ] + ], + [ + 0.139, + [ + 0, + 0.049, + 1 + ] + ], + [ + 0.141, + [ + 0, + 0.065, + 1 + ] + ], + [ + 0.143, + [ + 0, + 0.065, + 1 + ] + ], + [ + 0.145, + [ + 0, + 0.08, + 1 + ] + ], + [ + 0.147, + [ + 0, + 0.08, + 1 + ] + ], + [ + 0.149, + [ + 0, + 0.096, + 1 + ] + ], + [ + 0.151, + [ + 0, + 0.096, + 1 + ] + ], + [ + 0.153, + [ + 0, + 0.112, + 1 + ] + ], + [ + 0.155, + [ + 0, + 0.112, + 1 + ] + ], + [ + 0.157, + [ + 0, + 0.127, + 1 + ] + ], + [ + 0.159, + [ + 0, + 0.127, + 1 + ] + ], + [ + 0.16, + [ + 0, + 0.143, + 1 + ] + ], + [ + 0.162, + [ + 0, + 0.143, + 1 + ] + ], + [ + 0.164, + [ + 0, + 0.159, + 1 + ] + ], + [ + 0.166, + [ + 0, + 0.159, + 1 + ] + ], + [ + 0.168, + [ + 0, + 0.175, + 1 + ] + ], + [ + 0.17, + [ + 0, + 0.175, + 1 + ] + ], + [ + 0.172, + [ + 0, + 0.19, + 1 + ] + ], + [ + 0.174, + [ + 0, + 0.19, + 1 + ] + ], + [ + 0.176, + [ + 0, + 0.206, + 1 + ] + ], + [ + 0.178, + [ + 0, + 0.206, + 1 + ] + ], + [ + 0.18, + [ + 0, + 0.222, + 1 + ] + ], + [ + 0.182, + [ + 0, + 0.222, + 1 + ] + ], + [ + 0.184, + [ + 0, + 0.237, + 1 + ] + ], + [ + 0.186, + [ + 0, + 0.237, + 1 + ] + ], + [ + 0.188, + [ + 0, + 0.253, + 1 + ] + ], + [ + 0.19, + [ + 0, + 0.253, + 1 + ] + ], + [ + 0.192, + [ + 0, + 0.269, + 1 + ] + ], + [ + 0.194, + [ + 0, + 0.269, + 1 + ] + ], + [ + 0.196, + [ + 0, + 0.028, + 1 + ] + ], + [ + 0.198, + [ + 0, + 0.028, + 1 + ] + ], + [ + 0.2, + [ + 0, + 0.3, + 1 + ] + ], + [ + 0.202, + [ + 0, + 0.3, + 1 + ] + ], + [ + 0.204, + [ + 0, + 0.316, + 1 + ] + ], + [ + 0.205, + [ + 0, + 0.316, + 1 + ] + ], + [ + 0.207, + [ + 0, + 0.331, + 1 + ] + ], + [ + 0.209, + [ + 0, + 0.331, + 1 + ] + ], + [ + 0.211, + [ + 0, + 0.347, + 1 + ] + ], + [ + 0.213, + [ + 0, + 0.347, + 1 + ] + ], + [ + 0.215, + [ + 0, + 0.363, + 1 + ] + ], + [ + 0.217, + [ + 0, + 0.363, + 1 + ] + ], + [ + 0.219, + [ + 0, + 0.378, + 1 + ] + ], + [ + 0.221, + [ + 0, + 0.378, + 1 + ] + ], + [ + 0.223, + [ + 0, + 0.394, + 1 + ] + ], + [ + 0.225, + [ + 0, + 0.394, + 1 + ] + ], + [ + 0.227, + [ + 0, + 0.41, + 1 + ] + ], + [ + 0.229, + [ + 0, + 0.41, + 1 + ] + ], + [ + 0.231, + [ + 0, + 0.425, + 1 + ] + ], + [ + 0.233, + [ + 0, + 0.425, + 1 + ] + ], + [ + 0.235, + [ + 0, + 0.441, + 1 + ] + ], + [ + 0.237, + [ + 0, + 0.441, + 1 + ] + ], + [ + 0.239, + [ + 0, + 0.457, + 1 + ] + ], + [ + 0.241, + [ + 0, + 0.457, + 1 + ] + ], + [ + 0.243, + [ + 0, + 0.473, + 1 + ] + ], + [ + 0.245, + [ + 0, + 0.473, + 1 + ] + ], + [ + 0.247, + [ + 0, + 0.488, + 1 + ] + ], + [ + 0.249, + [ + 0, + 0.488, + 1 + ] + ], + [ + 0.25, + [ + 0, + 0.504, + 1 + ] + ], + [ + 0.252, + [ + 0, + 0.504, + 1 + ] + ], + [ + 0.254, + [ + 0, + 0.52, + 1 + ] + ], + [ + 0.256, + [ + 0, + 0.52, + 1 + ] + ], + [ + 0.258, + [ + 0, + 0.535, + 1 + ] + ], + [ + 0.26, + [ + 0, + 0.535, + 1 + ] + ], + [ + 0.262, + [ + 0, + 0.551, + 1 + ] + ], + [ + 0.264, + [ + 0, + 0.551, + 1 + ] + ], + [ + 0.266, + [ + 0, + 0.567, + 1 + ] + ], + [ + 0.268, + [ + 0, + 0.567, + 1 + ] + ], + [ + 0.27, + [ + 0, + 0.582, + 1 + ] + ], + [ + 0.272, + [ + 0, + 0.582, + 1 + ] + ], + [ + 0.274, + [ + 0, + 0.598, + 1 + ] + ], + [ + 0.276, + [ + 0, + 0.598, + 1 + ] + ], + [ + 0.278, + [ + 0, + 0.614, + 1 + ] + ], + [ + 0.28, + [ + 0, + 0.614, + 1 + ] + ], + [ + 0.282, + [ + 0, + 0.629, + 1 + ] + ], + [ + 0.028, + [ + 0, + 0.629, + 1 + ] + ], + [ + 0.286, + [ + 0, + 0.645, + 1 + ] + ], + [ + 0.288, + [ + 0, + 0.645, + 1 + ] + ], + [ + 0.29, + [ + 0, + 0.661, + 1 + ] + ], + [ + 0.292, + [ + 0, + 0.661, + 1 + ] + ], + [ + 0.294, + [ + 0, + 0.676, + 1 + ] + ], + [ + 0.295, + [ + 0, + 0.676, + 1 + ] + ], + [ + 0.297, + [ + 0, + 0.692, + 1 + ] + ], + [ + 0.299, + [ + 0, + 0.692, + 1 + ] + ], + [ + 0.301, + [ + 0, + 0.708, + 1 + ] + ], + [ + 0.303, + [ + 0, + 0.708, + 1 + ] + ], + [ + 0.305, + [ + 0, + 0.724, + 1 + ] + ], + [ + 0.307, + [ + 0, + 0.724, + 1 + ] + ], + [ + 0.309, + [ + 0, + 0.739, + 1 + ] + ], + [ + 0.311, + [ + 0, + 0.739, + 1 + ] + ], + [ + 0.313, + [ + 0, + 0.755, + 1 + ] + ], + [ + 0.315, + [ + 0, + 0.755, + 1 + ] + ], + [ + 0.317, + [ + 0, + 0.771, + 1 + ] + ], + [ + 0.319, + [ + 0, + 0.771, + 1 + ] + ], + [ + 0.321, + [ + 0, + 0.786, + 1 + ] + ], + [ + 0.323, + [ + 0, + 0.786, + 1 + ] + ], + [ + 0.325, + [ + 0, + 0.802, + 1 + ] + ], + [ + 0.327, + [ + 0, + 0.802, + 1 + ] + ], + [ + 0.329, + [ + 0, + 0.818, + 1 + ] + ], + [ + 0.331, + [ + 0, + 0.818, + 1 + ] + ], + [ + 0.333, + [ + 0, + 0.833, + 1 + ] + ], + [ + 0.335, + [ + 0, + 0.833, + 1 + ] + ], + [ + 0.337, + [ + 0, + 0.849, + 1 + ] + ], + [ + 0.339, + [ + 0, + 0.849, + 1 + ] + ], + [ + 0.341, + [ + 0, + 0.865, + 0.996 + ] + ], + [ + 0.342, + [ + 0, + 0.865, + 0.996 + ] + ], + [ + 0.344, + [ + 0, + 0.88, + 0.984 + ] + ], + [ + 0.346, + [ + 0, + 0.88, + 0.984 + ] + ], + [ + 0.348, + [ + 0, + 0.896, + 0.971 + ] + ], + [ + 0.35, + [ + 0, + 0.896, + 0.971 + ] + ], + [ + 0.352, + [ + 0.009, + 0.912, + 0.958 + ] + ], + [ + 0.354, + [ + 0.009, + 0.912, + 0.958 + ] + ], + [ + 0.356, + [ + 0.022, + 0.927, + 0.946 + ] + ], + [ + 0.358, + [ + 0.022, + 0.927, + 0.946 + ] + ], + [ + 0.36, + [ + 0.035, + 0.943, + 0.933 + ] + ], + [ + 0.362, + [ + 0.035, + 0.943, + 0.933 + ] + ], + [ + 0.364, + [ + 0.047, + 0.959, + 0.92 + ] + ], + [ + 0.366, + [ + 0.047, + 0.959, + 0.92 + ] + ], + [ + 0.368, + [ + 0.06, + 0.975, + 0.908 + ] + ], + [ + 0.37, + [ + 0.06, + 0.975, + 0.908 + ] + ], + [ + 0.372, + [ + 0.073, + 0.99, + 0.895 + ] + ], + [ + 0.374, + [ + 0.073, + 0.99, + 0.895 + ] + ], + [ + 0.376, + [ + 0.085, + 1, + 0.882 + ] + ], + [ + 0.378, + [ + 0.085, + 1, + 0.882 + ] + ], + [ + 0.38, + [ + 0.098, + 1, + 0.87 + ] + ], + [ + 0.382, + [ + 0.098, + 1, + 0.87 + ] + ], + [ + 0.384, + [ + 0.111, + 1, + 0.857 + ] + ], + [ + 0.386, + [ + 0.111, + 1, + 0.857 + ] + ], + [ + 0.387, + [ + 0.123, + 1, + 0.844 + ] + ], + [ + 0.389, + [ + 0.123, + 1, + 0.844 + ] + ], + [ + 0.391, + [ + 0.136, + 1, + 0.832 + ] + ], + [ + 0.393, + [ + 0.136, + 1, + 0.832 + ] + ], + [ + 0.395, + [ + 0.149, + 1, + 0.819 + ] + ], + [ + 0.397, + [ + 0.149, + 1, + 0.819 + ] + ], + [ + 0.399, + [ + 0.161, + 1, + 0.806 + ] + ], + [ + 0.401, + [ + 0.161, + 1, + 0.806 + ] + ], + [ + 0.403, + [ + 0.174, + 1, + 0.794 + ] + ], + [ + 0.405, + [ + 0.174, + 1, + 0.794 + ] + ], + [ + 0.407, + [ + 0.187, + 1, + 0.781 + ] + ], + [ + 0.409, + [ + 0.187, + 1, + 0.781 + ] + ], + [ + 0.411, + [ + 0.199, + 1, + 0.769 + ] + ], + [ + 0.413, + [ + 0.199, + 1, + 0.769 + ] + ], + [ + 0.415, + [ + 0.212, + 1, + 0.756 + ] + ], + [ + 0.417, + [ + 0.212, + 1, + 0.756 + ] + ], + [ + 0.419, + [ + 0.225, + 1, + 0.743 + ] + ], + [ + 0.421, + [ + 0.225, + 1, + 0.743 + ] + ], + [ + 0.423, + [ + 0.237, + 1, + 0.731 + ] + ], + [ + 0.425, + [ + 0.237, + 1, + 0.731 + ] + ], + [ + 0.427, + [ + 0.25, + 1, + 0.718 + ] + ], + [ + 0.429, + [ + 0.25, + 1, + 0.718 + ] + ], + [ + 0.431, + [ + 0.262, + 1, + 0.705 + ] + ], + [ + 0.432, + [ + 0.262, + 1, + 0.705 + ] + ], + [ + 0.434, + [ + 0.275, + 1, + 0.693 + ] + ], + [ + 0.436, + [ + 0.275, + 1, + 0.693 + ] + ], + [ + 0.438, + [ + 0.288, + 1, + 0.68 + ] + ], + [ + 0.44, + [ + 0.288, + 1, + 0.68 + ] + ], + [ + 0.442, + [ + 0.3, + 1, + 0.667 + ] + ], + [ + 0.444, + [ + 0.3, + 1, + 0.667 + ] + ], + [ + 0.446, + [ + 0.313, + 1, + 0.655 + ] + ], + [ + 0.448, + [ + 0.313, + 1, + 0.655 + ] + ], + [ + 0.45, + [ + 0.326, + 1, + 0.642 + ] + ], + [ + 0.452, + [ + 0.326, + 1, + 0.642 + ] + ], + [ + 0.454, + [ + 0.338, + 1, + 0.629 + ] + ], + [ + 0.456, + [ + 0.338, + 1, + 0.629 + ] + ], + [ + 0.458, + [ + 0.351, + 1, + 0.617 + ] + ], + [ + 0.46, + [ + 0.351, + 1, + 0.617 + ] + ], + [ + 0.462, + [ + 0.364, + 1, + 0.604 + ] + ], + [ + 0.464, + [ + 0.364, + 1, + 0.604 + ] + ], + [ + 0.466, + [ + 0.376, + 1, + 0.591 + ] + ], + [ + 0.468, + [ + 0.376, + 1, + 0.591 + ] + ], + [ + 0.47, + [ + 0.389, + 1, + 0.579 + ] + ], + [ + 0.472, + [ + 0.389, + 1, + 0.579 + ] + ], + [ + 0.474, + [ + 0.402, + 1, + 0.566 + ] + ], + [ + 0.476, + [ + 0.402, + 1, + 0.566 + ] + ], + [ + 0.477, + [ + 0.414, + 1, + 0.553 + ] + ], + [ + 0.479, + [ + 0.414, + 1, + 0.553 + ] + ], + [ + 0.481, + [ + 0.427, + 1, + 0.541 + ] + ], + [ + 0.483, + [ + 0.427, + 1, + 0.541 + ] + ], + [ + 0.485, + [ + 0.44, + 1, + 0.528 + ] + ], + [ + 0.487, + [ + 0.44, + 1, + 0.528 + ] + ], + [ + 0.489, + [ + 0.452, + 1, + 0.515 + ] + ], + [ + 0.491, + [ + 0.452, + 1, + 0.515 + ] + ], + [ + 0.493, + [ + 0.465, + 1, + 0.503 + ] + ], + [ + 0.495, + [ + 0.465, + 1, + 0.503 + ] + ], + [ + 0.497, + [ + 0.478, + 1, + 0.49 + ] + ], + [ + 0.499, + [ + 0.478, + 1, + 0.49 + ] + ], + [ + 0.501, + [ + 0.49, + 1, + 0.478 + ] + ], + [ + 0.503, + [ + 0.49, + 1, + 0.478 + ] + ], + [ + 0.505, + [ + 0.503, + 1, + 0.465 + ] + ], + [ + 0.507, + [ + 0.503, + 1, + 0.465 + ] + ], + [ + 0.509, + [ + 0.515, + 1, + 0.452 + ] + ], + [ + 0.511, + [ + 0.515, + 1, + 0.452 + ] + ], + [ + 0.513, + [ + 0.528, + 1, + 0.44 + ] + ], + [ + 0.515, + [ + 0.528, + 1, + 0.44 + ] + ], + [ + 0.517, + [ + 0.541, + 1, + 0.427 + ] + ], + [ + 0.519, + [ + 0.541, + 1, + 0.427 + ] + ], + [ + 0.521, + [ + 0.553, + 1, + 0.414 + ] + ], + [ + 0.523, + [ + 0.553, + 1, + 0.414 + ] + ], + [ + 0.524, + [ + 0.566, + 1, + 0.402 + ] + ], + [ + 0.526, + [ + 0.566, + 1, + 0.402 + ] + ], + [ + 0.528, + [ + 0.579, + 1, + 0.389 + ] + ], + [ + 0.53, + [ + 0.579, + 1, + 0.389 + ] + ], + [ + 0.532, + [ + 0.591, + 1, + 0.376 + ] + ], + [ + 0.534, + [ + 0.591, + 1, + 0.376 + ] + ], + [ + 0.536, + [ + 0.604, + 1, + 0.364 + ] + ], + [ + 0.538, + [ + 0.604, + 1, + 0.364 + ] + ], + [ + 0.54, + [ + 0.617, + 1, + 0.351 + ] + ], + [ + 0.542, + [ + 0.617, + 1, + 0.351 + ] + ], + [ + 0.544, + [ + 0.629, + 1, + 0.338 + ] + ], + [ + 0.546, + [ + 0.629, + 1, + 0.338 + ] + ], + [ + 0.548, + [ + 0.642, + 1, + 0.326 + ] + ], + [ + 0.55, + [ + 0.642, + 1, + 0.326 + ] + ], + [ + 0.552, + [ + 0.655, + 1, + 0.313 + ] + ], + [ + 0.554, + [ + 0.655, + 1, + 0.313 + ] + ], + [ + 0.556, + [ + 0.667, + 1, + 0.3 + ] + ], + [ + 0.558, + [ + 0.667, + 1, + 0.3 + ] + ], + [ + 0.56, + [ + 0.68, + 1, + 0.288 + ] + ], + [ + 0.562, + [ + 0.68, + 1, + 0.288 + ] + ], + [ + 0.564, + [ + 0.693, + 1, + 0.275 + ] + ], + [ + 0.566, + [ + 0.693, + 1, + 0.275 + ] + ], + [ + 0.568, + [ + 0.705, + 1, + 0.262 + ] + ], + [ + 0.569, + [ + 0.705, + 1, + 0.262 + ] + ], + [ + 0.571, + [ + 0.718, + 1, + 0.25 + ] + ], + [ + 0.573, + [ + 0.718, + 1, + 0.25 + ] + ], + [ + 0.575, + [ + 0.731, + 1, + 0.237 + ] + ], + [ + 0.577, + [ + 0.731, + 1, + 0.237 + ] + ], + [ + 0.579, + [ + 0.743, + 1, + 0.225 + ] + ], + [ + 0.581, + [ + 0.743, + 1, + 0.225 + ] + ], + [ + 0.583, + [ + 0.756, + 1, + 0.212 + ] + ], + [ + 0.585, + [ + 0.756, + 1, + 0.212 + ] + ], + [ + 0.587, + [ + 0.769, + 1, + 0.199 + ] + ], + [ + 0.589, + [ + 0.769, + 1, + 0.199 + ] + ], + [ + 0.591, + [ + 0.781, + 1, + 0.187 + ] + ], + [ + 0.593, + [ + 0.781, + 1, + 0.187 + ] + ], + [ + 0.595, + [ + 0.794, + 1, + 0.174 + ] + ], + [ + 0.597, + [ + 0.794, + 1, + 0.174 + ] + ], + [ + 0.599, + [ + 0.806, + 1, + 0.161 + ] + ], + [ + 0.601, + [ + 0.806, + 1, + 0.161 + ] + ], + [ + 0.603, + [ + 0.819, + 1, + 0.149 + ] + ], + [ + 0.605, + [ + 0.819, + 1, + 0.149 + ] + ], + [ + 0.607, + [ + 0.832, + 1, + 0.136 + ] + ], + [ + 0.609, + [ + 0.832, + 1, + 0.136 + ] + ], + [ + 0.611, + [ + 0.844, + 1, + 0.123 + ] + ], + [ + 0.613, + [ + 0.844, + 1, + 0.123 + ] + ], + [ + 0.614, + [ + 0.857, + 1, + 0.111 + ] + ], + [ + 0.616, + [ + 0.857, + 1, + 0.111 + ] + ], + [ + 0.618, + [ + 0.87, + 1, + 0.098 + ] + ], + [ + 0.62, + [ + 0.87, + 1, + 0.098 + ] + ], + [ + 0.622, + [ + 0.882, + 1, + 0.085 + ] + ], + [ + 0.624, + [ + 0.882, + 1, + 0.085 + ] + ], + [ + 0.626, + [ + 0.895, + 1, + 0.073 + ] + ], + [ + 0.628, + [ + 0.895, + 1, + 0.073 + ] + ], + [ + 0.63, + [ + 0.908, + 1, + 0.06 + ] + ], + [ + 0.632, + [ + 0.908, + 1, + 0.06 + ] + ], + [ + 0.634, + [ + 0.92, + 1, + 0.047 + ] + ], + [ + 0.636, + [ + 0.92, + 1, + 0.047 + ] + ], + [ + 0.638, + [ + 0.933, + 1, + 0.035 + ] + ], + [ + 0.64, + [ + 0.933, + 1, + 0.035 + ] + ], + [ + 0.642, + [ + 0.946, + 0.988, + 0.022 + ] + ], + [ + 0.644, + [ + 0.946, + 0.988, + 0.022 + ] + ], + [ + 0.646, + [ + 0.958, + 0.974, + 0.009 + ] + ], + [ + 0.648, + [ + 0.958, + 0.974, + 0.009 + ] + ], + [ + 0.65, + [ + 0.971, + 0.959, + 0 + ] + ], + [ + 0.652, + [ + 0.971, + 0.959, + 0 + ] + ], + [ + 0.654, + [ + 0.984, + 0.945, + 0 + ] + ], + [ + 0.656, + [ + 0.984, + 0.945, + 0 + ] + ], + [ + 0.658, + [ + 0.996, + 0.93, + 0 + ] + ], + [ + 0.659, + [ + 0.996, + 0.93, + 0 + ] + ], + [ + 0.661, + [ + 1, + 0.916, + 0 + ] + ], + [ + 0.663, + [ + 1, + 0.916, + 0 + ] + ], + [ + 0.665, + [ + 1, + 0.901, + 0 + ] + ], + [ + 0.667, + [ + 1, + 0.901, + 0 + ] + ], + [ + 0.669, + [ + 1, + 0.887, + 0 + ] + ], + [ + 0.671, + [ + 1, + 0.887, + 0 + ] + ], + [ + 0.673, + [ + 1, + 0.872, + 0 + ] + ], + [ + 0.675, + [ + 1, + 0.872, + 0 + ] + ], + [ + 0.677, + [ + 1, + 0.858, + 0 + ] + ], + [ + 0.679, + [ + 1, + 0.858, + 0 + ] + ], + [ + 0.681, + [ + 1, + 0.843, + 0 + ] + ], + [ + 0.683, + [ + 1, + 0.843, + 0 + ] + ], + [ + 0.685, + [ + 1, + 0.829, + 0 + ] + ], + [ + 0.687, + [ + 1, + 0.829, + 0 + ] + ], + [ + 0.689, + [ + 1, + 0.814, + 0 + ] + ], + [ + 0.691, + [ + 1, + 0.814, + 0 + ] + ], + [ + 0.693, + [ + 1, + 0.8, + 0 + ] + ], + [ + 0.695, + [ + 1, + 0.8, + 0 + ] + ], + [ + 0.697, + [ + 1, + 0.785, + 0 + ] + ], + [ + 0.699, + [ + 1, + 0.785, + 0 + ] + ], + [ + 0.701, + [ + 1, + 0.771, + 0 + ] + ], + [ + 0.703, + [ + 1, + 0.771, + 0 + ] + ], + [ + 0.705, + [ + 1, + 0.756, + 0 + ] + ], + [ + 0.706, + [ + 1, + 0.756, + 0 + ] + ], + [ + 0.708, + [ + 1, + 0.741, + 0 + ] + ], + [ + 0.71, + [ + 1, + 0.741, + 0 + ] + ], + [ + 0.712, + [ + 1, + 0.727, + 0 + ] + ], + [ + 0.714, + [ + 1, + 0.727, + 0 + ] + ], + [ + 0.716, + [ + 1, + 0.712, + 0 + ] + ], + [ + 0.718, + [ + 1, + 0.712, + 0 + ] + ], + [ + 0.72, + [ + 1, + 0.698, + 0 + ] + ], + [ + 0.722, + [ + 1, + 0.698, + 0 + ] + ], + [ + 0.724, + [ + 1, + 0.683, + 0 + ] + ], + [ + 0.726, + [ + 1, + 0.683, + 0 + ] + ], + [ + 0.728, + [ + 1, + 0.669, + 0 + ] + ], + [ + 0.73, + [ + 1, + 0.669, + 0 + ] + ], + [ + 0.732, + [ + 1, + 0.654, + 0 + ] + ], + [ + 0.734, + [ + 1, + 0.654, + 0 + ] + ], + [ + 0.736, + [ + 1, + 0.64, + 0 + ] + ], + [ + 0.738, + [ + 1, + 0.64, + 0 + ] + ], + [ + 0.74, + [ + 1, + 0.625, + 0 + ] + ], + [ + 0.742, + [ + 1, + 0.625, + 0 + ] + ], + [ + 0.744, + [ + 1, + 0.611, + 0 + ] + ], + [ + 0.746, + [ + 1, + 0.611, + 0 + ] + ], + [ + 0.748, + [ + 1, + 0.596, + 0 + ] + ], + [ + 0.75, + [ + 1, + 0.596, + 0 + ] + ], + [ + 0.751, + [ + 1, + 0.582, + 0 + ] + ], + [ + 0.753, + [ + 1, + 0.582, + 0 + ] + ], + [ + 0.755, + [ + 1, + 0.567, + 0 + ] + ], + [ + 0.757, + [ + 1, + 0.567, + 0 + ] + ], + [ + 0.759, + [ + 1, + 0.553, + 0 + ] + ], + [ + 0.761, + [ + 1, + 0.553, + 0 + ] + ], + [ + 0.763, + [ + 1, + 0.538, + 0 + ] + ], + [ + 0.765, + [ + 1, + 0.538, + 0 + ] + ], + [ + 0.767, + [ + 1, + 0.524, + 0 + ] + ], + [ + 0.769, + [ + 1, + 0.524, + 0 + ] + ], + [ + 0.771, + [ + 1, + 0.509, + 0 + ] + ], + [ + 0.773, + [ + 1, + 0.509, + 0 + ] + ], + [ + 0.775, + [ + 1, + 0.495, + 0 + ] + ], + [ + 0.777, + [ + 1, + 0.495, + 0 + ] + ], + [ + 0.779, + [ + 1, + 0.48, + 0 + ] + ], + [ + 0.781, + [ + 1, + 0.48, + 0 + ] + ], + [ + 0.783, + [ + 1, + 0.466, + 0 + ] + ], + [ + 0.785, + [ + 1, + 0.466, + 0 + ] + ], + [ + 0.787, + [ + 1, + 0.451, + 0 + ] + ], + [ + 0.789, + [ + 1, + 0.451, + 0 + ] + ], + [ + 0.791, + [ + 1, + 0.436, + 0 + ] + ], + [ + 0.793, + [ + 1, + 0.436, + 0 + ] + ], + [ + 0.795, + [ + 1, + 0.422, + 0 + ] + ], + [ + 0.796, + [ + 1, + 0.422, + 0 + ] + ], + [ + 0.798, + [ + 1, + 0.407, + 0 + ] + ], + [ + 0.8, + [ + 1, + 0.407, + 0 + ] + ], + [ + 0.802, + [ + 1, + 0.393, + 0 + ] + ], + [ + 0.804, + [ + 1, + 0.393, + 0 + ] + ], + [ + 0.806, + [ + 1, + 0.378, + 0 + ] + ], + [ + 0.808, + [ + 1, + 0.378, + 0 + ] + ], + [ + 0.81, + [ + 1, + 0.364, + 0 + ] + ], + [ + 0.812, + [ + 1, + 0.364, + 0 + ] + ], + [ + 0.814, + [ + 1, + 0.349, + 0 + ] + ], + [ + 0.816, + [ + 1, + 0.349, + 0 + ] + ], + [ + 0.818, + [ + 1, + 0.335, + 0 + ] + ], + [ + 0.82, + [ + 1, + 0.335, + 0 + ] + ], + [ + 0.822, + [ + 1, + 0.32, + 0 + ] + ], + [ + 0.824, + [ + 1, + 0.32, + 0 + ] + ], + [ + 0.826, + [ + 1, + 0.306, + 0 + ] + ], + [ + 0.828, + [ + 1, + 0.306, + 0 + ] + ], + [ + 0.83, + [ + 1, + 0.291, + 0 + ] + ], + [ + 0.832, + [ + 1, + 0.291, + 0 + ] + ], + [ + 0.834, + [ + 1, + 0.277, + 0 + ] + ], + [ + 0.836, + [ + 1, + 0.277, + 0 + ] + ], + [ + 0.838, + [ + 1, + 0.262, + 0 + ] + ], + [ + 0.84, + [ + 1, + 0.262, + 0 + ] + ], + [ + 0.841, + [ + 1, + 0.248, + 0 + ] + ], + [ + 0.843, + [ + 1, + 0.248, + 0 + ] + ], + [ + 0.845, + [ + 1, + 0.233, + 0 + ] + ], + [ + 0.847, + [ + 1, + 0.233, + 0 + ] + ], + [ + 0.849, + [ + 1, + 0.219, + 0 + ] + ], + [ + 0.851, + [ + 1, + 0.219, + 0 + ] + ], + [ + 0.853, + [ + 1, + 0.204, + 0 + ] + ], + [ + 0.855, + [ + 1, + 0.204, + 0 + ] + ], + [ + 0.857, + [ + 1, + 0.19, + 0 + ] + ], + [ + 0.859, + [ + 1, + 0.19, + 0 + ] + ], + [ + 0.861, + [ + 1, + 0.175, + 0 + ] + ], + [ + 0.863, + [ + 1, + 0.175, + 0 + ] + ], + [ + 0.865, + [ + 1, + 0.16, + 0 + ] + ], + [ + 0.867, + [ + 1, + 0.16, + 0 + ] + ], + [ + 0.869, + [ + 1, + 0.146, + 0 + ] + ], + [ + 0.871, + [ + 1, + 0.146, + 0 + ] + ], + [ + 0.873, + [ + 1, + 0.131, + 0 + ] + ], + [ + 0.875, + [ + 1, + 0.131, + 0 + ] + ], + [ + 0.877, + [ + 1, + 0.117, + 0 + ] + ], + [ + 0.879, + [ + 1, + 0.117, + 0 + ] + ], + [ + 0.881, + [ + 1, + 0.102, + 0 + ] + ], + [ + 0.883, + [ + 1, + 0.102, + 0 + ] + ], + [ + 0.885, + [ + 1, + 0.088, + 0 + ] + ], + [ + 0.886, + [ + 1, + 0.088, + 0 + ] + ], + [ + 0.888, + [ + 0.999, + 0.073, + 0 + ] + ], + [ + 0.89, + [ + 0.999, + 0.073, + 0 + ] + ], + [ + 0.892, + [ + 0.981, + 0.059, + 0 + ] + ], + [ + 0.894, + [ + 0.981, + 0.059, + 0 + ] + ], + [ + 0.896, + [ + 0.963, + 0.044, + 0 + ] + ], + [ + 0.898, + [ + 0.963, + 0.044, + 0 + ] + ], + [ + 0.9, + [ + 0.946, + 0.03, + 0 + ] + ], + [ + 0.902, + [ + 0.946, + 0.03, + 0 + ] + ], + [ + 0.904, + [ + 0.928, + 0.015, + 0 + ] + ], + [ + 0.906, + [ + 0.928, + 0.015, + 0 + ] + ], + [ + 0.908, + [ + 0.91, + 0.001, + 0 + ] + ], + [ + 0.91, + [ + 0.91, + 0.001, + 0 + ] + ], + [ + 0.912, + [ + 0.892, + 0, + 0 + ] + ], + [ + 0.914, + [ + 0.892, + 0, + 0 + ] + ], + [ + 0.916, + [ + 0.874, + 0, + 0 + ] + ], + [ + 0.918, + [ + 0.874, + 0, + 0 + ] + ], + [ + 0.92, + [ + 0.857, + 0, + 0 + ] + ], + [ + 0.922, + [ + 0.857, + 0, + 0 + ] + ], + [ + 0.924, + [ + 0.839, + 0, + 0 + ] + ], + [ + 0.926, + [ + 0.839, + 0, + 0 + ] + ], + [ + 0.928, + [ + 0.821, + 0, + 0 + ] + ], + [ + 0.93, + [ + 0.821, + 0, + 0 + ] + ], + [ + 0.932, + [ + 0.803, + 0, + 0 + ] + ], + [ + 0.933, + [ + 0.803, + 0, + 0 + ] + ], + [ + 0.935, + [ + 0.785, + 0, + 0 + ] + ], + [ + 0.937, + [ + 0.785, + 0, + 0 + ] + ], + [ + 0.939, + [ + 0.767, + 0, + 0 + ] + ], + [ + 0.941, + [ + 0.767, + 0, + 0 + ] + ], + [ + 0.943, + [ + 0.75, + 0, + 0 + ] + ], + [ + 0.945, + [ + 0.75, + 0, + 0 + ] + ], + [ + 0.947, + [ + 0.732, + 0, + 0 + ] + ], + [ + 0.949, + [ + 0.732, + 0, + 0 + ] + ], + [ + 0.951, + [ + 0.714, + 0, + 0 + ] + ], + [ + 0.953, + [ + 0.714, + 0, + 0 + ] + ], + [ + 0.955, + [ + 0.696, + 0, + 0 + ] + ], + [ + 0.957, + [ + 0.696, + 0, + 0 + ] + ], + [ + 0.959, + [ + 0.678, + 0, + 0 + ] + ], + [ + 0.961, + [ + 0.678, + 0, + 0 + ] + ], + [ + 0.963, + [ + 0.66, + 0, + 0 + ] + ], + [ + 0.965, + [ + 0.66, + 0, + 0 + ] + ], + [ + 0.967, + [ + 0.643, + 0, + 0 + ] + ], + [ + 0.969, + [ + 0.643, + 0, + 0 + ] + ], + [ + 0.971, + [ + 0.625, + 0, + 0 + ] + ], + [ + 0.973, + [ + 0.625, + 0, + 0 + ] + ], + [ + 0.975, + [ + 0.607, + 0, + 0 + ] + ], + [ + 0.977, + [ + 0.607, + 0, + 0 + ] + ], + [ + 0.978, + [ + 0.589, + 0, + 0 + ] + ], + [ + 0.98, + [ + 0.589, + 0, + 0 + ] + ], + [ + 0.982, + [ + 0.571, + 0, + 0 + ] + ], + [ + 0.984, + [ + 0.571, + 0, + 0 + ] + ], + [ + 0.986, + [ + 0.553, + 0, + 0 + ] + ], + [ + 0.988, + [ + 0.553, + 0, + 0 + ] + ], + [ + 0.99, + [ + 0.536, + 0, + 0 + ] + ], + [ + 0.992, + [ + 0.536, + 0, + 0 + ] + ], + [ + 0.994, + [ + 0.518, + 0, + 0 + ] + ], + [ + 0.996, + [ + 0.518, + 0, + 0 + ] + ], + [ + 0.998, + [ + 0.5, + 0, + 0 + ] + ], + [ + 1, + [ + 0.5, + 0, + 0 + ] + ] + ] + ], + "colorMap": 0 + }, + "bar": false + } +} \ No newline at end of file diff --git a/01_Code/physical_computing_interface/simulation/json/setupSimple.json b/01_Code/physical_computing_interface/simulation/json/setupSimple.json new file mode 100644 index 0000000000000000000000000000000000000000..7a1589c05584c4d64e521ef15196297f79722075 --- /dev/null +++ b/01_Code/physical_computing_interface/simulation/json/setupSimple.json @@ -0,0 +1,56 @@ +{ + "nodes": [ + { + "id": "n0", + "parent": "11", + "degrees_of_freedom":[0,1,2,3,4,5] , + "restrained_degrees_of_freedom":[true,true,true,true,true,true], + "position": { "x": 0, "y": 10,"z":0 }, + "force":{ "x": 0, "y": 0,"z":0 }, + "displacement": { "x": 0, "y": -0,"z":0 }, + "angle": { "x": 0, "y": 0,"z":0 } + }, + { + "id": "n1", + "parent": "11", + "degrees_of_freedom":[6,7,8,9,10,11] , + "restrained_degrees_of_freedom":[true,true,true,true,true,true], + "position": { "x": 0, "y": 0,"z":0 }, + "force":{ "x": 0, "y": 0,"z":0 }, + "displacement": { "x": 0, "y": 0,"z":0 }, + "angle": { "x": 0, "y": 0,"z":0 } + }, + { + "id": "n2", + "parent": "11", + "degrees_of_freedom":[12,13,14,15,16,17] , + "restrained_degrees_of_freedom":[false,false,false,false,false,false], + "position": { "x": 10, "y": 5,"z":0 }, + "force":{ "x": 0, "y": -200,"z":0 }, + "displacement": { "x": 0, "y": 0,"z":0 }, + "angle": { "x": 0, "y": 0,"z":0 } + } + ], + "edges": [ + { "id": "e0", "source": 0, "target": 2 ,"area":1.0,"density":0.284,"stiffness":30.0e6,"stress":0 }, + { "id": "e1", "source": 1, "target": 2 ,"area":2.0,"density":0.284,"stiffness":30.0e6,"stress":0} + ], + + "ndofs" : 18, + + "animation" : { + + "showDisplacement" : true, + "exageration" : 10000, + "speed":3.0 + + }, + "viz" : { + "minStress":-500, + "maxStress": 500, + "colorMaps":["YlGnBu", "winter", "coolwarm","jet"], + "colorMap":0 + }, + "solve": "solveFea", + "bar":false +} \ No newline at end of file diff --git a/01_Code/physical_computing_interface/simulation/json/setupTest.json b/01_Code/physical_computing_interface/simulation/json/setupTest.json index 54dd5d8ce5dc3b758d5ac17c3dca6ba9a954b790..036477eb32c2c625081c2f0bbd71374e65894ce3 100644 --- a/01_Code/physical_computing_interface/simulation/json/setupTest.json +++ b/01_Code/physical_computing_interface/simulation/json/setupTest.json @@ -187,7 +187,7 @@ }, "force": { "x": 0, - "y": 0, + "y": -200, "z": 0 }, "displacement": { @@ -227,7 +227,7 @@ }, "force": { "x": 0, - "y": 0, + "y": -200, "z": 0 }, "displacement": { @@ -267,7 +267,7 @@ }, "force": { "x": 0, - "y": 0, + "y": -200, "z": 0 }, "displacement": { @@ -307,7 +307,7 @@ }, "force": { "x": 0, - "y": 0, + "y": -200, "z": 0 }, "displacement": { @@ -488,8 +488,8 @@ "source": 0, "target": 1, "area": 1, - "density": 0.284, - "stiffness": 30000000, + "density": 0.0284, + "stiffness": 1000000, "stress": 0 }, { @@ -497,8 +497,8 @@ "source": 1, "target": 2, "area": 1, - "density": 0.284, - "stiffness": 30000000, + "density": 0.0284, + "stiffness": 1000000, "stress": 0 }, { @@ -506,8 +506,8 @@ "source": 2, "target": 3, "area": 1, - "density": 0.284, - "stiffness": 30000000, + "density": 0.0284, + "stiffness": 1000000, "stress": 0 }, { @@ -515,8 +515,8 @@ "source": 3, "target": 0, "area": 1, - "density": 0.284, - "stiffness": 30000000, + "density": 0.0284, + "stiffness": 1000000, "stress": 0 }, { @@ -524,8 +524,8 @@ "source": 4, "target": 5, "area": 1, - "density": 0.284, - "stiffness": 30000000, + "density": 0.0284, + "stiffness": 1000000, "stress": 0 }, { @@ -533,8 +533,8 @@ "source": 5, "target": 0, "area": 1, - "density": 0.284, - "stiffness": 30000000, + "density": 0.0284, + "stiffness": 1000000, "stress": 0 }, { @@ -542,8 +542,8 @@ "source": 0, "target": 6, "area": 1, - "density": 0.284, - "stiffness": 30000000, + "density": 0.0284, + "stiffness": 1000000, "stress": 0 }, { @@ -551,8 +551,8 @@ "source": 6, "target": 4, "area": 1, - "density": 0.284, - "stiffness": 30000000, + "density": 0.0284, + "stiffness": 1000000, "stress": 0 }, { @@ -560,8 +560,8 @@ "source": 7, "target": 8, "area": 1, - "density": 0.284, - "stiffness": 30000000, + "density": 0.0284, + "stiffness": 1000000, "stress": 0 }, { @@ -569,8 +569,8 @@ "source": 8, "target": 4, "area": 1, - "density": 0.284, - "stiffness": 30000000, + "density": 0.0284, + "stiffness": 1000000, "stress": 0 }, { @@ -578,8 +578,8 @@ "source": 4, "target": 9, "area": 1, - "density": 0.284, - "stiffness": 30000000, + "density": 0.0284, + "stiffness": 1000000, "stress": 0 }, { @@ -587,8 +587,8 @@ "source": 9, "target": 7, "area": 1, - "density": 0.284, - "stiffness": 30000000, + "density": 0.0284, + "stiffness": 1000000, "stress": 0 }, { @@ -596,8 +596,8 @@ "source": 2, "target": 10, "area": 1, - "density": 0.284, - "stiffness": 30000000, + "density": 0.0284, + "stiffness": 1000000, "stress": 0 }, { @@ -605,8 +605,8 @@ "source": 10, "target": 7, "area": 1, - "density": 0.284, - "stiffness": 30000000, + "density": 0.0284, + "stiffness": 1000000, "stress": 0 }, { @@ -614,8 +614,8 @@ "source": 7, "target": 11, "area": 1, - "density": 0.284, - "stiffness": 30000000, + "density": 0.0284, + "stiffness": 1000000, "stress": 0 }, { @@ -623,8 +623,8 @@ "source": 11, "target": 2, "area": 1, - "density": 0.284, - "stiffness": 30000000, + "density": 0.0284, + "stiffness": 1000000, "stress": 0 }, { @@ -632,8 +632,8 @@ "source": 8, "target": 10, "area": 1, - "density": 0.284, - "stiffness": 30000000, + "density": 0.0284, + "stiffness": 1000000, "stress": 0 }, { @@ -641,8 +641,8 @@ "source": 10, "target": 1, "area": 1, - "density": 0.284, - "stiffness": 30000000, + "density": 0.0284, + "stiffness": 1000000, "stress": 0 }, { @@ -650,8 +650,8 @@ "source": 1, "target": 5, "area": 1, - "density": 0.284, - "stiffness": 30000000, + "density": 0.0284, + "stiffness": 1000000, "stress": 0 }, { @@ -659,8 +659,8 @@ "source": 5, "target": 8, "area": 1, - "density": 0.284, - "stiffness": 30000000, + "density": 0.0284, + "stiffness": 1000000, "stress": 0 }, { @@ -668,8 +668,8 @@ "source": 6, "target": 3, "area": 1, - "density": 0.284, - "stiffness": 30000000, + "density": 0.0284, + "stiffness": 1000000, "stress": 0 }, { @@ -677,8 +677,8 @@ "source": 3, "target": 11, "area": 1, - "density": 0.284, - "stiffness": 30000000, + "density": 0.0284, + "stiffness": 1000000, "stress": 0 }, { @@ -686,8 +686,8 @@ "source": 11, "target": 9, "area": 1, - "density": 0.284, - "stiffness": 30000000, + "density": 0.0284, + "stiffness": 1000000, "stress": 0 }, { @@ -695,8 +695,8 @@ "source": 9, "target": 6, "area": 1, - "density": 0.284, - "stiffness": 30000000, + "density": 0.0284, + "stiffness": 1000000, "stress": 0 } ], diff --git a/01_Code/physical_computing_interface/simulation/json/trialJulia.json b/01_Code/physical_computing_interface/simulation/json/trialJulia.json new file mode 100644 index 0000000000000000000000000000000000000000..c750dccd2fd2a39e73439e97e3ddbe4988392af1 --- /dev/null +++ b/01_Code/physical_computing_interface/simulation/json/trialJulia.json @@ -0,0 +1 @@ +{"nodes":[{"degrees_of_freedom":[0,1,2,3,4,5],"id":"n0","parent":"11","position":{"x":5,"z":0,"y":-5},"restrained_degrees_of_freedom":[true,true,true,true,true,true],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0,"z":0,"y":0},"angle":{"x":0,"z":0,"y":0}},{"degrees_of_freedom":[6,7,8,9,10,11],"id":"n1","parent":"11","position":{"x":0,"z":-5,"y":-5},"restrained_degrees_of_freedom":[true,true,true,true,true,true],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0,"z":0,"y":0},"angle":{"x":0,"z":0,"y":0}},{"degrees_of_freedom":[12,13,14,15,16,17],"id":"n2","parent":"11","position":{"x":-5,"z":0,"y":-5},"restrained_degrees_of_freedom":[true,true,true,true,true,true],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0,"z":0,"y":0},"angle":{"x":0,"z":0,"y":0}},{"degrees_of_freedom":[18,19,20,21,22,23],"id":"n3","parent":"11","position":{"x":0,"z":5,"y":-5},"restrained_degrees_of_freedom":[true,true,true,true,true,true],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0,"z":0,"y":0},"angle":{"x":0,"z":0,"y":0}},{"degrees_of_freedom":[24,25,26,27,28,29],"id":"n4","parent":"11","position":{"x":2.857142857142857,"z":3.140184917367551e-16,"y":-5},"restrained_degrees_of_freedom":[true,true,true,true,true,true],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0,"z":0,"y":0},"angle":{"x":0,"z":0,"y":0}},{"degrees_of_freedom":[30,31,32,33,34,35],"id":"n5","parent":"11","position":{"x":2.0203050891044216,"z":-2.020305089104421,"y":-5},"restrained_degrees_of_freedom":[true,true,true,true,true,true],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0,"z":0,"y":0},"angle":{"x":0,"z":0,"y":0}},{"degrees_of_freedom":[36,37,38,39,40,41],"id":"n6","parent":"11","position":{"x":3.140184917367551e-16,"z":-2.857142857142857,"y":-5},"restrained_degrees_of_freedom":[true,true,true,true,true,true],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0,"z":0,"y":0},"angle":{"x":0,"z":0,"y":0}},{"degrees_of_freedom":[42,43,44,45,46,47],"id":"n7","parent":"11","position":{"x":-2.020305089104421,"z":-2.0203050891044216,"y":-5},"restrained_degrees_of_freedom":[true,true,true,true,true,true],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0,"z":0,"y":0},"angle":{"x":0,"z":0,"y":0}},{"degrees_of_freedom":[48,49,50,51,52,53],"id":"n8","parent":"11","position":{"x":-2.857142857142857,"z":-3.140184917367551e-16,"y":-5},"restrained_degrees_of_freedom":[true,true,true,true,true,true],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0,"z":0,"y":0},"angle":{"x":0,"z":0,"y":0}},{"degrees_of_freedom":[54,55,56,57,58,59],"id":"n9","parent":"11","position":{"x":-2.0203050891044216,"z":2.020305089104421,"y":-5},"restrained_degrees_of_freedom":[true,true,true,true,true,true],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0,"z":0,"y":0},"angle":{"x":0,"z":0,"y":0}},{"degrees_of_freedom":[60,61,62,63,64,65],"id":"n10","parent":"11","position":{"x":-3.140184917367551e-16,"z":2.857142857142857,"y":-5},"restrained_degrees_of_freedom":[true,true,true,true,true,true],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0,"z":0,"y":0},"angle":{"x":0,"z":0,"y":0}},{"degrees_of_freedom":[66,67,68,69,70,71],"id":"n11","parent":"11","position":{"x":2.020305089104421,"z":2.0203050891044216,"y":-5},"restrained_degrees_of_freedom":[true,true,true,true,true,true],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0,"z":0,"y":0},"angle":{"x":0,"z":0,"y":0}},{"degrees_of_freedom":[72,73,74,75,76,77],"id":"n12","parent":"11","position":{"x":5,"z":0,"y":5},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":-800},"displacement":{"x":6.127132793271835e-5,"z":-7.639095581589413e-5,"y":-0.0005764274019345438},"angle":{"x":-1.9013930510645524e-6,"z":3.0128006125328124e-6,"y":-8.548784645213563e-6}},{"degrees_of_freedom":[78,79,80,81,82,83],"id":"n13","parent":"11","position":{"x":5,"z":-5,"y":0},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-9.569761109534172e-6,"z":-0.00010777159947126257,"y":-0.00028572049297527995},"angle":{"x":-6.622493094482657e-6,"z":-7.927227597480725e-6,"y":1.4663176431686647e-5}},{"degrees_of_freedom":[84,85,86,87,88,89],"id":"n14","parent":"11","position":{"x":5,"z":5,"y":0},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":6.116467881432545e-7,"z":-3.4746541839714456e-5,"y":-0.00028307701043840715},"angle":{"x":-6.065254866757487e-6,"z":-1.4699240266210533e-8,"y":-3.382088363859101e-6}},{"degrees_of_freedom":[90,91,92,93,94,95],"id":"n15","parent":"11","position":{"x":5,"z":2.857142857142857,"y":-3.140184917367551e-16},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":1.1351803857914026e-5,"z":-1.960349764016291e-5,"y":-0.00027718211977956024},"angle":{"x":-9.386528610793465e-6,"z":-8.717492222424017e-6,"y":-1.0741990711025303e-5}},{"degrees_of_freedom":[96,97,98,99,100,101],"id":"n16","parent":"11","position":{"x":5,"z":2.0203050891044216,"y":2.020305089104421},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":4.2295178068147197e-5,"z":-5.648161134569309e-5,"y":-0.0003714623512687226},"angle":{"x":-4.924079214971394e-5,"z":-3.547543920729361e-5,"y":6.0207606143133185e-5}},{"degrees_of_freedom":[102,103,104,105,106,107],"id":"n17","parent":"11","position":{"x":5,"z":3.140184917367551e-16,"y":2.857142857142857},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0.00012974950662651946,"z":-7.539604596915942e-5,"y":-0.00039109855402806284},"angle":{"x":-2.486443651569343e-6,"z":-1.3969227242829163e-5,"y":-5.3545429511993016e-6}},{"degrees_of_freedom":[108,109,110,111,112,113],"id":"n18","parent":"11","position":{"x":5,"z":-2.020305089104421,"y":2.0203050891044216},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":5.7555535024263845e-5,"z":-9.187963135299823e-5,"y":-0.0003767891618344145},"angle":{"x":4.3720625778137304e-5,"z":-3.669467365241936e-5,"y":-6.48984249855061e-5}},{"degrees_of_freedom":[114,115,116,117,118,119],"id":"n19","parent":"11","position":{"x":5,"z":-2.857142857142857,"y":3.140184917367551e-16},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":2.2370324426419476e-5,"z":-0.00010808661547533818,"y":-0.0002959439770030652},"angle":{"x":-9.587473463721716e-6,"z":-1.2988752332348383e-5,"y":6.885525725068618e-6}},{"degrees_of_freedom":[120,121,122,123,124,125],"id":"n20","parent":"11","position":{"x":5,"z":-2.0203050891044216,"y":-2.020305089104421},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-1.2907516204761859e-6,"z":-5.842180432046639e-5,"y":-0.0002014830985866955},"angle":{"x":-6.220130945016956e-5,"z":-4.1867268431194384e-5,"y":9.329977544387342e-5}},{"degrees_of_freedom":[126,127,128,129,130,131],"id":"n21","parent":"11","position":{"x":5,"z":-3.140184917367551e-16,"y":-2.857142857142857},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-4.5663043333925166e-5,"z":-3.4779235415806295e-5,"y":-0.00018267589100857734},"angle":{"x":-3.973276675619675e-6,"z":-7.736958438718973e-6,"y":1.498046266648981e-6}},{"degrees_of_freedom":[132,133,134,135,136,137],"id":"n22","parent":"11","position":{"x":5,"z":2.020305089104421,"y":-2.0203050891044216},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-1.6129606473451595e-6,"z":-2.304579484405199e-5,"y":-0.00019700937696385043},"angle":{"x":2.9730820615397525e-5,"z":-2.6422701629836494e-5,"y":-5.6086589820472104e-5}},{"degrees_of_freedom":[138,139,140,141,142,143],"id":"n23","parent":"11","position":{"x":-5,"z":0,"y":5},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":-400},"displacement":{"x":4.5377777257867134e-5,"z":-0.00011723453085738498,"y":-0.0006552370489324696},"angle":{"x":-9.965305653783383e-5,"z":-2.4016887302890977e-5,"y":-5.518173102753488e-6}},{"degrees_of_freedom":[144,145,146,147,148,149],"id":"n24","parent":"11","position":{"x":0,"z":-5,"y":5},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":-400},"displacement":{"x":7.949989139376031e-5,"z":-9.497832993157438e-5,"y":-0.0006056060795723847},"angle":{"x":4.468232025152814e-5,"z":-7.392087564194488e-5,"y":-1.0328494038985797e-5}},{"degrees_of_freedom":[150,151,152,153,154,155],"id":"n25","parent":"11","position":{"x":0,"z":5,"y":5},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":-800},"displacement":{"x":1.4110268389745248e-8,"z":-8.891661907729727e-5,"y":-0.0005923884537637654},"angle":{"x":-6.071875783003396e-6,"z":-9.053262432384068e-6,"y":-1.0960377728638846e-5}},{"degrees_of_freedom":[156,157,158,159,160,161],"id":"n26","parent":"11","position":{"x":2.857142857142857,"z":-3.140184917367551e-16,"y":5},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":4.980378780188304e-5,"z":-8.351279249544361e-5,"y":-0.001005964818163343},"angle":{"x":-0.0001332865429699522,"z":-2.1843642012876748e-5,"y":-7.115220852895506e-6}},{"degrees_of_freedom":[162,163,164,165,166,167],"id":"n27","parent":"11","position":{"x":2.0203050891044216,"z":2.020305089104421,"y":5},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":4.273687102346741e-5,"z":-8.666163675302946e-5,"y":-0.0006166130603515833},"angle":{"x":0.0007145346527257998,"z":-0.00031910070800352056,"y":-5.063707444213137e-6}},{"degrees_of_freedom":[168,169,170,171,172,173],"id":"n28","parent":"11","position":{"x":3.140184917367551e-16,"z":2.857142857142857,"y":5},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":3.4304472797574585e-5,"z":-9.286668541744927e-5,"y":-0.0004632055300697475},"angle":{"x":-0.00010476457304674579,"z":-2.6941953700752467e-5,"y":-4.1907782267487045e-6}},{"degrees_of_freedom":[174,175,176,177,178,179],"id":"n29","parent":"11","position":{"x":-2.020305089104421,"z":2.0203050891044216,"y":5},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":3.479832553620267e-5,"z":-0.00010388623094324996,"y":-0.0004851400327793676},"angle":{"x":0.0002665155173172908,"z":0.00010183275945537704,"y":-8.436678850859844e-6}},{"degrees_of_freedom":[180,181,182,183,184,185],"id":"n30","parent":"11","position":{"x":-2.857142857142857,"z":3.140184917367551e-16,"y":5},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":4.5869772361783854e-5,"z":-0.00010780933224229556,"y":-0.0005191034477018869},"angle":{"x":-0.00012307939842534182,"z":-3.8402387409671986e-5,"y":-9.353758825194293e-6}},{"degrees_of_freedom":[186,187,188,189,190,191],"id":"n31","parent":"11","position":{"x":-2.0203050891044216,"z":-2.020305089104421,"y":5},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":5.593048979287994e-5,"z":-0.00010476015655908967,"y":-0.0009919513076572896},"angle":{"x":3.101737796819643e-5,"z":-9.537636611059227e-5,"y":-5.927588327633606e-6}},{"degrees_of_freedom":[192,193,194,195,196,197],"id":"n32","parent":"11","position":{"x":-3.140184917367551e-16,"z":-2.857142857142857,"y":5},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":6.158732563502504e-5,"z":-9.562701844056847e-5,"y":-0.0011956776124639784},"angle":{"x":-0.0001515997704632538,"z":-3.3304022631398205e-5,"y":-5.1601233318580876e-6}},{"degrees_of_freedom":[198,199,200,201,202,203],"id":"n33","parent":"11","position":{"x":2.020305089104421,"z":-2.0203050891044216,"y":5},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":5.876979230599399e-5,"z":-8.575088511137702e-5,"y":-0.0011456749524418888},"angle":{"x":0.0009170300281609024,"z":0.0003470063501822908,"y":-6.108290126576873e-6}},{"degrees_of_freedom":[204,205,206,207,208,209],"id":"n34","parent":"11","position":{"x":-5,"z":-5,"y":0},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-3.62809621994341e-5,"z":2.3957647839037344e-5,"y":-0.00028829903598645833},"angle":{"x":-4.856370516257132e-5,"z":-7.66383725766996e-6,"y":2.850842658665082e-5}},{"degrees_of_freedom":[210,211,212,213,214,215],"id":"n35","parent":"11","position":{"x":-5,"z":5,"y":0},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-9.70118539723795e-5,"z":-8.117311583525215e-8,"y":-0.00028912134929227754},"angle":{"x":-2.8222974350723854e-5,"z":-3.8343527094672525e-6,"y":1.5590867114343817e-5}},{"degrees_of_freedom":[216,217,218,219,220,221],"id":"n36","parent":"11","position":{"x":-5,"z":-2.857142857142857,"y":3.140184917367551e-16},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":6.537081706266729e-5,"z":-1.014570871502798e-5,"y":-0.00016875867503778546},"angle":{"x":5.18517064158398e-6,"z":-2.066569861882278e-5,"y":-1.9664979826319588e-5}},{"degrees_of_freedom":[222,223,224,225,226,227],"id":"n37","parent":"11","position":{"x":-5,"z":-2.020305089104421,"y":2.0203050891044216},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":9.78287668553489e-5,"z":6.561244020218238e-6,"y":-0.00021576920241149356},"angle":{"x":2.1268838017196703e-5,"z":9.209627026869108e-6,"y":6.483522329191923e-5}},{"degrees_of_freedom":[228,229,230,231,232,233],"id":"n38","parent":"11","position":{"x":-5,"z":3.140184917367551e-16,"y":2.857142857142857},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0.00017618916523321913,"z":2.120954178050248e-5,"y":-0.00033999416500637595},"angle":{"x":8.649902729306661e-5,"z":-2.84184990727143e-5,"y":-4.159324559149605e-5}},{"degrees_of_freedom":[234,235,236,237,238,239],"id":"n39","parent":"11","position":{"x":-5,"z":2.0203050891044216,"y":2.020305089104421},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-7.023327536817232e-5,"z":2.081361555884091e-5,"y":-0.0004360656722063371},"angle":{"x":-3.411511326841213e-5,"z":-9.58477397523689e-5,"y":0.00014912549423106109}},{"degrees_of_freedom":[240,241,242,243,244,245],"id":"n40","parent":"11","position":{"x":-5,"z":2.857142857142857,"y":-3.140184917367551e-16},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-0.00017230484576138903,"z":3.3026133970852355e-5,"y":-0.00038860612092968293},"angle":{"x":7.2974047816760535e-6,"z":-2.066581478682328e-5,"y":-6.35212282345018e-5}},{"degrees_of_freedom":[246,247,248,249,250,251],"id":"n41","parent":"11","position":{"x":-5,"z":2.020305089104421,"y":-2.0203050891044216},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-0.0001680624429245042,"z":5.209081900790816e-6,"y":-0.0003420665059032294},"angle":{"x":2.761407790076071e-5,"z":4.280211639782865e-5,"y":0.00011599295898691574}},{"degrees_of_freedom":[252,253,254,255,256,257],"id":"n42","parent":"11","position":{"x":-5,"z":-3.140184917367551e-16,"y":-2.857142857142857},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-0.00015781961883380407,"z":-1.3732510165444174e-5,"y":-0.0002252320643227212},"angle":{"x":8.625045379106706e-5,"z":-1.2912974873755336e-5,"y":-4.159345146889665e-5}},{"degrees_of_freedom":[258,259,260,261,262,263],"id":"n43","parent":"11","position":{"x":-5,"z":-2.0203050891044216,"y":-2.020305089104421},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":2.3794536611178853e-11,"z":-9.336828999068538e-6,"y":-0.0001265983051085975},"angle":{"x":-1.5855753921700385e-5,"z":-0.00011563721057273592,"y":0.0002489549346602368}},{"degrees_of_freedom":[264,265,266,267,268,269],"id":"n44","parent":"11","position":{"x":0,"z":-5,"y":-2.857142857142857},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":1.143664078975512e-5,"z":-7.289909064571853e-5,"y":-0.00019920029996414794},"angle":{"x":0.00010929407808522114,"z":3.961471798517929e-5,"y":9.187975597437265e-6}},{"degrees_of_freedom":[270,271,272,273,274,275],"id":"n45","parent":"11","position":{"x":2.020305089104421,"z":-5,"y":-2.020305089104421},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":8.868492035381642e-6,"z":-1.791847341338329e-10,"y":-0.00015321835074543372},"angle":{"x":-3.40196266557355e-5,"z":-9.064707238951791e-6,"y":-5.017451211032404e-5}},{"degrees_of_freedom":[276,277,278,279,280,281],"id":"n46","parent":"11","position":{"x":2.857142857142857,"z":-5,"y":0},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-4.101387679182387e-6,"z":-2.674229058501999e-5,"y":-0.00020478614425062115},"angle":{"x":-1.9170133990234863e-5,"z":9.410910051156162e-6,"y":-1.4324638958052132e-5}},{"degrees_of_freedom":[282,283,284,285,286,287],"id":"n47","parent":"11","position":{"x":2.020305089104421,"z":-5,"y":2.020305089104421},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-2.7788168746499293e-5,"z":-7.745920364337898e-5,"y":-0.00027047524690588723},"angle":{"x":-4.0766521465736154e-5,"z":2.5295683333854193e-5,"y":3.781367501001636e-5}},{"degrees_of_freedom":[288,289,290,291,292,293],"id":"n48","parent":"11","position":{"x":0,"z":-5,"y":2.857142857142857},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-4.899396288077852e-5,"z":-3.517901595570018e-5,"y":-0.00034821869791233135},"angle":{"x":0.00015300770457871444,"z":3.645777222423208e-5,"y":-4.245024748198064e-5}},{"degrees_of_freedom":[294,295,296,297,298,299],"id":"n49","parent":"11","position":{"x":-2.020305089104421,"z":-5,"y":2.020305089104421},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-5.071184316026628e-5,"z":-0.0002489841133426273,"y":-0.0003828915942506569},"angle":{"x":-2.7906589226466762e-5,"z":-1.8412155501118095e-5,"y":-0.00011738742567320043}},{"degrees_of_freedom":[300,301,302,303,304,305],"id":"n50","parent":"11","position":{"x":-2.857142857142857,"z":-5,"y":0},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-4.7715899463409387e-5,"z":-0.0002908384365532881,"y":-0.0003380461112651836},"angle":{"x":-7.080837703914142e-5,"z":9.938814166567424e-6,"y":-0.00022096133612644958}},{"degrees_of_freedom":[306,307,308,309,310,311],"id":"n51","parent":"11","position":{"x":-2.020305089104421,"z":-5,"y":-2.020305089104421},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-1.5253285450557983e-5,"z":3.7124868256823656e-5,"y":-0.00028216034957205045},"angle":{"x":-0.0002231834573653105,"z":2.9395423891970626e-5,"y":0.0001469047173679137}},{"degrees_of_freedom":[312,313,314,315,316,317],"id":"n52","parent":"11","position":{"x":0,"z":5,"y":2.857142857142857},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-2.9574431666831168e-5,"z":-8.786646618865047e-5,"y":-0.00042032290756475793},"angle":{"x":-2.7687977295013475e-5,"z":4.203599150095933e-7,"y":-1.7333375066859433e-6}},{"degrees_of_freedom":[318,319,320,321,322,323],"id":"n53","parent":"11","position":{"x":-2.020305089104421,"z":5,"y":2.020305089104421},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-5.660821800867769e-5,"z":-6.745820875123528e-5,"y":-0.00038220870955382453},"angle":{"x":-1.1258780779464041e-5,"z":-4.151389872375259e-5,"y":6.170378919215707e-6}},{"degrees_of_freedom":[324,325,326,327,328,329],"id":"n54","parent":"11","position":{"x":-2.857142857142857,"z":5,"y":0},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-8.107032635366636e-5,"z":-3.6183792745588686e-5,"y":-0.00029457852302228454},"angle":{"x":-1.5511282837152307e-5,"z":9.133283830295874e-7,"y":1.9349172209397637e-6}},{"degrees_of_freedom":[330,331,332,333,334,335],"id":"n55","parent":"11","position":{"x":-2.020305089104421,"z":5,"y":-2.020305089104421},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-5.310446982060523e-5,"z":-8.147798272227073e-6,"y":-0.0002056418691047366},"angle":{"x":-2.03259786414844e-5,"z":4.2987348676557205e-5,"y":1.958960259133735e-5}},{"degrees_of_freedom":[336,337,338,339,340,341],"id":"n56","parent":"11","position":{"x":0,"z":5,"y":-2.857142857142857},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-2.3173729648814407e-5,"z":-2.9456103248292095e-5,"y":-0.00016682268040934178},"angle":{"x":1.5605735906091592e-5,"z":1.8477027666488484e-7,"y":3.7713477074028473e-6}},{"degrees_of_freedom":[342,343,344,345,346,347],"id":"n57","parent":"11","position":{"x":2.020305089104421,"z":5,"y":-2.020305089104421},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":5.629097382174144e-7,"z":-2.4645463037177792e-5,"y":-0.00019995064265451677},"angle":{"x":-1.9638557591937182e-5,"z":-3.32611129278282e-5,"y":-9.892471967282382e-6}},{"degrees_of_freedom":[348,349,350,351,352,353],"id":"n58","parent":"11","position":{"x":2.857142857142857,"z":5,"y":0},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":1.5452361877287627e-5,"z":-5.6098563944373835e-5,"y":-0.0002900756820173306},"angle":{"x":-9.242214418875747e-6,"z":1.169940861151312e-6,"y":1.5306210942161137e-5}},{"degrees_of_freedom":[354,355,356,357,358,359],"id":"n59","parent":"11","position":{"x":2.020305089104421,"z":5,"y":2.020305089104421},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-5.041200142381331e-6,"z":-6.193402893487025e-5,"y":-0.00038320238607210904},"angle":{"x":2.5983955991099552e-6,"z":3.726022043786261e-5,"y":-1.3179847908636804e-5}},{"degrees_of_freedom":[360,361,362,363,364,365],"id":"n60","parent":"11","position":{"x":5,"z":10,"y":-5},"restrained_degrees_of_freedom":[true,true,true,true,true,true],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0,"z":0,"y":0},"angle":{"x":0,"z":0,"y":0}},{"degrees_of_freedom":[366,367,368,369,370,371],"id":"n61","parent":"11","position":{"x":-5,"z":10,"y":-5},"restrained_degrees_of_freedom":[true,true,true,true,true,true],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0,"z":0,"y":0},"angle":{"x":0,"z":0,"y":0}},{"degrees_of_freedom":[372,373,374,375,376,377],"id":"n62","parent":"11","position":{"x":0,"z":15,"y":-5},"restrained_degrees_of_freedom":[true,true,true,true,true,true],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0,"z":0,"y":0},"angle":{"x":0,"z":0,"y":0}},{"degrees_of_freedom":[378,379,380,381,382,383],"id":"n63","parent":"11","position":{"x":2.857142857142857,"z":10,"y":-5},"restrained_degrees_of_freedom":[true,true,true,true,true,true],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0,"z":0,"y":0},"angle":{"x":0,"z":0,"y":0}},{"degrees_of_freedom":[384,385,386,387,388,389],"id":"n64","parent":"11","position":{"x":2.0203050891044216,"z":7.979694910895579,"y":-5},"restrained_degrees_of_freedom":[true,true,true,true,true,true],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0,"z":0,"y":0},"angle":{"x":0,"z":0,"y":0}},{"degrees_of_freedom":[390,391,392,393,394,395],"id":"n65","parent":"11","position":{"x":3.140184917367551e-16,"z":7.142857142857142,"y":-5},"restrained_degrees_of_freedom":[true,true,true,true,true,true],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0,"z":0,"y":0},"angle":{"x":0,"z":0,"y":0}},{"degrees_of_freedom":[396,397,398,399,400,401],"id":"n66","parent":"11","position":{"x":-2.020305089104421,"z":7.979694910895578,"y":-5},"restrained_degrees_of_freedom":[true,true,true,true,true,true],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0,"z":0,"y":0},"angle":{"x":0,"z":0,"y":0}},{"degrees_of_freedom":[402,403,404,405,406,407],"id":"n67","parent":"11","position":{"x":-2.857142857142857,"z":10,"y":-5},"restrained_degrees_of_freedom":[true,true,true,true,true,true],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0,"z":0,"y":0},"angle":{"x":0,"z":0,"y":0}},{"degrees_of_freedom":[408,409,410,411,412,413],"id":"n68","parent":"11","position":{"x":-2.0203050891044216,"z":12.020305089104422,"y":-5},"restrained_degrees_of_freedom":[true,true,true,true,true,true],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0,"z":0,"y":0},"angle":{"x":0,"z":0,"y":0}},{"degrees_of_freedom":[414,415,416,417,418,419],"id":"n69","parent":"11","position":{"x":-3.140184917367551e-16,"z":12.857142857142858,"y":-5},"restrained_degrees_of_freedom":[true,true,true,true,true,true],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0,"z":0,"y":0},"angle":{"x":0,"z":0,"y":0}},{"degrees_of_freedom":[420,421,422,423,424,425],"id":"n70","parent":"11","position":{"x":2.020305089104421,"z":12.020305089104422,"y":-5},"restrained_degrees_of_freedom":[true,true,true,true,true,true],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0,"z":0,"y":0},"angle":{"x":0,"z":0,"y":0}},{"degrees_of_freedom":[426,427,428,429,430,431],"id":"n71","parent":"11","position":{"x":5,"z":10,"y":5},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":-800},"displacement":{"x":-7.375546984188693e-6,"z":-4.2966337805451534e-5,"y":-0.0005731431472973172},"angle":{"x":-7.057154635306393e-6,"z":2.4310093284786303e-7,"y":-9.165454516044269e-6}},{"degrees_of_freedom":[432,433,434,435,436,437],"id":"n72","parent":"11","position":{"x":5,"z":15,"y":0},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-2.4899090293552434e-5,"z":-1.6255225575498763e-6,"y":-0.00028172266689251244},"angle":{"x":-3.0021028309578116e-6,"z":2.3599324421549115e-6,"y":-4.608274706601677e-6}},{"degrees_of_freedom":[438,439,440,441,442,443],"id":"n73","parent":"11","position":{"x":5,"z":12.857142857142858,"y":-3.140184917367551e-16},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-1.6667882385559583e-5,"z":1.7054539531019968e-5,"y":-0.0002789675436823021},"angle":{"x":-4.500300629949377e-6,"z":2.7316191826537372e-6,"y":-5.4434962908077395e-6}},{"degrees_of_freedom":[444,445,446,447,448,449],"id":"n74","parent":"11","position":{"x":5,"z":12.020305089104422,"y":2.020305089104421},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-1.779630073668402e-5,"z":-1.3621164022712313e-5,"y":-0.00036806186641499876},"angle":{"x":-4.656757334077175e-5,"z":4.579820613057775e-6,"y":-1.3473772562768073e-5}},{"degrees_of_freedom":[450,451,452,453,454,455],"id":"n75","parent":"11","position":{"x":5,"z":10,"y":2.857142857142857},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-1.2970616216853399e-5,"z":-2.8032853638429236e-5,"y":-0.0003900837210447762},"angle":{"x":-2.746756271300743e-6,"z":5.40567251156098e-7,"y":-4.851800896401344e-6}},{"degrees_of_freedom":[456,457,458,459,460,461],"id":"n76","parent":"11","position":{"x":5,"z":7.979694910895579,"y":2.0203050891044216},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-1.9670219661849037e-6,"z":-3.8744389552348685e-5,"y":-0.00037343565534192545},"angle":{"x":3.7478753819772136e-5,"z":6.18911813247409e-6,"y":1.3927477424469723e-5}},{"degrees_of_freedom":[462,463,464,465,466,467],"id":"n77","parent":"11","position":{"x":5,"z":7.142857142857142,"y":3.140184917367551e-16},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-5.364500164131547e-7,"z":-5.264455912352274e-5,"y":-0.0002897126868089771},"angle":{"x":-4.989092572594315e-6,"z":2.0249878506996424e-7,"y":-2.0249676812070976e-7}},{"degrees_of_freedom":[468,469,470,471,472,473],"id":"n78","parent":"11","position":{"x":5,"z":7.979694910895578,"y":-2.020305089104421},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":5.55207297329209e-7,"z":-2.191384952830695e-5,"y":-0.0001995681924697591},"angle":{"x":-4.588576143994834e-5,"z":3.759832655942148e-6,"y":-7.461415823076647e-6}},{"degrees_of_freedom":[474,475,476,477,478,479],"id":"n79","parent":"11","position":{"x":5,"z":10,"y":-2.857142857142857},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":1.074056932486635e-5,"z":-7.870944731969622e-6,"y":-0.0001792059774826932},"angle":{"x":-1.6682475705451563e-6,"z":2.3935405310356705e-6,"y":-7.942076392810559e-7}},{"degrees_of_freedom":[480,481,482,483,484,485],"id":"n80","parent":"11","position":{"x":5,"z":12.020305089104422,"y":-2.0203050891044216},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-6.428816245749727e-6,"z":2.670411551935194e-6,"y":-0.0001969356094982908},"angle":{"x":3.666926638590998e-5,"z":8.517079677258574e-6,"y":1.3723027414139911e-5}},{"degrees_of_freedom":[486,487,488,489,490,491],"id":"n81","parent":"11","position":{"x":-5,"z":10,"y":5},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":-400},"displacement":{"x":-3.081755313386476e-5,"z":-0.0001160637068582573,"y":-0.0006379527553389912},"angle":{"x":-7.249599924920911e-5,"z":1.0455492587008547e-5,"y":-9.02372951068732e-6}},{"degrees_of_freedom":[492,493,494,495,496,497],"id":"n82","parent":"11","position":{"x":0,"z":15,"y":5},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":-800},"displacement":{"x":-6.509882066421819e-5,"z":-7.289846932066963e-5,"y":-0.0005918461937405923},"angle":{"x":1.19433199024327e-6,"z":7.0820280268926244e-6,"y":-1.1605729326953358e-5}},{"degrees_of_freedom":[498,499,500,501,502,503],"id":"n83","parent":"11","position":{"x":2.857142857142857,"z":10,"y":5},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-2.1395003492676893e-5,"z":-6.032069609573146e-5,"y":-0.0005822562900248065},"angle":{"x":-2.3603172567042867e-5,"z":-4.7554310516818254e-7,"y":-1.1099335032080742e-5}},{"degrees_of_freedom":[504,505,506,507,508,509],"id":"n84","parent":"11","position":{"x":2.0203050891044216,"z":12.020305089104422,"y":5},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-3.0151023782779924e-5,"z":-6.440148492655034e-5,"y":-0.0005505066768030125},"angle":{"x":-2.3967224317702484e-5,"z":4.843422351260474e-6,"y":-9.248914868267103e-6}},{"degrees_of_freedom":[510,511,512,513,514,515],"id":"n85","parent":"11","position":{"x":3.140184917367551e-16,"z":12.857142857142858,"y":5},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-3.9882231492576805e-5,"z":-7.74337950867571e-5,"y":-0.0005428411029438878},"angle":{"x":-1.3465722337834828e-5,"z":1.7180762817292926e-6,"y":-7.526576647002632e-6}},{"degrees_of_freedom":[516,517,518,519,520,521],"id":"n86","parent":"11","position":{"x":-2.020305089104421,"z":12.020305089104422,"y":5},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-3.5545979654931e-5,"z":-9.362012971127892e-5,"y":-0.0005577127981839471},"angle":{"x":0.0001544697013096489,"z":6.0504739296687205e-5,"y":-1.1417668721294328e-5}},{"degrees_of_freedom":[522,523,524,525,526,527],"id":"n87","parent":"11","position":{"x":-2.857142857142857,"z":10,"y":5},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-2.6391159106649532e-5,"z":-0.00010033123776168111,"y":-0.0006036367101040046},"angle":{"x":-2.7699750210931836e-5,"z":3.121237399333749e-6,"y":-1.1053718506054577e-5}},{"degrees_of_freedom":[528,529,530,531,532,533],"id":"n88","parent":"11","position":{"x":-2.0203050891044216,"z":7.979694910895579,"y":5},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-1.624335113800126e-5,"z":-9.660543387551259e-5,"y":-0.0006721041146202593},"angle":{"x":0.00011840718401071173,"z":-5.516758502827143e-5,"y":-7.801951203196823e-6}},{"degrees_of_freedom":[534,535,536,537,538,539],"id":"n89","parent":"11","position":{"x":-3.140184917367551e-16,"z":7.142857142857142,"y":5},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-9.804264018034289e-6,"z":-8.376847916934925e-5,"y":-0.0006993899909338511},"angle":{"x":-4.240225109442537e-5,"z":4.3517202572349495e-6,"y":-7.630493033809122e-6}},{"degrees_of_freedom":[540,541,542,543,544,545],"id":"n90","parent":"11","position":{"x":2.020305089104421,"z":7.979694910895578,"y":5},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-1.630584795096061e-5,"z":-6.813792825908914e-5,"y":-0.0006557082066389276},"angle":{"x":0.0002557131829954481,"z":0.00010708690068688864,"y":-1.07420181205058e-5}},{"degrees_of_freedom":[546,547,548,549,550,551],"id":"n91","parent":"11","position":{"x":-5,"z":15,"y":0},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-0.00011840243562172379,"z":-6.278491826950135e-6,"y":-0.00031217981320067997},"angle":{"x":-2.604311499641208e-5,"z":6.444260308201439e-6,"y":8.032123115617463e-6}},{"degrees_of_freedom":[552,553,554,555,556,557],"id":"n92","parent":"11","position":{"x":-5,"z":7.142857142857142,"y":3.140184917367551e-16},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-1.237317863971396e-5,"z":-2.25807252539034e-5,"y":-0.0001807036479808214},"angle":{"x":2.2372966630255677e-6,"z":-5.752895960245591e-6,"y":1.1529794919047351e-5}},{"degrees_of_freedom":[558,559,560,561,562,563],"id":"n93","parent":"11","position":{"x":-5,"z":7.979694910895579,"y":2.0203050891044216},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":1.2001972459924817e-5,"z":-1.0750025077213987e-5,"y":-0.00022712211847532418},"angle":{"x":1.8912373311524317e-5,"z":1.654286329515693e-5,"y":7.857049492101058e-5}},{"degrees_of_freedom":[564,565,566,567,568,569],"id":"n94","parent":"11","position":{"x":-5,"z":10,"y":2.857142857142857},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":8.15664800607697e-5,"z":1.6969797749443173e-6,"y":-0.00035032684946890535},"angle":{"x":8.478655351472598e-5,"z":-1.5063564983060903e-5,"y":-6.8472822288306e-6}},{"degrees_of_freedom":[570,571,572,573,574,575],"id":"n95","parent":"11","position":{"x":-5,"z":12.020305089104422,"y":2.020305089104421},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-2.1024033399204237e-5,"z":3.084327197169093e-7,"y":-0.000443515617959848},"angle":{"x":-3.418861829303743e-5,"z":-7.987876508177228e-5,"y":0.00017249907268854006}},{"degrees_of_freedom":[576,577,578,579,580,581],"id":"n96","parent":"11","position":{"x":-5,"z":12.857142857142858,"y":-3.140184917367551e-16},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-6.795789424123624e-5,"z":1.8309437262411735e-5,"y":-0.0003970274130055849},"angle":{"x":2.7723774751453865e-6,"z":-9.343263607105862e-6,"y":-3.0984333676089445e-5}},{"degrees_of_freedom":[582,583,584,585,586,587],"id":"n97","parent":"11","position":{"x":-5,"z":12.020305089104422,"y":-2.0203050891044216},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-6.303401670679104e-5,"z":-2.513839414274611e-6,"y":-0.0003544426300377178},"angle":{"x":2.5240672154657425e-5,"z":-2.4300125654768418e-5,"y":-7.72676611321479e-5}},{"degrees_of_freedom":[588,589,590,591,592,593],"id":"n98","parent":"11","position":{"x":-5,"z":10,"y":-2.857142857142857},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-4.042860601871177e-5,"z":-2.0045634252267174e-5,"y":-0.00023424799768910658},"angle":{"x":8.754846706056553e-5,"z":-3.254865432923789e-8,"y":-1.2607457238838576e-5}},{"degrees_of_freedom":[594,595,596,597,598,599],"id":"n99","parent":"11","position":{"x":-5,"z":7.979694910895578,"y":-2.020305089104421},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-1.745121357638521e-5,"z":-1.608090427909643e-5,"y":-0.00013462867835606088},"angle":{"x":-1.976527025700636e-5,"z":-3.208960296778201e-5,"y":8.204246069446501e-5}},{"degrees_of_freedom":[600,601,602,603,604,605],"id":"n100","parent":"11","position":{"x":0,"z":15,"y":2.857142857142857},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-6.53524014413303e-5,"z":-8.196775400145377e-5,"y":-0.0004214771102285761},"angle":{"x":-3.5246899379939895e-5,"z":4.078047961376561e-6,"y":-5.026063451526073e-6}},{"degrees_of_freedom":[606,607,608,609,610,611],"id":"n101","parent":"11","position":{"x":-2.020305089104421,"z":15,"y":2.020305089104421},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-8.967856473935977e-5,"z":-6.211084149471714e-5,"y":-0.00039161617971119407},"angle":{"x":-9.669904949639367e-6,"z":-3.718898278120354e-5,"y":6.333242821501554e-6}},{"degrees_of_freedom":[612,613,614,615,616,617],"id":"n102","parent":"11","position":{"x":-2.857142857142857,"z":15,"y":0},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-0.00010204205017865687,"z":-3.370448868668798e-5,"y":-0.0003064401391973849},"angle":{"x":-1.4606770805166668e-5,"z":7.196453871787466e-6,"y":8.14218670253212e-7}},{"degrees_of_freedom":[618,619,620,621,622,623],"id":"n103","parent":"11","position":{"x":-2.020305089104421,"z":15,"y":-2.020305089104421},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-6.303513114712104e-5,"z":-6.660871520252148e-6,"y":-0.00021211714118845804},"angle":{"x":-1.9359235769444833e-5,"z":4.6974862810447655e-5,"y":1.8687303070103026e-5}},{"degrees_of_freedom":[624,625,626,627,628,629],"id":"n104","parent":"11","position":{"x":0,"z":15,"y":-2.857142857142857},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-3.199308384068288e-5,"z":-2.745315457316752e-5,"y":-0.00016859184472250839},"angle":{"x":2.2599540236266866e-5,"z":1.5928895455465183e-6,"y":7.422230276021792e-7}},{"degrees_of_freedom":[630,631,632,633,634,635],"id":"n105","parent":"11","position":{"x":2.020305089104421,"z":15,"y":-2.020305089104421},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-1.2443486268112198e-5,"z":-1.0421132382487185e-5,"y":-0.00019826461629628348},"angle":{"x":-1.5488575138698292e-5,"z":-2.9755334311750777e-5,"y":-1.44692125124675e-5}},{"degrees_of_freedom":[636,637,638,639,640,641],"id":"n106","parent":"11","position":{"x":2.857142857142857,"z":15,"y":0},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-7.269507511046356e-6,"z":-2.9751402797440022e-5,"y":-0.0002834913222381275},"angle":{"x":-8.057858144583087e-6,"z":6.582647219490554e-6,"y":3.7336280459039808e-6}},{"degrees_of_freedom":[642,643,644,645,646,647],"id":"n107","parent":"11","position":{"x":2.020305089104421,"z":15,"y":2.020305089104421},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-3.752750872154653e-5,"z":-4.28327873385252e-5,"y":-0.0003779334920205274},"angle":{"x":1.7022973476175444e-6,"z":4.0055912233194496e-5,"y":-1.9565959454630115e-5}},{"degrees_of_freedom":[648,649,650,651,652,653],"id":"n108","parent":"11","position":{"x":5,"z":20,"y":-5},"restrained_degrees_of_freedom":[true,true,true,true,true,true],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0,"z":0,"y":0},"angle":{"x":0,"z":0,"y":0}},{"degrees_of_freedom":[654,655,656,657,658,659],"id":"n109","parent":"11","position":{"x":-5,"z":20,"y":-5},"restrained_degrees_of_freedom":[true,true,true,true,true,true],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0,"z":0,"y":0},"angle":{"x":0,"z":0,"y":0}},{"degrees_of_freedom":[660,661,662,663,664,665],"id":"n110","parent":"11","position":{"x":0,"z":25,"y":-5},"restrained_degrees_of_freedom":[true,true,true,true,true,true],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0,"z":0,"y":0},"angle":{"x":0,"z":0,"y":0}},{"degrees_of_freedom":[666,667,668,669,670,671],"id":"n111","parent":"11","position":{"x":2.857142857142857,"z":20,"y":-5},"restrained_degrees_of_freedom":[true,true,true,true,true,true],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0,"z":0,"y":0},"angle":{"x":0,"z":0,"y":0}},{"degrees_of_freedom":[672,673,674,675,676,677],"id":"n112","parent":"11","position":{"x":2.0203050891044216,"z":17.979694910895578,"y":-5},"restrained_degrees_of_freedom":[true,true,true,true,true,true],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0,"z":0,"y":0},"angle":{"x":0,"z":0,"y":0}},{"degrees_of_freedom":[678,679,680,681,682,683],"id":"n113","parent":"11","position":{"x":3.140184917367551e-16,"z":17.142857142857142,"y":-5},"restrained_degrees_of_freedom":[true,true,true,true,true,true],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0,"z":0,"y":0},"angle":{"x":0,"z":0,"y":0}},{"degrees_of_freedom":[684,685,686,687,688,689],"id":"n114","parent":"11","position":{"x":-2.020305089104421,"z":17.979694910895578,"y":-5},"restrained_degrees_of_freedom":[true,true,true,true,true,true],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0,"z":0,"y":0},"angle":{"x":0,"z":0,"y":0}},{"degrees_of_freedom":[690,691,692,693,694,695],"id":"n115","parent":"11","position":{"x":-2.857142857142857,"z":20,"y":-5},"restrained_degrees_of_freedom":[true,true,true,true,true,true],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0,"z":0,"y":0},"angle":{"x":0,"z":0,"y":0}},{"degrees_of_freedom":[696,697,698,699,700,701],"id":"n116","parent":"11","position":{"x":-2.0203050891044216,"z":22.020305089104422,"y":-5},"restrained_degrees_of_freedom":[true,true,true,true,true,true],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0,"z":0,"y":0},"angle":{"x":0,"z":0,"y":0}},{"degrees_of_freedom":[702,703,704,705,706,707],"id":"n117","parent":"11","position":{"x":-3.140184917367551e-16,"z":22.857142857142858,"y":-5},"restrained_degrees_of_freedom":[true,true,true,true,true,true],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0,"z":0,"y":0},"angle":{"x":0,"z":0,"y":0}},{"degrees_of_freedom":[708,709,710,711,712,713],"id":"n118","parent":"11","position":{"x":2.020305089104421,"z":22.020305089104422,"y":-5},"restrained_degrees_of_freedom":[true,true,true,true,true,true],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0,"z":0,"y":0},"angle":{"x":0,"z":0,"y":0}},{"degrees_of_freedom":[714,715,716,717,718,719],"id":"n119","parent":"11","position":{"x":5,"z":20,"y":5},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":-800},"displacement":{"x":-6.702520740593556e-5,"z":-9.635782990947715e-6,"y":-0.0005706144980977943},"angle":{"x":-8.220138697948613e-6,"z":-1.0837960916978411e-5,"y":-9.734344417294766e-6}},{"degrees_of_freedom":[720,721,722,723,724,725],"id":"n120","parent":"11","position":{"x":5,"z":25,"y":0},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-1.102053508916013e-5,"z":7.024799037891848e-5,"y":-0.00027266546521202944},"angle":{"x":-2.6855518632869914e-6,"z":1.048642897341503e-5,"y":1.3450065201242724e-5}},{"degrees_of_freedom":[726,727,728,729,730,731],"id":"n121","parent":"11","position":{"x":5,"z":22.857142857142858,"y":-3.140184917367551e-16},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-4.102021485978553e-5,"z":7.086961103965979e-5,"y":-0.0002792097729655338},"angle":{"x":-3.767331317391067e-7,"z":1.7418141555581345e-5,"y":2.367040815174433e-6}},{"degrees_of_freedom":[732,733,734,735,736,737],"id":"n122","parent":"11","position":{"x":5,"z":22.020305089104422,"y":2.020305089104421},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-8.281678589751833e-5,"z":3.6861994800495504e-5,"y":-0.00036562270673813087},"angle":{"x":-5.369380998400983e-5,"z":5.196254534096263e-5,"y":-0.00010040068188257661}},{"degrees_of_freedom":[738,739,740,741,742,743],"id":"n123","parent":"11","position":{"x":5,"z":20,"y":2.857142857142857},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-0.00017008871806336478,"z":1.650966886566303e-5,"y":-0.000385834371510838},"angle":{"x":-3.4925831691922156e-6,"z":1.648254610782275e-5,"y":-5.109365354206633e-6}},{"degrees_of_freedom":[744,745,746,747,748,749],"id":"n124","parent":"11","position":{"x":5,"z":17.979694910895578,"y":2.0203050891044216},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-6.898870828431801e-5,"z":2.0081697113840706e-6,"y":-0.0003718789361237176},"angle":{"x":3.875983814645147e-5,"z":5.228744032318371e-5,"y":0.00010122344998897385}},{"degrees_of_freedom":[750,751,752,753,754,755],"id":"n125","parent":"11","position":{"x":5,"z":17.142857142857142,"y":3.140184917367551e-16},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-3.275892483624357e-5,"z":-1.6529036133572226e-5,"y":-0.0002846857690526315},"angle":{"x":-7.088477095895315e-7,"z":1.285101560824639e-5,"y":-5.258468502501537e-6}},{"degrees_of_freedom":[756,757,758,759,760,761],"id":"n126","parent":"11","position":{"x":5,"z":17.979694910895578,"y":-2.020305089104421},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-5.330116265854508e-6,"z":3.822302585782807e-6,"y":-0.00019724058886226041},"angle":{"x":-3.8750604076386196e-5,"z":4.346904105912609e-5,"y":-8.67981905156189e-5}},{"degrees_of_freedom":[762,763,764,765,766,767],"id":"n127","parent":"11","position":{"x":5,"z":20,"y":-2.857142857142857},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":7.452240834052528e-5,"z":1.917314975745553e-5,"y":-0.00017947522430856967},"angle":{"x":-3.8895080292139307e-7,"z":1.3786521701406523e-5,"y":2.217896181161002e-6}},{"degrees_of_freedom":[768,769,770,771,772,773],"id":"n128","parent":"11","position":{"x":5,"z":22.020305089104422,"y":-2.0203050891044216},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-3.1852952789973223e-6,"z":3.8811564506000984e-5,"y":-0.0001940582613015351},"angle":{"x":5.164353258972301e-5,"z":6.06403933213484e-5,"y":0.00012967942911906431}},{"degrees_of_freedom":[774,775,776,777,778,779],"id":"n129","parent":"11","position":{"x":-5,"z":20,"y":5},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":-400},"displacement":{"x":-7.696258602155008e-5,"z":-0.00010776001588447604,"y":-0.0006466408255175184},"angle":{"x":-7.32005089882528e-5,"z":-1.9343147834396588e-5,"y":-9.048909949053778e-6}},{"degrees_of_freedom":[780,781,782,783,784,785],"id":"n130","parent":"11","position":{"x":0,"z":25,"y":5},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":-400},"displacement":{"x":-9.942749369894232e-5,"z":-6.527498925049447e-5,"y":-0.0005875983018116585},"angle":{"x":1.4336849828151779e-5,"z":5.286958160985517e-5,"y":-1.316917534327453e-5}},{"degrees_of_freedom":[786,787,788,789,790,791],"id":"n131","parent":"11","position":{"x":2.857142857142857,"z":20,"y":5},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-7.443294766564685e-5,"z":-4.028277113657804e-5,"y":-0.0001535274797624168},"angle":{"x":-3.320305139880189e-5,"z":5.5456449376224294e-5,"y":-8.99743378795439e-6}},{"degrees_of_freedom":[792,793,794,795,796,797],"id":"n132","parent":"11","position":{"x":2.0203050891044216,"z":22.020305089104422,"y":5},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-8.541787657430914e-5,"z":-4.332051755934196e-5,"y":-0.0004623987830049573},"angle":{"x":-0.000807923791707622,"z":0.0003452810282690495,"y":-1.2931203430173989e-5}},{"degrees_of_freedom":[798,799,800,801,802,803],"id":"n133","parent":"11","position":{"x":3.140184917367551e-16,"z":22.857142857142858,"y":5},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-9.331185611646632e-5,"z":-6.42900015079032e-5,"y":-0.0006048711651641545},"angle":{"x":3.0153977461682945e-6,"z":5.9404650560441566e-5,"y":-1.1069435327629803e-5}},{"degrees_of_freedom":[804,805,806,807,808,809],"id":"n134","parent":"11","position":{"x":-2.020305089104421,"z":22.020305089104422,"y":5},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-8.398754985800693e-5,"z":-8.325922660913564e-5,"y":-0.0007422967054415489},"angle":{"x":0.0004005598140076399,"z":0.0001991238679900461,"y":-1.1136612506615387e-5}},{"degrees_of_freedom":[810,811,812,813,814,815],"id":"n135","parent":"11","position":{"x":-2.857142857142857,"z":20,"y":5},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-7.653877280961982e-5,"z":-8.901962933431874e-5,"y":-0.0010964529612164187},"angle":{"x":-2.978928626948297e-5,"z":6.122456827650416e-5,"y":-8.687124933904202e-6}},{"degrees_of_freedom":[816,817,818,819,820,821],"id":"n136","parent":"11","position":{"x":-2.0203050891044216,"z":17.979694910895578,"y":5},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-6.693817017117793e-5,"z":-8.570378154475807e-5,"y":-0.0008341964375065837},"angle":{"x":-0.000740505150096586,"z":0.00030594800149666245,"y":-8.672007135920513e-6}},{"degrees_of_freedom":[822,823,824,825,826,827],"id":"n137","parent":"11","position":{"x":-3.140184917367551e-16,"z":17.142857142857142,"y":5},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-6.207420832454443e-5,"z":-6.880253173203351e-5,"y":-0.0007276880370968836},"angle":{"x":-3.983165309907922e-5,"z":5.951035176388344e-5,"y":-1.0212203704245156e-5}},{"degrees_of_freedom":[828,829,830,831,832,833],"id":"n138","parent":"11","position":{"x":2.020305089104421,"z":17.979694910895578,"y":5},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-7.25564682696686e-5,"z":-4.93287587933547e-5,"y":-0.000554514378830259},"angle":{"x":0.0006024994757717295,"z":0.00028532085439959457,"y":-1.2550097519758257e-5}},{"degrees_of_freedom":[834,835,836,837,838,839],"id":"n139","parent":"11","position":{"x":-5,"z":25,"y":0},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-1.7412771179243913e-5,"z":-1.851785462130575e-5,"y":-0.0002744420101777485},"angle":{"x":-5.349477605607318e-5,"z":1.4853293178416738e-5,"y":4.0755009825079754e-5}},{"degrees_of_freedom":[840,841,842,843,844,845],"id":"n140","parent":"11","position":{"x":-5,"z":17.142857142857142,"y":3.140184917367551e-16},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-6.805945307264385e-5,"z":-2.1733187978532612e-5,"y":-0.00019085927412253127},"angle":{"x":1.1613156283105792e-6,"z":2.8688392487159364e-5,"y":1.8485908693152337e-7}},{"degrees_of_freedom":[846,847,848,849,850,851],"id":"n141","parent":"11","position":{"x":-5,"z":17.979694910895578,"y":2.0203050891044216},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-0.0001358082387204182,"z":-1.184542066320469e-5,"y":-0.0002396019846073273},"angle":{"x":1.8507656588238085e-5,"z":0.00011119644701883568,"y":0.00023355310858547728}},{"degrees_of_freedom":[852,853,854,855,856,857],"id":"n142","parent":"11","position":{"x":-5,"z":20,"y":2.857142857142857},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-0.0002993679814851395,"z":1.6587721597196833e-6,"y":-0.0003568591519587512},"angle":{"x":8.170799403187616e-5,"z":2.481084502886061e-5,"y":-1.078228458339546e-5}},{"degrees_of_freedom":[858,859,860,861,862,863],"id":"n143","parent":"11","position":{"x":-5,"z":22.020305089104422,"y":2.020305089104421},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-0.00017937524985489847,"z":1.88645580602864e-6,"y":-0.0004481668631028835},"angle":{"x":-3.339627003270414e-5,"z":0.0001629600489563346,"y":-0.0004015272655009866}},{"degrees_of_freedom":[864,865,866,867,868,869],"id":"n144","parent":"11","position":{"x":-5,"z":22.857142857142858,"y":-3.140184917367551e-16},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-0.00012967242591756153,"z":1.8599360817564736e-5,"y":-0.0003985414955352509},"angle":{"x":2.258332768671354e-6,"z":2.8688445386414805e-5,"y":-2.1749424175957235e-5}},{"degrees_of_freedom":[870,871,872,873,874,875],"id":"n145","parent":"11","position":{"x":-5,"z":22.020305089104422,"y":-2.0203050891044216},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-4.356812330832083e-5,"z":1.9067797249673633e-6,"y":-0.00035474948793694943},"angle":{"x":2.1270245494183458e-5,"z":0.00016530757165860932,"y":0.0003646682124233164}},{"degrees_of_freedom":[876,877,878,879,880,881],"id":"n146","parent":"11","position":{"x":-5,"z":20,"y":-2.857142857142857},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0.0001643054974651401,"z":-1.534343808460632e-5,"y":-0.00023975650858982232},"angle":{"x":8.47485376934861e-5,"z":3.2565786559516694e-5,"y":-1.0782232411192323e-5}},{"degrees_of_freedom":[882,883,884,885,886,887],"id":"n147","parent":"11","position":{"x":-5,"z":17.979694910895578,"y":-2.020305089104421},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-1.2684019863479737e-9,"z":-1.3548753799321883e-5,"y":-0.00014107771904232596},"angle":{"x":-2.116899185058951e-5,"z":0.0001203894047351326,"y":-0.00025918499352502227}},{"degrees_of_freedom":[888,889,890,891,892,893],"id":"n148","parent":"11","position":{"x":0,"z":25,"y":2.857142857142857},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":9.769130400182266e-6,"z":-0.00033081474267447744,"y":-0.00034199062175780136},"angle":{"x":-0.00019849179519789982,"z":-3.828943667955017e-5,"y":-4.124185774349923e-5}},{"degrees_of_freedom":[894,895,896,897,898,899],"id":"n149","parent":"11","position":{"x":-2.020305089104421,"z":25,"y":2.020305089104421},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-8.331496407103486e-6,"z":-0.00024803038714615416,"y":-0.00026120365327808386},"angle":{"x":-0.00013664767351875628,"z":-2.4822989566453283e-5,"y":-1.5625105185983838e-5}},{"degrees_of_freedom":[900,901,902,903,904,905],"id":"n150","parent":"11","position":{"x":-2.857142857142857,"z":25,"y":0},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-2.7097751237033672e-5,"z":1.4963892144623224e-5,"y":-0.00020227050070104662},"angle":{"x":-6.138439890418953e-5,"z":-4.940496603819336e-6,"y":0.00016607644361758944}},{"degrees_of_freedom":[906,907,908,909,910,911],"id":"n151","parent":"11","position":{"x":-2.020305089104421,"z":25,"y":-2.020305089104421},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-2.9418080978986133e-5,"z":5.483808413692563e-11,"y":-0.00015294381953089335},"angle":{"x":1.903610766729913e-5,"z":1.2815131302891494e-5,"y":-2.8075818009529397e-5}},{"degrees_of_freedom":[912,913,914,915,916,917],"id":"n152","parent":"11","position":{"x":0,"z":25,"y":-2.857142857142857},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-3.5284310133656416e-5,"z":4.079165195898707e-5,"y":-0.00019445478840386692},"angle":{"x":2.0414549627403338e-5,"z":-3.885489088029257e-5,"y":-2.8646800028873644e-5}},{"degrees_of_freedom":[918,919,920,921,922,923],"id":"n153","parent":"11","position":{"x":2.020305089104421,"z":25,"y":-2.020305089104421},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-1.6927704873382765e-5,"z":0.00011575060235409001,"y":-0.00027565341062996785},"angle":{"x":-0.0001985276465202076,"z":-2.564231435850031e-5,"y":-0.00011933563515677454}},{"degrees_of_freedom":[924,925,926,927,928,929],"id":"n154","parent":"11","position":{"x":2.857142857142857,"z":25,"y":0},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":7.517183795222779e-6,"z":-0.00018547126607957055,"y":-0.0003311685870710055},"angle":{"x":-4.8789378475176035e-5,"z":-6.901870221399048e-6,"y":0.0002421645365335272}},{"degrees_of_freedom":[930,931,932,933,934,935],"id":"n155","parent":"11","position":{"x":2.020305089104421,"z":25,"y":2.020305089104421},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":7.683149523864789e-6,"z":-8.138819987256955e-5,"y":-0.00037903228306576154},"angle":{"x":0.00012391827881636338,"z":1.8039442314410363e-5,"y":-0.0001747884406683208}},{"degrees_of_freedom":[936,937,938,939,940,941],"id":"n156","parent":"11","position":{"x":2.857142857142857,"z":3.140184917367551e-16,"y":5},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":5.112252222432892e-5,"z":-7.89000425704131e-5,"y":-0.000946029313928357},"angle":{"x":4.055853782749088e-5,"z":-5.195654055402972e-5,"y":-1.4339251738108221e-5}},{"degrees_of_freedom":[942,943,944,945,946,947],"id":"n157","parent":"11","position":{"x":2.0203050891044216,"z":-2.020305089104421,"y":5},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":6.487634472615713e-5,"z":-8.383731232190294e-5,"y":-0.0005624462655071188},"angle":{"x":-0.000559048067839849,"z":-0.00026644213073342954,"y":-3.7724917201373154e-6}},{"degrees_of_freedom":[948,949,950,951,952,953],"id":"n158","parent":"11","position":{"x":3.140184917367551e-16,"z":-2.857142857142857,"y":5},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":6.774186218676462e-5,"z":-9.27862314334502e-5,"y":-0.0003956940431089047},"angle":{"x":6.146733242149368e-5,"z":-4.9549669868855836e-5,"y":-6.151704841359222e-6}},{"degrees_of_freedom":[954,955,956,957,958,959],"id":"n159","parent":"11","position":{"x":-2.020305089104421,"z":-2.0203050891044216,"y":5},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":6.178466187202289e-5,"z":-0.00010538065255602375,"y":-0.0003318182807064465},"angle":{"x":-0.00010917197921010306,"z":1.3273370655286011e-5,"y":-8.242843881293273e-6}},{"degrees_of_freedom":[960,961,962,963,964,965],"id":"n160","parent":"11","position":{"x":-2.857142857142857,"z":-3.140184917367551e-16,"y":5},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":4.735885163520366e-5,"z":-0.00010920870831775428,"y":-0.00019660235869869554},"angle":{"x":5.076594512535631e-5,"z":-4.078027424268152e-5,"y":-1.1923791064306162e-5}},{"degrees_of_freedom":[966,967,968,969,970,971],"id":"n161","parent":"11","position":{"x":-2.0203050891044216,"z":2.020305089104421,"y":5},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":3.42739956175849e-5,"z":-0.00010528589388752607,"y":-0.0005274466998803133},"angle":{"x":-0.0008037967140195117,"z":-0.00034042083625033213,"y":-6.717001677748007e-6}},{"degrees_of_freedom":[972,973,974,975,976,977],"id":"n162","parent":"11","position":{"x":-3.140184917367551e-16,"z":2.857142857142857,"y":5},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":2.722908969114742e-5,"z":-9.434690613899982e-5,"y":-0.0006566197604585649},"angle":{"x":2.985607522453362e-5,"z":-4.318736810307285e-5,"y":-6.572608723954986e-6}},{"degrees_of_freedom":[978,979,980,981,982,983],"id":"n163","parent":"11","position":{"x":2.020305089104421,"z":2.0203050891044216,"y":5},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":3.077127704999654e-5,"z":-8.125408864169524e-5,"y":-0.0007358233547591059},"angle":{"x":6.780429951745437e-5,"z":-5.909671112664995e-5,"y":-8.236197553518151e-6}},{"degrees_of_freedom":[984,985,986,987,988,989],"id":"n164","parent":"11","position":{"x":5,"z":0,"y":15},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":-800},"displacement":{"x":0.00015276933714067277,"z":-0.0001232037194604103,"y":-0.000983321717393707},"angle":{"x":-1.0662145743255514e-6,"z":7.881902873642579e-7,"y":-2.2023062115451348e-5}},{"degrees_of_freedom":[990,991,992,993,994,995],"id":"n165","parent":"11","position":{"x":5,"z":-5,"y":10},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0.00018508580256931302,"z":-0.0001469078783439381,"y":-0.0008119719761146342},"angle":{"x":-1.2917559912232195e-5,"z":-3.5037117506837712e-6,"y":-1.6771514912856384e-5}},{"degrees_of_freedom":[996,997,998,999,1000,1001],"id":"n166","parent":"11","position":{"x":5,"z":5,"y":10},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":4.218190100587636e-5,"z":-8.945061216386754e-5,"y":-0.0007793331867769827},"angle":{"x":-6.1830675556007415e-6,"z":1.2022301629120483e-6,"y":-1.068859707652979e-5}},{"degrees_of_freedom":[1002,1003,1004,1005,1006,1007],"id":"n167","parent":"11","position":{"x":5,"z":2.857142857142857,"y":10},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":6.538695326656422e-5,"z":-8.17550174381009e-5,"y":-0.0007751079343898347},"angle":{"x":-6.525794416109388e-6,"z":-1.1592531842355861e-5,"y":-1.3293725082329037e-5}},{"degrees_of_freedom":[1008,1009,1010,1011,1012,1013],"id":"n168","parent":"11","position":{"x":5,"z":2.0203050891044216,"y":12.020305089104422},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0.00010522580188848107,"z":-0.00010886903235081214,"y":-0.0008414118516957436},"angle":{"x":-3.559567806827268e-5,"z":-3.5887597121067067e-5,"y":5.085091686488974e-5}},{"degrees_of_freedom":[1014,1015,1016,1017,1018,1019],"id":"n169","parent":"11","position":{"x":5,"z":3.140184917367551e-16,"y":12.857142857142858},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0.0002137216865785941,"z":-0.0001241208360955079,"y":-0.0008568956725203685},"angle":{"x":-4.483474428383888e-6,"z":-1.3136295747255195e-5,"y":-1.8071763562769873e-5}},{"degrees_of_freedom":[1020,1021,1022,1023,1024,1025],"id":"n170","parent":"11","position":{"x":5,"z":-2.020305089104421,"y":12.020305089104422},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0.00017208849762876354,"z":-0.0001362974166632588,"y":-0.0008516752317590914},"angle":{"x":2.9496688213885976e-5,"z":-3.828374721133093e-5,"y":-8.462722737119232e-5}},{"degrees_of_freedom":[1026,1027,1028,1029,1030,1031],"id":"n171","parent":"11","position":{"x":5,"z":-2.857142857142857,"y":10},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0.00014974175076502396,"z":-0.00014695005501475403,"y":-0.0007951531352585427},"angle":{"x":-6.685842036584469e-6,"z":-1.5718406955653727e-5,"y":-1.623045189045511e-5}},{"degrees_of_freedom":[1032,1033,1034,1035,1036,1037],"id":"n172","parent":"11","position":{"x":5,"z":-2.0203050891044216,"y":7.979694910895579},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0.00010023049584427828,"z":-0.00011210712647606098,"y":-0.0007281539301568929},"angle":{"x":-4.4174550366641246e-5,"z":-3.9805067799921286e-5,"y":5.646927446766235e-5}},{"degrees_of_freedom":[1038,1039,1040,1041,1042,1043],"id":"n173","parent":"11","position":{"x":5,"z":-3.140184917367551e-16,"y":7.142857142857142},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-6.983628926993042e-6,"z":-9.522089463083881e-5,"y":-0.0007103173427721595},"angle":{"x":-5.552992011939821e-6,"z":-1.4174585687504897e-5,"y":-1.1452418642799704e-5}},{"degrees_of_freedom":[1044,1045,1046,1047,1048,1049],"id":"n174","parent":"11","position":{"x":5,"z":2.020305089104421,"y":7.979694910895578},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":4.779748722501637e-5,"z":-8.648444734373472e-5,"y":-0.0007176268347694687},"angle":{"x":2.3827463557442304e-5,"z":-3.464611170956623e-5,"y":-7.392690258239837e-5}},{"degrees_of_freedom":[1050,1051,1052,1053,1054,1055],"id":"n175","parent":"11","position":{"x":-5,"z":0,"y":15},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":-400},"displacement":{"x":0.00014194116105443715,"z":-0.00034452724807620434,"y":-0.0011467205167408807},"angle":{"x":-6.810348621230892e-5,"z":-7.595146798308785e-7,"y":-3.292774929717192e-5}},{"degrees_of_freedom":[1056,1057,1058,1059,1060,1061],"id":"n176","parent":"11","position":{"x":0,"z":-5,"y":15},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":-400},"displacement":{"x":0.00024032160749114768,"z":-0.00022095299851048763,"y":-0.001075875396788877},"angle":{"x":1.4012395816436113e-5,"z":-4.557073960531732e-5,"y":-4.1293649377765915e-5}},{"degrees_of_freedom":[1062,1063,1064,1065,1066,1067],"id":"n177","parent":"11","position":{"x":0,"z":5,"y":15},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":-800},"displacement":{"x":4.591448039733618e-5,"z":-0.0002120174089623023,"y":-0.001004178177002563},"angle":{"x":-5.022416795607944e-6,"z":-6.121214766062134e-6,"y":-3.095140748332994e-5}},{"degrees_of_freedom":[1068,1069,1070,1071,1072,1073],"id":"n178","parent":"11","position":{"x":2.857142857142857,"z":-3.140184917367551e-16,"y":15},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0.00014660230956160111,"z":-0.00016085924590811252,"y":-0.0012482186183900186},"angle":{"x":-9.346251539617885e-5,"z":-1.0625571187891836e-5,"y":-2.95759447432175e-5}},{"degrees_of_freedom":[1074,1075,1076,1077,1078,1079],"id":"n179","parent":"11","position":{"x":2.0203050891044216,"z":2.020305089104421,"y":15},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0.00011499723222744737,"z":-0.00017178724477203208,"y":-0.001001233167419031},"angle":{"x":0.0004359118431781485,"z":-0.00019644632754841216,"y":-2.2836970040969716e-5}},{"degrees_of_freedom":[1080,1081,1082,1083,1084,1085],"id":"n180","parent":"11","position":{"x":3.140184917367551e-16,"z":2.857142857142857,"y":15},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":9.44702527762963e-5,"z":-0.00021180596596887568,"y":-0.0009031613064160648},"angle":{"x":-8.281012390959442e-5,"z":-1.1709261098256767e-5,"y":-2.466602064093499e-5}},{"degrees_of_freedom":[1086,1087,1088,1089,1090,1091],"id":"n181","parent":"11","position":{"x":-2.020305089104421,"z":2.0203050891044216,"y":15},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0.00011355042475827854,"z":-0.0002618661007446876,"y":-0.0009436868095719965},"angle":{"x":0.00025670235228424776,"z":0.0001069854422989585,"y":-3.3052978687254524e-5}},{"degrees_of_freedom":[1092,1093,1094,1095,1096,1097],"id":"n182","parent":"11","position":{"x":-2.857142857142857,"z":3.140184917367551e-16,"y":15},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0.00014715160628176184,"z":-0.00027928811045496656,"y":-0.001031306484949105},"angle":{"x":-8.797082507387752e-5,"z":-1.621594217217315e-5,"y":-3.2371743920293706e-5}},{"degrees_of_freedom":[1098,1099,1100,1101,1102,1103],"id":"n183","parent":"11","position":{"x":-2.0203050891044216,"z":-2.020305089104421,"y":15},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0.000184716728636461,"z":-0.0002686687323864672,"y":-0.0013042512294978075},"angle":{"x":9.490709708136926e-5,"z":-8.221406731173967e-5,"y":-2.8186890820201683e-5}},{"degrees_of_freedom":[1104,1105,1106,1107,1108,1109],"id":"n184","parent":"11","position":{"x":-3.140184917367551e-16,"z":-2.857142857142857,"y":15},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0.00020321126939396584,"z":-0.00022170676404264917,"y":-0.0014215408234053096},"angle":{"x":-9.862208664372536e-5,"z":-1.5132212554095029e-5,"y":-2.5995975548731858e-5}},{"degrees_of_freedom":[1110,1111,1112,1113,1114,1115],"id":"n185","parent":"11","position":{"x":2.020305089104421,"z":-2.0203050891044216,"y":15},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0.00018063607067041914,"z":-0.0001743211274492033,"y":-0.001373768963520825},"angle":{"x":0.000583151878105399,"z":0.00022725241685769994,"y":-2.9489865816114494e-5}},{"degrees_of_freedom":[1116,1117,1118,1119,1120,1121],"id":"n186","parent":"11","position":{"x":-5,"z":-5,"y":10},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0.00015301199684378505,"z":-0.00026092832934897545,"y":-0.000901896490709667},"angle":{"x":-1.914188702243404e-5,"z":8.04755177395698e-6,"y":2.109774476314038e-5}},{"degrees_of_freedom":[1122,1123,1124,1125,1126,1127],"id":"n187","parent":"11","position":{"x":-5,"z":5,"y":10},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-3.546087018772154e-5,"z":-0.00024452507831489254,"y":-0.0008355109946747623},"angle":{"x":-2.3797153191390548e-5,"z":8.402809762972457e-6,"y":-1.6916322025593734e-5}},{"degrees_of_freedom":[1128,1129,1130,1131,1132,1133],"id":"n188","parent":"11","position":{"x":-5,"z":-2.857142857142857,"y":10},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0.00017928730546246978,"z":-0.00027281732121443213,"y":-0.0008518527017190977},"angle":{"x":-2.8111279042735396e-6,"z":-6.897614974036689e-7,"y":-1.9917165105643305e-5}},{"degrees_of_freedom":[1134,1135,1136,1137,1138,1139],"id":"n189","parent":"11","position":{"x":-5,"z":-2.020305089104421,"y":12.020305089104422},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0.00016425252947384678,"z":-0.00026479774409375194,"y":-0.0008742848233057634},"angle":{"x":1.3493154868111224e-5,"z":3.2179992587577043e-5,"y":7.305265114867338e-5}},{"degrees_of_freedom":[1140,1141,1142,1143,1144,1145],"id":"n190","parent":"11","position":{"x":-5,"z":3.140184917367551e-16,"y":12.857142857142858},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0.00012795556581826108,"z":-0.00025553014685708266,"y":-0.0009395377572665159},"angle":{"x":4.345741433648652e-5,"z":-1.7101920963731581e-6,"y":-2.2803217882147544e-5}},{"degrees_of_freedom":[1146,1147,1148,1149,1150,1151],"id":"n191","parent":"11","position":{"x":-5,"z":2.0203050891044216,"y":12.020305089104422},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":7.211356255958705e-5,"z":-0.0002505788278431151,"y":-0.0009865940610006229},"angle":{"x":-2.9501577252739496e-5,"z":1.0247462090372302e-5,"y":-5.6624628969886785e-5}},{"degrees_of_freedom":[1152,1153,1154,1155,1156,1157],"id":"n192","parent":"11","position":{"x":-5,"z":2.857142857142857,"y":10},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":4.89830136602412e-5,"z":-0.00023188003105614117,"y":-0.0009429219445401058},"angle":{"x":-2.4907036630112884e-6,"z":-6.897940144925531e-7,"y":-2.5689393874651367e-5}},{"degrees_of_freedom":[1158,1159,1160,1161,1162,1163],"id":"n193","parent":"11","position":{"x":-5,"z":2.020305089104421,"y":7.979694910895578},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":6.884816666964323e-5,"z":-0.00023375293353076107,"y":-0.0009120937464223441},"angle":{"x":7.736156442449945e-6,"z":-1.6680536079000174e-5,"y":-7.091803216452559e-5}},{"degrees_of_freedom":[1164,1165,1166,1167,1168,1169],"id":"n194","parent":"11","position":{"x":-5,"z":-3.140184917367551e-16,"y":7.142857142857142},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0.0001168068272421503,"z":-0.00024114532578041657,"y":-0.0008579119797939292},"angle":{"x":3.556073227284831e-5,"z":3.3059702936250573e-7,"y":-2.2803238094543476e-5}},{"degrees_of_freedom":[1170,1171,1172,1173,1174,1175],"id":"n195","parent":"11","position":{"x":-5,"z":-2.0203050891044216,"y":7.979694910895579},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0.00016098722079652174,"z":-0.00024876011317382664,"y":-0.0008183029457606448},"angle":{"x":-3.190006820927911e-5,"z":5.2337159556438724e-5,"y":-0.00016990005799589133}},{"degrees_of_freedom":[1176,1177,1178,1179,1180,1181],"id":"n196","parent":"11","position":{"x":0,"z":-5,"y":7.142857142857142},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0.00020496677950684652,"z":-0.00034107081842660834,"y":-0.0007999100339035508},"angle":{"x":0.0002724834304782922,"z":2.814472021488338e-5,"y":-8.517230436378938e-5}},{"degrees_of_freedom":[1182,1183,1184,1185,1186,1187],"id":"n197","parent":"11","position":{"x":2.020305089104421,"z":-5,"y":7.979694910895579},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0.00020422115270634698,"z":5.9027666800415836e-5,"y":-0.0007739506144154469},"angle":{"x":-0.00011484326986185568,"z":-1.3160814745602654e-5,"y":-0.00024560828710211923}},{"degrees_of_freedom":[1188,1189,1190,1191,1192,1193],"id":"n198","parent":"11","position":{"x":2.857142857142857,"z":-5,"y":10},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0.0002006505111786773,"z":3.254346877417718e-5,"y":-0.0007999343296708863},"angle":{"x":-6.979317355142242e-5,"z":9.492089714148418e-6,"y":-0.0001368476472627709}},{"degrees_of_freedom":[1194,1195,1196,1197,1198,1199],"id":"n199","parent":"11","position":{"x":2.020305089104421,"z":-5,"y":12.020305089104422},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0.0001697153903282804,"z":-0.00022297930240715687,"y":-0.000837224948341501},"angle":{"x":-0.00016116516456864168,"z":2.4863326926355432e-5,"y":8.374390709641598e-5}},{"degrees_of_freedom":[1200,1201,1202,1203,1204,1205],"id":"n200","parent":"11","position":{"x":0,"z":-5,"y":12.857142857142858},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0.00015169000156469586,"z":-0.00018866017777239395,"y":-0.000902909242950561},"angle":{"x":0.0001145920195209166,"z":2.9426113356781263e-5,"y":-3.0478477589751555e-5}},{"degrees_of_freedom":[1206,1207,1208,1209,1210,1211],"id":"n201","parent":"11","position":{"x":-2.020305089104421,"z":-5,"y":12.020305089104422},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0.00015456397560586937,"z":-0.00034613095341072336,"y":-0.0009323034948182498},"angle":{"x":-1.5070165360312804e-5,"z":-1.1087158773664683e-5,"y":-8.418633303239623e-5}},{"degrees_of_freedom":[1212,1213,1214,1215,1216,1217],"id":"n202","parent":"11","position":{"x":-2.857142857142857,"z":-5,"y":10},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0.00015817872236998452,"z":-0.0003861348692747118,"y":-0.0009045181112269041},"angle":{"x":-1.5099358415947965e-5,"z":8.118554366655397e-6,"y":-8.425670713113154e-5}},{"degrees_of_freedom":[1218,1219,1220,1221,1222,1223],"id":"n203","parent":"11","position":{"x":-2.020305089104421,"z":-5,"y":7.979694910895579},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0.00018633341816071605,"z":-0.00028512038174876724,"y":-0.0008643760751676853},"angle":{"x":-7.420189479435397e-5,"z":2.536674887229738e-5,"y":5.842952408185726e-5}},{"degrees_of_freedom":[1224,1225,1226,1227,1228,1229],"id":"n204","parent":"11","position":{"x":0,"z":5,"y":12.857142857142858},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":1.4806673298499896e-5,"z":-0.00018645343032989102,"y":-0.0008880589788723858},"angle":{"x":-1.7919274214876646e-6,"z":3.334730943361751e-6,"y":-2.0416110619267878e-5}},{"degrees_of_freedom":[1230,1231,1232,1233,1234,1235],"id":"n205","parent":"11","position":{"x":-2.020305089104421,"z":5,"y":12.020305089104422},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-5.482660731339697e-6,"z":-0.00022519434777994318,"y":-0.0008674359706985952},"angle":{"x":-2.2913988627205443e-5,"z":-2.778993752627063e-5,"y":-2.767087167901397e-5}},{"degrees_of_freedom":[1236,1237,1238,1239,1240,1241],"id":"n206","parent":"11","position":{"x":-2.857142857142857,"z":5,"y":10},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-2.3876773884203065e-5,"z":-0.00020002878565745664,"y":-0.0008055193692377521},"angle":{"x":-1.8487007138088664e-5,"z":-9.18864827393536e-7,"y":-1.334746225888944e-5}},{"degrees_of_freedom":[1242,1243,1244,1245,1246,1247],"id":"n207","parent":"11","position":{"x":-2.020305089104421,"z":5,"y":7.979694910895579},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-6.6743163714123085e-6,"z":-0.0001525239043575514,"y":-0.0007421401448268638},"angle":{"x":-1.4763627530326565e-5,"z":3.072289550042345e-5,"y":-1.8700760658299742e-5}},{"degrees_of_freedom":[1248,1249,1250,1251,1252,1253],"id":"n208","parent":"11","position":{"x":0,"z":5,"y":7.142857142857142},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":1.4502410537290706e-5,"z":-0.0001027069378523804,"y":-0.0007109130017650241},"angle":{"x":-2.6384131726458338e-5,"z":2.1871512000251065e-6,"y":-1.365051733485282e-5}},{"degrees_of_freedom":[1254,1255,1256,1257,1258,1259],"id":"n209","parent":"11","position":{"x":2.020305089104421,"z":5,"y":7.979694910895579},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":3.1175985086915176e-5,"z":-9.704844984848978e-5,"y":-0.0007325947646708459},"angle":{"x":-9.758653068828627e-6,"z":-2.5008937540883038e-5,"y":-7.000888814731749e-6}},{"degrees_of_freedom":[1260,1261,1262,1263,1264,1265],"id":"n210","parent":"11","position":{"x":2.857142857142857,"z":5,"y":10},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":4.725206144145731e-5,"z":-0.00011125763661421918,"y":-0.0007953117393795384},"angle":{"x":-1.188367523690926e-5,"z":-1.7463852215408208e-6,"y":-1.1499592807718556e-5}},{"degrees_of_freedom":[1266,1267,1268,1269,1270,1271],"id":"n211","parent":"11","position":{"x":2.020305089104421,"z":5,"y":12.020305089104422},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":3.563181206316596e-5,"z":-0.00014471341058038234,"y":-0.0008582009721928227},"angle":{"x":-9.946852075330418e-6,"z":2.6437322025186513e-5,"y":-1.554394431031583e-5}},{"degrees_of_freedom":[1272,1273,1274,1275,1276,1277],"id":"n212","parent":"11","position":{"x":2.0203050891044216,"z":7.979694910895579,"y":5},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-4.530544710035419e-6,"z":-6.374392683907558e-5,"y":-0.0006025518611297352},"angle":{"x":-6.598782981684057e-5,"z":-2.2269180122861813e-5,"y":-8.275757022331722e-6}},{"degrees_of_freedom":[1278,1279,1280,1281,1282,1283],"id":"n213","parent":"11","position":{"x":3.140184917367551e-16,"z":7.142857142857142,"y":5},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-1.2588126982191632e-6,"z":-8.07904104878548e-5,"y":-0.000604016010107558},"angle":{"x":1.272868640401199e-6,"z":8.473845552321803e-7,"y":-9.817275792612497e-6}},{"degrees_of_freedom":[1284,1285,1286,1287,1288,1289],"id":"n214","parent":"11","position":{"x":-2.020305089104421,"z":7.979694910895578,"y":5},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-1.1010703486839865e-5,"z":-9.720101197232852e-5,"y":-0.0006076105309688069},"angle":{"x":6.792177885986033e-5,"z":-2.2052882252035556e-5,"y":-8.973778508005337e-6}},{"degrees_of_freedom":[1290,1291,1292,1293,1294,1295],"id":"n215","parent":"11","position":{"x":-2.0203050891044216,"z":12.020305089104422,"y":5},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-4.1134066261804227e-5,"z":-9.638724758483144e-5,"y":-0.0005057768113957197},"angle":{"x":-5.0314401271757914e-5,"z":1.4790687787949226e-7,"y":-8.798492134099617e-6}},{"degrees_of_freedom":[1296,1297,1298,1299,1300,1301],"id":"n216","parent":"11","position":{"x":-3.140184917367551e-16,"z":12.857142857142858,"y":5},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-4.753449899272887e-5,"z":-8.026154437435586e-5,"y":-0.00046740612978817366},"angle":{"x":-4.80101206902277e-5,"z":-1.6258190014373237e-6,"y":-9.456857580976754e-6}},{"degrees_of_freedom":[1302,1303,1304,1305,1306,1307],"id":"n217","parent":"11","position":{"x":2.020305089104421,"z":12.020305089104422,"y":5},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-4.0092736259516775e-5,"z":-6.302515633584474e-5,"y":-0.0005093888486768867},"angle":{"x":0.00028371030517928804,"z":-0.00011631831873928238,"y":-1.0181408169794204e-5}},{"degrees_of_freedom":[1308,1309,1310,1311,1312,1313],"id":"n218","parent":"11","position":{"x":5,"z":10,"y":15},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":-800},"displacement":{"x":-4.991945838148253e-6,"z":-0.00010144656314157714,"y":-0.0009670986579230158},"angle":{"x":-7.138782128984478e-6,"z":6.836028733056288e-7,"y":-2.2522302470793694e-5}},{"degrees_of_freedom":[1314,1315,1316,1317,1318,1319],"id":"n219","parent":"11","position":{"x":5,"z":15,"y":10},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-6.527446541184804e-5,"z":-5.327607498047675e-5,"y":-0.0007743087104806785},"angle":{"x":-6.1976432069711e-6,"z":3.967866183981887e-6,"y":-1.0142984112858282e-5}},{"degrees_of_freedom":[1320,1321,1322,1323,1324,1325],"id":"n220","parent":"11","position":{"x":5,"z":12.857142857142858,"y":10},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-4.5377553206726735e-5,"z":-4.4474380875990626e-5,"y":-0.0007646717826549896},"angle":{"x":-5.993943202880596e-6,"z":2.4071015166891534e-6,"y":-1.4450160071060316e-5}},{"degrees_of_freedom":[1326,1327,1328,1329,1330,1331],"id":"n221","parent":"11","position":{"x":5,"z":12.020305089104422,"y":12.020305089104422},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-3.791531319573797e-5,"z":-7.166728057966419e-5,"y":-0.0008282326228403464},"angle":{"x":-3.565068875673686e-5,"z":2.9279562723049517e-6,"y":-1.9749376555088543e-5}},{"degrees_of_freedom":[1332,1333,1334,1335,1336,1337],"id":"n222","parent":"11","position":{"x":5,"z":10,"y":12.857142857142858},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-9.593587887569224e-6,"z":-8.447194791673156e-5,"y":-0.000844119449665272},"angle":{"x":-3.928837428747248e-6,"z":-1.4508092574981161e-8,"y":-1.5252839885788957e-5}},{"degrees_of_freedom":[1338,1339,1340,1341,1342,1343],"id":"n223","parent":"11","position":{"x":5,"z":7.979694910895579,"y":12.020305089104422},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":1.8562328572549993e-5,"z":-9.234076517385445e-5,"y":-0.0008360985503688571},"angle":{"x":2.370162468971093e-5,"z":8.903093088064164e-6,"y":1.3795956631675267e-5}},{"degrees_of_freedom":[1344,1345,1346,1347,1348,1349],"id":"n224","parent":"11","position":{"x":5,"z":7.142857142857142,"y":10},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":2.5955908482187466e-5,"z":-9.858982439469486e-5,"y":-0.0007810328916194643},"angle":{"x":-5.746741048698937e-6,"z":-1.0453577600900835e-6,"y":-1.0516533000679305e-5}},{"degrees_of_freedom":[1350,1351,1352,1353,1354,1355],"id":"n225","parent":"11","position":{"x":5,"z":7.979694910895578,"y":7.979694910895579},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":1.5748222292056018e-5,"z":-7.16218545764127e-5,"y":-0.0007170459440875385},"angle":{"x":-3.61643496884707e-5,"z":2.079605302742922e-6,"y":-1.552928971265939e-5}},{"degrees_of_freedom":[1356,1357,1358,1359,1360,1361],"id":"n226","parent":"11","position":{"x":5,"z":10,"y":7.142857142857142},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":1.410878618786075e-6,"z":-5.901315219128639e-5,"y":-0.0007004074569420229},"angle":{"x":-3.874221832202925e-6,"z":1.3762392068148196e-6,"y":-9.713887652630923e-6}},{"degrees_of_freedom":[1362,1363,1364,1365,1366,1367],"id":"n227","parent":"11","position":{"x":5,"z":12.020305089104422,"y":7.979694910895578},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-2.8654911335490803e-5,"z":-5.111201245393576e-5,"y":-0.0007092090076190601},"angle":{"x":2.4851961455102402e-5,"z":1.096795015655709e-5,"y":1.3589587268073203e-5}},{"degrees_of_freedom":[1368,1369,1370,1371,1372,1373],"id":"n228","parent":"11","position":{"x":-5,"z":10,"y":15},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":-400},"displacement":{"x":-2.3717769271968124e-5,"z":-0.0003241917917796429,"y":-0.0011005269593739584},"angle":{"x":-5.228713023234536e-5,"z":1.903386972445698e-5,"y":-3.182730018588057e-5}},{"degrees_of_freedom":[1374,1375,1376,1377,1378,1379],"id":"n229","parent":"11","position":{"x":0,"z":15,"y":15},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":-800},"displacement":{"x":-0.00010148091786179426,"z":-0.00019495610616562255,"y":-0.0010021447469722323},"angle":{"x":-1.3919930931378277e-6,"z":4.9396038835486325e-6,"y":-2.949866996798636e-5}},{"degrees_of_freedom":[1380,1381,1382,1383,1384,1385],"id":"n230","parent":"11","position":{"x":2.857142857142857,"z":10,"y":15},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-1.751644083999643e-5,"z":-0.0001479807274365582,"y":-0.0009692857662660855},"angle":{"x":-1.7203535196803573e-5,"z":2.2357486304136117e-6,"y":-2.8080050284496092e-5}},{"degrees_of_freedom":[1386,1387,1388,1389,1390,1391],"id":"n231","parent":"11","position":{"x":2.0203050891044216,"z":12.020305089104422,"y":15},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-4.580927216535214e-5,"z":-0.00015794125287374667,"y":-0.000956331625558979},"angle":{"x":-1.1236569776883703e-5,"z":2.8222338672555185e-6,"y":-2.4113588029766082e-5}},{"degrees_of_freedom":[1392,1393,1394,1395,1396,1397],"id":"n232","parent":"11","position":{"x":3.140184917367551e-16,"z":12.857142857142858,"y":15},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-6.539266460184678e-5,"z":-0.00019825885418804735,"y":-0.0009546393895429103},"angle":{"x":-1.8568464279821984e-5,"z":6.067770726356623e-6,"y":-2.365374859963727e-5}},{"degrees_of_freedom":[1398,1399,1400,1401,1402,1403],"id":"n233","parent":"11","position":{"x":-2.020305089104421,"z":12.020305089104422,"y":15},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-4.641644930067487e-5,"z":-0.0002448284281660097,"y":-0.0009840247610948842},"angle":{"x":0.00017135342493162289,"z":7.256199710017602e-5,"y":-3.05360844132991e-5}},{"degrees_of_freedom":[1404,1405,1406,1407,1408,1409],"id":"n234","parent":"11","position":{"x":-2.857142857142857,"z":10,"y":15},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-2.1445433249916346e-5,"z":-0.0002624428022871091,"y":-0.001058744275361857},"angle":{"x":-2.004784999398549e-5,"z":8.834178226057685e-6,"y":-2.905999456718444e-5}},{"degrees_of_freedom":[1410,1411,1412,1413,1414,1415],"id":"n235","parent":"11","position":{"x":-2.0203050891044216,"z":7.979694910895579,"y":15},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":1.3362656871432217e-5,"z":-0.0002531407979152501,"y":-0.0010731264798861217},"angle":{"x":0.00014219511706832928,"z":-5.397229070076849e-5,"y":-2.5461348544811515e-5}},{"degrees_of_freedom":[1416,1417,1418,1419,1420,1421],"id":"n236","parent":"11","position":{"x":-3.140184917367551e-16,"z":7.142857142857142,"y":15},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":2.9113339464647036e-5,"z":-0.00020971702975131485,"y":-0.001078884039136763},"angle":{"x":-2.6839580997124527e-5,"z":7.68984735515725e-6,"y":-2.4382027039677526e-5}},{"degrees_of_freedom":[1422,1423,1424,1425,1426,1427],"id":"n237","parent":"11","position":{"x":2.020305089104421,"z":7.979694910895578,"y":15},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":6.307758759905145e-6,"z":-0.00016461897837069344,"y":-0.0010397208055947912},"angle":{"x":0.0001955742165205993,"z":8.442569006653548e-5,"y":-2.8700777182068545e-5}},{"degrees_of_freedom":[1428,1429,1430,1431,1432,1433],"id":"n238","parent":"11","position":{"x":-5,"z":15,"y":10},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-0.0001447568454306696,"z":-0.00022505088543162645,"y":-0.000848661188788395},"angle":{"x":-2.085101203859593e-5,"z":1.2877664738298513e-5,"y":-2.1894141838154917e-5}},{"degrees_of_freedom":[1434,1435,1436,1437,1438,1439],"id":"n239","parent":"11","position":{"x":-5,"z":7.142857142857142,"y":10},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-0.00012568299397796093,"z":-0.00025471078532880183,"y":-0.0008062070691703497},"angle":{"x":-6.187616948253693e-6,"z":1.0576516322807763e-5,"y":3.927424990528015e-5}},{"degrees_of_freedom":[1440,1441,1442,1443,1444,1445],"id":"n240","parent":"11","position":{"x":-5,"z":7.979694910895579,"y":12.020305089104422},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-0.00011719059578555348,"z":-0.0002509922575803893,"y":-0.0008240142276198817},"angle":{"x":1.2828379607086553e-5,"z":-5.235271240882401e-5,"y":-0.0001363499236814304}},{"degrees_of_freedom":[1446,1447,1448,1449,1450,1451],"id":"n241","parent":"11","position":{"x":-5,"z":10,"y":12.857142857142858},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-9.03130798567088e-5,"z":-0.00024214196245286428,"y":-0.00090175507428994},"angle":{"x":5.246931984907852e-5,"z":4.184699667085215e-6,"y":2.5928696902515086e-5}},{"degrees_of_freedom":[1452,1453,1454,1455,1456,1457],"id":"n242","parent":"11","position":{"x":-5,"z":12.020305089104422,"y":12.020305089104422},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-1.561044702112509e-5,"z":-0.00023962201724627281,"y":-0.0009590502699654958},"angle":{"x":-2.8858765580181173e-5,"z":5.0262839892839557e-5,"y":-0.00010676665487092}},{"degrees_of_freedom":[1458,1459,1460,1461,1462,1463],"id":"n243","parent":"11","position":{"x":-5,"z":12.857142857142858,"y":10},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":1.2691746307763843e-5,"z":-0.00021617324572389537,"y":-0.0009206889738274716},"angle":{"x":-5.568356403281102e-6,"z":8.441036940504815e-6,"y":9.156669434514302e-6}},{"degrees_of_freedom":[1464,1465,1466,1467,1468,1469],"id":"n244","parent":"11","position":{"x":-5,"z":12.020305089104422,"y":7.979694910895578},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":2.566860108868154e-5,"z":-0.00021552170862749228,"y":-0.000895576832489326},"angle":{"x":8.38925245198165e-6,"z":-6.498515828882808e-5,"y":-0.00020089046138121794}},{"degrees_of_freedom":[1470,1471,1472,1473,1474,1475],"id":"n245","parent":"11","position":{"x":-5,"z":10,"y":7.142857142857142},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":6.337206355096147e-5,"z":-0.00022247868891695427,"y":-0.0008268209630555046},"angle":{"x":4.573738675924851e-5,"z":1.4832871183905771e-5,"y":2.250265181283172e-5}},{"degrees_of_freedom":[1476,1477,1478,1479,1480,1481],"id":"n246","parent":"11","position":{"x":-5,"z":7.979694910895578,"y":7.979694910895579},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-6.844300747873177e-5,"z":-0.00022666456278100242,"y":-0.0007764837822811357},"angle":{"x":-3.0458662967849034e-5,"z":6.75471316597285e-5,"y":-0.00012422944127348073}},{"degrees_of_freedom":[1482,1483,1484,1485,1486,1487],"id":"n247","parent":"11","position":{"x":0,"z":15,"y":12.857142857142858},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-0.00010768241750065687,"z":-0.0001604418807832743,"y":-0.0008880391799495858},"angle":{"x":-1.8692301366517062e-6,"z":6.906518135755457e-6,"y":-2.1107388031139555e-5}},{"degrees_of_freedom":[1488,1489,1490,1491,1492,1493],"id":"n248","parent":"11","position":{"x":-2.020305089104421,"z":15,"y":12.020305089104422},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-0.00012518858769036513,"z":-0.0002007067781670141,"y":-0.0008753560241765811},"angle":{"x":-3.113368717968871e-5,"z":-2.3429694509782812e-5,"y":-3.20200614285693e-5}},{"degrees_of_freedom":[1494,1495,1496,1497,1498,1499],"id":"n249","parent":"11","position":{"x":-2.857142857142857,"z":15,"y":10},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-0.00013334610697607707,"z":-0.00016222667525804624,"y":-0.0008179432589605704},"angle":{"x":-1.9606465554490275e-5,"z":4.477749500630595e-6,"y":6.827592799172547e-8}},{"degrees_of_freedom":[1500,1501,1502,1503,1504,1505],"id":"n250","parent":"11","position":{"x":-2.020305089104421,"z":15,"y":7.979694910895579},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-0.00010574479985961887,"z":-0.00012386084973136513,"y":-0.000751428366403649},"angle":{"x":-6.6388662910028866e-6,"z":3.494157791078376e-5,"y":-2.6979102052571973e-5}},{"degrees_of_freedom":[1506,1507,1508,1509,1510,1511],"id":"n251","parent":"11","position":{"x":0,"z":15,"y":7.142857142857142},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-8.125894495085004e-5,"z":-6.435177812862385e-5,"y":-0.0007113332161776433},"angle":{"x":-3.405767499796434e-5,"z":6.492194282103333e-6,"y":-1.5211574614184758e-5}},{"degrees_of_freedom":[1512,1513,1514,1515,1516,1517],"id":"n252","parent":"11","position":{"x":2.020305089104421,"z":15,"y":7.979694910895579},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-6.790654470751348e-5,"z":-6.184420972230736e-5,"y":-0.0007249710706542861},"angle":{"x":-1.2401322727470915e-6,"z":-2.1531671173364e-5,"y":-2.028382662532999e-6}},{"degrees_of_freedom":[1518,1519,1520,1521,1522,1523],"id":"n253","parent":"11","position":{"x":2.857142857142857,"z":15,"y":10},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-6.16005054774169e-5,"z":-6.374091194093171e-5,"y":-0.0007846421632078912},"angle":{"x":-1.3931800543470136e-5,"z":3.56436231545523e-6,"y":-3.071735438861017e-5}},{"degrees_of_freedom":[1524,1525,1526,1527,1528,1529],"id":"n254","parent":"11","position":{"x":2.020305089104421,"z":15,"y":12.020305089104422},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-8.308771269666133e-5,"z":-0.00011704850324454807,"y":-0.0008512059305324371},"angle":{"x":-2.0863849350089524e-5,"z":3.0134431533605887e-5,"y":-1.203049298555776e-5}},{"degrees_of_freedom":[1530,1531,1532,1533,1534,1535],"id":"n255","parent":"11","position":{"x":2.0203050891044216,"z":17.979694910895578,"y":5},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-5.946472339895411e-5,"z":-4.293923880952299e-5,"y":-0.0005173129525155278},"angle":{"x":0.000678676347122847,"z":0.0003003667020621723,"y":-1.2259408489829057e-5}},{"degrees_of_freedom":[1536,1537,1538,1539,1540,1541],"id":"n256","parent":"11","position":{"x":3.140184917367551e-16,"z":17.142857142857142,"y":5},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-5.528329934852938e-5,"z":-6.579849064038406e-5,"y":-0.0006556566510079514},"angle":{"x":-6.845650702458222e-6,"z":5.504320203301835e-5,"y":-1.2130536499726027e-5}},{"degrees_of_freedom":[1542,1543,1544,1545,1546,1547],"id":"n257","parent":"11","position":{"x":-2.020305089104421,"z":17.979694910895578,"y":5},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-6.754633284993169e-5,"z":-8.45875653964246e-5,"y":-0.0007825428908019106},"angle":{"x":-0.00013346244212478195,"z":0.00010276381889450146,"y":-9.696395450794056e-6}},{"degrees_of_freedom":[1548,1549,1550,1551,1552,1553],"id":"n258","parent":"11","position":{"x":-2.0203050891044216,"z":22.020305089104422,"y":5},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-8.763594802733324e-5,"z":-8.537807876964171e-5,"y":-0.000627357235188324},"angle":{"x":0.0007964388957218858,"z":0.0003692596973413045,"y":-9.55122143170541e-6}},{"degrees_of_freedom":[1554,1555,1556,1557,1558,1559],"id":"n259","parent":"11","position":{"x":-3.140184917367551e-16,"z":22.857142857142858,"y":5},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-9.353712823311248e-5,"z":-6.688819276196104e-5,"y":-0.00041851814848619436},"angle":{"x":-8.232210782547549e-5,"z":5.9404533605464755e-5,"y":-1.1031949116037569e-5}},{"degrees_of_freedom":[1560,1561,1562,1563,1564,1565],"id":"n260","parent":"11","position":{"x":2.020305089104421,"z":22.020305089104422,"y":5},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-8.342321937399871e-5,"z":-4.6575238977643034e-5,"y":-0.00034745966073319244},"angle":{"x":-2.77527861265435e-5,"z":3.927751000605505e-5,"y":-1.2348181270276839e-5}},{"degrees_of_freedom":[1566,1567,1568,1569,1570,1571],"id":"n261","parent":"11","position":{"x":5,"z":20,"y":15},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":-800},"displacement":{"x":-0.00015160717814133496,"z":-7.851320145895397e-5,"y":-0.0009602656275475087},"angle":{"x":-1.0943204039803035e-5,"z":-4.76046836300241e-6,"y":-2.2521133692893002e-5}},{"degrees_of_freedom":[1572,1573,1574,1575,1576,1577],"id":"n262","parent":"11","position":{"x":5,"z":25,"y":10},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-0.0001805832594812788,"z":2.0213648868335877e-6,"y":-0.0007705072401202711},"angle":{"x":-1.638721754414191e-6,"z":8.988943608741816e-6,"y":-1.62401121641264e-5}},{"degrees_of_freedom":[1578,1579,1580,1581,1582,1583],"id":"n263","parent":"11","position":{"x":5,"z":22.857142857142858,"y":10},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-0.00014829828089279041,"z":2.1061525616475817e-6,"y":-0.0007571785027475973},"angle":{"x":-5.859510208042581e-6,"z":2.0922926164048205e-5,"y":-1.7098498818563926e-5}},{"degrees_of_freedom":[1584,1585,1586,1587,1588,1589],"id":"n264","parent":"11","position":{"x":5,"z":22.020305089104422,"y":12.020305089104422},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-0.0001822448140161808,"z":-3.0299951436950942e-5,"y":-0.0008207028874603168},"angle":{"x":-4.16657934987062e-5,"z":6.0805278992012474e-5,"y":-0.00013444848966309478}},{"degrees_of_freedom":[1590,1591,1592,1593,1594,1595],"id":"n265","parent":"11","position":{"x":5,"z":20,"y":12.857142857142858},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-0.0002519543701269692,"z":-4.7394965141980496e-5,"y":-0.00083695127856322},"angle":{"x":-5.982072855511071e-6,"z":1.7272726827101797e-5,"y":-1.5865345769462922e-5}},{"degrees_of_freedom":[1596,1597,1598,1599,1600,1601],"id":"n266","parent":"11","position":{"x":5,"z":17.979694910895578,"y":12.020305089104422},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-0.00012426135237587454,"z":-5.633836174453643e-5,"y":-0.0008323594033060675},"angle":{"x":2.159696288237318e-5,"z":6.352799887828475e-5,"y":0.00011950984855428395}},{"degrees_of_freedom":[1602,1603,1604,1605,1606,1607],"id":"n267","parent":"11","position":{"x":5,"z":17.142857142857142,"y":10},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-7.644089165992602e-5,"z":-6.045341588236015e-5,"y":-0.0007777930898955956},"angle":{"x":-6.103963555659243e-6,"z":1.6821206614829138e-5,"y":-8.051570250055348e-6}},{"degrees_of_freedom":[1608,1609,1610,1611,1612,1613],"id":"n268","parent":"11","position":{"x":5,"z":17.979694910895578,"y":7.979694910895579},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-4.2096149597776236e-5,"z":-3.405701048922203e-5,"y":-0.0007134368151772568},"angle":{"x":-3.5406956936308466e-5,"z":5.747297757452217e-5,"y":-0.00011848680223344987}},{"degrees_of_freedom":[1614,1615,1616,1617,1618,1619],"id":"n269","parent":"11","position":{"x":5,"z":20,"y":7.142857142857142},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":5.306357140165271e-5,"z":-1.997618231788006e-5,"y":-0.0006966099541480779},"angle":{"x":-4.666799422137268e-6,"z":2.0471298989943143e-5,"y":-9.284755265505269e-6}},{"degrees_of_freedom":[1620,1621,1622,1623,1624,1625],"id":"n270","parent":"11","position":{"x":5,"z":22.020305089104422,"y":7.979694910895578},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-8.573440530582977e-5,"z":-9.14859170042116e-6,"y":-0.0007027800806760757},"angle":{"x":2.8904537152108058e-5,"z":6.870309744932836e-5,"y":0.0001225898982614833}},{"degrees_of_freedom":[1626,1627,1628,1629,1630,1631],"id":"n271","parent":"11","position":{"x":-5,"z":20,"y":15},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":-400},"displacement":{"x":-0.00016467386200149,"z":-0.000293220185670177,"y":-0.001113150869310457},"angle":{"x":-5.011980644318763e-5,"z":1.072626609133832e-5,"y":-2.3899993740759443e-5}},{"degrees_of_freedom":[1632,1633,1634,1635,1636,1637],"id":"n272","parent":"11","position":{"x":0,"z":25,"y":15},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":-400},"displacement":{"x":-0.0002462321285192256,"z":-0.00018955049345143827,"y":-0.0010102462539795746},"angle":{"x":2.3122792594937778e-5,"z":3.102492922280677e-5,"y":-3.731712666468301e-5}},{"degrees_of_freedom":[1638,1639,1640,1641,1642,1643],"id":"n273","parent":"11","position":{"x":2.857142857142857,"z":20,"y":15},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-0.00016119788089790702,"z":-0.0001315697916533882,"y":-0.0007332417560411539},"angle":{"x":-2.597562021352542e-5,"z":3.067103060150965e-5,"y":-2.6661781784340214e-5}},{"degrees_of_freedom":[1644,1645,1646,1647,1648,1649],"id":"n274","parent":"11","position":{"x":2.0203050891044216,"z":22.020305089104422,"y":15},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-0.0001911907954128763,"z":-0.00014139815285730818,"y":-0.0008904457405093428},"angle":{"x":-0.00044965906629786085,"z":0.0001897055699886108,"y":-2.6788612212846958e-5}},{"degrees_of_freedom":[1650,1651,1652,1653,1654,1655],"id":"n275","parent":"11","position":{"x":3.140184917367551e-16,"z":22.857142857142858,"y":15},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-0.00021058608523168403,"z":-0.0001867118490997322,"y":-0.0009638208917293169},"angle":{"x":-1.3342741818652823e-5,"z":3.5853944546539017e-5,"y":-2.548524614928012e-5}},{"degrees_of_freedom":[1656,1657,1658,1659,1660,1661],"id":"n276","parent":"11","position":{"x":-2.020305089104421,"z":22.020305089104422,"y":15},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-0.00019072447904771493,"z":-0.00023301295558119205,"y":-0.001059527457284846},"angle":{"x":0.0003495748385597204,"z":0.00016375518560500721,"y":-2.792131494405813e-5}},{"degrees_of_freedom":[1662,1663,1664,1665,1666,1667],"id":"n277","parent":"11","position":{"x":-2.857142857142857,"z":20,"y":15},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-0.0001640339746281162,"z":-0.0002465470251198863,"y":-0.0013042841641138384},"angle":{"x":-2.429950974539307e-5,"z":3.999183374044976e-5,"y":-2.6616289273687016e-5}},{"degrees_of_freedom":[1668,1669,1670,1671,1672,1673],"id":"n278","parent":"11","position":{"x":-2.0203050891044216,"z":17.979694910895578,"y":15},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-0.00013379439906065156,"z":-0.0002369040154036452,"y":-0.0011407495429362508},"angle":{"x":-0.00027839791122631494,"z":0.00012607226860096322,"y":-2.316713276535298e-5}},{"degrees_of_freedom":[1674,1675,1676,1677,1678,1679],"id":"n279","parent":"11","position":{"x":-3.140184917367551e-16,"z":17.142857142857142,"y":15},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-0.00011826619577351419,"z":-0.00019486234398202298,"y":-0.0010740048564866784},"angle":{"x":-2.1610161651301145e-5,"z":3.611665700063005e-5,"y":-2.4679548045451427e-5}},{"degrees_of_freedom":[1680,1681,1682,1683,1684,1685],"id":"n280","parent":"11","position":{"x":2.020305089104421,"z":17.979694910895578,"y":15},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-0.00014028784036485998,"z":-0.0001485928015682253,"y":-0.000971091761533604},"angle":{"x":0.0003466512123106765,"z":0.00016548415860911575,"y":-2.8963807320513914e-5}},{"degrees_of_freedom":[1686,1687,1688,1689,1690,1691],"id":"n281","parent":"11","position":{"x":-5,"z":25,"y":10},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-0.00019617133537354366,"z":-0.0002231670202801528,"y":-0.000844344178100866},"angle":{"x":-4.402637770351677e-5,"z":1.6399310740721325e-5,"y":-8.145288187301844e-5}},{"degrees_of_freedom":[1692,1693,1694,1695,1696,1697],"id":"n282","parent":"11","position":{"x":-5,"z":17.142857142857142,"y":10},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-0.0001619169853536015,"z":-0.00023634290905418765,"y":-0.0008159347700970659},"angle":{"x":-3.437941745279409e-6,"z":6.71845421175593e-5,"y":3.386830974194076e-5}},{"degrees_of_freedom":[1698,1699,1700,1701,1702,1703],"id":"n283","parent":"11","position":{"x":-5,"z":17.979694910895578,"y":12.020305089104422},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-0.00029259577659756613,"z":-0.0002282933335007321,"y":-0.0008367386585234821},"angle":{"x":1.5098724119096524e-5,"z":0.00015771774591779932,"y":0.00028993610030886334}},{"degrees_of_freedom":[1704,1705,1706,1707,1708,1709],"id":"n284","parent":"11","position":{"x":-5,"z":20,"y":12.857142857142858},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-0.0006080795508053082,"z":-0.0002181861761682888,"y":-0.000915778119778697},"angle":{"x":5.43345562758366e-5,"z":6.626011960735274e-5,"y":3.125569339496442e-5}},{"degrees_of_freedom":[1710,1711,1712,1713,1714,1715],"id":"n285","parent":"11","position":{"x":-5,"z":22.020305089104422,"y":12.020305089104422},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-0.00016630487806016604,"z":-0.00021676783636816866,"y":-0.0009755014692662891},"angle":{"x":-2.541159031424361e-5,"z":0.0003248912021771146,"y":-0.0007002643879465669}},{"degrees_of_freedom":[1716,1717,1718,1719,1720,1721],"id":"n286","parent":"11","position":{"x":-5,"z":22.857142857142858,"y":10},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":1.6683577071284288e-5,"z":-0.0001990892491471205,"y":-0.0009386798242222007},"angle":{"x":-2.94418855278585e-6,"z":6.718403904325088e-5,"y":2.864134564663681e-5}},{"degrees_of_freedom":[1722,1723,1724,1725,1726,1727],"id":"n287","parent":"11","position":{"x":-5,"z":22.020305089104422,"y":7.979694910895578},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0.0001517356340246197,"z":-0.0002011676750472961,"y":-0.000912132938907031},"angle":{"x":8.629037966725343e-6,"z":6.605840052047458e-5,"y":2.54575457206181e-5}},{"degrees_of_freedom":[1728,1729,1730,1731,1732,1733],"id":"n288","parent":"11","position":{"x":-5,"z":20,"y":7.142857142857142},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0.00047778032207006313,"z":-0.00020936579263139445,"y":-0.0008417148448350917},"angle":{"x":4.839345110620384e-5,"z":6.810812907503833e-5,"y":3.125494579786554e-5}},{"degrees_of_freedom":[1734,1735,1736,1737,1738,1739],"id":"n289","parent":"11","position":{"x":-5,"z":17.979694910895578,"y":7.979694910895579},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":2.5446442624676887e-5,"z":-0.00021328387265900486,"y":-0.0007868022888819953},"angle":{"x":-2.8007380592620233e-5,"z":0.00040646909686923894,"y":-0.0009257743510482718}},{"degrees_of_freedom":[1740,1741,1742,1743,1744,1745],"id":"n290","parent":"11","position":{"x":0,"z":25,"y":12.857142857142858},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-0.00019030486651557574,"z":5.648691008276619e-5,"y":-0.0008564333745591767},"angle":{"x":0.00021834608597196792,"z":-1.823252015385829e-5,"y":2.8126423269669034e-5}},{"degrees_of_freedom":[1746,1747,1748,1749,1750,1751],"id":"n291","parent":"11","position":{"x":-2.020305089104421,"z":25,"y":12.020305089104422},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-0.00020177261019366368,"z":-6.940943844181374e-5,"y":-0.0008173273028026256},"angle":{"x":-4.061212194469097e-5,"z":-1.154450048842521e-5,"y":-7.913764350062178e-5}},{"degrees_of_freedom":[1752,1753,1754,1755,1756,1757],"id":"n292","parent":"11","position":{"x":-2.857142857142857,"z":25,"y":10},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-0.0002086182863080143,"z":-5.358589096836769e-5,"y":-0.0007844652473883166},"angle":{"x":-5.0110761211892994e-6,"z":-1.309805003810008e-7,"y":6.810954178662e-6}},{"degrees_of_freedom":[1758,1759,1760,1761,1762,1763],"id":"n293","parent":"11","position":{"x":-2.020305089104421,"z":25,"y":7.979694910895579},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-0.00019845122103046575,"z":-4.916167697372884e-5,"y":-0.0007472395910654441},"angle":{"x":-1.4118752963191532e-5,"z":1.8569047917990537e-5,"y":2.8798915708911924e-5}},{"degrees_of_freedom":[1764,1765,1766,1767,1768,1769],"id":"n294","parent":"11","position":{"x":0,"z":25,"y":7.142857142857142},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-0.00019111511505440435,"z":-9.552915336454505e-5,"y":-0.0007560805414395421},"angle":{"x":5.905452533393423e-5,"z":-1.6906510952117734e-5,"y":-1.5104609523720745e-6}},{"degrees_of_freedom":[1770,1771,1772,1773,1774,1775],"id":"n295","parent":"11","position":{"x":2.020305089104421,"z":25,"y":7.979694910895579},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-0.00018157086714379463,"z":-4.305849890203384e-5,"y":-0.0007936323551716749},"angle":{"x":-4.1100070308724645e-5,"z":-1.0903349783334501e-5,"y":-4.299585675536565e-5}},{"degrees_of_freedom":[1776,1777,1778,1779,1780,1781],"id":"n296","parent":"11","position":{"x":2.857142857142857,"z":25,"y":10},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-0.0001767627464509652,"z":-9.011263328321398e-5,"y":-0.0008300729175932256},"angle":{"x":-3.4647936427789276e-5,"z":-1.1781472381534979e-7,"y":-2.7419003667560717e-5}},{"degrees_of_freedom":[1782,1783,1784,1785,1786,1787],"id":"n297","parent":"11","position":{"x":2.020305089104421,"z":25,"y":12.020305089104422},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-0.00018377707676134168,"z":-0.00018305730027589508,"y":-0.0008695085742926196},"angle":{"x":-0.00011481743123630882,"z":1.574332029403869e-5,"y":0.00016612726144771723}},{"degrees_of_freedom":[1788,1789,1790,1791,1792,1793],"id":"n298","parent":"11","position":{"x":2.857142857142857,"z":3.140184917367551e-16,"y":15},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0.00014396702756868315,"z":-0.00016032131205169614,"y":-0.0011916814706801307},"angle":{"x":2.9012422861546105e-5,"z":-2.7693459412076616e-5,"y":-3.485873555391509e-5}},{"degrees_of_freedom":[1794,1795,1796,1797,1798,1799],"id":"n299","parent":"11","position":{"x":2.0203050891044216,"z":-2.020305089104421,"y":15},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0.0001812670877952777,"z":-0.00017274586567785262,"y":-0.0009722647044529875},"angle":{"x":-0.00031402542706146774,"z":-0.00015031675619055137,"y":-2.3485912671574285e-5}},{"degrees_of_freedom":[1800,1801,1802,1803,1804,1805],"id":"n300","parent":"11","position":{"x":3.140184917367551e-16,"z":-2.857142857142857,"y":15},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0.00019874156791158581,"z":-0.00021729641426999194,"y":-0.0008771467510500473},"angle":{"x":4.74761389011296e-5,"z":-2.384784744237743e-5,"y":-2.724815932043404e-5}},{"degrees_of_freedom":[1806,1807,1808,1809,1810,1811],"id":"n301","parent":"11","position":{"x":-2.020305089104421,"z":-2.0203050891044216,"y":15},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0.00017534975252801906,"z":-0.00026973125522819735,"y":-0.0008614885227463935},"angle":{"x":-0.0002242468778725403,"z":7.35620182833402e-5,"y":-3.2992211100957e-5}},{"degrees_of_freedom":[1812,1813,1814,1815,1816,1817],"id":"n302","parent":"11","position":{"x":-2.857142857142857,"z":-3.140184917367551e-16,"y":15},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0.00013737548179280546,"z":-0.00028568579980877134,"y":-0.0008339056066180499},"angle":{"x":3.4504327774101955e-5,"z":-1.657902445495272e-5,"y":-3.43518225548314e-5}},{"degrees_of_freedom":[1818,1819,1820,1821,1822,1823],"id":"n303","parent":"11","position":{"x":-2.0203050891044216,"z":2.020305089104421,"y":15},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":9.92105522661405e-5,"z":-0.0002731155069963017,"y":-0.0009957972358164138},"angle":{"x":-0.0005773382163388202,"z":-0.00023155670110406736,"y":-2.8363431903785356e-5}},{"degrees_of_freedom":[1824,1825,1826,1827,1828,1829],"id":"n304","parent":"11","position":{"x":-3.140184917367551e-16,"z":2.857142857142857,"y":15},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":7.976606037987689e-5,"z":-0.00022415955795390623,"y":-0.0010586221044107866},"angle":{"x":1.6039773311585208e-5,"z":-2.0424749070522064e-5,"y":-2.766754643478413e-5}},{"degrees_of_freedom":[1830,1831,1832,1833,1834,1835],"id":"n305","parent":"11","position":{"x":2.020305089104421,"z":2.0203050891044216,"y":15},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0.00010256538200059852,"z":-0.00017398317186665289,"y":-0.0010946015428183427},"angle":{"x":-7.405384474358984e-6,"z":-1.347671402134268e-5,"y":-3.0348391898814e-5}},{"degrees_of_freedom":[1836,1837,1838,1839,1840,1841],"id":"n306","parent":"11","position":{"x":5,"z":0,"y":25},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":-800},"displacement":{"x":0.00019591803840621118,"z":-0.00016133162631689452,"y":-0.001188460940339202},"angle":{"x":-4.85030400259166e-7,"z":-6.025574520360592e-6,"y":-3.590976712399207e-5}},{"degrees_of_freedom":[1842,1843,1844,1845,1846,1847],"id":"n307","parent":"11","position":{"x":5,"z":-5,"y":20},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0.00027777938551015984,"z":-0.00016630749828432415,"y":-0.0011353018094475515},"angle":{"x":-1.7399428281920678e-5,"z":3.944963112528523e-6,"y":-2.0285168337587078e-5}},{"degrees_of_freedom":[1848,1849,1850,1851,1852,1853],"id":"n308","parent":"11","position":{"x":5,"z":5,"y":20},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":6.655563865800501e-5,"z":-0.00013768902352300993,"y":-0.0010737155028295413},"angle":{"x":-6.962100172034008e-6,"z":3.7924360829897158e-6,"y":-1.7447856435058537e-5}},{"degrees_of_freedom":[1854,1855,1856,1857,1858,1859],"id":"n309","parent":"11","position":{"x":5,"z":2.857142857142857,"y":20},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":9.866679609024357e-5,"z":-0.0001336407456160637,"y":-0.0010783247218747773},"angle":{"x":-6.0502341616683935e-6,"z":-8.992578491882985e-7,"y":-2.4221511142907342e-5}},{"degrees_of_freedom":[1860,1861,1862,1863,1864,1865],"id":"n310","parent":"11","position":{"x":5,"z":2.0203050891044216,"y":22.020305089104422},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0.00012186019467735859,"z":-0.00015217453527136346,"y":-0.0011139031525237081},"angle":{"x":-2.0822977434262395e-5,"z":-4.063468842120248e-6,"y":-1.812336421862301e-5}},{"degrees_of_freedom":[1866,1867,1868,1869,1870,1871],"id":"n311","parent":"11","position":{"x":5,"z":3.140184917367551e-16,"y":22.857142857142858},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0.00018553547518048976,"z":-0.0001619511997718106,"y":-0.0011267769108734159},"angle":{"x":-7.367157533569788e-6,"z":-2.171300670220044e-6,"y":-2.6326822820204978e-5}},{"degrees_of_freedom":[1872,1873,1874,1875,1876,1877],"id":"n312","parent":"11","position":{"x":5,"z":-2.020305089104421,"y":22.020305089104422},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0.0002243958885193689,"z":-0.000166782938711312,"y":-0.0011308221998045835},"angle":{"x":1.1120172518431519e-5,"z":9.25801183654577e-6,"y":8.851755215948542e-6}},{"degrees_of_freedom":[1878,1879,1880,1881,1882,1883],"id":"n313","parent":"11","position":{"x":5,"z":-2.857142857142857,"y":20},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0.00023731065160713624,"z":-0.0001663477738090125,"y":-0.0011049957719808869},"angle":{"x":-6.512209644526126e-6,"z":-3.4724305773978796e-6,"y":-2.430381081642317e-5}},{"degrees_of_freedom":[1884,1885,1886,1887,1888,1889],"id":"n314","parent":"11","position":{"x":5,"z":-2.0203050891044216,"y":17.979694910895578},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0.00020954871602986514,"z":-0.00014289422777916358,"y":-0.0010685905853452843},"angle":{"x":-2.6098108253813835e-5,"z":-1.556054706550745e-6,"y":-2.6872594004896756e-5}},{"degrees_of_freedom":[1890,1891,1892,1893,1894,1895],"id":"n315","parent":"11","position":{"x":5,"z":-3.140184917367551e-16,"y":17.142857142857142},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0.00015020682673694928,"z":-0.00013310826896860238,"y":-0.001052845999397126},"angle":{"x":-7.951166718969356e-6,"z":-2.200398165000391e-6,"y":-2.2198550827277338e-5}},{"degrees_of_freedom":[1896,1897,1898,1899,1900,1901],"id":"n316","parent":"11","position":{"x":5,"z":2.020305089104421,"y":17.979694910895578},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0.00011601234737192184,"z":-0.00013093916133437292,"y":-0.0010514776978751482},"angle":{"x":8.907004075093993e-6,"z":7.4990080388096985e-6,"y":2.383969438020725e-6}},{"degrees_of_freedom":[1902,1903,1904,1905,1906,1907],"id":"n317","parent":"11","position":{"x":-5,"z":0,"y":25},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":-400},"displacement":{"x":0.00012363192109715802,"z":-0.0006276378138302749,"y":-0.0014541915456846096},"angle":{"x":-7.032729993665673e-5,"z":4.817095618156793e-5,"y":-8.776719134917976e-5}},{"degrees_of_freedom":[1908,1909,1910,1911,1912,1913],"id":"n318","parent":"11","position":{"x":0,"z":-5,"y":25},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":-400},"displacement":{"x":0.0003307053985500291,"z":-0.00030691569104690367,"y":-0.00138946177354428},"angle":{"x":-0.0001612057829425042,"z":-5.341728822770929e-5,"y":-4.873529984548105e-5}},{"degrees_of_freedom":[1914,1915,1916,1917,1918,1919],"id":"n319","parent":"11","position":{"x":0,"z":5,"y":25},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":-800},"displacement":{"x":1.1237459898371834e-5,"z":-0.00035560663600508915,"y":-0.001207434257533612},"angle":{"x":-2.2615496099482583e-5,"z":3.3405410937062755e-6,"y":-4.99996545725107e-5}},{"degrees_of_freedom":[1920,1921,1922,1923,1924,1925],"id":"n320","parent":"11","position":{"x":2.857142857142857,"z":-3.140184917367551e-16,"y":25},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0.00018215067159433788,"z":-0.00022548813691579167,"y":-0.0010684428970099739},"angle":{"x":-2.2400079597977836e-5,"z":2.4165288416034968e-5,"y":-5.380614724621969e-5}},{"degrees_of_freedom":[1926,1927,1928,1929,1930,1931],"id":"n321","parent":"11","position":{"x":2.0203050891044216,"z":2.020305089104421,"y":25},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0.00012521494992182483,"z":-0.000249110964468604,"y":-0.0011612755392730358},"angle":{"x":-0.0002027789707556631,"z":8.793899858525809e-5,"y":-4.730249497541926e-5}},{"degrees_of_freedom":[1932,1933,1934,1935,1936,1937],"id":"n322","parent":"11","position":{"x":3.140184917367551e-16,"z":2.857142857142857,"y":25},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":8.375975804369412e-5,"z":-0.0003355347026230387,"y":-0.001199728643802763},"angle":{"x":-3.4693297156524086e-5,"z":2.8511954388384842e-5,"y":-5.2516461585483e-5}},{"degrees_of_freedom":[1938,1939,1940,1941,1942,1943],"id":"n323","parent":"11","position":{"x":-2.020305089104421,"z":2.0203050891044216,"y":25},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0.0001205329494899355,"z":-0.0004355673084612072,"y":-0.0012962470685643698},"angle":{"x":0.00024278065497940812,"z":0.00012661360606809946,"y":-6.0575104916082314e-5}},{"degrees_of_freedom":[1944,1945,1946,1947,1948,1949],"id":"n324","parent":"11","position":{"x":-2.857142857142857,"z":3.140184917367551e-16,"y":25},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0.00017487377262088288,"z":-0.00046706080929970043,"y":-0.0015292619419103178},"angle":{"x":-2.239951198456998e-5,"z":3.28581417693918e-5,"y":-5.671148317305567e-5}},{"degrees_of_freedom":[1950,1951,1952,1953,1954,1955],"id":"n325","parent":"11","position":{"x":-2.0203050891044216,"z":-2.020305089104421,"y":25},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0.00024196164475858312,"z":-0.00044297840095307804,"y":-0.0013867552185117587},"angle":{"x":-8.504267735537778e-5,"z":5.500571561176785e-5,"y":-6.572065798041144e-5}},{"degrees_of_freedom":[1956,1957,1958,1959,1960,1961],"id":"n326","parent":"11","position":{"x":-3.140184917367551e-16,"z":-2.857142857142857,"y":25},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0.00028490405211877836,"z":-0.00033823532707985234,"y":-0.0013277273476137517},"angle":{"x":-1.0106200456534113e-5,"z":2.8511581401849396e-5,"y":-5.450699104411093e-5}},{"degrees_of_freedom":[1962,1963,1964,1965,1966,1967],"id":"n327","parent":"11","position":{"x":2.020305089104421,"z":-2.0203050891044216,"y":25},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0.00024412224466290806,"z":-0.0002472429686642128,"y":-0.0012517849619578074},"angle":{"x":9.575430250152881e-5,"z":6.593901759355062e-5,"y":-5.085887875055832e-5}},{"degrees_of_freedom":[1968,1969,1970,1971,1972,1973],"id":"n328","parent":"11","position":{"x":-5,"z":-5,"y":20},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0.00024457826920299514,"z":-0.0005073153804643367,"y":-0.0013129235092559793},"angle":{"x":-1.5998493175941815e-5,"z":2.1447226416358562e-5,"y":-5.31645189322607e-6}},{"degrees_of_freedom":[1974,1975,1976,1977,1978,1979],"id":"n329","parent":"11","position":{"x":-5,"z":5,"y":20},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":9.780746669887528e-6,"z":-0.000461171201071281,"y":-0.0011972205820811326},"angle":{"x":-1.805144755790101e-5,"z":2.1246381080039286e-5,"y":-4.375661316002176e-5}},{"degrees_of_freedom":[1980,1981,1982,1983,1984,1985],"id":"n330","parent":"11","position":{"x":-5,"z":-2.857142857142857,"y":20},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0.00014297053306471235,"z":-0.0004964752745541628,"y":-0.001286672821229645},"angle":{"x":-1.9406524715989487e-5,"z":2.5479290298157963e-5,"y":1.0145651153327401e-5}},{"degrees_of_freedom":[1986,1987,1988,1989,1990,1991],"id":"n331","parent":"11","position":{"x":-5,"z":-2.020305089104421,"y":22.020305089104422},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":9.115299998912822e-5,"z":-0.00052175137027999,"y":-0.0012861844282982505},"angle":{"x":-7.882053289632659e-6,"z":1.544026794309908e-5,"y":-1.824898934501535e-5}},{"degrees_of_freedom":[1992,1993,1994,1995,1996,1997],"id":"n332","parent":"11","position":{"x":-5,"z":3.140184917367551e-16,"y":22.857142857142858},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-3.3945653225140254e-5,"z":-0.0005245144342784773,"y":-0.0013090264508062177},"angle":{"x":8.943725925862997e-6,"z":2.7552103208737207e-5,"y":1.6008436407003274e-5}},{"degrees_of_freedom":[1998,1999,2000,2001,2002,2003],"id":"n333","parent":"11","position":{"x":-5,"z":2.0203050891044216,"y":22.020305089104422},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0.0001558368644410081,"z":-0.0005135293756138854,"y":-0.0013166638849422434},"angle":{"x":-3.854727186783497e-5,"z":0.00011545976228321323,"y":-0.00023263196533497246}},{"degrees_of_freedom":[2004,2005,2006,2007,2008,2009],"id":"n334","parent":"11","position":{"x":-5,"z":2.857142857142857,"y":20},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0.00023444747973365825,"z":-0.000469770607318416,"y":-0.0012752920421917064},"angle":{"x":-1.8500487169904755e-5,"z":2.5479469022870405e-5,"y":2.1870936030248362e-5}},{"degrees_of_freedom":[2010,2011,2012,2013,2014,2015],"id":"n335","parent":"11","position":{"x":-5,"z":2.020305089104421,"y":17.979694910895578},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0.0002764531925612092,"z":-0.0004420745527849079,"y":-0.0012680804238057205},"angle":{"x":-1.1489895762736912e-5,"z":-5.817692577876422e-5,"y":-0.00021474472984115613}},{"degrees_of_freedom":[2016,2017,2018,2019,2020,2021],"id":"n336","parent":"11","position":{"x":-5,"z":-3.140184917367551e-16,"y":17.142857142857142},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0.0003778628490351817,"z":-0.0004391609517487106,"y":-0.0012586349427819268},"angle":{"x":1.347504990473254e-6,"z":2.340658743442974e-5,"y":1.6008770439751052e-5}},{"degrees_of_freedom":[2022,2023,2024,2025,2026,2027],"id":"n337","parent":"11","position":{"x":-5,"z":-2.0203050891044216,"y":17.979694910895578},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0.00021176865415142203,"z":-0.0004515885347427511,"y":-0.0012568102561268523},"angle":{"x":-3.461259608527364e-5,"z":0.00017286395418981222,"y":-0.0004067210080344247}},{"degrees_of_freedom":[2028,2029,2030,2031,2032,2033],"id":"n338","parent":"11","position":{"x":0,"z":-5,"y":17.142857142857142},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0.00031217126717385924,"z":-0.0001596969119332112,"y":-0.001189643845441915},"angle":{"x":-0.00014072829614154245,"z":2.4433785617050785e-5,"y":-8.993136887909013e-5}},{"degrees_of_freedom":[2034,2035,2036,2037,2038,2039],"id":"n339","parent":"11","position":{"x":2.020305089104421,"z":-5,"y":17.979694910895578},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0.000306067908694224,"z":-9.577487451774992e-5,"y":-0.0011593338355805124},"angle":{"x":2.858599825919283e-5,"z":-3.724827963472419e-7,"y":-1.9799103109417276e-5}},{"degrees_of_freedom":[2040,2041,2042,2043,2044,2045],"id":"n340","parent":"11","position":{"x":2.857142857142857,"z":-5,"y":20},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0.0002900974714279875,"z":-2.1453876888261492e-5,"y":-0.0011634180825366854},"angle":{"x":-4.111481404816644e-5,"z":1.3655252254005137e-5,"y":-0.00018807160551150869}},{"degrees_of_freedom":[2046,2047,2048,2049,2050,2051],"id":"n341","parent":"11","position":{"x":2.020305089104421,"z":-5,"y":22.020305089104422},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0.0002516356468298776,"z":-0.00026190376233333016,"y":-0.001189472166797959},"angle":{"x":-0.00014701667142573468,"z":2.6276468397925278e-5,"y":6.759813491459928e-5}},{"degrees_of_freedom":[2052,2053,2054,2055,2056,2057],"id":"n342","parent":"11","position":{"x":0,"z":-5,"y":22.857142857142858},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0.00023453805560120816,"z":-0.00024836407211387357,"y":-0.001251585585701909},"angle":{"x":-0.0001850963067383233,"z":2.7172351816909278e-5,"y":8.33711945869854e-5}},{"degrees_of_freedom":[2058,2059,2060,2061,2062,2063],"id":"n343","parent":"11","position":{"x":-2.020305089104421,"z":-5,"y":22.020305089104422},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0.00024287255683250034,"z":7.496679926953742e-5,"y":-0.0012824220934035241},"angle":{"x":-2.732348764011305e-5,"z":-3.8035160719375863e-6,"y":0.00014872289673534175}},{"degrees_of_freedom":[2064,2065,2066,2067,2068,2069],"id":"n344","parent":"11","position":{"x":-2.857142857142857,"z":-5,"y":20},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0.00025542878107833117,"z":0.00025462529755125205,"y":-0.0012735642981508862},"angle":{"x":0.0001321878318883788,"z":1.262830325342063e-5,"y":0.000533816855074881}},{"degrees_of_freedom":[2070,2071,2072,2073,2074,2075],"id":"n345","parent":"11","position":{"x":-2.020305089104421,"z":-5,"y":17.979694910895578},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0.0002921516362556335,"z":-0.00045915254267847594,"y":-0.001245649974917578},"angle":{"x":0.0005005846973315797,"z":2.5754346737569352e-5,"y":-0.00035557199455140456}},{"degrees_of_freedom":[2076,2077,2078,2079,2080,2081],"id":"n346","parent":"11","position":{"x":0,"z":5,"y":22.857142857142858},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":1.401994199361972e-5,"z":-0.00025599553502638275,"y":-0.001156155450730049},"angle":{"x":3.795906531873276e-5,"z":9.699414445376648e-6,"y":-3.7152736168433904e-5}},{"degrees_of_freedom":[2082,2083,2084,2085,2086,2087],"id":"n347","parent":"11","position":{"x":-2.020305089104421,"z":5,"y":22.020305089104422},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":7.047152850536599e-6,"z":-0.00036156559914980746,"y":-0.0011642558386757383},"angle":{"x":-5.322605803322427e-5,"z":-4.16169613198091e-6,"y":-7.305870679279227e-5}},{"degrees_of_freedom":[2088,2089,2090,2091,2092,2093],"id":"n348","parent":"11","position":{"x":-2.857142857142857,"z":5,"y":20},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":1.6143481398888025e-5,"z":-0.0003150585110948384,"y":-0.0011399576469216573},"angle":{"x":-1.678445442096743e-5,"z":8.06960585101912e-6,"y":1.5120749120029723e-5}},{"degrees_of_freedom":[2094,2095,2096,2097,2098,2099],"id":"n349","parent":"11","position":{"x":-2.020305089104421,"z":5,"y":17.979694910895578},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":4.184996939019885e-5,"z":-0.00029385866724502174,"y":-0.0010995391731132961},"angle":{"x":1.773555995094845e-5,"z":2.4457672448222983e-5,"y":-6.801625651873028e-5}},{"degrees_of_freedom":[2100,2101,2102,2103,2104,2105],"id":"n350","parent":"11","position":{"x":0,"z":5,"y":17.142857142857142},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":5.9232720868974774e-5,"z":-0.0001714796688177449,"y":-0.0010669648352821565},"angle":{"x":-7.00189413447942e-5,"z":8.528053930804169e-6,"y":-3.152399990622928e-5}},{"degrees_of_freedom":[2106,2107,2108,2109,2110,2111],"id":"n351","parent":"11","position":{"x":2.020305089104421,"z":5,"y":17.979694910895578},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":6.26005300364398e-5,"z":-0.00016628967642184399,"y":-0.0010652976238849337},"angle":{"x":1.905612595239792e-5,"z":-7.812176872494689e-6,"y":5.228965692732162e-6}},{"degrees_of_freedom":[2112,2113,2114,2115,2116,2117],"id":"n352","parent":"11","position":{"x":2.857142857142857,"z":5,"y":20},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":5.885898510610017e-5,"z":-0.00013177054143668996,"y":-0.0010898232849655537},"angle":{"x":-1.1699030079574188e-5,"z":6.324713468515765e-6,"y":-6.972989896906554e-5}},{"degrees_of_freedom":[2118,2119,2120,2121,2122,2123],"id":"n353","parent":"11","position":{"x":2.020305089104421,"z":5,"y":22.020305089104422},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":3.623781514424473e-5,"z":-0.00021395664596627508,"y":-0.001125894929448924},"angle":{"x":-3.955891084070758e-5,"z":2.1988706797582826e-5,"y":-3.1795790553304605e-6}},{"degrees_of_freedom":[2124,2125,2126,2127,2128,2129],"id":"n354","parent":"11","position":{"x":2.0203050891044216,"z":7.979694910895579,"y":15},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":1.803958665645318e-5,"z":-0.0001577003427512553,"y":-0.0009965609828222614},"angle":{"x":-4.881292158312797e-5,"z":-1.4512321939094613e-5,"y":-2.3690656314601145e-5}},{"degrees_of_freedom":[2130,2131,2132,2133,2134,2135],"id":"n355","parent":"11","position":{"x":3.140184917367551e-16,"z":7.142857142857142,"y":15},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":3.187336999006861e-5,"z":-0.00020252419232964715,"y":-0.00100225487412935},"angle":{"x":8.251598652551249e-6,"z":5.1529509445085564e-6,"y":-2.598800936723333e-5}},{"degrees_of_freedom":[2136,2137,2138,2139,2140,2141],"id":"n356","parent":"11","position":{"x":-2.020305089104421,"z":7.979694910895578,"y":15},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":8.332258343634633e-6,"z":-0.0002488007847065219,"y":-0.0010217592730727516},"angle":{"x":-2.1853255109372314e-6,"z":9.35305086180057e-6,"y":-2.7256380659866815e-5}},{"degrees_of_freedom":[2142,2143,2144,2145,2146,2147],"id":"n357","parent":"11","position":{"x":-2.0203050891044216,"z":12.020305089104422,"y":15},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-5.962279904956438e-5,"z":-0.0002525817975635517,"y":-0.0009541425004871906},"angle":{"x":-9.327013291030671e-5,"z":-1.4500365862878655e-5,"y":-2.691417573333261e-5}},{"degrees_of_freedom":[2148,2149,2150,2151,2152,2153],"id":"n358","parent":"11","position":{"x":-3.140184917367551e-16,"z":12.857142857142858,"y":15},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-7.633833071532267e-5,"z":-0.00020587172877639675,"y":-0.000913635049243154},"angle":{"x":-3.734586654477447e-5,"z":3.2292673982300468e-6,"y":-2.6030635539199416e-5}},{"degrees_of_freedom":[2154,2155,2156,2157,2158,2159],"id":"n359","parent":"11","position":{"x":2.020305089104421,"z":12.020305089104422,"y":15},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-5.365508362056214e-5,"z":-0.00015961665808574634,"y":-0.0009356324778887447},"angle":{"x":0.00019234158152376158,"z":-7.593494292866803e-5,"y":-2.769383009044404e-5}},{"degrees_of_freedom":[2160,2161,2162,2163,2164,2165],"id":"n360","parent":"11","position":{"x":5,"z":10,"y":25},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":-800},"displacement":{"x":-4.155706658857433e-5,"z":-0.00016400948973873512,"y":-0.0011583193687601681},"angle":{"x":-9.583624768307969e-6,"z":-2.0717295225740583e-7,"y":-4.461329445096247e-5}},{"degrees_of_freedom":[2166,2167,2168,2169,2170,2171],"id":"n361","parent":"11","position":{"x":5,"z":15,"y":20},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-0.00010912123925425089,"z":-0.00012130898178834318,"y":-0.001064692071660898},"angle":{"x":-6.397974661489009e-6,"z":5.136769247980334e-6,"y":-1.4885999374398571e-5}},{"degrees_of_freedom":[2172,2173,2174,2175,2176,2177],"id":"n362","parent":"11","position":{"x":5,"z":12.857142857142858,"y":20},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-8.959706257035703e-5,"z":-0.00011695209398741909,"y":-0.0010557548004477824},"angle":{"x":-6.179723053596226e-6,"z":9.141218905153096e-6,"y":-2.2772580399988146e-5}},{"degrees_of_freedom":[2178,2179,2180,2181,2182,2183],"id":"n363","parent":"11","position":{"x":5,"z":12.020305089104422,"y":22.020305089104422},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-9.074672272436408e-5,"z":-0.00013611222343716046,"y":-0.0010886943455232965},"angle":{"x":-2.068682677105831e-5,"z":1.2760556735930906e-5,"y":-3.8136237353875306e-5}},{"degrees_of_freedom":[2184,2185,2186,2187,2188,2189],"id":"n364","parent":"11","position":{"x":5,"z":10,"y":22.857142857142858},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-7.971248983562623e-5,"z":-0.0001438279626810333,"y":-0.0010996059994553577},"angle":{"x":-5.047113164781044e-6,"z":6.95059326305268e-6,"y":-2.6829778678813663e-5}},{"degrees_of_freedom":[2190,2191,2192,2193,2194,2195],"id":"n365","parent":"11","position":{"x":5,"z":7.979694910895579,"y":22.020305089104422},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":1.0757088121436782e-5,"z":-0.00014593875641353467,"y":-0.0010991694664090653},"angle":{"x":7.505155472082921e-6,"z":3.751430960731464e-5,"y":6.474407155986218e-5}},{"degrees_of_freedom":[2196,2197,2198,2199,2200,2201],"id":"n366","parent":"11","position":{"x":5,"z":7.142857142857142,"y":20},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":4.25106946260163e-5,"z":-0.00014267340585478018,"y":-0.00107475774395208},"angle":{"x":-6.0034989816024105e-6,"z":4.515176923303472e-6,"y":-2.346507669762304e-5}},{"degrees_of_freedom":[2202,2203,2204,2205,2206,2207],"id":"n367","parent":"11","position":{"x":5,"z":7.979694910895578,"y":17.979694910895578},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":3.4991369080243965e-5,"z":-0.00012423637635427433,"y":-0.0010409600381883189},"angle":{"x":-2.064519100810092e-5,"z":1.4265411882252314e-5,"y":-4.5916429266819274e-5}},{"degrees_of_freedom":[2208,2209,2210,2211,2212,2213],"id":"n368","parent":"11","position":{"x":5,"z":10,"y":17.142857142857142},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":3.064756104102616e-5,"z":-0.00011698794803642863,"y":-0.0010297414094745368},"angle":{"x":-4.564235596103914e-6,"z":6.705758863450666e-6,"y":-1.9407986183719667e-5}},{"degrees_of_freedom":[2214,2215,2216,2217,2218,2219],"id":"n369","parent":"11","position":{"x":5,"z":12.020305089104422,"y":17.979694910895578},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-5.033348458428029e-5,"z":-0.00011468981090413983,"y":-0.0010314275264637668},"angle":{"x":9.073617002322506e-6,"z":3.605570029112373e-5,"y":5.8479675251829116e-5}},{"degrees_of_freedom":[2220,2221,2222,2223,2224,2225],"id":"n370","parent":"11","position":{"x":-5,"z":10,"y":25},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":-400},"displacement":{"x":-0.00013646014511814174,"z":-0.0005751177325711181,"y":-0.0014256088957920055},"angle":{"x":-7.173738183657749e-5,"z":4.0819362197060975e-5,"y":-6.307530644496623e-5}},{"degrees_of_freedom":[2226,2227,2228,2229,2230,2231],"id":"n371","parent":"11","position":{"x":0,"z":15,"y":25},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":-800},"displacement":{"x":-0.00019986597407365306,"z":-0.0003750547339098219,"y":-0.0012087100353694999},"angle":{"x":-3.800945406566698e-5,"z":1.1714068654567122e-5,"y":-4.270686359123522e-5}},{"degrees_of_freedom":[2232,2233,2234,2235,2236,2237],"id":"n372","parent":"11","position":{"x":2.857142857142857,"z":10,"y":25},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-8.280473447748088e-5,"z":-0.0002635605003146771,"y":-0.0008473582760817409},"angle":{"x":3.2725837505961858e-6,"z":4.93945093662253e-5,"y":-3.337330116579302e-5}},{"degrees_of_freedom":[2238,2239,2240,2241,2242,2243],"id":"n373","parent":"11","position":{"x":2.0203050891044216,"z":12.020305089104422,"y":25},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-0.00012224183118093998,"z":-0.0002797186540452756,"y":-0.0011358913821425405},"angle":{"x":-0.0005028264671853218,"z":0.00022815278456934373,"y":-4.808609620082101e-5}},{"degrees_of_freedom":[2244,2245,2246,2247,2248,2249],"id":"n374","parent":"11","position":{"x":3.140184917367551e-16,"z":12.857142857142858,"y":25},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-0.00015766605945539695,"z":-0.0003597930014899276,"y":-0.0012548544941723943},"angle":{"x":-1.673383350620611e-5,"z":5.611852607209153e-5,"y":-4.417262725494936e-5}},{"degrees_of_freedom":[2250,2251,2252,2253,2254,2255],"id":"n375","parent":"11","position":{"x":-2.020305089104421,"z":12.020305089104422,"y":25},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-0.00012600401445120077,"z":-0.00043767543319299444,"y":-0.0014018245918033874},"angle":{"x":0.0002860934985938235,"z":0.00016335871383198888,"y":-4.499753855717454e-5}},{"degrees_of_freedom":[2256,2257,2258,2259,2260,2261],"id":"n376","parent":"11","position":{"x":-2.857142857142857,"z":10,"y":25},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-9.226784561335567e-5,"z":-0.0004599633027107465,"y":-0.0017579721639489382},"angle":{"x":2.5572245153015945e-6,"z":6.32881636026218e-5,"y":-3.628574916754981e-5}},{"degrees_of_freedom":[2262,2263,2264,2265,2266,2267],"id":"n377","parent":"11","position":{"x":-2.0203050891044216,"z":7.979694910895579,"y":25},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-5.0408425331408165e-5,"z":-0.000442522623973551,"y":-0.0013908264712217777},"angle":{"x":-0.000505878231611866,"z":0.00024322189716885983,"y":-4.809784611829254e-5}},{"degrees_of_freedom":[2268,2269,2270,2271,2272,2273],"id":"n378","parent":"11","position":{"x":-3.140184917367551e-16,"z":7.142857142857142,"y":25},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-1.8852920727101666e-5,"z":-0.0003623422020644087,"y":-0.001238198278595159},"angle":{"x":2.2563357333192638e-5,"z":5.656441445492247e-5,"y":-4.3587345973266096e-5}},{"degrees_of_freedom":[2274,2275,2276,2277,2278,2279],"id":"n379","parent":"11","position":{"x":2.020305089104421,"z":7.979694910895578,"y":25},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-5.390193351493122e-5,"z":-0.0002863029254351086,"y":-0.0011233338291540243},"angle":{"x":0.0003215318533758723,"z":0.00016209088949664503,"y":-4.449455882150593e-5}},{"degrees_of_freedom":[2280,2281,2282,2283,2284,2285],"id":"n380","parent":"11","position":{"x":-5,"z":15,"y":20},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-0.00017088756227823747,"z":-0.0004325240403678762,"y":-0.001209051653181711},"angle":{"x":-1.8131177236635392e-5,"z":2.2981836975848416e-5,"y":-4.579711310144684e-5}},{"degrees_of_freedom":[2286,2287,2288,2289,2290,2291],"id":"n381","parent":"11","position":{"x":-5,"z":7.142857142857142,"y":20},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-0.00018083982764215855,"z":-0.00045723985479132124,"y":-0.001209399351513953},"angle":{"x":-1.459638472851804e-5,"z":4.3954085485134826e-5,"y":3.891464175869695e-5}},{"degrees_of_freedom":[2292,2293,2294,2295,2296,2297],"id":"n382","parent":"11","position":{"x":-5,"z":7.979694910895579,"y":22.020305089104422},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-0.0002521729407194396,"z":-0.00046922733352650645,"y":-0.0012092727750666048},"angle":{"x":2.5339468695367454e-6,"z":-3.2701580055781843e-6,"y":-9.4160689462721e-5}},{"degrees_of_freedom":[2298,2299,2300,2301,2302,2303],"id":"n383","parent":"11","position":{"x":-5,"z":10,"y":22.857142857142858},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-0.00042305285303161365,"z":-0.0004671845408405309,"y":-0.0012603490099324262},"angle":{"x":3.0584794609491294e-5,"z":4.4223960330250854e-5,"y":4.066802203016115e-5}},{"degrees_of_freedom":[2304,2305,2306,2307,2308,2309],"id":"n384","parent":"11","position":{"x":-5,"z":12.020305089104422,"y":22.020305089104422},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-8.851608798041412e-5,"z":-0.00046170271678688194,"y":-0.001291574048072557},"angle":{"x":-3.2888046237798096e-5,"z":0.0002102982047736326,"y":-0.00042955595413113345}},{"degrees_of_freedom":[2310,2311,2312,2313,2314,2315],"id":"n385","parent":"11","position":{"x":-5,"z":12.857142857142858,"y":20},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":4.950142242308639e-5,"z":-0.00042753583446338147,"y":-0.0012583704411786455},"angle":{"x":-1.212190187905107e-5,"z":4.350765075424538e-5,"y":4.1704322149797756e-5}},{"degrees_of_freedom":[2316,2317,2318,2319,2320,2321],"id":"n386","parent":"11","position":{"x":-5,"z":12.020305089104422,"y":17.979694910895578},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0.00011771936020852158,"z":-0.0004134028912621644,"y":-0.0012492440195259241},"angle":{"x":-2.9864502307445303e-6,"z":-2.3390556506286913e-5,"y":-0.00014800686197545792}},{"degrees_of_freedom":[2322,2323,2324,2325,2326,2327],"id":"n387","parent":"11","position":{"x":-5,"z":10,"y":17.142857142857142},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0.0002837439340806968,"z":-0.0004132305021422939,"y":-0.0012122964600986188},"angle":{"x":2.144154012905082e-5,"z":4.323766010138185e-5,"y":3.995179788555124e-5}},{"degrees_of_freedom":[2328,2329,2330,2331,2332,2333],"id":"n388","parent":"11","position":{"x":-5,"z":7.979694910895578,"y":17.979694910895578},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-4.437615916388305e-5,"z":-0.0004190971573545463,"y":-0.0011897206958057728},"angle":{"x":-2.8985668615021267e-5,"z":0.00022497574966033387,"y":-0.0004735867811508052}},{"degrees_of_freedom":[2334,2335,2336,2337,2338,2339],"id":"n389","parent":"11","position":{"x":0,"z":15,"y":22.857142857142858},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-0.0001771350971654144,"z":-0.00022235159523676366,"y":-0.0011572473863271273},"angle":{"x":5.01383132815131e-5,"z":1.347150261625525e-5,"y":-3.447909858770025e-5}},{"degrees_of_freedom":[2340,2341,2342,2343,2344,2345],"id":"n390","parent":"11","position":{"x":-2.020305089104421,"z":15,"y":22.020305089104422},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-0.00018166121912733635,"z":-0.00033324820337772223,"y":-0.0011729341247307243},"angle":{"x":-7.434882870717672e-5,"z":-4.680183619571178e-7,"y":-8.497521332725868e-5}},{"degrees_of_freedom":[2346,2347,2348,2349,2350,2351],"id":"n391","parent":"11","position":{"x":-2.857142857142857,"z":15,"y":20},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-0.00016446262426880574,"z":-0.00025446750780267716,"y":-0.0011516071962655108},"angle":{"x":-1.8630789482230515e-5,"z":1.2227222836163867e-5,"y":4.8973331768615707e-5}},{"degrees_of_freedom":[2352,2353,2354,2355,2356,2357],"id":"n392","parent":"11","position":{"x":-2.020305089104421,"z":15,"y":17.979694910895578},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-0.00013029868587194563,"z":-0.0002576523048920131,"y":-0.001107486634779378},"angle":{"x":3.5962036678905e-5,"z":2.8625849654370774e-5,"y":-8.339204981102675e-5}},{"degrees_of_freedom":[2358,2359,2360,2361,2362,2363],"id":"n393","parent":"11","position":{"x":0,"z":15,"y":17.142857142857142},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-0.00010904564841672007,"z":-0.00011936310413260101,"y":-0.0010662183003743262},"angle":{"x":-9.278095065598894e-5,"z":1.2764929546117408e-5,"y":-2.9995318804120347e-5}},{"degrees_of_freedom":[2364,2365,2366,2367,2368,2369],"id":"n394","parent":"11","position":{"x":2.020305089104421,"z":15,"y":17.979694910895578},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-0.00010806697111652135,"z":-0.00013635913542130198,"y":-0.001056824374771754},"angle":{"x":3.80480019775792e-5,"z":-4.82903327171227e-6,"y":2.4126192608042826e-5}},{"degrees_of_freedom":[2370,2371,2372,2373,2374,2375],"id":"n395","parent":"11","position":{"x":2.857142857142857,"z":15,"y":20},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-0.0001193749193397195,"z":-7.823854133938374e-5,"y":-0.0010789890818274448},"angle":{"x":-1.4247699523809276e-5,"z":1.048208191003235e-5,"y":-0.00010471104082737343}},{"degrees_of_freedom":[2376,2377,2378,2379,2380,2381],"id":"n396","parent":"11","position":{"x":2.020305089104421,"z":15,"y":22.020305089104422},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-0.00015072168745123952,"z":-0.00019537027823104491,"y":-0.0011190552817147525},"angle":{"x":-6.452468468030072e-5,"z":2.63622265722475e-5,"y":1.408404063098852e-5}},{"degrees_of_freedom":[2382,2383,2384,2385,2386,2387],"id":"n397","parent":"11","position":{"x":2.0203050891044216,"z":17.979694910895578,"y":15},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-0.0001264599722713234,"z":-0.00014036181244047626,"y":-0.000949315630216586},"angle":{"x":0.00035969892505633176,"z":0.00016313917773709693,"y":-2.507252464447903e-5}},{"degrees_of_freedom":[2388,2389,2390,2391,2392,2393],"id":"n398","parent":"11","position":{"x":3.140184917367551e-16,"z":17.142857142857142,"y":15},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-0.00011228729925324864,"z":-0.00018649148463933767,"y":-0.0010318404796718834},"angle":{"x":-2.3014951385502515e-6,"z":3.350165520353391e-5,"y":-2.624368488078287e-5}},{"degrees_of_freedom":[2394,2395,2396,2397,2398,2399],"id":"n399","parent":"11","position":{"x":-2.020305089104421,"z":17.979694910895578,"y":15},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-0.00013643143976439198,"z":-0.0002328603781761887,"y":-0.0011105133457587843},"angle":{"x":-0.00010047055856021747,"z":6.986068347523581e-5,"y":-2.742242540689141e-5}},{"degrees_of_freedom":[2400,2401,2402,2403,2404,2405],"id":"n400","parent":"11","position":{"x":-2.0203050891044216,"z":22.020305089104422,"y":15},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-0.00019620926961283917,"z":-0.00023666514684564347,"y":-0.0009922472952253326},"angle":{"x":0.00029864123154422416,"z":0.00016340839777037375,"y":-2.4061118154962704e-5}},{"degrees_of_freedom":[2406,2407,2408,2409,2410,2411],"id":"n401","parent":"11","position":{"x":-3.140184917367551e-16,"z":22.857142857142858,"y":15},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-0.00021300266187254186,"z":-0.0001929865420371054,"y":-0.0008547386564577616},"angle":{"x":-6.329533489552521e-5,"z":3.5853821211042185e-5,"y":-2.5642743865823376e-5}},{"degrees_of_freedom":[2412,2413,2414,2415,2416,2417],"id":"n402","parent":"11","position":{"x":2.020305089104421,"z":22.020305089104422,"y":15},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-0.00019119672420612636,"z":-0.00014527090835153719,"y":-0.0008231659285276795},"angle":{"x":8.830024521671222e-5,"z":-1.8152682327878923e-5,"y":-2.9346074774148983e-5}},{"degrees_of_freedom":[2418,2419,2420,2421,2422,2423],"id":"n403","parent":"11","position":{"x":5,"z":20,"y":25},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":-800},"displacement":{"x":-0.00026650445316536714,"z":-0.00016659636820202746,"y":-0.0011517660887452388},"angle":{"x":-1.7531227637433197e-5,"z":7.353941855941234e-6,"y":-4.7285628991607956e-5}},{"degrees_of_freedom":[2424,2425,2426,2427,2428,2429],"id":"n404","parent":"11","position":{"x":5,"z":25,"y":20},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-0.0002873767944523551,"z":-9.584824140900433e-5,"y":-0.0010560766702162432},"angle":{"x":-2.910799473334956e-6,"z":3.109159299286871e-6,"y":-1.302602046202477e-5}},{"degrees_of_freedom":[2430,2431,2432,2433,2434,2435],"id":"n405","parent":"11","position":{"x":5,"z":22.857142857142858,"y":20},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-0.0002658106507901358,"z":-9.558383232348354e-5,"y":-0.0010429733753268894},"angle":{"x":-6.9616335919891295e-6,"z":1.8270877607324556e-5,"y":-2.3461509141102398e-5}},{"degrees_of_freedom":[2436,2437,2438,2439,2440,2441],"id":"n406","parent":"11","position":{"x":5,"z":22.020305089104422,"y":22.020305089104422},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-0.00028818674113388225,"z":-0.00011947786021405673,"y":-0.001077096057287088},"angle":{"x":-2.5675308116882608e-5,"z":3.2837603018841686e-5,"y":-6.9094844818745e-5}},{"degrees_of_freedom":[2442,2443,2444,2445,2446,2447],"id":"n407","parent":"11","position":{"x":5,"z":20,"y":22.857142857142858},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-0.00033026771627675473,"z":-0.0001301913747179977,"y":-0.0010912999326878237},"angle":{"x":-8.590015251733477e-6,"z":1.6597347243781208e-5,"y":-2.7592814831659004e-5}},{"degrees_of_freedom":[2448,2449,2450,2451,2452,2453],"id":"n408","parent":"11","position":{"x":5,"z":17.979694910895578,"y":22.020305089104422},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-0.0001826647365552531,"z":-0.00013196840180002808,"y":-0.0010952277842540391},"angle":{"x":5.017461634894218e-6,"z":6.326215131873737e-5,"y":0.00010882753342063112}},{"degrees_of_freedom":[2454,2455,2456,2457,2458,2459],"id":"n409","parent":"11","position":{"x":5,"z":17.142857142857142,"y":20},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-0.0001264710417976154,"z":-0.0001255353418934173,"y":-0.0010714048634405879},"angle":{"x":-7.183858472032706e-6,"z":1.4271309186916212e-5,"y":-2.53072924376928e-5}},{"degrees_of_freedom":[2460,2461,2462,2463,2464,2465],"id":"n410","parent":"11","position":{"x":5,"z":17.979694910895578,"y":17.979694910895578},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-0.00011263354873754542,"z":-0.0001055407324558563,"y":-0.0010358261366079995},"angle":{"x":-2.169691273569597e-5,"z":3.803423851888917e-5,"y":-8.808684964047605e-5}},{"degrees_of_freedom":[2466,2467,2468,2469,2470,2471],"id":"n411","parent":"11","position":{"x":5,"z":20,"y":17.142857142857142},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-6.72876424003738e-5,"z":-9.686993479145808e-5,"y":-0.0010221685764907997},"angle":{"x":-7.012670325463981e-6,"z":1.594476322554344e-5,"y":-2.11761012519302e-5}},{"degrees_of_freedom":[2472,2473,2474,2475,2476,2477],"id":"n412","parent":"11","position":{"x":5,"z":22.020305089104422,"y":17.979694910895578},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-0.00020416759920864968,"z":-9.389061688302048e-5,"y":-0.001020216627728265},"angle":{"x":9.559609075422216e-6,"z":5.6620508637561096e-5,"y":8.944004152711306e-5}},{"degrees_of_freedom":[2478,2479,2480,2481,2482,2483],"id":"n413","parent":"11","position":{"x":-5,"z":20,"y":25},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":-400},"displacement":{"x":-0.0003497837068908568,"z":-0.000623400701963219,"y":-0.001463180387452922},"angle":{"x":-0.00010431590579517753,"z":7.831485517031691e-5,"y":-5.2676754178526984e-5}},{"degrees_of_freedom":[2484,2485,2486,2487,2488,2489],"id":"n414","parent":"11","position":{"x":0,"z":25,"y":25},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":-400},"displacement":{"x":-0.0004954333325767622,"z":-0.0004278902977995232,"y":-0.0012698082962803252},"angle":{"x":8.853501473734212e-5,"z":7.097765701926577e-5,"y":-6.978585520488575e-5}},{"degrees_of_freedom":[2490,2491,2492,2493,2494,2495],"id":"n415","parent":"11","position":{"x":2.857142857142857,"z":20,"y":25},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-0.00031186681706645204,"z":-0.00027955465281216213,"y":-0.0007523070312501279},"angle":{"x":3.168441226250307e-5,"z":5.8102924469283244e-5,"y":-4.5049970407013435e-5}},{"degrees_of_freedom":[2496,2497,2498,2499,2500,2501],"id":"n416","parent":"11","position":{"x":2.0203050891044216,"z":22.020305089104422,"y":25},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-0.00036476243659549937,"z":-0.0003011976382475774,"y":-0.0011483356500388508},"angle":{"x":-0.0006318299153885454,"z":0.0002926905198059493,"y":-6.105584706066387e-5}},{"degrees_of_freedom":[2502,2503,2504,2505,2506,2507],"id":"n417","parent":"11","position":{"x":3.140184917367551e-16,"z":22.857142857142858,"y":25},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-0.000412271932619201,"z":-0.0004036625533804349,"y":-0.0013123760000506664},"angle":{"x":9.019901363616192e-6,"z":6.61159870618384e-5,"y":-5.7003316328607103e-5}},{"degrees_of_freedom":[2508,2509,2510,2511,2512,2513],"id":"n418","parent":"11","position":{"x":-2.020305089104421,"z":22.020305089104422,"y":25},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-0.00037454645086453073,"z":-0.0005038665607427365,"y":-0.0014613199208119083},"angle":{"x":0.00029812512678719966,"z":0.00016832999168753365,"y":-5.6627246766028196e-5}},{"degrees_of_freedom":[2514,2515,2516,2517,2518,2519],"id":"n419","parent":"11","position":{"x":-2.857142857142857,"z":20,"y":25},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-0.000319729076425866,"z":-0.0005278734137225055,"y":-0.0018209018432152277},"angle":{"x":3.168421130623409e-5,"z":7.412889378824626e-5,"y":-4.982046724426034e-5}},{"degrees_of_freedom":[2520,2521,2522,2523,2524,2525],"id":"n420","parent":"11","position":{"x":-2.0203050891044216,"z":17.979694910895578,"y":25},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-0.00026782498083137993,"z":-0.0005031519424649127,"y":-0.0013332964539179506},"angle":{"x":-0.0005000029971942348,"z":0.0002621086811901412,"y":-5.4043655697795374e-5}},{"degrees_of_freedom":[2526,2527,2528,2529,2530,2531],"id":"n421","parent":"11","position":{"x":-3.140184917367551e-16,"z":17.142857142857142,"y":25},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-0.0002293421743956572,"z":-0.00040547590958232073,"y":-0.0011313234930172044},"angle":{"x":5.434817845063815e-5,"z":6.611609163772531e-5,"y":-5.589107864887286e-5}},{"degrees_of_freedom":[2532,2533,2534,2535,2536,2537],"id":"n422","parent":"11","position":{"x":2.020305089104421,"z":17.979694910895578,"y":25},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-0.00027100611878877316,"z":-0.0003074309876073307,"y":-0.0010203117882873112},"angle":{"x":0.0001580421603505264,"z":0.00010277724637671056,"y":-5.509986413206727e-5}},{"degrees_of_freedom":[2538,2539,2540,2541,2542,2543],"id":"n423","parent":"11","position":{"x":-5,"z":25,"y":20},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-0.00033557607237191334,"z":-0.00039267805065696976,"y":-0.0011940042781429484},"angle":{"x":-3.2921134511506485e-5,"z":1.9066764086325878e-5,"y":-0.0001306856267869075}},{"degrees_of_freedom":[2544,2545,2546,2547,2548,2549],"id":"n424","parent":"11","position":{"x":-5,"z":17.142857142857142,"y":20},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-0.00036680259454164877,"z":-0.0004252448153707279,"y":-0.0012232019015974524},"angle":{"x":-2.125260057015066e-5,"z":6.162428095025222e-5,"y":6.918304880980428e-5}},{"degrees_of_freedom":[2550,2551,2552,2553,2554,2555],"id":"n425","parent":"11","position":{"x":-5,"z":17.979694910895578,"y":22.020305089104422},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-0.0004547679597299915,"z":-0.00045141122237252955,"y":-0.0012180787313216066},"angle":{"x":-6.10170150855949e-6,"z":1.4574792667734764e-5,"y":-6.389201949073486e-5}},{"degrees_of_freedom":[2556,2557,2558,2559,2560,2561],"id":"n426","parent":"11","position":{"x":-5,"z":20,"y":22.857142857142858},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-0.0006671324648313395,"z":-0.0004559411311105063,"y":-0.0012695425993150824},"angle":{"x":2.5170365085887318e-5,"z":6.684296709564438e-5,"y":8.394572207043023e-5}},{"degrees_of_freedom":[2562,2563,2564,2565,2566,2567],"id":"n427","parent":"11","position":{"x":-5,"z":22.020305089104422,"y":22.020305089104422},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-0.00011557738219484335,"z":-0.00044737865830328977,"y":-0.001290974592201354},"angle":{"x":-4.912221241406665e-5,"z":0.00023252749176714226,"y":-0.00038468192443818176}},{"degrees_of_freedom":[2568,2569,2570,2571,2572,2573],"id":"n428","parent":"11","position":{"x":-5,"z":22.857142857142858,"y":20},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0.00011288329306265597,"z":-0.00039207861067276097,"y":-0.0012501338053167294},"angle":{"x":-2.02902759433715e-5,"z":6.162372604025261e-5,"y":9.870627565201302e-5}},{"degrees_of_freedom":[2574,2575,2576,2577,2578,2579],"id":"n429","parent":"11","position":{"x":-5,"z":22.020305089104422,"y":17.979694910895578},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0.00017614156591249985,"z":-0.0003686509680070006,"y":-0.0012471700500712674},"angle":{"x":-6.506781141774282e-6,"z":-0.00014232181209073344,"y":-0.00047813918876288383}},{"degrees_of_freedom":[2580,2581,2582,2583,2584,2585],"id":"n430","parent":"11","position":{"x":-5,"z":20,"y":17.142857142857142},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0.0003288610430575361,"z":-0.0003695323441146142,"y":-0.0012204291244903975},"angle":{"x":1.5979227560037976e-5,"z":5.640492359741944e-5,"y":8.394493010236467e-5}},{"degrees_of_freedom":[2586,2587,2588,2589,2590,2591],"id":"n431","parent":"11","position":{"x":-5,"z":17.979694910895578,"y":17.979694910895578},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-0.00016304715500747692,"z":-0.0003793662513321845,"y":-0.0012005700871571756},"angle":{"x":-3.044058709013337e-5,"z":0.0003616211103729778,"y":-0.0007793368836074831}},{"degrees_of_freedom":[2592,2593,2594,2595,2596,2597],"id":"n432","parent":"11","position":{"x":0,"z":25,"y":22.857142857142858},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-0.00036620632998999306,"z":0.0001265206631121388,"y":-0.0011459316972211892},"angle":{"x":0.000521926783143247,"z":3.555010257906492e-6,"y":0.00011902217072756837}},{"degrees_of_freedom":[2598,2599,2600,2601,2602,2603],"id":"n433","parent":"11","position":{"x":-2.020305089104421,"z":25,"y":22.020305089104422},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-0.00036028597279554747,"z":-6.978639171003413e-5,"y":-0.001148152153725814},"angle":{"x":4.2441847695042764e-5,"z":5.048377065946051e-6,"y":-7.958712388265778e-5}},{"degrees_of_freedom":[2604,2605,2606,2607,2608,2609],"id":"n434","parent":"11","position":{"x":-2.857142857142857,"z":25,"y":20},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-0.00033909202464327027,"z":-0.0002221333106789961,"y":-0.0011379045097616358},"angle":{"x":3.124719021070537e-5,"z":1.2171415139189463e-5,"y":-0.0001066132848479405}},{"degrees_of_freedom":[2610,2611,2612,2613,2614,2615],"id":"n435","parent":"11","position":{"x":-2.020305089104421,"z":25,"y":17.979694910895578},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-0.00031044447502595146,"z":-0.00019604416967892725,"y":-0.001106498519050945},"angle":{"x":-2.976706814850986e-5,"z":2.054630485846648e-5,"y":4.06882611763086e-5}},{"degrees_of_freedom":[2616,2617,2618,2619,2620,2621],"id":"n436","parent":"11","position":{"x":0,"z":25,"y":17.142857142857142},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-0.0002914500569274676,"z":-0.0002533366506432442,"y":-0.0010861205645262236},"angle":{"x":0.00010865195146078145,"z":4.680046936352767e-6,"y":-1.6646789548969762e-5}},{"degrees_of_freedom":[2622,2623,2624,2625,2626,2627],"id":"n437","parent":"11","position":{"x":2.020305089104421,"z":25,"y":17.979694910895578},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-0.00028940851900574664,"z":-0.000128780976399749,"y":-0.0010799253608424087},"angle":{"x":-0.00019180277103496009,"z":3.3142409335365802e-6,"y":-0.00014109923594295837}},{"degrees_of_freedom":[2628,2629,2630,2631,2632,2633],"id":"n438","parent":"11","position":{"x":2.857142857142857,"z":25,"y":20},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-0.00030927513062807327,"z":-0.00039820396073203827,"y":-0.001086362317263739},"angle":{"x":-0.00010442174108591179,"z":1.4143806416259603e-5,"y":6.985731008096139e-5}},{"degrees_of_freedom":[2634,2635,2636,2637,2638,2639],"id":"n439","parent":"11","position":{"x":2.020305089104421,"z":25,"y":22.020305089104422},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-0.0003489362259299155,"z":-0.0005507084888708797,"y":-0.0011193017058367784},"angle":{"x":-0.0002587251696874035,"z":2.9473423912563578e-5,"y":0.0004423787853560225}},{"degrees_of_freedom":[2640,2641,2642,2643,2644,2645],"id":"n440","parent":"11","position":{"x":15,"z":0,"y":-5},"restrained_degrees_of_freedom":[true,true,true,true,true,true],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0,"z":0,"y":0},"angle":{"x":0,"z":0,"y":0}},{"degrees_of_freedom":[2646,2647,2648,2649,2650,2651],"id":"n441","parent":"11","position":{"x":10,"z":-5,"y":-5},"restrained_degrees_of_freedom":[true,true,true,true,true,true],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0,"z":0,"y":0},"angle":{"x":0,"z":0,"y":0}},{"degrees_of_freedom":[2652,2653,2654,2655,2656,2657],"id":"n442","parent":"11","position":{"x":10,"z":5,"y":-5},"restrained_degrees_of_freedom":[true,true,true,true,true,true],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0,"z":0,"y":0},"angle":{"x":0,"z":0,"y":0}},{"degrees_of_freedom":[2658,2659,2660,2661,2662,2663],"id":"n443","parent":"11","position":{"x":12.857142857142858,"z":3.140184917367551e-16,"y":-5},"restrained_degrees_of_freedom":[true,true,true,true,true,true],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0,"z":0,"y":0},"angle":{"x":0,"z":0,"y":0}},{"degrees_of_freedom":[2664,2665,2666,2667,2668,2669],"id":"n444","parent":"11","position":{"x":12.020305089104422,"z":-2.020305089104421,"y":-5},"restrained_degrees_of_freedom":[true,true,true,true,true,true],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0,"z":0,"y":0},"angle":{"x":0,"z":0,"y":0}},{"degrees_of_freedom":[2670,2671,2672,2673,2674,2675],"id":"n445","parent":"11","position":{"x":10,"z":-2.857142857142857,"y":-5},"restrained_degrees_of_freedom":[true,true,true,true,true,true],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0,"z":0,"y":0},"angle":{"x":0,"z":0,"y":0}},{"degrees_of_freedom":[2676,2677,2678,2679,2680,2681],"id":"n446","parent":"11","position":{"x":7.979694910895579,"z":-2.0203050891044216,"y":-5},"restrained_degrees_of_freedom":[true,true,true,true,true,true],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0,"z":0,"y":0},"angle":{"x":0,"z":0,"y":0}},{"degrees_of_freedom":[2682,2683,2684,2685,2686,2687],"id":"n447","parent":"11","position":{"x":7.142857142857142,"z":-3.140184917367551e-16,"y":-5},"restrained_degrees_of_freedom":[true,true,true,true,true,true],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0,"z":0,"y":0},"angle":{"x":0,"z":0,"y":0}},{"degrees_of_freedom":[2688,2689,2690,2691,2692,2693],"id":"n448","parent":"11","position":{"x":7.979694910895578,"z":2.020305089104421,"y":-5},"restrained_degrees_of_freedom":[true,true,true,true,true,true],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0,"z":0,"y":0},"angle":{"x":0,"z":0,"y":0}},{"degrees_of_freedom":[2694,2695,2696,2697,2698,2699],"id":"n449","parent":"11","position":{"x":10,"z":2.857142857142857,"y":-5},"restrained_degrees_of_freedom":[true,true,true,true,true,true],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0,"z":0,"y":0},"angle":{"x":0,"z":0,"y":0}},{"degrees_of_freedom":[2700,2701,2702,2703,2704,2705],"id":"n450","parent":"11","position":{"x":12.020305089104422,"z":2.0203050891044216,"y":-5},"restrained_degrees_of_freedom":[true,true,true,true,true,true],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0,"z":0,"y":0},"angle":{"x":0,"z":0,"y":0}},{"degrees_of_freedom":[2706,2707,2708,2709,2710,2711],"id":"n451","parent":"11","position":{"x":15,"z":0,"y":5},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":-800},"displacement":{"x":8.023045088831206e-5,"z":2.4683501873996646e-6,"y":-0.0005750384903405889},"angle":{"x":9.214227789691894e-6,"z":1.1203282766811428e-5,"y":-9.825590445584195e-6}},{"degrees_of_freedom":[2712,2713,2714,2715,2716,2717],"id":"n452","parent":"11","position":{"x":15,"z":-5,"y":0},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":1.4952816973753956e-5,"z":-7.465131385273751e-5,"y":-0.00027699837698717003},"angle":{"x":1.1440678093664258e-6,"z":-1.0753846854607912e-5,"y":1.439821233741866e-5}},{"degrees_of_freedom":[2718,2719,2720,2721,2722,2723],"id":"n453","parent":"11","position":{"x":15,"z":5,"y":0},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":3.067487219703007e-5,"z":-1.6609143612060945e-6,"y":-0.0002829002256048493},"angle":{"x":1.9539265356353546e-6,"z":-2.784265844897221e-6,"y":-4.7994366069596385e-6}},{"degrees_of_freedom":[2724,2725,2726,2727,2728,2729],"id":"n454","parent":"11","position":{"x":15,"z":2.857142857142857,"y":-3.140184917367551e-16},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":3.906180455961341e-5,"z":1.3053655900853058e-5,"y":-0.0002858828700701656},"angle":{"x":-4.416890666229981e-7,"z":-1.4873232231485742e-5,"y":-5.634787294481237e-6}},{"degrees_of_freedom":[2730,2731,2732,2733,2734,2735],"id":"n455","parent":"11","position":{"x":15,"z":2.0203050891044216,"y":2.020305089104421},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":8.038200588443651e-5,"z":-7.770207011137102e-6,"y":-0.00037466604939587504},"angle":{"x":-4.032075549810101e-5,"z":-5.831605015405997e-5,"y":0.00011221818780100058}},{"degrees_of_freedom":[2736,2737,2738,2739,2740,2741],"id":"n456","parent":"11","position":{"x":15,"z":3.140184917367551e-16,"y":2.857142857142857},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0.0001936656148905043,"z":-2.2941484866447813e-5,"y":-0.000388898265657991},"angle":{"x":3.1531109937740546e-6,"z":-1.8640642430436435e-5,"y":-5.022837294090711e-6}},{"degrees_of_freedom":[2742,2743,2744,2745,2746,2747],"id":"n457","parent":"11","position":{"x":15,"z":-2.020305089104421,"y":2.0203050891044216},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":9.391332610234553e-5,"z":-4.309972164429166e-5,"y":-0.0003688693654719702},"angle":{"x":5.293325874732823e-5,"z":-5.747930693411341e-5,"y":-0.00010985315621446914}},{"degrees_of_freedom":[2748,2749,2750,2751,2752,2753],"id":"n458","parent":"11","position":{"x":15,"z":-2.857142857142857,"y":3.140184917367551e-16},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":4.699101175681189e-5,"z":-7.528166993736731e-5,"y":-0.00028270772408595763},"angle":{"x":-8.079802943763126e-7,"z":-1.9404936770804762e-5,"y":2.859586241952941e-6}},{"degrees_of_freedom":[2754,2755,2756,2757,2758,2759],"id":"n459","parent":"11","position":{"x":15,"z":-2.0203050891044216,"y":-2.020305089104421},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":4.854714898354407e-6,"z":-4.0925077262856756e-5,"y":-0.0001961366219554462},"angle":{"x":-5.314548661712781e-5,"z":-6.638962965475668e-5,"y":0.00014077452158767185}},{"degrees_of_freedom":[2760,2761,2762,2763,2764,2765],"id":"n460","parent":"11","position":{"x":15,"z":-3.140184917367551e-16,"y":-2.857142857142857},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-8.334316000790535e-5,"z":-2.0689945409639773e-5,"y":-0.00018099083459659752},"angle":{"x":-9.180104873089828e-8,"z":-1.5637427875342683e-5,"y":2.2475960836364916e-6}},{"degrees_of_freedom":[2766,2767,2768,2769,2770,2771],"id":"n461","parent":"11","position":{"x":15,"z":2.020305089104421,"y":-2.0203050891044216},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":7.172411855025744e-6,"z":-5.57715562892062e-6,"y":-0.0001984725849446615},"angle":{"x":3.811022715138987e-5,"z":-4.911011229732232e-5,"y":-9.744944690497316e-5}},{"degrees_of_freedom":[2772,2773,2774,2775,2776,2777],"id":"n462","parent":"11","position":{"x":10,"z":-5,"y":5},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":-400},"displacement":{"x":0.00010335797228078208,"z":-2.8481282483026242e-5,"y":-0.0005797470292849315},"angle":{"x":2.5017120166217947e-6,"z":-4.3534602604212434e-5,"y":-1.4528909238236059e-5}},{"degrees_of_freedom":[2778,2779,2780,2781,2782,2783],"id":"n463","parent":"11","position":{"x":10,"z":5,"y":5},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":-800},"displacement":{"x":3.913135779894378e-5,"z":-1.6705402197330846e-5,"y":-0.0005684663940655832},"angle":{"x":-1.0767627589542332e-6,"z":-5.218041069075428e-6,"y":-1.1517356759724203e-5}},{"degrees_of_freedom":[2784,2785,2786,2787,2788,2789],"id":"n464","parent":"11","position":{"x":12.857142857142858,"z":-3.140184917367551e-16,"y":5},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":7.085192096719362e-5,"z":-8.667648204470002e-6,"y":-0.0008600756553001551},"angle":{"x":-4.640525486975771e-6,"z":-3.394488129773467e-5,"y":-9.689781764439676e-6}},{"degrees_of_freedom":[2790,2791,2792,2793,2794,2795],"id":"n465","parent":"11","position":{"x":12.020305089104422,"z":2.020305089104421,"y":5},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":6.085290389875364e-5,"z":-1.2767300773251862e-5,"y":-0.0006626184963035694},"angle":{"x":0.0004953770945078302,"z":-0.0002076361539277606,"y":-7.722049593028299e-6}},{"degrees_of_freedom":[2796,2797,2798,2799,2800,2801],"id":"n466","parent":"11","position":{"x":10,"z":2.857142857142857,"y":5},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":5.0782790659548436e-5,"z":-2.578919348401561e-5,"y":-0.0005922150956360337},"angle":{"x":1.0452470022375097e-6,"z":-2.770685566592221e-5,"y":-9.139678210702395e-6}},{"degrees_of_freedom":[2802,2803,2804,2805,2806,2807],"id":"n467","parent":"11","position":{"x":7.979694910895579,"z":2.0203050891044216,"y":5},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":5.931433954698719e-5,"z":-4.20970483923524e-5,"y":-0.0005267042547306298},"angle":{"x":-0.00018093969965226583,"z":-9.145096689966282e-5,"y":-1.1845036237859016e-5}},{"degrees_of_freedom":[2808,2809,2810,2811,2812,2813],"id":"n468","parent":"11","position":{"x":7.142857142857142,"z":3.140184917367551e-16,"y":5},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":6.742595127983484e-5,"z":-4.94095495796782e-5,"y":-0.00036967229092976566},"angle":{"x":1.8286690196516901e-6,"z":-2.6834799372240646e-5,"y":-1.0153437272888792e-5}},{"degrees_of_freedom":[2814,2815,2816,2817,2818,2819],"id":"n469","parent":"11","position":{"x":7.979694910895578,"z":-2.020305089104421,"y":5},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":8.077236214009273e-5,"z":-4.6211220291143707e-5,"y":-0.0005193237124709208},"angle":{"x":0.00040400184123519925,"z":-0.00016902668439064804,"y":-1.241897644334905e-5}},{"degrees_of_freedom":[2820,2821,2822,2823,2824,2825],"id":"n470","parent":"11","position":{"x":10,"z":-2.857142857142857,"y":5},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":8.999550302800942e-5,"z":-2.7719081604757e-5,"y":-0.0005856240408087776},"angle":{"x":1.2616045867371326e-6,"z":-3.209592613075894e-5,"y":-9.312480893422763e-6}},{"degrees_of_freedom":[2826,2827,2828,2829,2830,2831],"id":"n471","parent":"11","position":{"x":12.020305089104422,"z":-2.0203050891044216,"y":5},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":8.238880489088021e-5,"z":-1.2496982328575339e-5,"y":-0.0006695913666708583},"angle":{"x":-0.00033114315493807094,"z":-0.00015247262740321132,"y":-9.239578679958806e-6}},{"degrees_of_freedom":[2832,2833,2834,2835,2836,2837],"id":"n472","parent":"11","position":{"x":10,"z":-5,"y":-2.857142857142857},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":3.0003338941236555e-5,"z":-0.0001370529276677009,"y":-0.00019739253346328975},"angle":{"x":8.127148929141067e-5,"z":3.9057024775458475e-5,"y":-3.417397755768388e-5}},{"degrees_of_freedom":[2838,2839,2840,2841,2842,2843],"id":"n473","parent":"11","position":{"x":12.020305089104422,"z":-5,"y":-2.020305089104421},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":2.6095664959042863e-5,"z":-1.8338759458385758e-11,"y":-0.00015557435430648724},"angle":{"x":-6.395801145306735e-5,"z":-1.305650669836034e-5,"y":-9.43299977840382e-5}},{"degrees_of_freedom":[2844,2845,2846,2847,2848,2849],"id":"n474","parent":"11","position":{"x":12.857142857142858,"z":-5,"y":0},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":2.432432779934872e-5,"z":-5.0275802541708696e-5,"y":-0.00020685851055503985},"angle":{"x":-7.2854762073513515e-6,"z":4.279457577995127e-6,"y":4.248958857511232e-5}},{"degrees_of_freedom":[2850,2851,2852,2853,2854,2855],"id":"n475","parent":"11","position":{"x":12.020305089104422,"z":-5,"y":2.020305089104421},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":7.665769737692256e-6,"z":-2.9437785814798312e-5,"y":-0.0002666598063638321},"angle":{"x":5.602538593394083e-6,"z":2.3769368728668067e-5,"y":1.1375189830116897e-5}},{"degrees_of_freedom":[2856,2857,2858,2859,2860,2861],"id":"n476","parent":"11","position":{"x":10,"z":-5,"y":2.857142857142857},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-6.831965665685557e-6,"z":-1.7680318589929238e-6,"y":-0.0003465677216490409},"angle":{"x":5.4484943825791185e-5,"z":3.743872439196792e-5,"y":-8.872578540314162e-6}},{"degrees_of_freedom":[2862,2863,2864,2865,2866,2867],"id":"n477","parent":"11","position":{"x":7.979694910895579,"z":-5,"y":2.020305089104421},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-3.7015671587357933e-6,"z":-6.528840650068556e-5,"y":-0.00038009766431700817},"angle":{"x":-1.2466186438798826e-5,"z":-2.049130803613391e-5,"y":-3.660464247125631e-5}},{"degrees_of_freedom":[2868,2869,2870,2871,2872,2873],"id":"n478","parent":"11","position":{"x":7.142857142857142,"z":-5,"y":0},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-1.1764691534752518e-5,"z":-7.073505522469966e-5,"y":-0.0003323622439537814},"angle":{"x":1.801591869522623e-5,"z":3.157352910385866e-6,"y":3.6985663238824164e-5}},{"degrees_of_freedom":[2874,2875,2876,2877,2878,2879],"id":"n479","parent":"11","position":{"x":7.979694910895579,"z":-5,"y":-2.020305089104421},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":9.041443943357858e-6,"z":-0.00013808371587421475,"y":-0.00027935984066142835},"angle":{"x":4.0495079981656414e-5,"z":2.677834630215975e-5,"y":-1.7283809621238643e-5}},{"degrees_of_freedom":[2880,2881,2882,2883,2884,2885],"id":"n480","parent":"11","position":{"x":10,"z":5,"y":2.857142857142857},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":2.35303089736292e-5,"z":-1.5008491691138772e-5,"y":-0.0004015065291200162},"angle":{"x":3.2901767160198867e-6,"z":-5.635965696523724e-7,"y":-5.235271264150474e-6}},{"degrees_of_freedom":[2886,2887,2888,2889,2890,2891],"id":"n481","parent":"11","position":{"x":7.979694910895579,"z":5,"y":2.020305089104421},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":6.142306105449629e-6,"z":-2.7868574783044313e-5,"y":-0.00036584327834758226},"angle":{"x":-3.5793935985328056e-6,"z":-3.584543716171198e-5,"y":-7.382668194552045e-6}},{"degrees_of_freedom":[2892,2893,2894,2895,2896,2897],"id":"n482","parent":"11","position":{"x":7.142857142857142,"z":5,"y":0},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-1.770427632349503e-5,"z":-2.6343923828186074e-5,"y":-0.0002792512259496838},"angle":{"x":-3.817864943084724e-6,"z":-3.4248912036548712e-6,"y":-7.1136382988411755e-6}},{"degrees_of_freedom":[2898,2899,2900,2901,2902,2903],"id":"n483","parent":"11","position":{"x":7.979694910895579,"z":5,"y":-2.020305089104421},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-6.378171533208345e-6,"z":-1.29133501100245e-5,"y":-0.00019682250973299212},"angle":{"x":-5.188764016601313e-6,"z":3.149001934681484e-5,"y":-2.959245397310158e-6}},{"degrees_of_freedom":[2904,2905,2906,2907,2908,2909],"id":"n484","parent":"11","position":{"x":10,"z":5,"y":-2.857142857142857},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":8.030671852993914e-6,"z":-3.1758810918026214e-6,"y":-0.0001642867595284442},"angle":{"x":-7.320571257417856e-6,"z":1.2992154350699266e-7,"y":-1.6431709969093227e-6}},{"degrees_of_freedom":[2910,2911,2912,2913,2914,2915],"id":"n485","parent":"11","position":{"x":12.020305089104422,"z":5,"y":-2.020305089104421},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":2.4750707690245843e-5,"z":-5.690673744360199e-6,"y":-0.00019842218995781106},"angle":{"x":-2.6575124789808596e-6,"z":-3.5250615647108965e-5,"y":-1.4471909699996617e-7}},{"degrees_of_freedom":[2916,2917,2918,2919,2920,2921],"id":"n486","parent":"11","position":{"x":12.857142857142858,"z":5,"y":0},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":4.8692552290075625e-5,"z":-1.0851261320647186e-5,"y":-0.00028589183250606016},"angle":{"x":-4.645665760518783e-7,"z":-3.908593110071477e-6,"y":4.993052593526772e-6}},{"degrees_of_freedom":[2922,2923,2924,2925,2926,2927],"id":"n487","parent":"11","position":{"x":12.020305089104422,"z":5,"y":2.020305089104421},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":3.819212785867943e-5,"z":-7.655097517756084e-6,"y":-0.0003696186066304923},"angle":{"x":3.4446937597210615e-6,"z":3.1883491259094635e-5,"y":-4.601201424604915e-6}},{"degrees_of_freedom":[2928,2929,2930,2931,2932,2933],"id":"n488","parent":"11","position":{"x":15,"z":10,"y":-5},"restrained_degrees_of_freedom":[true,true,true,true,true,true],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0,"z":0,"y":0},"angle":{"x":0,"z":0,"y":0}},{"degrees_of_freedom":[2934,2935,2936,2937,2938,2939],"id":"n489","parent":"11","position":{"x":10,"z":15,"y":-5},"restrained_degrees_of_freedom":[true,true,true,true,true,true],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0,"z":0,"y":0},"angle":{"x":0,"z":0,"y":0}},{"degrees_of_freedom":[2940,2941,2942,2943,2944,2945],"id":"n490","parent":"11","position":{"x":12.857142857142858,"z":10,"y":-5},"restrained_degrees_of_freedom":[true,true,true,true,true,true],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0,"z":0,"y":0},"angle":{"x":0,"z":0,"y":0}},{"degrees_of_freedom":[2946,2947,2948,2949,2950,2951],"id":"n491","parent":"11","position":{"x":12.020305089104422,"z":7.979694910895579,"y":-5},"restrained_degrees_of_freedom":[true,true,true,true,true,true],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0,"z":0,"y":0},"angle":{"x":0,"z":0,"y":0}},{"degrees_of_freedom":[2952,2953,2954,2955,2956,2957],"id":"n492","parent":"11","position":{"x":10,"z":7.142857142857142,"y":-5},"restrained_degrees_of_freedom":[true,true,true,true,true,true],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0,"z":0,"y":0},"angle":{"x":0,"z":0,"y":0}},{"degrees_of_freedom":[2958,2959,2960,2961,2962,2963],"id":"n493","parent":"11","position":{"x":7.979694910895579,"z":7.979694910895578,"y":-5},"restrained_degrees_of_freedom":[true,true,true,true,true,true],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0,"z":0,"y":0},"angle":{"x":0,"z":0,"y":0}},{"degrees_of_freedom":[2964,2965,2966,2967,2968,2969],"id":"n494","parent":"11","position":{"x":7.142857142857142,"z":10,"y":-5},"restrained_degrees_of_freedom":[true,true,true,true,true,true],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0,"z":0,"y":0},"angle":{"x":0,"z":0,"y":0}},{"degrees_of_freedom":[2970,2971,2972,2973,2974,2975],"id":"n495","parent":"11","position":{"x":7.979694910895578,"z":12.020305089104422,"y":-5},"restrained_degrees_of_freedom":[true,true,true,true,true,true],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0,"z":0,"y":0},"angle":{"x":0,"z":0,"y":0}},{"degrees_of_freedom":[2976,2977,2978,2979,2980,2981],"id":"n496","parent":"11","position":{"x":10,"z":12.857142857142858,"y":-5},"restrained_degrees_of_freedom":[true,true,true,true,true,true],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0,"z":0,"y":0},"angle":{"x":0,"z":0,"y":0}},{"degrees_of_freedom":[2982,2983,2984,2985,2986,2987],"id":"n497","parent":"11","position":{"x":12.020305089104422,"z":12.020305089104422,"y":-5},"restrained_degrees_of_freedom":[true,true,true,true,true,true],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0,"z":0,"y":0},"angle":{"x":0,"z":0,"y":0}},{"degrees_of_freedom":[2988,2989,2990,2991,2992,2993],"id":"n498","parent":"11","position":{"x":15,"z":10,"y":5},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":-800},"displacement":{"x":2.15194958973014e-5,"z":3.61489765057133e-5,"y":-0.000570792564375898},"angle":{"x":6.452558259810067e-6,"z":1.1229477667529925e-6,"y":-9.480206388504093e-6}},{"degrees_of_freedom":[2994,2995,2996,2997,2998,2999],"id":"n499","parent":"11","position":{"x":15,"z":15,"y":0},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":3.608769718710891e-6,"z":3.040467504112373e-5,"y":-0.00028171794845582913},"angle":{"x":5.584451716549285e-6,"z":1.1503605837801873e-7,"y":-4.091199524031667e-6}},{"degrees_of_freedom":[3000,3001,3002,3003,3004,3005],"id":"n500","parent":"11","position":{"x":15,"z":12.857142857142858,"y":-3.140184917367551e-16},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":6.985421604654118e-6,"z":4.865622060748671e-5,"y":-0.0002876477723499779},"angle":{"x":4.1743227913830835e-6,"z":-2.419255649868147e-6,"y":-1.1308604406243934e-6}},{"degrees_of_freedom":[3006,3007,3008,3009,3010,3011],"id":"n501","parent":"11","position":{"x":15,"z":12.020305089104422,"y":2.020305089104421},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":1.4512621058045451e-5,"z":3.3615531167446916e-5,"y":-0.00037154781247836514},"angle":{"x":-3.790421564462038e-5,"z":-1.246157976433943e-5,"y":2.4209327999378788e-5}},{"degrees_of_freedom":[3012,3013,3014,3015,3016,3017],"id":"n502","parent":"11","position":{"x":15,"z":10,"y":2.857142857142857},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":4.093800024795594e-5,"z":2.2716858266999497e-5,"y":-0.000388754668604636},"angle":{"x":2.1238472932316036e-6,"z":-3.17593531010634e-6,"y":-5.1182706963472236e-6}},{"degrees_of_freedom":[3018,3019,3020,3021,3022,3023],"id":"n503","parent":"11","position":{"x":15,"z":7.979694910895579,"y":2.0203050891044216},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":3.10669789867996e-5,"z":8.761819373505094e-6,"y":-0.0003674909909344134},"angle":{"x":4.550753464356381e-5,"z":-1.1395997039698729e-5,"y":-2.5304289275158183e-5}},{"degrees_of_freedom":[3024,3025,3026,3027,3028,3029],"id":"n504","parent":"11","position":{"x":15,"z":7.142857142857142,"y":3.140184917367551e-16},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":2.355968461602938e-5,"z":-2.0331326415405053e-5,"y":-0.00027936813146589833},"angle":{"x":3.663075569465201e-6,"z":-5.183953826274757e-6,"y":-4.670123170028615e-6}},{"degrees_of_freedom":[3030,3031,3032,3033,3034,3035],"id":"n505","parent":"11","position":{"x":15,"z":7.979694910895578,"y":-2.020305089104421},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":8.236118173848588e-6,"z":-4.49199863792608e-6,"y":-0.00019698588204721264},"angle":{"x":-3.746510100102342e-5,"z":-1.5190603001909429e-5,"y":2.6696806562679458e-5}},{"degrees_of_freedom":[3036,3037,3038,3039,3040,3041],"id":"n506","parent":"11","position":{"x":15,"z":10,"y":-2.857142857142857},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-2.0505074154552803e-5,"z":6.251535200814846e-6,"y":-0.00017865695145755754},"angle":{"x":1.1017216139906926e-6,"z":-4.427253753818484e-6,"y":-6.827287292663391e-7}},{"degrees_of_freedom":[3042,3043,3044,3045,3046,3047],"id":"n507","parent":"11","position":{"x":15,"z":12.020305089104422,"y":-2.0203050891044216},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":1.3509164270471806e-6,"z":1.9676709420840868e-5,"y":-0.00019853866128445176},"angle":{"x":4.463978101651495e-5,"z":-9.801330690761912e-6,"y":-1.894673020417339e-5}},{"degrees_of_freedom":[3048,3049,3050,3051,3052,3053],"id":"n508","parent":"11","position":{"x":10,"z":15,"y":5},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":-800},"displacement":{"x":-2.5413369561287007e-5,"z":9.336111215643926e-6,"y":-0.0005656667712033454},"angle":{"x":1.1139881192877551e-6,"z":3.921270712268578e-6,"y":-1.1386898035844068e-5}},{"degrees_of_freedom":[3054,3055,3056,3057,3058,3059],"id":"n509","parent":"11","position":{"x":12.857142857142858,"z":10,"y":5},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":1.2024338633798352e-5,"z":1.6786215542338425e-5,"y":-0.0005799716136975541},"angle":{"x":-9.808879211619994e-7,"z":-1.483963009467016e-6,"y":-1.0834225897313337e-5}},{"degrees_of_freedom":[3060,3061,3062,3063,3064,3065],"id":"n510","parent":"11","position":{"x":12.020305089104422,"z":12.020305089104422,"y":5},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-2.969947349778464e-6,"z":1.5160976632309079e-5,"y":-0.0005696884987779661},"angle":{"x":-9.583423262053136e-6,"z":1.6511322812939694e-6,"y":-9.377939194433632e-6}},{"degrees_of_freedom":[3066,3067,3068,3069,3070,3071],"id":"n511","parent":"11","position":{"x":10,"z":12.857142857142858,"y":5},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-1.4132950466524624e-5,"z":1.195445901634033e-7,"y":-0.0005657246179814575},"angle":{"x":-2.82132713007659e-6,"z":-6.459850707516667e-7,"y":-9.395375586012351e-6}},{"degrees_of_freedom":[3072,3073,3074,3075,3076,3077],"id":"n512","parent":"11","position":{"x":7.979694910895579,"z":12.020305089104422,"y":5},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-5.320102845041162e-6,"z":-1.664137626947229e-5,"y":-0.0005669029679243076},"angle":{"x":1.6123453402593073e-5,"z":6.076332240102335e-6,"y":-1.2211214165447358e-5}},{"degrees_of_freedom":[3078,3079,3080,3081,3082,3083],"id":"n513","parent":"11","position":{"x":7.142857142857142,"z":10,"y":5},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":3.6292600959537505e-6,"z":-2.455552717958552e-5,"y":-0.0005680823527260176},"angle":{"x":-7.412371862498919e-7,"z":-4.2028940290789726e-9,"y":-1.1932202507694613e-5}},{"degrees_of_freedom":[3084,3085,3086,3087,3088,3089],"id":"n514","parent":"11","position":{"x":7.979694910895578,"z":7.979694910895579,"y":5},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":1.58643512688467e-5,"z":-2.083219280198386e-5,"y":-0.0005704053864837979},"angle":{"x":2.3819562056557915e-5,"z":-8.602357305984853e-6,"y":-9.905971511832606e-6}},{"degrees_of_freedom":[3090,3091,3092,3093,3094,3095],"id":"n515","parent":"11","position":{"x":10,"z":7.142857142857142,"y":5},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":2.7284791879900033e-5,"z":-6.607554328548994e-6,"y":-0.0005705080280932488},"angle":{"x":1.2316347914079794e-6,"z":-7.953659196852725e-7,"y":-8.846492313190475e-6}},{"degrees_of_freedom":[3096,3097,3098,3099,3100,3101],"id":"n516","parent":"11","position":{"x":12.020305089104422,"z":7.979694910895578,"y":5},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":1.923699025901082e-5,"z":9.123173932116045e-6,"y":-0.0005738524803516316},"angle":{"x":-2.1367182385354656e-5,"z":-8.825319352012433e-6,"y":-1.1553547566237177e-5}},{"degrees_of_freedom":[3102,3103,3104,3105,3106,3107],"id":"n517","parent":"11","position":{"x":10,"z":15,"y":2.857142857142857},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-1.5195372733121924e-5,"z":6.992492772118253e-6,"y":-0.0003996695174489557},"angle":{"x":-5.170529042943432e-6,"z":3.819658574789103e-7,"y":-5.032684091444081e-6}},{"degrees_of_freedom":[3108,3109,3110,3111,3112,3113],"id":"n518","parent":"11","position":{"x":7.979694910895579,"z":15,"y":2.020305089104421},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-3.0093725629322425e-5,"z":1.5821989113143888e-6,"y":-0.0003673001921712466},"angle":{"x":-3.6335338366237677e-6,"z":-3.2445073752880246e-5,"y":-3.7569740925223947e-6}},{"degrees_of_freedom":[3114,3115,3116,3117,3118,3119],"id":"n519","parent":"11","position":{"x":7.142857142857142,"z":15,"y":0},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-4.2942968009800264e-5,"z":6.027964798038736e-6,"y":-0.00028343839485272653},"angle":{"x":-5.986995620761313e-7,"z":2.5647123413817645e-6,"y":4.0159017607905845e-6}},{"degrees_of_freedom":[3120,3121,3122,3123,3124,3125],"id":"n520","parent":"11","position":{"x":7.979694910895579,"z":15,"y":-2.020305089104421},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-2.1423798979111456e-5,"z":3.752413090312551e-6,"y":-0.00019729911233040207},"angle":{"x":9.85920085677695e-7,"z":3.4370707733801426e-5,"y":6.364318425571552e-7}},{"degrees_of_freedom":[3126,3127,3128,3129,3130,3131],"id":"n521","parent":"11","position":{"x":10,"z":15,"y":-2.857142857142857},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-5.3771234239734015e-6,"z":1.0517942357055155e-6,"y":-0.00016375171418051967},"angle":{"x":6.927439960482042e-6,"z":-1.6999638161502206e-7,"y":-1.3867391468225807e-6}},{"degrees_of_freedom":[3132,3133,3134,3135,3136,3137],"id":"n522","parent":"11","position":{"x":12.020305089104422,"z":15,"y":-2.020305089104421},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":9.222245494886251e-6,"z":9.945463068019458e-6,"y":-0.00019653086687446193},"angle":{"x":3.4460345080327695e-6,"z":-3.1957164208841944e-5,"y":-3.266672513617773e-6}},{"degrees_of_freedom":[3138,3139,3140,3141,3142,3143],"id":"n523","parent":"11","position":{"x":12.857142857142858,"z":15,"y":0},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":2.254666855385976e-5,"z":2.0070375541509232e-5,"y":-0.00027942587599829417},"angle":{"x":2.856080767298404e-6,"z":2.1690197158484657e-6,"y":-5.460265308977253e-6}},{"degrees_of_freedom":[3144,3145,3146,3147,3148,3149],"id":"n524","parent":"11","position":{"x":12.020305089104422,"z":15,"y":2.020305089104421},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":1.2914673668393546e-6,"z":2.1056575582383262e-5,"y":-0.00036495926889299526},"angle":{"x":3.6004639022932566e-6,"z":3.471819768652911e-5,"y":-8.026683557528605e-6}},{"degrees_of_freedom":[3150,3151,3152,3153,3154,3155],"id":"n525","parent":"11","position":{"x":15,"z":20,"y":-5},"restrained_degrees_of_freedom":[true,true,true,true,true,true],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0,"z":0,"y":0},"angle":{"x":0,"z":0,"y":0}},{"degrees_of_freedom":[3156,3157,3158,3159,3160,3161],"id":"n526","parent":"11","position":{"x":10,"z":25,"y":-5},"restrained_degrees_of_freedom":[true,true,true,true,true,true],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0,"z":0,"y":0},"angle":{"x":0,"z":0,"y":0}},{"degrees_of_freedom":[3162,3163,3164,3165,3166,3167],"id":"n527","parent":"11","position":{"x":12.857142857142858,"z":20,"y":-5},"restrained_degrees_of_freedom":[true,true,true,true,true,true],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0,"z":0,"y":0},"angle":{"x":0,"z":0,"y":0}},{"degrees_of_freedom":[3168,3169,3170,3171,3172,3173],"id":"n528","parent":"11","position":{"x":12.020305089104422,"z":17.979694910895578,"y":-5},"restrained_degrees_of_freedom":[true,true,true,true,true,true],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0,"z":0,"y":0},"angle":{"x":0,"z":0,"y":0}},{"degrees_of_freedom":[3174,3175,3176,3177,3178,3179],"id":"n529","parent":"11","position":{"x":10,"z":17.142857142857142,"y":-5},"restrained_degrees_of_freedom":[true,true,true,true,true,true],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0,"z":0,"y":0},"angle":{"x":0,"z":0,"y":0}},{"degrees_of_freedom":[3180,3181,3182,3183,3184,3185],"id":"n530","parent":"11","position":{"x":7.979694910895579,"z":17.979694910895578,"y":-5},"restrained_degrees_of_freedom":[true,true,true,true,true,true],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0,"z":0,"y":0},"angle":{"x":0,"z":0,"y":0}},{"degrees_of_freedom":[3186,3187,3188,3189,3190,3191],"id":"n531","parent":"11","position":{"x":7.142857142857142,"z":20,"y":-5},"restrained_degrees_of_freedom":[true,true,true,true,true,true],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0,"z":0,"y":0},"angle":{"x":0,"z":0,"y":0}},{"degrees_of_freedom":[3192,3193,3194,3195,3196,3197],"id":"n532","parent":"11","position":{"x":7.979694910895578,"z":22.020305089104422,"y":-5},"restrained_degrees_of_freedom":[true,true,true,true,true,true],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0,"z":0,"y":0},"angle":{"x":0,"z":0,"y":0}},{"degrees_of_freedom":[3198,3199,3200,3201,3202,3203],"id":"n533","parent":"11","position":{"x":10,"z":22.857142857142858,"y":-5},"restrained_degrees_of_freedom":[true,true,true,true,true,true],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0,"z":0,"y":0},"angle":{"x":0,"z":0,"y":0}},{"degrees_of_freedom":[3204,3205,3206,3207,3208,3209],"id":"n534","parent":"11","position":{"x":12.020305089104422,"z":22.020305089104422,"y":-5},"restrained_degrees_of_freedom":[true,true,true,true,true,true],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0,"z":0,"y":0},"angle":{"x":0,"z":0,"y":0}},{"degrees_of_freedom":[3210,3211,3212,3213,3214,3215],"id":"n535","parent":"11","position":{"x":15,"z":20,"y":5},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":-800},"displacement":{"x":-4.708915149258359e-5,"z":6.785723640022371e-5,"y":-0.0005833161908804671},"angle":{"x":5.141042481372717e-6,"z":-5.008312996641988e-6,"y":-9.231873685147082e-6}},{"degrees_of_freedom":[3216,3217,3218,3219,3220,3221],"id":"n536","parent":"11","position":{"x":15,"z":25,"y":0},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-3.152651085431032e-6,"z":0.00010310456399835923,"y":-0.0002912489147305187},"angle":{"x":5.774064182489943e-6,"z":7.882482849515374e-6,"y":1.007346448143532e-5}},{"degrees_of_freedom":[3222,3223,3224,3225,3226,3227],"id":"n537","parent":"11","position":{"x":15,"z":22.857142857142858,"y":-3.140184917367551e-16},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-2.5038918665121486e-5,"z":0.00010337944730198492,"y":-0.0002993725213370609},"angle":{"x":8.093391914848736e-6,"z":1.1781914152291787e-5,"y":3.2349436095007924e-6}},{"degrees_of_freedom":[3228,3229,3230,3231,3232,3233],"id":"n538","parent":"11","position":{"x":15,"z":22.020305089104422,"y":2.020305089104421},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-5.42878250141037e-5,"z":8.427077283165074e-5,"y":-0.0003825107651393795},"angle":{"x":-4.565391865622523e-5,"z":3.4484727475786923e-5,"y":-6.580087946131026e-5}},{"degrees_of_freedom":[3234,3235,3236,3237,3238,3239],"id":"n539","parent":"11","position":{"x":15,"z":20,"y":2.857142857142857},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-0.00011191029601056807,"z":6.740104275818083e-5,"y":-0.00039548071521530183},"angle":{"x":3.643900104904175e-6,"z":1.1785641903135466e-5,"y":-6.420654535910821e-6}},{"degrees_of_freedom":[3240,3241,3242,3243,3244,3245],"id":"n540","parent":"11","position":{"x":15,"z":17.979694910895578,"y":2.0203050891044216},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-3.483972618382964e-5,"z":4.8818747864037346e-5,"y":-0.00037377335284498927},"angle":{"x":4.8292072487753814e-5,"z":3.168636077313022e-5,"y":5.468956890718897e-5}},{"degrees_of_freedom":[3246,3247,3248,3249,3250,3251],"id":"n541","parent":"11","position":{"x":15,"z":17.142857142857142,"y":3.140184917367551e-16},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-8.296859565556231e-6,"z":1.4393407716734524e-5,"y":-0.00027966252710780697},"angle":{"x":7.882913348348152e-6,"z":7.430254759319344e-6,"y":-9.094651693525199e-6}},{"degrees_of_freedom":[3252,3253,3254,3255,3256,3257],"id":"n542","parent":"11","position":{"x":15,"z":17.979694910895578,"y":-2.020305089104421},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":3.0245084390777274e-6,"z":2.0298056291555565e-5,"y":-0.00019790381459708836},"angle":{"x":-3.098780016568209e-5,"z":2.5243368901869764e-5,"y":-5.4655342618191696e-5}},{"degrees_of_freedom":[3258,3259,3260,3261,3262,3263],"id":"n543","parent":"11","position":{"x":15,"z":20,"y":-2.857142857142857},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":4.334710229078927e-5,"z":3.23396002781246e-5,"y":-0.00018445672823985272},"angle":{"x":4.702433245539674e-6,"z":7.426471513386819e-6,"y":5.609235299886852e-7}},{"degrees_of_freedom":[3264,3265,3266,3267,3268,3269],"id":"n544","parent":"11","position":{"x":15,"z":22.020305089104422,"y":-2.0203050891044216},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-1.2042566348285031e-6,"z":5.583904232552922e-5,"y":-0.00020452545867302832},"angle":{"x":6.164644672689748e-5,"z":3.856745970428253e-5,"y":8.381848226626973e-5}},{"degrees_of_freedom":[3270,3271,3272,3273,3274,3275],"id":"n545","parent":"11","position":{"x":10,"z":25,"y":5},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":-400},"displacement":{"x":-8.94734391743743e-5,"z":2.0237728507733044e-5,"y":-0.0005728474530512086},"angle":{"x":-7.669631489471777e-6,"z":3.982332932787989e-5,"y":-1.4000817354418014e-5}},{"degrees_of_freedom":[3276,3277,3278,3279,3280,3281],"id":"n546","parent":"11","position":{"x":12.857142857142858,"z":20,"y":5},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-5.2637953470495785e-5,"z":4.207167407266307e-5,"y":-0.0003880555327787635},"angle":{"x":-6.6679038953875815e-6,"z":2.796990065962462e-5,"y":-1.1806697837260342e-5}},{"degrees_of_freedom":[3282,3283,3284,3285,3286,3287],"id":"n547","parent":"11","position":{"x":12.020305089104422,"z":22.020305089104422,"y":5},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-6.694445883454402e-5,"z":3.7717696453805425e-5,"y":-0.0005403915982376212},"angle":{"x":-0.0003674947907365894,"z":0.00015868058477893973,"y":-1.2745209597350964e-5}},{"degrees_of_freedom":[3288,3289,3290,3291,3292,3293],"id":"n548","parent":"11","position":{"x":10,"z":22.857142857142858,"y":5},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-7.652238174837184e-5,"z":1.9609137362931967e-5,"y":-0.0006133983069286636},"angle":{"x":1.9911086634161944e-5,"z":2.485121149460081e-5,"y":-8.659790456854178e-6}},{"degrees_of_freedom":[3294,3295,3296,3297,3298,3299],"id":"n549","parent":"11","position":{"x":7.979694910895579,"z":22.020305089104422,"y":5},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-6.979086044227369e-5,"z":5.162205821808963e-6,"y":-0.0006573217546461948},"angle":{"x":0.0001689229931098331,"z":7.65226533861185e-5,"y":-8.708543588441118e-6}},{"degrees_of_freedom":[3300,3301,3302,3303,3304,3305],"id":"n550","parent":"11","position":{"x":7.142857142857142,"z":20,"y":5},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-5.9148379666333274e-5,"z":8.582731895021854e-7,"y":-0.0007411505966101698},"angle":{"x":2.9725550067093073e-6,"z":1.5723350122926713e-5,"y":-1.1082329154722248e-5}},{"degrees_of_freedom":[3306,3307,3308,3309,3310,3311],"id":"n551","parent":"11","position":{"x":7.979694910895578,"z":17.979694910895578,"y":5},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-4.7806728237027724e-5,"z":5.191308046422928e-6,"y":-0.0006485162489495868},"angle":{"x":-0.00031355522245799325,"z":0.00012610579115315403,"y":-7.514859275923099e-6}},{"degrees_of_freedom":[3312,3313,3314,3315,3316,3317],"id":"n552","parent":"11","position":{"x":10,"z":17.142857142857142,"y":5},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-3.7935979924599386e-5,"z":1.7065774158067262e-5,"y":-0.0006147749988312224},"angle":{"x":-1.4727592186907277e-5,"z":1.8842242180109703e-5,"y":-8.022942356937774e-6}},{"degrees_of_freedom":[3318,3319,3320,3321,3322,3323],"id":"n553","parent":"11","position":{"x":12.020305089104422,"z":17.979694910895578,"y":5},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-4.1471112202169766e-5,"z":3.5239369907087436e-5,"y":-0.0005553754368855145},"angle":{"x":0.0002686645091839521,"z":0.00012217547993013242,"y":-1.2416473716050825e-5}},{"degrees_of_freedom":[3324,3325,3326,3327,3328,3329],"id":"n554","parent":"11","position":{"x":10,"z":25,"y":2.857142857142857},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":1.1164039638887296e-5,"z":-3.4546179097356765e-6,"y":-0.0003446680794591971},"angle":{"x":-6.15599200222012e-5,"z":-3.8466128329627816e-5,"y":-1.1540677701904341e-5}},{"degrees_of_freedom":[3330,3331,3332,3333,3334,3335],"id":"n555","parent":"11","position":{"x":7.979694910895579,"z":25,"y":2.020305089104421},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-4.14849154666071e-6,"z":2.4745368853581194e-5,"y":-0.00026352344762267454},"angle":{"x":-4.975470885143695e-6,"z":-2.435182369028264e-5,"y":1.1897381156640619e-5}},{"degrees_of_freedom":[3336,3337,3338,3339,3340,3341],"id":"n556","parent":"11","position":{"x":7.142857142857142,"z":25,"y":0},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-2.3491192699546965e-5,"z":4.4753507064878004e-5,"y":-0.00020371042112465518},"angle":{"x":6.124160619221104e-6,"z":-5.839087042415999e-6,"y":3.869424152170395e-5}},{"degrees_of_freedom":[3342,3343,3344,3345,3346,3347],"id":"n557","parent":"11","position":{"x":7.979694910895579,"z":25,"y":-2.020305089104421},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-2.8113012081696405e-5,"z":2.5619957667808566e-11,"y":-0.00015411173139906446},"angle":{"x":5.693284045843424e-5,"z":1.1971523046415296e-5,"y":-8.396874896333411e-5}},{"degrees_of_freedom":[3348,3349,3350,3351,3352,3353],"id":"n558","parent":"11","position":{"x":10,"z":25,"y":-2.857142857142857},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-3.550410835373771e-5,"z":0.00012199897755550863,"y":-0.0001980368262522724},"angle":{"x":-7.32179325857938e-5,"z":-4.040662878261127e-5,"y":-3.005854071198047e-5}},{"degrees_of_freedom":[3354,3355,3356,3357,3358,3359],"id":"n559","parent":"11","position":{"x":12.020305089104422,"z":25,"y":-2.020305089104421},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-1.6413547020582213e-5,"z":0.0001214548496776376,"y":-0.00028280705472706765},"angle":{"x":-2.2323004552336857e-5,"z":-2.7364325529739392e-5,"y":-8.977147098463546e-6}},{"degrees_of_freedom":[3360,3361,3362,3363,3364,3365],"id":"n560","parent":"11","position":{"x":12.857142857142858,"z":25,"y":0},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":8.051984086082982e-6,"z":8.386799727430935e-5,"y":-0.0003367383323044217},"angle":{"x":-1.2393697908789196e-5,"z":-5.772823435443907e-6,"y":1.499429649839814e-5}},{"degrees_of_freedom":[3366,3367,3368,3369,3370,3371],"id":"n561","parent":"11","position":{"x":12.020305089104422,"z":25,"y":2.020305089104421},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":6.09210652330102e-6,"z":7.137673977580794e-5,"y":-0.0003819837878023203},"angle":{"x":1.1056444571364418e-5,"z":1.7370499321555353e-5,"y":-4.16193603413964e-5}},{"degrees_of_freedom":[3372,3373,3374,3375,3376,3377],"id":"n562","parent":"11","position":{"x":12.857142857142858,"z":3.140184917367551e-16,"y":5},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":7.426826366281822e-5,"z":-7.21855237958464e-6,"y":-0.0008016595792046271},"angle":{"x":-9.417682890257723e-8,"z":-2.593416929139971e-5,"y":-1.2387770622337185e-5}},{"degrees_of_freedom":[3378,3379,3380,3381,3382,3383],"id":"n563","parent":"11","position":{"x":12.020305089104422,"z":-2.020305089104421,"y":5},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":8.641816429033099e-5,"z":-1.2514972155515491e-5,"y":-0.0006529923980384279},"angle":{"x":-0.0004477358936513636,"z":-0.00018454706970454546,"y":-6.898952575636185e-6}},{"degrees_of_freedom":[3384,3385,3386,3387,3388,3389],"id":"n564","parent":"11","position":{"x":7.979694910895579,"z":-2.0203050891044216,"y":5},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":8.168852929360208e-5,"z":-4.5775640203271894e-5,"y":-0.0005048117234115737},"angle":{"x":0.0003365336475021304,"z":-0.00015265233507450948,"y":-1.1470236129062242e-5}},{"degrees_of_freedom":[3390,3391,3392,3393,3394,3395],"id":"n565","parent":"11","position":{"x":7.142857142857142,"z":-3.140184917367551e-16,"y":5},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":6.843784448022896e-5,"z":-5.1628299311069725e-5,"y":-0.00032550707009109054},"angle":{"x":7.519800444089162e-6,"z":-3.289126406152608e-5,"y":-1.2670408604632796e-5}},{"degrees_of_freedom":[3396,3397,3398,3399,3400,3401],"id":"n566","parent":"11","position":{"x":7.979694910895578,"z":2.020305089104421,"y":5},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":5.373926160958906e-5,"z":-4.669332380357958e-5,"y":-0.0005221025274379835},"angle":{"x":-0.00044078688250330045,"z":-0.00018795448469741447,"y":-1.1945620360440594e-5}},{"degrees_of_freedom":[3402,3403,3404,3405,3406,3407],"id":"n567","parent":"11","position":{"x":12.020305089104422,"z":2.0203050891044216,"y":5},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":5.781590691221995e-5,"z":-9.932689872485829e-6,"y":-0.0006539362894660219},"angle":{"x":7.656287061650786e-5,"z":-5.268886411191988e-5,"y":-8.519483648203783e-6}},{"degrees_of_freedom":[3408,3409,3410,3411,3412,3413],"id":"n568","parent":"11","position":{"x":15,"z":0,"y":15},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":-800},"displacement":{"x":0.00017091811949380864,"z":5.516178750566903e-5,"y":-0.0009678931340729208},"angle":{"x":1.0186548633193767e-5,"z":5.280178587557459e-6,"y":-2.145179720664338e-5}},{"degrees_of_freedom":[3414,3415,3416,3417,3418,3419],"id":"n569","parent":"11","position":{"x":15,"z":-5,"y":10},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0.00019982438687279067,"z":-1.66420157473815e-5,"y":-0.000783387838046066},"angle":{"x":-2.019677812077863e-6,"z":-9.529736209198959e-6,"y":-1.7228031034404252e-5}},{"degrees_of_freedom":[3420,3421,3422,3423,3424,3425],"id":"n570","parent":"11","position":{"x":15,"z":5,"y":10},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":8.201500088176075e-5,"z":3.905898461278585e-5,"y":-0.0007765843518781197},"angle":{"x":3.720122326089462e-6,"z":-4.068690923021186e-6,"y":-9.515451624664266e-6}},{"degrees_of_freedom":[3426,3427,3428,3429,3430,3431],"id":"n571","parent":"11","position":{"x":15,"z":2.857142857142857,"y":10},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":9.314886864420822e-5,"z":4.637203268033187e-5,"y":-0.0007809225604438738},"angle":{"x":3.736874406116376e-6,"z":-1.8075682606415743e-5,"y":-7.841188943430397e-6}},{"degrees_of_freedom":[3432,3433,3434,3435,3436,3437],"id":"n572","parent":"11","position":{"x":15,"z":2.0203050891044216,"y":12.020305089104422},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0.00014374037873456067,"z":3.7907445643432395e-5,"y":-0.0008375326097868306},"angle":{"x":-2.4217221255838895e-5,"z":-6.64617310269411e-5,"y":0.00012454930058101887}},{"degrees_of_freedom":[3438,3439,3440,3441,3442,3443],"id":"n573","parent":"11","position":{"x":15,"z":3.140184917367551e-16,"y":12.857142857142858},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0.00027790935048753386,"z":2.7784028062473234e-5,"y":-0.0008438228909747146},"angle":{"x":4.282417000389482e-6,"z":-1.840653620794295e-5,"y":-1.5837406957653392e-5}},{"degrees_of_freedom":[3444,3445,3446,3447,3448,3449],"id":"n574","parent":"11","position":{"x":15,"z":-2.020305089104421,"y":12.020305089104422},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0.0002017179217882312,"z":1.1529759663792172e-5,"y":-0.0008293366144569847},"angle":{"x":3.9454302583859965e-5,"z":-6.552590902815507e-5,"y":-0.0001446450437499726}},{"degrees_of_freedom":[3450,3451,3452,3453,3454,3455],"id":"n575","parent":"11","position":{"x":15,"z":-2.857142857142857,"y":10},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0.00016517511959323496,"z":-1.6678228758297256e-5,"y":-0.000766954642846437},"angle":{"x":3.4198454260295522e-6,"z":-2.2105736723461942e-5,"y":-1.7367985797683076e-5}},{"degrees_of_freedom":[3456,3457,3458,3459,3460,3461],"id":"n576","parent":"11","position":{"x":15,"z":-2.0203050891044216,"y":7.979694910895579},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":9.95639408460452e-5,"z":-9.924928909320332e-7,"y":-0.0007101020068222646},"angle":{"x":-3.1636186741070856e-5,"z":-7.235171595341248e-5,"y":0.00012921534691953115}},{"degrees_of_freedom":[3462,3463,3464,3465,3466,3467],"id":"n577","parent":"11","position":{"x":15,"z":-3.140184917367551e-16,"y":7.142857142857142},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-4.680479408683178e-5,"z":1.0844104365052235e-5,"y":-0.0007023230405438619},"angle":{"x":3.2358838033472624e-6,"z":-2.177476931755194e-5,"y":-9.37179353093395e-6}},{"degrees_of_freedom":[3468,3469,3470,3471,3472,3473],"id":"n578","parent":"11","position":{"x":15,"z":2.020305089104421,"y":7.979694910895578},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":5.568096303028854e-5,"z":2.396878684179556e-5,"y":-0.0007179781851209504},"angle":{"x":3.3293097105345643e-5,"z":-6.152260883677905e-5,"y":-0.0001262617382213999}},{"degrees_of_freedom":[3474,3475,3476,3477,3478,3479],"id":"n579","parent":"11","position":{"x":10,"z":-5,"y":15},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":-400},"displacement":{"x":0.00024447420717906774,"z":-2.702812841149856e-5,"y":-0.0009945360318334422},"angle":{"x":-5.739405365243716e-6,"z":-2.4168820574161408e-5,"y":-3.5335712991909334e-5}},{"degrees_of_freedom":[3480,3481,3482,3483,3484,3485],"id":"n580","parent":"11","position":{"x":10,"z":5,"y":15},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":-800},"displacement":{"x":8.231889118939269e-5,"z":-1.9130357129103303e-5,"y":-0.0009576034344806075},"angle":{"x":-4.5302413402297643e-7,"z":-2.9732669163405634e-6,"y":-2.6989037850366503e-5}},{"degrees_of_freedom":[3486,3487,3488,3489,3490,3491],"id":"n581","parent":"11","position":{"x":12.857142857142858,"z":-3.140184917367551e-16,"y":15},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0.00016073359975310854,"z":2.107342266087423e-5,"y":-0.001110609649401939},"angle":{"x":-1.3819400483050901e-6,"z":-1.656358530836337e-5,"y":-2.5731632249778144e-5}},{"degrees_of_freedom":[3492,3493,3494,3495,3496,3497],"id":"n582","parent":"11","position":{"x":12.020305089104422,"z":2.020305089104421,"y":15},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0.0001331774065842983,"z":1.0331302596773017e-5,"y":-0.0010161469907033923},"angle":{"x":0.0002444972381843459,"z":-0.00010193137630164193,"y":-2.1333951550318324e-5}},{"degrees_of_freedom":[3498,3499,3500,3501,3502,3503],"id":"n583","parent":"11","position":{"x":10,"z":2.857142857142857,"y":15},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0.00011408501902665826,"z":-2.554050681441632e-5,"y":-0.000983274923490274},"angle":{"x":4.405393303963602e-7,"z":-1.2406292399543828e-5,"y":-2.0836270308826566e-5}},{"degrees_of_freedom":[3504,3505,3506,3507,3508,3509],"id":"n584","parent":"11","position":{"x":7.979694910895579,"z":2.0203050891044216,"y":15},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0.00013173086294535633,"z":-6.256544965107623e-5,"y":-0.0009537091181117702},"angle":{"x":-0.00011456482677710606,"z":-5.2743447324082404e-5,"y":-2.465436855070259e-5}},{"degrees_of_freedom":[3510,3511,3512,3513,3514,3515],"id":"n585","parent":"11","position":{"x":7.142857142857142,"z":3.140184917367551e-16,"y":15},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0.00015892196108542337,"z":-7.553210197794122e-5,"y":-0.0008854276709633762},"angle":{"x":1.0949081782106576e-6,"z":-1.141743984288463e-5,"y":-2.6347233430741662e-5}},{"degrees_of_freedom":[3516,3517,3518,3519,3520,3521],"id":"n586","parent":"11","position":{"x":7.979694910895578,"z":-2.020305089104421,"y":15},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0.00018979869998731838,"z":-6.596583041718999e-5,"y":-0.0009476312263258658},"angle":{"x":0.0002051449304343454,"z":-8.312589354991006e-5,"y":-2.4334306635520612e-5}},{"degrees_of_freedom":[3522,3523,3524,3525,3526,3527],"id":"n587","parent":"11","position":{"x":10,"z":-2.857142857142857,"y":15},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0.00020775097250163804,"z":-2.6398934179615368e-5,"y":-0.0009746379936299213},"angle":{"x":2.5823534990893125e-6,"z":-1.4384691644762384e-5,"y":-2.1311551559339617e-5}},{"degrees_of_freedom":[3528,3529,3530,3531,3532,3533],"id":"n588","parent":"11","position":{"x":12.020305089104422,"z":-2.0203050891044216,"y":15},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0.00019046502359589863,"z":1.0954723230834915e-5,"y":-0.0010157742182581096},"angle":{"x":-0.00021114668425141253,"z":-9.229023804419723e-5,"y":-2.3133861453009773e-5}},{"degrees_of_freedom":[3534,3535,3536,3537,3538,3539],"id":"n589","parent":"11","position":{"x":10,"z":-5,"y":7.142857142857142},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0.00020311660967047357,"z":-3.0717502053815504e-5,"y":-0.0007455314514731714},"angle":{"x":-6.427341383121176e-7,"z":2.509828827202386e-5,"y":-1.9591676133932174e-5}},{"degrees_of_freedom":[3540,3541,3542,3543,3544,3545],"id":"n590","parent":"11","position":{"x":12.020305089104422,"z":-5,"y":7.979694910895579},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0.00020070833717370472,"z":8.325800854048592e-6,"y":-0.0007253690734543904},"angle":{"x":-1.0436090908136584e-6,"z":-1.575264070083769e-5,"y":-1.9757729498501968e-5}},{"degrees_of_freedom":[3546,3547,3548,3549,3550,3551],"id":"n591","parent":"11","position":{"x":12.857142857142858,"z":-5,"y":10},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0.00020891584291997544,"z":2.2751391370243003e-5,"y":-0.0007559055634263631},"angle":{"x":-1.989362525491163e-5,"z":1.7259517467862756e-6,"y":-6.526566345782956e-5}},{"degrees_of_freedom":[3552,3553,3554,3555,3556,3557],"id":"n592","parent":"11","position":{"x":12.020305089104422,"z":-5,"y":12.020305089104422},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0.00019424496720512295,"z":-7.205657468949912e-5,"y":-0.0007887231324907274},"angle":{"x":-5.454228845570368e-5,"z":1.8238476841497444e-5,"y":1.8383610476618235e-5}},{"degrees_of_freedom":[3558,3559,3560,3561,3562,3563],"id":"n593","parent":"11","position":{"x":10,"z":-5,"y":12.857142857142858},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0.00018178647312571517,"z":-8.055911241786047e-5,"y":-0.000844470386713152},"angle":{"x":-4.628334315430637e-6,"z":2.5794091513916088e-5,"y":-2.2914208608479487e-6}},{"degrees_of_freedom":[3564,3565,3566,3567,3568,3569],"id":"n594","parent":"11","position":{"x":7.979694910895579,"z":-5,"y":12.020305089104422},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0.0001837804699981072,"z":-8.131532216350268e-5,"y":-0.0008688168508482439},"angle":{"x":2.498109511225621e-5,"z":-1.2311531059672623e-5,"y":9.973199048739428e-6}},{"degrees_of_freedom":[3570,3571,3572,3573,3574,3575],"id":"n595","parent":"11","position":{"x":7.142857142857142,"z":-5,"y":10},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0.00017979680717754488,"z":-0.00012343879613542074,"y":-0.0008373979039414395},"angle":{"x":-2.5933695231230757e-6,"z":2.3094123979005166e-6,"y":-5.659742646515982e-5}},{"degrees_of_freedom":[3576,3577,3578,3579,3580,3581],"id":"n596","parent":"11","position":{"x":7.979694910895579,"z":-5,"y":7.979694910895579},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0.00019367661542422595,"z":-7.0836531340539e-5,"y":-0.0008014416613315763},"angle":{"x":-2.1500235024502803e-5,"z":1.7998951176240147e-5,"y":-1.0952219907804192e-5}},{"degrees_of_freedom":[3582,3583,3584,3585,3586,3587],"id":"n597","parent":"11","position":{"x":10,"z":5,"y":12.857142857142858},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":6.97540782938346e-5,"z":-1.767756162668442e-5,"y":-0.0008491353234153903},"angle":{"x":4.653490809056696e-6,"z":-1.0197721536418888e-7,"y":-1.7261579062295607e-5}},{"degrees_of_freedom":[3588,3589,3590,3591,3592,3593],"id":"n598","parent":"11","position":{"x":7.979694910895579,"z":5,"y":12.020305089104422},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":5.418520944482578e-5,"z":-5.536921088214315e-5,"y":-0.0008257589917103045},"angle":{"x":-5.213503666370492e-6,"z":-2.4942328190982738e-5,"y":-1.9750511260242318e-5}},{"degrees_of_freedom":[3594,3595,3596,3597,3598,3599],"id":"n599","parent":"11","position":{"x":7.142857142857142,"z":5,"y":10},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":3.5586843452427796e-5,"z":-6.102719940360369e-5,"y":-0.0007656711948294632},"angle":{"x":-2.3813257623330326e-6,"z":-3.471434712463105e-6,"y":-1.230875925414771e-5}},{"degrees_of_freedom":[3600,3601,3602,3603,3604,3605],"id":"n600","parent":"11","position":{"x":7.979694910895579,"z":5,"y":7.979694910895579},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":4.293514044298007e-5,"z":-4.608431946275558e-5,"y":-0.0007080888344332693},"angle":{"x":-1.8175474787601668e-6,"z":2.3253676576406844e-5,"y":-1.3065568867263294e-5}},{"degrees_of_freedom":[3606,3607,3608,3609,3610,3611],"id":"n601","parent":"11","position":{"x":10,"z":5,"y":7.142857142857142},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":5.4652287772066984e-5,"z":-1.8134549785475337e-5,"y":-0.0006849202577480193},"angle":{"x":-3.0935920261252287e-6,"z":-4.11240271532019e-7,"y":-1.2561026584769448e-5}},{"degrees_of_freedom":[3612,3613,3614,3615,3616,3617],"id":"n602","parent":"11","position":{"x":12.020305089104422,"z":5,"y":7.979694910895579},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":6.879607041322757e-5,"z":4.637550184911173e-6,"y":-0.0007112111149093482},"angle":{"x":-2.109096660245509e-8,"z":-2.6840071261332993e-5,"y":-1.1264341890311966e-5}},{"degrees_of_freedom":[3618,3619,3620,3621,3622,3623],"id":"n603","parent":"11","position":{"x":12.857142857142858,"z":5,"y":10},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":8.897580353246833e-5,"z":1.4268392743572605e-5,"y":-0.0007721072706696569},"angle":{"x":1.939095319204391e-6,"z":-3.7910290051294583e-6,"y":-6.97481875951336e-6}},{"degrees_of_freedom":[3624,3625,3626,3627,3628,3629],"id":"n604","parent":"11","position":{"x":12.020305089104422,"z":5,"y":12.020305089104422},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":8.301434257525452e-5,"z":1.2225653045264924e-5,"y":-0.0008279673965275871},"angle":{"x":5.499858890099634e-6,"z":2.1339150202390385e-5,"y":-1.6014044616134246e-5}},{"degrees_of_freedom":[3630,3631,3632,3633,3634,3635],"id":"n605","parent":"11","position":{"x":12.020305089104422,"z":7.979694910895579,"y":5},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":2.5578685778414275e-5,"z":1.2065071229426639e-5,"y":-0.0005729161991790029},"angle":{"x":-2.4938118813308005e-5,"z":-9.914049067562114e-6,"y":-9.61195833145782e-6}},{"degrees_of_freedom":[3636,3637,3638,3639,3640,3641],"id":"n606","parent":"11","position":{"x":7.979694910895579,"z":7.979694910895578,"y":5},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":2.044766881963554e-5,"z":-2.2244740789709132e-5,"y":-0.0005689807631382985},"angle":{"x":3.087040022754311e-5,"z":-1.1359638923856006e-5,"y":-8.291528316846894e-6}},{"degrees_of_freedom":[3642,3643,3644,3645,3646,3647],"id":"n607","parent":"11","position":{"x":7.979694910895578,"z":12.020305089104422,"y":5},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-1.1628229769678852e-5,"z":-1.9414752774988558e-5,"y":-0.0005661363631568797},"angle":{"x":-3.8069163182669636e-6,"z":-1.112409140338417e-6,"y":-1.0071929534471181e-5}},{"degrees_of_freedom":[3648,3649,3650,3651,3652,3653],"id":"n608","parent":"11","position":{"x":15,"z":10,"y":15},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":-800},"displacement":{"x":2.6426765204745604e-5,"z":7.837008077579305e-5,"y":-0.0009632190786334003},"angle":{"x":5.530003140068097e-6,"z":4.385840157210569e-7,"y":-2.1818195400722282e-5}},{"degrees_of_freedom":[3654,3655,3656,3657,3658,3659],"id":"n609","parent":"11","position":{"x":15,"z":15,"y":10},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-2.4999655776040488e-5,"z":7.502546473085751e-5,"y":-0.0007729427162196642},"angle":{"x":4.525457750655463e-6,"z":-2.8836189506382734e-7,"y":-9.939167006291284e-6}},{"degrees_of_freedom":[3660,3661,3662,3663,3664,3665],"id":"n610","parent":"11","position":{"x":15,"z":12.857142857142858,"y":10},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-9.12293503509644e-6,"z":8.416995006905096e-5,"y":-0.000774803680379082},"angle":{"x":3.857926517870165e-6,"z":-3.7409116695892397e-7,"y":-1.0846944462490225e-5}},{"degrees_of_freedom":[3666,3667,3668,3669,3670,3671],"id":"n611","parent":"11","position":{"x":15,"z":12.020305089104422,"y":12.020305089104422},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":1.9526410679464498e-6,"z":7.453095678395899e-5,"y":-0.0008310196414244803},"angle":{"x":-2.567714534253176e-5,"z":-1.167079391472451e-5,"y":1.71149578219268e-5}},{"degrees_of_freedom":[3672,3673,3674,3675,3676,3677],"id":"n612","parent":"11","position":{"x":15,"z":10,"y":12.857142857142858},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":3.94395158823498e-5,"z":6.572699779297506e-5,"y":-0.0008409072679332685},"angle":{"x":2.0564151122026006e-6,"z":-1.567792233954788e-6,"y":-1.545068253761784e-5}},{"degrees_of_freedom":[3678,3679,3680,3681,3682,3683],"id":"n613","parent":"11","position":{"x":15,"z":7.979694910895579,"y":12.020305089104422},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":5.900876796731704e-5,"z":5.385591243970679e-5,"y":-0.0008271458739461374},"angle":{"x":3.3356754080044695e-5,"z":-7.372496037327261e-6,"y":-2.7878830641172655e-5}},{"degrees_of_freedom":[3684,3685,3686,3687,3688,3689],"id":"n614","parent":"11","position":{"x":15,"z":7.142857142857142,"y":10},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":6.266259303587101e-5,"z":3.0295856862426103e-5,"y":-0.0007652474229085228},"angle":{"x":4.053998023900473e-6,"z":-3.974563107427058e-6,"y":-1.4277972748194778e-5}},{"degrees_of_freedom":[3690,3691,3692,3693,3694,3695],"id":"n615","parent":"11","position":{"x":15,"z":7.979694910895578,"y":7.979694910895579},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":4.241972204078886e-5,"z":4.033287539163243e-5,"y":-0.0007083918746957847},"angle":{"x":-2.684453667483044e-5,"z":-1.5008933603553345e-5,"y":2.0921986687874395e-5}},{"degrees_of_freedom":[3696,3697,3698,3699,3700,3701],"id":"n616","parent":"11","position":{"x":15,"z":10,"y":7.142857142857142},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":4.297203333827636e-6,"z":4.903385730879738e-5,"y":-0.0006977468003199332},"angle":{"x":2.163464035260237e-6,"z":-2.7808440113729124e-6,"y":-9.674267407446329e-6}},{"degrees_of_freedom":[3702,3703,3704,3705,3706,3707],"id":"n617","parent":"11","position":{"x":15,"z":12.020305089104422,"y":7.979694910895578},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-2.044243513838086e-6,"z":6.064591505005215e-5,"y":-0.0007126261766928376},"angle":{"x":3.3993484208412696e-5,"z":-5.066618847337184e-6,"y":-2.0129423711874116e-5}},{"degrees_of_freedom":[3708,3709,3710,3711,3712,3713],"id":"n618","parent":"11","position":{"x":10,"z":15,"y":15},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":-800},"displacement":{"x":-6.20204061688515e-5,"z":-2.2700580614468657e-6,"y":-0.0009528604775244103},"angle":{"x":-8.294093000207425e-7,"z":2.7429456242146813e-6,"y":-2.665881779877385e-5}},{"degrees_of_freedom":[3714,3715,3716,3717,3718,3719],"id":"n619","parent":"11","position":{"x":12.857142857142858,"z":10,"y":15},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":1.6146323527200494e-5,"z":3.5711576131289476e-5,"y":-0.0009674343650589919},"angle":{"x":-4.818584891633877e-7,"z":-1.0085403932687289e-6,"y":-2.5357209913956478e-5}},{"degrees_of_freedom":[3720,3721,3722,3723,3724,3725],"id":"n620","parent":"11","position":{"x":12.020305089104422,"z":12.020305089104422,"y":15},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-1.54466506024842e-5,"z":2.6976490197988755e-5,"y":-0.0009602317986618644},"angle":{"x":-1.166969717076526e-5,"z":2.7023232553716862e-6,"y":-2.301193357037298e-5}},{"degrees_of_freedom":[3726,3727,3728,3729,3730,3731],"id":"n621","parent":"11","position":{"x":10,"z":12.857142857142858,"y":15},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-3.607322552035794e-5,"z":-8.795425604077395e-6,"y":-0.0009564763470693368},"angle":{"x":-3.939996275941526e-6,"z":-2.751763744038939e-7,"y":-2.026136098828836e-5}},{"degrees_of_freedom":[3732,3733,3734,3735,3736,3737],"id":"n622","parent":"11","position":{"x":7.979694910895579,"z":12.020305089104422,"y":15},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-1.8367924823639164e-5,"z":-4.464489686898849e-5,"y":-0.0009595493072308529},"angle":{"x":1.1732555202564423e-5,"z":5.4495986146597825e-6,"y":-2.370438214170449e-5}},{"degrees_of_freedom":[3738,3739,3740,3741,3742,3743],"id":"n623","parent":"11","position":{"x":7.142857142857142,"z":10,"y":15},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":6.537172221533086e-6,"z":-5.794483254598575e-5,"y":-0.0009667711636613451},"angle":{"x":-1.1079405457796066e-6,"z":9.707438562076594e-7,"y":-2.6645173953144315e-5}},{"degrees_of_freedom":[3744,3745,3746,3747,3748,3749],"id":"n624","parent":"11","position":{"x":7.979694910895578,"z":7.979694910895579,"y":15},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":3.613205364387823e-5,"z":-4.827921682455884e-5,"y":-0.0009637999485559923},"angle":{"x":1.4841871542849506e-5,"z":-4.440148916458645e-6,"y":-2.2955983346751106e-5}},{"degrees_of_freedom":[3750,3751,3752,3753,3754,3755],"id":"n625","parent":"11","position":{"x":10,"z":7.142857142857142,"y":15},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":5.5789703910760095e-5,"z":-1.2167989994528081e-5,"y":-0.0009613763831846027},"angle":{"x":2.0042341344210975e-6,"z":1.1506004962542456e-7,"y":-2.007238898472375e-5}},{"degrees_of_freedom":[3756,3757,3758,3759,3760,3761],"id":"n626","parent":"11","position":{"x":12.020305089104422,"z":7.979694910895578,"y":15},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":3.888703050765429e-5,"z":2.2819354112634235e-5,"y":-0.0009631839170555301},"angle":{"x":-7.655111280185455e-6,"z":-3.4791699767304753e-6,"y":-2.2893794315838374e-5}},{"degrees_of_freedom":[3762,3763,3764,3765,3766,3767],"id":"n627","parent":"11","position":{"x":10,"z":15,"y":12.857142857142858},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-5.173665870619403e-5,"z":3.1093235373761235e-6,"y":-0.000845089390140098},"angle":{"x":-3.0851058764777732e-6,"z":3.1825248013064676e-7,"y":-1.7257720688690526e-5}},{"degrees_of_freedom":[3768,3769,3770,3771,3772,3773],"id":"n628","parent":"11","position":{"x":7.979694910895579,"z":15,"y":12.020305089104422},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-6.498110902068216e-5,"z":-2.8134854791184445e-5,"y":-0.0008242396575261883},"angle":{"x":-9.291878623784822e-6,"z":-2.141418643486219e-5,"y":-1.8284403930067928e-5}},{"degrees_of_freedom":[3774,3775,3776,3777,3778,3779],"id":"n629","parent":"11","position":{"x":7.142857142857142,"z":15,"y":10},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-7.166195121694534e-5,"z":-2.4151586331416236e-5,"y":-0.0007684096507216585},"angle":{"x":-3.806163140308406e-6,"z":3.354483629916715e-6,"y":-4.123121208472454e-6}},{"degrees_of_freedom":[3780,3781,3782,3783,3784,3785],"id":"n630","parent":"11","position":{"x":7.979694910895579,"z":15,"y":7.979694910895579},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-5.217086307334257e-5,"z":-1.3267552968984843e-5,"y":-0.0007078506953451705},"angle":{"x":2.6008239195599106e-7,"z":2.6715451404764758e-5,"y":-1.3022307069462346e-5}},{"degrees_of_freedom":[3786,3787,3788,3789,3790,3791],"id":"n631","parent":"11","position":{"x":10,"z":15,"y":7.142857142857142},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-3.791816251356128e-5,"z":1.2891209911648518e-5,"y":-0.0006816335493373106},"angle":{"x":-1.1657365757544157e-6,"z":4.5628823643784305e-7,"y":-1.2481737881464581e-5}},{"degrees_of_freedom":[3792,3793,3794,3795,3796,3797],"id":"n632","parent":"11","position":{"x":12.020305089104422,"z":15,"y":7.979694910895579},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-2.6051665914291054e-5,"z":3.7098907534439176e-5,"y":-0.0007046437151410367},"angle":{"x":2.337852006462369e-6,"z":-2.322312134212702e-5,"y":-1.0980479143080868e-5}},{"degrees_of_freedom":[3798,3799,3800,3801,3802,3803],"id":"n633","parent":"11","position":{"x":12.857142857142858,"z":15,"y":10},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-1.8275496447824697e-5,"z":5.125685867906747e-5,"y":-0.0007619824577275698},"angle":{"x":6.592959042539491e-7,"z":3.1767346471116436e-6,"y":-1.5473633393864812e-5}},{"degrees_of_freedom":[3804,3805,3806,3807,3808,3809],"id":"n634","parent":"11","position":{"x":12.020305089104422,"z":15,"y":12.020305089104422},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-3.630265497634235e-5,"z":3.951696792738735e-5,"y":-0.0008215615417603932},"angle":{"x":1.3343264155828847e-6,"z":2.468510234418652e-5,"y":-1.7544063104421347e-5}},{"degrees_of_freedom":[3810,3811,3812,3813,3814,3815],"id":"n635","parent":"11","position":{"x":7.979694910895579,"z":17.979694910895578,"y":5},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-4.397755288386477e-5,"z":3.057063095805157e-6,"y":-0.0006480578497243389},"angle":{"x":1.698026933228292e-5,"z":9.158791258355244e-6,"y":-7.561896050845923e-6}},{"degrees_of_freedom":[3816,3817,3818,3819,3820,3821],"id":"n636","parent":"11","position":{"x":7.979694910895578,"z":22.020305089104422,"y":5},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-7.267440625164114e-5,"z":5.3393800356901436e-6,"y":-0.0006513157243420709},"angle":{"x":0.00036061669632564305,"z":0.0001431817801801003,"y":-6.702095186035972e-6}},{"degrees_of_freedom":[3822,3823,3824,3825,3826,3827],"id":"n637","parent":"11","position":{"x":15,"z":20,"y":15},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":-800},"displacement":{"x":-0.00012679332778139503,"z":0.00010001678425591454,"y":-0.000979812817382633},"angle":{"x":2.68967849119062e-6,"z":-3.083293340204095e-6,"y":-2.2090309434761736e-5}},{"degrees_of_freedom":[3828,3829,3830,3831,3832,3833],"id":"n638","parent":"11","position":{"x":15,"z":25,"y":10},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-0.0001577228850301068,"z":0.00013088299914250134,"y":-0.0008004844402462385},"angle":{"x":6.985149767578659e-6,"z":3.7145485533786703e-6,"y":-1.4397777297133867e-5}},{"degrees_of_freedom":[3834,3835,3836,3837,3838,3839],"id":"n639","parent":"11","position":{"x":15,"z":22.857142857142858,"y":10},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-0.00012786934285646744,"z":0.00013097695197008367,"y":-0.0007916401426774778},"angle":{"x":3.6840831926934964e-6,"z":1.5551960555060673e-5,"y":-1.533050613706244e-5}},{"degrees_of_freedom":[3840,3841,3842,3843,3844,3845],"id":"n640","parent":"11","position":{"x":15,"z":22.020305089104422,"y":12.020305089104422},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-0.0001506841461735991,"z":0.0001155396168303766,"y":-0.0008486144177653239},"angle":{"x":-3.160338187622725e-5,"z":3.898214265844349e-5,"y":-8.578297847212427e-5}},{"degrees_of_freedom":[3846,3847,3848,3849,3850,3851],"id":"n641","parent":"11","position":{"x":15,"z":20,"y":12.857142857142858},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-0.0001944991240680068,"z":0.00010314546284678435,"y":-0.0008541539894779701},"angle":{"x":4.256851218440503e-6,"z":1.3314936185926553e-5,"y":-1.7366956430912248e-5}},{"degrees_of_freedom":[3852,3853,3854,3855,3856,3857],"id":"n642","parent":"11","position":{"x":15,"z":17.979694910895578,"y":12.020305089104422},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-8.614340328533021e-5,"z":8.940419167369378e-5,"y":-0.0008380783768806424},"angle":{"x":3.275932278858571e-5,"z":3.9313596615272886e-5,"y":6.0350167360008965e-5}},{"degrees_of_freedom":[3858,3859,3860,3861,3862,3863],"id":"n643","parent":"11","position":{"x":15,"z":17.142857142857142,"y":10},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-4.592694230877863e-5,"z":6.750875988517726e-5,"y":-0.0007748283478241652},"angle":{"x":3.6031328418563235e-6,"z":1.1778427651054647e-5,"y":-1.3349327799778619e-5}},{"degrees_of_freedom":[3864,3865,3866,3867,3868,3869],"id":"n644","parent":"11","position":{"x":15,"z":17.979694910895578,"y":7.979694910895579},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-2.8052922917210908e-5,"z":7.643831188305975e-5,"y":-0.0007171436927457918},"angle":{"x":-2.4996683617096273e-5,"z":3.6028907890699816e-5,"y":-7.77583306115841e-5}},{"degrees_of_freedom":[3870,3871,3872,3873,3874,3875],"id":"n645","parent":"11","position":{"x":15,"z":20,"y":7.142857142857142},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":2.6363345357199915e-5,"z":8.596713471665503e-5,"y":-0.0007113091619663108},"angle":{"x":5.5670917732759965e-6,"z":1.4015387738642712e-5,"y":-1.1312891095402708e-5}},{"degrees_of_freedom":[3876,3877,3878,3879,3880,3881],"id":"n646","parent":"11","position":{"x":15,"z":22.020305089104422,"y":7.979694910895578},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-7.939624730428924e-5,"z":0.0001019294931831462,"y":-0.0007285716268820528},"angle":{"x":4.0276527996800455e-5,"z":4.239452840503166e-5,"y":6.477362670680548e-5}},{"degrees_of_freedom":[3882,3883,3884,3885,3886,3887],"id":"n647","parent":"11","position":{"x":10,"z":25,"y":15},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":-400},"displacement":{"x":-0.00021690561725624287,"z":4.225440074106074e-6,"y":-0.0009773243543295068},"angle":{"x":1.0885530686869296e-6,"z":2.2328439639721516e-5,"y":-3.2707148545560235e-5}},{"degrees_of_freedom":[3888,3889,3890,3891,3892,3893],"id":"n648","parent":"11","position":{"x":12.857142857142858,"z":20,"y":15},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-0.0001335145300271841,"z":5.298021482849116e-5,"y":-0.0008846111538282912},"angle":{"x":-2.348364637480648e-6,"z":1.2281557482516086e-5,"y":-2.7773026267476787e-5}},{"degrees_of_freedom":[3894,3895,3896,3897,3898,3899],"id":"n649","parent":"11","position":{"x":12.020305089104422,"z":22.020305089104422,"y":15},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-0.00016586403759139963,"z":4.227129728598855e-5,"y":-0.0009519242925398733},"angle":{"x":-0.00017601109036021378,"z":7.46661462201803e-5,"y":-2.5453473690446492e-5}},{"degrees_of_freedom":[3900,3901,3902,3903,3904,3905],"id":"n650","parent":"11","position":{"x":10,"z":22.857142857142858,"y":15},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-0.00018525853990249404,"z":3.652759407306819e-6,"y":-0.0009829167308193273},"angle":{"x":7.868021185850944e-6,"z":1.064069182217338e-5,"y":-2.0219404915504935e-5}},{"degrees_of_freedom":[3906,3907,3908,3909,3910,3911],"id":"n651","parent":"11","position":{"x":7.979694910895579,"z":22.020305089104422,"y":15},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-0.0001688904212229178,"z":-3.157228267783931e-5,"y":-0.0010031294579087267},"angle":{"x":0.0001137113843321909,"z":4.7940393951396866e-5,"y":-2.1692688244520574e-5}},{"degrees_of_freedom":[3912,3913,3914,3915,3916,3917],"id":"n652","parent":"11","position":{"x":7.142857142857142,"z":20,"y":15},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-0.00014134668314547344,"z":-4.215125522851002e-5,"y":-0.0010413444017475938},"angle":{"x":6.783032850771493e-7,"z":7.11317531369525e-6,"y":-2.6984826973672685e-5}},{"degrees_of_freedom":[3918,3919,3920,3921,3922,3923],"id":"n653","parent":"11","position":{"x":7.979694910895578,"z":17.979694910895578,"y":15},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-0.00011194341006034826,"z":-3.150826523900827e-5,"y":-0.0010006349080942023},"angle":{"x":-0.00014358571945835495,"z":5.7693934001592754e-5,"y":-2.1576498130726058e-5}},{"degrees_of_freedom":[3924,3925,3926,3927,3928,3929],"id":"n654","parent":"11","position":{"x":10,"z":17.142857142857142,"y":15},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-9.244750497064573e-5,"z":3.198006643952653e-6,"y":-0.0009848057103480211},"angle":{"x":-6.750473329475135e-6,"z":8.754142820464827e-6,"y":-1.9622686787305916e-5}},{"degrees_of_freedom":[3930,3931,3932,3933,3934,3935],"id":"n655","parent":"11","position":{"x":12.020305089104422,"z":17.979694910895578,"y":15},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-0.00010425254364083912,"z":4.073422980117019e-5,"y":-0.0009576586505349416},"angle":{"x":0.00014608524669346764,"z":6.377521257117646e-5,"y":-2.3836242654464644e-5}},{"degrees_of_freedom":[3936,3937,3938,3939,3940,3941],"id":"n656","parent":"11","position":{"x":10,"z":25,"y":12.857142857142858},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-0.00015874586817792233,"z":4.890887314762808e-5,"y":-0.0008312136794329809},"angle":{"x":-9.765128954140937e-6,"z":-2.5579998334588023e-5,"y":-4.939614533227078e-6}},{"degrees_of_freedom":[3942,3943,3944,3945,3946,3947],"id":"n657","parent":"11","position":{"x":7.979694910895579,"z":25,"y":12.020305089104422},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-0.00017203863280935633,"z":4.710117292034796e-5,"y":-0.000776019939913608},"angle":{"x":5.395623920406779e-5,"z":-1.8301076936719328e-5,"y":2.1454638592065263e-5}},{"degrees_of_freedom":[3948,3949,3950,3951,3952,3953],"id":"n658","parent":"11","position":{"x":7.142857142857142,"z":25,"y":10},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-0.00018641961720229633,"z":-4.395284514327565e-5,"y":-0.0007430749311495631},"angle":{"x":1.9304618574118075e-5,"z":-1.637659238335623e-6,"y":-6.220178066968498e-5}},{"degrees_of_freedom":[3954,3955,3956,3957,3958,3959],"id":"n659","parent":"11","position":{"x":7.979694910895579,"z":25,"y":7.979694910895579},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-0.00017871136522740677,"z":-3.090125457196793e-5,"y":-0.0007129369927128079},"angle":{"x":1.034356751649191e-5,"z":1.4920566389822846e-5,"y":-4.056792041762338e-5}},{"degrees_of_freedom":[3960,3961,3962,3963,3964,3965],"id":"n660","parent":"11","position":{"x":10,"z":25,"y":7.142857142857142},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-0.00018041135661305086,"z":4.240242868550103e-5,"y":-0.0007339329667799285},"angle":{"x":-2.4996605126774206e-5,"z":-2.5090247065331015e-5,"y":-2.592953712549134e-5}},{"degrees_of_freedom":[3966,3967,3968,3969,3970,3971],"id":"n661","parent":"11","position":{"x":12.020305089104422,"z":25,"y":7.979694910895579},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-0.00016956591633775434,"z":7.386989842632493e-5,"y":-0.0007895741774010221},"angle":{"x":1.3487974518798694e-5,"z":-1.8280658345074485e-5,"y":-9.988699820470091e-6}},{"degrees_of_freedom":[3972,3973,3974,3975,3976,3977],"id":"n662","parent":"11","position":{"x":12.857142857142858,"z":25,"y":10},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-0.00015582049199339772,"z":0.00010947864575490999,"y":-0.0008250706529448063},"angle":{"x":-1.685303934051563e-6,"z":-2.0447017152400496e-6,"y":-4.662023652791624e-5}},{"degrees_of_freedom":[3978,3979,3980,3981,3982,3983],"id":"n663","parent":"11","position":{"x":12.020305089104422,"z":25,"y":12.020305089104422},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-0.000160103073492381,"z":6.706023582480081e-5,"y":-0.0008557155932231691},"angle":{"x":-2.0852235483978376e-5,"z":1.1918614335341897e-5,"y":-3.471913822875984e-7}},{"degrees_of_freedom":[3984,3985,3986,3987,3988,3989],"id":"n664","parent":"11","position":{"x":12.857142857142858,"z":3.140184917367551e-16,"y":15},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0.0001646317587880682,"z":2.1358539755431073e-5,"y":-0.0010699258263368843},"angle":{"x":1.2308590421917295e-6,"z":-1.0984532059578355e-5,"y":-2.826539339581846e-5}},{"degrees_of_freedom":[3990,3991,3992,3993,3994,3995],"id":"n665","parent":"11","position":{"x":12.020305089104422,"z":-2.020305089104421,"y":15},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0.00019494617174704496,"z":1.0526332703597135e-5,"y":-0.0010046957937102378},"angle":{"x":-0.00021475266027863712,"z":-8.733288239142634e-5,"y":-1.9762738031946644e-5}},{"degrees_of_freedom":[3996,3997,3998,3999,4000,4001],"id":"n666","parent":"11","position":{"x":7.979694910895579,"z":-2.0203050891044216,"y":15},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0.00018966114698198476,"z":-6.619243442539342e-5,"y":-0.0009390947867357105},"angle":{"x":0.00013746902462340497,"z":-6.33993925262562e-5,"y":-2.5139178158785922e-5}},{"degrees_of_freedom":[4002,4003,4004,4005,4006,4007],"id":"n667","parent":"11","position":{"x":7.142857142857142,"z":-3.140184917367551e-16,"y":15},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0.0001577553764872856,"z":-7.798218552444169e-5,"y":-0.0008621016199794724},"angle":{"x":5.102078132323788e-6,"z":-1.4616187998451395e-5,"y":-2.844485685649104e-5}},{"degrees_of_freedom":[4008,4009,4010,4011,4012,4013],"id":"n668","parent":"11","position":{"x":7.979694910895578,"z":2.020305089104421,"y":15},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0.000126280209947149,"z":-6.681627151955301e-5,"y":-0.000952150578567819},"angle":{"x":-0.00022124043752224612,"z":-9.265592138494553e-5,"y":-2.3708651540325043e-5}},{"degrees_of_freedom":[4014,4015,4016,4017,4018,4019],"id":"n669","parent":"11","position":{"x":12.020305089104422,"z":2.0203050891044216,"y":15},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0.00013091520074320548,"z":1.1466199368577347e-5,"y":-0.0010096183576350857},"angle":{"x":-7.192218910921444e-8,"z":-1.053727796651438e-5,"y":-2.262845114088203e-5}},{"degrees_of_freedom":[4020,4021,4022,4023,4024,4025],"id":"n670","parent":"11","position":{"x":15,"z":0,"y":25},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":-800},"displacement":{"x":0.00027376427097612133,"z":0.0001199101784300633,"y":-0.0011604770385185118},"angle":{"x":1.398403259709306e-5,"z":-6.48282205322104e-6,"y":-4.3785347545374426e-5}},{"degrees_of_freedom":[4026,4027,4028,4029,4030,4031],"id":"n671","parent":"11","position":{"x":15,"z":-5,"y":20},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0.00030566622756697623,"z":6.242232032930775e-5,"y":-0.001073156954925253},"angle":{"x":-1.1098710640514084e-6,"z":-3.3466142300268505e-6,"y":-1.5264216871571633e-5}},{"degrees_of_freedom":[4032,4033,4034,4035,4036,4037],"id":"n672","parent":"11","position":{"x":15,"z":5,"y":20},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0.00012418609548047596,"z":8.816292474792934e-5,"y":-0.0010667238000740716},"angle":{"x":3.581438190469668e-6,"z":-4.533430081227751e-6,"y":-1.4116301592377095e-5}},{"degrees_of_freedom":[4038,4039,4040,4041,4042,4043],"id":"n673","parent":"11","position":{"x":15,"z":2.857142857142857,"y":20},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0.000142698290917116,"z":9.242777324972226e-5,"y":-0.0010746181403452463},"angle":{"x":4.540214845864568e-6,"z":-1.3108314618123014e-5,"y":-2.418672223050739e-5}},{"degrees_of_freedom":[4044,4045,4046,4047,4048,4049],"id":"n674","parent":"11","position":{"x":15,"z":2.0203050891044216,"y":22.020305089104422},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0.000195146738422332,"z":9.387388804953125e-5,"y":-0.0011004277381317339},"angle":{"x":-8.128964323332823e-6,"z":-5.752038905262981e-5,"y":9.7193781680908e-5}},{"degrees_of_freedom":[4050,4051,4052,4053,4054,4055],"id":"n675","parent":"11","position":{"x":15,"z":3.140184917367551e-16,"y":22.857142857142858},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0.00033317886353580986,"z":9.058386242600597e-5,"y":-0.001099867660978853},"angle":{"x":5.43101519527246e-6,"z":-1.5172696081796422e-5,"y":-2.6819540934438862e-5}},{"degrees_of_freedom":[4056,4057,4058,4059,4060,4061],"id":"n676","parent":"11","position":{"x":15,"z":-2.020305089104421,"y":22.020305089104422},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0.0002978087656524118,"z":8.113593450788343e-5,"y":-0.0010892195639354133},"angle":{"x":2.2686452979674762e-5,"z":-3.2216406475899114e-5,"y":-7.07904829127908e-5}},{"degrees_of_freedom":[4062,4063,4064,4065,4066,4067],"id":"n677","parent":"11","position":{"x":15,"z":-2.857142857142857,"y":20},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0.0002784315459432222,"z":6.224393611317445e-5,"y":-0.0010568096939725133},"angle":{"x":4.2367943176052045e-6,"z":-1.6930668445190454e-5,"y":-2.331986796491222e-5}},{"degrees_of_freedom":[4068,4069,4070,4071,4072,4073],"id":"n678","parent":"11","position":{"x":15,"z":-2.0203050891044216,"y":17.979694910895578},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0.00022002443201198826,"z":6.543426495405804e-5,"y":-0.001031465187344315},"angle":{"x":-1.2608524762727533e-5,"z":-5.228960726750388e-5,"y":8.092632010291826e-5}},{"degrees_of_freedom":[4074,4075,4076,4077,4078,4079],"id":"n679","parent":"11","position":{"x":15,"z":-3.140184917367551e-16,"y":17.142857142857142},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":9.042770717441425e-5,"z":6.968350009506512e-5,"y":-0.0010303577119480302},"angle":{"x":4.302595732965429e-6,"z":-1.4866215581461299e-5,"y":-2.0687142845994053e-5}},{"degrees_of_freedom":[4080,4081,4082,4083,4084,4085],"id":"n680","parent":"11","position":{"x":15,"z":2.020305089104421,"y":17.979694910895578},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0.0001307305737670264,"z":7.704461795826465e-5,"y":-0.0010412336235655442},"angle":{"x":1.8935128519630882e-5,"z":-3.611560666237359e-5,"y":-8.502537808878621e-5}},{"degrees_of_freedom":[4086,4087,4088,4089,4090,4091],"id":"n681","parent":"11","position":{"x":10,"z":-5,"y":25},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":-400},"displacement":{"x":0.0003555786545656992,"z":-9.867326110925325e-6,"y":-0.0012596095003260756},"angle":{"x":-0.00011077718906437162,"z":-4.8719314969984324e-5,"y":-5.040289289168705e-5}},{"degrees_of_freedom":[4092,4093,4094,4095,4096,4097],"id":"n682","parent":"11","position":{"x":10,"z":5,"y":25},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":-800},"displacement":{"x":0.00010493638551210992,"z":-2.0317022824884068e-5,"y":-0.0011513067155547497},"angle":{"x":5.509223613120903e-7,"z":-2.4222530728675935e-6,"y":-4.0686480889081326e-5}},{"degrees_of_freedom":[4098,4099,4100,4101,4102,4103],"id":"n683","parent":"11","position":{"x":12.857142857142858,"z":-3.140184917367551e-16,"y":25},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0.00023435933351599277,"z":5.551041622582845e-5,"y":-0.0012226243767784048},"angle":{"x":-2.017666489618344e-5,"z":-3.732572457543781e-6,"y":-3.1539235771847884e-5}},{"degrees_of_freedom":[4104,4105,4106,4107,4108,4109],"id":"n684","parent":"11","position":{"x":12.020305089104422,"z":2.020305089104421,"y":25},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0.00020160478128021978,"z":3.9658097771901515e-5,"y":-0.0011605325460104894},"angle":{"x":9.806302761298323e-5,"z":-4.553652464508553e-5,"y":-3.364127163702404e-5}},{"degrees_of_freedom":[4110,4111,4112,4113,4114,4115],"id":"n685","parent":"11","position":{"x":10,"z":2.857142857142857,"y":25},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0.0001712535739755961,"z":-1.4967411550494056e-5,"y":-0.0011348135291358876},"angle":{"x":-1.4955483764647917e-5,"z":-5.578377903409845e-6,"y":-3.137974529007254e-5}},{"degrees_of_freedom":[4116,4117,4118,4119,4120,4121],"id":"n686","parent":"11","position":{"x":7.979694910895579,"z":2.0203050891044216,"y":25},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0.00019072971793369974,"z":-7.444920846633883e-5,"y":-0.0011341251458046502},"angle":{"x":2.1521935362879137e-5,"z":7.318301434751598e-6,"y":-3.6439811665979275e-5}},{"degrees_of_freedom":[4122,4123,4124,4125,4126,4127],"id":"n687","parent":"11","position":{"x":7.142857142857142,"z":3.140184917367551e-16,"y":25},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0.00022427698450911164,"z":-9.187778062666157e-5,"y":-0.0011324628936570142},"angle":{"x":-2.017638198077536e-5,"z":-7.42433661057621e-6,"y":-3.2800286509208195e-5}},{"degrees_of_freedom":[4128,4129,4130,4131,4132,4133],"id":"n688","parent":"11","position":{"x":7.979694910895578,"z":-2.020305089104421,"y":25},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0.0002610030105940195,"z":-7.724717587474119e-5,"y":-0.0012156502033641293},"angle":{"x":7.48764229181931e-5,"z":-4.103061075191702e-5,"y":-3.635749925220242e-5}},{"degrees_of_freedom":[4134,4135,4136,4137,4138,4139],"id":"n689","parent":"11","position":{"x":10,"z":-2.857142857142857,"y":25},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0.00029063891673303965,"z":-1.7939599666672125e-5,"y":-0.0012501076921406344},"angle":{"x":-2.5397369866356222e-5,"z":-5.5785518033828055e-6,"y":-3.2947290972646187e-5}},{"degrees_of_freedom":[4140,4141,4142,4143,4144,4145],"id":"n690","parent":"11","position":{"x":12.020305089104422,"z":-2.0203050891044216,"y":25},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0.0002695117487441418,"z":4.1202639033792634e-5,"y":-0.0012420582149372064},"angle":{"x":5.991424412892651e-6,"z":5.519147403678911e-6,"y":-3.439295221375463e-5}},{"degrees_of_freedom":[4146,4147,4148,4149,4150,4151],"id":"n691","parent":"11","position":{"x":10,"z":-5,"y":17.142857142857142},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0.0002992285333017807,"z":0.00014787152984946342,"y":-0.0010799371666403506},"angle":{"x":-0.00020266546141600145,"z":1.533569675344472e-5,"y":-2.4246615452405898e-5}},{"degrees_of_freedom":[4152,4153,4154,4155,4156,4157],"id":"n692","parent":"11","position":{"x":12.020305089104422,"z":-5,"y":17.979694910895578},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0.0002978720041910858,"z":2.7258972130939697e-5,"y":-0.001066167877557605},"angle":{"x":8.161972349829798e-5,"z":-7.421378489416332e-6,"y":9.350815339757635e-5}},{"degrees_of_freedom":[4158,4159,4160,4161,4162,4163],"id":"n693","parent":"11","position":{"x":12.857142857142858,"z":-5,"y":20},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0.0003018442913328115,"z":0.00011390451568024212,"y":-0.001078193289601536},"angle":{"x":-3.1089241456199458e-6,"z":2.1427286678894474e-6,"y":-0.00011104480719882258}},{"degrees_of_freedom":[4164,4165,4166,4167,4168,4169],"id":"n694","parent":"11","position":{"x":12.020305089104422,"z":-5,"y":22.020305089104422},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0.0002869434122503407,"z":1.4697049667487162e-5,"y":-0.0010965073563477658},"angle":{"x":-5.905662413005261e-5,"z":1.6003583849053785e-5,"y":2.402490125100289e-5}},{"degrees_of_freedom":[4170,4171,4172,4173,4174,4175],"id":"n695","parent":"11","position":{"x":10,"z":-5,"y":22.857142857142858},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0.0002746553350552468,"z":1.381383178946614e-5,"y":-0.0011367587147158285},"angle":{"x":-0.00012275621890217337,"z":1.7504695760107904e-5,"y":5.0410113786374596e-5}},{"degrees_of_freedom":[4176,4177,4178,4179,4180,4181],"id":"n696","parent":"11","position":{"x":7.979694910895579,"z":-5,"y":22.020305089104422},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0.0002742210628322104,"z":0.00021838471109459276,"y":-0.001152580531183833},"angle":{"x":-1.1050798132831516e-5,"z":-8.728494212502255e-6,"y":9.6680054134063e-5}},{"degrees_of_freedom":[4182,4183,4184,4185,4186,4187],"id":"n697","parent":"11","position":{"x":7.142857142857142,"z":-5,"y":20},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0.00027435494422615433,"z":0.00032161607078292465,"y":-0.0011363114548611601},"angle":{"x":7.154786588056561e-5,"z":4.571342994914004e-6,"y":0.0002960905874407412}},{"degrees_of_freedom":[4188,4189,4190,4191,4192,4193],"id":"n698","parent":"11","position":{"x":7.979694910895579,"z":-5,"y":17.979694910895578},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0.0002903836912437763,"z":-7.071221106581837e-5,"y":-0.0011151387552081878},"angle":{"x":0.00028850789012966645,"z":1.3503043756505353e-5,"y":-0.00022769736257358033}},{"degrees_of_freedom":[4194,4195,4196,4197,4198,4199],"id":"n699","parent":"11","position":{"x":10,"z":5,"y":22.857142857142858},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":9.768771064830792e-5,"z":-1.71307430764825e-5,"y":-0.0011004771574558113},"angle":{"x":4.98526461835882e-6,"z":2.3817441026658343e-7,"y":-2.9121842628724318e-5}},{"degrees_of_freedom":[4200,4201,4202,4203,4204,4205],"id":"n700","parent":"11","position":{"x":7.979694910895579,"z":5,"y":22.020305089104422},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":8.40042121792466e-5,"z":-7.861718020069221e-5,"y":-0.001089057093071733},"angle":{"x":-8.487770441710767e-6,"z":-1.3692763908490437e-5,"y":-3.244483660812804e-5}},{"degrees_of_freedom":[4206,4207,4208,4209,4210,4211],"id":"n701","parent":"11","position":{"x":7.142857142857142,"z":5,"y":20},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":7.380386951951436e-5,"z":-8.799007692082475e-5,"y":-0.0010589864182523063},"angle":{"x":-2.54318656065911e-6,"z":-1.2409252091546603e-6,"y":-1.696358542300161e-5}},{"degrees_of_freedom":[4212,4213,4214,4215,4216,4217],"id":"n702","parent":"11","position":{"x":7.979694910895579,"z":5,"y":17.979694910895578},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":8.062837201814325e-5,"z":-6.897143801453645e-5,"y":-0.001029042883922014},"angle":{"x":1.5164223293416423e-6,"z":1.4310966460111064e-5,"y":-2.56345866088152e-5}},{"degrees_of_freedom":[4218,4219,4220,4221,4222,4223],"id":"n703","parent":"11","position":{"x":10,"z":5,"y":17.142857142857142},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":9.163906228261211e-5,"z":-1.7136572384297925e-5,"y":-0.0010151436358726603},"angle":{"x":-3.082789037795459e-6,"z":2.1112823214441722e-7,"y":-2.4705259161525974e-5}},{"degrees_of_freedom":[4224,4225,4226,4227,4228,4229],"id":"n704","parent":"11","position":{"x":12.020305089104422,"z":5,"y":17.979694910895578},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0.00010340265189850325,"z":2.9538703906285596e-5,"y":-0.0010291193113124647},"angle":{"x":1.3175674060509868e-7,"z":-1.564762037052136e-5,"y":-2.239802168940205e-5}},{"degrees_of_freedom":[4230,4231,4232,4233,4234,4235],"id":"n705","parent":"11","position":{"x":12.857142857142858,"z":5,"y":20},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0.00011596461393670504,"z":4.8774852053658265e-5,"y":-0.0010602749869813416},"angle":{"x":1.6580965419716305e-6,"z":-2.0171350984104656e-6,"y":-1.9119012764731354e-5}},{"degrees_of_freedom":[4236,4237,4238,4239,4240,4241],"id":"n706","parent":"11","position":{"x":12.020305089104422,"z":5,"y":22.020305089104422},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0.00011091812439883136,"z":3.6011977299111156e-5,"y":-0.0010888103580192195},"angle":{"x":4.638622393322997e-6,"z":1.2814924122971709e-5,"y":-2.6720537546147848e-5}},{"degrees_of_freedom":[4242,4243,4244,4245,4246,4247],"id":"n707","parent":"11","position":{"x":12.020305089104422,"z":7.979694910895579,"y":15},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":4.630682477925391e-5,"z":2.6131684603611042e-5,"y":-0.0009625716159711391},"angle":{"x":-1.3528091244648735e-5,"z":-5.441933023974312e-6,"y":-2.0919634047656813e-5}},{"degrees_of_freedom":[4248,4249,4250,4251,4252,4253],"id":"n708","parent":"11","position":{"x":7.979694910895579,"z":7.979694910895578,"y":15},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":3.857796801392167e-5,"z":-4.832117959200818e-5,"y":-0.0009626589278666216},"angle":{"x":1.9637325123386406e-5,"z":-6.347392346451092e-6,"y":-2.1993173495650536e-5}},{"degrees_of_freedom":[4254,4255,4256,4257,4258,4259],"id":"n709","parent":"11","position":{"x":7.979694910895578,"z":12.020305089104422,"y":15},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-2.586784396945134e-5,"z":-4.793292068778651e-5,"y":-0.0009588880242204368},"angle":{"x":3.127395715640925e-6,"z":2.284465578390286e-6,"y":-2.1666127325382407e-5}},{"degrees_of_freedom":[4260,4261,4262,4263,4264,4265],"id":"n710","parent":"11","position":{"x":15,"z":10,"y":25},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":-800},"displacement":{"x":5.101227731247397e-5,"z":0.00011921732835116545,"y":-0.001154466734999113},"angle":{"x":6.301028911423325e-6,"z":7.810454045876029e-7,"y":-4.191818497401217e-5}},{"degrees_of_freedom":[4266,4267,4268,4269,4270,4271],"id":"n711","parent":"11","position":{"x":15,"z":15,"y":20},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-4.898147055352282e-5,"z":0.00010577568116666413,"y":-0.0010641114608725875},"angle":{"x":4.582575282458421e-6,"z":-2.3718650119031573e-6,"y":-1.6355598274345617e-5}},{"degrees_of_freedom":[4272,4273,4274,4275,4276,4277],"id":"n712","parent":"11","position":{"x":15,"z":12.857142857142858,"y":20},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-2.538821579253702e-5,"z":0.00011038902723721508,"y":-0.0010661262426433094},"angle":{"x":3.7476710679548944e-6,"z":-3.008025273706911e-6,"y":-2.2593115307562054e-5}},{"degrees_of_freedom":[4278,4279,4280,4281,4282,4283],"id":"n713","parent":"11","position":{"x":15,"z":12.020305089104422,"y":22.020305089104422},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":2.0368498058698442e-6,"z":0.00010924207073691242,"y":-0.0010922415461954826},"angle":{"x":-1.0365501461469164e-5,"z":-3.0371044103153442e-5,"y":4.978769647743833e-5}},{"degrees_of_freedom":[4284,4285,4286,4287,4288,4289],"id":"n714","parent":"11","position":{"x":15,"z":10,"y":22.857142857142858},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":8.175198376913625e-5,"z":0.00010571352798723176,"y":-0.0010956287908590904},"angle":{"x":2.2634323180384595e-6,"z":-5.274440976529932e-6,"y":-2.620980135875095e-5}},{"degrees_of_freedom":[4290,4291,4292,4293,4294,4295],"id":"n715","parent":"11","position":{"x":15,"z":7.979694910895579,"y":22.020305089104422},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0.0001011877974695859,"z":9.904540370508265e-5,"y":-0.0010878588888168599},"angle":{"x":1.8121786343391807e-5,"z":-9.101927051529067e-6,"y":-3.202198683263193e-5}},{"degrees_of_freedom":[4296,4297,4298,4299,4300,4301],"id":"n716","parent":"11","position":{"x":15,"z":7.142857142857142,"y":20},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0.00010364429602231708,"z":8.409450780293192e-5,"y":-0.0010565673236300774},"angle":{"x":3.878908427451225e-6,"z":-7.532086609651762e-6,"y":-2.2568211586279098e-5}},{"degrees_of_freedom":[4302,4303,4304,4305,4306,4307],"id":"n717","parent":"11","position":{"x":15,"z":7.979694910895578,"y":17.979694910895578},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":6.832892439995663e-5,"z":8.600516834239154e-5,"y":-0.0010302167093813915},"angle":{"x":-1.1679659218921632e-5,"z":-3.0244878362492817e-5,"y":4.6686844934960383e-5}},{"degrees_of_freedom":[4308,4309,4310,4311,4312,4313],"id":"n718","parent":"11","position":{"x":15,"z":10,"y":17.142857142857142},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-3.424750357527888e-6,"z":8.956326045389911e-5,"y":-0.0010258678555785346},"angle":{"x":2.0689495950617286e-6,"z":-5.265636213205314e-6,"y":-1.8951622678108838e-5}},{"degrees_of_freedom":[4314,4315,4316,4317,4318,4319],"id":"n719","parent":"11","position":{"x":15,"z":12.020305089104422,"y":17.979694910895578},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-1.4999730580950834e-5,"z":9.5828177886642e-5,"y":-0.0010343048169122045},"angle":{"x":1.828914598633264e-5,"z":-9.411222877586961e-6,"y":-3.569061591198735e-5}},{"degrees_of_freedom":[4320,4321,4322,4323,4324,4325],"id":"n720","parent":"11","position":{"x":10,"z":15,"y":25},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":-800},"displacement":{"x":-9.255195537083218e-5,"z":-2.0800442046465917e-5,"y":-0.001146594991449701},"angle":{"x":-2.8757156196701465e-6,"z":3.1770687580420882e-6,"y":-4.0830607692812616e-5}},{"degrees_of_freedom":[4326,4327,4328,4329,4330,4331],"id":"n721","parent":"11","position":{"x":12.857142857142858,"z":10,"y":25},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":1.1825623101929807e-5,"z":4.565360593447818e-5,"y":-0.0011607835427227442},"angle":{"x":4.899136117158937e-9,"z":1.6072851997922494e-6,"y":-2.5170150905884283e-5}},{"degrees_of_freedom":[4332,4333,4334,4335,4336,4337],"id":"n722","parent":"11","position":{"x":12.020305089104422,"z":12.020305089104422,"y":25},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-1.6549886194824206e-5,"z":3.312775485865349e-5,"y":-0.0011698662088312477},"angle":{"x":1.7185332692385663e-5,"z":-4.525567213774147e-6,"y":-3.311797925100682e-5}},{"degrees_of_freedom":[4338,4339,4340,4341,4342,4343],"id":"n723","parent":"11","position":{"x":10,"z":12.857142857142858,"y":25},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-4.301693455883169e-5,"z":-1.9445604417753607e-5,"y":-0.0011734432633236655},"angle":{"x":-6.390260197601462e-8,"z":1.514301356845069e-6,"y":-2.8851557053788858e-5}},{"degrees_of_freedom":[4344,4345,4346,4347,4348,4349],"id":"n724","parent":"11","position":{"x":7.979694910895579,"z":12.020305089104422,"y":25},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-2.358774172764842e-5,"z":-7.185906095641794e-5,"y":-0.001177127271358657},"angle":{"x":-2.9632442577133857e-5,"z":-8.881100850571348e-6,"y":-3.146878689715492e-5}},{"degrees_of_freedom":[4350,4351,4352,4353,4354,4355],"id":"n725","parent":"11","position":{"x":7.142857142857142,"z":10,"y":25},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":1.9933381429116333e-7,"z":-8.697679574480343e-5,"y":-0.0011864681225415498},"angle":{"x":-2.3526799287046753e-7,"z":1.5710174988587775e-6,"y":-2.512496239387621e-5}},{"degrees_of_freedom":[4356,4357,4358,4359,4360,4361],"id":"n726","parent":"11","position":{"x":7.979694910895578,"z":7.979694910895579,"y":25},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":2.864556489247127e-5,"z":-7.436601735866066e-5,"y":-0.0011778544796002288},"angle":{"x":-5.367141892193569e-5,"z":2.0522191768040566e-5,"y":-3.3639720115633533e-5}},{"degrees_of_freedom":[4362,4363,4364,4365,4366,4367],"id":"n727","parent":"11","position":{"x":10,"z":7.142857142857142,"y":25},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":5.532296493763237e-5,"z":-2.1486790635526982e-5,"y":-0.001174101481297132},"angle":{"x":-1.6647933212816085e-7,"z":1.664009458728715e-6,"y":-2.879281007256876e-5}},{"degrees_of_freedom":[4368,4369,4370,4371,4372,4373],"id":"n728","parent":"11","position":{"x":12.020305089104422,"z":7.979694910895578,"y":25},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":3.5907809470132024e-5,"z":3.066027959833855e-5,"y":-0.0011700698482813635},"angle":{"x":4.247875546633026e-5,"z":1.6682713871575033e-5,"y":-3.134372547874377e-5}},{"degrees_of_freedom":[4374,4375,4376,4377,4378,4379],"id":"n729","parent":"11","position":{"x":10,"z":15,"y":22.857142857142858},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-8.355740032543952e-5,"z":-1.5172221363500138e-5,"y":-0.0010957187844335696},"angle":{"x":-2.955457834851516e-6,"z":4.1431862658976025e-7,"y":-2.9392499410020607e-5}},{"degrees_of_freedom":[4380,4381,4382,4383,4384,4385],"id":"n730","parent":"11","position":{"x":7.979694910895579,"z":15,"y":22.020305089104422},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-9.645242496415755e-5,"z":-7.054074775286599e-5,"y":-0.0010852834349775644},"angle":{"x":-8.905641241095674e-6,"z":-1.2242137564634721e-5,"y":-2.9570287070145758e-5}},{"degrees_of_freedom":[4386,4387,4388,4389,4390,4391],"id":"n731","parent":"11","position":{"x":7.142857142857142,"z":15,"y":20},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-9.984747840663798e-5,"z":-7.695231704542963e-5,"y":-0.0010572867118567538},"angle":{"x":-3.8755611677344666e-6,"z":2.974795840708157e-6,"y":-1.681384437914314e-5}},{"degrees_of_freedom":[4392,4393,4394,4395,4396,4397],"id":"n732","parent":"11","position":{"x":7.979694910895579,"z":15,"y":17.979694910895578},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-8.526709943538673e-5,"z":-5.522296828670805e-5,"y":-0.001025304520341478},"angle":{"x":-4.0957544050254986e-7,"z":1.6612301519227164e-5,"y":-2.4568714302027736e-5}},{"degrees_of_freedom":[4398,4399,4400,4401,4402,4403],"id":"n733","parent":"11","position":{"x":10,"z":15,"y":17.142857142857142},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-7.238701676641112e-5,"z":-3.9442080248293585e-6,"y":-0.0010101340095102903},"angle":{"x":-2.150364431519142e-6,"z":2.839340883884706e-7,"y":-2.4812643924005838e-5}},{"degrees_of_freedom":[4404,4405,4406,4407,4408,4409],"id":"n734","parent":"11","position":{"x":12.020305089104422,"z":15,"y":17.979694910895578},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-6.155886556318285e-5,"z":4.373553964910753e-5,"y":-0.0010228324450362934},"angle":{"x":-1.3156455827511015e-6,"z":-1.3537512045531865e-5,"y":-2.3501903781942756e-5}},{"degrees_of_freedom":[4410,4411,4412,4413,4414,4415],"id":"n735","parent":"11","position":{"x":12.857142857142858,"z":15,"y":20},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-5.6649243175175925e-5,"z":6.130310822178323e-5,"y":-0.0010519803920167492},"angle":{"x":4.864452723458097e-7,"z":2.290652011265798e-6,"y":-2.0151991658798664e-5}},{"degrees_of_freedom":[4416,4417,4418,4419,4420,4421],"id":"n736","parent":"11","position":{"x":12.020305089104422,"z":15,"y":22.020305089104422},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-6.897877592296514e-5,"z":4.514278261444696e-5,"y":-0.0010827773670825606},"angle":{"x":4.175752653543436e-6,"z":1.4645099061913914e-5,"y":-3.0059484616467755e-5}},{"degrees_of_freedom":[4422,4423,4424,4425,4426,4427],"id":"n737","parent":"11","position":{"x":7.979694910895579,"z":17.979694910895578,"y":15},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-0.00010884311537786552,"z":-3.2429483869602694e-5,"y":-0.0009998968976250042},"angle":{"x":2.7293206943954843e-5,"z":-2.8578636917087378e-6,"y":-2.2070585798938478e-5}},{"degrees_of_freedom":[4428,4429,4430,4431,4432,4433],"id":"n738","parent":"11","position":{"x":7.979694910895578,"z":22.020305089104422,"y":15},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-0.00017350459153849527,"z":-3.2228963419537565e-5,"y":-0.0009991294995443133},"angle":{"x":0.00018532122156172815,"z":7.251583136664638e-5,"y":-1.9417369392354958e-5}},{"degrees_of_freedom":[4434,4435,4436,4437,4438,4439],"id":"n739","parent":"11","position":{"x":15,"z":20,"y":25},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":-800},"displacement":{"x":-0.00018200543549371648,"z":0.00011816957955245372,"y":-0.0011746554441796557},"angle":{"x":-1.8816809763279548e-6,"z":7.00906839921225e-6,"y":-3.438281699007058e-5}},{"degrees_of_freedom":[4440,4441,4442,4443,4444,4445],"id":"n740","parent":"11","position":{"x":15,"z":25,"y":20},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-0.00023752996656924483,"z":0.00013381881910205337,"y":-0.0011048142717966073},"angle":{"x":9.5821887848895e-6,"z":-2.4728424507196188e-6,"y":-1.6308448539342773e-5}},{"degrees_of_freedom":[4446,4447,4448,4449,4450,4451],"id":"n741","parent":"11","position":{"x":15,"z":22.857142857142858,"y":20},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-0.00020605519680284406,"z":0.00013393807724226494,"y":-0.0010874024619048463},"angle":{"x":3.3527411641627044e-6,"z":6.006805601438926e-6,"y":-2.0800506580751266e-5}},{"degrees_of_freedom":[4452,4453,4454,4455,4456,4457],"id":"n742","parent":"11","position":{"x":15,"z":22.020305089104422,"y":22.020305089104422},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-0.00020215860817094424,"z":0.0001290909522479701,"y":-0.0011138530705533441},"angle":{"x":-1.3804317231080565e-5,"z":-2.8762728493202496e-7,"y":-5.534047056550569e-6}},{"degrees_of_freedom":[4458,4459,4460,4461,4462,4463],"id":"n743","parent":"11","position":{"x":15,"z":20,"y":22.857142857142858},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-0.00018591768098753973,"z":0.00012349936781533744,"y":-0.0011136427827002598},"angle":{"x":4.3042356406498165e-6,"z":5.485675542998545e-6,"y":-2.4400316952741288e-5}},{"degrees_of_freedom":[4464,4465,4466,4467,4468,4469],"id":"n744","parent":"11","position":{"x":15,"z":17.979694910895578,"y":22.020305089104422},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-0.00010698331734089366,"z":0.00011563609036451527,"y":-0.0011036574922327518},"angle":{"x":1.7653731351716088e-5,"z":1.4965865213525767e-5,"y":4.950616315757847e-6}},{"degrees_of_freedom":[4470,4471,4472,4473,4474,4475],"id":"n745","parent":"11","position":{"x":15,"z":17.142857142857142,"y":20},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-7.711824846205834e-5,"z":0.00010247408952195098,"y":-0.0010712165603020706},"angle":{"x":3.0695278316752477e-6,"z":3.7176091552166923e-6,"y":-2.4327392365354748e-5}},{"degrees_of_freedom":[4476,4477,4478,4479,4480,4481],"id":"n746","parent":"11","position":{"x":15,"z":17.979694910895578,"y":17.979694910895578},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-8.796934633870015e-5,"z":0.00010455803083213376,"y":-0.001043553823476577},"angle":{"x":-1.0973211110943917e-5,"z":5.964744757194181e-7,"y":-1.2962629949742817e-5}},{"degrees_of_freedom":[4482,4483,4484,4485,4486,4487],"id":"n747","parent":"11","position":{"x":15,"z":20,"y":17.142857142857142},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-0.0001073325854995197,"z":0.0001082680649668006,"y":-0.0010435021351677268},"angle":{"x":5.451411344162545e-6,"z":4.238732903434459e-6,"y":-2.0727642610483008e-5}},{"degrees_of_freedom":[4488,4489,4490,4491,4492,4493],"id":"n748","parent":"11","position":{"x":15,"z":22.020305089104422,"y":17.979694910895578},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-0.00017513848083783589,"z":0.00011678393870916423,"y":-0.0010554961479804156},"angle":{"x":2.1532580576130672e-5,"z":1.2155344692541106e-5,"y":-8.729412674264841e-7}},{"degrees_of_freedom":[4494,4495,4496,4497,4498,4499],"id":"n749","parent":"11","position":{"x":10,"z":25,"y":25},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":-400},"displacement":{"x":-0.00034118014009470484,"z":-3.217021246090645e-5,"y":-0.0012406000044415627},"angle":{"x":0.00011262518510256956,"z":5.204808770184874e-5,"y":-5.0021204178364145e-5}},{"degrees_of_freedom":[4500,4501,4502,4503,4504,4505],"id":"n750","parent":"11","position":{"x":12.857142857142858,"z":20,"y":25},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-0.00021089210182553285,"z":5.0417163917365286e-5,"y":-0.0011036894543969406},"angle":{"x":2.0713834676356362e-5,"z":9.765560065158673e-6,"y":-3.203985738098699e-5}},{"degrees_of_freedom":[4506,4507,4508,4509,4510,4511],"id":"n751","parent":"11","position":{"x":12.020305089104422,"z":22.020305089104422,"y":25},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-0.0002466863326871101,"z":3.582125560996815e-5,"y":-0.001201340987493141},"angle":{"x":-9.873712270073125e-5,"z":5.199788655767638e-5,"y":-3.632970436360334e-5}},{"degrees_of_freedom":[4512,4513,4514,4515,4516,4517],"id":"n752","parent":"11","position":{"x":10,"z":22.857142857142858,"y":25},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-0.00027657909774963873,"z":-2.3630023447678365e-5,"y":-0.0012417897454150902},"angle":{"x":2.5896472540558804e-5,"z":7.933326770974315e-6,"y":-3.309438370697481e-5}},{"degrees_of_freedom":[4518,4519,4520,4521,4522,4523],"id":"n753","parent":"11","position":{"x":7.979694910895579,"z":22.020305089104422,"y":25},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-0.00025573907074591303,"z":-8.293283784738335e-5,"y":-0.0012388961933658329},"angle":{"x":-8.62416859621711e-6,"z":-4.271656283827928e-6,"y":-3.426830867570564e-5}},{"degrees_of_freedom":[4524,4525,4526,4527,4528,4529],"id":"n754","parent":"11","position":{"x":7.142857142857142,"z":20,"y":25},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-0.0002220426439604083,"z":-9.725048470945143e-5,"y":-0.0012319098327229908},"angle":{"x":2.0714107561494913e-5,"z":6.1008981175593595e-6,"y":-3.0749449330641576e-5}},{"degrees_of_freedom":[4530,4531,4532,4533,4534,4535],"id":"n755","parent":"11","position":{"x":7.979694910895578,"z":17.979694910895578,"y":25},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-0.0001899670961106492,"z":-8.129987652957717e-5,"y":-0.001155198939714402},"angle":{"x":-0.00012812340117096736,"z":5.87227967181101e-5,"y":-3.460678164295787e-5}},{"degrees_of_freedom":[4536,4537,4538,4539,4540,4541],"id":"n756","parent":"11","position":{"x":10,"z":17.142857142857142,"y":25},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-0.00015902234086364242,"z":-2.5911952678890802e-5,"y":-0.0011234244976243112},"angle":{"x":1.5531235686215926e-5,"z":7.933160079633445e-6,"y":-3.143572397068691e-5}},{"degrees_of_freedom":[4542,4543,4544,4545,4546,4547],"id":"n757","parent":"11","position":{"x":12.020305089104422,"z":17.979694910895578,"y":25},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-0.00017826726589318444,"z":3.324997162117579e-5,"y":-0.0011176443213357157},"angle":{"x":-1.8668081757799086e-5,"z":-4.1580830990262324e-6,"y":-3.609775088320043e-5}},{"degrees_of_freedom":[4548,4549,4550,4551,4552,4553],"id":"n758","parent":"11","position":{"x":10,"z":25,"y":22.857142857142858},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-0.000253489062827865,"z":-6.582942084163367e-5,"y":-0.0011159280359164133},"angle":{"x":0.0001182762111747502,"z":-1.5657847084554013e-5,"y":5.043414292068929e-5}},{"degrees_of_freedom":[4554,4555,4556,4557,4558,4559],"id":"n759","parent":"11","position":{"x":7.979694910895579,"z":25,"y":22.020305089104422},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-0.0002654322272562548,"z":-6.291505046804636e-5,"y":-0.0010786200904558153},"angle":{"x":4.736425604842327e-5,"z":-1.5028071131688446e-5,"y":2.1061476365743815e-5}},{"degrees_of_freedom":[4560,4561,4562,4563,4564,4565],"id":"n760","parent":"11","position":{"x":7.142857142857142,"z":25,"y":20},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-0.0002759634514393425,"z":-0.00014098027282213575,"y":-0.0010613971095199664},"angle":{"x":-1.0656143070006072e-6,"z":5.133358810510793e-7,"y":-9.585858957328978e-5}},{"degrees_of_freedom":[4566,4567,4568,4569,4570,4571],"id":"n761","parent":"11","position":{"x":7.979694910895579,"z":25,"y":17.979694910895578},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-0.00026709778213833386,"z":-5.860929151395569e-5,"y":-0.0010477658208068537},"angle":{"x":-7.16777730786704e-5,"z":8.978061468318768e-6,"y":7.461416028429891e-5}},{"degrees_of_freedom":[4572,4573,4574,4575,4576,4577],"id":"n762","parent":"11","position":{"x":10,"z":25,"y":17.142857142857142},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-0.0002643812970058066,"z":-0.00014937001403913537,"y":-0.0010582253596312494},"angle":{"x":0.00018282920131234285,"z":-1.3294355414489382e-5,"y":-3.080607296883362e-5}},{"degrees_of_freedom":[4578,4579,4580,4581,4582,4583],"id":"n763","parent":"11","position":{"x":12.020305089104422,"z":25,"y":17.979694910895578},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-0.00025408335698071625,"z":6.586609683125364e-5,"y":-0.0010891577849187384},"angle":{"x":-0.0003173921385211951,"z":-1.2243650223343699e-5,"y":-0.00023800461453076584}},{"degrees_of_freedom":[4584,4585,4586,4587,4588,4589],"id":"n764","parent":"11","position":{"x":12.857142857142858,"z":25,"y":20},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-0.00024307324000341713,"z":-0.00037619168074176,"y":-0.0011084424345610437},"angle":{"x":-8.230589127023999e-5,"z":-1.3078940077461807e-6,"y":0.00032954390558828693}},{"degrees_of_freedom":[4590,4591,4592,4593,4594,4595],"id":"n765","parent":"11","position":{"x":12.020305089104422,"z":25,"y":22.020305089104422},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-0.00025001043372116277,"z":-0.00026669980888061447,"y":-0.0011269802755108982},"angle":{"x":1.570720314778021e-5,"z":1.192087574063258e-5,"y":9.291966047335284e-5}},{"degrees_of_freedom":[4596,4597,4598,4599,4600,4601],"id":"n766","parent":"11","position":{"x":25,"z":0,"y":-5},"restrained_degrees_of_freedom":[true,true,true,true,true,true],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0,"z":0,"y":0},"angle":{"x":0,"z":0,"y":0}},{"degrees_of_freedom":[4602,4603,4604,4605,4606,4607],"id":"n767","parent":"11","position":{"x":20,"z":-5,"y":-5},"restrained_degrees_of_freedom":[true,true,true,true,true,true],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0,"z":0,"y":0},"angle":{"x":0,"z":0,"y":0}},{"degrees_of_freedom":[4608,4609,4610,4611,4612,4613],"id":"n768","parent":"11","position":{"x":20,"z":5,"y":-5},"restrained_degrees_of_freedom":[true,true,true,true,true,true],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0,"z":0,"y":0},"angle":{"x":0,"z":0,"y":0}},{"degrees_of_freedom":[4614,4615,4616,4617,4618,4619],"id":"n769","parent":"11","position":{"x":22.857142857142858,"z":3.140184917367551e-16,"y":-5},"restrained_degrees_of_freedom":[true,true,true,true,true,true],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0,"z":0,"y":0},"angle":{"x":0,"z":0,"y":0}},{"degrees_of_freedom":[4620,4621,4622,4623,4624,4625],"id":"n770","parent":"11","position":{"x":22.020305089104422,"z":-2.020305089104421,"y":-5},"restrained_degrees_of_freedom":[true,true,true,true,true,true],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0,"z":0,"y":0},"angle":{"x":0,"z":0,"y":0}},{"degrees_of_freedom":[4626,4627,4628,4629,4630,4631],"id":"n771","parent":"11","position":{"x":20,"z":-2.857142857142857,"y":-5},"restrained_degrees_of_freedom":[true,true,true,true,true,true],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0,"z":0,"y":0},"angle":{"x":0,"z":0,"y":0}},{"degrees_of_freedom":[4632,4633,4634,4635,4636,4637],"id":"n772","parent":"11","position":{"x":17.979694910895578,"z":-2.0203050891044216,"y":-5},"restrained_degrees_of_freedom":[true,true,true,true,true,true],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0,"z":0,"y":0},"angle":{"x":0,"z":0,"y":0}},{"degrees_of_freedom":[4638,4639,4640,4641,4642,4643],"id":"n773","parent":"11","position":{"x":17.142857142857142,"z":-3.140184917367551e-16,"y":-5},"restrained_degrees_of_freedom":[true,true,true,true,true,true],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0,"z":0,"y":0},"angle":{"x":0,"z":0,"y":0}},{"degrees_of_freedom":[4644,4645,4646,4647,4648,4649],"id":"n774","parent":"11","position":{"x":17.979694910895578,"z":2.020305089104421,"y":-5},"restrained_degrees_of_freedom":[true,true,true,true,true,true],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0,"z":0,"y":0},"angle":{"x":0,"z":0,"y":0}},{"degrees_of_freedom":[4650,4651,4652,4653,4654,4655],"id":"n775","parent":"11","position":{"x":20,"z":2.857142857142857,"y":-5},"restrained_degrees_of_freedom":[true,true,true,true,true,true],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0,"z":0,"y":0},"angle":{"x":0,"z":0,"y":0}},{"degrees_of_freedom":[4656,4657,4658,4659,4660,4661],"id":"n776","parent":"11","position":{"x":22.020305089104422,"z":2.0203050891044216,"y":-5},"restrained_degrees_of_freedom":[true,true,true,true,true,true],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0,"z":0,"y":0},"angle":{"x":0,"z":0,"y":0}},{"degrees_of_freedom":[4662,4663,4664,4665,4666,4667],"id":"n777","parent":"11","position":{"x":25,"z":0,"y":5},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":-400},"displacement":{"x":8.800141942526229e-5,"z":0.00010232256209551139,"y":-0.000652952104616271},"angle":{"x":6.471610938795587e-5,"z":2.9612797759522088e-5,"y":-9.987174983013996e-6}},{"degrees_of_freedom":[4668,4669,4670,4671,4672,4673],"id":"n778","parent":"11","position":{"x":25,"z":-5,"y":0},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":2.7738774934379678e-5,"z":2.158534983064027e-5,"y":-0.00028416174371298107},"angle":{"x":5.356141063335963e-5,"z":-1.5413640147758206e-5,"y":5.3132655423841006e-5}},{"degrees_of_freedom":[4674,4675,4676,4677,4678,4679],"id":"n779","parent":"11","position":{"x":25,"z":5,"y":0},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0.0001242658387548679,"z":1.126801385719565e-5,"y":-0.00031755318847370625},"angle":{"x":2.5421613566736595e-5,"z":-7.082895234246143e-6,"y":6.680146293195557e-6}},{"degrees_of_freedom":[4680,4681,4682,4683,4684,4685],"id":"n780","parent":"11","position":{"x":25,"z":2.857142857142857,"y":-3.140184917367551e-16},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":6.859387516188269e-5,"z":2.570824268136168e-5,"y":-0.0001958628109297879},"angle":{"x":-6.988078071399191e-7,"z":-3.164342243868323e-5,"y":-7.5347065782503795e-6}},{"degrees_of_freedom":[4686,4687,4688,4689,4690,4691],"id":"n781","parent":"11","position":{"x":25,"z":2.0203050891044216,"y":2.020305089104421},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0.00014979704601165674,"z":1.6012439108499038e-5,"y":-0.00024521632334961415},"angle":{"x":-1.8912973725396258e-5,"z":-0.00013095972484652508,"y":0.00027337446344103376}},{"degrees_of_freedom":[4692,4693,4694,4695,4696,4697],"id":"n782","parent":"11","position":{"x":25,"z":3.140184917367551e-16,"y":2.857142857142857},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0.0003458385656567038,"z":2.0405875959167535e-6,"y":-0.0003650250994919884},"angle":{"x":-8.392828973366257e-5,"z":-2.6679013248306088e-5,"y":-2.157597743500418e-5}},{"degrees_of_freedom":[4698,4699,4700,4701,4702,4703],"id":"n783","parent":"11","position":{"x":25,"z":-2.020305089104421,"y":2.0203050891044216},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0.00023697712548672526,"z":2.2163128383317706e-6,"y":-0.0004591918432982362},"angle":{"x":3.2702275612055056e-5,"z":-0.00018892143407618582,"y":-0.0004804668386822553}},{"degrees_of_freedom":[4704,4705,4706,4707,4708,4709],"id":"n784","parent":"11","position":{"x":25,"z":-2.857142857142857,"y":3.140184917367551e-16},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0.0001918849641075207,"z":-1.4548670222154077e-5,"y":-0.0004090187218259293},"angle":{"x":-1.70066426007746e-6,"z":-3.1643496257546173e-5,"y":-3.561715848839327e-5}},{"degrees_of_freedom":[4710,4711,4712,4713,4714,4715],"id":"n785","parent":"11","position":{"x":25,"z":-2.0203050891044216,"y":-2.020305089104421},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":8.718122856283072e-5,"z":9.98886848205104e-7,"y":-0.0003646139240041374},"angle":{"x":-2.1063463291467725e-5,"z":-0.00021474592763804512,"y":0.000482275199450981}},{"degrees_of_freedom":[4716,4717,4718,4719,4720,4721],"id":"n786","parent":"11","position":{"x":25,"z":-3.140184917367551e-16,"y":-2.857142857142857},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-0.0001655953164176197,"z":1.8097223470686535e-5,"y":-0.00024595716020589704},"angle":{"x":-8.707025379229689e-5,"z":-3.660766112731904e-5,"y":-2.157591047222122e-5}},{"degrees_of_freedom":[4722,4723,4724,4725,4726,4727],"id":"n787","parent":"11","position":{"x":25,"z":2.020305089104421,"y":-2.0203050891044216},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":1.361981380321795e-9,"z":1.6124182134157457e-5,"y":-0.00014483930102924912},"angle":{"x":2.2419023703825954e-5,"z":-0.0001213344797223186,"y":-0.00026121957614799583}},{"degrees_of_freedom":[4728,4729,4730,4731,4732,4733],"id":"n788","parent":"11","position":{"x":20,"z":-5,"y":5},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":-400},"displacement":{"x":0.00011334209949441448,"z":5.8105372645226485e-5,"y":-0.0005959461655383495},"angle":{"x":-4.079209826286134e-6,"z":-5.0344904002335884e-5,"y":-1.4339083578549107e-5}},{"degrees_of_freedom":[4734,4735,4736,4737,4738,4739],"id":"n789","parent":"11","position":{"x":20,"z":5,"y":5},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":-800},"displacement":{"x":7.708897348434719e-5,"z":6.598706287040188e-5,"y":-0.0005946654881488123},"angle":{"x":-3.2121053295072184e-6,"z":-8.193747229511622e-6,"y":-1.183225324968823e-5}},{"degrees_of_freedom":[4740,4741,4742,4743,4744,4745],"id":"n790","parent":"11","position":{"x":22.857142857142858,"z":-3.140184917367551e-16,"y":5},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":8.648890146624778e-5,"z":8.238931287862016e-5,"y":-0.0012086982484194914},"angle":{"x":2.5499450691717302e-5,"z":-7.248925324208063e-5,"y":-9.422086833866765e-6}},{"degrees_of_freedom":[4746,4747,4748,4749,4750,4751],"id":"n791","parent":"11","position":{"x":22.020305089104422,"z":2.020305089104421,"y":5},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":7.609083019864705e-5,"z":7.862689318275907e-5,"y":-0.000846750384986554},"angle":{"x":0.000902070428062591,"z":-0.00038200502205928434,"y":-9.544255447913165e-6}},{"degrees_of_freedom":[4752,4753,4754,4755,4756,4757],"id":"n792","parent":"11","position":{"x":20,"z":2.857142857142857,"y":5},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":7.02843053494839e-5,"z":6.0220016429132546e-5,"y":-0.0007044430895328101},"angle":{"x":1.9764346152672077e-5,"z":-6.160547408559473e-5,"y":-1.1147815915382526e-5}},{"degrees_of_freedom":[4758,4759,4760,4761,4762,4763],"id":"n793","parent":"11","position":{"x":17.979694910895578,"z":2.0203050891044216,"y":5},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":8.276945365404472e-5,"z":4.1895583130268185e-5,"y":-0.000545809307597526},"angle":{"x":-0.0005194441667586044,"z":-0.00024934992467869646,"y":-1.1863896156778706e-5}},{"degrees_of_freedom":[4764,4765,4766,4767,4768,4769],"id":"n794","parent":"11","position":{"x":17.142857142857142,"z":3.140184917367551e-16,"y":5},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":8.724850893384296e-5,"z":3.435742538018852e-5,"y":-0.00017447033207237264},"angle":{"x":2.469618463307997e-5,"z":-5.5895725810522164e-5,"y":-7.897993927998666e-6}},{"degrees_of_freedom":[4770,4771,4772,4773,4774,4775],"id":"n795","parent":"11","position":{"x":17.979694910895578,"z":-2.020305089104421,"y":5},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":9.839478752703262e-5,"z":3.7113693772261864e-5,"y":-0.00044193957141291186},"angle":{"x":0.0007594617848552986,"z":-0.0003146030338934354,"y":-1.3253384750336725e-5}},{"degrees_of_freedom":[4776,4777,4778,4779,4780,4781],"id":"n796","parent":"11","position":{"x":20,"z":-2.857142857142857,"y":5},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0.00010626012979981704,"z":5.853373576063406e-5,"y":-0.0005540664233278722},"angle":{"x":3.2867328248906716e-5,"z":-6.26226888704576e-5,"y":-1.1079944896757143e-5}},{"degrees_of_freedom":[4782,4783,4784,4785,4786,4787],"id":"n797","parent":"11","position":{"x":22.020305089104422,"z":-2.0203050891044216,"y":5},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":9.631437737753947e-5,"z":7.701626674672259e-5,"y":-0.0007421975994293118},"angle":{"x":-0.0006483939713179124,"z":-0.0003111453964446626,"y":-1.1149930097043164e-5}},{"degrees_of_freedom":[4788,4789,4790,4791,4792,4793],"id":"n798","parent":"11","position":{"x":20,"z":-5,"y":-2.857142857142857},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":3.9158471347357616e-5,"z":-5.4867669866695094e-5,"y":-0.0001984883155747042},"angle":{"x":-6.0522621359132125e-6,"z":3.8828065768796233e-5,"y":-2.9665007647440442e-5}},{"degrees_of_freedom":[4794,4795,4796,4797,4798,4799],"id":"n799","parent":"11","position":{"x":22.020305089104422,"z":-5,"y":-2.020305089104421},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":3.40352812281303e-5,"z":-7.77771740489967e-11,"y":-0.00015852707003221532},"angle":{"x":-2.5604918221482238e-5,"z":-1.4772397029641545e-5,"y":-3.776396946778483e-5}},{"degrees_of_freedom":[4800,4801,4802,4803,4804,4805],"id":"n800","parent":"11","position":{"x":22.857142857142858,"z":-5,"y":0},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":3.5623675032757584e-5,"z":-2.012750450013315e-5,"y":-0.00021025944860295122},"angle":{"x":7.130459417117838e-5,"z":3.082263999049248e-6,"y":0.00019619626990021076}},{"degrees_of_freedom":[4806,4807,4808,4809,4810,4811],"id":"n801","parent":"11","position":{"x":22.020305089104422,"z":-5,"y":2.020305089104421},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":1.9862891836544753e-5,"z":0.0002881140087995616,"y":-0.0002691954041329423},"angle":{"x":0.00016063500303244036,"z":2.418818564425198e-5,"y":-1.946633213789906e-5}},{"degrees_of_freedom":[4812,4813,4814,4815,4816,4817],"id":"n802","parent":"11","position":{"x":20,"z":-5,"y":2.857142857142857},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":2.8378163503348867e-6,"z":0.0003832114008181824,"y":-0.000349776805817009},"angle":{"x":0.00026111292503056536,"z":3.8099015521420374e-5,"y":-6.108574258655343e-5}},{"degrees_of_freedom":[4818,4819,4820,4821,4822,4823],"id":"n803","parent":"11","position":{"x":17.979694910895578,"z":-5,"y":2.020305089104421},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":4.349657002167933e-6,"z":4.1290429173349405e-5,"y":-0.0003851362777192358},"angle":{"x":-0.00015171588264969408,"z":-1.9901701298630717e-5,"y":-0.00023208498962297314}},{"degrees_of_freedom":[4824,4825,4826,4827,4828,4829],"id":"n804","parent":"11","position":{"x":17.142857142857142,"z":-5,"y":0},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":1.1631504665227996e-7,"z":0.00015358522369722679,"y":-0.00033525901371759794},"angle":{"x":3.988389732808953e-5,"z":4.777715286724166e-6,"y":0.0002304776132508249}},{"degrees_of_freedom":[4830,4831,4832,4833,4834,4835],"id":"n805","parent":"11","position":{"x":17.979694910895578,"z":-5,"y":-2.020305089104421},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":2.1484432394510787e-5,"z":-0.00011986480083748148,"y":-0.0002799681560437164},"angle":{"x":0.0001794688977188101,"z":2.5350655578390547e-5,"y":-0.00010651039030331402}},{"degrees_of_freedom":[4836,4837,4838,4839,4840,4841],"id":"n806","parent":"11","position":{"x":20,"z":5,"y":2.857142857142857},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":7.38216042058211e-5,"z":7.93532352799837e-5,"y":-0.00042411034187861835},"angle":{"x":3.4382363873578516e-5,"z":-4.601895313227497e-6,"y":-5.808508656254651e-6}},{"degrees_of_freedom":[4842,4843,4844,4845,4846,4847],"id":"n807","parent":"11","position":{"x":17.979694910895578,"z":5,"y":2.020305089104421},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":4.523421709875858e-5,"z":3.9325514987696503e-5,"y":-0.0003793433295401541},"angle":{"x":-3.210826546052468e-6,"z":-4.092281841020902e-5,"y":-2.06677984242973e-5}},{"degrees_of_freedom":[4848,4849,4850,4851,4852,4853],"id":"n808","parent":"11","position":{"x":17.142857142857142,"z":5,"y":0},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":1.2655800329852194e-5,"z":2.8375920413229477e-5,"y":-0.0002838547268893206},"angle":{"x":7.395088991846353e-6,"z":-7.833946246048394e-6,"y":4.6846780876085e-6}},{"degrees_of_freedom":[4854,4855,4856,4857,4858,4859],"id":"n809","parent":"11","position":{"x":17.979694910895578,"z":5,"y":-2.020305089104421},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":1.5626924118573984e-5,"z":9.585690421264548e-6,"y":-0.00019904181597212752},"angle":{"x":1.5525147330733718e-5,"z":2.912774289882799e-5,"y":-1.5195477342506216e-5}},{"degrees_of_freedom":[4860,4861,4862,4863,4864,4865],"id":"n810","parent":"11","position":{"x":20,"z":5,"y":-2.857142857142857},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":3.4533052239465706e-5,"z":2.797627875672557e-5,"y":-0.00017005443113106013},"angle":{"x":-2.2551153953247013e-5,"z":-1.9460368599064045e-6,"y":6.905494858835453e-8}},{"degrees_of_freedom":[4866,4867,4868,4869,4870,4871],"id":"n811","parent":"11","position":{"x":22.020305089104422,"z":5,"y":-2.020305089104421},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":6.625237913392513e-5,"z":8.623544717771334e-6,"y":-0.00021493438436143966},"angle":{"x":2.014452454146895e-5,"z":-4.8213753242193236e-5,"y":1.8261379756815275e-5}},{"degrees_of_freedom":[4872,4873,4874,4875,4876,4877],"id":"n812","parent":"11","position":{"x":22.857142857142858,"z":5,"y":0},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0.00010773229117378732,"z":3.766636204186481e-5,"y":-0.00031068507712571396},"angle":{"x":1.4066942022727817e-5,"z":-8.41699071743807e-6,"y":-2.9116446030124674e-6}},{"degrees_of_freedom":[4878,4879,4880,4881,4882,4883],"id":"n813","parent":"11","position":{"x":22.020305089104422,"z":5,"y":2.020305089104421},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":9.762826262650021e-5,"z":6.183602816323206e-5,"y":-0.00039548318302091827},"angle":{"x":7.701525086061045e-6,"z":3.636386418959175e-5,"y":5.955382241480321e-6}},{"degrees_of_freedom":[4884,4885,4886,4887,4888,4889],"id":"n814","parent":"11","position":{"x":25,"z":10,"y":-5},"restrained_degrees_of_freedom":[true,true,true,true,true,true],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0,"z":0,"y":0},"angle":{"x":0,"z":0,"y":0}},{"degrees_of_freedom":[4890,4891,4892,4893,4894,4895],"id":"n815","parent":"11","position":{"x":20,"z":15,"y":-5},"restrained_degrees_of_freedom":[true,true,true,true,true,true],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0,"z":0,"y":0},"angle":{"x":0,"z":0,"y":0}},{"degrees_of_freedom":[4896,4897,4898,4899,4900,4901],"id":"n816","parent":"11","position":{"x":22.857142857142858,"z":10,"y":-5},"restrained_degrees_of_freedom":[true,true,true,true,true,true],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0,"z":0,"y":0},"angle":{"x":0,"z":0,"y":0}},{"degrees_of_freedom":[4902,4903,4904,4905,4906,4907],"id":"n817","parent":"11","position":{"x":22.020305089104422,"z":7.979694910895579,"y":-5},"restrained_degrees_of_freedom":[true,true,true,true,true,true],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0,"z":0,"y":0},"angle":{"x":0,"z":0,"y":0}},{"degrees_of_freedom":[4908,4909,4910,4911,4912,4913],"id":"n818","parent":"11","position":{"x":20,"z":7.142857142857142,"y":-5},"restrained_degrees_of_freedom":[true,true,true,true,true,true],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0,"z":0,"y":0},"angle":{"x":0,"z":0,"y":0}},{"degrees_of_freedom":[4914,4915,4916,4917,4918,4919],"id":"n819","parent":"11","position":{"x":17.979694910895578,"z":7.979694910895578,"y":-5},"restrained_degrees_of_freedom":[true,true,true,true,true,true],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0,"z":0,"y":0},"angle":{"x":0,"z":0,"y":0}},{"degrees_of_freedom":[4920,4921,4922,4923,4924,4925],"id":"n820","parent":"11","position":{"x":17.142857142857142,"z":10,"y":-5},"restrained_degrees_of_freedom":[true,true,true,true,true,true],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0,"z":0,"y":0},"angle":{"x":0,"z":0,"y":0}},{"degrees_of_freedom":[4926,4927,4928,4929,4930,4931],"id":"n821","parent":"11","position":{"x":17.979694910895578,"z":12.020305089104422,"y":-5},"restrained_degrees_of_freedom":[true,true,true,true,true,true],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0,"z":0,"y":0},"angle":{"x":0,"z":0,"y":0}},{"degrees_of_freedom":[4932,4933,4934,4935,4936,4937],"id":"n822","parent":"11","position":{"x":20,"z":12.857142857142858,"y":-5},"restrained_degrees_of_freedom":[true,true,true,true,true,true],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0,"z":0,"y":0},"angle":{"x":0,"z":0,"y":0}},{"degrees_of_freedom":[4938,4939,4940,4941,4942,4943],"id":"n823","parent":"11","position":{"x":22.020305089104422,"z":12.020305089104422,"y":-5},"restrained_degrees_of_freedom":[true,true,true,true,true,true],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0,"z":0,"y":0},"angle":{"x":0,"z":0,"y":0}},{"degrees_of_freedom":[4944,4945,4946,4947,4948,4949],"id":"n824","parent":"11","position":{"x":25,"z":10,"y":5},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":-400},"displacement":{"x":3.870480823596791e-5,"z":0.00011116010583942319,"y":-0.0006340980656278486},"angle":{"x":6.178452011405212e-5,"z":-9.675292959041952e-6,"y":-1.0192538777397896e-5}},{"degrees_of_freedom":[4950,4951,4952,4953,4954,4955],"id":"n825","parent":"11","position":{"x":25,"z":15,"y":0},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":9.638280962812538e-5,"z":1.3296799792446775e-5,"y":-0.00028587553279655145},"angle":{"x":2.6034950339209882e-5,"z":3.592286216253258e-6,"y":1.2413681132932838e-5}},{"degrees_of_freedom":[4956,4957,4958,4959,4960,4961],"id":"n826","parent":"11","position":{"x":25,"z":12.857142857142858,"y":-3.140184917367551e-16},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":1.7744748725671213e-5,"z":3.089722166787598e-5,"y":-0.00018313660477618392},"angle":{"x":-6.904284149922484e-7,"z":3.055851861290809e-6,"y":1.1192728214792338e-5}},{"degrees_of_freedom":[4962,4963,4964,4965,4966,4967],"id":"n827","parent":"11","position":{"x":25,"z":12.020305089104422,"y":2.020305089104421},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":8.497894269071734e-8,"z":2.0133687967381023e-5,"y":-0.00022874943162173967},"angle":{"x":-1.9463078183797306e-5,"z":-2.1858788253737524e-5,"y":8.54629676513048e-5}},{"degrees_of_freedom":[4968,4969,4970,4971,4972,4973],"id":"n828","parent":"11","position":{"x":25,"z":10,"y":2.857142857142857},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-5.27882892605185e-5,"z":6.834069309617607e-6,"y":-0.00035263217003161083},"angle":{"x":-8.602276152471342e-5,"z":1.221042896237096e-5,"y":-7.098395746492226e-6}},{"degrees_of_freedom":[4974,4975,4976,4977,4978,4979],"id":"n829","parent":"11","position":{"x":25,"z":7.979694910895579,"y":2.0203050891044216},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":3.3886197490784665e-5,"z":8.224537507088451e-6,"y":-0.0004479694759005627},"angle":{"x":3.303817369833887e-5,"z":6.468185481353036e-5,"y":0.00013751227622158823}},{"degrees_of_freedom":[4980,4981,4982,4983,4984,4985],"id":"n830","parent":"11","position":{"x":25,"z":7.142857142857142,"y":3.140184917367551e-16},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":7.402904948259523e-5,"z":-1.0437908444908732e-5,"y":-0.0004013553019192155},"angle":{"x":-1.4304439129958295e-6,"z":6.485789688996902e-6,"y":-3.08921373394726e-5}},{"degrees_of_freedom":[4986,4987,4988,4989,4990,4991],"id":"n831","parent":"11","position":{"x":25,"z":7.979694910895578,"y":-2.020305089104421},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":6.24684722629685e-5,"z":7.642246174105813e-6,"y":-0.00035908753610330954},"angle":{"x":-2.4169875244128857e-5,"z":1.5508197862786974e-5,"y":-6.021248207685648e-5}},{"degrees_of_freedom":[4992,4993,4994,4995,4996,4997],"id":"n832","parent":"11","position":{"x":25,"z":10,"y":-2.857142857142857},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":2.4319613227103532e-5,"z":2.4501941401693743e-5,"y":-0.00023678676176697297},"angle":{"x":-8.845384393169353e-5,"z":-2.6688179411146336e-6,"y":-1.2601187459611544e-5}},{"degrees_of_freedom":[4998,4999,5000,5001,5002,5003],"id":"n833","parent":"11","position":{"x":25,"z":12.020305089104422,"y":-2.0203050891044216},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":1.6671536004363002e-5,"z":2.07442612263812e-5,"y":-0.00013644609010793476},"angle":{"x":2.1883922917802e-5,"z":2.0176042202201685e-5,"y":5.5814909387453854e-5}},{"degrees_of_freedom":[5004,5005,5006,5007,5008,5009],"id":"n834","parent":"11","position":{"x":20,"z":15,"y":5},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":-800},"displacement":{"x":1.0456342523547553e-5,"z":8.245274375548037e-5,"y":-0.0005790314409916059},"angle":{"x":2.1745604295069177e-6,"z":2.949666724435306e-6,"y":-1.0470870735768576e-5}},{"degrees_of_freedom":[5010,5011,5012,5013,5014,5015],"id":"n835","parent":"11","position":{"x":22.857142857142858,"z":10,"y":5},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":3.784614294792034e-5,"z":9.323444482821343e-5,"y":-0.000625600289380924},"angle":{"x":2.2498138512085882e-5,"z":-6.3999195468453515e-6,"y":-1.1572737141198486e-5}},{"degrees_of_freedom":[5016,5017,5018,5019,5020,5021],"id":"n836","parent":"11","position":{"x":22.020305089104422,"z":12.020305089104422,"y":5},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":2.3414833153037043e-5,"z":9.048011783643545e-5,"y":-0.0006289894664451458},"angle":{"x":-0.00010039866997063004,"z":3.416685756440536e-5,"y":-8.012168615950504e-6}},{"degrees_of_freedom":[5022,5023,5024,5025,5026,5027],"id":"n837","parent":"11","position":{"x":20,"z":12.857142857142858,"y":5},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":1.4965295335786696e-5,"z":7.691670724838649e-5,"y":-0.0006212923399374747},"angle":{"x":1.7015186483357804e-5,"z":-1.0228971307128416e-5,"y":-8.24168835159008e-6}},{"degrees_of_freedom":[5028,5029,5030,5031,5032,5033],"id":"n838","parent":"11","position":{"x":17.979694910895578,"z":12.020305089104422,"y":5},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":1.9306572599031173e-5,"z":6.0769284059757894e-5,"y":-0.0005851172860546789},"angle":{"x":-0.00010443872075301121,"z":-5.0285672608392706e-5,"y":-9.854593175151207e-6}},{"degrees_of_freedom":[5034,5035,5036,5037,5038,5039],"id":"n839","parent":"11","position":{"x":17.142857142857142,"z":10,"y":5},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":3.226010963294067e-5,"z":5.382662711414831e-5,"y":-0.0005197541606614343},"angle":{"x":1.3641958899479792e-5,"z":-5.654155039418397e-6,"y":-1.276909746940052e-5}},{"degrees_of_freedom":[5040,5041,5042,5043,5044,5045],"id":"n840","parent":"11","position":{"x":17.979694910895578,"z":7.979694910895579,"y":5},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":4.4697091120852484e-5,"z":5.809631810792909e-5,"y":-0.0005223031880193374},"angle":{"x":0.00012574638945460055,"z":-4.37456919674527e-5,"y":-9.894290500068408e-6}},{"degrees_of_freedom":[5046,5047,5048,5049,5050,5051],"id":"n841","parent":"11","position":{"x":20,"z":7.142857142857142,"y":5},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":5.567183410674034e-5,"z":7.201389071927345e-5,"y":-0.0005180353012137304},"angle":{"x":1.9124616763716693e-5,"z":-4.708875537169711e-6,"y":-8.172311466162615e-6}},{"degrees_of_freedom":[5052,5053,5054,5055,5056,5057],"id":"n842","parent":"11","position":{"x":22.020305089104422,"z":7.979694910895578,"y":5},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":4.960213520274419e-5,"z":8.72875348331634e-5,"y":-0.000548854404201299},"angle":{"x":-0.00024739245844675146,"z":-0.00010084866365298828,"y":-1.096560221906341e-5}},{"degrees_of_freedom":[5058,5059,5060,5061,5062,5063],"id":"n843","parent":"11","position":{"x":20,"z":15,"y":2.857142857142857},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":3.1377489371548494e-5,"z":8.876513759877269e-5,"y":-0.0004122077587379459},"angle":{"x":2.753593701147213e-5,"z":-1.2979474146359228e-6,"y":-2.9116865532810136e-6}},{"degrees_of_freedom":[5064,5065,5066,5067,5068,5069],"id":"n844","parent":"11","position":{"x":17.979694910895578,"z":15,"y":2.020305089104421},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":7.508215286784359e-6,"z":6.046521924226705e-5,"y":-0.0003750580224832129},"angle":{"x":-3.918369946906784e-6,"z":-3.594648500343025e-5,"y":-1.50113853543217e-5}},{"degrees_of_freedom":[5070,5071,5072,5073,5074,5075],"id":"n845","parent":"11","position":{"x":17.142857142857142,"z":15,"y":0},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-1.2631166665120793e-5,"z":5.553001566215032e-5,"y":-0.0002847439228212578},"angle":{"x":9.163431222707421e-6,"z":-1.3871956148434617e-6,"y":1.6052114560831092e-5}},{"degrees_of_freedom":[5076,5077,5078,5079,5080,5081],"id":"n846","parent":"11","position":{"x":17.979694910895578,"z":15,"y":-2.020305089104421},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":1.5259127898841952e-6,"z":2.3728775070976042e-5,"y":-0.00019720044540243634},"angle":{"x":2.029944621433127e-5,"z":3.2458348978483345e-5,"y":-1.1351352443597765e-5}},{"degrees_of_freedom":[5082,5083,5084,5085,5086,5087],"id":"n847","parent":"11","position":{"x":20,"z":15,"y":-2.857142857142857},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":2.4085315845294137e-5,"z":3.0654676768099726e-5,"y":-0.00016467496305830724},"angle":{"x":-1.427954288201913e-5,"z":-2.1122684901322073e-7,"y":2.2440847652353718e-6}},{"degrees_of_freedom":[5088,5089,5090,5091,5092,5093],"id":"n848","parent":"11","position":{"x":22.020305089104422,"z":15,"y":-2.020305089104421},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":5.300386857112435e-5,"z":1.3681250117498673e-5,"y":-0.00020310004662766565},"angle":{"x":2.21183295713532e-5,"z":-4.2429516236934626e-5,"y":1.8048232916726214e-5}},{"degrees_of_freedom":[5094,5095,5096,5097,5098,5099],"id":"n849","parent":"11","position":{"x":22.857142857142858,"z":15,"y":0},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":8.062334062251834e-5,"z":4.657700920077297e-5,"y":-0.00029086644625890654},"angle":{"x":1.5000458870405017e-5,"z":-1.0329544588630023e-6,"y":-5.075020743154878e-6}},{"degrees_of_freedom":[5100,5101,5102,5103,5104,5105],"id":"n850","parent":"11","position":{"x":22.020305089104422,"z":15,"y":2.020305089104421},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":5.7318079396473766e-5,"z":7.097882694935065e-5,"y":-0.000376736865518564},"angle":{"x":7.888455221049903e-6,"z":4.009784557741376e-5,"y":6.1556734248759646e-6}},{"degrees_of_freedom":[5106,5107,5108,5109,5110,5111],"id":"n851","parent":"11","position":{"x":25,"z":20,"y":-5},"restrained_degrees_of_freedom":[true,true,true,true,true,true],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0,"z":0,"y":0},"angle":{"x":0,"z":0,"y":0}},{"degrees_of_freedom":[5112,5113,5114,5115,5116,5117],"id":"n852","parent":"11","position":{"x":20,"z":25,"y":-5},"restrained_degrees_of_freedom":[true,true,true,true,true,true],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0,"z":0,"y":0},"angle":{"x":0,"z":0,"y":0}},{"degrees_of_freedom":[5118,5119,5120,5121,5122,5123],"id":"n853","parent":"11","position":{"x":22.857142857142858,"z":20,"y":-5},"restrained_degrees_of_freedom":[true,true,true,true,true,true],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0,"z":0,"y":0},"angle":{"x":0,"z":0,"y":0}},{"degrees_of_freedom":[5124,5125,5126,5127,5128,5129],"id":"n854","parent":"11","position":{"x":22.020305089104422,"z":17.979694910895578,"y":-5},"restrained_degrees_of_freedom":[true,true,true,true,true,true],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0,"z":0,"y":0},"angle":{"x":0,"z":0,"y":0}},{"degrees_of_freedom":[5130,5131,5132,5133,5134,5135],"id":"n855","parent":"11","position":{"x":20,"z":17.142857142857142,"y":-5},"restrained_degrees_of_freedom":[true,true,true,true,true,true],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0,"z":0,"y":0},"angle":{"x":0,"z":0,"y":0}},{"degrees_of_freedom":[5136,5137,5138,5139,5140,5141],"id":"n856","parent":"11","position":{"x":17.979694910895578,"z":17.979694910895578,"y":-5},"restrained_degrees_of_freedom":[true,true,true,true,true,true],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0,"z":0,"y":0},"angle":{"x":0,"z":0,"y":0}},{"degrees_of_freedom":[5142,5143,5144,5145,5146,5147],"id":"n857","parent":"11","position":{"x":17.142857142857142,"z":20,"y":-5},"restrained_degrees_of_freedom":[true,true,true,true,true,true],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0,"z":0,"y":0},"angle":{"x":0,"z":0,"y":0}},{"degrees_of_freedom":[5148,5149,5150,5151,5152,5153],"id":"n858","parent":"11","position":{"x":17.979694910895578,"z":22.020305089104422,"y":-5},"restrained_degrees_of_freedom":[true,true,true,true,true,true],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0,"z":0,"y":0},"angle":{"x":0,"z":0,"y":0}},{"degrees_of_freedom":[5154,5155,5156,5157,5158,5159],"id":"n859","parent":"11","position":{"x":20,"z":22.857142857142858,"y":-5},"restrained_degrees_of_freedom":[true,true,true,true,true,true],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0,"z":0,"y":0},"angle":{"x":0,"z":0,"y":0}},{"degrees_of_freedom":[5160,5161,5162,5163,5164,5165],"id":"n860","parent":"11","position":{"x":22.020305089104422,"z":22.020305089104422,"y":-5},"restrained_degrees_of_freedom":[true,true,true,true,true,true],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0,"z":0,"y":0},"angle":{"x":0,"z":0,"y":0}},{"degrees_of_freedom":[5166,5167,5168,5169,5170,5171],"id":"n861","parent":"11","position":{"x":25,"z":20,"y":5},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":-400},"displacement":{"x":-3.4923994723091654e-5,"z":0.0001181852966244914,"y":-0.0006207150889528164},"angle":{"x":6.095568704466468e-5,"z":-1.4343598663791722e-5,"y":-9.175726807808534e-6}},{"degrees_of_freedom":[5172,5173,5174,5175,5176,5177],"id":"n862","parent":"11","position":{"x":25,"z":25,"y":0},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":1.9116781181668117e-5,"z":3.49704819706425e-6,"y":-0.0003067974878889031},"angle":{"x":5.585383954939906e-5,"z":7.378969094963392e-6,"y":6.945596421557684e-5}},{"degrees_of_freedom":[5178,5179,5180,5181,5182,5183],"id":"n863","parent":"11","position":{"x":25,"z":22.857142857142858,"y":-3.140184917367551e-16},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-0.000141316232206683,"z":3.328005619676882e-5,"y":-0.00017988156340219163},"angle":{"x":2.183454355698826e-6,"z":4.9679720841884016e-5,"y":-2.835362685510162e-5}},{"degrees_of_freedom":[5184,5185,5186,5187,5188,5189],"id":"n864","parent":"11","position":{"x":25,"z":22.020305089104422,"y":2.020305089104421},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-0.0002351774922682589,"z":2.9726527690584893e-5,"y":-0.0002213465451922211},"angle":{"x":-1.3820394899463576e-5,"z":3.9701243917274594e-5,"y":-1.302192888443512e-7}},{"degrees_of_freedom":[5190,5191,5192,5193,5194,5195],"id":"n865","parent":"11","position":{"x":25,"z":20,"y":2.857142857142857},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-0.00046177876230488115,"z":1.7846643998170233e-5,"y":-0.0003386640306539485},"angle":{"x":-8.188745005202734e-5,"z":5.3340929094114565e-5,"y":-3.870899077941761e-5}},{"degrees_of_freedom":[5196,5197,5198,5199,5200,5201],"id":"n866","parent":"11","position":{"x":25,"z":17.979694910895578,"y":2.0203050891044216},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-7.876945503446289e-5,"z":1.729820082616824e-5,"y":-0.00043136301880867487},"angle":{"x":3.455991436978187e-5,"z":0.00031276338437860585,"y":0.0006950484838799174}},{"degrees_of_freedom":[5202,5203,5204,5205,5206,5207],"id":"n867","parent":"11","position":{"x":25,"z":17.142857142857142,"y":3.140184917367551e-16},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":7.987864833555858e-5,"z":-4.647002514018972e-6,"y":-0.0003816250687535176},"angle":{"x":1.2250805284939558e-6,"z":4.9680114121864335e-5,"y":-4.9064139055939415e-5}},{"degrees_of_freedom":[5208,5209,5210,5211,5212,5213],"id":"n868","parent":"11","position":{"x":25,"z":17.979694910895578,"y":-2.020305089104421},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0.00015640923637326635,"z":7.1553286466420585e-6,"y":-0.0003403405765568337},"angle":{"x":-1.996077434051147e-5,"z":0.00010555788743027249,"y":-0.00020711126590521018}},{"degrees_of_freedom":[5214,5215,5216,5217,5218,5219],"id":"n869","parent":"11","position":{"x":25,"z":20,"y":-2.857142857142857},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0.0003411682830009422,"z":2.2355361616971104e-5,"y":-0.00022694251551556385},"angle":{"x":-8.210652948238054e-5,"z":4.60186575528014e-5,"y":-3.8709578111631766e-5}},{"degrees_of_freedom":[5220,5221,5222,5223,5224,5225],"id":"n870","parent":"11","position":{"x":25,"z":22.020305089104422,"y":-2.0203050891044216},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-1.3791510189321574e-10,"z":1.9984223322078068e-5,"y":-0.0001328870933162912},"angle":{"x":2.2456142747054123e-5,"z":0.0002499800310732417,"y":0.0005381810251427999}},{"degrees_of_freedom":[5226,5227,5228,5229,5230,5231],"id":"n871","parent":"11","position":{"x":20,"z":25,"y":5},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":-400},"displacement":{"x":-6.619640936075839e-5,"z":8.775545770899125e-5,"y":-0.0006052652259695725},"angle":{"x":-8.862334276218445e-6,"z":3.809208348520768e-5,"y":-9.36379982993781e-6}},{"degrees_of_freedom":[5232,5233,5234,5235,5236,5237],"id":"n872","parent":"11","position":{"x":22.857142857142858,"z":20,"y":5},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-3.4511161267040204e-5,"z":0.0001025527192646492,"y":-0.0005051316439815026},"angle":{"x":1.306098515988908e-5,"z":1.1140289272145158e-5,"y":-1.2784055314212878e-5}},{"degrees_of_freedom":[5238,5239,5240,5241,5242,5243],"id":"n873","parent":"11","position":{"x":22.020305089104422,"z":22.020305089104422,"y":5},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-4.915878402721301e-5,"z":9.857350981292002e-5,"y":-0.0005961079585568783},"angle":{"x":-0.00028309116340229855,"z":0.00011633431527646081,"y":-8.082800312954306e-6}},{"degrees_of_freedom":[5244,5245,5246,5247,5248,5249],"id":"n874","parent":"11","position":{"x":20,"z":22.857142857142858,"y":5},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-5.529162142835551e-5,"z":8.746754531935644e-5,"y":-0.0006353332344129292},"angle":{"x":1.4655689422087567e-5,"z":1.155346863230116e-5,"y":-5.241144665632569e-6}},{"degrees_of_freedom":[5250,5251,5252,5253,5254,5255],"id":"n875","parent":"11","position":{"x":17.979694910895578,"z":22.020305089104422,"y":5},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-5.26335538484658e-5,"z":7.910540962794063e-5,"y":-0.0006500296282408909},"angle":{"x":0.00018800247586138317,"z":7.23522408479035e-5,"y":-4.476500020541698e-6}},{"degrees_of_freedom":[5256,5257,5258,5259,5260,5261],"id":"n876","parent":"11","position":{"x":17.142857142857142,"z":20,"y":5},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-3.954111348292716e-5,"z":7.519662944552527e-5,"y":-0.0006817877188989396},"angle":{"x":1.506116240020731e-5,"z":1.0719761967195176e-5,"y":-1.2376792177486221e-5}},{"degrees_of_freedom":[5262,5263,5264,5265,5266,5267],"id":"n877","parent":"11","position":{"x":17.979694910895578,"z":17.979694910895578,"y":5},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-2.3297104970540368e-5,"z":7.778202580395959e-5,"y":-0.000591034271722683},"angle":{"x":-0.00014259073900344985,"z":6.596962576371202e-5,"y":-6.480299868136951e-6}},{"degrees_of_freedom":[5268,5269,5270,5271,5272,5273],"id":"n878","parent":"11","position":{"x":20,"z":17.142857142857142,"y":5},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-1.6405389419293103e-5,"z":8.616674873820613e-5,"y":-0.0005549845086504093},"angle":{"x":1.3466255156410982e-5,"z":1.0306719048065382e-5,"y":-4.880985875209096e-6}},{"degrees_of_freedom":[5274,5275,5276,5277,5278,5279],"id":"n879","parent":"11","position":{"x":22.020305089104422,"z":17.979694910895578,"y":5},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-1.9870940183055213e-5,"z":9.780927393245586e-5,"y":-0.000541472900944528},"angle":{"x":4.622119315184703e-5,"z":2.2375756929820026e-5,"y":-9.172267662746528e-6}},{"degrees_of_freedom":[5280,5281,5282,5283,5284,5285],"id":"n880","parent":"11","position":{"x":20,"z":25,"y":2.857142857142857},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":2.8413049997207885e-5,"z":6.461660519912971e-5,"y":-0.0003673483013419944},"angle":{"x":-5.29378363961616e-5,"z":-4.04691747787979e-5,"y":-1.1960035758168456e-5}},{"degrees_of_freedom":[5286,5287,5288,5289,5290,5291],"id":"n881","parent":"11","position":{"x":17.979694910895578,"z":25,"y":2.020305089104421},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":1.0096802568732626e-5,"z":8.475406776157028e-5,"y":-0.00028206248505990226},"angle":{"x":1.4438450756764179e-5,"z":-2.6310329763294966e-5,"y":1.5948137268894246e-5}},{"degrees_of_freedom":[5292,5293,5294,5295,5296,5297],"id":"n882","parent":"11","position":{"x":17.142857142857142,"z":25,"y":0},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-1.2283317166707337e-5,"z":6.892999077955585e-5,"y":-0.00021618977793732368},"angle":{"x":2.0975555289394654e-5,"z":-7.690895821519811e-6,"y":3.17300889230732e-5}},{"degrees_of_freedom":[5298,5299,5300,5301,5302,5303],"id":"n883","parent":"11","position":{"x":17.979694910895578,"z":25,"y":-2.020305089104421},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-2.078876309690839e-5,"z":2.3367562763081858e-11,"y":-0.0001629625947781877},"angle":{"x":8.76888193346583e-5,"z":1.1288728424997627e-5,"y":-0.00012932995244083437}},{"degrees_of_freedom":[5304,5305,5306,5307,5308,5309],"id":"n884","parent":"11","position":{"x":20,"z":25,"y":-2.857142857142857},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-2.6218987140442757e-5,"z":0.0001879046865756806,"y":-0.0002109177990777828},"angle":{"x":-0.00016621908863843614,"z":-4.2644438421681216e-5,"y":-2.415786124843721e-5}},{"degrees_of_freedom":[5310,5311,5312,5313,5314,5315],"id":"n885","parent":"11","position":{"x":22.020305089104422,"z":25,"y":-2.020305089104421},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-2.4037823408584447e-6,"z":9.761248275731809e-5,"y":-0.00029987526645660186},"angle":{"x":4.968304536541242e-5,"z":-2.9596450014960764e-5,"y":6.527178297894975e-5}},{"degrees_of_freedom":[5316,5317,5318,5319,5320,5321],"id":"n886","parent":"11","position":{"x":22.857142857142858,"z":25,"y":0},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":2.4443076324842364e-5,"z":0.00014336553184961232,"y":-0.0003589345080945855},"angle":{"x":8.777751554884233e-6,"z":-6.7966105786035875e-6,"y":-3.348238888652463e-5}},{"degrees_of_freedom":[5322,5323,5324,5325,5326,5327],"id":"n887","parent":"11","position":{"x":22.020305089104422,"z":25,"y":2.020305089104421},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":2.431059146057108e-5,"z":0.0001330799168325571,"y":-0.0004075087548528461},"angle":{"x":1.0798258316655042e-5,"z":1.7418813158109212e-5,"y":-3.8360401856286425e-5}},{"degrees_of_freedom":[5328,5329,5330,5331,5332,5333],"id":"n888","parent":"11","position":{"x":22.857142857142858,"z":3.140184917367551e-16,"y":5},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":9.056644328223697e-5,"z":8.224881433979155e-5,"y":-0.001091160845542544},"angle":{"x":2.5500566786207723e-5,"z":-5.637111813656894e-5,"y":-8.828242887754213e-6}},{"degrees_of_freedom":[5334,5335,5336,5337,5338,5339],"id":"n889","parent":"11","position":{"x":22.020305089104422,"z":-2.020305089104421,"y":5},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0.00010045095887910417,"z":7.798805593277776e-5,"y":-0.0007167628924343613},"angle":{"x":-0.0007933760909406769,"z":-0.0003462858704417123,"y":-1.0254824785341804e-5}},{"degrees_of_freedom":[5340,5341,5342,5343,5344,5345],"id":"n890","parent":"11","position":{"x":17.979694910895578,"z":-2.0203050891044216,"y":5},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":9.609238463571016e-5,"z":3.8532782851525483e-5,"y":-0.00042538416313195955},"angle":{"x":0.00037275249818803923,"z":-0.0001869022770702059,"y":-1.2281396134001793e-5}},{"degrees_of_freedom":[5346,5347,5348,5349,5350,5351],"id":"n891","parent":"11","position":{"x":17.142857142857142,"z":-3.140184917367551e-16,"y":5},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":8.585645800440255e-5,"z":3.2011197010067814e-5,"y":-0.00011756377799524268},"angle":{"x":2.9567719150426072e-5,"z":-6.3699439121012e-5,"y":-1.0955848606421025e-5}},{"degrees_of_freedom":[5352,5353,5354,5355,5356,5357],"id":"n892","parent":"11","position":{"x":17.979694910895578,"z":2.020305089104421,"y":5},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":7.276379392055375e-5,"z":3.648380797292615e-5,"y":-0.0005377369142214572},"angle":{"x":-0.0007363348411126746,"z":-0.00033261816686775905,"y":-1.2876677119016368e-5}},{"degrees_of_freedom":[5358,5359,5360,5361,5362,5363],"id":"n893","parent":"11","position":{"x":22.020305089104422,"z":2.0203050891044216,"y":5},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":8.153934013420636e-5,"z":7.787576116970879e-5,"y":-0.0008213174969308652},"angle":{"x":-1.0794403384982439e-5,"z":-4.314075700764764e-5,"y":-9.353524465905123e-6}},{"degrees_of_freedom":[5364,5365,5366,5367,5368,5369],"id":"n894","parent":"11","position":{"x":25,"z":0,"y":15},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":-400},"displacement":{"x":0.00017906315571326642,"z":0.00025306067285702893,"y":-0.0011141012138001236},"angle":{"x":4.1946588295141905e-5,"z":-3.800802932602603e-6,"y":-2.278386671757943e-5}},{"degrees_of_freedom":[5370,5371,5372,5373,5374,5375],"id":"n895","parent":"11","position":{"x":25,"z":-5,"y":10},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0.0002115297066209477,"z":0.0002024797108463492,"y":-0.0008558943286480209},"angle":{"x":4.225556279621638e-5,"z":-1.6855751916574828e-5,"y":-8.462869636512097e-5}},{"degrees_of_freedom":[5376,5377,5378,5379,5380,5381],"id":"n896","parent":"11","position":{"x":25,"z":5,"y":10},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0.00015976473250205224,"z":0.0001990030589516749,"y":-0.0008480344158042344},"angle":{"x":1.8393166021697842e-5,"z":-1.1975487557234377e-5,"y":-2.0063797134856754e-5}},{"degrees_of_freedom":[5382,5383,5384,5385,5386,5387],"id":"n897","parent":"11","position":{"x":25,"z":2.857142857142857,"y":10},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0.00013759544492677344,"z":0.0002121389973881274,"y":-0.0008140037983874222},"angle":{"x":6.16825528021244e-7,"z":-7.54842095823057e-5,"y":2.3779749696440602e-5}},{"degrees_of_freedom":[5388,5389,5390,5391,5392,5393],"id":"n898","parent":"11","position":{"x":25,"z":2.0203050891044216,"y":12.020305089104422},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0.00029636144434800135,"z":0.00019978866305984353,"y":-0.0008376398512456403},"angle":{"x":-1.7409164872566506e-5,"z":-0.00021298761372351177,"y":0.00041269948087011715}},{"degrees_of_freedom":[5394,5395,5396,5397,5398,5399],"id":"n899","parent":"11","position":{"x":25,"z":3.140184917367551e-16,"y":12.857142857142858},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0.0006796534303710491,"z":0.00018859278266599287,"y":-0.0009204693337158228},"angle":{"x":-5.782899676545124e-5,"z":-7.475861429517933e-5,"y":2.1729729665311887e-5}},{"degrees_of_freedom":[5400,5401,5402,5403,5404,5405],"id":"n900","parent":"11","position":{"x":25,"z":-2.020305089104421,"y":12.020305089104422},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0.00020856132831337433,"z":0.00018881181625899723,"y":-0.000984236291938355},"angle":{"x":2.1998114538891726e-5,"z":-0.0003667913191718637,"y":-0.000804264466590967}},{"degrees_of_freedom":[5406,5407,5408,5409,5410,5411],"id":"n901","parent":"11","position":{"x":25,"z":-2.857142857142857,"y":10},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":1.3429203448037395e-5,"z":0.0001765110531495367,"y":-0.0009493171356823625},"angle":{"x":2.1919812480948856e-7,"z":-7.54836512211231e-5,"y":1.967788857351461e-5}},{"degrees_of_freedom":[5412,5413,5414,5415,5416,5417],"id":"n902","parent":"11","position":{"x":25,"z":-2.0203050891044216,"y":7.979694910895579},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-0.00014876843666585137,"z":0.00018307545767156985,"y":-0.0009203974670036413},"angle":{"x":-1.1207118141449294e-5,"z":-0.00010792134164740775,"y":0.0001114255693330539}},{"degrees_of_freedom":[5418,5419,5420,5421,5422,5423],"id":"n903","parent":"11","position":{"x":25,"z":-3.140184917367551e-16,"y":7.142857142857142},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-0.0005403483708447906,"z":0.00019254289221990503,"y":-0.0008457031772649974},"angle":{"x":-5.230405188546227e-5,"z":-7.620883923156056e-5,"y":2.1728902071844383e-5}},{"degrees_of_freedom":[5424,5425,5426,5427,5428,5429],"id":"n904","parent":"11","position":{"x":25,"z":2.020305089104421,"y":7.979694910895578},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-6.097021347475403e-5,"z":0.000194795685302576,"y":-0.0007862418119411753},"angle":{"x":2.4522171598181404e-5,"z":-0.0004604020122584152,"y":-0.0010649333975350725}},{"degrees_of_freedom":[5430,5431,5432,5433,5434,5435],"id":"n905","parent":"11","position":{"x":20,"z":-5,"y":15},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":-400},"displacement":{"x":0.00026001672646664304,"z":0.00015728367525865575,"y":-0.0010213924136371723},"angle":{"x":-1.6884727240609048e-5,"z":-2.89196229410937e-5,"y":-3.6791070539645143e-5}},{"degrees_of_freedom":[5436,5437,5438,5439,5440,5441],"id":"n906","parent":"11","position":{"x":20,"z":5,"y":15},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":-800},"displacement":{"x":0.00011823798545096379,"z":0.00016235667122802813,"y":-0.0010019357416676973},"angle":{"x":-6.892137734585887e-7,"z":-5.389163652106912e-6,"y":-2.7851440521117663e-5}},{"degrees_of_freedom":[5442,5443,5444,5445,5446,5447],"id":"n907","parent":"11","position":{"x":22.857142857142858,"z":-3.140184917367551e-16,"y":15},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0.00017654993541914296,"z":0.00021041113628015155,"y":-0.001364817227661902},"angle":{"x":1.9683661008745045e-5,"z":-4.55131975061425e-5,"y":-2.6193628820789847e-5}},{"degrees_of_freedom":[5448,5449,5450,5451,5452,5453],"id":"n908","parent":"11","position":{"x":22.020305089104422,"z":2.020305089104421,"y":15},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0.0001481358025172795,"z":0.00019967080564793792,"y":-0.0011448817925650181},"angle":{"x":0.0003707674234323482,"z":-0.00016944424394379413,"y":-2.3063205761460654e-5}},{"degrees_of_freedom":[5454,5455,5456,5457,5458,5459],"id":"n909","parent":"11","position":{"x":20,"z":2.857142857142857,"y":15},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0.00013318063219704314,"z":0.00015843492517144252,"y":-0.001057984314828703},"angle":{"x":8.361200649087011e-6,"z":-3.657473949986096e-5,"y":-2.299619722625024e-5}},{"degrees_of_freedom":[5460,5461,5462,5463,5464,5465],"id":"n910","parent":"11","position":{"x":17.979694910895578,"z":2.0203050891044216,"y":15},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0.00015475999458284693,"z":0.00011914627533193573,"y":-0.0009665571924633061},"angle":{"x":-0.0002895489580340408,"z":-0.00014023070326199012,"y":-2.4954869656067915e-5}},{"degrees_of_freedom":[5466,5467,5468,5469,5470,5471],"id":"n911","parent":"11","position":{"x":17.142857142857142,"z":3.140184917367551e-16,"y":15},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0.00017849779650117568,"z":0.00010580254628750108,"y":-0.0007526163237320748},"angle":{"x":1.911700465723116e-5,"z":-3.0470753795248068e-5,"y":-2.4296192974277887e-5}},{"degrees_of_freedom":[5472,5473,5474,5475,5476,5477],"id":"n912","parent":"11","position":{"x":17.979694910895578,"z":-2.020305089104421,"y":15},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0.00020741893778170617,"z":0.00011500319916201388,"y":-0.0008869125889595148},"angle":{"x":0.00041468008705664754,"z":-0.00016969335214380538,"y":-2.5423475471735704e-5}},{"degrees_of_freedom":[5478,5479,5480,5481,5482,5483],"id":"n913","parent":"11","position":{"x":20,"z":-2.857142857142857,"y":15},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0.00022522122554203687,"z":0.00015760173557304637,"y":-0.000943215778008635},"angle":{"x":3.180766373482112e-5,"z":-3.707418837881564e-5,"y":-2.3258173836402186e-5}},{"degrees_of_freedom":[5484,5485,5486,5487,5488,5489],"id":"n914","parent":"11","position":{"x":22.020305089104422,"z":-2.0203050891044216,"y":15},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0.00020589718844306727,"z":0.00019881366608468136,"y":-0.0010646018807449454},"angle":{"x":-0.00047867720528390706,"z":-0.00022190616217453347,"y":-2.5451971295654004e-5}},{"degrees_of_freedom":[5490,5491,5492,5493,5494,5495],"id":"n915","parent":"11","position":{"x":20,"z":-5,"y":7.142857142857142},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0.00020669575212003787,"z":8.188466218170956e-5,"y":-0.0007659362050513954},"angle":{"x":-2.9920117009160866e-5,"z":1.786124483643235e-5,"y":-8.946059030580182e-6}},{"degrees_of_freedom":[5496,5497,5498,5499,5500,5501],"id":"n916","parent":"11","position":{"x":22.020305089104422,"z":-5,"y":7.979694910895579},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0.00021259060009617343,"z":7.492014145027252e-5,"y":-0.0007564344906849808},"angle":{"x":1.1097092686553803e-5,"z":-1.9033737141312595e-5,"y":8.043831592332074e-6}},{"degrees_of_freedom":[5502,5503,5504,5505,5506,5507],"id":"n917","parent":"11","position":{"x":22.857142857142858,"z":-5,"y":10},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0.00022370394372184151,"z":9.060829986914004e-5,"y":-0.0007945818064307511},"angle":{"x":-9.711041631305747e-6,"z":-3.5790403887443577e-7,"y":-4.219149722586449e-5}},{"degrees_of_freedom":[5508,5509,5510,5511,5512,5513],"id":"n918","parent":"11","position":{"x":22.020305089104422,"z":-5,"y":12.020305089104422},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0.00021763105719043411,"z":3.5681577719371676e-5,"y":-0.0008278523505557328},"angle":{"x":-5.562732149117658e-6,"z":1.15164597602501e-5,"y":-5.2206460134733505e-5}},{"degrees_of_freedom":[5514,5515,5516,5517,5518,5519],"id":"n919","parent":"11","position":{"x":20,"z":-5,"y":12.857142857142858},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0.00020625051245163896,"z":-7.444643249182419e-5,"y":-0.0008677819829302173},"angle":{"x":-0.0001899055202715305,"z":1.8806380091240917e-5,"y":2.4150881637140976e-5}},{"degrees_of_freedom":[5520,5521,5522,5523,5524,5525],"id":"n920","parent":"11","position":{"x":17.979694910895578,"z":-5,"y":12.020305089104422},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0.0002001928798376462,"z":0.00013326582668009166,"y":-0.000881867134965445},"angle":{"x":0.00010814066250317105,"z":-1.548575808713291e-5,"y":0.00014760563942883058}},{"degrees_of_freedom":[5526,5527,5528,5529,5530,5531],"id":"n921","parent":"11","position":{"x":17.142857142857142,"z":-5,"y":10},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0.00019338150915912836,"z":3.831068711764734e-5,"y":-0.0008423946032869573},"angle":{"x":2.3385877501547185e-5,"z":1.3355657250443892e-7,"y":-5.701047497342239e-5}},{"degrees_of_freedom":[5532,5533,5534,5535,5536,5537],"id":"n922","parent":"11","position":{"x":17.979694910895578,"z":-5,"y":7.979694910895579},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0.00019831508918046237,"z":3.877260729270789e-5,"y":-0.0008055756533393796},"angle":{"x":1.0393694922447811e-5,"z":1.1178372860659586e-5,"y":-2.564458827517652e-5}},{"degrees_of_freedom":[5538,5539,5540,5541,5542,5543],"id":"n923","parent":"11","position":{"x":20,"z":5,"y":12.857142857142858},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0.00012334437645225208,"z":0.00013456621047922118,"y":-0.0008887697339400886},"angle":{"x":2.3050142731556482e-7,"z":-6.875096997117852e-6,"y":-1.9822999260291755e-5}},{"degrees_of_freedom":[5544,5545,5546,5547,5548,5549],"id":"n924","parent":"11","position":{"x":17.979694910895578,"z":5,"y":12.020305089104422},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":9.918941436761857e-5,"z":9.507912654658032e-5,"y":-0.0008522095958447981},"angle":{"x":1.728160139383094e-5,"z":-2.982924619877173e-5,"y":-1.1640103365623991e-5}},{"degrees_of_freedom":[5550,5551,5552,5553,5554,5555],"id":"n925","parent":"11","position":{"x":17.142857142857142,"z":5,"y":10},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":7.761556448349228e-5,"z":4.947287905794044e-5,"y":-0.0007859610605709475},"angle":{"x":1.1326190926799395e-5,"z":-3.8067257605280697e-6,"y":-2.7722836177717284e-5}},{"degrees_of_freedom":[5556,5557,5558,5559,5560,5561],"id":"n926","parent":"11","position":{"x":17.979694910895578,"z":5,"y":7.979694910895579},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":8.323104725422965e-5,"z":5.026566823120217e-5,"y":-0.000726770312412798},"angle":{"x":5.6345516384595665e-8,"z":2.1124185187925277e-5,"y":-2.2201321005770773e-6}},{"degrees_of_freedom":[5562,5563,5564,5565,5566,5567],"id":"n927","parent":"11","position":{"x":20,"z":5,"y":7.142857142857142},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":9.62647540479624e-5,"z":5.439136883750504e-5,"y":-0.0007134768553236037},"angle":{"x":2.9831477261036057e-5,"z":-6.513927048567876e-6,"y":-1.432138301515883e-5}},{"degrees_of_freedom":[5568,5569,5570,5571,5572,5573],"id":"n928","parent":"11","position":{"x":22.020305089104422,"z":5,"y":7.979694910895579},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0.00012063327586622697,"z":0.00010844528838410785,"y":-0.0007534540488999584},"angle":{"x":4.550825501427874e-6,"z":-3.48398801056382e-5,"y":-2.5024989505828142e-5}},{"degrees_of_freedom":[5574,5575,5576,5577,5578,5579],"id":"n929","parent":"11","position":{"x":22.857142857142858,"z":5,"y":10},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0.00014835916118589672,"z":0.00014098227836251893,"y":-0.0008194668525592611},"angle":{"x":1.6735913081151576e-5,"z":-4.577309956264354e-6,"y":8.857178447021003e-8}},{"degrees_of_freedom":[5580,5581,5582,5583,5584,5585],"id":"n930","parent":"11","position":{"x":22.020305089104422,"z":5,"y":12.020305089104422},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0.00014045527086150512,"z":0.00017366751402307992,"y":-0.0008762395531537886},"angle":{"x":2.739811892595429e-5,"z":2.317443801745135e-5,"y":-2.995610001935432e-5}},{"degrees_of_freedom":[5586,5587,5588,5589,5590,5591],"id":"n931","parent":"11","position":{"x":22.020305089104422,"z":7.979694910895579,"y":5},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":5.056751087511057e-5,"z":8.838161331068688e-5,"y":-0.0005437909983383422},"angle":{"x":-4.3746626104599265e-6,"z":-1.3989070581208939e-5,"y":-9.49138040118986e-6}},{"degrees_of_freedom":[5592,5593,5594,5595,5596,5597],"id":"n932","parent":"11","position":{"x":17.979694910895578,"z":7.979694910895578,"y":5},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":5.023308060681837e-5,"z":5.6710033723380876e-5,"y":-0.0005212094553122796},"angle":{"x":-0.00011576400338070203,"z":4.1438091695938066e-5,"y":-9.130324015246753e-6}},{"degrees_of_freedom":[5598,5599,5600,5601,5602,5603],"id":"n933","parent":"11","position":{"x":25,"z":10,"y":15},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":-400},"displacement":{"x":4.103529968155514e-5,"z":0.0002734435591084503,"y":-0.0010824230307493546},"angle":{"x":4.358019050494194e-5,"z":-1.5966762422577155e-5,"y":-2.778817998430705e-5}},{"degrees_of_freedom":[5604,5605,5606,5607,5608,5609],"id":"n934","parent":"11","position":{"x":25,"z":15,"y":10},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":5.0627003741720084e-5,"z":0.0002082891300784803,"y":-0.000810258855760044},"angle":{"x":1.989567766705882e-5,"z":-5.536411141132326e-6,"y":-1.3905894926755795e-5}},{"degrees_of_freedom":[5610,5611,5612,5613,5614,5615],"id":"n935","parent":"11","position":{"x":25,"z":12.857142857142858,"y":10},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0.00011541160558892992,"z":0.00022245445035092007,"y":-0.0007853196964568344},"angle":{"x":1.6964073675023286e-6,"z":-8.513538533254542e-6,"y":3.1960382844347504e-5}},{"degrees_of_freedom":[5616,5617,5618,5619,5620,5621],"id":"n936","parent":"11","position":{"x":25,"z":12.020305089104422,"y":12.020305089104422},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0.000108251902232363,"z":0.00021180094456627838,"y":-0.0008059746560228602},"angle":{"x":-1.628467578800824e-5,"z":3.849155518324089e-5,"y":-9.896450137477447e-5}},{"degrees_of_freedom":[5622,5623,5624,5625,5626,5627],"id":"n937","parent":"11","position":{"x":25,"z":10,"y":12.857142857142858},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":8.551029634990768e-5,"z":0.0002017800229736931,"y":-0.0008892532662149782},"angle":{"x":-5.7145527327399685e-5,"z":-2.2886459759786466e-6,"y":1.8405018115728136e-5}},{"degrees_of_freedom":[5628,5629,5630,5631,5632,5633],"id":"n938","parent":"11","position":{"x":25,"z":7.979694910895579,"y":12.020305089104422},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":3.6612735857137025e-5,"z":0.00020192352278017658,"y":-0.0009513999145436874},"angle":{"x":2.4107097931362826e-5,"z":-3.3843512664626064e-5,"y":-7.287131716203229e-5}},{"degrees_of_freedom":[5634,5635,5636,5637,5638,5639],"id":"n939","parent":"11","position":{"x":25,"z":7.142857142857142,"y":10},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":1.8618901910557462e-5,"z":0.00018640502446050128,"y":-0.0009165951183383419},"angle":{"x":1.2574587024407036e-6,"z":-6.685722084853497e-6,"y":1.916880638065365e-6}},{"degrees_of_freedom":[5640,5641,5642,5643,5644,5645],"id":"n940","parent":"11","position":{"x":25,"z":7.979694910895578,"y":7.979694910895579},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":3.833331749152887e-6,"z":0.00019302964590645522,"y":-0.0008887314036946435},"angle":{"x":-1.2286131559518881e-5,"z":5.4113467863199776e-5,"y":-0.00017207477056252157}},{"degrees_of_freedom":[5646,5647,5648,5649,5650,5651],"id":"n941","parent":"11","position":{"x":25,"z":10,"y":7.142857142857142},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-3.731837152224188e-5,"z":0.00020185003792481243,"y":-0.0008153719904288579},"angle":{"x":-5.040928696725223e-5,"z":-1.291062871717761e-5,"y":1.5472574003608842e-5}},{"degrees_of_freedom":[5652,5653,5654,5655,5656,5657],"id":"n942","parent":"11","position":{"x":25,"z":12.020305089104422,"y":7.979694910895578},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":6.907996911456499e-5,"z":0.00020350823518832504,"y":-0.0007595408005569289},"angle":{"x":2.4503158067979247e-5,"z":-5.4447662081824535e-5,"y":-9.998647054976524e-5}},{"degrees_of_freedom":[5658,5659,5660,5661,5662,5663],"id":"n943","parent":"11","position":{"x":20,"z":15,"y":15},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":-800},"displacement":{"x":-2.728258778632977e-5,"z":0.00017759985388971617,"y":-0.0009839393480853885},"angle":{"x":2.360988959914519e-6,"z":1.5863940393576163e-6,"y":-2.7285595696895278e-5}},{"degrees_of_freedom":[5664,5665,5666,5667,5668,5669],"id":"n944","parent":"11","position":{"x":22.857142857142858,"z":10,"y":15},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":4.070144357937148e-5,"z":0.0002206093799969118,"y":-0.0010831373078182293},"angle":{"x":1.7024319630132774e-5,"z":-1.2323206146668716e-5,"y":-2.791275718146308e-5}},{"degrees_of_freedom":[5670,5671,5672,5673,5674,5675],"id":"n945","parent":"11","position":{"x":22.020305089104422,"z":12.020305089104422,"y":15},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":7.59406193012677e-6,"z":0.00021080324008926416,"y":-0.0010424993781153022},"angle":{"x":-6.0789818212725645e-5,"z":1.2765931341433418e-5,"y":-2.3391888281897775e-5}},{"degrees_of_freedom":[5676,5677,5678,5679,5680,5681],"id":"n946","parent":"11","position":{"x":20,"z":12.857142857142858,"y":15},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-1.0321137535471396e-5,"z":0.0001730680158678022,"y":-0.001018022021197124},"angle":{"x":8.11018790488258e-6,"z":-1.4016190029315369e-5,"y":-2.092742906489785e-5}},{"degrees_of_freedom":[5682,5683,5684,5685,5686,5687],"id":"n947","parent":"11","position":{"x":17.979694910895578,"z":12.020305089104422,"y":15},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":5.219947609624655e-6,"z":0.0001345065629059837,"y":-0.0009799708218033482},"angle":{"x":-0.0001038323132154718,"z":-5.117156751413455e-5,"y":-2.375773029754374e-5}},{"degrees_of_freedom":[5688,5689,5690,5691,5692,5693],"id":"n948","parent":"11","position":{"x":17.142857142857142,"z":10,"y":15},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":3.61334289007843e-5,"z":0.0001213467516909184,"y":-0.0009065623469584384},"angle":{"x":9.585365046341222e-6,"z":-8.650135862725841e-6,"y":-2.815406193721765e-5}},{"degrees_of_freedom":[5694,5695,5696,5697,5698,5699],"id":"n949","parent":"11","position":{"x":17.979694910895578,"z":7.979694910895579,"y":15},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":6.657174949912506e-5,"z":0.0001313598841160409,"y":-0.0009343523227471082},"angle":{"x":0.00011263625919354183,"z":-4.386690329064345e-5,"y":-2.3258314997339752e-5}},{"degrees_of_freedom":[5700,5701,5702,5703,5704,5705],"id":"n950","parent":"11","position":{"x":20,"z":7.142857142857142,"y":15},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":8.628374716890876e-5,"z":0.00016869734282228414,"y":-0.0009419946480822645},"angle":{"x":1.84992684050134e-5,"z":-9.37945351494155e-6,"y":-2.1089782515407947e-5}},{"degrees_of_freedom":[5706,5707,5708,5709,5710,5711],"id":"n951","parent":"11","position":{"x":22.020305089104422,"z":7.979694910895578,"y":15},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":6.831102337841082e-5,"z":0.00020681050730284798,"y":-0.0009823131326755189},"angle":{"x":-0.00022144062071274633,"z":-9.573423730461837e-5,"y":-2.540441611871275e-5}},{"degrees_of_freedom":[5712,5713,5714,5715,5716,5717],"id":"n952","parent":"11","position":{"x":20,"z":15,"y":12.857142857142858},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-2.2541784416514535e-6,"z":0.00015917702877225643,"y":-0.0008707264574670966},"angle":{"x":1.9945417661280657e-6,"z":-2.9585284505801555e-6,"y":-1.7646738958051847e-5}},{"degrees_of_freedom":[5718,5719,5720,5721,5722,5723],"id":"n953","parent":"11","position":{"x":17.979694910895578,"z":15,"y":12.020305089104422},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-2.1607022444768115e-5,"z":0.00012274432997488223,"y":-0.0008427155436297656},"angle":{"x":7.5045917260988055e-6,"z":-2.4488249392667447e-5,"y":-1.4045484083404452e-5}},{"degrees_of_freedom":[5724,5725,5726,5727,5728,5729],"id":"n954","parent":"11","position":{"x":17.142857142857142,"z":15,"y":10},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-3.0458310926847283e-5,"z":9.53314920797617e-5,"y":-0.0007818233978150452},"angle":{"x":9.73036378461674e-6,"z":2.8372348226530294e-6,"y":-9.563711721185496e-6}},{"degrees_of_freedom":[5730,5731,5732,5733,5734,5735],"id":"n955","parent":"11","position":{"x":17.979694910895578,"z":15,"y":7.979694910895579},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-1.2419236247906269e-5,"z":8.392520438136317e-5,"y":-0.0007188918629881736},"angle":{"x":8.136109348403809e-6,"z":2.5855160306868903e-5,"y":-6.606557420572786e-6}},{"degrees_of_freedom":[5736,5737,5738,5739,5740,5741],"id":"n956","parent":"11","position":{"x":20,"z":15,"y":7.142857142857142},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":4.748179573797197e-6,"z":9.032604695479501e-5,"y":-0.0006966091978898094},"angle":{"x":2.1105734096472817e-5,"z":-2.0040289429529764e-6,"y":-1.1876429420687036e-5}},{"degrees_of_freedom":[5742,5743,5744,5745,5746,5747],"id":"n957","parent":"11","position":{"x":22.020305089104422,"z":15,"y":7.979694910895579},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":2.4878875784317433e-5,"z":0.00013205104249280046,"y":-0.0007266609885783784},"angle":{"x":1.1643627790039202e-5,"z":-2.924183913220792e-5,"y":-1.589808676573181e-5}},{"degrees_of_freedom":[5748,5749,5750,5751,5752,5753],"id":"n958","parent":"11","position":{"x":22.857142857142858,"z":15,"y":10},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":3.9185582975080074e-5,"z":0.00017089211080272395,"y":-0.0007878582485113672},"angle":{"x":1.5402064614782365e-5,"z":2.3541691118759173e-6,"y":-1.0433125487458407e-5}},{"degrees_of_freedom":[5754,5755,5756,5757,5758,5759],"id":"n959","parent":"11","position":{"x":22.020305089104422,"z":15,"y":12.020305089104422},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":1.8312973583703643e-5,"z":0.0001922715139849221,"y":-0.0008494889985820131},"angle":{"x":1.932185077255382e-5,"z":2.8374777331499417e-5,"y":-2.3505030049203824e-5}},{"degrees_of_freedom":[5760,5761,5762,5763,5764,5765],"id":"n960","parent":"11","position":{"x":25,"z":20,"y":15},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":-400},"displacement":{"x":-0.00011613257785860701,"z":0.00028559884383256716,"y":-0.0010809990923913518},"angle":{"x":4.4115555054569554e-5,"z":-1.6242878757815312e-5,"y":-2.8345880269213035e-5}},{"degrees_of_freedom":[5766,5767,5768,5769,5770,5771],"id":"n961","parent":"11","position":{"x":25,"z":25,"y":10},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-0.00011970605462851171,"z":0.00021972522310382655,"y":-0.0008513327718672595},"angle":{"x":2.4017966337809556e-5,"z":-1.5146537576744626e-6,"y":-5.278696271025496e-6}},{"degrees_of_freedom":[5772,5773,5774,5775,5776,5777],"id":"n962","parent":"11","position":{"x":25,"z":22.857142857142858,"y":10},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-2.8223039327236096e-5,"z":0.00023175067583875608,"y":-0.0007920874912136161},"angle":{"x":3.9580900232519095e-6,"z":2.1797392443239867e-5,"y":1.726140623552755e-5}},{"degrees_of_freedom":[5778,5779,5780,5781,5782,5783],"id":"n963","parent":"11","position":{"x":25,"z":22.020305089104422,"y":12.020305089104422},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-9.426099776679484e-5,"z":0.00022778244165011567,"y":-0.0008156405611143095},"angle":{"x":-1.1453490294076174e-5,"z":0.00012945827978819795,"y":-0.0002872497141569563}},{"degrees_of_freedom":[5784,5785,5786,5787,5788,5789],"id":"n964","parent":"11","position":{"x":25,"z":20,"y":12.857142857142858},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-0.00025369071497730603,"z":0.00021902112131489936,"y":-0.000887500606658087},"angle":{"x":-4.921828531068804e-5,"z":2.4815740478332404e-5,"y":8.724220522952861e-6}},{"degrees_of_freedom":[5790,5791,5792,5793,5794,5795],"id":"n965","parent":"11","position":{"x":25,"z":17.979694910895578,"y":12.020305089104422},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-0.00012951200423515287,"z":0.00021627128051416165,"y":-0.000942272759647362},"angle":{"x":2.6274417988402445e-5,"z":0.00010079102855509984,"y":0.0002236146814563892}},{"degrees_of_freedom":[5796,5797,5798,5799,5800,5801],"id":"n966","parent":"11","position":{"x":25,"z":17.142857142857142,"y":10},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-7.807523165875071e-5,"z":0.00019815085512729587,"y":-0.0009016058664425127},"angle":{"x":3.449444115137918e-6,"z":2.179747977882979e-5,"y":1.8681231987837228e-7}},{"degrees_of_freedom":[5802,5803,5804,5805,5806,5807],"id":"n967","parent":"11","position":{"x":25,"z":17.979694910895578,"y":7.979694910895579},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-2.6325787734218424e-5,"z":0.0001986503907359358,"y":-0.0008722259185548926},"angle":{"x":-7.980861786676668e-6,"z":0.000129772111834001,"y":-0.0003052119061474077}},{"degrees_of_freedom":[5808,5809,5810,5811,5812,5813],"id":"n968","parent":"11","position":{"x":25,"z":20,"y":7.142857142857142},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":9.860787973207915e-5,"z":0.00020576195038654287,"y":-0.0008071549441895482},"angle":{"x":-4.3915267150056304e-5,"z":1.8778958760372518e-5,"y":8.724081928130412e-6}},{"degrees_of_freedom":[5814,5815,5816,5817,5818,5819],"id":"n969","parent":"11","position":{"x":25,"z":22.020305089104422,"y":7.979694910895578},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":8.924914591054044e-6,"z":0.00020976522779532795,"y":-0.0007581026241359491},"angle":{"x":2.785202131812573e-5,"z":9.78410375550975e-5,"y":0.00023234549285297367}},{"degrees_of_freedom":[5820,5821,5822,5823,5824,5825],"id":"n970","parent":"11","position":{"x":20,"z":25,"y":15},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":-400},"displacement":{"x":-0.00019510411910768547,"z":0.00018367747623371412,"y":-0.0010338444044698364},"angle":{"x":-2.950938529406498e-6,"z":2.1139392759323053e-5,"y":-3.0471765656590538e-5}},{"degrees_of_freedom":[5826,5827,5828,5829,5830,5831],"id":"n971","parent":"11","position":{"x":22.857142857142858,"z":20,"y":15},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-0.00011529499802053421,"z":0.0002327683680812553,"y":-0.001037118239270737},"angle":{"x":1.3374886566077063e-5,"z":-3.189292340294462e-6,"y":-3.176355006337787e-5}},{"degrees_of_freedom":[5832,5833,5834,5835,5836,5837],"id":"n972","parent":"11","position":{"x":22.020305089104422,"z":22.020305089104422,"y":15},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-0.00015128175052478928,"z":0.00022130631559702182,"y":-0.0010449699918285596},"angle":{"x":-0.0001312537540559142,"z":4.744849098204094e-5,"y":-2.4772889633597197e-5}},{"degrees_of_freedom":[5838,5839,5840,5841,5842,5843],"id":"n973","parent":"11","position":{"x":20,"z":22.857142857142858,"y":15},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-0.00016835645038000752,"z":0.00018318361916023994,"y":-0.001046656545844846},"angle":{"x":8.73543085780104e-6,"z":-2.541260238419065e-6,"y":-1.9914131441340877e-5}},{"degrees_of_freedom":[5844,5845,5846,5847,5848,5849],"id":"n974","parent":"11","position":{"x":17.979694910895578,"z":22.020305089104422,"y":15},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-0.00015305596219157588,"z":0.00014823294997790506,"y":-0.0010337228173269812},"angle":{"x":7.861080499325281e-5,"z":2.2659510220412626e-5,"y":-2.1075970266106433e-5}},{"degrees_of_freedom":[5850,5851,5852,5853,5854,5855],"id":"n975","parent":"11","position":{"x":17.142857142857142,"z":20,"y":15},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-0.00011983489300113279,"z":0.0001368678231593715,"y":-0.0010062779260575896},"angle":{"x":1.1343321076317493e-5,"z":-6.270100528784618e-7,"y":-3.0323480152088466e-5}},{"degrees_of_freedom":[5856,5857,5858,5859,5860,5861],"id":"n976","parent":"11","position":{"x":17.979694910895578,"z":17.979694910895578,"y":15},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-8.406789188071284e-5,"z":0.00014715043189177118,"y":-0.0009859988761661104},"angle":{"x":-4.432919931741666e-5,"z":1.9552322260625383e-5,"y":-2.2675366921687745e-5}},{"degrees_of_freedom":[5862,5863,5864,5865,5866,5867],"id":"n977","parent":"11","position":{"x":20,"z":17.142857142857142,"y":15},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-6.509651053228476e-5,"z":0.00018138139641539025,"y":-0.0009760332556320734},"angle":{"x":1.598265719812655e-5,"z":-1.2749912943004248e-6,"y":-1.9188321074708534e-5}},{"degrees_of_freedom":[5868,5869,5870,5871,5872,5873],"id":"n978","parent":"11","position":{"x":22.020305089104422,"z":17.979694910895578,"y":15},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-7.989502475511784e-5,"z":0.0002198107378170631,"y":-0.0009928174234416537},"angle":{"x":-2.1592836607432285e-6,"z":-8.185289986707893e-6,"y":-2.6195593544402168e-5}},{"degrees_of_freedom":[5874,5875,5876,5877,5878,5879],"id":"n979","parent":"11","position":{"x":20,"z":25,"y":12.857142857142858},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-0.00013021327087248133,"z":0.00018078831958875515,"y":-0.0008783688595814707},"angle":{"x":-4.800920182642415e-5,"z":-2.7956195388991924e-5,"y":-1.6367907323279532e-5}},{"degrees_of_freedom":[5880,5881,5882,5883,5884,5885],"id":"n980","parent":"11","position":{"x":17.979694910895578,"z":25,"y":12.020305089104422},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-0.00014344542547482992,"z":0.00018789607218847745,"y":-0.0008170145639159643},"angle":{"x":8.586472935050187e-5,"z":-2.0684073802164443e-5,"y":3.9084495196519316e-5}},{"degrees_of_freedom":[5886,5887,5888,5889,5890,5891],"id":"n981","parent":"11","position":{"x":17.142857142857142,"z":25,"y":10},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-0.00015999949369524478,"z":4.7130492157302275e-5,"y":-0.000780734567535907},"angle":{"x":3.6000806668558605e-5,"z":-2.1566847259665116e-6,"y":-8.129768152824105e-5}},{"degrees_of_freedom":[5892,5893,5894,5895,5896,5897],"id":"n982","parent":"11","position":{"x":17.979694910895578,"z":25,"y":7.979694910895579},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-0.00015285993460754027,"z":4.24308657156136e-5,"y":-0.0007488974875984642},"angle":{"x":2.9861783118203576e-5,"z":1.5045747867240877e-5,"y":-6.647681670111927e-5}},{"degrees_of_freedom":[5898,5899,5900,5901,5902,5903],"id":"n983","parent":"11","position":{"x":20,"z":25,"y":7.142857142857142},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-0.00015435291435386182,"z":0.00015174484169314676,"y":-0.0007722479821015037},"angle":{"x":-6.308637504984917e-5,"z":-2.6948956340847473e-5,"y":-2.797642085188588e-5}},{"degrees_of_freedom":[5904,5905,5906,5907,5908,5909],"id":"n984","parent":"11","position":{"x":22.020305089104422,"z":25,"y":7.979694910895579},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-0.0001413118759640148,"z":0.0001554726731123652,"y":-0.0008321020084978844},"angle":{"x":7.47442092600943e-5,"z":-2.033886049860613e-5,"y":2.9114890099266946e-5}},{"degrees_of_freedom":[5910,5911,5912,5913,5914,5915],"id":"n985","parent":"11","position":{"x":22.857142857142858,"z":25,"y":10},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-0.00012679917533941503,"z":0.00028211435426870604,"y":-0.0008705862324403198},"angle":{"x":2.4392296463935354e-5,"z":-1.5690052748018836e-6,"y":-9.244540185445359e-5}},{"degrees_of_freedom":[5916,5917,5918,5919,5920,5921],"id":"n986","parent":"11","position":{"x":22.020305089104422,"z":25,"y":12.020305089104422},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-0.00013306517411348687,"z":0.00025403241104286284,"y":-0.0009041748823324462},"angle":{"x":1.3483660499786848e-6,"z":1.3592323008908183e-5,"y":-3.6812494040648105e-5}},{"degrees_of_freedom":[5922,5923,5924,5925,5926,5927],"id":"n987","parent":"11","position":{"x":22.857142857142858,"z":3.140184917367551e-16,"y":15},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0.00018153738814181736,"z":0.00020896405008948897,"y":-0.001298544642084846},"angle":{"x":1.9684150840040965e-5,"z":-3.642510896911073e-5,"y":-2.532944603197467e-5}},{"degrees_of_freedom":[5928,5929,5930,5931,5932,5933],"id":"n988","parent":"11","position":{"x":22.020305089104422,"z":-2.020305089104421,"y":15},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0.00021003728361263844,"z":0.00019884817459734944,"y":-0.0010502608015290323},"angle":{"x":-0.00029932158406255387,"z":-0.00014940616446428452,"y":-2.3084630135576386e-5}},{"degrees_of_freedom":[5934,5935,5936,5937,5938,5939],"id":"n989","parent":"11","position":{"x":17.979694910895578,"z":-2.0203050891044216,"y":15},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0.0002056187213019479,"z":0.00011521359793423275,"y":-0.0008775592927715755},"angle":{"x":0.00011657590820677158,"z":-6.939936032880663e-5,"y":-2.6371941366675758e-5}},{"degrees_of_freedom":[5940,5941,5942,5943,5944,5945],"id":"n990","parent":"11","position":{"x":17.142857142857142,"z":-3.140184917367551e-16,"y":15},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0.00017561217192179693,"z":0.00010277650713158992,"y":-0.0007204017932964431},"angle":{"x":2.185336031671444e-5,"z":-3.4888399410105875e-5,"y":-2.7402268334402684e-5}},{"degrees_of_freedom":[5946,5947,5948,5949,5950,5951],"id":"n991","parent":"11","position":{"x":17.979694910895578,"z":2.020305089104421,"y":15},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0.00014527185785734404,"z":0.00011386646445321194,"y":-0.0009619688259479992},"angle":{"x":-0.0003908702243245027,"z":-0.0001797867294022301,"y":-2.4849033915343047e-5}},{"degrees_of_freedom":[5952,5953,5954,5955,5956,5957],"id":"n992","parent":"11","position":{"x":22.020305089104422,"z":2.0203050891044216,"y":15},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0.00015413552015054353,"z":0.00019757059545461023,"y":-0.0011305415418356804},"angle":{"x":1.8508294466958988e-5,"z":-3.581388289210085e-5,"y":-2.3560272348757344e-5}},{"degrees_of_freedom":[5958,5959,5960,5961,5962,5963],"id":"n993","parent":"11","position":{"x":25,"z":0,"y":25},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":-400},"displacement":{"x":0.0003465807434780965,"z":0.0005412496888843552,"y":-0.0014578039309126188},"angle":{"x":0.00010065666094584769,"z":-7.424250552716979e-5,"y":-4.7982284437231014e-5}},{"degrees_of_freedom":[5964,5965,5966,5967,5968,5969],"id":"n994","parent":"11","position":{"x":25,"z":-5,"y":20},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0.00034443994924990225,"z":0.0003311744939028875,"y":-0.0012013738888424794},"angle":{"x":2.9282731783771e-5,"z":-1.8612258412495582e-5,"y":-0.00013095331293427537}},{"degrees_of_freedom":[5970,5971,5972,5973,5974,5975],"id":"n995","parent":"11","position":{"x":25,"z":5,"y":20},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0.00018335538174215423,"z":0.00036143490727588495,"y":-0.00119820336801159},"angle":{"x":1.5671507340684386e-5,"z":-2.11179154814322e-5,"y":-3.910343243634448e-5}},{"degrees_of_freedom":[5976,5977,5978,5979,5980,5981],"id":"n996","parent":"11","position":{"x":25,"z":2.857142857142857,"y":20},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0.00034516351960746025,"z":0.000358939584880894,"y":-0.0012113568389226865},"angle":{"x":1.627397817863604e-5,"z":-6.036605323532771e-5,"y":6.298956424197509e-5}},{"degrees_of_freedom":[5982,5983,5984,5985,5986,5987],"id":"n997","parent":"11","position":{"x":25,"z":2.0203050891044216,"y":22.020305089104422},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0.00043533366706856725,"z":0.000377476581909928,"y":-0.00121011462489704},"angle":{"x":2.3548486664275374e-6,"z":-3.4323909230222386e-5,"y":-1.066772026423095e-5}},{"degrees_of_freedom":[5988,5989,5990,5991,5992,5993],"id":"n998","parent":"11","position":{"x":25,"z":3.140184917367551e-16,"y":22.857142857142858},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0.0006530209870980152,"z":0.000380454992081902,"y":-0.0012660359188539831},"angle":{"x":-2.92166612512517e-5,"z":-6.563422631414564e-5,"y":7.78922244882966e-5}},{"degrees_of_freedom":[5994,5995,5996,5997,5998,5999],"id":"n999","parent":"11","position":{"x":25,"z":-2.020305089104421,"y":22.020305089104422},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0.0001206028871505289,"z":0.0003740302192469436,"y":-0.0012918132112558786},"angle":{"x":4.467163155051948e-5,"z":-0.00022453462730210154,"y":-0.0003715469808269526}},{"degrees_of_freedom":[6000,6001,6002,6003,6004,6005],"id":"n1000","parent":"11","position":{"x":25,"z":-2.857142857142857,"y":20},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-9.993100930504041e-5,"z":0.00032704702553682863,"y":-0.0012542961531304792},"angle":{"x":1.544402340975307e-5,"z":-6.036549054233751e-5,"y":9.2792805390954e-5}},{"degrees_of_freedom":[6006,6007,6008,6009,6010,6011],"id":"n1001","parent":"11","position":{"x":25,"z":-2.0203050891044216,"y":17.979694910895578},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-0.0001651597422993056,"z":0.00031209027017537144,"y":-0.0012479160799221476},"angle":{"x":1.8753237231452664e-6,"z":0.0001377840058177281,"y":-0.0004676589640703936}},{"degrees_of_freedom":[6012,6013,6014,6015,6016,6017],"id":"n1002","parent":"11","position":{"x":25,"z":-3.140184917367551e-16,"y":17.142857142857142},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-0.0003226363472122155,"z":0.0003152145648058457,"y":-0.001216885020985111},"angle":{"x":-2.043041127405782e-5,"z":-5.5097187389622514e-5,"y":7.789143117076114e-5}},{"degrees_of_freedom":[6018,6019,6020,6021,6022,6023],"id":"n1003","parent":"11","position":{"x":25,"z":2.020305089104421,"y":17.979694910895578},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0.0001495691677704304,"z":0.0003227651301899976,"y":-0.001191868030030887},"angle":{"x":2.4675386542091653e-5,"z":-0.00036760341115053065,"y":-0.0008060096936408206}},{"degrees_of_freedom":[6024,6025,6026,6027,6028,6029],"id":"n1004","parent":"11","position":{"x":20,"z":-5,"y":25},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":-400},"displacement":{"x":0.0004933348584495549,"z":0.00035786379563815983,"y":-0.0012789219329173505},"angle":{"x":-8.49973647642149e-5,"z":-6.737177993918251e-5,"y":-6.915755672826587e-5}},{"degrees_of_freedom":[6030,6031,6032,6033,6034,6035],"id":"n1005","parent":"11","position":{"x":20,"z":5,"y":25},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":-800},"displacement":{"x":0.00020531828651405078,"z":0.0003112023937294574,"y":-0.0012056420949745658},"angle":{"x":3.3368768785629825e-5,"z":-1.0194394228595412e-5,"y":-3.97190217371871e-5}},{"degrees_of_freedom":[6036,6037,6038,6039,6040,6041],"id":"n1006","parent":"11","position":{"x":22.857142857142858,"z":-3.140184917367551e-16,"y":25},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0.00032081323791345996,"z":0.0004544205062658881,"y":-0.0018006707381213666},"angle":{"x":-2.960031488745556e-5,"z":-7.046010348313718e-5,"y":-4.778522534527203e-5}},{"degrees_of_freedom":[6042,6043,6044,6045,6046,6047],"id":"n1007","parent":"11","position":{"x":22.020305089104422,"z":2.020305089104421,"y":25},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0.0002712418322271361,"z":0.00043112818282765766,"y":-0.0013382399611958163},"angle":{"x":0.00048167841523137525,"z":-0.00025122440957757745,"y":-5.014053376265527e-5}},{"degrees_of_freedom":[6048,6049,6050,6051,6052,6053],"id":"n1008","parent":"11","position":{"x":20,"z":2.857142857142857,"y":25},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0.00023519666184707296,"z":0.0003403390588473424,"y":-0.001146694657710852},"angle":{"x":-5.118724477727225e-5,"z":-6.28280965282176e-5,"y":-5.2107452100334296e-5}},{"degrees_of_freedom":[6054,6055,6056,6057,6058,6059],"id":"n1009","parent":"11","position":{"x":17.979694910895578,"z":2.0203050891044216,"y":25},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0.00027389518518562087,"z":0.0002486370930491769,"y":-0.0010408202326390628},"angle":{"x":-0.0001716062537128072,"z":-0.00010540245469474039,"y":-5.165553992410391e-5}},{"degrees_of_freedom":[6060,6061,6062,6063,6064,6065],"id":"n1010","parent":"11","position":{"x":17.142857142857142,"z":3.140184917367551e-16,"y":25},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0.0003141840384859323,"z":0.00022269151043139286,"y":-0.0007852179341753125},"angle":{"x":-2.96005210971966e-5,"z":-5.5195731333387325e-5,"y":-4.330401363659303e-5}},{"degrees_of_freedom":[6066,6067,6068,6069,6070,6071],"id":"n1011","parent":"11","position":{"x":17.979694910895578,"z":-2.020305089104421,"y":25},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0.00036465030809862257,"z":0.00024308938495597312,"y":-0.0011604239257457802},"angle":{"x":0.0005919837071302663,"z":-0.0002749588021664848,"y":-5.6294868937872875e-5}},{"degrees_of_freedom":[6072,6073,6074,6075,6076,6077],"id":"n1012","parent":"11","position":{"x":20,"z":-2.857142857142857,"y":25},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0.00040910601532926884,"z":0.0003377122846447276,"y":-0.001315839256392031},"angle":{"x":-8.01309117314149e-6,"z":-6.282798594654827e-5,"y":-5.297779573032637e-5}},{"degrees_of_freedom":[6078,6079,6080,6081,6082,6083],"id":"n1013","parent":"11","position":{"x":22.020305089104422,"z":-2.0203050891044216,"y":25},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0.0003739949321752301,"z":0.00043175281182929973,"y":-0.0014578432392476396},"angle":{"x":-0.0002893868214749931,"z":-0.00016230850413292966,"y":-5.3717408951211674e-5}},{"degrees_of_freedom":[6084,6085,6086,6087,6088,6089],"id":"n1014","parent":"11","position":{"x":20,"z":-5,"y":17.142857142857142},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0.00030613870566818135,"z":0.00022492625253739843,"y":-0.0010980682747584838},"angle":{"x":-9.464400835442641e-5,"z":-2.9726099383057797e-6,"y":-1.7609920870105908e-5}},{"degrees_of_freedom":[6090,6091,6092,6093,6094,6095],"id":"n1015","parent":"11","position":{"x":22.020305089104422,"z":-5,"y":17.979694910895578},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0.00032246875206908904,"z":0.0001813019727123543,"y":-0.001115719567251761},"angle":{"x":3.1566680831919077e-5,"z":-1.9512528727588108e-5,"y":3.466826679559262e-5}},{"degrees_of_freedom":[6096,6097,6098,6099,6100,6101],"id":"n1016","parent":"11","position":{"x":22.857142857142858,"z":-5,"y":20},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0.00034879835218355623,"z":0.00021606462074628271,"y":-0.0011462031020497436},"angle":{"x":-4.483664392165528e-5,"z":-1.0987361270553114e-5,"y":-0.0001497857345264983}},{"degrees_of_freedom":[6102,6103,6104,6105,6106,6107],"id":"n1017","parent":"11","position":{"x":22.020305089104422,"z":-5,"y":22.020305089104422},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0.00036771240094581986,"z":1.3452290987543325e-7,"y":-0.001157288107556843},"angle":{"x":-8.462944558862541e-5,"z":-4.066865200890454e-6,"y":-5.371753449375782e-5}},{"degrees_of_freedom":[6108,6109,6110,6111,6112,6113],"id":"n1018","parent":"11","position":{"x":20,"z":-5,"y":22.857142857142858},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0.00037240879391162136,"z":-0.00017921224960082448,"y":-0.001157351430351729},"angle":{"x":-0.0004958961250428509,"z":-2.1187370465259813e-6,"y":0.00011663482865464102}},{"degrees_of_freedom":[6114,6115,6116,6117,6118,6119],"id":"n1019","parent":"11","position":{"x":17.979694910895578,"z":-5,"y":22.020305089104422},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0.0003566356405312727,"z":0.0004714103013301518,"y":-0.0011345074833174864},"angle":{"x":0.00025063551166178616,"z":-2.7078276743668042e-5,"y":0.00042585834060208}},{"degrees_of_freedom":[6120,6121,6122,6123,6124,6125],"id":"n1020","parent":"11","position":{"x":17.142857142857142,"z":-5,"y":20},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0.0003216128803915253,"z":0.000321424426874906,"y":-0.0011031076736858925},"angle":{"x":8.940807894518986e-5,"z":-1.2153447482565812e-5,"y":3.662086081309668e-5}},{"degrees_of_freedom":[6126,6127,6128,6129,6130,6131],"id":"n1021","parent":"11","position":{"x":17.979694910895578,"z":-5,"y":17.979694910895578},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0.00030480957703184924,"z":0.00011014713606611877,"y":-0.0010952844707035761},"angle":{"x":0.0001546418811048924,"z":-2.3732241439358914e-6,"y":-0.00012086754266039518}},{"degrees_of_freedom":[6132,6133,6134,6135,6136,6137],"id":"n1022","parent":"11","position":{"x":20,"z":5,"y":22.857142857142858},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0.00018647614884502713,"z":0.00017841784259433344,"y":-0.0011542434527373091},"angle":{"x":-4.3040313717593496e-5,"z":-1.221966182450079e-5,"y":-3.079377011485393e-5}},{"degrees_of_freedom":[6138,6139,6140,6141,6142,6143],"id":"n1023","parent":"11","position":{"x":17.979694910895578,"z":5,"y":22.020305089104422},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0.00016182465628337454,"z":0.00015295099335581728,"y":-0.0011186897517901082},"angle":{"x":5.485638172406102e-5,"z":-2.4794203468120113e-5,"y":1.0837687509648966e-5}},{"degrees_of_freedom":[6144,6145,6146,6147,6148,6149],"id":"n1024","parent":"11","position":{"x":17.142857142857142,"z":5,"y":20},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0.00013342211818318382,"z":5.26397650755824e-5,"y":-0.001079863216088444},"angle":{"x":1.1347150494421317e-5,"z":-9.18894453961561e-6,"y":-9.16109595492299e-5}},{"degrees_of_freedom":[6150,6151,6152,6153,6154,6155],"id":"n1025","parent":"11","position":{"x":17.979694910895578,"z":5,"y":17.979694910895578},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0.00012423880266895776,"z":0.0001056555790541629,"y":-0.0010569597834943045},"angle":{"x":-3.397498231702643e-5,"z":5.551706781727728e-6,"y":2.0398228410388717e-5}},{"degrees_of_freedom":[6156,6157,6158,6159,6160,6161],"id":"n1026","parent":"11","position":{"x":20,"z":5,"y":17.142857142857142},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0.00012590170408030012,"z":9.308695416519864e-5,"y":-0.0010646397415422582},"angle":{"x":7.8973402459408e-5,"z":-1.1733759117096397e-5,"y":-2.6542794112982343e-5}},{"degrees_of_freedom":[6162,6163,6164,6165,6166,6167],"id":"n1027","parent":"11","position":{"x":22.020305089104422,"z":5,"y":17.979694910895578},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0.00014591174729413942,"z":0.0002126942024359844,"y":-0.001103286285267929},"angle":{"x":-3.343661839207212e-5,"z":-2.6966005921236306e-5,"y":-7.294830084240931e-5}},{"degrees_of_freedom":[6168,6169,6170,6171,6172,6173],"id":"n1028","parent":"11","position":{"x":22.857142857142858,"z":5,"y":20},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0.00017716754266981053,"z":0.0002060492253274055,"y":-0.001145489507759319},"angle":{"x":1.5613314568937753e-5,"z":-1.0829872051131465e-5,"y":4.571732035148663e-5}},{"degrees_of_freedom":[6174,6175,6176,6177,6178,6179],"id":"n1029","parent":"11","position":{"x":22.020305089104422,"z":5,"y":22.020305089104422},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0.00019155173583363698,"z":0.00027592023163712715,"y":-0.001167328730301222},"angle":{"x":6.560010548095514e-5,"z":1.7474375100111289e-6,"y":-7.471280598020482e-5}},{"degrees_of_freedom":[6180,6181,6182,6183,6184,6185],"id":"n1030","parent":"11","position":{"x":22.020305089104422,"z":7.979694910895579,"y":15},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":7.306208698796003e-5,"z":0.00020999707651220222,"y":-0.0009789501413927366},"angle":{"x":6.857138191966754e-6,"z":-1.4394585882657159e-5,"y":-2.4365976792715443e-5}},{"degrees_of_freedom":[6186,6187,6188,6189,6190,6191],"id":"n1031","parent":"11","position":{"x":17.979694910895578,"z":7.979694910895578,"y":15},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":6.93534952279571e-5,"z":0.00013131660568291634,"y":-0.0009342865686438009},"angle":{"x":-8.029243186164539e-5,"z":2.4331467769378365e-5,"y":-2.2740262316649643e-5}},{"degrees_of_freedom":[6192,6193,6194,6195,6196,6197],"id":"n1032","parent":"11","position":{"x":25,"z":10,"y":25},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":-400},"displacement":{"x":0.00013168805156364412,"z":0.00048706307189083626,"y":-0.0014034694832604896},"angle":{"x":7.156884512567607e-5,"z":-3.9419046434210945e-5,"y":-5.414114450728121e-5}},{"degrees_of_freedom":[6198,6199,6200,6201,6202,6203],"id":"n1033","parent":"11","position":{"x":25,"z":15,"y":20},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":7.3440458109579725e-6,"z":0.0003753218693961269,"y":-0.001158952784902263},"angle":{"x":1.4883084280515624e-5,"z":-1.6676722447527682e-5,"y":-3.3666148567228865e-5}},{"degrees_of_freedom":[6204,6205,6206,6207,6208,6209],"id":"n1034","parent":"11","position":{"x":25,"z":12.857142857142858,"y":20},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0.00016010310888893924,"z":0.0003782542051902883,"y":-0.00117495330862793},"angle":{"x":9.087917312020817e-6,"z":-3.185318763171574e-5,"y":3.2796324476652106e-5}},{"degrees_of_freedom":[6210,6211,6212,6213,6214,6215],"id":"n1035","parent":"11","position":{"x":25,"z":12.020305089104422,"y":22.020305089104422},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0.00020785391239682072,"z":0.00038185042097583697,"y":-0.0011782438060947479},"angle":{"x":-6.44724817747606e-6,"z":1.4161442582316352e-5,"y":-9.664149099298956e-5}},{"degrees_of_freedom":[6216,6217,6218,6219,6220,6221],"id":"n1036","parent":"11","position":{"x":25,"z":10,"y":22.857142857142858},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0.00032121863809136443,"z":0.0003787844636120234,"y":-0.0012364042447059384},"angle":{"x":-3.588573328066883e-5,"z":-3.1661797157229604e-5,"y":3.36775011927625e-5}},{"degrees_of_freedom":[6222,6223,6224,6225,6226,6227],"id":"n1037","parent":"11","position":{"x":25,"z":7.979694910895579,"y":22.020305089104422},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":7.273426540785066e-5,"z":0.0003760935376832616,"y":-0.001272590115799394},"angle":{"x":2.9065348282033476e-5,"z":-0.0001393132632614766,"y":-0.0002715181186667947}},{"degrees_of_freedom":[6228,6229,6230,6231,6232,6233],"id":"n1038","parent":"11","position":{"x":25,"z":7.142857142857142,"y":20},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-2.9397825579290705e-5,"z":0.0003502728686807277,"y":-0.0012430103324618483},"angle":{"x":6.786825822805128e-6,"z":-3.1211559892805936e-5,"y":3.352862037683644e-5}},{"degrees_of_freedom":[6234,6235,6236,6237,6238,6239],"id":"n1039","parent":"11","position":{"x":25,"z":7.979694910895578,"y":17.979694910895578},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-7.541382594964439e-5,"z":0.0003457196194594996,"y":-0.001230723037026333},"angle":{"x":-2.0311279755034936e-6,"z":4.814032291657236e-5,"y":-0.0001916233008096931}},{"degrees_of_freedom":[6240,6241,6242,6243,6244,6245],"id":"n1040","parent":"11","position":{"x":25,"z":10,"y":17.142857142857142},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-0.00018842108127638358,"z":0.0003478752979839277,"y":-0.001188358056918626},"angle":{"x":-2.6814200742665337e-5,"z":-3.140289169982511e-5,"y":3.2648128531266905e-5}},{"degrees_of_freedom":[6246,6247,6248,6249,6250,6251],"id":"n1041","parent":"11","position":{"x":25,"z":12.020305089104422,"y":17.979694910895578},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":5.7461834810808315e-5,"z":0.00035091050378097425,"y":-0.0011596428313387045},"angle":{"x":2.2349501377642497e-5,"z":-0.0001676858100612353,"y":-0.00035210743538718816}},{"degrees_of_freedom":[6252,6253,6254,6255,6256,6257],"id":"n1042","parent":"11","position":{"x":20,"z":15,"y":25},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":-800},"displacement":{"x":-5.190344667910419e-6,"z":0.00029394886728419816,"y":-0.0011862116166823503},"angle":{"x":1.8990345786067032e-5,"z":-1.1195594258817201e-6,"y":-4.539745713752244e-5}},{"degrees_of_freedom":[6258,6259,6260,6261,6262,6263],"id":"n1043","parent":"11","position":{"x":22.857142857142858,"z":10,"y":25},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":9.675927461714832e-5,"z":0.00038896611174744954,"y":-0.0017080361894180422},"angle":{"x":-6.930484493764905e-7,"z":-5.8217159564912134e-5,"y":-3.546964251905904e-5}},{"degrees_of_freedom":[6264,6265,6266,6267,6268,6269],"id":"n1044","parent":"11","position":{"x":22.020305089104422,"z":12.020305089104422,"y":25},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":5.646650744216139e-5,"z":0.00037264946923922025,"y":-0.0013734880986841693},"angle":{"x":0.00046388271907296414,"z":-0.00022272068264195147,"y":-4.281791742361835e-5}},{"degrees_of_freedom":[6270,6271,6272,6273,6274,6275],"id":"n1045","parent":"11","position":{"x":20,"z":12.857142857142858,"y":25},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":2.7366312351800378e-5,"z":0.00030075726056803256,"y":-0.0012341207720450646},"angle":{"x":-2.0596490790949653e-5,"z":-5.168276033884156e-5,"y":-3.958081935349728e-5}},{"degrees_of_freedom":[6276,6277,6278,6279,6280,6281],"id":"n1046","parent":"11","position":{"x":17.979694910895578,"z":12.020305089104422,"y":25},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":5.877520747950137e-5,"z":0.0002307659600422954,"y":-0.0011292253023605428},"angle":{"x":-0.00032265721082640555,"z":-0.00015822598975800267,"y":-4.13123396594181e-5}},{"degrees_of_freedom":[6282,6283,6284,6285,6286,6287],"id":"n1047","parent":"11","position":{"x":17.142857142857142,"z":10,"y":25},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":8.816740053809667e-5,"z":0.00020972810982030732,"y":-0.0008778999475718712},"angle":{"x":-1.7217419137388218e-6,"z":-4.4506919421667805e-5,"y":-3.2606527499625664e-5}},{"degrees_of_freedom":[6288,6289,6290,6291,6292,6293],"id":"n1048","parent":"11","position":{"x":17.979694910895578,"z":7.979694910895579,"y":25},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0.0001264368136822526,"z":0.00022492485109946918,"y":-0.0011352250354962972},"angle":{"x":0.0004475174832426482,"z":-0.000203085705318293,"y":-4.391833861580221e-5}},{"degrees_of_freedom":[6294,6295,6296,6297,6298,6299],"id":"n1049","parent":"11","position":{"x":20,"z":7.142857142857142,"y":25},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0.00015968630045255563,"z":0.00029738228362953046,"y":-0.0012410198767518405},"angle":{"x":1.8181927284882686e-5,"z":-5.104156704551368e-5,"y":-4.0041428184003504e-5}},{"degrees_of_freedom":[6300,6301,6302,6303,6304,6305],"id":"n1050","parent":"11","position":{"x":22.020305089104422,"z":7.979694910895578,"y":25},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0.00013148065615087857,"z":0.0003686708888228026,"y":-0.0013772453497473054},"angle":{"x":-0.00027441012029055117,"z":-0.00015473955484493525,"y":-4.1631868350969744e-5}},{"degrees_of_freedom":[6306,6307,6308,6309,6310,6311],"id":"n1051","parent":"11","position":{"x":20,"z":15,"y":22.857142857142858},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-3.6386718003987964e-6,"z":0.00021475369194826305,"y":-0.0011349738008625788},"angle":{"x":-2.596413083061526e-5,"z":-7.3231027289264634e-6,"y":-3.188560371066655e-5}},{"degrees_of_freedom":[6312,6313,6314,6315,6316,6317],"id":"n1052","parent":"11","position":{"x":17.979694910895578,"z":15,"y":22.020305089104422},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-2.338111953628051e-5,"z":0.0001733751861435944,"y":-0.0011094414500509872},"angle":{"x":2.9917433009048053e-5,"z":-1.9539837073132787e-5,"y":-6.789925651880031e-6}},{"degrees_of_freedom":[6318,6319,6320,6321,6322,6323],"id":"n1053","parent":"11","position":{"x":17.142857142857142,"z":15,"y":20},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-4.115122568523683e-5,"z":0.00010756169604044676,"y":-0.001074740606122454},"angle":{"x":9.267813136549699e-6,"z":-4.080484608627699e-6,"y":-5.60852056797026e-5}},{"degrees_of_freedom":[6324,6325,6326,6327,6328,6329],"id":"n1054","parent":"11","position":{"x":17.979694910895578,"z":15,"y":17.979694910895578},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-4.060750328807464e-5,"z":0.0001356166527872203,"y":-0.0010477483747263244},"angle":{"x":-1.4305586332643812e-5,"z":9.98096505391779e-6,"y":1.383303055341725e-6}},{"degrees_of_freedom":[6330,6331,6332,6333,6334,6335],"id":"n1055","parent":"11","position":{"x":20,"z":15,"y":17.142857142857142},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-3.519906272450494e-5,"z":0.0001448268732581103,"y":-0.0010462314746874128},"angle":{"x":5.311622358794513e-5,"z":-7.052017265175942e-6,"y":-2.6568569190331817e-5}},{"degrees_of_freedom":[6336,6337,6338,6339,6340,6341],"id":"n1056","parent":"11","position":{"x":22.020305089104422,"z":15,"y":17.979694910895578},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-1.934372377289514e-5,"z":0.0002429364305659463,"y":-0.001075103565419469},"angle":{"x":-1.4377339868069824e-5,"z":-2.1929185642599176e-5,"y":-5.4500487089812166e-5}},{"degrees_of_freedom":[6342,6343,6344,6345,6346,6347],"id":"n1057","parent":"11","position":{"x":22.857142857142858,"z":15,"y":20},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":1.285553097362295e-6,"z":0.0002596236508839942,"y":-0.0011125393050505775},"angle":{"x":1.4051608005938553e-5,"z":-5.435962058559771e-6,"y":1.390762736186334e-5}},{"degrees_of_freedom":[6348,6349,6350,6351,6352,6353],"id":"n1058","parent":"11","position":{"x":22.020305089104422,"z":15,"y":22.020305089104422},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":4.950853995509961e-6,"z":0.00029958774033915405,"y":-0.001138103994013931},"angle":{"x":4.414866967942265e-5,"z":6.648275227445276e-6,"y":-5.897851202696606e-5}},{"degrees_of_freedom":[6354,6355,6356,6357,6358,6359],"id":"n1059","parent":"11","position":{"x":25,"z":20,"y":25},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":-400},"displacement":{"x":-0.00011826124973875342,"z":0.0005323412492756367,"y":-0.0013958898774304419},"angle":{"x":7.217634312954353e-5,"z":-3.704102849381559e-5,"y":-7.554244646271545e-5}},{"degrees_of_freedom":[6360,6361,6362,6363,6364,6365],"id":"n1060","parent":"11","position":{"x":25,"z":25,"y":20},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-0.0001882032068999121,"z":0.0004159385959079366,"y":-0.0012229603943095994},"angle":{"x":1.0223163675374219e-5,"z":-1.6592187271701554e-5,"y":-1.7520855579102156e-5}},{"degrees_of_freedom":[6366,6367,6368,6369,6370,6371],"id":"n1061","parent":"11","position":{"x":25,"z":22.857142857142858,"y":20},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-4.267175204116724e-5,"z":0.00040453896569636404,"y":-0.0012025685468884332},"angle":{"x":1.645969234408873e-5,"z":-1.5461816515560165e-5,"y":2.80615094102431e-5}},{"degrees_of_freedom":[6372,6373,6374,6375,6376,6377],"id":"n1062","parent":"11","position":{"x":25,"z":22.020305089104422,"y":22.020305089104422},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-2.955755119829541e-5,"z":0.0004243873765863948,"y":-0.001206127446353251},"angle":{"x":3.709547908872486e-6,"z":5.561709453989892e-5,"y":-0.0001729801250341836}},{"degrees_of_freedom":[6378,6379,6380,6381,6382,6383],"id":"n1063","parent":"11","position":{"x":25,"z":20,"y":22.857142857142858},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":2.103030176163831e-6,"z":0.00042532622782237936,"y":-0.0012411365948054368},"angle":{"x":-1.8199561734463418e-5,"z":-1.4045265032129049e-5,"y":2.4054830024597343e-5}},{"degrees_of_freedom":[6384,6385,6386,6387,6388,6389],"id":"n1064","parent":"11","position":{"x":25,"z":17.979694910895578,"y":22.020305089104422},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-0.00012675369800413492,"z":0.00041686680635607523,"y":-0.0012588008309012053},"angle":{"x":3.601927499847698e-5,"z":-8.819295586753883e-5,"y":-0.0001856665533934059}},{"degrees_of_freedom":[6390,6391,6392,6393,6394,6395],"id":"n1065","parent":"11","position":{"x":25,"z":17.142857142857142,"y":20},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-0.00018012794751991618,"z":0.0003782392448305781,"y":-0.001221225295889229},"angle":{"x":1.4799543637728183e-5,"z":-1.546197190876445e-5,"y":2.0047846060783027e-5}},{"degrees_of_freedom":[6396,6397,6398,6399,6400,6401],"id":"n1066","parent":"11","position":{"x":25,"z":17.979694910895578,"y":17.979694910895578},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-0.0001999485584355327,"z":0.0003585904325327747,"y":-0.001212253035379773},"angle":{"x":6.335269702628431e-6,"z":6.792122216565353e-5,"y":-0.00021579520326404694}},{"degrees_of_freedom":[6402,6403,6404,6405,6406,6407],"id":"n1067","parent":"11","position":{"x":25,"z":20,"y":17.142857142857142},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-0.0002477989017208701,"z":0.0003575880122329982,"y":-0.0011882893042830722},"angle":{"x":-1.2471351218932385e-5,"z":-1.6878522331993728e-5,"y":2.4055087835405723e-5}},{"degrees_of_freedom":[6408,6409,6410,6411,6412,6413],"id":"n1068","parent":"11","position":{"x":25,"z":22.020305089104422,"y":17.979694910895578},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-0.00010275186090599399,"z":0.00036606741269147494,"y":-0.0011746276309923043},"angle":{"x":2.985296943334521e-5,"z":-9.647433516559074e-5,"y":-0.0002010762669929268}},{"degrees_of_freedom":[6414,6415,6416,6417,6418,6419],"id":"n1069","parent":"11","position":{"x":20,"z":25,"y":25},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":-400},"displacement":{"x":-0.000305844458333211,"z":0.00025336599247707,"y":-0.0013259021481708618},"angle":{"x":0.0001414938928811072,"z":5.8348835914838885e-5,"y":-4.677103441729697e-5}},{"degrees_of_freedom":[6420,6421,6422,6423,6424,6425],"id":"n1070","parent":"11","position":{"x":22.857142857142858,"z":20,"y":25},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-0.0001598945400638199,"z":0.00039431488578206477,"y":-0.0014597114353356172},"angle":{"x":3.2327337308485624e-5,"z":-2.527423721164314e-5,"y":-5.220378728473779e-5}},{"degrees_of_freedom":[6426,6427,6428,6429,6430,6431],"id":"n1071","parent":"11","position":{"x":22.020305089104422,"z":22.020305089104422,"y":25},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-0.0002210880573886298,"z":0.00037255956672345555,"y":-0.0013805984719660047},"angle":{"x":9.310811670725573e-5,"z":-4.676340548644601e-5,"y":-5.7872967531832536e-5}},{"degrees_of_freedom":[6432,6433,6434,6435,6436,6437],"id":"n1072","parent":"11","position":{"x":20,"z":22.857142857142858,"y":25},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-0.0002595851248673193,"z":0.00027976588090487386,"y":-0.0013478290282850059},"angle":{"x":2.1786038782243077e-5,"z":-2.1547187193332838e-5,"y":-4.874382708756486e-5}},{"degrees_of_freedom":[6438,6439,6440,6441,6442,6443],"id":"n1073","parent":"11","position":{"x":17.979694910895578,"z":22.020305089104422,"y":25},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-0.00022321758600226158,"z":0.00019752606482236019,"y":-0.0012785968079020668},"angle":{"x":-0.0001971866806253283,"z":-9.896580428057878e-5,"y":-4.6367132319457195e-5}},{"degrees_of_freedom":[6444,6445,6446,6447,6448,6449],"id":"n1074","parent":"11","position":{"x":17.142857142857142,"z":20,"y":25},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-0.00016668598251759237,"z":0.00017768117267096258,"y":-0.0011114546040202065},"angle":{"x":3.2327811590627735e-5,"z":-1.782032952625485e-5,"y":-4.9040646990721704e-5}},{"degrees_of_freedom":[6450,6451,6452,6453,6454,6455],"id":"n1075","parent":"11","position":{"x":17.979694910895578,"z":17.979694910895578,"y":25},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-0.00011480775137217676,"z":0.00019912754010999395,"y":-0.0011479732899019304},"angle":{"x":0.00011290298959050466,"z":-4.6308103988740746e-5,"y":-4.2901675999558896e-5}},{"degrees_of_freedom":[6456,6457,6458,6459,6460,6461],"id":"n1076","parent":"11","position":{"x":20,"z":17.142857142857142,"y":25},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-7.64740758399423e-5,"z":0.0002763995609582451,"y":-0.001163100347811417},"angle":{"x":4.286886372000311e-5,"z":-2.1547487240254608e-5,"y":-4.68669280461637e-5}},{"degrees_of_freedom":[6462,6463,6464,6465,6466,6467],"id":"n1077","parent":"11","position":{"x":22.020305089104422,"z":17.979694910895578,"y":25},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-0.00010868175446707815,"z":0.00036616227741546675,"y":-0.001249975996967816},"angle":{"x":-0.00024125436916230735,"z":-0.00012200005271150009,"y":-5.469875317852261e-5}},{"degrees_of_freedom":[6468,6469,6470,6471,6472,6473],"id":"n1078","parent":"11","position":{"x":20,"z":25,"y":22.857142857142858},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-0.00020041812373870115,"z":0.0001972217918637139,"y":-0.0011891610248266175},"angle":{"x":0.00015918309068044804,"z":-2.0814119695366307e-5,"y":6.818821229578964e-5}},{"degrees_of_freedom":[6474,6475,6476,6477,6478,6479],"id":"n1079","parent":"11","position":{"x":17.979694910895578,"z":25,"y":22.020305089104422},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-0.00021318379708455887,"z":0.0002017723821002164,"y":-0.001140465481290087},"angle":{"x":9.49852691927289e-5,"z":-1.9555679296911986e-5,"y":4.159663890542496e-5}},{"degrees_of_freedom":[6480,6481,6482,6483,6484,6485],"id":"n1080","parent":"11","position":{"x":17.142857142857142,"z":25,"y":20},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-0.0002343757338727447,"z":4.468277692632966e-5,"y":-0.0011165368904751769},"angle":{"x":2.189023256461234e-5,"z":-5.400454056713462e-6,"y":-0.00013487041732860517}},{"degrees_of_freedom":[6486,6487,6488,6489,6490,6491],"id":"n1081","parent":"11","position":{"x":17.979694910895578,"z":25,"y":17.979694910895578},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-0.00023713643005281773,"z":0.00011332252327157723,"y":-0.0011041837118303892},"angle":{"x":-5.024703025093626e-5,"z":4.721349167026895e-6,"y":3.9284233512998216e-5}},{"degrees_of_freedom":[6492,6493,6494,6495,6496,6497],"id":"n1082","parent":"11","position":{"x":20,"z":25,"y":17.142857142857142},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-0.00024003166908533337,"z":7.600497569671414e-5,"y":-0.0011251818806083814},"angle":{"x":0.00018186966431178291,"z":-1.961831145195624e-5,"y":-5.6861642483460595e-5}},{"degrees_of_freedom":[6498,6499,6500,6501,6502,6503],"id":"n1083","parent":"11","position":{"x":22.020305089104422,"z":25,"y":17.979694910895578},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-0.00022512988524254227,"z":0.0003430783145475804,"y":-0.001170818538337309},"angle":{"x":-0.0004084087254164157,"z":-2.0048658855414726e-5,"y":-0.0003013630416938561}},{"degrees_of_freedom":[6504,6505,6506,6507,6508,6509],"id":"n1084","parent":"11","position":{"x":22.857142857142858,"z":25,"y":20},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-0.00020130040998647333,"z":-0.00022984002476853817,"y":-0.0011935599397503874},"angle":{"x":-0.00010315969599908816,"z":-5.895782020737576e-6,"y":0.00043557343516574}},{"degrees_of_freedom":[6510,6511,6512,6513,6514,6515],"id":"n1085","parent":"11","position":{"x":22.020305089104422,"z":25,"y":22.020305089104422},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-0.00020226867539120555,"z":-7.374966174275859e-5,"y":-0.0012075778601795526},"angle":{"x":2.620010289698452e-5,"z":1.0076241912251214e-5,"y":0.00012327162298132442}}],"bar":false,"animation":{"speed":3,"exageration":2000,"showDisplacement":true},"viz":{"colorMap":0,"colorMaps":[[[0,[0.23,0.299,0.754]],[0.002,[0.23,0.299,0.754]],[0.004,[0.234,0.306,0.76]],[0.006,[0.234,0.306,0.76]],[0.008,[0.239,0.312,0.766]],[0.01,[0.239,0.312,0.766]],[0.012,[0.244,0.319,0.772]],[0.014,[0.244,0.319,0.772]],[0.016,[0.248,0.326,0.778]],[0.018,[0.248,0.326,0.778]],[0.02,[0.253,0.333,0.784]],[0.022,[0.253,0.333,0.784]],[0.023,[0.257,0.34,0.79]],[0.025,[0.257,0.34,0.79]],[0.027,[0.262,0.346,0.796]],[0.029,[0.262,0.346,0.796]],[0.031,[0.266,0.353,0.802]],[0.033,[0.266,0.353,0.802]],[0.035,[0.271,0.36,0.807]],[0.037,[0.271,0.36,0.807]],[0.039,[0.276,0.367,0.813]],[0.041,[0.276,0.367,0.813]],[0.043,[0.281,0.373,0.818]],[0.045,[0.281,0.373,0.818]],[0.047,[0.285,0.38,0.823]],[0.049,[0.285,0.38,0.823]],[0.051,[0.29,0.387,0.829]],[0.053,[0.29,0.387,0.829]],[0.055,[0.295,0.394,0.834]],[0.057,[0.295,0.394,0.834]],[0.059,[0.299,0.4,0.84]],[0.061,[0.299,0.4,0.84]],[0.063,[0.304,0.407,0.845]],[0.065,[0.304,0.407,0.845]],[0.067,[0.309,0.413,0.85]],[0.068,[0.309,0.413,0.85]],[0.07,[0.314,0.42,0.855]],[0.072,[0.314,0.42,0.855]],[0.074,[0.319,0.427,0.86]],[0.076,[0.319,0.427,0.86]],[0.078,[0.324,0.433,0.865]],[0.08,[0.324,0.433,0.865]],[0.082,[0.329,0.44,0.87]],[0.084,[0.329,0.44,0.87]],[0.086,[0.333,0.446,0.874]],[0.088,[0.333,0.446,0.874]],[0.09,[0.338,0.453,0.879]],[0.092,[0.338,0.453,0.879]],[0.094,[0.343,0.459,0.884]],[0.096,[0.343,0.459,0.884]],[0.098,[0.348,0.466,0.888]],[0.1,[0.348,0.466,0.888]],[0.102,[0.353,0.472,0.893]],[0.104,[0.353,0.472,0.893]],[0.106,[0.358,0.478,0.897]],[0.108,[0.358,0.478,0.897]],[0.11,[0.363,0.485,0.901]],[0.112,[0.363,0.485,0.901]],[0.114,[0.369,0.491,0.905]],[0.115,[0.369,0.491,0.905]],[0.117,[0.374,0.497,0.909]],[0.119,[0.374,0.497,0.909]],[0.121,[0.379,0.504,0.914]],[0.123,[0.379,0.504,0.914]],[0.125,[0.384,0.51,0.918]],[0.127,[0.384,0.51,0.918]],[0.129,[0.389,0.516,0.921]],[0.131,[0.389,0.516,0.921]],[0.133,[0.394,0.522,0.925]],[0.135,[0.394,0.522,0.925]],[0.137,[0.399,0.529,0.928]],[0.139,[0.399,0.529,0.928]],[0.141,[0.404,0.535,0.932]],[0.143,[0.404,0.535,0.932]],[0.145,[0.41,0.541,0.936]],[0.147,[0.41,0.541,0.936]],[0.149,[0.415,0.547,0.939]],[0.151,[0.415,0.547,0.939]],[0.153,[0.42,0.553,0.943]],[0.155,[0.42,0.553,0.943]],[0.157,[0.425,0.559,0.946]],[0.159,[0.425,0.559,0.946]],[0.16,[0.431,0.565,0.949]],[0.162,[0.431,0.565,0.949]],[0.164,[0.436,0.571,0.952]],[0.166,[0.436,0.571,0.952]],[0.168,[0.441,0.577,0.955]],[0.17,[0.441,0.577,0.955]],[0.172,[0.446,0.582,0.957]],[0.174,[0.446,0.582,0.957]],[0.176,[0.452,0.588,0.96]],[0.178,[0.452,0.588,0.96]],[0.18,[0.457,0.594,0.963]],[0.182,[0.457,0.594,0.963]],[0.184,[0.462,0.6,0.966]],[0.186,[0.462,0.6,0.966]],[0.188,[0.468,0.606,0.969]],[0.19,[0.468,0.606,0.969]],[0.192,[0.473,0.611,0.971]],[0.194,[0.473,0.611,0.971]],[0.196,[0.478,0.617,0.973]],[0.198,[0.478,0.617,0.973]],[0.2,[0.484,0.622,0.975]],[0.202,[0.484,0.622,0.975]],[0.204,[0.489,0.628,0.977]],[0.205,[0.489,0.628,0.977]],[0.207,[0.495,0.633,0.979]],[0.209,[0.495,0.633,0.979]],[0.211,[0.5,0.639,0.981]],[0.213,[0.5,0.639,0.981]],[0.215,[0.505,0.644,0.983]],[0.217,[0.505,0.644,0.983]],[0.219,[0.511,0.649,0.985]],[0.221,[0.511,0.649,0.985]],[0.223,[0.516,0.654,0.986]],[0.225,[0.516,0.654,0.986]],[0.227,[0.522,0.66,0.988]],[0.229,[0.522,0.66,0.988]],[0.231,[0.527,0.665,0.989]],[0.233,[0.527,0.665,0.989]],[0.235,[0.533,0.67,0.99]],[0.237,[0.533,0.67,0.99]],[0.239,[0.538,0.675,0.992]],[0.241,[0.538,0.675,0.992]],[0.243,[0.543,0.68,0.993]],[0.245,[0.543,0.68,0.993]],[0.247,[0.549,0.685,0.994]],[0.249,[0.549,0.685,0.994]],[0.25,[0.554,0.69,0.996]],[0.252,[0.554,0.69,0.996]],[0.254,[0.56,0.695,0.996]],[0.256,[0.56,0.695,0.996]],[0.258,[0.565,0.699,0.997]],[0.26,[0.565,0.699,0.997]],[0.262,[0.571,0.704,0.997]],[0.264,[0.571,0.704,0.997]],[0.266,[0.576,0.709,0.998]],[0.268,[0.576,0.709,0.998]],[0.27,[0.581,0.713,0.998]],[0.272,[0.581,0.713,0.998]],[0.274,[0.587,0.718,0.999]],[0.276,[0.587,0.718,0.999]],[0.278,[0.592,0.723,0.999]],[0.28,[0.592,0.723,0.999]],[0.282,[0.598,0.727,1]],[0.284,[0.598,0.727,1]],[0.286,[0.603,0.732,1]],[0.288,[0.603,0.732,1]],[0.29,[0.609,0.736,0.999]],[0.292,[0.609,0.736,0.999]],[0.294,[0.614,0.74,0.999]],[0.295,[0.614,0.74,0.999]],[0.297,[0.619,0.744,0.999]],[0.299,[0.619,0.744,0.999]],[0.301,[0.625,0.748,0.999]],[0.303,[0.625,0.748,0.999]],[0.305,[0.63,0.753,0.999]],[0.307,[0.63,0.753,0.999]],[0.309,[0.635,0.757,0.998]],[0.311,[0.635,0.757,0.998]],[0.313,[0.641,0.761,0.998]],[0.315,[0.641,0.761,0.998]],[0.317,[0.646,0.764,0.997]],[0.319,[0.646,0.764,0.997]],[0.321,[0.651,0.768,0.996]],[0.323,[0.651,0.768,0.996]],[0.325,[0.657,0.772,0.995]],[0.327,[0.657,0.772,0.995]],[0.329,[0.662,0.775,0.994]],[0.331,[0.662,0.775,0.994]],[0.333,[0.667,0.779,0.993]],[0.335,[0.667,0.779,0.993]],[0.337,[0.673,0.783,0.992]],[0.339,[0.673,0.783,0.992]],[0.341,[0.678,0.787,0.991]],[0.342,[0.678,0.787,0.991]],[0.344,[0.683,0.79,0.99]],[0.346,[0.683,0.79,0.99]],[0.348,[0.688,0.793,0.988]],[0.35,[0.688,0.793,0.988]],[0.352,[0.693,0.796,0.986]],[0.354,[0.693,0.796,0.986]],[0.356,[0.698,0.799,0.985]],[0.358,[0.698,0.799,0.985]],[0.36,[0.704,0.803,0.983]],[0.362,[0.704,0.803,0.983]],[0.364,[0.709,0.806,0.981]],[0.366,[0.709,0.806,0.981]],[0.368,[0.714,0.809,0.979]],[0.37,[0.714,0.809,0.979]],[0.372,[0.719,0.812,0.978]],[0.374,[0.719,0.812,0.978]],[0.376,[0.724,0.815,0.976]],[0.378,[0.724,0.815,0.976]],[0.38,[0.729,0.817,0.973]],[0.382,[0.729,0.817,0.973]],[0.384,[0.734,0.82,0.971]],[0.386,[0.734,0.82,0.971]],[0.387,[0.739,0.823,0.968]],[0.389,[0.739,0.823,0.968]],[0.391,[0.744,0.825,0.966]],[0.393,[0.744,0.825,0.966]],[0.395,[0.749,0.828,0.963]],[0.397,[0.749,0.828,0.963]],[0.399,[0.754,0.83,0.961]],[0.401,[0.754,0.83,0.961]],[0.403,[0.759,0.833,0.958]],[0.405,[0.759,0.833,0.958]],[0.407,[0.763,0.835,0.956]],[0.409,[0.763,0.835,0.956]],[0.411,[0.768,0.837,0.952]],[0.413,[0.768,0.837,0.952]],[0.415,[0.773,0.839,0.949]],[0.417,[0.773,0.839,0.949]],[0.419,[0.777,0.841,0.946]],[0.421,[0.777,0.841,0.946]],[0.423,[0.782,0.843,0.943]],[0.425,[0.782,0.843,0.943]],[0.427,[0.787,0.845,0.94]],[0.429,[0.787,0.845,0.94]],[0.431,[0.791,0.847,0.937]],[0.432,[0.791,0.847,0.937]],[0.434,[0.796,0.849,0.933]],[0.436,[0.796,0.849,0.933]],[0.438,[0.801,0.85,0.93]],[0.44,[0.801,0.85,0.93]],[0.442,[0.805,0.852,0.926]],[0.444,[0.805,0.852,0.926]],[0.446,[0.809,0.853,0.922]],[0.448,[0.809,0.853,0.922]],[0.45,[0.814,0.854,0.918]],[0.452,[0.814,0.854,0.918]],[0.454,[0.818,0.856,0.915]],[0.456,[0.818,0.856,0.915]],[0.458,[0.822,0.857,0.911]],[0.46,[0.822,0.857,0.911]],[0.462,[0.827,0.858,0.907]],[0.464,[0.827,0.858,0.907]],[0.466,[0.831,0.86,0.903]],[0.468,[0.831,0.86,0.903]],[0.47,[0.835,0.861,0.899]],[0.472,[0.835,0.861,0.899]],[0.474,[0.839,0.861,0.894]],[0.476,[0.839,0.861,0.894]],[0.477,[0.843,0.862,0.89]],[0.479,[0.843,0.862,0.89]],[0.481,[0.847,0.862,0.886]],[0.483,[0.847,0.862,0.886]],[0.485,[0.851,0.863,0.881]],[0.487,[0.851,0.863,0.881]],[0.489,[0.855,0.864,0.877]],[0.491,[0.855,0.864,0.877]],[0.493,[0.859,0.864,0.872]],[0.495,[0.859,0.864,0.872]],[0.497,[0.863,0.865,0.868]],[0.499,[0.863,0.865,0.868]],[0.501,[0.867,0.864,0.863]],[0.503,[0.867,0.864,0.863]],[0.505,[0.871,0.862,0.857]],[0.507,[0.871,0.862,0.857]],[0.509,[0.876,0.86,0.851]],[0.511,[0.876,0.86,0.851]],[0.513,[0.88,0.858,0.846]],[0.515,[0.88,0.858,0.846]],[0.517,[0.884,0.856,0.84]],[0.519,[0.884,0.856,0.84]],[0.521,[0.888,0.854,0.835]],[0.523,[0.888,0.854,0.835]],[0.524,[0.892,0.852,0.829]],[0.526,[0.892,0.852,0.829]],[0.528,[0.896,0.85,0.823]],[0.53,[0.896,0.85,0.823]],[0.532,[0.9,0.848,0.818]],[0.534,[0.9,0.848,0.818]],[0.536,[0.903,0.845,0.812]],[0.538,[0.903,0.845,0.812]],[0.54,[0.906,0.842,0.806]],[0.542,[0.906,0.842,0.806]],[0.544,[0.909,0.839,0.8]],[0.546,[0.909,0.839,0.8]],[0.548,[0.913,0.837,0.795]],[0.55,[0.913,0.837,0.795]],[0.552,[0.916,0.834,0.789]],[0.554,[0.916,0.834,0.789]],[0.556,[0.919,0.831,0.783]],[0.558,[0.919,0.831,0.783]],[0.56,[0.923,0.829,0.777]],[0.562,[0.923,0.829,0.777]],[0.564,[0.926,0.826,0.771]],[0.566,[0.926,0.826,0.771]],[0.568,[0.928,0.822,0.765]],[0.569,[0.928,0.822,0.765]],[0.571,[0.931,0.819,0.759]],[0.573,[0.931,0.819,0.759]],[0.575,[0.933,0.816,0.753]],[0.577,[0.933,0.816,0.753]],[0.579,[0.936,0.812,0.747]],[0.581,[0.936,0.812,0.747]],[0.583,[0.938,0.809,0.741]],[0.585,[0.938,0.809,0.741]],[0.587,[0.941,0.806,0.735]],[0.589,[0.941,0.806,0.735]],[0.591,[0.943,0.802,0.729]],[0.593,[0.943,0.802,0.729]],[0.595,[0.946,0.799,0.723]],[0.597,[0.946,0.799,0.723]],[0.599,[0.947,0.795,0.717]],[0.601,[0.947,0.795,0.717]],[0.603,[0.949,0.791,0.711]],[0.605,[0.949,0.791,0.711]],[0.607,[0.951,0.787,0.705]],[0.609,[0.951,0.787,0.705]],[0.611,[0.953,0.783,0.699]],[0.613,[0.953,0.783,0.699]],[0.614,[0.955,0.779,0.693]],[0.616,[0.955,0.779,0.693]],[0.618,[0.956,0.775,0.686]],[0.62,[0.956,0.775,0.686]],[0.622,[0.958,0.771,0.68]],[0.624,[0.958,0.771,0.68]],[0.626,[0.96,0.767,0.674]],[0.628,[0.96,0.767,0.674]],[0.63,[0.961,0.763,0.668]],[0.632,[0.961,0.763,0.668]],[0.634,[0.962,0.758,0.662]],[0.636,[0.962,0.758,0.662]],[0.638,[0.963,0.754,0.656]],[0.64,[0.963,0.754,0.656]],[0.642,[0.964,0.749,0.649]],[0.644,[0.964,0.749,0.649]],[0.646,[0.965,0.745,0.643]],[0.648,[0.965,0.745,0.643]],[0.65,[0.966,0.74,0.637]],[0.652,[0.966,0.74,0.637]],[0.654,[0.967,0.736,0.631]],[0.656,[0.967,0.736,0.631]],[0.658,[0.968,0.731,0.625]],[0.659,[0.968,0.731,0.625]],[0.661,[0.968,0.726,0.618]],[0.663,[0.968,0.726,0.618]],[0.665,[0.968,0.721,0.612]],[0.667,[0.968,0.721,0.612]],[0.669,[0.969,0.716,0.606]],[0.671,[0.969,0.716,0.606]],[0.673,[0.969,0.711,0.6]],[0.675,[0.969,0.711,0.6]],[0.677,[0.969,0.706,0.594]],[0.679,[0.969,0.706,0.594]],[0.681,[0.97,0.701,0.588]],[0.683,[0.97,0.701,0.588]],[0.685,[0.97,0.696,0.581]],[0.687,[0.97,0.696,0.581]],[0.689,[0.97,0.69,0.575]],[0.691,[0.97,0.69,0.575]],[0.693,[0.969,0.685,0.569]],[0.695,[0.969,0.685,0.569]],[0.697,[0.969,0.679,0.563]],[0.699,[0.969,0.679,0.563]],[0.701,[0.968,0.674,0.557]],[0.703,[0.968,0.674,0.557]],[0.705,[0.968,0.668,0.55]],[0.706,[0.968,0.668,0.55]],[0.708,[0.968,0.663,0.544]],[0.71,[0.968,0.663,0.544]],[0.712,[0.967,0.657,0.538]],[0.714,[0.967,0.657,0.538]],[0.716,[0.967,0.652,0.532]],[0.718,[0.967,0.652,0.532]],[0.72,[0.966,0.646,0.526]],[0.722,[0.966,0.646,0.526]],[0.724,[0.965,0.64,0.52]],[0.726,[0.965,0.64,0.52]],[0.728,[0.964,0.634,0.514]],[0.73,[0.964,0.634,0.514]],[0.732,[0.963,0.628,0.508]],[0.734,[0.963,0.628,0.508]],[0.736,[0.962,0.622,0.502]],[0.738,[0.962,0.622,0.502]],[0.74,[0.96,0.616,0.495]],[0.742,[0.96,0.616,0.495]],[0.744,[0.959,0.61,0.489]],[0.746,[0.959,0.61,0.489]],[0.748,[0.958,0.604,0.483]],[0.75,[0.958,0.604,0.483]],[0.751,[0.957,0.598,0.477]],[0.753,[0.957,0.598,0.477]],[0.755,[0.955,0.592,0.471]],[0.757,[0.955,0.592,0.471]],[0.759,[0.953,0.585,0.465]],[0.761,[0.953,0.585,0.465]],[0.763,[0.951,0.579,0.459]],[0.765,[0.951,0.579,0.459]],[0.767,[0.949,0.572,0.453]],[0.769,[0.949,0.572,0.453]],[0.771,[0.948,0.566,0.447]],[0.773,[0.948,0.566,0.447]],[0.775,[0.946,0.56,0.442]],[0.777,[0.946,0.56,0.442]],[0.779,[0.944,0.553,0.436]],[0.781,[0.944,0.553,0.436]],[0.783,[0.942,0.546,0.43]],[0.785,[0.942,0.546,0.43]],[0.787,[0.939,0.54,0.424]],[0.789,[0.939,0.54,0.424]],[0.791,[0.937,0.533,0.418]],[0.793,[0.937,0.533,0.418]],[0.795,[0.934,0.526,0.412]],[0.796,[0.934,0.526,0.412]],[0.798,[0.932,0.519,0.406]],[0.8,[0.932,0.519,0.406]],[0.802,[0.929,0.512,0.401]],[0.804,[0.929,0.512,0.401]],[0.806,[0.927,0.505,0.395]],[0.808,[0.927,0.505,0.395]],[0.81,[0.924,0.499,0.389]],[0.812,[0.924,0.499,0.389]],[0.814,[0.921,0.491,0.383]],[0.816,[0.921,0.491,0.383]],[0.818,[0.918,0.484,0.378]],[0.82,[0.918,0.484,0.378]],[0.822,[0.915,0.477,0.372]],[0.824,[0.915,0.477,0.372]],[0.826,[0.912,0.47,0.367]],[0.828,[0.912,0.47,0.367]],[0.83,[0.909,0.462,0.361]],[0.832,[0.909,0.462,0.361]],[0.834,[0.906,0.455,0.355]],[0.836,[0.906,0.455,0.355]],[0.838,[0.903,0.448,0.35]],[0.84,[0.903,0.448,0.35]],[0.841,[0.9,0.441,0.344]],[0.843,[0.9,0.441,0.344]],[0.845,[0.896,0.433,0.339]],[0.847,[0.896,0.433,0.339]],[0.849,[0.892,0.425,0.333]],[0.851,[0.892,0.425,0.333]],[0.853,[0.888,0.418,0.328]],[0.855,[0.888,0.418,0.328]],[0.857,[0.885,0.41,0.323]],[0.859,[0.885,0.41,0.323]],[0.861,[0.881,0.402,0.317]],[0.863,[0.881,0.402,0.317]],[0.865,[0.877,0.395,0.312]],[0.867,[0.877,0.395,0.312]],[0.869,[0.873,0.387,0.306]],[0.871,[0.873,0.387,0.306]],[0.873,[0.87,0.379,0.301]],[0.875,[0.87,0.379,0.301]],[0.877,[0.865,0.371,0.296]],[0.879,[0.865,0.371,0.296]],[0.881,[0.861,0.363,0.291]],[0.883,[0.861,0.363,0.291]],[0.885,[0.857,0.355,0.285]],[0.886,[0.857,0.355,0.285]],[0.888,[0.852,0.346,0.28]],[0.89,[0.852,0.346,0.28]],[0.892,[0.848,0.338,0.275]],[0.894,[0.848,0.338,0.275]],[0.896,[0.844,0.33,0.27]],[0.898,[0.844,0.33,0.27]],[0.9,[0.839,0.322,0.265]],[0.902,[0.839,0.322,0.265]],[0.904,[0.835,0.314,0.26]],[0.906,[0.835,0.314,0.26]],[0.908,[0.83,0.305,0.255]],[0.91,[0.83,0.305,0.255]],[0.912,[0.825,0.296,0.25]],[0.914,[0.825,0.296,0.25]],[0.916,[0.82,0.287,0.245]],[0.918,[0.82,0.287,0.245]],[0.92,[0.816,0.278,0.24]],[0.922,[0.816,0.278,0.24]],[0.924,[0.811,0.269,0.235]],[0.926,[0.811,0.269,0.235]],[0.928,[0.806,0.26,0.231]],[0.93,[0.806,0.26,0.231]],[0.932,[0.801,0.251,0.226]],[0.933,[0.801,0.251,0.226]],[0.935,[0.796,0.242,0.221]],[0.937,[0.796,0.242,0.221]],[0.939,[0.791,0.231,0.216]],[0.941,[0.791,0.231,0.216]],[0.943,[0.785,0.221,0.212]],[0.945,[0.785,0.221,0.212]],[0.947,[0.78,0.21,0.207]],[0.949,[0.78,0.21,0.207]],[0.951,[0.774,0.2,0.203]],[0.953,[0.774,0.2,0.203]],[0.955,[0.769,0.189,0.198]],[0.957,[0.769,0.189,0.198]],[0.959,[0.764,0.179,0.193]],[0.961,[0.764,0.179,0.193]],[0.963,[0.758,0.168,0.189]],[0.965,[0.758,0.168,0.189]],[0.967,[0.753,0.158,0.184]],[0.969,[0.753,0.158,0.184]],[0.971,[0.747,0.14,0.18]],[0.973,[0.747,0.14,0.18]],[0.975,[0.741,0.122,0.176]],[0.977,[0.741,0.122,0.176]],[0.978,[0.735,0.104,0.171]],[0.98,[0.735,0.104,0.171]],[0.982,[0.729,0.087,0.167]],[0.984,[0.729,0.087,0.167]],[0.986,[0.723,0.069,0.163]],[0.988,[0.723,0.069,0.163]],[0.99,[0.717,0.051,0.159]],[0.992,[0.717,0.051,0.159]],[0.994,[0.712,0.033,0.154]],[0.996,[0.712,0.033,0.154]],[0.998,[0.706,0.016,0.15]],[1,[0.706,0.016,0.15]]],[[0,[1,1,0.851]],[0.002,[1,1,0.851]],[0.004,[0.998,0.999,0.846]],[0.006,[0.998,0.999,0.846]],[0.008,[0.996,0.998,0.841]],[0.01,[0.996,0.998,0.841]],[0.012,[0.993,0.997,0.836]],[0.014,[0.993,0.997,0.836]],[0.016,[0.991,0.997,0.831]],[0.018,[0.991,0.997,0.831]],[0.02,[0.989,0.996,0.826]],[0.022,[0.989,0.996,0.826]],[0.023,[0.987,0.995,0.821]],[0.025,[0.987,0.995,0.821]],[0.027,[0.984,0.994,0.817]],[0.029,[0.984,0.994,0.817]],[0.031,[0.982,0.993,0.812]],[0.033,[0.982,0.993,0.812]],[0.035,[0.98,0.992,0.807]],[0.037,[0.98,0.992,0.807]],[0.039,[0.978,0.991,0.802]],[0.041,[0.978,0.991,0.802]],[0.043,[0.976,0.991,0.797]],[0.045,[0.976,0.991,0.797]],[0.047,[0.973,0.99,0.792]],[0.049,[0.973,0.99,0.792]],[0.051,[0.971,0.989,0.787]],[0.053,[0.971,0.989,0.787]],[0.055,[0.969,0.988,0.782]],[0.057,[0.969,0.988,0.782]],[0.059,[0.967,0.987,0.777]],[0.061,[0.967,0.987,0.777]],[0.063,[0.965,0.986,0.772]],[0.065,[0.965,0.986,0.772]],[0.067,[0.962,0.985,0.767]],[0.068,[0.962,0.985,0.767]],[0.07,[0.96,0.984,0.762]],[0.072,[0.96,0.984,0.762]],[0.074,[0.958,0.984,0.757]],[0.076,[0.958,0.984,0.757]],[0.078,[0.956,0.983,0.753]],[0.08,[0.956,0.983,0.753]],[0.082,[0.953,0.982,0.748]],[0.084,[0.953,0.982,0.748]],[0.086,[0.951,0.981,0.743]],[0.088,[0.951,0.981,0.743]],[0.09,[0.949,0.98,0.738]],[0.092,[0.949,0.98,0.738]],[0.094,[0.947,0.979,0.733]],[0.096,[0.947,0.979,0.733]],[0.098,[0.945,0.978,0.728]],[0.1,[0.945,0.978,0.728]],[0.102,[0.942,0.978,0.723]],[0.104,[0.942,0.978,0.723]],[0.106,[0.94,0.977,0.718]],[0.108,[0.94,0.977,0.718]],[0.11,[0.938,0.976,0.713]],[0.112,[0.938,0.976,0.713]],[0.114,[0.936,0.975,0.708]],[0.115,[0.936,0.975,0.708]],[0.117,[0.934,0.974,0.703]],[0.119,[0.934,0.974,0.703]],[0.121,[0.931,0.973,0.698]],[0.123,[0.931,0.973,0.698]],[0.125,[0.929,0.972,0.694]],[0.127,[0.929,0.972,0.694]],[0.129,[0.924,0.97,0.695]],[0.131,[0.924,0.97,0.695]],[0.133,[0.919,0.969,0.695]],[0.135,[0.919,0.969,0.695]],[0.137,[0.915,0.967,0.695]],[0.139,[0.915,0.967,0.695]],[0.141,[0.91,0.965,0.696]],[0.143,[0.91,0.965,0.696]],[0.145,[0.905,0.963,0.696]],[0.147,[0.905,0.963,0.696]],[0.149,[0.901,0.961,0.696]],[0.151,[0.901,0.961,0.696]],[0.153,[0.896,0.959,0.697]],[0.155,[0.896,0.959,0.697]],[0.157,[0.891,0.958,0.697]],[0.159,[0.891,0.958,0.697]],[0.16,[0.887,0.956,0.697]],[0.162,[0.887,0.956,0.697]],[0.164,[0.882,0.954,0.698]],[0.166,[0.882,0.954,0.698]],[0.168,[0.877,0.952,0.698]],[0.17,[0.877,0.952,0.698]],[0.172,[0.873,0.95,0.699]],[0.174,[0.873,0.95,0.699]],[0.176,[0.868,0.948,0.699]],[0.178,[0.868,0.948,0.699]],[0.18,[0.863,0.946,0.699]],[0.182,[0.863,0.946,0.699]],[0.184,[0.859,0.945,0.7]],[0.186,[0.859,0.945,0.7]],[0.188,[0.854,0.943,0.7]],[0.19,[0.854,0.943,0.7]],[0.192,[0.849,0.941,0.7]],[0.194,[0.849,0.941,0.7]],[0.196,[0.845,0.939,0.701]],[0.198,[0.845,0.939,0.701]],[0.2,[0.84,0.937,0.701]],[0.202,[0.84,0.937,0.701]],[0.204,[0.835,0.935,0.702]],[0.205,[0.835,0.935,0.702]],[0.207,[0.831,0.934,0.702]],[0.209,[0.831,0.934,0.702]],[0.211,[0.826,0.932,0.702]],[0.213,[0.826,0.932,0.702]],[0.215,[0.821,0.93,0.703]],[0.217,[0.821,0.93,0.703]],[0.219,[0.817,0.928,0.703]],[0.221,[0.817,0.928,0.703]],[0.223,[0.812,0.926,0.703]],[0.225,[0.812,0.926,0.703]],[0.227,[0.807,0.924,0.704]],[0.229,[0.807,0.924,0.704]],[0.231,[0.803,0.922,0.704]],[0.233,[0.803,0.922,0.704]],[0.235,[0.798,0.921,0.704]],[0.237,[0.798,0.921,0.704]],[0.239,[0.793,0.919,0.705]],[0.241,[0.793,0.919,0.705]],[0.243,[0.789,0.917,0.705]],[0.245,[0.789,0.917,0.705]],[0.247,[0.784,0.915,0.706]],[0.249,[0.784,0.915,0.706]],[0.25,[0.778,0.913,0.706]],[0.252,[0.778,0.913,0.706]],[0.254,[0.769,0.909,0.707]],[0.256,[0.769,0.909,0.707]],[0.258,[0.76,0.906,0.708]],[0.26,[0.76,0.906,0.708]],[0.262,[0.752,0.903,0.709]],[0.264,[0.752,0.903,0.709]],[0.266,[0.743,0.899,0.71]],[0.268,[0.743,0.899,0.71]],[0.27,[0.734,0.896,0.71]],[0.272,[0.734,0.896,0.71]],[0.274,[0.725,0.892,0.711]],[0.276,[0.725,0.892,0.711]],[0.278,[0.716,0.889,0.712]],[0.28,[0.716,0.889,0.712]],[0.282,[0.707,0.885,0.713]],[0.284,[0.707,0.885,0.713]],[0.286,[0.698,0.882,0.714]],[0.288,[0.698,0.882,0.714]],[0.29,[0.69,0.878,0.715]],[0.292,[0.69,0.878,0.715]],[0.294,[0.681,0.875,0.716]],[0.295,[0.681,0.875,0.716]],[0.297,[0.672,0.872,0.716]],[0.299,[0.672,0.872,0.716]],[0.301,[0.663,0.868,0.717]],[0.303,[0.663,0.868,0.717]],[0.305,[0.654,0.865,0.718]],[0.307,[0.654,0.865,0.718]],[0.309,[0.645,0.861,0.719]],[0.311,[0.645,0.861,0.719]],[0.313,[0.636,0.858,0.72]],[0.315,[0.636,0.858,0.72]],[0.317,[0.628,0.854,0.721]],[0.319,[0.628,0.854,0.721]],[0.321,[0.619,0.851,0.722]],[0.323,[0.619,0.851,0.722]],[0.325,[0.61,0.847,0.722]],[0.327,[0.61,0.847,0.722]],[0.329,[0.601,0.844,0.723]],[0.331,[0.601,0.844,0.723]],[0.333,[0.592,0.841,0.724]],[0.335,[0.592,0.841,0.724]],[0.337,[0.583,0.837,0.725]],[0.339,[0.583,0.837,0.725]],[0.341,[0.574,0.834,0.726]],[0.342,[0.574,0.834,0.726]],[0.344,[0.566,0.83,0.727]],[0.346,[0.566,0.83,0.727]],[0.348,[0.557,0.827,0.728]],[0.35,[0.557,0.827,0.728]],[0.352,[0.548,0.823,0.728]],[0.354,[0.548,0.823,0.728]],[0.356,[0.539,0.82,0.729]],[0.358,[0.539,0.82,0.729]],[0.36,[0.53,0.816,0.73]],[0.362,[0.53,0.816,0.73]],[0.364,[0.521,0.813,0.731]],[0.366,[0.521,0.813,0.731]],[0.368,[0.512,0.81,0.732]],[0.37,[0.512,0.81,0.732]],[0.372,[0.504,0.806,0.733]],[0.374,[0.504,0.806,0.733]],[0.376,[0.495,0.803,0.734]],[0.378,[0.495,0.803,0.734]],[0.38,[0.488,0.8,0.735]],[0.382,[0.488,0.8,0.735]],[0.384,[0.48,0.797,0.736]],[0.386,[0.48,0.797,0.736]],[0.387,[0.472,0.794,0.737]],[0.389,[0.472,0.794,0.737]],[0.391,[0.465,0.792,0.738]],[0.393,[0.465,0.792,0.738]],[0.395,[0.457,0.789,0.739]],[0.397,[0.457,0.789,0.739]],[0.399,[0.449,0.786,0.74]],[0.401,[0.449,0.786,0.74]],[0.403,[0.442,0.783,0.741]],[0.405,[0.442,0.783,0.741]],[0.407,[0.434,0.78,0.743]],[0.409,[0.434,0.78,0.743]],[0.411,[0.427,0.777,0.744]],[0.413,[0.427,0.777,0.744]],[0.415,[0.419,0.775,0.745]],[0.417,[0.419,0.775,0.745]],[0.419,[0.411,0.772,0.746]],[0.421,[0.411,0.772,0.746]],[0.423,[0.404,0.769,0.747]],[0.425,[0.404,0.769,0.747]],[0.427,[0.396,0.766,0.748]],[0.429,[0.396,0.766,0.748]],[0.431,[0.388,0.763,0.749]],[0.432,[0.388,0.763,0.749]],[0.434,[0.381,0.76,0.75]],[0.436,[0.381,0.76,0.75]],[0.438,[0.373,0.758,0.751]],[0.44,[0.373,0.758,0.751]],[0.442,[0.366,0.755,0.753]],[0.444,[0.366,0.755,0.753]],[0.446,[0.358,0.752,0.754]],[0.448,[0.358,0.752,0.754]],[0.45,[0.35,0.749,0.755]],[0.452,[0.35,0.749,0.755]],[0.454,[0.343,0.746,0.756]],[0.456,[0.343,0.746,0.756]],[0.458,[0.335,0.743,0.757]],[0.46,[0.335,0.743,0.757]],[0.462,[0.327,0.741,0.758]],[0.464,[0.327,0.741,0.758]],[0.466,[0.32,0.738,0.759]],[0.468,[0.32,0.738,0.759]],[0.47,[0.312,0.735,0.76]],[0.472,[0.312,0.735,0.76]],[0.474,[0.304,0.732,0.761]],[0.476,[0.304,0.732,0.761]],[0.477,[0.297,0.729,0.763]],[0.479,[0.297,0.729,0.763]],[0.481,[0.289,0.726,0.764]],[0.483,[0.289,0.726,0.764]],[0.485,[0.282,0.724,0.765]],[0.487,[0.282,0.724,0.765]],[0.489,[0.274,0.721,0.766]],[0.491,[0.274,0.721,0.766]],[0.493,[0.266,0.718,0.767]],[0.495,[0.266,0.718,0.767]],[0.497,[0.259,0.715,0.768]],[0.499,[0.259,0.715,0.768]],[0.501,[0.253,0.711,0.768]],[0.503,[0.253,0.711,0.768]],[0.505,[0.248,0.707,0.768]],[0.507,[0.248,0.707,0.768]],[0.509,[0.244,0.702,0.767]],[0.511,[0.244,0.702,0.767]],[0.513,[0.239,0.698,0.767]],[0.515,[0.239,0.698,0.767]],[0.517,[0.235,0.693,0.766]],[0.519,[0.235,0.693,0.766]],[0.521,[0.231,0.689,0.766]],[0.523,[0.231,0.689,0.766]],[0.524,[0.226,0.684,0.765]],[0.526,[0.226,0.684,0.765]],[0.528,[0.222,0.68,0.765]],[0.53,[0.222,0.68,0.765]],[0.532,[0.217,0.675,0.764]],[0.534,[0.217,0.675,0.764]],[0.536,[0.213,0.67,0.764]],[0.538,[0.213,0.67,0.764]],[0.54,[0.208,0.666,0.763]],[0.542,[0.208,0.666,0.763]],[0.544,[0.204,0.661,0.763]],[0.546,[0.204,0.661,0.763]],[0.548,[0.2,0.657,0.762]],[0.55,[0.2,0.657,0.762]],[0.552,[0.195,0.652,0.762]],[0.554,[0.195,0.652,0.762]],[0.556,[0.191,0.648,0.761]],[0.558,[0.191,0.648,0.761]],[0.56,[0.186,0.643,0.761]],[0.562,[0.186,0.643,0.761]],[0.564,[0.182,0.639,0.761]],[0.566,[0.182,0.639,0.761]],[0.568,[0.177,0.634,0.76]],[0.569,[0.177,0.634,0.76]],[0.571,[0.173,0.63,0.76]],[0.573,[0.173,0.63,0.76]],[0.575,[0.169,0.625,0.759]],[0.577,[0.169,0.625,0.759]],[0.579,[0.164,0.62,0.759]],[0.581,[0.164,0.62,0.759]],[0.583,[0.16,0.616,0.758]],[0.585,[0.16,0.616,0.758]],[0.587,[0.155,0.611,0.758]],[0.589,[0.155,0.611,0.758]],[0.591,[0.151,0.607,0.757]],[0.593,[0.151,0.607,0.757]],[0.595,[0.146,0.602,0.757]],[0.597,[0.146,0.602,0.757]],[0.599,[0.142,0.598,0.756]],[0.601,[0.142,0.598,0.756]],[0.603,[0.138,0.593,0.756]],[0.605,[0.138,0.593,0.756]],[0.607,[0.133,0.589,0.755]],[0.609,[0.133,0.589,0.755]],[0.611,[0.129,0.584,0.755]],[0.613,[0.129,0.584,0.755]],[0.614,[0.124,0.579,0.754]],[0.616,[0.124,0.579,0.754]],[0.618,[0.12,0.575,0.754]],[0.62,[0.12,0.575,0.754]],[0.622,[0.115,0.57,0.753]],[0.624,[0.115,0.57,0.753]],[0.626,[0.114,0.565,0.751]],[0.628,[0.114,0.565,0.751]],[0.63,[0.115,0.558,0.748]],[0.632,[0.115,0.558,0.748]],[0.634,[0.115,0.552,0.745]],[0.636,[0.115,0.552,0.745]],[0.638,[0.116,0.546,0.742]],[0.64,[0.116,0.546,0.742]],[0.642,[0.117,0.54,0.739]],[0.644,[0.117,0.54,0.739]],[0.646,[0.117,0.533,0.736]],[0.648,[0.117,0.533,0.736]],[0.65,[0.118,0.527,0.733]],[0.652,[0.118,0.527,0.733]],[0.654,[0.118,0.521,0.73]],[0.656,[0.118,0.521,0.73]],[0.658,[0.119,0.515,0.727]],[0.659,[0.119,0.515,0.727]],[0.661,[0.12,0.508,0.725]],[0.663,[0.12,0.508,0.725]],[0.665,[0.12,0.502,0.722]],[0.667,[0.12,0.502,0.722]],[0.669,[0.121,0.496,0.719]],[0.671,[0.121,0.496,0.719]],[0.673,[0.121,0.489,0.716]],[0.675,[0.121,0.489,0.716]],[0.677,[0.122,0.483,0.713]],[0.679,[0.122,0.483,0.713]],[0.681,[0.123,0.477,0.71]],[0.683,[0.123,0.477,0.71]],[0.685,[0.123,0.471,0.707]],[0.687,[0.123,0.471,0.707]],[0.689,[0.124,0.464,0.704]],[0.691,[0.124,0.464,0.704]],[0.693,[0.125,0.458,0.701]],[0.695,[0.125,0.458,0.701]],[0.697,[0.125,0.452,0.698]],[0.699,[0.125,0.452,0.698]],[0.701,[0.126,0.445,0.695]],[0.703,[0.126,0.445,0.695]],[0.705,[0.126,0.439,0.692]],[0.706,[0.126,0.439,0.692]],[0.708,[0.127,0.433,0.689]],[0.71,[0.127,0.433,0.689]],[0.712,[0.128,0.427,0.686]],[0.714,[0.128,0.427,0.686]],[0.716,[0.128,0.42,0.683]],[0.718,[0.128,0.42,0.683]],[0.72,[0.129,0.414,0.68]],[0.722,[0.129,0.414,0.68]],[0.724,[0.129,0.408,0.677]],[0.726,[0.129,0.408,0.677]],[0.728,[0.13,0.402,0.674]],[0.73,[0.13,0.402,0.674]],[0.732,[0.131,0.395,0.671]],[0.734,[0.131,0.395,0.671]],[0.736,[0.131,0.389,0.668]],[0.738,[0.131,0.389,0.668]],[0.74,[0.132,0.383,0.665]],[0.742,[0.132,0.383,0.665]],[0.744,[0.133,0.376,0.663]],[0.746,[0.133,0.376,0.663]],[0.748,[0.133,0.37,0.66]],[0.75,[0.133,0.37,0.66]],[0.751,[0.134,0.365,0.657]],[0.753,[0.134,0.365,0.657]],[0.755,[0.134,0.36,0.655]],[0.757,[0.134,0.36,0.655]],[0.759,[0.134,0.354,0.652]],[0.761,[0.134,0.354,0.652]],[0.763,[0.135,0.349,0.65]],[0.765,[0.135,0.349,0.65]],[0.767,[0.135,0.344,0.647]],[0.769,[0.135,0.344,0.647]],[0.771,[0.135,0.339,0.645]],[0.773,[0.135,0.339,0.645]],[0.775,[0.136,0.334,0.642]],[0.777,[0.136,0.334,0.642]],[0.779,[0.136,0.329,0.64]],[0.781,[0.136,0.329,0.64]],[0.783,[0.137,0.323,0.637]],[0.785,[0.137,0.323,0.637]],[0.787,[0.137,0.318,0.635]],[0.789,[0.137,0.318,0.635]],[0.791,[0.137,0.313,0.632]],[0.793,[0.137,0.313,0.632]],[0.795,[0.138,0.308,0.63]],[0.796,[0.138,0.308,0.63]],[0.798,[0.138,0.303,0.627]],[0.8,[0.138,0.303,0.627]],[0.802,[0.138,0.298,0.625]],[0.804,[0.138,0.298,0.625]],[0.806,[0.139,0.292,0.623]],[0.808,[0.139,0.292,0.623]],[0.81,[0.139,0.287,0.62]],[0.812,[0.139,0.287,0.62]],[0.814,[0.14,0.282,0.618]],[0.816,[0.14,0.282,0.618]],[0.818,[0.14,0.277,0.615]],[0.82,[0.14,0.277,0.615]],[0.822,[0.14,0.272,0.613]],[0.824,[0.14,0.272,0.613]],[0.826,[0.141,0.267,0.61]],[0.828,[0.141,0.267,0.61]],[0.83,[0.141,0.261,0.608]],[0.832,[0.141,0.261,0.608]],[0.834,[0.141,0.256,0.605]],[0.836,[0.141,0.256,0.605]],[0.838,[0.142,0.251,0.603]],[0.84,[0.142,0.251,0.603]],[0.841,[0.142,0.246,0.6]],[0.843,[0.142,0.246,0.6]],[0.845,[0.142,0.241,0.598]],[0.847,[0.142,0.241,0.598]],[0.849,[0.143,0.236,0.595]],[0.851,[0.143,0.236,0.595]],[0.853,[0.143,0.23,0.593]],[0.855,[0.143,0.23,0.593]],[0.857,[0.144,0.225,0.591]],[0.859,[0.144,0.225,0.591]],[0.861,[0.144,0.22,0.588]],[0.863,[0.144,0.22,0.588]],[0.865,[0.144,0.215,0.586]],[0.867,[0.144,0.215,0.586]],[0.869,[0.145,0.21,0.583]],[0.871,[0.145,0.21,0.583]],[0.873,[0.145,0.205,0.581]],[0.875,[0.145,0.205,0.581]],[0.877,[0.142,0.201,0.574]],[0.879,[0.142,0.201,0.574]],[0.881,[0.138,0.199,0.567]],[0.883,[0.138,0.199,0.567]],[0.885,[0.135,0.196,0.559]],[0.886,[0.135,0.196,0.559]],[0.888,[0.131,0.193,0.552]],[0.89,[0.131,0.193,0.552]],[0.892,[0.128,0.19,0.544]],[0.894,[0.128,0.19,0.544]],[0.896,[0.124,0.187,0.537]],[0.898,[0.124,0.187,0.537]],[0.9,[0.121,0.184,0.53]],[0.902,[0.121,0.184,0.53]],[0.904,[0.117,0.182,0.522]],[0.906,[0.117,0.182,0.522]],[0.908,[0.113,0.179,0.515]],[0.91,[0.113,0.179,0.515]],[0.912,[0.11,0.176,0.507]],[0.914,[0.11,0.176,0.507]],[0.916,[0.106,0.173,0.5]],[0.918,[0.106,0.173,0.5]],[0.92,[0.103,0.17,0.493]],[0.922,[0.103,0.17,0.493]],[0.924,[0.099,0.167,0.485]],[0.926,[0.099,0.167,0.485]],[0.928,[0.096,0.165,0.478]],[0.93,[0.096,0.165,0.478]],[0.932,[0.092,0.162,0.471]],[0.933,[0.092,0.162,0.471]],[0.935,[0.088,0.159,0.463]],[0.937,[0.088,0.159,0.463]],[0.939,[0.085,0.156,0.456]],[0.941,[0.085,0.156,0.456]],[0.943,[0.081,0.153,0.448]],[0.945,[0.081,0.153,0.448]],[0.947,[0.078,0.151,0.441]],[0.949,[0.078,0.151,0.441]],[0.951,[0.074,0.148,0.434]],[0.953,[0.074,0.148,0.434]],[0.955,[0.071,0.145,0.426]],[0.957,[0.071,0.145,0.426]],[0.959,[0.067,0.142,0.419]],[0.961,[0.067,0.142,0.419]],[0.963,[0.063,0.139,0.412]],[0.965,[0.063,0.139,0.412]],[0.967,[0.06,0.136,0.404]],[0.969,[0.06,0.136,0.404]],[0.971,[0.056,0.134,0.397]],[0.973,[0.056,0.134,0.397]],[0.975,[0.053,0.131,0.389]],[0.977,[0.053,0.131,0.389]],[0.978,[0.049,0.128,0.382]],[0.98,[0.049,0.128,0.382]],[0.982,[0.046,0.125,0.375]],[0.984,[0.046,0.125,0.375]],[0.986,[0.042,0.122,0.367]],[0.988,[0.042,0.122,0.367]],[0.99,[0.039,0.119,0.36]],[0.992,[0.039,0.119,0.36]],[0.994,[0.035,0.117,0.352]],[0.996,[0.035,0.117,0.352]],[0.998,[0.031,0.114,0.345]],[1,[0.031,0.114,0.345]]],[[0,[0,0,1]],[0.002,[0,0,1]],[0.004,[0,0.004,0.998]],[0.006,[0,0.004,0.998]],[0.008,[0,0.008,0.996]],[0.01,[0,0.008,0.996]],[0.012,[0,0.012,0.994]],[0.014,[0,0.012,0.994]],[0.016,[0,0.016,0.992]],[0.018,[0,0.016,0.992]],[0.02,[0,0.02,0.99]],[0.022,[0,0.02,0.99]],[0.023,[0,0.024,0.988]],[0.025,[0,0.024,0.988]],[0.027,[0,0.027,0.986]],[0.029,[0,0.027,0.986]],[0.031,[0,0.031,0.984]],[0.033,[0,0.031,0.984]],[0.035,[0,0.035,0.982]],[0.037,[0,0.035,0.982]],[0.039,[0,0.039,0.98]],[0.041,[0,0.039,0.98]],[0.043,[0,0.043,0.978]],[0.045,[0,0.043,0.978]],[0.047,[0,0.047,0.976]],[0.049,[0,0.047,0.976]],[0.051,[0,0.051,0.975]],[0.053,[0,0.051,0.975]],[0.055,[0,0.055,0.973]],[0.057,[0,0.055,0.973]],[0.059,[0,0.059,0.971]],[0.061,[0,0.059,0.971]],[0.063,[0,0.063,0.969]],[0.065,[0,0.063,0.969]],[0.067,[0,0.067,0.967]],[0.068,[0,0.067,0.967]],[0.07,[0,0.071,0.965]],[0.072,[0,0.071,0.965]],[0.074,[0,0.075,0.963]],[0.076,[0,0.075,0.963]],[0.078,[0,0.078,0.961]],[0.08,[0,0.078,0.961]],[0.082,[0,0.082,0.959]],[0.084,[0,0.082,0.959]],[0.086,[0,0.086,0.957]],[0.088,[0,0.086,0.957]],[0.09,[0,0.09,0.955]],[0.092,[0,0.09,0.955]],[0.094,[0,0.094,0.953]],[0.096,[0,0.094,0.953]],[0.098,[0,0.098,0.951]],[0.1,[0,0.098,0.951]],[0.102,[0,0.102,0.949]],[0.104,[0,0.102,0.949]],[0.106,[0,0.106,0.947]],[0.108,[0,0.106,0.947]],[0.11,[0,0.11,0.945]],[0.112,[0,0.11,0.945]],[0.114,[0,0.114,0.943]],[0.115,[0,0.114,0.943]],[0.117,[0,0.118,0.941]],[0.119,[0,0.118,0.941]],[0.121,[0,0.122,0.939]],[0.123,[0,0.122,0.939]],[0.125,[0,0.125,0.937]],[0.127,[0,0.125,0.937]],[0.129,[0,0.129,0.935]],[0.131,[0,0.129,0.935]],[0.133,[0,0.133,0.933]],[0.135,[0,0.133,0.933]],[0.137,[0,0.137,0.931]],[0.139,[0,0.137,0.931]],[0.141,[0,0.141,0.929]],[0.143,[0,0.141,0.929]],[0.145,[0,0.145,0.927]],[0.147,[0,0.145,0.927]],[0.149,[0,0.149,0.925]],[0.151,[0,0.149,0.925]],[0.153,[0,0.153,0.924]],[0.155,[0,0.153,0.924]],[0.157,[0,0.157,0.922]],[0.159,[0,0.157,0.922]],[0.16,[0,0.161,0.92]],[0.162,[0,0.161,0.92]],[0.164,[0,0.165,0.918]],[0.166,[0,0.165,0.918]],[0.168,[0,0.169,0.916]],[0.17,[0,0.169,0.916]],[0.172,[0,0.173,0.914]],[0.174,[0,0.173,0.914]],[0.176,[0,0.176,0.912]],[0.178,[0,0.176,0.912]],[0.18,[0,0.18,0.91]],[0.182,[0,0.18,0.91]],[0.184,[0,0.184,0.908]],[0.186,[0,0.184,0.908]],[0.188,[0,0.188,0.906]],[0.19,[0,0.188,0.906]],[0.192,[0,0.192,0.904]],[0.194,[0,0.192,0.904]],[0.196,[0,0.196,0.902]],[0.198,[0,0.196,0.902]],[0.2,[0,0.2,0.9]],[0.202,[0,0.2,0.9]],[0.204,[0,0.204,0.898]],[0.205,[0,0.204,0.898]],[0.207,[0,0.208,0.896]],[0.209,[0,0.208,0.896]],[0.211,[0,0.212,0.894]],[0.213,[0,0.212,0.894]],[0.215,[0,0.216,0.892]],[0.217,[0,0.216,0.892]],[0.219,[0,0.22,0.89]],[0.221,[0,0.22,0.89]],[0.223,[0,0.224,0.888]],[0.225,[0,0.224,0.888]],[0.227,[0,0.227,0.886]],[0.229,[0,0.227,0.886]],[0.231,[0,0.231,0.884]],[0.233,[0,0.231,0.884]],[0.235,[0,0.235,0.882]],[0.237,[0,0.235,0.882]],[0.239,[0,0.239,0.88]],[0.241,[0,0.239,0.88]],[0.243,[0,0.243,0.878]],[0.245,[0,0.243,0.878]],[0.247,[0,0.247,0.876]],[0.249,[0,0.247,0.876]],[0.25,[0,0.251,0.875]],[0.252,[0,0.251,0.875]],[0.254,[0,0.255,0.873]],[0.256,[0,0.255,0.873]],[0.258,[0,0.259,0.871]],[0.26,[0,0.259,0.871]],[0.262,[0,0.263,0.869]],[0.264,[0,0.263,0.869]],[0.266,[0,0.267,0.867]],[0.268,[0,0.267,0.867]],[0.27,[0,0.271,0.865]],[0.272,[0,0.271,0.865]],[0.274,[0,0.275,0.863]],[0.276,[0,0.275,0.863]],[0.278,[0,0.278,0.861]],[0.28,[0,0.278,0.861]],[0.282,[0,0.282,0.859]],[0.284,[0,0.282,0.859]],[0.286,[0,0.286,0.857]],[0.288,[0,0.286,0.857]],[0.29,[0,0.29,0.855]],[0.292,[0,0.29,0.855]],[0.294,[0,0.294,0.853]],[0.295,[0,0.294,0.853]],[0.297,[0,0.298,0.851]],[0.299,[0,0.298,0.851]],[0.301,[0,0.302,0.849]],[0.303,[0,0.302,0.849]],[0.305,[0,0.306,0.847]],[0.307,[0,0.306,0.847]],[0.309,[0,0.31,0.845]],[0.311,[0,0.31,0.845]],[0.313,[0,0.314,0.843]],[0.315,[0,0.314,0.843]],[0.317,[0,0.318,0.841]],[0.319,[0,0.318,0.841]],[0.321,[0,0.322,0.839]],[0.323,[0,0.322,0.839]],[0.325,[0,0.325,0.837]],[0.327,[0,0.325,0.837]],[0.329,[0,0.329,0.835]],[0.331,[0,0.329,0.835]],[0.333,[0,0.333,0.833]],[0.335,[0,0.333,0.833]],[0.337,[0,0.337,0.831]],[0.339,[0,0.337,0.831]],[0.341,[0,0.341,0.829]],[0.342,[0,0.341,0.829]],[0.344,[0,0.345,0.827]],[0.346,[0,0.345,0.827]],[0.348,[0,0.349,0.825]],[0.35,[0,0.349,0.825]],[0.352,[0,0.353,0.824]],[0.354,[0,0.353,0.824]],[0.356,[0,0.357,0.822]],[0.358,[0,0.357,0.822]],[0.36,[0,0.361,0.82]],[0.362,[0,0.361,0.82]],[0.364,[0,0.365,0.818]],[0.366,[0,0.365,0.818]],[0.368,[0,0.369,0.816]],[0.37,[0,0.369,0.816]],[0.372,[0,0.373,0.814]],[0.374,[0,0.373,0.814]],[0.376,[0,0.376,0.812]],[0.378,[0,0.376,0.812]],[0.38,[0,0.38,0.81]],[0.382,[0,0.38,0.81]],[0.384,[0,0.384,0.808]],[0.386,[0,0.384,0.808]],[0.387,[0,0.388,0.806]],[0.389,[0,0.388,0.806]],[0.391,[0,0.392,0.804]],[0.393,[0,0.392,0.804]],[0.395,[0,0.396,0.802]],[0.397,[0,0.396,0.802]],[0.399,[0,0.4,0.8]],[0.401,[0,0.4,0.8]],[0.403,[0,0.404,0.798]],[0.405,[0,0.404,0.798]],[0.407,[0,0.408,0.796]],[0.409,[0,0.408,0.796]],[0.411,[0,0.412,0.794]],[0.413,[0,0.412,0.794]],[0.415,[0,0.416,0.792]],[0.417,[0,0.416,0.792]],[0.419,[0,0.42,0.79]],[0.421,[0,0.42,0.79]],[0.423,[0,0.424,0.788]],[0.425,[0,0.424,0.788]],[0.427,[0,0.427,0.786]],[0.429,[0,0.427,0.786]],[0.431,[0,0.431,0.784]],[0.432,[0,0.431,0.784]],[0.434,[0,0.435,0.782]],[0.436,[0,0.435,0.782]],[0.438,[0,0.439,0.78]],[0.44,[0,0.439,0.78]],[0.442,[0,0.443,0.778]],[0.444,[0,0.443,0.778]],[0.446,[0,0.447,0.776]],[0.448,[0,0.447,0.776]],[0.45,[0,0.451,0.775]],[0.452,[0,0.451,0.775]],[0.454,[0,0.455,0.773]],[0.456,[0,0.455,0.773]],[0.458,[0,0.459,0.771]],[0.46,[0,0.459,0.771]],[0.462,[0,0.463,0.769]],[0.464,[0,0.463,0.769]],[0.466,[0,0.467,0.767]],[0.468,[0,0.467,0.767]],[0.47,[0,0.471,0.765]],[0.472,[0,0.471,0.765]],[0.474,[0,0.475,0.763]],[0.476,[0,0.475,0.763]],[0.477,[0,0.478,0.761]],[0.479,[0,0.478,0.761]],[0.481,[0,0.482,0.759]],[0.483,[0,0.482,0.759]],[0.485,[0,0.486,0.757]],[0.487,[0,0.486,0.757]],[0.489,[0,0.49,0.755]],[0.491,[0,0.49,0.755]],[0.493,[0,0.494,0.753]],[0.495,[0,0.494,0.753]],[0.497,[0,0.498,0.751]],[0.499,[0,0.498,0.751]],[0.501,[0,0.502,0.749]],[0.503,[0,0.502,0.749]],[0.505,[0,0.506,0.747]],[0.507,[0,0.506,0.747]],[0.509,[0,0.51,0.745]],[0.511,[0,0.51,0.745]],[0.513,[0,0.514,0.743]],[0.515,[0,0.514,0.743]],[0.517,[0,0.518,0.741]],[0.519,[0,0.518,0.741]],[0.521,[0,0.522,0.739]],[0.523,[0,0.522,0.739]],[0.524,[0,0.525,0.737]],[0.526,[0,0.525,0.737]],[0.528,[0,0.529,0.735]],[0.53,[0,0.529,0.735]],[0.532,[0,0.533,0.733]],[0.534,[0,0.533,0.733]],[0.536,[0,0.537,0.731]],[0.538,[0,0.537,0.731]],[0.54,[0,0.541,0.729]],[0.542,[0,0.541,0.729]],[0.544,[0,0.545,0.727]],[0.546,[0,0.545,0.727]],[0.548,[0,0.549,0.725]],[0.55,[0,0.549,0.725]],[0.552,[0,0.553,0.724]],[0.554,[0,0.553,0.724]],[0.556,[0,0.557,0.722]],[0.558,[0,0.557,0.722]],[0.56,[0,0.561,0.72]],[0.562,[0,0.561,0.72]],[0.564,[0,0.565,0.718]],[0.566,[0,0.565,0.718]],[0.568,[0,0.569,0.716]],[0.569,[0,0.569,0.716]],[0.571,[0,0.573,0.714]],[0.573,[0,0.573,0.714]],[0.575,[0,0.576,0.712]],[0.577,[0,0.576,0.712]],[0.579,[0,0.58,0.71]],[0.581,[0,0.58,0.71]],[0.583,[0,0.584,0.708]],[0.585,[0,0.584,0.708]],[0.587,[0,0.588,0.706]],[0.589,[0,0.588,0.706]],[0.591,[0,0.592,0.704]],[0.593,[0,0.592,0.704]],[0.595,[0,0.596,0.702]],[0.597,[0,0.596,0.702]],[0.599,[0,0.6,0.7]],[0.601,[0,0.6,0.7]],[0.603,[0,0.604,0.698]],[0.605,[0,0.604,0.698]],[0.607,[0,0.608,0.696]],[0.609,[0,0.608,0.696]],[0.611,[0,0.612,0.694]],[0.613,[0,0.612,0.694]],[0.614,[0,0.616,0.692]],[0.616,[0,0.616,0.692]],[0.618,[0,0.62,0.69]],[0.62,[0,0.62,0.69]],[0.622,[0,0.624,0.688]],[0.624,[0,0.624,0.688]],[0.626,[0,0.627,0.686]],[0.628,[0,0.627,0.686]],[0.63,[0,0.631,0.684]],[0.632,[0,0.631,0.684]],[0.634,[0,0.635,0.682]],[0.636,[0,0.635,0.682]],[0.638,[0,0.639,0.68]],[0.64,[0,0.639,0.68]],[0.642,[0,0.643,0.678]],[0.644,[0,0.643,0.678]],[0.646,[0,0.647,0.676]],[0.648,[0,0.647,0.676]],[0.65,[0,0.651,0.675]],[0.652,[0,0.651,0.675]],[0.654,[0,0.655,0.673]],[0.656,[0,0.655,0.673]],[0.658,[0,0.659,0.671]],[0.659,[0,0.659,0.671]],[0.661,[0,0.663,0.669]],[0.663,[0,0.663,0.669]],[0.665,[0,0.667,0.667]],[0.667,[0,0.667,0.667]],[0.669,[0,0.671,0.665]],[0.671,[0,0.671,0.665]],[0.673,[0,0.675,0.663]],[0.675,[0,0.675,0.663]],[0.677,[0,0.678,0.661]],[0.679,[0,0.678,0.661]],[0.681,[0,0.682,0.659]],[0.683,[0,0.682,0.659]],[0.685,[0,0.686,0.657]],[0.687,[0,0.686,0.657]],[0.689,[0,0.69,0.655]],[0.691,[0,0.69,0.655]],[0.693,[0,0.694,0.653]],[0.695,[0,0.694,0.653]],[0.697,[0,0.698,0.651]],[0.699,[0,0.698,0.651]],[0.701,[0,0.702,0.649]],[0.703,[0,0.702,0.649]],[0.705,[0,0.706,0.647]],[0.706,[0,0.706,0.647]],[0.708,[0,0.71,0.645]],[0.71,[0,0.71,0.645]],[0.712,[0,0.714,0.643]],[0.714,[0,0.714,0.643]],[0.716,[0,0.718,0.641]],[0.718,[0,0.718,0.641]],[0.72,[0,0.722,0.639]],[0.722,[0,0.722,0.639]],[0.724,[0,0.725,0.637]],[0.726,[0,0.725,0.637]],[0.728,[0,0.729,0.635]],[0.73,[0,0.729,0.635]],[0.732,[0,0.733,0.633]],[0.734,[0,0.733,0.633]],[0.736,[0,0.737,0.631]],[0.738,[0,0.737,0.631]],[0.74,[0,0.741,0.629]],[0.742,[0,0.741,0.629]],[0.744,[0,0.745,0.627]],[0.746,[0,0.745,0.627]],[0.748,[0,0.749,0.625]],[0.75,[0,0.749,0.625]],[0.751,[0,0.753,0.624]],[0.753,[0,0.753,0.624]],[0.755,[0,0.757,0.622]],[0.757,[0,0.757,0.622]],[0.759,[0,0.761,0.62]],[0.761,[0,0.761,0.62]],[0.763,[0,0.765,0.618]],[0.765,[0,0.765,0.618]],[0.767,[0,0.769,0.616]],[0.769,[0,0.769,0.616]],[0.771,[0,0.773,0.614]],[0.773,[0,0.773,0.614]],[0.775,[0,0.776,0.612]],[0.777,[0,0.776,0.612]],[0.779,[0,0.78,0.61]],[0.781,[0,0.78,0.61]],[0.783,[0,0.784,0.608]],[0.785,[0,0.784,0.608]],[0.787,[0,0.788,0.606]],[0.789,[0,0.788,0.606]],[0.791,[0,0.792,0.604]],[0.793,[0,0.792,0.604]],[0.795,[0,0.796,0.602]],[0.796,[0,0.796,0.602]],[0.798,[0,0.8,0.6]],[0.8,[0,0.8,0.6]],[0.802,[0,0.804,0.598]],[0.804,[0,0.804,0.598]],[0.806,[0,0.808,0.596]],[0.808,[0,0.808,0.596]],[0.81,[0,0.812,0.594]],[0.812,[0,0.812,0.594]],[0.814,[0,0.816,0.592]],[0.816,[0,0.816,0.592]],[0.818,[0,0.82,0.59]],[0.82,[0,0.82,0.59]],[0.822,[0,0.824,0.588]],[0.824,[0,0.824,0.588]],[0.826,[0,0.827,0.586]],[0.828,[0,0.827,0.586]],[0.83,[0,0.831,0.584]],[0.832,[0,0.831,0.584]],[0.834,[0,0.835,0.582]],[0.836,[0,0.835,0.582]],[0.838,[0,0.839,0.58]],[0.84,[0,0.839,0.58]],[0.841,[0,0.843,0.578]],[0.843,[0,0.843,0.578]],[0.845,[0,0.847,0.576]],[0.847,[0,0.847,0.576]],[0.849,[0,0.851,0.575]],[0.851,[0,0.851,0.575]],[0.853,[0,0.855,0.573]],[0.855,[0,0.855,0.573]],[0.857,[0,0.859,0.571]],[0.859,[0,0.859,0.571]],[0.861,[0,0.863,0.569]],[0.863,[0,0.863,0.569]],[0.865,[0,0.867,0.567]],[0.867,[0,0.867,0.567]],[0.869,[0,0.871,0.565]],[0.871,[0,0.871,0.565]],[0.873,[0,0.875,0.563]],[0.875,[0,0.875,0.563]],[0.877,[0,0.878,0.561]],[0.879,[0,0.878,0.561]],[0.881,[0,0.882,0.559]],[0.883,[0,0.882,0.559]],[0.885,[0,0.886,0.557]],[0.886,[0,0.886,0.557]],[0.888,[0,0.89,0.555]],[0.89,[0,0.89,0.555]],[0.892,[0,0.894,0.553]],[0.894,[0,0.894,0.553]],[0.896,[0,0.898,0.551]],[0.898,[0,0.898,0.551]],[0.9,[0,0.902,0.549]],[0.902,[0,0.902,0.549]],[0.904,[0,0.906,0.547]],[0.906,[0,0.906,0.547]],[0.908,[0,0.91,0.545]],[0.91,[0,0.91,0.545]],[0.912,[0,0.914,0.543]],[0.914,[0,0.914,0.543]],[0.916,[0,0.918,0.541]],[0.918,[0,0.918,0.541]],[0.92,[0,0.922,0.539]],[0.922,[0,0.922,0.539]],[0.924,[0,0.925,0.537]],[0.926,[0,0.925,0.537]],[0.928,[0,0.929,0.535]],[0.93,[0,0.929,0.535]],[0.932,[0,0.933,0.533]],[0.933,[0,0.933,0.533]],[0.935,[0,0.937,0.531]],[0.937,[0,0.937,0.531]],[0.939,[0,0.941,0.529]],[0.941,[0,0.941,0.529]],[0.943,[0,0.945,0.527]],[0.945,[0,0.945,0.527]],[0.947,[0,0.949,0.525]],[0.949,[0,0.949,0.525]],[0.951,[0,0.953,0.524]],[0.953,[0,0.953,0.524]],[0.955,[0,0.957,0.522]],[0.957,[0,0.957,0.522]],[0.959,[0,0.961,0.52]],[0.961,[0,0.961,0.52]],[0.963,[0,0.965,0.518]],[0.965,[0,0.965,0.518]],[0.967,[0,0.969,0.516]],[0.969,[0,0.969,0.516]],[0.971,[0,0.973,0.514]],[0.973,[0,0.973,0.514]],[0.975,[0,0.976,0.512]],[0.977,[0,0.976,0.512]],[0.978,[0,0.98,0.51]],[0.98,[0,0.98,0.51]],[0.982,[0,0.984,0.508]],[0.984,[0,0.984,0.508]],[0.986,[0,0.988,0.506]],[0.988,[0,0.988,0.506]],[0.99,[0,0.992,0.504]],[0.992,[0,0.992,0.504]],[0.994,[0,0.996,0.502]],[0.996,[0,0.996,0.502]],[0.998,[0,1,0.5]],[1,[0,1,0.5]]],[[0,[0,0,0.5]],[0.002,[0,0,0.5]],[0.004,[0,0,0.518]],[0.006,[0,0,0.518]],[0.008,[0,0,0.536]],[0.01,[0,0,0.536]],[0.012,[0,0,0.553]],[0.014,[0,0,0.553]],[0.016,[0,0,0.571]],[0.018,[0,0,0.571]],[0.02,[0,0,0.589]],[0.022,[0,0,0.589]],[0.023,[0,0,0.607]],[0.025,[0,0,0.607]],[0.027,[0,0,0.625]],[0.029,[0,0,0.625]],[0.031,[0,0,0.643]],[0.033,[0,0,0.643]],[0.035,[0,0,0.66]],[0.037,[0,0,0.66]],[0.039,[0,0,0.678]],[0.041,[0,0,0.678]],[0.043,[0,0,0.696]],[0.045,[0,0,0.696]],[0.047,[0,0,0.714]],[0.049,[0,0,0.714]],[0.051,[0,0,0.732]],[0.053,[0,0,0.732]],[0.055,[0,0,0.75]],[0.057,[0,0,0.75]],[0.059,[0,0,0.767]],[0.061,[0,0,0.767]],[0.063,[0,0,0.785]],[0.065,[0,0,0.785]],[0.067,[0,0,0.803]],[0.068,[0,0,0.803]],[0.07,[0,0,0.821]],[0.072,[0,0,0.821]],[0.074,[0,0,0.839]],[0.076,[0,0,0.839]],[0.078,[0,0,0.857]],[0.08,[0,0,0.857]],[0.082,[0,0,0.874]],[0.084,[0,0,0.874]],[0.086,[0,0,0.892]],[0.088,[0,0,0.892]],[0.09,[0,0,0.91]],[0.092,[0,0,0.91]],[0.094,[0,0,0.928]],[0.096,[0,0,0.928]],[0.098,[0,0,0.946]],[0.1,[0,0,0.946]],[0.102,[0,0,0.963]],[0.104,[0,0,0.963]],[0.106,[0,0,0.981]],[0.108,[0,0,0.981]],[0.11,[0,0,0.999]],[0.112,[0,0,0.999]],[0.114,[0,0,1]],[0.115,[0,0,1]],[0.117,[0,0,1]],[0.119,[0,0,1]],[0.121,[0,0,1]],[0.123,[0,0,1]],[0.125,[0,0.002,1]],[0.127,[0,0.002,1]],[0.129,[0,0.018,1]],[0.131,[0,0.018,1]],[0.133,[0,0.033,1]],[0.135,[0,0.033,1]],[0.137,[0,0.049,1]],[0.139,[0,0.049,1]],[0.141,[0,0.065,1]],[0.143,[0,0.065,1]],[0.145,[0,0.08,1]],[0.147,[0,0.08,1]],[0.149,[0,0.096,1]],[0.151,[0,0.096,1]],[0.153,[0,0.112,1]],[0.155,[0,0.112,1]],[0.157,[0,0.127,1]],[0.159,[0,0.127,1]],[0.16,[0,0.143,1]],[0.162,[0,0.143,1]],[0.164,[0,0.159,1]],[0.166,[0,0.159,1]],[0.168,[0,0.175,1]],[0.17,[0,0.175,1]],[0.172,[0,0.19,1]],[0.174,[0,0.19,1]],[0.176,[0,0.206,1]],[0.178,[0,0.206,1]],[0.18,[0,0.222,1]],[0.182,[0,0.222,1]],[0.184,[0,0.237,1]],[0.186,[0,0.237,1]],[0.188,[0,0.253,1]],[0.19,[0,0.253,1]],[0.192,[0,0.269,1]],[0.194,[0,0.269,1]],[0.196,[0,0.284,1]],[0.198,[0,0.284,1]],[0.2,[0,0.3,1]],[0.202,[0,0.3,1]],[0.204,[0,0.316,1]],[0.205,[0,0.316,1]],[0.207,[0,0.331,1]],[0.209,[0,0.331,1]],[0.211,[0,0.347,1]],[0.213,[0,0.347,1]],[0.215,[0,0.363,1]],[0.217,[0,0.363,1]],[0.219,[0,0.378,1]],[0.221,[0,0.378,1]],[0.223,[0,0.394,1]],[0.225,[0,0.394,1]],[0.227,[0,0.41,1]],[0.229,[0,0.41,1]],[0.231,[0,0.425,1]],[0.233,[0,0.425,1]],[0.235,[0,0.441,1]],[0.237,[0,0.441,1]],[0.239,[0,0.457,1]],[0.241,[0,0.457,1]],[0.243,[0,0.473,1]],[0.245,[0,0.473,1]],[0.247,[0,0.488,1]],[0.249,[0,0.488,1]],[0.25,[0,0.504,1]],[0.252,[0,0.504,1]],[0.254,[0,0.52,1]],[0.256,[0,0.52,1]],[0.258,[0,0.535,1]],[0.26,[0,0.535,1]],[0.262,[0,0.551,1]],[0.264,[0,0.551,1]],[0.266,[0,0.567,1]],[0.268,[0,0.567,1]],[0.27,[0,0.582,1]],[0.272,[0,0.582,1]],[0.274,[0,0.598,1]],[0.276,[0,0.598,1]],[0.278,[0,0.614,1]],[0.28,[0,0.614,1]],[0.282,[0,0.629,1]],[0.284,[0,0.629,1]],[0.286,[0,0.645,1]],[0.288,[0,0.645,1]],[0.29,[0,0.661,1]],[0.292,[0,0.661,1]],[0.294,[0,0.676,1]],[0.295,[0,0.676,1]],[0.297,[0,0.692,1]],[0.299,[0,0.692,1]],[0.301,[0,0.708,1]],[0.303,[0,0.708,1]],[0.305,[0,0.724,1]],[0.307,[0,0.724,1]],[0.309,[0,0.739,1]],[0.311,[0,0.739,1]],[0.313,[0,0.755,1]],[0.315,[0,0.755,1]],[0.317,[0,0.771,1]],[0.319,[0,0.771,1]],[0.321,[0,0.786,1]],[0.323,[0,0.786,1]],[0.325,[0,0.802,1]],[0.327,[0,0.802,1]],[0.329,[0,0.818,1]],[0.331,[0,0.818,1]],[0.333,[0,0.833,1]],[0.335,[0,0.833,1]],[0.337,[0,0.849,1]],[0.339,[0,0.849,1]],[0.341,[0,0.865,0.996]],[0.342,[0,0.865,0.996]],[0.344,[0,0.88,0.984]],[0.346,[0,0.88,0.984]],[0.348,[0,0.896,0.971]],[0.35,[0,0.896,0.971]],[0.352,[0.009,0.912,0.958]],[0.354,[0.009,0.912,0.958]],[0.356,[0.022,0.927,0.946]],[0.358,[0.022,0.927,0.946]],[0.36,[0.035,0.943,0.933]],[0.362,[0.035,0.943,0.933]],[0.364,[0.047,0.959,0.92]],[0.366,[0.047,0.959,0.92]],[0.368,[0.06,0.975,0.908]],[0.37,[0.06,0.975,0.908]],[0.372,[0.073,0.99,0.895]],[0.374,[0.073,0.99,0.895]],[0.376,[0.085,1,0.882]],[0.378,[0.085,1,0.882]],[0.38,[0.098,1,0.87]],[0.382,[0.098,1,0.87]],[0.384,[0.111,1,0.857]],[0.386,[0.111,1,0.857]],[0.387,[0.123,1,0.844]],[0.389,[0.123,1,0.844]],[0.391,[0.136,1,0.832]],[0.393,[0.136,1,0.832]],[0.395,[0.149,1,0.819]],[0.397,[0.149,1,0.819]],[0.399,[0.161,1,0.806]],[0.401,[0.161,1,0.806]],[0.403,[0.174,1,0.794]],[0.405,[0.174,1,0.794]],[0.407,[0.187,1,0.781]],[0.409,[0.187,1,0.781]],[0.411,[0.199,1,0.769]],[0.413,[0.199,1,0.769]],[0.415,[0.212,1,0.756]],[0.417,[0.212,1,0.756]],[0.419,[0.225,1,0.743]],[0.421,[0.225,1,0.743]],[0.423,[0.237,1,0.731]],[0.425,[0.237,1,0.731]],[0.427,[0.25,1,0.718]],[0.429,[0.25,1,0.718]],[0.431,[0.262,1,0.705]],[0.432,[0.262,1,0.705]],[0.434,[0.275,1,0.693]],[0.436,[0.275,1,0.693]],[0.438,[0.288,1,0.68]],[0.44,[0.288,1,0.68]],[0.442,[0.3,1,0.667]],[0.444,[0.3,1,0.667]],[0.446,[0.313,1,0.655]],[0.448,[0.313,1,0.655]],[0.45,[0.326,1,0.642]],[0.452,[0.326,1,0.642]],[0.454,[0.338,1,0.629]],[0.456,[0.338,1,0.629]],[0.458,[0.351,1,0.617]],[0.46,[0.351,1,0.617]],[0.462,[0.364,1,0.604]],[0.464,[0.364,1,0.604]],[0.466,[0.376,1,0.591]],[0.468,[0.376,1,0.591]],[0.47,[0.389,1,0.579]],[0.472,[0.389,1,0.579]],[0.474,[0.402,1,0.566]],[0.476,[0.402,1,0.566]],[0.477,[0.414,1,0.553]],[0.479,[0.414,1,0.553]],[0.481,[0.427,1,0.541]],[0.483,[0.427,1,0.541]],[0.485,[0.44,1,0.528]],[0.487,[0.44,1,0.528]],[0.489,[0.452,1,0.515]],[0.491,[0.452,1,0.515]],[0.493,[0.465,1,0.503]],[0.495,[0.465,1,0.503]],[0.497,[0.478,1,0.49]],[0.499,[0.478,1,0.49]],[0.501,[0.49,1,0.478]],[0.503,[0.49,1,0.478]],[0.505,[0.503,1,0.465]],[0.507,[0.503,1,0.465]],[0.509,[0.515,1,0.452]],[0.511,[0.515,1,0.452]],[0.513,[0.528,1,0.44]],[0.515,[0.528,1,0.44]],[0.517,[0.541,1,0.427]],[0.519,[0.541,1,0.427]],[0.521,[0.553,1,0.414]],[0.523,[0.553,1,0.414]],[0.524,[0.566,1,0.402]],[0.526,[0.566,1,0.402]],[0.528,[0.579,1,0.389]],[0.53,[0.579,1,0.389]],[0.532,[0.591,1,0.376]],[0.534,[0.591,1,0.376]],[0.536,[0.604,1,0.364]],[0.538,[0.604,1,0.364]],[0.54,[0.617,1,0.351]],[0.542,[0.617,1,0.351]],[0.544,[0.629,1,0.338]],[0.546,[0.629,1,0.338]],[0.548,[0.642,1,0.326]],[0.55,[0.642,1,0.326]],[0.552,[0.655,1,0.313]],[0.554,[0.655,1,0.313]],[0.556,[0.667,1,0.3]],[0.558,[0.667,1,0.3]],[0.56,[0.68,1,0.288]],[0.562,[0.68,1,0.288]],[0.564,[0.693,1,0.275]],[0.566,[0.693,1,0.275]],[0.568,[0.705,1,0.262]],[0.569,[0.705,1,0.262]],[0.571,[0.718,1,0.25]],[0.573,[0.718,1,0.25]],[0.575,[0.731,1,0.237]],[0.577,[0.731,1,0.237]],[0.579,[0.743,1,0.225]],[0.581,[0.743,1,0.225]],[0.583,[0.756,1,0.212]],[0.585,[0.756,1,0.212]],[0.587,[0.769,1,0.199]],[0.589,[0.769,1,0.199]],[0.591,[0.781,1,0.187]],[0.593,[0.781,1,0.187]],[0.595,[0.794,1,0.174]],[0.597,[0.794,1,0.174]],[0.599,[0.806,1,0.161]],[0.601,[0.806,1,0.161]],[0.603,[0.819,1,0.149]],[0.605,[0.819,1,0.149]],[0.607,[0.832,1,0.136]],[0.609,[0.832,1,0.136]],[0.611,[0.844,1,0.123]],[0.613,[0.844,1,0.123]],[0.614,[0.857,1,0.111]],[0.616,[0.857,1,0.111]],[0.618,[0.87,1,0.098]],[0.62,[0.87,1,0.098]],[0.622,[0.882,1,0.085]],[0.624,[0.882,1,0.085]],[0.626,[0.895,1,0.073]],[0.628,[0.895,1,0.073]],[0.63,[0.908,1,0.06]],[0.632,[0.908,1,0.06]],[0.634,[0.92,1,0.047]],[0.636,[0.92,1,0.047]],[0.638,[0.933,1,0.035]],[0.64,[0.933,1,0.035]],[0.642,[0.946,0.988,0.022]],[0.644,[0.946,0.988,0.022]],[0.646,[0.958,0.974,0.009]],[0.648,[0.958,0.974,0.009]],[0.65,[0.971,0.959,0]],[0.652,[0.971,0.959,0]],[0.654,[0.984,0.945,0]],[0.656,[0.984,0.945,0]],[0.658,[0.996,0.93,0]],[0.659,[0.996,0.93,0]],[0.661,[1,0.916,0]],[0.663,[1,0.916,0]],[0.665,[1,0.901,0]],[0.667,[1,0.901,0]],[0.669,[1,0.887,0]],[0.671,[1,0.887,0]],[0.673,[1,0.872,0]],[0.675,[1,0.872,0]],[0.677,[1,0.858,0]],[0.679,[1,0.858,0]],[0.681,[1,0.843,0]],[0.683,[1,0.843,0]],[0.685,[1,0.829,0]],[0.687,[1,0.829,0]],[0.689,[1,0.814,0]],[0.691,[1,0.814,0]],[0.693,[1,0.8,0]],[0.695,[1,0.8,0]],[0.697,[1,0.785,0]],[0.699,[1,0.785,0]],[0.701,[1,0.771,0]],[0.703,[1,0.771,0]],[0.705,[1,0.756,0]],[0.706,[1,0.756,0]],[0.708,[1,0.741,0]],[0.71,[1,0.741,0]],[0.712,[1,0.727,0]],[0.714,[1,0.727,0]],[0.716,[1,0.712,0]],[0.718,[1,0.712,0]],[0.72,[1,0.698,0]],[0.722,[1,0.698,0]],[0.724,[1,0.683,0]],[0.726,[1,0.683,0]],[0.728,[1,0.669,0]],[0.73,[1,0.669,0]],[0.732,[1,0.654,0]],[0.734,[1,0.654,0]],[0.736,[1,0.64,0]],[0.738,[1,0.64,0]],[0.74,[1,0.625,0]],[0.742,[1,0.625,0]],[0.744,[1,0.611,0]],[0.746,[1,0.611,0]],[0.748,[1,0.596,0]],[0.75,[1,0.596,0]],[0.751,[1,0.582,0]],[0.753,[1,0.582,0]],[0.755,[1,0.567,0]],[0.757,[1,0.567,0]],[0.759,[1,0.553,0]],[0.761,[1,0.553,0]],[0.763,[1,0.538,0]],[0.765,[1,0.538,0]],[0.767,[1,0.524,0]],[0.769,[1,0.524,0]],[0.771,[1,0.509,0]],[0.773,[1,0.509,0]],[0.775,[1,0.495,0]],[0.777,[1,0.495,0]],[0.779,[1,0.48,0]],[0.781,[1,0.48,0]],[0.783,[1,0.466,0]],[0.785,[1,0.466,0]],[0.787,[1,0.451,0]],[0.789,[1,0.451,0]],[0.791,[1,0.436,0]],[0.793,[1,0.436,0]],[0.795,[1,0.422,0]],[0.796,[1,0.422,0]],[0.798,[1,0.407,0]],[0.8,[1,0.407,0]],[0.802,[1,0.393,0]],[0.804,[1,0.393,0]],[0.806,[1,0.378,0]],[0.808,[1,0.378,0]],[0.81,[1,0.364,0]],[0.812,[1,0.364,0]],[0.814,[1,0.349,0]],[0.816,[1,0.349,0]],[0.818,[1,0.335,0]],[0.82,[1,0.335,0]],[0.822,[1,0.32,0]],[0.824,[1,0.32,0]],[0.826,[1,0.306,0]],[0.828,[1,0.306,0]],[0.83,[1,0.291,0]],[0.832,[1,0.291,0]],[0.834,[1,0.277,0]],[0.836,[1,0.277,0]],[0.838,[1,0.262,0]],[0.84,[1,0.262,0]],[0.841,[1,0.248,0]],[0.843,[1,0.248,0]],[0.845,[1,0.233,0]],[0.847,[1,0.233,0]],[0.849,[1,0.219,0]],[0.851,[1,0.219,0]],[0.853,[1,0.204,0]],[0.855,[1,0.204,0]],[0.857,[1,0.19,0]],[0.859,[1,0.19,0]],[0.861,[1,0.175,0]],[0.863,[1,0.175,0]],[0.865,[1,0.16,0]],[0.867,[1,0.16,0]],[0.869,[1,0.146,0]],[0.871,[1,0.146,0]],[0.873,[1,0.131,0]],[0.875,[1,0.131,0]],[0.877,[1,0.117,0]],[0.879,[1,0.117,0]],[0.881,[1,0.102,0]],[0.883,[1,0.102,0]],[0.885,[1,0.088,0]],[0.886,[1,0.088,0]],[0.888,[0.999,0.073,0]],[0.89,[0.999,0.073,0]],[0.892,[0.981,0.059,0]],[0.894,[0.981,0.059,0]],[0.896,[0.963,0.044,0]],[0.898,[0.963,0.044,0]],[0.9,[0.946,0.03,0]],[0.902,[0.946,0.03,0]],[0.904,[0.928,0.015,0]],[0.906,[0.928,0.015,0]],[0.908,[0.91,0.001,0]],[0.91,[0.91,0.001,0]],[0.912,[0.892,0,0]],[0.914,[0.892,0,0]],[0.916,[0.874,0,0]],[0.918,[0.874,0,0]],[0.92,[0.857,0,0]],[0.922,[0.857,0,0]],[0.924,[0.839,0,0]],[0.926,[0.839,0,0]],[0.928,[0.821,0,0]],[0.93,[0.821,0,0]],[0.932,[0.803,0,0]],[0.933,[0.803,0,0]],[0.935,[0.785,0,0]],[0.937,[0.785,0,0]],[0.939,[0.767,0,0]],[0.941,[0.767,0,0]],[0.943,[0.75,0,0]],[0.945,[0.75,0,0]],[0.947,[0.732,0,0]],[0.949,[0.732,0,0]],[0.951,[0.714,0,0]],[0.953,[0.714,0,0]],[0.955,[0.696,0,0]],[0.957,[0.696,0,0]],[0.959,[0.678,0,0]],[0.961,[0.678,0,0]],[0.963,[0.66,0,0]],[0.965,[0.66,0,0]],[0.967,[0.643,0,0]],[0.969,[0.643,0,0]],[0.971,[0.625,0,0]],[0.973,[0.625,0,0]],[0.975,[0.607,0,0]],[0.977,[0.607,0,0]],[0.978,[0.589,0,0]],[0.98,[0.589,0,0]],[0.982,[0.571,0,0]],[0.984,[0.571,0,0]],[0.986,[0.553,0,0]],[0.988,[0.553,0,0]],[0.99,[0.536,0,0]],[0.992,[0.536,0,0]],[0.994,[0.518,0,0]],[0.996,[0.518,0,0]],[0.998,[0.5,0,0]],[1,[0.5,0,0]]]],"maxStress":505.8612091201023,"minStress":-1466.6131768776693},"edges":[{"source":4,"area":1,"density":0.284,"id":"e0","stiffness":30000000,"target":5,"stress":0.0},{"source":5,"area":1,"density":0.284,"id":"e1","stiffness":30000000,"target":6,"stress":0.0},{"source":6,"area":1,"density":0.284,"id":"e2","stiffness":30000000,"target":7,"stress":0.0},{"source":7,"area":1,"density":0.284,"id":"e3","stiffness":30000000,"target":8,"stress":0.0},{"source":8,"area":1,"density":0.284,"id":"e4","stiffness":30000000,"target":9,"stress":0.0},{"source":9,"area":1,"density":0.284,"id":"e5","stiffness":30000000,"target":10,"stress":0.0},{"source":10,"area":1,"density":0.284,"id":"e6","stiffness":30000000,"target":11,"stress":0.0},{"source":11,"area":1,"density":0.284,"id":"e7","stiffness":30000000,"target":4,"stress":0.0},{"source":0,"area":1,"density":0.284,"id":"e8","stiffness":30000000,"target":5,"stress":0.0},{"source":1,"area":1,"density":0.284,"id":"e9","stiffness":30000000,"target":7,"stress":0.0},{"source":2,"area":1,"density":0.284,"id":"e10","stiffness":30000000,"target":9,"stress":0.0},{"source":3,"area":1,"density":0.284,"id":"e11","stiffness":30000000,"target":11,"stress":0.0},{"source":15,"area":1,"density":0.284,"id":"e12","stiffness":30000000,"target":16,"stress":-1001.3561240512223},{"source":16,"area":1,"density":0.284,"id":"e13","stiffness":30000000,"target":17,"stress":136.64322962456967},{"source":17,"area":1,"density":0.284,"id":"e14","stiffness":30000000,"target":18,"stress":133.79889178188935},{"source":18,"area":1,"density":0.284,"id":"e15","stiffness":30000000,"target":19,"stress":-939.595427137831},{"source":19,"area":1,"density":0.284,"id":"e16","stiffness":30000000,"target":20,"stress":-936.5155938159199},{"source":20,"area":1,"density":0.284,"id":"e17","stiffness":30000000,"target":21,"stress":200.92276533447648},{"source":21,"area":1,"density":0.284,"id":"e18","stiffness":30000000,"target":22,"stress":73.46611338336315},{"source":22,"area":1,"density":0.284,"id":"e19","stiffness":30000000,"target":15,"stress":-998.0870856308499},{"source":14,"area":1,"density":0.284,"id":"e20","stiffness":30000000,"target":16,"stress":-263.4249887588032},{"source":12,"area":1,"density":0.284,"id":"e21","stiffness":30000000,"target":18,"stress":-1304.5367460427258},{"source":13,"area":1,"density":0.284,"id":"e22","stiffness":30000000,"target":20,"stress":-53.55907480512245},{"source":0,"area":1,"density":0.284,"id":"e23","stiffness":30000000,"target":22,"stress":-1466.6131768776693},{"source":26,"area":1,"density":0.284,"id":"e24","stiffness":30000000,"target":27,"stress":-2.8090951037559413},{"source":27,"area":1,"density":0.284,"id":"e25","stiffness":30000000,"target":28,"stress":74.30094785327282},{"source":28,"area":1,"density":0.284,"id":"e26","stiffness":30000000,"target":29,"stress":51.593217618545765},{"source":29,"area":1,"density":0.284,"id":"e27","stiffness":30000000,"target":30,"stress":-8.401272930024463},{"source":30,"area":1,"density":0.284,"id":"e28","stiffness":30000000,"target":31,"stress":14.17161974887154},{"source":31,"area":1,"density":0.284,"id":"e29","stiffness":30000000,"target":32,"stress":23.749276381444673},{"source":32,"area":1,"density":0.284,"id":"e30","stiffness":30000000,"target":33,"stress":16.138532307484034},{"source":33,"area":1,"density":0.284,"id":"e31","stiffness":30000000,"target":26,"stress":-18.70454752360655},{"source":23,"area":1,"density":0.284,"id":"e32","stiffness":30000000,"target":31,"stress":14.448422900828675},{"source":24,"area":1,"density":0.284,"id":"e33","stiffness":30000000,"target":33,"stress":-33.30073219298949},{"source":12,"area":1,"density":0.284,"id":"e34","stiffness":30000000,"target":27,"stress":79.80682307863978},{"source":25,"area":1,"density":0.284,"id":"e35","stiffness":30000000,"target":29,"stress":-59.41996793156431},{"source":36,"area":1,"density":0.284,"id":"e36","stiffness":30000000,"target":37,"stress":-508.1291251295248},{"source":37,"area":1,"density":0.284,"id":"e37","stiffness":30000000,"target":38,"stress":-466.51942825070466},{"source":38,"area":1,"density":0.284,"id":"e38","stiffness":30000000,"target":39,"stress":499.35719791611507},{"source":39,"area":1,"density":0.284,"id":"e39","stiffness":30000000,"target":40,"stress":-537.4161132071984},{"source":40,"area":1,"density":0.284,"id":"e40","stiffness":30000000,"target":41,"stress":-443.8324680007325},{"source":41,"area":1,"density":0.284,"id":"e41","stiffness":30000000,"target":42,"stress":-373.30331388664126},{"source":42,"area":1,"density":0.284,"id":"e42","stiffness":30000000,"target":43,"stress":462.1136421635565},{"source":43,"area":1,"density":0.284,"id":"e43","stiffness":30000000,"target":36,"stress":-530.1201000992029},{"source":35,"area":1,"density":0.284,"id":"e44","stiffness":30000000,"target":41,"stress":211.11230217314022},{"source":2,"area":1,"density":0.284,"id":"e45","stiffness":30000000,"target":43,"stress":-829.5258184160555},{"source":34,"area":1,"density":0.284,"id":"e46","stiffness":30000000,"target":37,"stress":219.20104002231528},{"source":23,"area":1,"density":0.284,"id":"e47","stiffness":30000000,"target":39,"stress":-866.1071131586893},{"source":44,"area":1,"density":0.284,"id":"e48","stiffness":30000000,"target":45,"stress":208.85492074499956},{"source":45,"area":1,"density":0.284,"id":"e49","stiffness":30000000,"target":46,"stress":-721.6941174263237},{"source":46,"area":1,"density":0.284,"id":"e50","stiffness":30000000,"target":47,"stress":-708.228892681511},{"source":47,"area":1,"density":0.284,"id":"e51","stiffness":30000000,"target":48,"stress":-139.37770983452117},{"source":48,"area":1,"density":0.284,"id":"e52","stiffness":30000000,"target":49,"stress":203.80618758989058},{"source":49,"area":1,"density":0.284,"id":"e53","stiffness":30000000,"target":50,"stress":-584.128213890682},{"source":50,"area":1,"density":0.284,"id":"e54","stiffness":30000000,"target":51,"stress":-537.9021365038722},{"source":51,"area":1,"density":0.284,"id":"e55","stiffness":30000000,"target":44,"stress":-97.25555542395604},{"source":24,"area":1,"density":0.284,"id":"e56","stiffness":30000000,"target":49,"stress":-927.1925039664127},{"source":34,"area":1,"density":0.284,"id":"e57","stiffness":30000000,"target":51,"stress":116.32687635477463},{"source":1,"area":1,"density":0.284,"id":"e58","stiffness":30000000,"target":45,"stress":-1015.3232029940253},{"source":13,"area":1,"density":0.284,"id":"e59","stiffness":30000000,"target":47,"stress":196.95355805257122},{"source":52,"area":1,"density":0.284,"id":"e60","stiffness":30000000,"target":53,"stress":142.54346199370724},{"source":53,"area":1,"density":0.284,"id":"e61","stiffness":30000000,"target":54,"stress":-982.2533513768813},{"source":54,"area":1,"density":0.284,"id":"e62","stiffness":30000000,"target":55,"stress":-980.4176526205179},{"source":55,"area":1,"density":0.284,"id":"e63","stiffness":30000000,"target":56,"stress":175.5600533358408},{"source":56,"area":1,"density":0.284,"id":"e64","stiffness":30000000,"target":57,"stress":126.93111106282207},{"source":57,"area":1,"density":0.284,"id":"e65","stiffness":30000000,"target":58,"stress":-1064.1311110502313},{"source":58,"area":1,"density":0.284,"id":"e66","stiffness":30000000,"target":59,"stress":-1072.754497124534},{"source":59,"area":1,"density":0.284,"id":"e67","stiffness":30000000,"target":52,"stress":116.0666786082145},{"source":14,"area":1,"density":0.284,"id":"e68","stiffness":30000000,"target":57,"stress":-388.40885719692915},{"source":3,"area":1,"density":0.284,"id":"e69","stiffness":30000000,"target":55,"stress":-1170.033420784172},{"source":35,"area":1,"density":0.284,"id":"e70","stiffness":30000000,"target":53,"stress":-156.6510175778715},{"source":25,"area":1,"density":0.284,"id":"e71","stiffness":30000000,"target":59,"stress":-1466.4663185137872},{"source":63,"area":1,"density":0.284,"id":"e72","stiffness":30000000,"target":64,"stress":0.0},{"source":64,"area":1,"density":0.284,"id":"e73","stiffness":30000000,"target":65,"stress":0.0},{"source":65,"area":1,"density":0.284,"id":"e74","stiffness":30000000,"target":66,"stress":0.0},{"source":66,"area":1,"density":0.284,"id":"e75","stiffness":30000000,"target":67,"stress":0.0},{"source":67,"area":1,"density":0.284,"id":"e76","stiffness":30000000,"target":68,"stress":0.0},{"source":68,"area":1,"density":0.284,"id":"e77","stiffness":30000000,"target":69,"stress":0.0},{"source":69,"area":1,"density":0.284,"id":"e78","stiffness":30000000,"target":70,"stress":0.0},{"source":70,"area":1,"density":0.284,"id":"e79","stiffness":30000000,"target":63,"stress":0.0},{"source":60,"area":1,"density":0.284,"id":"e80","stiffness":30000000,"target":64,"stress":0.0},{"source":3,"area":1,"density":0.284,"id":"e81","stiffness":30000000,"target":66,"stress":0.0},{"source":61,"area":1,"density":0.284,"id":"e82","stiffness":30000000,"target":68,"stress":0.0},{"source":62,"area":1,"density":0.284,"id":"e83","stiffness":30000000,"target":70,"stress":0.0},{"source":73,"area":1,"density":0.284,"id":"e84","stiffness":30000000,"target":74,"stress":-968.189348269445},{"source":74,"area":1,"density":0.284,"id":"e85","stiffness":30000000,"target":75,"stress":67.0479699602888},{"source":75,"area":1,"density":0.284,"id":"e86","stiffness":30000000,"target":76,"stress":48.362315265495454},{"source":76,"area":1,"density":0.284,"id":"e87","stiffness":30000000,"target":77,"stress":-988.1810218518298},{"source":77,"area":1,"density":0.284,"id":"e88","stiffness":30000000,"target":78,"stress":-981.2110938618922},{"source":78,"area":1,"density":0.284,"id":"e89","stiffness":30000000,"target":79,"stress":71.08687019367063},{"source":79,"area":1,"density":0.284,"id":"e90","stiffness":30000000,"target":80,"stress":40.52712977676433},{"source":80,"area":1,"density":0.284,"id":"e91","stiffness":30000000,"target":73,"stress":-964.207020397175},{"source":72,"area":1,"density":0.284,"id":"e92","stiffness":30000000,"target":74,"stress":-321.0321247381263},{"source":71,"area":1,"density":0.284,"id":"e93","stiffness":30000000,"target":76,"stress":-1397.1922106936138},{"source":14,"area":1,"density":0.284,"id":"e94","stiffness":30000000,"target":78,"stress":-302.02227627183225},{"source":60,"area":1,"density":0.284,"id":"e95","stiffness":30000000,"target":80,"stress":-1345.8411305403279},{"source":83,"area":1,"density":0.284,"id":"e96","stiffness":30000000,"target":84,"stress":-5.753346114812863},{"source":84,"area":1,"density":0.284,"id":"e97","stiffness":30000000,"target":85,"stress":54.919743223036065},{"source":85,"area":1,"density":0.284,"id":"e98","stiffness":30000000,"target":86,"stress":30.01790729811335},{"source":86,"area":1,"density":0.284,"id":"e99","stiffness":30000000,"target":87,"stress":36.99794450914154},{"source":87,"area":1,"density":0.284,"id":"e100","stiffness":30000000,"target":88,"stress":6.052838903568637},{"source":88,"area":1,"density":0.284,"id":"e101","stiffness":30000000,"target":89,"stress":14.218977927854844},{"source":89,"area":1,"density":0.284,"id":"e102","stiffness":30000000,"target":90,"stress":-0.34472128696755316},{"source":90,"area":1,"density":0.284,"id":"e103","stiffness":30000000,"target":83,"stress":72.36238992822524},{"source":81,"area":1,"density":0.284,"id":"e104","stiffness":30000000,"target":88,"stress":9.525369226366102},{"source":25,"area":1,"density":0.284,"id":"e105","stiffness":30000000,"target":90,"stress":66.99626344427492},{"source":71,"area":1,"density":0.284,"id":"e106","stiffness":30000000,"target":84,"stress":56.847289810929645},{"source":82,"area":1,"density":0.284,"id":"e107","stiffness":30000000,"target":86,"stress":4.718604624959024},{"source":92,"area":1,"density":0.284,"id":"e108","stiffness":30000000,"target":93,"stress":-526.2253543877113},{"source":93,"area":1,"density":0.284,"id":"e109","stiffness":30000000,"target":94,"stress":-489.0637661100286},{"source":94,"area":1,"density":0.284,"id":"e110","stiffness":30000000,"target":95,"stress":471.64172663065153},{"source":95,"area":1,"density":0.284,"id":"e111","stiffness":30000000,"target":96,"stress":-494.7151143284027},{"source":96,"area":1,"density":0.284,"id":"e112","stiffness":30000000,"target":97,"stress":-430.42379055402967},{"source":97,"area":1,"density":0.284,"id":"e113","stiffness":30000000,"target":98,"stress":-408.81296125943106},{"source":98,"area":1,"density":0.284,"id":"e114","stiffness":30000000,"target":99,"stress":472.74997591851616},{"source":99,"area":1,"density":0.284,"id":"e115","stiffness":30000000,"target":92,"stress":-549.8587267908957},{"source":91,"area":1,"density":0.284,"id":"e116","stiffness":30000000,"target":97,"stress":171.67833631084517},{"source":61,"area":1,"density":0.284,"id":"e117","stiffness":30000000,"target":99,"stress":-853.3748976639919},{"source":35,"area":1,"density":0.284,"id":"e118","stiffness":30000000,"target":93,"stress":216.35622988665136},{"source":81,"area":1,"density":0.284,"id":"e119","stiffness":30000000,"target":95,"stress":-796.8759896083279},{"source":25,"area":1,"density":0.284,"id":"e120","stiffness":30000000,"target":53,"stress":-1184.8811751719115},{"source":35,"area":1,"density":0.284,"id":"e121","stiffness":30000000,"target":55,"stress":-87.55274027001501},{"source":3,"area":1,"density":0.284,"id":"e122","stiffness":30000000,"target":57,"stress":-1376.4926502619455},{"source":14,"area":1,"density":0.284,"id":"e123","stiffness":30000000,"target":59,"stress":-429.25226567523083},{"source":100,"area":1,"density":0.284,"id":"e124","stiffness":30000000,"target":101,"stress":151.55501989542245},{"source":101,"area":1,"density":0.284,"id":"e125","stiffness":30000000,"target":102,"stress":-1014.6657504815017},{"source":102,"area":1,"density":0.284,"id":"e126","stiffness":30000000,"target":103,"stress":-990.7219455278555},{"source":103,"area":1,"density":0.284,"id":"e127","stiffness":30000000,"target":104,"stress":164.93838451167292},{"source":104,"area":1,"density":0.284,"id":"e128","stiffness":30000000,"target":105,"stress":92.00169313052103},{"source":105,"area":1,"density":0.284,"id":"e129","stiffness":30000000,"target":106,"stress":-1053.0528256716175},{"source":106,"area":1,"density":0.284,"id":"e130","stiffness":30000000,"target":107,"stress":-1038.1642211750893},{"source":107,"area":1,"density":0.284,"id":"e131","stiffness":30000000,"target":100,"stress":124.06597963005555},{"source":72,"area":1,"density":0.284,"id":"e132","stiffness":30000000,"target":105,"stress":-476.2065295008203},{"source":62,"area":1,"density":0.284,"id":"e133","stiffness":30000000,"target":103,"stress":-1168.2542133181848},{"source":91,"area":1,"density":0.284,"id":"e134","stiffness":30000000,"target":101,"stress":-173.37056602539678},{"source":82,"area":1,"density":0.284,"id":"e135","stiffness":30000000,"target":107,"stress":-1346.487276128814},{"source":111,"area":1,"density":0.284,"id":"e136","stiffness":30000000,"target":112,"stress":0.0},{"source":112,"area":1,"density":0.284,"id":"e137","stiffness":30000000,"target":113,"stress":0.0},{"source":113,"area":1,"density":0.284,"id":"e138","stiffness":30000000,"target":114,"stress":0.0},{"source":114,"area":1,"density":0.284,"id":"e139","stiffness":30000000,"target":115,"stress":0.0},{"source":115,"area":1,"density":0.284,"id":"e140","stiffness":30000000,"target":116,"stress":0.0},{"source":116,"area":1,"density":0.284,"id":"e141","stiffness":30000000,"target":117,"stress":0.0},{"source":117,"area":1,"density":0.284,"id":"e142","stiffness":30000000,"target":118,"stress":0.0},{"source":118,"area":1,"density":0.284,"id":"e143","stiffness":30000000,"target":111,"stress":0.0},{"source":108,"area":1,"density":0.284,"id":"e144","stiffness":30000000,"target":112,"stress":0.0},{"source":62,"area":1,"density":0.284,"id":"e145","stiffness":30000000,"target":114,"stress":0.0},{"source":109,"area":1,"density":0.284,"id":"e146","stiffness":30000000,"target":116,"stress":0.0},{"source":110,"area":1,"density":0.284,"id":"e147","stiffness":30000000,"target":118,"stress":0.0},{"source":121,"area":1,"density":0.284,"id":"e148","stiffness":30000000,"target":122,"stress":-916.7112173052103},{"source":122,"area":1,"density":0.284,"id":"e149","stiffness":30000000,"target":123,"stress":151.84678175626613},{"source":123,"area":1,"density":0.284,"id":"e150","stiffness":30000000,"target":124,"stress":110.53497286587992},{"source":124,"area":1,"density":0.284,"id":"e151","stiffness":30000000,"target":125,"stress":-1007.8200333826959},{"source":125,"area":1,"density":0.284,"id":"e152","stiffness":30000000,"target":126,"stress":-1001.4900066170883},{"source":126,"area":1,"density":0.284,"id":"e153","stiffness":30000000,"target":127,"stress":101.29800913091046},{"source":127,"area":1,"density":0.284,"id":"e154","stiffness":30000000,"target":128,"stress":172.3485237415243},{"source":128,"area":1,"density":0.284,"id":"e155","stiffness":30000000,"target":121,"stress":-910.9584108562221},{"source":120,"area":1,"density":0.284,"id":"e156","stiffness":30000000,"target":122,"stress":-204.44547638346123},{"source":119,"area":1,"density":0.284,"id":"e157","stiffness":30000000,"target":124,"stress":-1425.1979013872467},{"source":72,"area":1,"density":0.284,"id":"e158","stiffness":30000000,"target":126,"stress":-357.5096299670255},{"source":108,"area":1,"density":0.284,"id":"e159","stiffness":30000000,"target":128,"stress":-1156.9790351963854},{"source":131,"area":1,"density":0.284,"id":"e160","stiffness":30000000,"target":132,"stress":19.168591552820107},{"source":132,"area":1,"density":0.284,"id":"e161","stiffness":30000000,"target":133,"stress":-10.036590253145182},{"source":133,"area":1,"density":0.284,"id":"e162","stiffness":30000000,"target":134,"stress":-18.593618020218067},{"source":134,"area":1,"density":0.284,"id":"e163","stiffness":30000000,"target":135,"stress":33.9048430112748},{"source":135,"area":1,"density":0.284,"id":"e164","stiffness":30000000,"target":136,"stress":8.376049154128077},{"source":136,"area":1,"density":0.284,"id":"e165","stiffness":30000000,"target":137,"stress":-27.082687567512494},{"source":137,"area":1,"density":0.284,"id":"e166","stiffness":30000000,"target":138,"stress":-30.621366222091105},{"source":138,"area":1,"density":0.284,"id":"e167","stiffness":30000000,"target":131,"stress":104.80295012287559},{"source":129,"area":1,"density":0.284,"id":"e168","stiffness":30000000,"target":136,"stress":-34.005505893171694},{"source":82,"area":1,"density":0.284,"id":"e169","stiffness":30000000,"target":138,"stress":127.69192236967402},{"source":119,"area":1,"density":0.284,"id":"e170","stiffness":30000000,"target":132,"stress":-30.668237879125673},{"source":130,"area":1,"density":0.284,"id":"e171","stiffness":30000000,"target":134,"stress":51.83743732780936},{"source":140,"area":1,"density":0.284,"id":"e172","stiffness":30000000,"target":141,"stress":-565.8846133704319},{"source":141,"area":1,"density":0.284,"id":"e173","stiffness":30000000,"target":142,"stress":-444.4395999194465},{"source":142,"area":1,"density":0.284,"id":"e174","stiffness":30000000,"target":143,"stress":482.25128747765524},{"source":143,"area":1,"density":0.284,"id":"e175","stiffness":30000000,"target":144,"stress":-541.23998464196},{"source":144,"area":1,"density":0.284,"id":"e176","stiffness":30000000,"target":145,"stress":-467.41105726752966},{"source":145,"area":1,"density":0.284,"id":"e177","stiffness":30000000,"target":146,"stress":-385.0731651761627},{"source":146,"area":1,"density":0.284,"id":"e178","stiffness":30000000,"target":147,"stress":495.31670163037006},{"source":147,"area":1,"density":0.284,"id":"e179","stiffness":30000000,"target":140,"stress":-587.9940740700818},{"source":139,"area":1,"density":0.284,"id":"e180","stiffness":30000000,"target":145,"stress":234.6869204731796},{"source":109,"area":1,"density":0.284,"id":"e181","stiffness":30000000,"target":147,"stress":-909.6977857762},{"source":91,"area":1,"density":0.284,"id":"e182","stiffness":30000000,"target":141,"stress":301.01725814651587},{"source":129,"area":1,"density":0.284,"id":"e183","stiffness":30000000,"target":143,"stress":-856.1722495034767},{"source":82,"area":1,"density":0.284,"id":"e184","stiffness":30000000,"target":101,"stress":-1266.103524795937},{"source":91,"area":1,"density":0.284,"id":"e185","stiffness":30000000,"target":103,"stress":-86.06211810688072},{"source":62,"area":1,"density":0.284,"id":"e186","stiffness":30000000,"target":105,"stress":-1425.688697184993},{"source":72,"area":1,"density":0.284,"id":"e187","stiffness":30000000,"target":107,"stress":-362.8328525062381},{"source":148,"area":1,"density":0.284,"id":"e188","stiffness":30000000,"target":149,"stress":-194.7129962090998},{"source":149,"area":1,"density":0.284,"id":"e189","stiffness":30000000,"target":150,"stress":-648.432547323519},{"source":150,"area":1,"density":0.284,"id":"e190","stiffness":30000000,"target":151,"stress":-637.3787301513978},{"source":151,"area":1,"density":0.284,"id":"e191","stiffness":30000000,"target":152,"stress":143.5803541608458},{"source":152,"area":1,"density":0.284,"id":"e192","stiffness":30000000,"target":153,"stress":-193.6297484499997},{"source":153,"area":1,"density":0.284,"id":"e193","stiffness":30000000,"target":154,"stress":-575.2981668676344},{"source":154,"area":1,"density":0.284,"id":"e194","stiffness":30000000,"target":155,"stress":-607.5255361585462},{"source":155,"area":1,"density":0.284,"id":"e195","stiffness":30000000,"target":148,"stress":168.02970442389383},{"source":120,"area":1,"density":0.284,"id":"e196","stiffness":30000000,"target":153,"stress":54.71697686614733},{"source":110,"area":1,"density":0.284,"id":"e197","stiffness":30000000,"target":151,"stress":-917.3283928108781},{"source":139,"area":1,"density":0.284,"id":"e198","stiffness":30000000,"target":149,"stress":124.54643028783455},{"source":130,"area":1,"density":0.284,"id":"e199","stiffness":30000000,"target":155,"stress":-937.6394110533025},{"source":156,"area":1,"density":0.284,"id":"e200","stiffness":30000000,"target":157,"stress":-9.629544260106892},{"source":157,"area":1,"density":0.284,"id":"e201","stiffness":30000000,"target":158,"stress":10.662476973391875},{"source":158,"area":1,"density":0.284,"id":"e202","stiffness":30000000,"target":159,"stress":9.384546523008424},{"source":159,"area":1,"density":0.284,"id":"e203","stiffness":30000000,"target":160,"stress":27.216347021476885},{"source":160,"area":1,"density":0.284,"id":"e204","stiffness":30000000,"target":161,"stress":-18.975307141816813},{"source":161,"area":1,"density":0.284,"id":"e205","stiffness":30000000,"target":162,"stress":-31.861828344788925},{"source":162,"area":1,"density":0.284,"id":"e206","stiffness":30000000,"target":163,"stress":-23.841408859298667},{"source":163,"area":1,"density":0.284,"id":"e207","stiffness":30000000,"target":156,"stress":77.00739491860776},{"source":12,"area":1,"density":0.284,"id":"e208","stiffness":30000000,"target":157,"stress":9.958311522070876},{"source":24,"area":1,"density":0.284,"id":"e209","stiffness":30000000,"target":159,"stress":11.098012158522698},{"source":23,"area":1,"density":0.284,"id":"e210","stiffness":30000000,"target":161,"stress":-20.707966582951396},{"source":25,"area":1,"density":0.284,"id":"e211","stiffness":30000000,"target":163,"stress":90.98659105370342},{"source":167,"area":1,"density":0.284,"id":"e212","stiffness":30000000,"target":168,"stress":-698.0284577998084},{"source":168,"area":1,"density":0.284,"id":"e213","stiffness":30000000,"target":169,"stress":112.02077578897918},{"source":169,"area":1,"density":0.284,"id":"e214","stiffness":30000000,"target":170,"stress":126.92623224075732},{"source":170,"area":1,"density":0.284,"id":"e215","stiffness":30000000,"target":171,"stress":-660.4698113679235},{"source":171,"area":1,"density":0.284,"id":"e216","stiffness":30000000,"target":172,"stress":-666.2641707011161},{"source":172,"area":1,"density":0.284,"id":"e217","stiffness":30000000,"target":173,"stress":120.38450840523696},{"source":173,"area":1,"density":0.284,"id":"e218","stiffness":30000000,"target":174,"stress":72.35632703341975},{"source":174,"area":1,"density":0.284,"id":"e219","stiffness":30000000,"target":167,"stress":-703.7216569843574},{"source":166,"area":1,"density":0.284,"id":"e220","stiffness":30000000,"target":168,"stress":-156.37906755519228},{"source":164,"area":1,"density":0.284,"id":"e221","stiffness":30000000,"target":170,"stress":-846.7755743987906},{"source":165,"area":1,"density":0.284,"id":"e222","stiffness":30000000,"target":172,"stress":-151.9474897609486},{"source":12,"area":1,"density":0.284,"id":"e223","stiffness":30000000,"target":174,"stress":-1021.1015410984618},{"source":178,"area":1,"density":0.284,"id":"e224","stiffness":30000000,"target":179,"stress":27.418409903227513},{"source":179,"area":1,"density":0.284,"id":"e225","stiffness":30000000,"target":180,"stress":50.073402690565516},{"source":180,"area":1,"density":0.284,"id":"e226","stiffness":30000000,"target":181,"stress":20.981755223620638},{"source":181,"area":1,"density":0.284,"id":"e227","stiffness":30000000,"target":182,"stress":44.41117066505675},{"source":182,"area":1,"density":0.284,"id":"e228","stiffness":30000000,"target":183,"stress":62.62029793824197},{"source":183,"area":1,"density":0.284,"id":"e229","stiffness":30000000,"target":184,"stress":-12.139035390236772},{"source":184,"area":1,"density":0.284,"id":"e230","stiffness":30000000,"target":185,"stress":-37.35750027559393},{"source":185,"area":1,"density":0.284,"id":"e231","stiffness":30000000,"target":178,"stress":-8.052996615597662},{"source":175,"area":1,"density":0.284,"id":"e232","stiffness":30000000,"target":183,"stress":-59.71939222326834},{"source":176,"area":1,"density":0.284,"id":"e233","stiffness":30000000,"target":185,"stress":42.51261865073774},{"source":164,"area":1,"density":0.284,"id":"e234","stiffness":30000000,"target":179,"stress":33.32307218613653},{"source":177,"area":1,"density":0.284,"id":"e235","stiffness":30000000,"target":181,"stress":27.519569289259774},{"source":188,"area":1,"density":0.284,"id":"e236","stiffness":30000000,"target":189,"stress":-242.21586399491474},{"source":189,"area":1,"density":0.284,"id":"e237","stiffness":30000000,"target":190,"stress":-225.11461886221397},{"source":190,"area":1,"density":0.284,"id":"e238","stiffness":30000000,"target":191,"stress":309.80168755863184},{"source":191,"area":1,"density":0.284,"id":"e239","stiffness":30000000,"target":192,"stress":-455.3588501151025},{"source":192,"area":1,"density":0.284,"id":"e240","stiffness":30000000,"target":193,"stress":-380.90299550522826},{"source":193,"area":1,"density":0.284,"id":"e241","stiffness":30000000,"target":194,"stress":-190.75850325480263},{"source":194,"area":1,"density":0.284,"id":"e242","stiffness":30000000,"target":195,"stress":304.46197442347363},{"source":195,"area":1,"density":0.284,"id":"e243","stiffness":30000000,"target":188,"stress":-298.9301059951433},{"source":187,"area":1,"density":0.284,"id":"e244","stiffness":30000000,"target":193,"stress":283.8444199454538},{"source":23,"area":1,"density":0.284,"id":"e245","stiffness":30000000,"target":195,"stress":-509.6323546053261},{"source":186,"area":1,"density":0.284,"id":"e246","stiffness":30000000,"target":189,"stress":102.43885324950462},{"source":175,"area":1,"density":0.284,"id":"e247","stiffness":30000000,"target":191,"stress":-665.0897228007632},{"source":196,"area":1,"density":0.284,"id":"e248","stiffness":30000000,"target":197,"stress":126.8364150578122},{"source":197,"area":1,"density":0.284,"id":"e249","stiffness":30000000,"target":198,"stress":-348.07961631550904},{"source":198,"area":1,"density":0.284,"id":"e250","stiffness":30000000,"target":199,"stress":-310.23508159079466},{"source":199,"area":1,"density":0.284,"id":"e251","stiffness":30000000,"target":200,"stress":-116.37757209207483},{"source":200,"area":1,"density":0.284,"id":"e252","stiffness":30000000,"target":201,"stress":117.89328998779219},{"source":201,"area":1,"density":0.284,"id":"e253","stiffness":30000000,"target":202,"stress":-371.14663249692364},{"source":202,"area":1,"density":0.284,"id":"e254","stiffness":30000000,"target":203,"stress":-360.9729484446992},{"source":203,"area":1,"density":0.284,"id":"e255","stiffness":30000000,"target":196,"stress":-102.27591984596584},{"source":176,"area":1,"density":0.284,"id":"e256","stiffness":30000000,"target":201,"stress":-589.2122090803439},{"source":186,"area":1,"density":0.284,"id":"e257","stiffness":30000000,"target":203,"stress":54.36248731293736},{"source":24,"area":1,"density":0.284,"id":"e258","stiffness":30000000,"target":197,"stress":-577.8616313072196},{"source":165,"area":1,"density":0.284,"id":"e259","stiffness":30000000,"target":199,"stress":-12.082136154878667},{"source":204,"area":1,"density":0.284,"id":"e260","stiffness":30000000,"target":205,"stress":148.88883036597232},{"source":205,"area":1,"density":0.284,"id":"e261","stiffness":30000000,"target":206,"stress":-688.2003756072577},{"source":206,"area":1,"density":0.284,"id":"e262","stiffness":30000000,"target":207,"stress":-712.9947595714843},{"source":207,"area":1,"density":0.284,"id":"e263","stiffness":30000000,"target":208,"stress":104.46449080106687},{"source":208,"area":1,"density":0.284,"id":"e264","stiffness":30000000,"target":209,"stress":97.50198625188163},{"source":209,"area":1,"density":0.284,"id":"e265","stiffness":30000000,"target":210,"stress":-710.514496535517},{"source":210,"area":1,"density":0.284,"id":"e266","stiffness":30000000,"target":211,"stress":-736.0908943855887},{"source":211,"area":1,"density":0.284,"id":"e267","stiffness":30000000,"target":204,"stress":107.19621026307593},{"source":166,"area":1,"density":0.284,"id":"e268","stiffness":30000000,"target":209,"stress":-142.6633813540037},{"source":25,"area":1,"density":0.284,"id":"e269","stiffness":30000000,"target":207,"stress":-1001.6077100008736},{"source":187,"area":1,"density":0.284,"id":"e270","stiffness":30000000,"target":205,"stress":57.4706385927637},{"source":177,"area":1,"density":0.284,"id":"e271","stiffness":30000000,"target":211,"stress":-1054.9400963148134},{"source":83,"area":1,"density":0.284,"id":"e272","stiffness":30000000,"target":212,"stress":-45.15025564836974},{"source":212,"area":1,"density":0.284,"id":"e273","stiffness":30000000,"target":213,"stress":48.0260752303617},{"source":213,"area":1,"density":0.284,"id":"e274","stiffness":30000000,"target":214,"stress":37.445863960027154},{"source":214,"area":1,"density":0.284,"id":"e275","stiffness":30000000,"target":87,"stress":41.07296584578923},{"source":87,"area":1,"density":0.284,"id":"e276","stiffness":30000000,"target":215,"stress":-27.411681046774433},{"source":215,"area":1,"density":0.284,"id":"e277","stiffness":30000000,"target":216,"stress":3.5368814587082746},{"source":216,"area":1,"density":0.284,"id":"e278","stiffness":30000000,"target":217,"stress":3.8304865198540097},{"source":217,"area":1,"density":0.284,"id":"e279","stiffness":30000000,"target":83,"stress":63.885087925362846},{"source":71,"area":1,"density":0.284,"id":"e280","stiffness":30000000,"target":212,"stress":77.54462000380681},{"source":25,"area":1,"density":0.284,"id":"e281","stiffness":30000000,"target":214,"stress":-5.582028049458261},{"source":81,"area":1,"density":0.284,"id":"e282","stiffness":30000000,"target":215,"stress":20.86166675529119},{"source":82,"area":1,"density":0.284,"id":"e283","stiffness":30000000,"target":217,"stress":48.84284731188301},{"source":220,"area":1,"density":0.284,"id":"e284","stiffness":30000000,"target":221,"stress":-662.846849215129},{"source":221,"area":1,"density":0.284,"id":"e285","stiffness":30000000,"target":222,"stress":78.88846728996592},{"source":222,"area":1,"density":0.284,"id":"e286","stiffness":30000000,"target":223,"stress":57.624556739225085},{"source":223,"area":1,"density":0.284,"id":"e287","stiffness":30000000,"target":224,"stress":-665.1288050029974},{"source":224,"area":1,"density":0.284,"id":"e288","stiffness":30000000,"target":225,"stress":-669.4284803227823},{"source":225,"area":1,"density":0.284,"id":"e289","stiffness":30000000,"target":226,"stress":72.45846907205652},{"source":226,"area":1,"density":0.284,"id":"e290","stiffness":30000000,"target":227,"stress":53.935812184168235},{"source":227,"area":1,"density":0.284,"id":"e291","stiffness":30000000,"target":220,"stress":-668.1220986333789},{"source":219,"area":1,"density":0.284,"id":"e292","stiffness":30000000,"target":221,"stress":-125.32795623936703},{"source":218,"area":1,"density":0.284,"id":"e293","stiffness":30000000,"target":223,"stress":-946.1344481421049},{"source":166,"area":1,"density":0.284,"id":"e294","stiffness":30000000,"target":225,"stress":-168.3189169838992},{"source":71,"area":1,"density":0.284,"id":"e295","stiffness":30000000,"target":227,"stress":-976.5845362936482},{"source":230,"area":1,"density":0.284,"id":"e296","stiffness":30000000,"target":231,"stress":22.29147756429875},{"source":231,"area":1,"density":0.284,"id":"e297","stiffness":30000000,"target":232,"stress":36.544674091586735},{"source":232,"area":1,"density":0.284,"id":"e298","stiffness":30000000,"target":233,"stress":3.9739225856466707},{"source":233,"area":1,"density":0.284,"id":"e299","stiffness":30000000,"target":234,"stress":92.1576854368452},{"source":234,"area":1,"density":0.284,"id":"e300","stiffness":30000000,"target":235,"stress":64.8430913001518},{"source":235,"area":1,"density":0.284,"id":"e301","stiffness":30000000,"target":236,"stress":-28.340847311501836},{"source":236,"area":1,"density":0.284,"id":"e302","stiffness":30000000,"target":237,"stress":-52.28732698644332},{"source":237,"area":1,"density":0.284,"id":"e303","stiffness":30000000,"target":230,"stress":85.8064801621361},{"source":228,"area":1,"density":0.284,"id":"e304","stiffness":30000000,"target":235,"stress":-76.51801048531684},{"source":177,"area":1,"density":0.284,"id":"e305","stiffness":30000000,"target":237,"stress":141.69951014126175},{"source":218,"area":1,"density":0.284,"id":"e306","stiffness":30000000,"target":231,"stress":17.329968750083193},{"source":229,"area":1,"density":0.284,"id":"e307","stiffness":30000000,"target":233,"stress":86.47374989284936},{"source":239,"area":1,"density":0.284,"id":"e308","stiffness":30000000,"target":240,"stress":-206.17671736081624},{"source":240,"area":1,"density":0.284,"id":"e309","stiffness":30000000,"target":241,"stress":-295.96530674646147},{"source":241,"area":1,"density":0.284,"id":"e310","stiffness":30000000,"target":242,"stress":332.73912824116593},{"source":242,"area":1,"density":0.284,"id":"e311","stiffness":30000000,"target":243,"stress":-363.1088468923176},{"source":243,"area":1,"density":0.284,"id":"e312","stiffness":30000000,"target":244,"stress":-321.7074487997179},{"source":244,"area":1,"density":0.284,"id":"e313","stiffness":30000000,"target":245,"stress":-272.7912246456589},{"source":245,"area":1,"density":0.284,"id":"e314","stiffness":30000000,"target":246,"stress":317.3245646935194},{"source":246,"area":1,"density":0.284,"id":"e315","stiffness":30000000,"target":239,"stress":-229.48873383684872},{"source":238,"area":1,"density":0.284,"id":"e316","stiffness":30000000,"target":244,"stress":153.67772161714853},{"source":81,"area":1,"density":0.284,"id":"e317","stiffness":30000000,"target":246,"stress":-438.26294342864765},{"source":187,"area":1,"density":0.284,"id":"e318","stiffness":30000000,"target":240,"stress":9.159005516228213},{"source":228,"area":1,"density":0.284,"id":"e319","stiffness":30000000,"target":242,"stress":-580.3159211815922},{"source":177,"area":1,"density":0.284,"id":"e320","stiffness":30000000,"target":205,"stress":-702.7942765074646},{"source":187,"area":1,"density":0.284,"id":"e321","stiffness":30000000,"target":207,"stress":-238.10359594058025},{"source":25,"area":1,"density":0.284,"id":"e322","stiffness":30000000,"target":209,"stress":-821.31867291617},{"source":166,"area":1,"density":0.284,"id":"e323","stiffness":30000000,"target":211,"stress":-323.6514082456227},{"source":247,"area":1,"density":0.284,"id":"e324","stiffness":30000000,"target":248,"stress":155.29750805205262},{"source":248,"area":1,"density":0.284,"id":"e325","stiffness":30000000,"target":249,"stress":-684.8580750486461},{"source":249,"area":1,"density":0.284,"id":"e326","stiffness":30000000,"target":250,"stress":-698.1442051198153},{"source":250,"area":1,"density":0.284,"id":"e327","stiffness":30000000,"target":251,"stress":99.84939710047996},{"source":251,"area":1,"density":0.284,"id":"e328","stiffness":30000000,"target":252,"stress":97.63787922553426},{"source":252,"area":1,"density":0.284,"id":"e329","stiffness":30000000,"target":253,"stress":-723.2017888957938},{"source":253,"area":1,"density":0.284,"id":"e330","stiffness":30000000,"target":254,"stress":-730.8626987461871},{"source":254,"area":1,"density":0.284,"id":"e331","stiffness":30000000,"target":247,"stress":118.35400753690465},{"source":219,"area":1,"density":0.284,"id":"e332","stiffness":30000000,"target":252,"stress":-212.5758616380249},{"source":82,"area":1,"density":0.284,"id":"e333","stiffness":30000000,"target":250,"stress":-910.6074094175261},{"source":238,"area":1,"density":0.284,"id":"e334","stiffness":30000000,"target":248,"stress":10.128828295996655},{"source":229,"area":1,"density":0.284,"id":"e335","stiffness":30000000,"target":254,"stress":-955.0576649152822},{"source":131,"area":1,"density":0.284,"id":"e336","stiffness":30000000,"target":255,"stress":-44.9134559089827},{"source":255,"area":1,"density":0.284,"id":"e337","stiffness":30000000,"target":256,"stress":67.01310618603654},{"source":256,"area":1,"density":0.284,"id":"e338","stiffness":30000000,"target":257,"stress":56.78666195412273},{"source":257,"area":1,"density":0.284,"id":"e339","stiffness":30000000,"target":135,"stress":-8.964421769523154},{"source":135,"area":1,"density":0.284,"id":"e340","stiffness":30000000,"target":258,"stress":-12.104895896113959},{"source":258,"area":1,"density":0.284,"id":"e341","stiffness":30000000,"target":259,"stress":22.276677784624106},{"source":259,"area":1,"density":0.284,"id":"e342","stiffness":30000000,"target":260,"stress":21.546956297789166},{"source":260,"area":1,"density":0.284,"id":"e343","stiffness":30000000,"target":131,"stress":-32.55571984530499},{"source":119,"area":1,"density":0.284,"id":"e344","stiffness":30000000,"target":255,"stress":103.59829889107205},{"source":82,"area":1,"density":0.284,"id":"e345","stiffness":30000000,"target":257,"stress":-69.17760264217233},{"source":129,"area":1,"density":0.284,"id":"e346","stiffness":30000000,"target":258,"stress":31.052678397193965},{"source":130,"area":1,"density":0.284,"id":"e347","stiffness":30000000,"target":260,"stress":-54.13344202790103},{"source":263,"area":1,"density":0.284,"id":"e348","stiffness":30000000,"target":264,"stress":-635.0154673603402},{"source":264,"area":1,"density":0.284,"id":"e349","stiffness":30000000,"target":265,"stress":131.36876987184857},{"source":265,"area":1,"density":0.284,"id":"e350","stiffness":30000000,"target":266,"stress":89.24681910070245},{"source":266,"area":1,"density":0.284,"id":"e351","stiffness":30000000,"target":267,"stress":-670.0033186688037},{"source":267,"area":1,"density":0.284,"id":"e352","stiffness":30000000,"target":268,"stress":-677.1102757423414},{"source":268,"area":1,"density":0.284,"id":"e353","stiffness":30000000,"target":269,"stress":90.12814288548013},{"source":269,"area":1,"density":0.284,"id":"e354","stiffness":30000000,"target":270,"stress":104.84244533959883},{"source":270,"area":1,"density":0.284,"id":"e355","stiffness":30000000,"target":263,"stress":-630.391986392145},{"source":262,"area":1,"density":0.284,"id":"e356","stiffness":30000000,"target":264,"stress":-11.811980523921076},{"source":261,"area":1,"density":0.284,"id":"e357","stiffness":30000000,"target":266,"stress":-985.9130103750655},{"source":219,"area":1,"density":0.284,"id":"e358","stiffness":30000000,"target":268,"stress":-152.1105649264191},{"source":119,"area":1,"density":0.284,"id":"e359","stiffness":30000000,"target":270,"stress":-909.3109716689779},{"source":273,"area":1,"density":0.284,"id":"e360","stiffness":30000000,"target":274,"stress":32.892045902961186},{"source":274,"area":1,"density":0.284,"id":"e361","stiffness":30000000,"target":275,"stress":7.931046292567456},{"source":275,"area":1,"density":0.284,"id":"e362","stiffness":30000000,"target":276,"stress":-8.657525826556617},{"source":276,"area":1,"density":0.284,"id":"e363","stiffness":30000000,"target":277,"stress":31.41405652779203},{"source":277,"area":1,"density":0.284,"id":"e364","stiffness":30000000,"target":278,"stress":36.53627632420394},{"source":278,"area":1,"density":0.284,"id":"e365","stiffness":30000000,"target":279,"stress":-23.904680344275487},{"source":279,"area":1,"density":0.284,"id":"e366","stiffness":30000000,"target":280,"stress":-36.200905778044735},{"source":280,"area":1,"density":0.284,"id":"e367","stiffness":30000000,"target":273,"stress":105.98248959776289},{"source":271,"area":1,"density":0.284,"id":"e368","stiffness":30000000,"target":278,"stress":-50.379876710263055},{"source":229,"area":1,"density":0.284,"id":"e369","stiffness":30000000,"target":280,"stress":138.30021129796478},{"source":261,"area":1,"density":0.284,"id":"e370","stiffness":30000000,"target":274,"stress":-21.063735771398367},{"source":272,"area":1,"density":0.284,"id":"e371","stiffness":30000000,"target":276,"stress":40.19028533502123},{"source":282,"area":1,"density":0.284,"id":"e372","stiffness":30000000,"target":283,"stress":-221.42113368739993},{"source":283,"area":1,"density":0.284,"id":"e373","stiffness":30000000,"target":284,"stress":-286.8527809675056},{"source":284,"area":1,"density":0.284,"id":"e374","stiffness":30000000,"target":285,"stress":331.5245045127516},{"source":285,"area":1,"density":0.284,"id":"e375","stiffness":30000000,"target":286,"stress":-373.8878200747094},{"source":286,"area":1,"density":0.284,"id":"e376","stiffness":30000000,"target":287,"stress":-325.5599794989706},{"source":287,"area":1,"density":0.284,"id":"e377","stiffness":30000000,"target":288,"stress":-265.7869589260183},{"source":288,"area":1,"density":0.284,"id":"e378","stiffness":30000000,"target":289,"stress":337.95109894463735},{"source":289,"area":1,"density":0.284,"id":"e379","stiffness":30000000,"target":282,"stress":-248.1832230140561},{"source":281,"area":1,"density":0.284,"id":"e380","stiffness":30000000,"target":287,"stress":165.28115767358335},{"source":129,"area":1,"density":0.284,"id":"e381","stiffness":30000000,"target":289,"stress":-473.25146254395935},{"source":238,"area":1,"density":0.284,"id":"e382","stiffness":30000000,"target":283,"stress":33.39213865643557},{"source":271,"area":1,"density":0.284,"id":"e383","stiffness":30000000,"target":285,"stress":-591.8794355742693},{"source":229,"area":1,"density":0.284,"id":"e384","stiffness":30000000,"target":248,"stress":-763.6331672504002},{"source":238,"area":1,"density":0.284,"id":"e385","stiffness":30000000,"target":250,"stress":-185.63575340289165},{"source":82,"area":1,"density":0.284,"id":"e386","stiffness":30000000,"target":252,"stress":-931.3363912221392},{"source":219,"area":1,"density":0.284,"id":"e387","stiffness":30000000,"target":254,"stress":-236.75025609562874},{"source":290,"area":1,"density":0.284,"id":"e388","stiffness":30000000,"target":291,"stress":-59.95756955523731},{"source":291,"area":1,"density":0.284,"id":"e389","stiffness":30000000,"target":292,"stress":-380.5743047102341},{"source":292,"area":1,"density":0.284,"id":"e390","stiffness":30000000,"target":293,"stress":-418.4440001981913},{"source":293,"area":1,"density":0.284,"id":"e391","stiffness":30000000,"target":294,"stress":139.39735381168668},{"source":294,"area":1,"density":0.284,"id":"e392","stiffness":30000000,"target":295,"stress":-76.17729516436165},{"source":295,"area":1,"density":0.284,"id":"e393","stiffness":30000000,"target":296,"stress":-436.6276914603527},{"source":296,"area":1,"density":0.284,"id":"e394","stiffness":30000000,"target":297,"stress":-463.0067764055464},{"source":297,"area":1,"density":0.284,"id":"e395","stiffness":30000000,"target":290,"stress":151.38206102478281},{"source":262,"area":1,"density":0.284,"id":"e396","stiffness":30000000,"target":295,"stress":114.95772112996296},{"source":130,"area":1,"density":0.284,"id":"e397","stiffness":30000000,"target":293,"stress":-638.0084188291222},{"source":281,"area":1,"density":0.284,"id":"e398","stiffness":30000000,"target":291,"stress":87.71206872151096},{"source":272,"area":1,"density":0.284,"id":"e399","stiffness":30000000,"target":297,"stress":-678.6394413814226},{"source":298,"area":1,"density":0.284,"id":"e400","stiffness":30000000,"target":299,"stress":-38.34880536845281},{"source":299,"area":1,"density":0.284,"id":"e401","stiffness":30000000,"target":300,"stress":12.407963924628852},{"source":300,"area":1,"density":0.284,"id":"e402","stiffness":30000000,"target":301,"stress":21.199484193977906},{"source":301,"area":1,"density":0.284,"id":"e403","stiffness":30000000,"target":302,"stress":-2.8528876566453114},{"source":302,"area":1,"density":0.284,"id":"e404","stiffness":30000000,"target":303,"stress":-41.04218021294851},{"source":303,"area":1,"density":0.284,"id":"e405","stiffness":30000000,"target":304,"stress":10.567163339902429},{"source":304,"area":1,"density":0.284,"id":"e406","stiffness":30000000,"target":305,"stress":25.546738257594765},{"source":305,"area":1,"density":0.284,"id":"e407","stiffness":30000000,"target":298,"stress":44.19974115677437},{"source":164,"area":1,"density":0.284,"id":"e408","stiffness":30000000,"target":299,"stress":35.12823255400978},{"source":176,"area":1,"density":0.284,"id":"e409","stiffness":30000000,"target":301,"stress":-32.59518775516267},{"source":175,"area":1,"density":0.284,"id":"e410","stiffness":30000000,"target":303,"stress":39.23390270424369},{"source":177,"area":1,"density":0.284,"id":"e411","stiffness":30000000,"target":305,"stress":2.596443380791377},{"source":309,"area":1,"density":0.284,"id":"e412","stiffness":30000000,"target":310,"stress":-353.6407357628251},{"source":310,"area":1,"density":0.284,"id":"e413","stiffness":30000000,"target":311,"stress":56.32828783072793},{"source":311,"area":1,"density":0.284,"id":"e414","stiffness":30000000,"target":312,"stress":82.47822769598015},{"source":312,"area":1,"density":0.284,"id":"e415","stiffness":30000000,"target":313,"stress":-329.6248054150662},{"source":313,"area":1,"density":0.284,"id":"e416","stiffness":30000000,"target":314,"stress":-338.2908337543693},{"source":314,"area":1,"density":0.284,"id":"e417","stiffness":30000000,"target":315,"stress":41.37424479889596},{"source":315,"area":1,"density":0.284,"id":"e418","stiffness":30000000,"target":316,"stress":34.676200601602076},{"source":316,"area":1,"density":0.284,"id":"e419","stiffness":30000000,"target":309,"stress":-354.459177087495},{"source":308,"area":1,"density":0.284,"id":"e420","stiffness":30000000,"target":310,"stress":-88.02842223136412},{"source":306,"area":1,"density":0.284,"id":"e421","stiffness":30000000,"target":312,"stress":-372.05992706808894},{"source":307,"area":1,"density":0.284,"id":"e422","stiffness":30000000,"target":314,"stress":-150.48969214639735},{"source":164,"area":1,"density":0.284,"id":"e423","stiffness":30000000,"target":316,"stress":-506.2693573594691},{"source":320,"area":1,"density":0.284,"id":"e424","stiffness":30000000,"target":321,"stress":-0.4978521822080612},{"source":321,"area":1,"density":0.284,"id":"e425","stiffness":30000000,"target":322,"stress":71.70422861976897},{"source":322,"area":1,"density":0.284,"id":"e426","stiffness":30000000,"target":323,"stress":59.08490866377858},{"source":323,"area":1,"density":0.284,"id":"e427","stiffness":30000000,"target":324,"stress":113.87887202974441},{"source":324,"area":1,"density":0.284,"id":"e428","stiffness":30000000,"target":325,"stress":46.9759252865564},{"source":325,"area":1,"density":0.284,"id":"e429","stiffness":30000000,"target":326,"stress":-5.622391022283891},{"source":326,"area":1,"density":0.284,"id":"e430","stiffness":30000000,"target":327,"stress":-39.184079772656396},{"source":327,"area":1,"density":0.284,"id":"e431","stiffness":30000000,"target":320,"stress":-49.616506875532046},{"source":317,"area":1,"density":0.284,"id":"e432","stiffness":30000000,"target":325,"stress":-47.41096604399799},{"source":318,"area":1,"density":0.284,"id":"e433","stiffness":30000000,"target":327,"stress":6.671465490818394},{"source":306,"area":1,"density":0.284,"id":"e434","stiffness":30000000,"target":321,"stress":77.15749513363575},{"source":319,"area":1,"density":0.284,"id":"e435","stiffness":30000000,"target":323,"stress":40.38862566422093},{"source":330,"area":1,"density":0.284,"id":"e436","stiffness":30000000,"target":331,"stress":-126.50930715720834},{"source":331,"area":1,"density":0.284,"id":"e437","stiffness":30000000,"target":332,"stress":-154.9414077058054},{"source":332,"area":1,"density":0.284,"id":"e438","stiffness":30000000,"target":333,"stress":179.327986674627},{"source":333,"area":1,"density":0.284,"id":"e439","stiffness":30000000,"target":334,"stress":-294.63890175953406},{"source":334,"area":1,"density":0.284,"id":"e440","stiffness":30000000,"target":335,"stress":-236.80881759997476},{"source":335,"area":1,"density":0.284,"id":"e441","stiffness":30000000,"target":336,"stress":-86.51756484380917},{"source":336,"area":1,"density":0.284,"id":"e442","stiffness":30000000,"target":337,"stress":167.09451185072226},{"source":337,"area":1,"density":0.284,"id":"e443","stiffness":30000000,"target":330,"stress":-142.8413168017484},{"source":329,"area":1,"density":0.284,"id":"e444","stiffness":30000000,"target":335,"stress":199.6640881995677},{"source":175,"area":1,"density":0.284,"id":"e445","stiffness":30000000,"target":337,"stress":-258.64704929968633},{"source":328,"area":1,"density":0.284,"id":"e446","stiffness":30000000,"target":331,"stress":25.477022826013883},{"source":317,"area":1,"density":0.284,"id":"e447","stiffness":30000000,"target":333,"stress":-414.9389970921805},{"source":338,"area":1,"density":0.284,"id":"e448","stiffness":30000000,"target":339,"stress":81.7697949801734},{"source":339,"area":1,"density":0.284,"id":"e449","stiffness":30000000,"target":340,"stress":-135.6110787145296},{"source":340,"area":1,"density":0.284,"id":"e450","stiffness":30000000,"target":341,"stress":-128.301069648507},{"source":341,"area":1,"density":0.284,"id":"e451","stiffness":30000000,"target":342,"stress":-109.38995694787076},{"source":342,"area":1,"density":0.284,"id":"e452","stiffness":30000000,"target":343,"stress":56.25501941542429},{"source":343,"area":1,"density":0.284,"id":"e453","stiffness":30000000,"target":344,"stress":-178.18937680673585},{"source":344,"area":1,"density":0.284,"id":"e454","stiffness":30000000,"target":345,"stress":-161.00848342433918},{"source":345,"area":1,"density":0.284,"id":"e455","stiffness":30000000,"target":338,"stress":-40.29094124568944},{"source":318,"area":1,"density":0.284,"id":"e456","stiffness":30000000,"target":343,"stress":-327.532666980233},{"source":328,"area":1,"density":0.284,"id":"e457","stiffness":30000000,"target":345,"stress":13.520739074049796},{"source":176,"area":1,"density":0.284,"id":"e458","stiffness":30000000,"target":339,"stress":-268.1740318128664},{"source":307,"area":1,"density":0.284,"id":"e459","stiffness":30000000,"target":341,"stress":-73.0087077097674},{"source":346,"area":1,"density":0.284,"id":"e460","stiffness":30000000,"target":347,"stress":130.90449782806388},{"source":347,"area":1,"density":0.284,"id":"e461","stiffness":30000000,"target":348,"stress":-355.726101266527},{"source":348,"area":1,"density":0.284,"id":"e462","stiffness":30000000,"target":349,"stress":-377.32978314809793},{"source":349,"area":1,"density":0.284,"id":"e463","stiffness":30000000,"target":350,"stress":49.304516836481476},{"source":350,"area":1,"density":0.284,"id":"e464","stiffness":30000000,"target":351,"stress":51.43856531520776},{"source":351,"area":1,"density":0.284,"id":"e465","stiffness":30000000,"target":352,"stress":-330.4965748210259},{"source":352,"area":1,"density":0.284,"id":"e466","stiffness":30000000,"target":353,"stress":-338.43328767673523},{"source":353,"area":1,"density":0.284,"id":"e467","stiffness":30000000,"target":346,"stress":122.73538938254356},{"source":308,"area":1,"density":0.284,"id":"e468","stiffness":30000000,"target":351,"stress":-12.086991323531802},{"source":177,"area":1,"density":0.284,"id":"e469","stiffness":30000000,"target":349,"stress":-638.7281422187276},{"source":329,"area":1,"density":0.284,"id":"e470","stiffness":30000000,"target":347,"stress":135.30693566988455},{"source":319,"area":1,"density":0.284,"id":"e471","stiffness":30000000,"target":353,"stress":-445.4879444939475},{"source":230,"area":1,"density":0.284,"id":"e472","stiffness":30000000,"target":354,"stress":-63.476702008958185},{"source":354,"area":1,"density":0.284,"id":"e473","stiffness":30000000,"target":355,"stress":59.987246736094725},{"source":355,"area":1,"density":0.284,"id":"e474","stiffness":30000000,"target":356,"stress":55.42256282474811},{"source":356,"area":1,"density":0.284,"id":"e475","stiffness":30000000,"target":234,"stress":-16.574524405082688},{"source":234,"area":1,"density":0.284,"id":"e476","stiffness":30000000,"target":357,"stress":-75.44667090140531},{"source":357,"area":1,"density":0.284,"id":"e477","stiffness":30000000,"target":358,"stress":33.364829071372824},{"source":358,"area":1,"density":0.284,"id":"e478","stiffness":30000000,"target":359,"stress":44.662443441948},{"source":359,"area":1,"density":0.284,"id":"e479","stiffness":30000000,"target":230,"stress":42.246861281430235},{"source":218,"area":1,"density":0.284,"id":"e480","stiffness":30000000,"target":354,"stress":104.21785231451248},{"source":177,"area":1,"density":0.284,"id":"e481","stiffness":30000000,"target":356,"stress":-77.95168032826584},{"source":228,"area":1,"density":0.284,"id":"e482","stiffness":30000000,"target":357,"stress":87.23930029537733},{"source":229,"area":1,"density":0.284,"id":"e483","stiffness":30000000,"target":359,"stress":-20.08762435089909},{"source":362,"area":1,"density":0.284,"id":"e484","stiffness":30000000,"target":363,"stress":-316.905576802313},{"source":363,"area":1,"density":0.284,"id":"e485","stiffness":30000000,"target":364,"stress":40.507889069712505},{"source":364,"area":1,"density":0.284,"id":"e486","stiffness":30000000,"target":365,"stress":24.46171250294451},{"source":365,"area":1,"density":0.284,"id":"e487","stiffness":30000000,"target":366,"stress":-326.5524254753061},{"source":366,"area":1,"density":0.284,"id":"e488","stiffness":30000000,"target":367,"stress":-331.57871319017414},{"source":367,"area":1,"density":0.284,"id":"e489","stiffness":30000000,"target":368,"stress":32.97328249451361},{"source":368,"area":1,"density":0.284,"id":"e490","stiffness":30000000,"target":369,"stress":20.275903429607727},{"source":369,"area":1,"density":0.284,"id":"e491","stiffness":30000000,"target":362,"stress":-320.2159688230458},{"source":361,"area":1,"density":0.284,"id":"e492","stiffness":30000000,"target":363,"stress":-10.145138239636413},{"source":360,"area":1,"density":0.284,"id":"e493","stiffness":30000000,"target":365,"stress":-492.48504083877543},{"source":308,"area":1,"density":0.284,"id":"e494","stiffness":30000000,"target":367,"stress":-60.3954072863118},{"source":218,"area":1,"density":0.284,"id":"e495","stiffness":30000000,"target":369,"stress":-505.63006768944206},{"source":372,"area":1,"density":0.284,"id":"e496","stiffness":30000000,"target":373,"stress":2.24627982672823},{"source":373,"area":1,"density":0.284,"id":"e497","stiffness":30000000,"target":374,"stress":28.59835068374812},{"source":374,"area":1,"density":0.284,"id":"e498","stiffness":30000000,"target":375,"stress":7.578339517712791},{"source":375,"area":1,"density":0.284,"id":"e499","stiffness":30000000,"target":376,"stress":105.37541714864776},{"source":376,"area":1,"density":0.284,"id":"e500","stiffness":30000000,"target":377,"stress":-1.2920400275050106},{"source":377,"area":1,"density":0.284,"id":"e501","stiffness":30000000,"target":378,"stress":-20.993147310969857},{"source":378,"area":1,"density":0.284,"id":"e502","stiffness":30000000,"target":379,"stress":-45.02675830204697},{"source":379,"area":1,"density":0.284,"id":"e503","stiffness":30000000,"target":372,"stress":136.51191857336607},{"source":370,"area":1,"density":0.284,"id":"e504","stiffness":30000000,"target":377,"stress":-26.561368817307315},{"source":319,"area":1,"density":0.284,"id":"e505","stiffness":30000000,"target":379,"stress":173.3824687120994},{"source":360,"area":1,"density":0.284,"id":"e506","stiffness":30000000,"target":373,"stress":15.389025347655164},{"source":371,"area":1,"density":0.284,"id":"e507","stiffness":30000000,"target":375,"stress":86.49599040009501},{"source":381,"area":1,"density":0.284,"id":"e508","stiffness":30000000,"target":382,"stress":-61.32995483642892},{"source":382,"area":1,"density":0.284,"id":"e509","stiffness":30000000,"target":383,"stress":-242.25860955566895},{"source":383,"area":1,"density":0.284,"id":"e510","stiffness":30000000,"target":384,"stress":233.41149361421392},{"source":384,"area":1,"density":0.284,"id":"e511","stiffness":30000000,"target":385,"stress":-241.46700773730205},{"source":385,"area":1,"density":0.284,"id":"e512","stiffness":30000000,"target":386,"stress":-189.87188918854952},{"source":386,"area":1,"density":0.284,"id":"e513","stiffness":30000000,"target":387,"stress":-196.15965378713744},{"source":387,"area":1,"density":0.284,"id":"e514","stiffness":30000000,"target":388,"stress":192.88039507817072},{"source":388,"area":1,"density":0.284,"id":"e515","stiffness":30000000,"target":381,"stress":-49.17034533171739},{"source":380,"area":1,"density":0.284,"id":"e516","stiffness":30000000,"target":386,"stress":56.076969435196766},{"source":228,"area":1,"density":0.284,"id":"e517","stiffness":30000000,"target":388,"stress":-171.36829786368685},{"source":329,"area":1,"density":0.284,"id":"e518","stiffness":30000000,"target":382,"stress":-111.92852715190745},{"source":370,"area":1,"density":0.284,"id":"e519","stiffness":30000000,"target":384,"stress":-394.0907486788508},{"source":319,"area":1,"density":0.284,"id":"e520","stiffness":30000000,"target":347,"stress":-278.21950878645146},{"source":329,"area":1,"density":0.284,"id":"e521","stiffness":30000000,"target":349,"stress":-235.62051827035552},{"source":177,"area":1,"density":0.284,"id":"e522","stiffness":30000000,"target":351,"stress":-343.5276355996759},{"source":308,"area":1,"density":0.284,"id":"e523","stiffness":30000000,"target":353,"stress":-34.90797967376907},{"source":389,"area":1,"density":0.284,"id":"e524","stiffness":30000000,"target":390,"stress":139.72225800237428},{"source":390,"area":1,"density":0.284,"id":"e525","stiffness":30000000,"target":391,"stress":-360.60336271580076},{"source":391,"area":1,"density":0.284,"id":"e526","stiffness":30000000,"target":392,"stress":-379.85072749300883},{"source":392,"area":1,"density":0.284,"id":"e527","stiffness":30000000,"target":393,"stress":52.71544352013102},{"source":393,"area":1,"density":0.284,"id":"e528","stiffness":30000000,"target":394,"stress":61.72247347296796},{"source":394,"area":1,"density":0.284,"id":"e529","stiffness":30000000,"target":395,"stress":-340.29599416613763},{"source":395,"area":1,"density":0.284,"id":"e530","stiffness":30000000,"target":396,"stress":-343.2533740081377},{"source":396,"area":1,"density":0.284,"id":"e531","stiffness":30000000,"target":389,"stress":134.27141357754203},{"source":361,"area":1,"density":0.284,"id":"e532","stiffness":30000000,"target":394,"stress":-44.06534844184247},{"source":229,"area":1,"density":0.284,"id":"e533","stiffness":30000000,"target":392,"stress":-591.8096617400803},{"source":380,"area":1,"density":0.284,"id":"e534","stiffness":30000000,"target":390,"stress":94.59615730476405},{"source":371,"area":1,"density":0.284,"id":"e535","stiffness":30000000,"target":396,"stress":-388.55227729185447},{"source":273,"area":1,"density":0.284,"id":"e536","stiffness":30000000,"target":397,"stress":-70.93848720907891},{"source":397,"area":1,"density":0.284,"id":"e537","stiffness":30000000,"target":398,"stress":62.5475171136172},{"source":398,"area":1,"density":0.284,"id":"e538","stiffness":30000000,"target":399,"stress":62.58114416921265},{"source":399,"area":1,"density":0.284,"id":"e539","stiffness":30000000,"target":277,"stress":-28.559757508605287},{"source":277,"area":1,"density":0.284,"id":"e540","stiffness":30000000,"target":400,"stress":-43.671234774960624},{"source":400,"area":1,"density":0.284,"id":"e541","stiffness":30000000,"target":401,"stress":16.462789648789794},{"source":401,"area":1,"density":0.284,"id":"e542","stiffness":30000000,"target":402,"stress":25.874923037010202},{"source":402,"area":1,"density":0.284,"id":"e543","stiffness":30000000,"target":273,"stress":-16.16253683156962},{"source":261,"area":1,"density":0.284,"id":"e544","stiffness":30000000,"target":397,"stress":115.78989489794701},{"source":229,"area":1,"density":0.284,"id":"e545","stiffness":30000000,"target":399,"stress":-97.99015924110324},{"source":271,"area":1,"density":0.284,"id":"e546","stiffness":30000000,"target":400,"stress":46.9726931883309},{"source":272,"area":1,"density":0.284,"id":"e547","stiffness":30000000,"target":402,"stress":-48.034730675272826},{"source":405,"area":1,"density":0.284,"id":"e548","stiffness":30000000,"target":406,"stress":-307.0484218319809},{"source":406,"area":1,"density":0.284,"id":"e549","stiffness":30000000,"target":407,"stress":61.21939223063792},{"source":407,"area":1,"density":0.284,"id":"e550","stiffness":30000000,"target":408,"stress":43.14436585387659},{"source":408,"area":1,"density":0.284,"id":"e551","stiffness":30000000,"target":409,"stress":-335.72006175637176},{"source":409,"area":1,"density":0.284,"id":"e552","stiffness":30000000,"target":410,"stress":-345.9751859216158},{"source":410,"area":1,"density":0.284,"id":"e553","stiffness":30000000,"target":411,"stress":38.19688530411234},{"source":411,"area":1,"density":0.284,"id":"e554","stiffness":30000000,"target":412,"stress":48.0094569344559},{"source":412,"area":1,"density":0.284,"id":"e555","stiffness":30000000,"target":405,"stress":-297.3225366749569},{"source":404,"area":1,"density":0.284,"id":"e556","stiffness":30000000,"target":406,"stress":64.68291187734411},{"source":403,"area":1,"density":0.284,"id":"e557","stiffness":30000000,"target":408,"stress":-551.9028017769468},{"source":361,"area":1,"density":0.284,"id":"e558","stiffness":30000000,"target":410,"stress":-26.234341893755843},{"source":261,"area":1,"density":0.284,"id":"e559","stiffness":30000000,"target":412,"stress":-485.41502647419287},{"source":415,"area":1,"density":0.284,"id":"e560","stiffness":30000000,"target":416,"stress":3.3853604432775275},{"source":416,"area":1,"density":0.284,"id":"e561","stiffness":30000000,"target":417,"stress":64.22406117263628},{"source":417,"area":1,"density":0.284,"id":"e562","stiffness":30000000,"target":418,"stress":47.914847731368056},{"source":418,"area":1,"density":0.284,"id":"e563","stiffness":30000000,"target":419,"stress":16.486551978700465},{"source":419,"area":1,"density":0.284,"id":"e564","stiffness":30000000,"target":420,"stress":-40.83878188640768},{"source":420,"area":1,"density":0.284,"id":"e565","stiffness":30000000,"target":421,"stress":-25.044178253280833},{"source":421,"area":1,"density":0.284,"id":"e566","stiffness":30000000,"target":422,"stress":-13.33887261435209},{"source":422,"area":1,"density":0.284,"id":"e567","stiffness":30000000,"target":415,"stress":138.8033180838686},{"source":413,"area":1,"density":0.284,"id":"e568","stiffness":30000000,"target":420,"stress":2.9462896119345467},{"source":371,"area":1,"density":0.284,"id":"e569","stiffness":30000000,"target":422,"stress":133.73236226345787},{"source":403,"area":1,"density":0.284,"id":"e570","stiffness":30000000,"target":416,"stress":48.247308974536224},{"source":414,"area":1,"density":0.284,"id":"e571","stiffness":30000000,"target":418,"stress":-41.30093311034433},{"source":424,"area":1,"density":0.284,"id":"e572","stiffness":30000000,"target":425,"stress":-72.43939415741552},{"source":425,"area":1,"density":0.284,"id":"e573","stiffness":30000000,"target":426,"stress":-327.6001843013104},{"source":426,"area":1,"density":0.284,"id":"e574","stiffness":30000000,"target":427,"stress":221.04406204074948},{"source":427,"area":1,"density":0.284,"id":"e575","stiffness":30000000,"target":428,"stress":-227.31625331268947},{"source":428,"area":1,"density":0.284,"id":"e576","stiffness":30000000,"target":429,"stress":-160.55959906827528},{"source":429,"area":1,"density":0.284,"id":"e577","stiffness":30000000,"target":430,"stress":-129.21875099866833},{"source":430,"area":1,"density":0.284,"id":"e578","stiffness":30000000,"target":431,"stress":228.9009949222439},{"source":431,"area":1,"density":0.284,"id":"e579","stiffness":30000000,"target":424,"stress":-45.987213952495026},{"source":423,"area":1,"density":0.284,"id":"e580","stiffness":30000000,"target":429,"stress":82.9099794571983},{"source":271,"area":1,"density":0.284,"id":"e581","stiffness":30000000,"target":431,"stress":-200.09220735228072},{"source":380,"area":1,"density":0.284,"id":"e582","stiffness":30000000,"target":425,"stress":-172.48671114462107},{"source":413,"area":1,"density":0.284,"id":"e583","stiffness":30000000,"target":427,"stress":-364.5830912037963},{"source":371,"area":1,"density":0.284,"id":"e584","stiffness":30000000,"target":390,"stress":-331.8937171906931},{"source":380,"area":1,"density":0.284,"id":"e585","stiffness":30000000,"target":392,"stress":-195.0195862232076},{"source":229,"area":1,"density":0.284,"id":"e586","stiffness":30000000,"target":394,"stress":-407.943356368785},{"source":361,"area":1,"density":0.284,"id":"e587","stiffness":30000000,"target":396,"stress":32.69939848044295},{"source":432,"area":1,"density":0.284,"id":"e588","stiffness":30000000,"target":433,"stress":-63.3808881735688},{"source":433,"area":1,"density":0.284,"id":"e589","stiffness":30000000,"target":434,"stress":-241.15323326307654},{"source":434,"area":1,"density":0.284,"id":"e590","stiffness":30000000,"target":435,"stress":-247.65940025501854},{"source":435,"area":1,"density":0.284,"id":"e591","stiffness":30000000,"target":436,"stress":133.76279310462235},{"source":436,"area":1,"density":0.284,"id":"e592","stiffness":30000000,"target":437,"stress":58.40053916829587},{"source":437,"area":1,"density":0.284,"id":"e593","stiffness":30000000,"target":438,"stress":-185.8856953543135},{"source":438,"area":1,"density":0.284,"id":"e594","stiffness":30000000,"target":439,"stress":-209.27352246919926},{"source":439,"area":1,"density":0.284,"id":"e595","stiffness":30000000,"target":432,"stress":79.08457232037199},{"source":404,"area":1,"density":0.284,"id":"e596","stiffness":30000000,"target":437,"stress":125.54317841262542},{"source":272,"area":1,"density":0.284,"id":"e597","stiffness":30000000,"target":435,"stress":-363.5908687939219},{"source":423,"area":1,"density":0.284,"id":"e598","stiffness":30000000,"target":433,"stress":43.997688208846064},{"source":414,"area":1,"density":0.284,"id":"e599","stiffness":30000000,"target":439,"stress":-352.9915477149064},{"source":443,"area":1,"density":0.284,"id":"e600","stiffness":30000000,"target":444,"stress":0.0},{"source":444,"area":1,"density":0.284,"id":"e601","stiffness":30000000,"target":445,"stress":0.0},{"source":445,"area":1,"density":0.284,"id":"e602","stiffness":30000000,"target":446,"stress":0.0},{"source":446,"area":1,"density":0.284,"id":"e603","stiffness":30000000,"target":447,"stress":0.0},{"source":447,"area":1,"density":0.284,"id":"e604","stiffness":30000000,"target":448,"stress":0.0},{"source":448,"area":1,"density":0.284,"id":"e605","stiffness":30000000,"target":449,"stress":0.0},{"source":449,"area":1,"density":0.284,"id":"e606","stiffness":30000000,"target":450,"stress":0.0},{"source":450,"area":1,"density":0.284,"id":"e607","stiffness":30000000,"target":443,"stress":0.0},{"source":440,"area":1,"density":0.284,"id":"e608","stiffness":30000000,"target":444,"stress":0.0},{"source":441,"area":1,"density":0.284,"id":"e609","stiffness":30000000,"target":446,"stress":0.0},{"source":0,"area":1,"density":0.284,"id":"e610","stiffness":30000000,"target":448,"stress":0.0},{"source":442,"area":1,"density":0.284,"id":"e611","stiffness":30000000,"target":450,"stress":0.0},{"source":454,"area":1,"density":0.284,"id":"e612","stiffness":30000000,"target":455,"stress":-1015.967886815386},{"source":455,"area":1,"density":0.284,"id":"e613","stiffness":30000000,"target":456,"stress":117.57106459720538},{"source":456,"area":1,"density":0.284,"id":"e614","stiffness":30000000,"target":457,"stress":150.34628929203416},{"source":457,"area":1,"density":0.284,"id":"e615","stiffness":30000000,"target":458,"stress":-923.1109382111545},{"source":458,"area":1,"density":0.284,"id":"e616","stiffness":30000000,"target":459,"stress":-916.8838150424215},{"source":459,"area":1,"density":0.284,"id":"e617","stiffness":30000000,"target":460,"stress":176.95724758737688},{"source":460,"area":1,"density":0.284,"id":"e618","stiffness":30000000,"target":461,"stress":99.76969645566886},{"source":461,"area":1,"density":0.284,"id":"e619","stiffness":30000000,"target":454,"stress":-1010.0804926333667},{"source":453,"area":1,"density":0.284,"id":"e620","stiffness":30000000,"target":455,"stress":-387.01010779154296},{"source":451,"area":1,"density":0.284,"id":"e621","stiffness":30000000,"target":457,"stress":-1208.9144546674322},{"source":452,"area":1,"density":0.284,"id":"e622","stiffness":30000000,"target":459,"stress":-145.5335174104044},{"source":440,"area":1,"density":0.284,"id":"e623","stiffness":30000000,"target":461,"stress":-1395.0123537553281},{"source":464,"area":1,"density":0.284,"id":"e624","stiffness":30000000,"target":465,"stress":0.5332962383128504},{"source":465,"area":1,"density":0.284,"id":"e625","stiffness":30000000,"target":466,"stress":59.26993404128104},{"source":466,"area":1,"density":0.284,"id":"e626","stiffness":30000000,"target":467,"stress":-22.51791214977642},{"source":467,"area":1,"density":0.284,"id":"e627","stiffness":30000000,"target":468,"stress":50.09722099443411},{"source":468,"area":1,"density":0.284,"id":"e628","stiffness":30000000,"target":469,"stress":29.531044803449802},{"source":469,"area":1,"density":0.284,"id":"e629","stiffness":30000000,"target":470,"stress":19.816088947722807},{"source":470,"area":1,"density":0.284,"id":"e630","stiffness":30000000,"target":471,"stress":-16.495996289607618},{"source":471,"area":1,"density":0.284,"id":"e631","stiffness":30000000,"target":464,"stress":-12.033281118670274},{"source":12,"area":1,"density":0.284,"id":"e632","stiffness":30000000,"target":469,"stress":-6.632160838862589},{"source":462,"area":1,"density":0.284,"id":"e633","stiffness":30000000,"target":471,"stress":12.185498010478096},{"source":451,"area":1,"density":0.284,"id":"e634","stiffness":30000000,"target":465,"stress":62.40293744084978},{"source":463,"area":1,"density":0.284,"id":"e635","stiffness":30000000,"target":467,"stress":80.74768770902892},{"source":14,"area":1,"density":0.284,"id":"e636","stiffness":30000000,"target":22,"stress":-483.20389039924635},{"source":0,"area":1,"density":0.284,"id":"e637","stiffness":30000000,"target":20,"stress":-1116.4822111564642},{"source":13,"area":1,"density":0.284,"id":"e638","stiffness":30000000,"target":18,"stress":-316.27550498471385},{"source":12,"area":1,"density":0.284,"id":"e639","stiffness":30000000,"target":16,"stress":-1320.6040042735153},{"source":472,"area":1,"density":0.284,"id":"e640","stiffness":30000000,"target":473,"stress":170.0171530662046},{"source":473,"area":1,"density":0.284,"id":"e641","stiffness":30000000,"target":474,"stress":-659.306774226506},{"source":474,"area":1,"density":0.284,"id":"e642","stiffness":30000000,"target":475,"stress":-670.5013419689295},{"source":475,"area":1,"density":0.284,"id":"e643","stiffness":30000000,"target":476,"stress":-235.7632507160572},{"source":476,"area":1,"density":0.284,"id":"e644","stiffness":30000000,"target":477,"stress":136.3555837184979},{"source":477,"area":1,"density":0.284,"id":"e645","stiffness":30000000,"target":478,"stress":-562.6969680699482},{"source":478,"area":1,"density":0.284,"id":"e646","stiffness":30000000,"target":479,"stress":-562.5531732904476},{"source":479,"area":1,"density":0.284,"id":"e647","stiffness":30000000,"target":472,"stress":-164.64428400640054},{"source":462,"area":1,"density":0.284,"id":"e648","stiffness":30000000,"target":477,"stress":-876.3773166078508},{"source":13,"area":1,"density":0.284,"id":"e649","stiffness":30000000,"target":479,"stress":98.6216432325463},{"source":441,"area":1,"density":0.284,"id":"e650","stiffness":30000000,"target":473,"stress":-951.0095139967807},{"source":452,"area":1,"density":0.284,"id":"e651","stiffness":30000000,"target":475,"stress":98.61004543161351},{"source":480,"area":1,"density":0.284,"id":"e652","stiffness":30000000,"target":481,"stress":33.154283266164555},{"source":481,"area":1,"density":0.284,"id":"e653","stiffness":30000000,"target":482,"stress":-972.3269055348627},{"source":482,"area":1,"density":0.284,"id":"e654","stiffness":30000000,"target":483,"stress":-985.2907041025306},{"source":483,"area":1,"density":0.284,"id":"e655","stiffness":30000000,"target":484,"stress":11.813943311790123},{"source":484,"area":1,"density":0.284,"id":"e656","stiffness":30000000,"target":485,"stress":32.70911097452746},{"source":485,"area":1,"density":0.284,"id":"e657","stiffness":30000000,"target":486,"stress":-982.9499018644194},{"source":486,"area":1,"density":0.284,"id":"e658","stiffness":30000000,"target":487,"stress":-1006.0779182661721},{"source":487,"area":1,"density":0.284,"id":"e659","stiffness":30000000,"target":480,"stress":18.421407437067305},{"source":453,"area":1,"density":0.284,"id":"e660","stiffness":30000000,"target":485,"stress":-354.205256801284},{"source":442,"area":1,"density":0.284,"id":"e661","stiffness":30000000,"target":483,"stress":-1327.721501720019},{"source":14,"area":1,"density":0.284,"id":"e662","stiffness":30000000,"target":481,"stress":-348.91421549178455},{"source":463,"area":1,"density":0.284,"id":"e663","stiffness":30000000,"target":487,"stress":-1375.9107347787346},{"source":490,"area":1,"density":0.284,"id":"e664","stiffness":30000000,"target":491,"stress":0.0},{"source":491,"area":1,"density":0.284,"id":"e665","stiffness":30000000,"target":492,"stress":0.0},{"source":492,"area":1,"density":0.284,"id":"e666","stiffness":30000000,"target":493,"stress":0.0},{"source":493,"area":1,"density":0.284,"id":"e667","stiffness":30000000,"target":494,"stress":0.0},{"source":494,"area":1,"density":0.284,"id":"e668","stiffness":30000000,"target":495,"stress":0.0},{"source":495,"area":1,"density":0.284,"id":"e669","stiffness":30000000,"target":496,"stress":0.0},{"source":496,"area":1,"density":0.284,"id":"e670","stiffness":30000000,"target":497,"stress":0.0},{"source":497,"area":1,"density":0.284,"id":"e671","stiffness":30000000,"target":490,"stress":0.0},{"source":488,"area":1,"density":0.284,"id":"e672","stiffness":30000000,"target":491,"stress":0.0},{"source":442,"area":1,"density":0.284,"id":"e673","stiffness":30000000,"target":493,"stress":0.0},{"source":60,"area":1,"density":0.284,"id":"e674","stiffness":30000000,"target":495,"stress":0.0},{"source":489,"area":1,"density":0.284,"id":"e675","stiffness":30000000,"target":497,"stress":0.0},{"source":500,"area":1,"density":0.284,"id":"e676","stiffness":30000000,"target":501,"stress":-984.4376079381867},{"source":501,"area":1,"density":0.284,"id":"e677","stiffness":30000000,"target":502,"stress":47.800555959751165},{"source":502,"area":1,"density":0.284,"id":"e678","stiffness":30000000,"target":503,"stress":65.24052407195197},{"source":503,"area":1,"density":0.284,"id":"e679","stiffness":30000000,"target":504,"stress":-964.1848476491557},{"source":504,"area":1,"density":0.284,"id":"e680","stiffness":30000000,"target":505,"stress":-961.0073343565534},{"source":505,"area":1,"density":0.284,"id":"e681","stiffness":30000000,"target":506,"stress":39.94333618614944},{"source":506,"area":1,"density":0.284,"id":"e682","stiffness":30000000,"target":507,"stress":65.78002122464973},{"source":507,"area":1,"density":0.284,"id":"e683","stiffness":30000000,"target":500,"stress":-977.2817947134788},{"source":499,"area":1,"density":0.284,"id":"e684","stiffness":30000000,"target":501,"stress":-442.24060724312676},{"source":498,"area":1,"density":0.284,"id":"e685","stiffness":30000000,"target":503,"stress":-1274.1600560017355},{"source":453,"area":1,"density":0.284,"id":"e686","stiffness":30000000,"target":505,"stress":-421.31005035641454},{"source":488,"area":1,"density":0.284,"id":"e687","stiffness":30000000,"target":507,"stress":-1277.367020618579},{"source":509,"area":1,"density":0.284,"id":"e688","stiffness":30000000,"target":510,"stress":58.12071386565931},{"source":510,"area":1,"density":0.284,"id":"e689","stiffness":30000000,"target":511,"stress":62.51931776535918},{"source":511,"area":1,"density":0.284,"id":"e690","stiffness":30000000,"target":512,"stress":-23.704670804205048},{"source":512,"area":1,"density":0.284,"id":"e691","stiffness":30000000,"target":513,"stress":53.32470948455598},{"source":513,"area":1,"density":0.284,"id":"e692","stiffness":30000000,"target":514,"stress":17.04237581149444},{"source":514,"area":1,"density":0.284,"id":"e693","stiffness":30000000,"target":515,"stress":70.07040672474436},{"source":515,"area":1,"density":0.284,"id":"e694","stiffness":30000000,"target":516,"stress":-19.41651368881288},{"source":516,"area":1,"density":0.284,"id":"e695","stiffness":30000000,"target":509,"stress":59.259728635882745},{"source":71,"area":1,"density":0.284,"id":"e696","stiffness":30000000,"target":514,"stress":56.78165493685222},{"source":463,"area":1,"density":0.284,"id":"e697","stiffness":30000000,"target":516,"stress":85.11105685190063},{"source":498,"area":1,"density":0.284,"id":"e698","stiffness":30000000,"target":510,"stress":70.76018686248852},{"source":508,"area":1,"density":0.284,"id":"e699","stiffness":30000000,"target":512,"stress":85.20798439306114},{"source":72,"area":1,"density":0.284,"id":"e700","stiffness":30000000,"target":80,"stress":-426.1417843514871},{"source":60,"area":1,"density":0.284,"id":"e701","stiffness":30000000,"target":78,"stress":-1274.0059264325243},{"source":14,"area":1,"density":0.284,"id":"e702","stiffness":30000000,"target":76,"stress":-450.14161895527985},{"source":71,"area":1,"density":0.284,"id":"e703","stiffness":30000000,"target":74,"stress":-1277.2785095031275},{"source":463,"area":1,"density":0.284,"id":"e704","stiffness":30000000,"target":481,"stress":-1243.2829438888475},{"source":14,"area":1,"density":0.284,"id":"e705","stiffness":30000000,"target":483,"stress":-451.58496587808787},{"source":442,"area":1,"density":0.284,"id":"e706","stiffness":30000000,"target":485,"stress":-1252.8348488374263},{"source":453,"area":1,"density":0.284,"id":"e707","stiffness":30000000,"target":487,"stress":-457.3922358430235},{"source":517,"area":1,"density":0.284,"id":"e708","stiffness":30000000,"target":518,"stress":18.892021791922527},{"source":518,"area":1,"density":0.284,"id":"e709","stiffness":30000000,"target":519,"stress":-995.4579918721039},{"source":519,"area":1,"density":0.284,"id":"e710","stiffness":30000000,"target":520,"stress":-978.8071392109212},{"source":520,"area":1,"density":0.284,"id":"e711","stiffness":30000000,"target":521,"stress":27.261693933246633},{"source":521,"area":1,"density":0.284,"id":"e712","stiffness":30000000,"target":522,"stress":12.950919198299141},{"source":522,"area":1,"density":0.284,"id":"e713","stiffness":30000000,"target":523,"stress":-980.7096191593242},{"source":523,"area":1,"density":0.284,"id":"e714","stiffness":30000000,"target":524,"stress":-972.5135488695557},{"source":524,"area":1,"density":0.284,"id":"e715","stiffness":30000000,"target":517,"stress":26.73564817372405},{"source":499,"area":1,"density":0.284,"id":"e716","stiffness":30000000,"target":522,"stress":-437.10003615635804},{"source":489,"area":1,"density":0.284,"id":"e717","stiffness":30000000,"target":520,"stress":-1260.6470851193342},{"source":72,"area":1,"density":0.284,"id":"e718","stiffness":30000000,"target":518,"stress":-436.03708767746656},{"source":508,"area":1,"density":0.284,"id":"e719","stiffness":30000000,"target":524,"stress":-1259.458804856118},{"source":527,"area":1,"density":0.284,"id":"e720","stiffness":30000000,"target":528,"stress":0.0},{"source":528,"area":1,"density":0.284,"id":"e721","stiffness":30000000,"target":529,"stress":0.0},{"source":529,"area":1,"density":0.284,"id":"e722","stiffness":30000000,"target":530,"stress":0.0},{"source":530,"area":1,"density":0.284,"id":"e723","stiffness":30000000,"target":531,"stress":0.0},{"source":531,"area":1,"density":0.284,"id":"e724","stiffness":30000000,"target":532,"stress":0.0},{"source":532,"area":1,"density":0.284,"id":"e725","stiffness":30000000,"target":533,"stress":0.0},{"source":533,"area":1,"density":0.284,"id":"e726","stiffness":30000000,"target":534,"stress":0.0},{"source":534,"area":1,"density":0.284,"id":"e727","stiffness":30000000,"target":527,"stress":0.0},{"source":525,"area":1,"density":0.284,"id":"e728","stiffness":30000000,"target":528,"stress":0.0},{"source":489,"area":1,"density":0.284,"id":"e729","stiffness":30000000,"target":530,"stress":0.0},{"source":108,"area":1,"density":0.284,"id":"e730","stiffness":30000000,"target":532,"stress":0.0},{"source":526,"area":1,"density":0.284,"id":"e731","stiffness":30000000,"target":534,"stress":0.0},{"source":537,"area":1,"density":0.284,"id":"e732","stiffness":30000000,"target":538,"stress":-953.4252066627972},{"source":538,"area":1,"density":0.284,"id":"e733","stiffness":30000000,"target":539,"stress":145.7252005703657},{"source":539,"area":1,"density":0.284,"id":"e734","stiffness":30000000,"target":540,"stress":121.55989641151088},{"source":540,"area":1,"density":0.284,"id":"e735","stiffness":30000000,"target":541,"stress":-1012.086031496051},{"source":541,"area":1,"density":0.284,"id":"e736","stiffness":30000000,"target":542,"stress":-1005.2613060562725},{"source":542,"area":1,"density":0.284,"id":"e737","stiffness":30000000,"target":543,"stress":82.02480534702049},{"source":543,"area":1,"density":0.284,"id":"e738","stiffness":30000000,"target":544,"stress":192.4856916458133},{"source":544,"area":1,"density":0.284,"id":"e739","stiffness":30000000,"target":537,"stress":-952.5634653060882},{"source":536,"area":1,"density":0.284,"id":"e740","stiffness":30000000,"target":538,"stress":-296.8882111562405},{"source":535,"area":1,"density":0.284,"id":"e741","stiffness":30000000,"target":540,"stress":-1356.251109893877},{"source":499,"area":1,"density":0.284,"id":"e742","stiffness":30000000,"target":542,"stress":-461.67005091236234},{"source":525,"area":1,"density":0.284,"id":"e743","stiffness":30000000,"target":544,"stress":-1149.544793945351},{"source":546,"area":1,"density":0.284,"id":"e744","stiffness":30000000,"target":547,"stress":19.924136118249304},{"source":547,"area":1,"density":0.284,"id":"e745","stiffness":30000000,"target":548,"stress":26.326609612031877},{"source":548,"area":1,"density":0.284,"id":"e746","stiffness":30000000,"target":549,"stress":-9.473092080178528},{"source":549,"area":1,"density":0.284,"id":"e747","stiffness":30000000,"target":550,"stress":-1.3223082782976112},{"source":550,"area":1,"density":0.284,"id":"e748","stiffness":30000000,"target":551,"stress":4.624094535333669},{"source":551,"area":1,"density":0.284,"id":"e749","stiffness":30000000,"target":552,"stress":62.76704875870529},{"source":552,"area":1,"density":0.284,"id":"e750","stiffness":30000000,"target":553,"stress":50.60491516356607},{"source":553,"area":1,"density":0.284,"id":"e751","stiffness":30000000,"target":546,"stress":27.970950579940588},{"source":119,"area":1,"density":0.284,"id":"e752","stiffness":30000000,"target":551,"stress":63.21644739972766},{"source":508,"area":1,"density":0.284,"id":"e753","stiffness":30000000,"target":553,"stress":103.56835347464721},{"source":535,"area":1,"density":0.284,"id":"e754","stiffness":30000000,"target":547,"stress":-4.000646070863653},{"source":545,"area":1,"density":0.284,"id":"e755","stiffness":30000000,"target":549,"stress":11.93416424001276},{"source":120,"area":1,"density":0.284,"id":"e756","stiffness":30000000,"target":128,"stress":-150.78356072854186},{"source":108,"area":1,"density":0.284,"id":"e757","stiffness":30000000,"target":126,"stress":-1378.3082065254953},{"source":72,"area":1,"density":0.284,"id":"e758","stiffness":30000000,"target":124,"stress":-396.5579650788556},{"source":119,"area":1,"density":0.284,"id":"e759","stiffness":30000000,"target":122,"stress":-1196.4461786627112},{"source":508,"area":1,"density":0.284,"id":"e760","stiffness":30000000,"target":518,"stress":-1346.3113808687551},{"source":72,"area":1,"density":0.284,"id":"e761","stiffness":30000000,"target":520,"stress":-370.8411541992917},{"source":489,"area":1,"density":0.284,"id":"e762","stiffness":30000000,"target":522,"stress":-1312.4094776406191},{"source":499,"area":1,"density":0.284,"id":"e763","stiffness":30000000,"target":524,"stress":-373.29940102798935},{"source":554,"area":1,"density":0.284,"id":"e764","stiffness":30000000,"target":555,"stress":-231.928784714086},{"source":555,"area":1,"density":0.284,"id":"e765","stiffness":30000000,"target":556,"stress":-656.5582727823703},{"source":556,"area":1,"density":0.284,"id":"e766","stiffness":30000000,"target":557,"stress":-652.9091561664295},{"source":557,"area":1,"density":0.284,"id":"e767","stiffness":30000000,"target":558,"stress":136.92740246031326},{"source":558,"area":1,"density":0.284,"id":"e768","stiffness":30000000,"target":559,"stress":-203.07806605262334},{"source":559,"area":1,"density":0.284,"id":"e769","stiffness":30000000,"target":560,"stress":-555.1144759476276},{"source":560,"area":1,"density":0.284,"id":"e770","stiffness":30000000,"target":561,"stress":-563.1796523639639},{"source":561,"area":1,"density":0.284,"id":"e771","stiffness":30000000,"target":554,"stress":131.62263779713425},{"source":536,"area":1,"density":0.284,"id":"e772","stiffness":30000000,"target":559,"stress":51.9859255861031},{"source":526,"area":1,"density":0.284,"id":"e773","stiffness":30000000,"target":557,"stress":-931.48709001038},{"source":120,"area":1,"density":0.284,"id":"e774","stiffness":30000000,"target":555,"stress":90.15188310353076},{"source":545,"area":1,"density":0.284,"id":"e775","stiffness":30000000,"target":561,"stress":-869.531756968237},{"source":562,"area":1,"density":0.284,"id":"e776","stiffness":30000000,"target":563,"stress":3.3431360946930395},{"source":563,"area":1,"density":0.284,"id":"e777","stiffness":30000000,"target":470,"stress":34.480161195561834},{"source":470,"area":1,"density":0.284,"id":"e778","stiffness":30000000,"target":564,"stress":10.490812780183889},{"source":564,"area":1,"density":0.284,"id":"e779","stiffness":30000000,"target":565,"stress":-4.614141948248767},{"source":565,"area":1,"density":0.284,"id":"e780","stiffness":30000000,"target":566,"stress":-14.618614870010246},{"source":566,"area":1,"density":0.284,"id":"e781","stiffness":30000000,"target":466,"stress":72.27453478987252},{"source":466,"area":1,"density":0.284,"id":"e782","stiffness":30000000,"target":567,"stress":5.8954404149362745},{"source":567,"area":1,"density":0.284,"id":"e783","stiffness":30000000,"target":562,"stress":51.97420832672733},{"source":451,"area":1,"density":0.284,"id":"e784","stiffness":30000000,"target":563,"stress":27.391639986851047},{"source":462,"area":1,"density":0.284,"id":"e785","stiffness":30000000,"target":564,"stress":-17.946517301779433},{"source":12,"area":1,"density":0.284,"id":"e786","stiffness":30000000,"target":566,"stress":86.9314724151031},{"source":463,"area":1,"density":0.284,"id":"e787","stiffness":30000000,"target":567,"stress":40.6657003917327},{"source":571,"area":1,"density":0.284,"id":"e788","stiffness":30000000,"target":572,"stress":-673.0718497307521},{"source":572,"area":1,"density":0.284,"id":"e789","stiffness":30000000,"target":573,"stress":95.28650687657722},{"source":573,"area":1,"density":0.284,"id":"e790","stiffness":30000000,"target":574,"stress":129.9637431582964},{"source":574,"area":1,"density":0.284,"id":"e791","stiffness":30000000,"target":575,"stress":-642.5759208102573},{"source":575,"area":1,"density":0.284,"id":"e792","stiffness":30000000,"target":576,"stress":-638.2355126639778},{"source":576,"area":1,"density":0.284,"id":"e793","stiffness":30000000,"target":577,"stress":109.18481358404914},{"source":577,"area":1,"density":0.284,"id":"e794","stiffness":30000000,"target":578,"stress":84.16086976555508},{"source":578,"area":1,"density":0.284,"id":"e795","stiffness":30000000,"target":571,"stress":-680.1790733911295},{"source":570,"area":1,"density":0.284,"id":"e796","stiffness":30000000,"target":572,"stress":-277.0853250986459},{"source":568,"area":1,"density":0.284,"id":"e797","stiffness":30000000,"target":574,"stress":-751.6221678316087},{"source":569,"area":1,"density":0.284,"id":"e798","stiffness":30000000,"target":576,"stress":-234.78531508564083},{"source":451,"area":1,"density":0.284,"id":"e799","stiffness":30000000,"target":578,"stress":-885.3539623530793},{"source":581,"area":1,"density":0.284,"id":"e800","stiffness":30000000,"target":582,"stress":8.517711412438969},{"source":582,"area":1,"density":0.284,"id":"e801","stiffness":30000000,"target":583,"stress":53.66178073487974},{"source":583,"area":1,"density":0.284,"id":"e802","stiffness":30000000,"target":584,"stress":-29.273437574743475},{"source":584,"area":1,"density":0.284,"id":"e803","stiffness":30000000,"target":585,"stress":21.594141271642087},{"source":585,"area":1,"density":0.284,"id":"e804","stiffness":30000000,"target":586,"stress":40.85401088257292},{"source":586,"area":1,"density":0.284,"id":"e805","stiffness":30000000,"target":587,"stress":19.81204859504634},{"source":587,"area":1,"density":0.284,"id":"e806","stiffness":30000000,"target":588,"stress":-22.986153100439328},{"source":588,"area":1,"density":0.284,"id":"e807","stiffness":30000000,"target":581,"stress":-27.839292837364646},{"source":164,"area":1,"density":0.284,"id":"e808","stiffness":30000000,"target":586,"stress":-12.27246940356549},{"source":579,"area":1,"density":0.284,"id":"e809","stiffness":30000000,"target":588,"stress":9.403273337326373},{"source":568,"area":1,"density":0.284,"id":"e810","stiffness":30000000,"target":582,"stress":50.65785028089433},{"source":580,"area":1,"density":0.284,"id":"e811","stiffness":30000000,"target":584,"stress":68.50827893629123},{"source":166,"area":1,"density":0.284,"id":"e812","stiffness":30000000,"target":174,"stress":-309.03174654646483},{"source":12,"area":1,"density":0.284,"id":"e813","stiffness":30000000,"target":172,"stress":-879.4789742102519},{"source":165,"area":1,"density":0.284,"id":"e814","stiffness":30000000,"target":170,"stress":-112.49061752512235},{"source":164,"area":1,"density":0.284,"id":"e815","stiffness":30000000,"target":168,"stress":-911.7619138683322},{"source":589,"area":1,"density":0.284,"id":"e816","stiffness":30000000,"target":590,"stress":75.32854294975553},{"source":590,"area":1,"density":0.284,"id":"e817","stiffness":30000000,"target":591,"stress":-343.9490380795137},{"source":591,"area":1,"density":0.284,"id":"e818","stiffness":30000000,"target":592,"stress":-338.9281591733689},{"source":592,"area":1,"density":0.284,"id":"e819","stiffness":30000000,"target":593,"stress":-134.76639145816},{"source":593,"area":1,"density":0.284,"id":"e820","stiffness":30000000,"target":594,"stress":102.54578167277529},{"source":594,"area":1,"density":0.284,"id":"e821","stiffness":30000000,"target":595,"stress":-377.30902081595565},{"source":595,"area":1,"density":0.284,"id":"e822","stiffness":30000000,"target":596,"stress":-382.86276164864836},{"source":596,"area":1,"density":0.284,"id":"e823","stiffness":30000000,"target":589,"stress":-173.88025053204805},{"source":579,"area":1,"density":0.284,"id":"e824","stiffness":30000000,"target":594,"stress":-583.2888167041338},{"source":165,"area":1,"density":0.284,"id":"e825","stiffness":30000000,"target":596,"stress":10.008058492751143},{"source":462,"area":1,"density":0.284,"id":"e826","stiffness":30000000,"target":590,"stress":-549.13866092509},{"source":569,"area":1,"density":0.284,"id":"e827","stiffness":30000000,"target":592,"stress":13.53228970720967},{"source":597,"area":1,"density":0.284,"id":"e828","stiffness":30000000,"target":598,"stress":74.6037737602467},{"source":598,"area":1,"density":0.284,"id":"e829","stiffness":30000000,"target":599,"stress":-663.9486428948552},{"source":599,"area":1,"density":0.284,"id":"e830","stiffness":30000000,"target":600,"stress":-691.2560467648201},{"source":600,"area":1,"density":0.284,"id":"e831","stiffness":30000000,"target":601,"stress":26.875376372015904},{"source":601,"area":1,"density":0.284,"id":"e832","stiffness":30000000,"target":602,"stress":41.24008724964558},{"source":602,"area":1,"density":0.284,"id":"e833","stiffness":30000000,"target":603,"stress":-665.8921080718235},{"source":603,"area":1,"density":0.284,"id":"e834","stiffness":30000000,"target":604,"stress":-676.708265545564},{"source":604,"area":1,"density":0.284,"id":"e835","stiffness":30000000,"target":597,"stress":56.93721065052414},{"source":570,"area":1,"density":0.284,"id":"e836","stiffness":30000000,"target":602,"stress":-214.54622707515148},{"source":463,"area":1,"density":0.284,"id":"e837","stiffness":30000000,"target":600,"stress":-980.8103389502095},{"source":166,"area":1,"density":0.284,"id":"e838","stiffness":30000000,"target":598,"stress":-134.32206685315415},{"source":580,"area":1,"density":0.284,"id":"e839","stiffness":30000000,"target":604,"stress":-890.8899334306492},{"source":509,"area":1,"density":0.284,"id":"e840","stiffness":30000000,"target":605,"stress":-11.321606700934334},{"source":605,"area":1,"density":0.284,"id":"e841","stiffness":30000000,"target":515,"stress":76.40703561183643},{"source":515,"area":1,"density":0.284,"id":"e842","stiffness":30000000,"target":606,"stress":4.5627159823572585},{"source":606,"area":1,"density":0.284,"id":"e843","stiffness":30000000,"target":513,"stress":59.00830362784906},{"source":513,"area":1,"density":0.284,"id":"e844","stiffness":30000000,"target":607,"stress":-14.944453529009223},{"source":607,"area":1,"density":0.284,"id":"e845","stiffness":30000000,"target":511,"stress":70.80867511656902},{"source":498,"area":1,"density":0.284,"id":"e846","stiffness":30000000,"target":605,"stress":84.63213908299957},{"source":463,"area":1,"density":0.284,"id":"e847","stiffness":30000000,"target":606,"stress":49.16866087491042},{"source":71,"area":1,"density":0.284,"id":"e848","stiffness":30000000,"target":607,"stress":80.808130302212},{"source":508,"area":1,"density":0.284,"id":"e849","stiffness":30000000,"target":510,"stress":64.78188718756361},{"source":610,"area":1,"density":0.284,"id":"e850","stiffness":30000000,"target":611,"stress":-661.9112970358685},{"source":611,"area":1,"density":0.284,"id":"e851","stiffness":30000000,"target":612,"stress":59.676806121564205},{"source":612,"area":1,"density":0.284,"id":"e852","stiffness":30000000,"target":613,"stress":78.21419168229266},{"source":613,"area":1,"density":0.284,"id":"e853","stiffness":30000000,"target":614,"stress":-660.8491281399798},{"source":614,"area":1,"density":0.284,"id":"e854","stiffness":30000000,"target":615,"stress":-667.9281895762521},{"source":615,"area":1,"density":0.284,"id":"e855","stiffness":30000000,"target":616,"stress":54.39500941628784},{"source":616,"area":1,"density":0.284,"id":"e856","stiffness":30000000,"target":617,"stress":69.06170729373503},{"source":617,"area":1,"density":0.284,"id":"e857","stiffness":30000000,"target":610,"stress":-664.5751226878854},{"source":609,"area":1,"density":0.284,"id":"e858","stiffness":30000000,"target":611,"stress":-268.18913876130506},{"source":608,"area":1,"density":0.284,"id":"e859","stiffness":30000000,"target":613,"stress":-823.8996479654696},{"source":570,"area":1,"density":0.284,"id":"e860","stiffness":30000000,"target":615,"stress":-310.11941283195284},{"source":498,"area":1,"density":0.284,"id":"e861","stiffness":30000000,"target":617,"stress":-863.7116437796124},{"source":619,"area":1,"density":0.284,"id":"e862","stiffness":30000000,"target":620,"stress":55.149208805332016},{"source":620,"area":1,"density":0.284,"id":"e863","stiffness":30000000,"target":621,"stress":73.63146582733913},{"source":621,"area":1,"density":0.284,"id":"e864","stiffness":30000000,"target":622,"stress":-36.19825546575632},{"source":622,"area":1,"density":0.284,"id":"e865","stiffness":30000000,"target":623,"stress":37.819887235852654},{"source":623,"area":1,"density":0.284,"id":"e866","stiffness":30000000,"target":624,"stress":32.86510950969588},{"source":624,"area":1,"density":0.284,"id":"e867","stiffness":30000000,"target":625,"stress":59.56933000547803},{"source":625,"area":1,"density":0.284,"id":"e868","stiffness":30000000,"target":626,"stress":-30.55142613063839},{"source":626,"area":1,"density":0.284,"id":"e869","stiffness":30000000,"target":619,"stress":44.01531889707088},{"source":218,"area":1,"density":0.284,"id":"e870","stiffness":30000000,"target":624,"stress":35.00569778280038},{"source":580,"area":1,"density":0.284,"id":"e871","stiffness":30000000,"target":626,"stress":86.22943435090338},{"source":608,"area":1,"density":0.284,"id":"e872","stiffness":30000000,"target":620,"stress":48.46973372578326},{"source":618,"area":1,"density":0.284,"id":"e873","stiffness":30000000,"target":622,"stress":88.12993391557421},{"source":219,"area":1,"density":0.284,"id":"e874","stiffness":30000000,"target":227,"stress":-319.36857524638725},{"source":71,"area":1,"density":0.284,"id":"e875","stiffness":30000000,"target":225,"stress":-858.5356685102364},{"source":166,"area":1,"density":0.284,"id":"e876","stiffness":30000000,"target":223,"stress":-285.40066518108654},{"source":218,"area":1,"density":0.284,"id":"e877","stiffness":30000000,"target":221,"stress":-818.5401196240105},{"source":580,"area":1,"density":0.284,"id":"e878","stiffness":30000000,"target":598,"stress":-777.8056380559836},{"source":166,"area":1,"density":0.284,"id":"e879","stiffness":30000000,"target":600,"stress":-327.98277718541954},{"source":463,"area":1,"density":0.284,"id":"e880","stiffness":30000000,"target":602,"stress":-845.8284794319424},{"source":570,"area":1,"density":0.284,"id":"e881","stiffness":30000000,"target":604,"stress":-247.1884103239281},{"source":627,"area":1,"density":0.284,"id":"e882","stiffness":30000000,"target":628,"stress":58.40729454789684},{"source":628,"area":1,"density":0.284,"id":"e883","stiffness":30000000,"target":629,"stress":-672.5497664477267},{"source":629,"area":1,"density":0.284,"id":"e884","stiffness":30000000,"target":630,"stress":-665.2336070596729},{"source":630,"area":1,"density":0.284,"id":"e885","stiffness":30000000,"target":631,"stress":43.007564166035},{"source":631,"area":1,"density":0.284,"id":"e886","stiffness":30000000,"target":632,"stress":29.59997892645338},{"source":632,"area":1,"density":0.284,"id":"e887","stiffness":30000000,"target":633,"stress":-685.9219528106488},{"source":633,"area":1,"density":0.284,"id":"e888","stiffness":30000000,"target":634,"stress":-660.499739430777},{"source":634,"area":1,"density":0.284,"id":"e889","stiffness":30000000,"target":627,"stress":72.09894691975487},{"source":609,"area":1,"density":0.284,"id":"e890","stiffness":30000000,"target":632,"stress":-312.14796118154294},{"source":508,"area":1,"density":0.284,"id":"e891","stiffness":30000000,"target":630,"stress":-855.556250132249},{"source":219,"area":1,"density":0.284,"id":"e892","stiffness":30000000,"target":628,"stress":-231.48143388198892},{"source":618,"area":1,"density":0.284,"id":"e893","stiffness":30000000,"target":634,"stress":-785.3413289816742},{"source":552,"area":1,"density":0.284,"id":"e894","stiffness":30000000,"target":635,"stress":3.028915648830434},{"source":635,"area":1,"density":0.284,"id":"e895","stiffness":30000000,"target":550,"stress":51.77801144177969},{"source":550,"area":1,"density":0.284,"id":"e896","stiffness":30000000,"target":636,"stress":-14.21530772968926},{"source":636,"area":1,"density":0.284,"id":"e897","stiffness":30000000,"target":548,"stress":26.14459415061472},{"source":535,"area":1,"density":0.284,"id":"e898","stiffness":30000000,"target":553,"stress":113.7897808197433},{"source":508,"area":1,"density":0.284,"id":"e899","stiffness":30000000,"target":635,"stress":43.50776702857305},{"source":119,"area":1,"density":0.284,"id":"e900","stiffness":30000000,"target":636,"stress":31.067793923418023},{"source":545,"area":1,"density":0.284,"id":"e901","stiffness":30000000,"target":547,"stress":-15.207058359298133},{"source":639,"area":1,"density":0.284,"id":"e902","stiffness":30000000,"target":640,"stress":-641.0813455396689},{"source":640,"area":1,"density":0.284,"id":"e903","stiffness":30000000,"target":641,"stress":128.00845537558382},{"source":641,"area":1,"density":0.284,"id":"e904","stiffness":30000000,"target":642,"stress":89.76844082321858},{"source":642,"area":1,"density":0.284,"id":"e905","stiffness":30000000,"target":643,"stress":-686.7191424456455},{"source":643,"area":1,"density":0.284,"id":"e906","stiffness":30000000,"target":644,"stress":-684.2510043239896},{"source":644,"area":1,"density":0.284,"id":"e907","stiffness":30000000,"target":645,"stress":90.14293332888437},{"source":645,"area":1,"density":0.284,"id":"e908","stiffness":30000000,"target":646,"stress":111.68890625299058},{"source":646,"area":1,"density":0.284,"id":"e909","stiffness":30000000,"target":639,"stress":-646.8703888768763},{"source":638,"area":1,"density":0.284,"id":"e910","stiffness":30000000,"target":640,"stress":-119.25413888752001},{"source":637,"area":1,"density":0.284,"id":"e911","stiffness":30000000,"target":642,"stress":-927.9585277390837},{"source":609,"area":1,"density":0.284,"id":"e912","stiffness":30000000,"target":644,"stress":-251.20231999196318},{"source":535,"area":1,"density":0.284,"id":"e913","stiffness":30000000,"target":646,"stress":-842.533583166421},{"source":648,"area":1,"density":0.284,"id":"e914","stiffness":30000000,"target":649,"stress":34.10344137254538},{"source":649,"area":1,"density":0.284,"id":"e915","stiffness":30000000,"target":650,"stress":43.07064634025368},{"source":650,"area":1,"density":0.284,"id":"e916","stiffness":30000000,"target":651,"stress":-22.52823311350124},{"source":651,"area":1,"density":0.284,"id":"e917","stiffness":30000000,"target":652,"stress":-10.520155115622739},{"source":652,"area":1,"density":0.284,"id":"e918","stiffness":30000000,"target":653,"stress":19.471317118412077},{"source":653,"area":1,"density":0.284,"id":"e919","stiffness":30000000,"target":654,"stress":64.89528462552246},{"source":654,"area":1,"density":0.284,"id":"e920","stiffness":30000000,"target":655,"stress":47.44077815031351},{"source":655,"area":1,"density":0.284,"id":"e921","stiffness":30000000,"target":648,"stress":1.5877929439635468},{"source":261,"area":1,"density":0.284,"id":"e922","stiffness":30000000,"target":653,"stress":53.7528515253349},{"source":618,"area":1,"density":0.284,"id":"e923","stiffness":30000000,"target":655,"stress":99.1137663186321},{"source":637,"area":1,"density":0.284,"id":"e924","stiffness":30000000,"target":649,"stress":-0.5664397309383206},{"source":647,"area":1,"density":0.284,"id":"e925","stiffness":30000000,"target":651,"stress":22.36293419785485},{"source":262,"area":1,"density":0.284,"id":"e926","stiffness":30000000,"target":270,"stress":-239.68691901561095},{"source":119,"area":1,"density":0.284,"id":"e927","stiffness":30000000,"target":268,"stress":-870.8851314898039},{"source":219,"area":1,"density":0.284,"id":"e928","stiffness":30000000,"target":266,"stress":-292.59884068124705},{"source":261,"area":1,"density":0.284,"id":"e929","stiffness":30000000,"target":264,"stress":-737.1380637875254},{"source":618,"area":1,"density":0.284,"id":"e930","stiffness":30000000,"target":628,"stress":-873.2940698252223},{"source":219,"area":1,"density":0.284,"id":"e931","stiffness":30000000,"target":630,"stress":-220.41470751475927},{"source":508,"area":1,"density":0.284,"id":"e932","stiffness":30000000,"target":632,"stress":-961.5545684259783},{"source":609,"area":1,"density":0.284,"id":"e933","stiffness":30000000,"target":634,"stress":-149.40811024574953},{"source":656,"area":1,"density":0.284,"id":"e934","stiffness":30000000,"target":657,"stress":-121.28637603984107},{"source":657,"area":1,"density":0.284,"id":"e935","stiffness":30000000,"target":658,"stress":-342.0653385330164},{"source":658,"area":1,"density":0.284,"id":"e936","stiffness":30000000,"target":659,"stress":-341.5186306407254},{"source":659,"area":1,"density":0.284,"id":"e937","stiffness":30000000,"target":660,"stress":88.68211699190255},{"source":660,"area":1,"density":0.284,"id":"e938","stiffness":30000000,"target":661,"stress":-154.6545084974687},{"source":661,"area":1,"density":0.284,"id":"e939","stiffness":30000000,"target":662,"stress":-377.7409037319339},{"source":662,"area":1,"density":0.284,"id":"e940","stiffness":30000000,"target":663,"stress":-365.9294569305566},{"source":663,"area":1,"density":0.284,"id":"e941","stiffness":30000000,"target":656,"stress":111.43298414376032},{"source":638,"area":1,"density":0.284,"id":"e942","stiffness":30000000,"target":661,"stress":30.662827349303775},{"source":545,"area":1,"density":0.284,"id":"e943","stiffness":30000000,"target":659,"stress":-548.9174283507597},{"source":262,"area":1,"density":0.284,"id":"e944","stiffness":30000000,"target":657,"stress":33.154648612872535},{"source":647,"area":1,"density":0.284,"id":"e945","stiffness":30000000,"target":663,"stress":-573.1352825319038},{"source":664,"area":1,"density":0.284,"id":"e946","stiffness":30000000,"target":665,"stress":-21.856546866030502},{"source":665,"area":1,"density":0.284,"id":"e947","stiffness":30000000,"target":587,"stress":31.56165199944039},{"source":587,"area":1,"density":0.284,"id":"e948","stiffness":30000000,"target":666,"stress":20.365809789841908},{"source":666,"area":1,"density":0.284,"id":"e949","stiffness":30000000,"target":667,"stress":18.074665845462604},{"source":667,"area":1,"density":0.284,"id":"e950","stiffness":30000000,"target":668,"stress":-23.72089394452397},{"source":668,"area":1,"density":0.284,"id":"e951","stiffness":30000000,"target":583,"stress":62.12833929308327},{"source":583,"area":1,"density":0.284,"id":"e952","stiffness":30000000,"target":669,"stress":19.03097056506628},{"source":669,"area":1,"density":0.284,"id":"e953","stiffness":30000000,"target":664,"stress":51.6302625263741},{"source":568,"area":1,"density":0.284,"id":"e954","stiffness":30000000,"target":665,"stress":43.010796453638946},{"source":579,"area":1,"density":0.284,"id":"e955","stiffness":30000000,"target":666,"stress":-13.792778410842422},{"source":164,"area":1,"density":0.284,"id":"e956","stiffness":30000000,"target":668,"stress":80.99479551019074},{"source":580,"area":1,"density":0.284,"id":"e957","stiffness":30000000,"target":669,"stress":16.228823671397787},{"source":673,"area":1,"density":0.284,"id":"e958","stiffness":30000000,"target":674,"stress":-334.71897803054605},{"source":674,"area":1,"density":0.284,"id":"e959","stiffness":30000000,"target":675,"stress":44.6402335771904},{"source":675,"area":1,"density":0.284,"id":"e960","stiffness":30000000,"target":676,"stress":63.84639803227899},{"source":676,"area":1,"density":0.284,"id":"e961","stiffness":30000000,"target":677,"stress":-311.5998334284807},{"source":677,"area":1,"density":0.284,"id":"e962","stiffness":30000000,"target":678,"stress":-304.48279466097756},{"source":678,"area":1,"density":0.284,"id":"e963","stiffness":30000000,"target":679,"stress":48.04319998194595},{"source":679,"area":1,"density":0.284,"id":"e964","stiffness":30000000,"target":680,"stress":36.2008445507584},{"source":680,"area":1,"density":0.284,"id":"e965","stiffness":30000000,"target":673,"stress":-342.3745389297008},{"source":672,"area":1,"density":0.284,"id":"e966","stiffness":30000000,"target":674,"stress":-197.00869863965858},{"source":670,"area":1,"density":0.284,"id":"e967","stiffness":30000000,"target":676,"stress":-310.1562854557863},{"source":671,"area":1,"density":0.284,"id":"e968","stiffness":30000000,"target":678,"stress":-174.19946554211157},{"source":568,"area":1,"density":0.284,"id":"e969","stiffness":30000000,"target":680,"stress":-403.51714252557764},{"source":683,"area":1,"density":0.284,"id":"e970","stiffness":30000000,"target":684,"stress":-28.960732346462283},{"source":684,"area":1,"density":0.284,"id":"e971","stiffness":30000000,"target":685,"stress":97.90613168082719},{"source":685,"area":1,"density":0.284,"id":"e972","stiffness":30000000,"target":686,"stress":65.42668665466549},{"source":686,"area":1,"density":0.284,"id":"e973","stiffness":30000000,"target":687,"stress":44.777400710896146},{"source":687,"area":1,"density":0.284,"id":"e974","stiffness":30000000,"target":688,"stress":7.3742637522828485},{"source":688,"area":1,"density":0.284,"id":"e975","stiffness":30000000,"target":689,"stress":64.25910921133935},{"source":689,"area":1,"density":0.284,"id":"e976","stiffness":30000000,"target":690,"stress":42.717901837446824},{"source":690,"area":1,"density":0.284,"id":"e977","stiffness":30000000,"target":683,"stress":-3.2045237895497594},{"source":306,"area":1,"density":0.284,"id":"e978","stiffness":30000000,"target":688,"stress":55.68685013337423},{"source":681,"area":1,"density":0.284,"id":"e979","stiffness":30000000,"target":690,"stress":-50.25030890270627},{"source":670,"area":1,"density":0.284,"id":"e980","stiffness":30000000,"target":684,"stress":122.40440372639729},{"source":682,"area":1,"density":0.284,"id":"e981","stiffness":30000000,"target":686,"stress":-27.849789314604873},{"source":308,"area":1,"density":0.284,"id":"e982","stiffness":30000000,"target":316,"stress":-150.55232525381254},{"source":164,"area":1,"density":0.284,"id":"e983","stiffness":30000000,"target":314,"stress":-496.04359356986333},{"source":307,"area":1,"density":0.284,"id":"e984","stiffness":30000000,"target":312,"stress":17.6698714087911},{"source":306,"area":1,"density":0.284,"id":"e985","stiffness":30000000,"target":310,"stress":-471.42586555629475},{"source":691,"area":1,"density":0.284,"id":"e986","stiffness":30000000,"target":692,"stress":55.0952750562494},{"source":692,"area":1,"density":0.284,"id":"e987","stiffness":30000000,"target":693,"stress":-131.5630349662498},{"source":693,"area":1,"density":0.284,"id":"e988","stiffness":30000000,"target":694,"stress":-153.8942435020405},{"source":694,"area":1,"density":0.284,"id":"e989","stiffness":30000000,"target":695,"stress":-55.5729076779436},{"source":695,"area":1,"density":0.284,"id":"e990","stiffness":30000000,"target":696,"stress":88.56877238276036},{"source":696,"area":1,"density":0.284,"id":"e991","stiffness":30000000,"target":697,"stress":-206.90725702197528},{"source":697,"area":1,"density":0.284,"id":"e992","stiffness":30000000,"target":698,"stress":-184.2050260923413},{"source":698,"area":1,"density":0.284,"id":"e993","stiffness":30000000,"target":691,"stress":-72.70331730036551},{"source":681,"area":1,"density":0.284,"id":"e994","stiffness":30000000,"target":696,"stress":-357.7406509770913},{"source":307,"area":1,"density":0.284,"id":"e995","stiffness":30000000,"target":698,"stress":-7.357599203332482},{"source":579,"area":1,"density":0.284,"id":"e996","stiffness":30000000,"target":692,"stress":-244.35059883543394},{"source":671,"area":1,"density":0.284,"id":"e997","stiffness":30000000,"target":694,"stress":19.937963402971235},{"source":699,"area":1,"density":0.284,"id":"e998","stiffness":30000000,"target":700,"stress":113.4778218033651},{"source":700,"area":1,"density":0.284,"id":"e999","stiffness":30000000,"target":701,"stress":-327.58261367495635},{"source":701,"area":1,"density":0.284,"id":"e1000","stiffness":30000000,"target":702,"stress":-343.6943169814724},{"source":702,"area":1,"density":0.284,"id":"e1001","stiffness":30000000,"target":703,"stress":66.5852760206366},{"source":703,"area":1,"density":0.284,"id":"e1002","stiffness":30000000,"target":704,"stress":75.72674630362471},{"source":704,"area":1,"density":0.284,"id":"e1003","stiffness":30000000,"target":705,"stress":-328.93608670911505},{"source":705,"area":1,"density":0.284,"id":"e1004","stiffness":30000000,"target":706,"stress":-335.180948702875},{"source":706,"area":1,"density":0.284,"id":"e1005","stiffness":30000000,"target":699,"stress":106.43978559757936},{"source":672,"area":1,"density":0.284,"id":"e1006","stiffness":30000000,"target":704,"stress":-32.50922823425347},{"source":580,"area":1,"density":0.284,"id":"e1007","stiffness":30000000,"target":702,"stress":-484.83549595249264},{"source":308,"area":1,"density":0.284,"id":"e1008","stiffness":30000000,"target":700,"stress":48.60274423688866},{"source":682,"area":1,"density":0.284,"id":"e1009","stiffness":30000000,"target":706,"stress":-403.0839353575809},{"source":619,"area":1,"density":0.284,"id":"e1010","stiffness":30000000,"target":707,"stress":-36.921135299312425},{"source":707,"area":1,"density":0.284,"id":"e1011","stiffness":30000000,"target":625,"stress":80.88139073968858},{"source":625,"area":1,"density":0.284,"id":"e1012","stiffness":30000000,"target":708,"stress":28.34798734241812},{"source":708,"area":1,"density":0.284,"id":"e1013","stiffness":30000000,"target":623,"stress":46.23802213445138},{"source":623,"area":1,"density":0.284,"id":"e1014","stiffness":30000000,"target":709,"stress":-43.2291446875879},{"source":709,"area":1,"density":0.284,"id":"e1015","stiffness":30000000,"target":621,"stress":76.12250380517048},{"source":608,"area":1,"density":0.284,"id":"e1016","stiffness":30000000,"target":707,"stress":107.17643352485243},{"source":580,"area":1,"density":0.284,"id":"e1017","stiffness":30000000,"target":708,"stress":3.2181517483341486},{"source":218,"area":1,"density":0.284,"id":"e1018","stiffness":30000000,"target":709,"stress":106.27156764538495},{"source":618,"area":1,"density":0.284,"id":"e1019","stiffness":30000000,"target":620,"stress":16.081688520798423},{"source":712,"area":1,"density":0.284,"id":"e1020","stiffness":30000000,"target":713,"stress":-324.98005848443023},{"source":713,"area":1,"density":0.284,"id":"e1021","stiffness":30000000,"target":714,"stress":26.939908264943995},{"source":714,"area":1,"density":0.284,"id":"e1022","stiffness":30000000,"target":715,"stress":43.723963685446556},{"source":715,"area":1,"density":0.284,"id":"e1023","stiffness":30000000,"target":716,"stress":-318.11653208821843},{"source":716,"area":1,"density":0.284,"id":"e1024","stiffness":30000000,"target":717,"stress":-323.9530862220428},{"source":717,"area":1,"density":0.284,"id":"e1025","stiffness":30000000,"target":718,"stress":22.265987251816707},{"source":718,"area":1,"density":0.284,"id":"e1026","stiffness":30000000,"target":719,"stress":35.11140832293001},{"source":719,"area":1,"density":0.284,"id":"e1027","stiffness":30000000,"target":712,"stress":-326.8800581734211},{"source":711,"area":1,"density":0.284,"id":"e1028","stiffness":30000000,"target":713,"stress":-155.4607101676523},{"source":710,"area":1,"density":0.284,"id":"e1029","stiffness":30000000,"target":715,"stress":-365.08103930434453},{"source":672,"area":1,"density":0.284,"id":"e1030","stiffness":30000000,"target":717,"stress":-185.61016275022905},{"source":608,"area":1,"density":0.284,"id":"e1031","stiffness":30000000,"target":719,"stress":-408.65789213044087},{"source":721,"area":1,"density":0.284,"id":"e1032","stiffness":30000000,"target":722,"stress":-9.788993816529764},{"source":722,"area":1,"density":0.284,"id":"e1033","stiffness":30000000,"target":723,"stress":59.44967615981329},{"source":723,"area":1,"density":0.284,"id":"e1034","stiffness":30000000,"target":724,"stress":28.912987423212662},{"source":724,"area":1,"density":0.284,"id":"e1035","stiffness":30000000,"target":725,"stress":66.72941528683612},{"source":725,"area":1,"density":0.284,"id":"e1036","stiffness":30000000,"target":726,"stress":-10.494125952068135},{"source":726,"area":1,"density":0.284,"id":"e1037","stiffness":30000000,"target":727,"stress":60.509999942420734},{"source":727,"area":1,"density":0.284,"id":"e1038","stiffness":30000000,"target":728,"stress":27.69237759038108},{"source":728,"area":1,"density":0.284,"id":"e1039","stiffness":30000000,"target":721,"stress":63.60325344235691},{"source":360,"area":1,"density":0.284,"id":"e1040","stiffness":30000000,"target":726,"stress":64.98795328979229},{"source":682,"area":1,"density":0.284,"id":"e1041","stiffness":30000000,"target":728,"stress":28.791248505775517},{"source":710,"area":1,"density":0.284,"id":"e1042","stiffness":30000000,"target":722,"stress":63.39578292974157},{"source":720,"area":1,"density":0.284,"id":"e1043","stiffness":30000000,"target":724,"stress":29.65310925495535},{"source":361,"area":1,"density":0.284,"id":"e1044","stiffness":30000000,"target":369,"stress":-201.21805927543136},{"source":218,"area":1,"density":0.284,"id":"e1045","stiffness":30000000,"target":367,"stress":-402.86834237652045},{"source":308,"area":1,"density":0.284,"id":"e1046","stiffness":30000000,"target":365,"stress":-175.93796715116275},{"source":360,"area":1,"density":0.284,"id":"e1047","stiffness":30000000,"target":363,"stress":-349.7635150686853},{"source":682,"area":1,"density":0.284,"id":"e1048","stiffness":30000000,"target":700,"stress":-331.4655971451036},{"source":308,"area":1,"density":0.284,"id":"e1049","stiffness":30000000,"target":702,"stress":-111.84969430140471},{"source":580,"area":1,"density":0.284,"id":"e1050","stiffness":30000000,"target":704,"stress":-394.66908430391356},{"source":672,"area":1,"density":0.284,"id":"e1051","stiffness":30000000,"target":706,"stress":-11.775452190615056},{"source":729,"area":1,"density":0.284,"id":"e1052","stiffness":30000000,"target":730,"stress":108.65396804809747},{"source":730,"area":1,"density":0.284,"id":"e1053","stiffness":30000000,"target":731,"stress":-337.0238298933726},{"source":731,"area":1,"density":0.284,"id":"e1054","stiffness":30000000,"target":732,"stress":-328.8151730815428},{"source":732,"area":1,"density":0.284,"id":"e1055","stiffness":30000000,"target":733,"stress":83.60498702188474},{"source":733,"area":1,"density":0.284,"id":"e1056","stiffness":30000000,"target":734,"stress":70.57592831234983},{"source":734,"area":1,"density":0.284,"id":"e1057","stiffness":30000000,"target":735,"stress":-343.66366926959313},{"source":735,"area":1,"density":0.284,"id":"e1058","stiffness":30000000,"target":736,"stress":-325.60994621483275},{"source":736,"area":1,"density":0.284,"id":"e1059","stiffness":30000000,"target":729,"stress":116.83610086148718},{"source":711,"area":1,"density":0.284,"id":"e1060","stiffness":30000000,"target":734,"stress":-106.29316242929376},{"source":618,"area":1,"density":0.284,"id":"e1061","stiffness":30000000,"target":732,"stress":-390.9558767769832},{"source":361,"area":1,"density":0.284,"id":"e1062","stiffness":30000000,"target":730,"stress":-8.915673405462428},{"source":720,"area":1,"density":0.284,"id":"e1063","stiffness":30000000,"target":736,"stress":-329.9298103775749},{"source":654,"area":1,"density":0.284,"id":"e1064","stiffness":30000000,"target":737,"stress":20.763826098435715},{"source":737,"area":1,"density":0.284,"id":"e1065","stiffness":30000000,"target":652,"stress":47.42396138887869},{"source":652,"area":1,"density":0.284,"id":"e1066","stiffness":30000000,"target":738,"stress":-43.06772892437946},{"source":738,"area":1,"density":0.284,"id":"e1067","stiffness":30000000,"target":650,"stress":39.40220169398858},{"source":637,"area":1,"density":0.284,"id":"e1068","stiffness":30000000,"target":655,"stress":121.76693606461978},{"source":618,"area":1,"density":0.284,"id":"e1069","stiffness":30000000,"target":737,"stress":10.949518163132081},{"source":261,"area":1,"density":0.284,"id":"e1070","stiffness":30000000,"target":738,"stress":65.41713622155609},{"source":647,"area":1,"density":0.284,"id":"e1071","stiffness":30000000,"target":649,"stress":-23.716005693951956},{"source":741,"area":1,"density":0.284,"id":"e1072","stiffness":30000000,"target":742,"stress":-309.80403897414084},{"source":742,"area":1,"density":0.284,"id":"e1073","stiffness":30000000,"target":743,"stress":71.97522583387685},{"source":743,"area":1,"density":0.284,"id":"e1074","stiffness":30000000,"target":744,"stress":47.24128814458825},{"source":744,"area":1,"density":0.284,"id":"e1075","stiffness":30000000,"target":745,"stress":-342.0760192526687},{"source":745,"area":1,"density":0.284,"id":"e1076","stiffness":30000000,"target":746,"stress":-339.6740188079767},{"source":746,"area":1,"density":0.284,"id":"e1077","stiffness":30000000,"target":747,"stress":46.75191368362978},{"source":747,"area":1,"density":0.284,"id":"e1078","stiffness":30000000,"target":748,"stress":44.96690662580823},{"source":748,"area":1,"density":0.284,"id":"e1079","stiffness":30000000,"target":741,"stress":-314.3412156601143},{"source":740,"area":1,"density":0.284,"id":"e1080","stiffness":30000000,"target":742,"stress":-9.660789990326023},{"source":739,"area":1,"density":0.284,"id":"e1081","stiffness":30000000,"target":744,"stress":-477.8481475440207},{"source":711,"area":1,"density":0.284,"id":"e1082","stiffness":30000000,"target":746,"stress":-104.53745094749101},{"source":637,"area":1,"density":0.284,"id":"e1083","stiffness":30000000,"target":748,"stress":-443.60022468575},{"source":750,"area":1,"density":0.284,"id":"e1084","stiffness":30000000,"target":751,"stress":2.922103121201099},{"source":751,"area":1,"density":0.284,"id":"e1085","stiffness":30000000,"target":752,"stress":66.76025880899914},{"source":752,"area":1,"density":0.284,"id":"e1086","stiffness":30000000,"target":753,"stress":47.20032747721684},{"source":753,"area":1,"density":0.284,"id":"e1087","stiffness":30000000,"target":754,"stress":4.564509863385036},{"source":754,"area":1,"density":0.284,"id":"e1088","stiffness":30000000,"target":755,"stress":-33.77129041751089},{"source":755,"area":1,"density":0.284,"id":"e1089","stiffness":30000000,"target":756,"stress":101.42645074250528},{"source":756,"area":1,"density":0.284,"id":"e1090","stiffness":30000000,"target":757,"stress":66.677967756187},{"source":757,"area":1,"density":0.284,"id":"e1091","stiffness":30000000,"target":750,"stress":46.30727081914063},{"source":403,"area":1,"density":0.284,"id":"e1092","stiffness":30000000,"target":755,"stress":129.00952557365545},{"source":720,"area":1,"density":0.284,"id":"e1093","stiffness":30000000,"target":757,"stress":-28.04892373795228},{"source":739,"area":1,"density":0.284,"id":"e1094","stiffness":30000000,"target":751,"stress":61.01890311727411},{"source":749,"area":1,"density":0.284,"id":"e1095","stiffness":30000000,"target":753,"stress":-49.44337341653846},{"source":404,"area":1,"density":0.284,"id":"e1096","stiffness":30000000,"target":412,"stress":-181.20383119682097},{"source":261,"area":1,"density":0.284,"id":"e1097","stiffness":30000000,"target":410,"stress":-394.76987131055466},{"source":361,"area":1,"density":0.284,"id":"e1098","stiffness":30000000,"target":408,"stress":-216.32344678929852},{"source":403,"area":1,"density":0.284,"id":"e1099","stiffness":30000000,"target":406,"stress":-294.6714008953175},{"source":720,"area":1,"density":0.284,"id":"e1100","stiffness":30000000,"target":730,"stress":-404.64514389462954},{"source":361,"area":1,"density":0.284,"id":"e1101","stiffness":30000000,"target":732,"stress":-19.66821940701762},{"source":618,"area":1,"density":0.284,"id":"e1102","stiffness":30000000,"target":734,"stress":-480.46117761268874},{"source":711,"area":1,"density":0.284,"id":"e1103","stiffness":30000000,"target":736,"stress":50.635837567813645},{"source":758,"area":1,"density":0.284,"id":"e1104","stiffness":30000000,"target":759,"stress":-44.49162857962047},{"source":759,"area":1,"density":0.284,"id":"e1105","stiffness":30000000,"target":760,"stress":-163.00583237784582},{"source":760,"area":1,"density":0.284,"id":"e1106","stiffness":30000000,"target":761,"stress":-126.22665710975912},{"source":761,"area":1,"density":0.284,"id":"e1107","stiffness":30000000,"target":762,"stress":89.34299888497134},{"source":762,"area":1,"density":0.284,"id":"e1108","stiffness":30000000,"target":763,"stress":-31.8727437756603},{"source":763,"area":1,"density":0.284,"id":"e1109","stiffness":30000000,"target":764,"stress":-186.62251510752972},{"source":764,"area":1,"density":0.284,"id":"e1110","stiffness":30000000,"target":765,"stress":-198.53984493266955},{"source":765,"area":1,"density":0.284,"id":"e1111","stiffness":30000000,"target":758,"stress":102.11456410234481},{"source":740,"area":1,"density":0.284,"id":"e1112","stiffness":30000000,"target":763,"stress":40.955741510777514},{"source":647,"area":1,"density":0.284,"id":"e1113","stiffness":30000000,"target":761,"stress":-251.1314772105031},{"source":404,"area":1,"density":0.284,"id":"e1114","stiffness":30000000,"target":759,"stress":45.933333951124006},{"source":749,"area":1,"density":0.284,"id":"e1115","stiffness":30000000,"target":765,"stress":-357.31239014184507},{"source":769,"area":1,"density":0.284,"id":"e1116","stiffness":30000000,"target":770,"stress":0.0},{"source":770,"area":1,"density":0.284,"id":"e1117","stiffness":30000000,"target":771,"stress":0.0},{"source":771,"area":1,"density":0.284,"id":"e1118","stiffness":30000000,"target":772,"stress":0.0},{"source":772,"area":1,"density":0.284,"id":"e1119","stiffness":30000000,"target":773,"stress":0.0},{"source":773,"area":1,"density":0.284,"id":"e1120","stiffness":30000000,"target":774,"stress":0.0},{"source":774,"area":1,"density":0.284,"id":"e1121","stiffness":30000000,"target":775,"stress":0.0},{"source":775,"area":1,"density":0.284,"id":"e1122","stiffness":30000000,"target":776,"stress":0.0},{"source":776,"area":1,"density":0.284,"id":"e1123","stiffness":30000000,"target":769,"stress":0.0},{"source":766,"area":1,"density":0.284,"id":"e1124","stiffness":30000000,"target":770,"stress":0.0},{"source":767,"area":1,"density":0.284,"id":"e1125","stiffness":30000000,"target":772,"stress":0.0},{"source":440,"area":1,"density":0.284,"id":"e1126","stiffness":30000000,"target":774,"stress":0.0},{"source":768,"area":1,"density":0.284,"id":"e1127","stiffness":30000000,"target":776,"stress":0.0},{"source":780,"area":1,"density":0.284,"id":"e1128","stiffness":30000000,"target":781,"stress":-574.634106174612},{"source":781,"area":1,"density":0.284,"id":"e1129","stiffness":30000000,"target":782,"stress":-451.90814932848406},{"source":782,"area":1,"density":0.284,"id":"e1130","stiffness":30000000,"target":783,"stress":492.14815409948017},{"source":783,"area":1,"density":0.284,"id":"e1131","stiffness":30000000,"target":784,"stress":-547.9091481388891},{"source":784,"area":1,"density":0.284,"id":"e1132","stiffness":30000000,"target":785,"stress":-481.18931734359256},{"source":785,"area":1,"density":0.284,"id":"e1133","stiffness":30000000,"target":786,"stress":-406.2330700586819},{"source":786,"area":1,"density":0.284,"id":"e1134","stiffness":30000000,"target":787,"stress":505.8612091201023},{"source":787,"area":1,"density":0.284,"id":"e1135","stiffness":30000000,"target":780,"stress":-596.3873425364103},{"source":779,"area":1,"density":0.284,"id":"e1136","stiffness":30000000,"target":781,"stress":305.56345613399367},{"source":777,"area":1,"density":0.284,"id":"e1137","stiffness":30000000,"target":783,"stress":-868.2756806584334},{"source":778,"area":1,"density":0.284,"id":"e1138","stiffness":30000000,"target":785,"stress":234.24744463779712},{"source":766,"area":1,"density":0.284,"id":"e1139","stiffness":30000000,"target":787,"stress":-923.5985181395619},{"source":790,"area":1,"density":0.284,"id":"e1140","stiffness":30000000,"target":791,"stress":6.9026297051943155},{"source":791,"area":1,"density":0.284,"id":"e1141","stiffness":30000000,"target":792,"stress":-23.040599990732357},{"source":792,"area":1,"density":0.284,"id":"e1142","stiffness":30000000,"target":793,"stress":-62.04125059779066},{"source":793,"area":1,"density":0.284,"id":"e1143","stiffness":30000000,"target":794,"stress":72.02825382769767},{"source":794,"area":1,"density":0.284,"id":"e1144","stiffness":30000000,"target":795,"stress":23.583304812406098},{"source":795,"area":1,"density":0.284,"id":"e1145","stiffness":30000000,"target":796,"stress":-12.764986503725497},{"source":796,"area":1,"density":0.284,"id":"e1146","stiffness":30000000,"target":797,"stress":-29.02535684884011},{"source":797,"area":1,"density":0.284,"id":"e1147","stiffness":30000000,"target":790,"stress":16.517575890856772},{"source":451,"area":1,"density":0.284,"id":"e1148","stiffness":30000000,"target":795,"stress":-36.73546287385893},{"source":788,"area":1,"density":0.284,"id":"e1149","stiffness":30000000,"target":797,"stress":50.80356056594323},{"source":777,"area":1,"density":0.284,"id":"e1150","stiffness":30000000,"target":791,"stress":-28.662855397163046},{"source":789,"area":1,"density":0.284,"id":"e1151","stiffness":30000000,"target":793,"stress":139.60175653897832},{"source":453,"area":1,"density":0.284,"id":"e1152","stiffness":30000000,"target":461,"stress":-367.8188866846368},{"source":440,"area":1,"density":0.284,"id":"e1153","stiffness":30000000,"target":459,"stress":-1161.4302117509906},{"source":452,"area":1,"density":0.284,"id":"e1154","stiffness":30000000,"target":457,"stress":-212.0180359119095},{"source":451,"area":1,"density":0.284,"id":"e1155","stiffness":30000000,"target":455,"stress":-1429.915583174209},{"source":798,"area":1,"density":0.284,"id":"e1156","stiffness":30000000,"target":799,"stress":144.86204498868088},{"source":799,"area":1,"density":0.284,"id":"e1157","stiffness":30000000,"target":800,"stress":-647.3492348119786},{"source":800,"area":1,"density":0.284,"id":"e1158","stiffness":30000000,"target":801,"stress":-664.2467997674731},{"source":801,"area":1,"density":0.284,"id":"e1159","stiffness":30000000,"target":802,"stress":-207.2659761103737},{"source":802,"area":1,"density":0.284,"id":"e1160","stiffness":30000000,"target":803,"stress":166.4752199062285},{"source":803,"area":1,"density":0.284,"id":"e1161","stiffness":30000000,"target":804,"stress":-609.950382569334},{"source":804,"area":1,"density":0.284,"id":"e1162","stiffness":30000000,"target":805,"stress":-588.6080608992502},{"source":805,"area":1,"density":0.284,"id":"e1163","stiffness":30000000,"target":798,"stress":-203.75741361747947},{"source":788,"area":1,"density":0.284,"id":"e1164","stiffness":30000000,"target":803,"stress":-944.3157742485819},{"source":452,"area":1,"density":0.284,"id":"e1165","stiffness":30000000,"target":805,"stress":58.93902713752008},{"source":767,"area":1,"density":0.284,"id":"e1166","stiffness":30000000,"target":799,"stress":-934.2453118761556},{"source":778,"area":1,"density":0.284,"id":"e1167","stiffness":30000000,"target":801,"stress":124.31345443273725},{"source":806,"area":1,"density":0.284,"id":"e1168","stiffness":30000000,"target":807,"stress":127.30748797313292},{"source":807,"area":1,"density":0.284,"id":"e1169","stiffness":30000000,"target":808,"stress":-1039.2451797146543},{"source":808,"area":1,"density":0.284,"id":"e1170","stiffness":30000000,"target":809,"stress":-1059.3731190625108},{"source":809,"area":1,"density":0.284,"id":"e1171","stiffness":30000000,"target":810,"stress":87.4442419218519},{"source":810,"area":1,"density":0.284,"id":"e1172","stiffness":30000000,"target":811,"stress":166.41069872474293},{"source":811,"area":1,"density":0.284,"id":"e1173","stiffness":30000000,"target":812,"stress":-995.8342224509076},{"source":812,"area":1,"density":0.284,"id":"e1174","stiffness":30000000,"target":813,"stress":-1021.7377210344414},{"source":813,"area":1,"density":0.284,"id":"e1175","stiffness":30000000,"target":806,"stress":151.4477935755068},{"source":779,"area":1,"density":0.284,"id":"e1176","stiffness":30000000,"target":811,"stress":-79.764610413611},{"source":768,"area":1,"density":0.284,"id":"e1177","stiffness":30000000,"target":809,"stress":-1445.936819620732},{"source":453,"area":1,"density":0.284,"id":"e1178","stiffness":30000000,"target":807,"stress":-350.60088420370823},{"source":789,"area":1,"density":0.284,"id":"e1179","stiffness":30000000,"target":813,"stress":-1277.7725418817258},{"source":816,"area":1,"density":0.284,"id":"e1180","stiffness":30000000,"target":817,"stress":0.0},{"source":817,"area":1,"density":0.284,"id":"e1181","stiffness":30000000,"target":818,"stress":0.0},{"source":818,"area":1,"density":0.284,"id":"e1182","stiffness":30000000,"target":819,"stress":0.0},{"source":819,"area":1,"density":0.284,"id":"e1183","stiffness":30000000,"target":820,"stress":0.0},{"source":820,"area":1,"density":0.284,"id":"e1184","stiffness":30000000,"target":821,"stress":0.0},{"source":821,"area":1,"density":0.284,"id":"e1185","stiffness":30000000,"target":822,"stress":0.0},{"source":822,"area":1,"density":0.284,"id":"e1186","stiffness":30000000,"target":823,"stress":0.0},{"source":823,"area":1,"density":0.284,"id":"e1187","stiffness":30000000,"target":816,"stress":0.0},{"source":814,"area":1,"density":0.284,"id":"e1188","stiffness":30000000,"target":817,"stress":0.0},{"source":768,"area":1,"density":0.284,"id":"e1189","stiffness":30000000,"target":819,"stress":0.0},{"source":488,"area":1,"density":0.284,"id":"e1190","stiffness":30000000,"target":821,"stress":0.0},{"source":815,"area":1,"density":0.284,"id":"e1191","stiffness":30000000,"target":823,"stress":0.0},{"source":826,"area":1,"density":0.284,"id":"e1192","stiffness":30000000,"target":827,"stress":-521.6167503131622},{"source":827,"area":1,"density":0.284,"id":"e1193","stiffness":30000000,"target":828,"stress":-481.8167480275192},{"source":828,"area":1,"density":0.284,"id":"e1194","stiffness":30000000,"target":829,"stress":482.89719811498867},{"source":829,"area":1,"density":0.284,"id":"e1195","stiffness":30000000,"target":830,"stress":-492.8391566310983},{"source":830,"area":1,"density":0.284,"id":"e1196","stiffness":30000000,"target":831,"stress":-440.8071090410157},{"source":831,"area":1,"density":0.284,"id":"e1197","stiffness":30000000,"target":832,"stress":-428.38881466718817},{"source":832,"area":1,"density":0.284,"id":"e1198","stiffness":30000000,"target":833,"stress":479.1613533878748},{"source":833,"area":1,"density":0.284,"id":"e1199","stiffness":30000000,"target":826,"stress":-538.4815448500544},{"source":825,"area":1,"density":0.284,"id":"e1200","stiffness":30000000,"target":827,"stress":219.99708256149017},{"source":824,"area":1,"density":0.284,"id":"e1201","stiffness":30000000,"target":829,"stress":-802.4060743029013},{"source":779,"area":1,"density":0.284,"id":"e1202","stiffness":30000000,"target":831,"stress":169.22954366465845},{"source":814,"area":1,"density":0.284,"id":"e1203","stiffness":30000000,"target":833,"stress":-844.1017380621213},{"source":835,"area":1,"density":0.284,"id":"e1204","stiffness":30000000,"target":836,"stress":40.8543251346435},{"source":836,"area":1,"density":0.284,"id":"e1205","stiffness":30000000,"target":837,"stress":35.886785582241316},{"source":837,"area":1,"density":0.284,"id":"e1206","stiffness":30000000,"target":838,"stress":29.74992689382962},{"source":838,"area":1,"density":0.284,"id":"e1207","stiffness":30000000,"target":839,"stress":19.989477496195846},{"source":839,"area":1,"density":0.284,"id":"e1208","stiffness":30000000,"target":840,"stress":11.177436813815916},{"source":840,"area":1,"density":0.284,"id":"e1209","stiffness":30000000,"target":841,"stress":66.03345393091166},{"source":841,"area":1,"density":0.284,"id":"e1210","stiffness":30000000,"target":842,"stress":3.2554971767922143},{"source":842,"area":1,"density":0.284,"id":"e1211","stiffness":30000000,"target":835,"stress":13.655872174549787},{"source":498,"area":1,"density":0.284,"id":"e1212","stiffness":30000000,"target":840,"stress":57.22552685790692},{"source":789,"area":1,"density":0.284,"id":"e1213","stiffness":30000000,"target":842,"stress":18.372632710846386},{"source":824,"area":1,"density":0.284,"id":"e1214","stiffness":30000000,"target":836,"stress":8.748873628689774},{"source":834,"area":1,"density":0.284,"id":"e1215","stiffness":30000000,"target":838,"stress":108.16934384282018},{"source":499,"area":1,"density":0.284,"id":"e1216","stiffness":30000000,"target":507,"stress":-314.9981973887832},{"source":488,"area":1,"density":0.284,"id":"e1217","stiffness":30000000,"target":505,"stress":-1337.669124995913},{"source":453,"area":1,"density":0.284,"id":"e1218","stiffness":30000000,"target":503,"stress":-323.7043366896492},{"source":498,"area":1,"density":0.284,"id":"e1219","stiffness":30000000,"target":501,"stress":-1386.104164445609},{"source":789,"area":1,"density":0.284,"id":"e1220","stiffness":30000000,"target":807,"stress":-1336.176999740938},{"source":453,"area":1,"density":0.284,"id":"e1221","stiffness":30000000,"target":809,"stress":-495.9590772002537},{"source":768,"area":1,"density":0.284,"id":"e1222","stiffness":30000000,"target":811,"stress":-1172.640026555425},{"source":779,"area":1,"density":0.284,"id":"e1223","stiffness":30000000,"target":813,"stress":-180.7157938494268},{"source":843,"area":1,"density":0.284,"id":"e1224","stiffness":30000000,"target":844,"stress":107.49789206470186},{"source":844,"area":1,"density":0.284,"id":"e1225","stiffness":30000000,"target":845,"stress":-1038.965247208886},{"source":845,"area":1,"density":0.284,"id":"e1226","stiffness":30000000,"target":846,"stress":-1035.2557478907868},{"source":846,"area":1,"density":0.284,"id":"e1227","stiffness":30000000,"target":847,"stress":115.17310597423364},{"source":847,"area":1,"density":0.284,"id":"e1228","stiffness":30000000,"target":848,"stress":164.8000127840972},{"source":848,"area":1,"density":0.284,"id":"e1229","stiffness":30000000,"target":849,"stress":-967.4036413597748},{"source":849,"area":1,"density":0.284,"id":"e1230","stiffness":30000000,"target":850,"stress":-966.0224151757433},{"source":850,"area":1,"density":0.284,"id":"e1231","stiffness":30000000,"target":843,"stress":142.56496293245277},{"source":825,"area":1,"density":0.284,"id":"e1232","stiffness":30000000,"target":848,"stress":-87.90531893127994},{"source":815,"area":1,"density":0.284,"id":"e1233","stiffness":30000000,"target":846,"stress":-1367.292131246768},{"source":499,"area":1,"density":0.284,"id":"e1234","stiffness":30000000,"target":844,"stress":-409.6142149960005},{"source":834,"area":1,"density":0.284,"id":"e1235","stiffness":30000000,"target":850,"stress":-1176.1405219323108},{"source":853,"area":1,"density":0.284,"id":"e1236","stiffness":30000000,"target":854,"stress":0.0},{"source":854,"area":1,"density":0.284,"id":"e1237","stiffness":30000000,"target":855,"stress":0.0},{"source":855,"area":1,"density":0.284,"id":"e1238","stiffness":30000000,"target":856,"stress":0.0},{"source":856,"area":1,"density":0.284,"id":"e1239","stiffness":30000000,"target":857,"stress":0.0},{"source":857,"area":1,"density":0.284,"id":"e1240","stiffness":30000000,"target":858,"stress":0.0},{"source":858,"area":1,"density":0.284,"id":"e1241","stiffness":30000000,"target":859,"stress":0.0},{"source":859,"area":1,"density":0.284,"id":"e1242","stiffness":30000000,"target":860,"stress":0.0},{"source":860,"area":1,"density":0.284,"id":"e1243","stiffness":30000000,"target":853,"stress":0.0},{"source":851,"area":1,"density":0.284,"id":"e1244","stiffness":30000000,"target":854,"stress":0.0},{"source":815,"area":1,"density":0.284,"id":"e1245","stiffness":30000000,"target":856,"stress":0.0},{"source":525,"area":1,"density":0.284,"id":"e1246","stiffness":30000000,"target":858,"stress":0.0},{"source":852,"area":1,"density":0.284,"id":"e1247","stiffness":30000000,"target":860,"stress":0.0},{"source":863,"area":1,"density":0.284,"id":"e1248","stiffness":30000000,"target":864,"stress":-506.89691269800767},{"source":864,"area":1,"density":0.284,"id":"e1249","stiffness":30000000,"target":865,"stress":-465.3437729434456},{"source":865,"area":1,"density":0.284,"id":"e1250","stiffness":30000000,"target":866,"stress":493.62099726851295},{"source":866,"area":1,"density":0.284,"id":"e1251","stiffness":30000000,"target":867,"stress":-515.1973587999479},{"source":867,"area":1,"density":0.284,"id":"e1252","stiffness":30000000,"target":868,"stress":-461.3030615353618},{"source":868,"area":1,"density":0.284,"id":"e1253","stiffness":30000000,"target":869,"stress":-402.68516030286185},{"source":869,"area":1,"density":0.284,"id":"e1254","stiffness":30000000,"target":870,"stress":463.7376868397678},{"source":870,"area":1,"density":0.284,"id":"e1255","stiffness":30000000,"target":863,"stress":-525.8339843569407},{"source":862,"area":1,"density":0.284,"id":"e1256","stiffness":30000000,"target":864,"stress":218.70269613750804},{"source":861,"area":1,"density":0.284,"id":"e1257","stiffness":30000000,"target":866,"stress":-834.2192694522981},{"source":825,"area":1,"density":0.284,"id":"e1258","stiffness":30000000,"target":868,"stress":212.3490210051585},{"source":851,"area":1,"density":0.284,"id":"e1259","stiffness":30000000,"target":870,"stress":-823.1085294048013},{"source":872,"area":1,"density":0.284,"id":"e1260","stiffness":30000000,"target":873,"stress":26.46504700499643},{"source":873,"area":1,"density":0.284,"id":"e1261","stiffness":30000000,"target":874,"stress":19.42507736454384},{"source":874,"area":1,"density":0.284,"id":"e1262","stiffness":30000000,"target":875,"stress":10.21121267429473},{"source":875,"area":1,"density":0.284,"id":"e1263","stiffness":30000000,"target":876,"stress":-19.19300374328578},{"source":876,"area":1,"density":0.284,"id":"e1264","stiffness":30000000,"target":877,"stress":52.512125188659375},{"source":877,"area":1,"density":0.284,"id":"e1265","stiffness":30000000,"target":878,"stress":43.33008864235893},{"source":878,"area":1,"density":0.284,"id":"e1266","stiffness":30000000,"target":879,"stress":17.19871408123468},{"source":879,"area":1,"density":0.284,"id":"e1267","stiffness":30000000,"target":872,"stress":-16.739787910799407},{"source":535,"area":1,"density":0.284,"id":"e1268","stiffness":30000000,"target":877,"stress":117.68772283978969},{"source":834,"area":1,"density":0.284,"id":"e1269","stiffness":30000000,"target":879,"stress":-35.90817623077773},{"source":861,"area":1,"density":0.284,"id":"e1270","stiffness":30000000,"target":873,"stress":6.466412798068845},{"source":871,"area":1,"density":0.284,"id":"e1271","stiffness":30000000,"target":875,"stress":-3.7652195775518824},{"source":536,"area":1,"density":0.284,"id":"e1272","stiffness":30000000,"target":544,"stress":-79.5611958124562},{"source":525,"area":1,"density":0.284,"id":"e1273","stiffness":30000000,"target":542,"stress":-1459.9324565789989},{"source":499,"area":1,"density":0.284,"id":"e1274","stiffness":30000000,"target":540,"stress":-303.4942448216387},{"source":535,"area":1,"density":0.284,"id":"e1275","stiffness":30000000,"target":538,"stress":-1308.2620453889633},{"source":834,"area":1,"density":0.284,"id":"e1276","stiffness":30000000,"target":844,"stress":-1393.084453743676},{"source":499,"area":1,"density":0.284,"id":"e1277","stiffness":30000000,"target":846,"stress":-409.6168799234677},{"source":815,"area":1,"density":0.284,"id":"e1278","stiffness":30000000,"target":848,"stress":-1152.972105175558},{"source":825,"area":1,"density":0.284,"id":"e1279","stiffness":30000000,"target":850,"stress":-155.4757495898856},{"source":880,"area":1,"density":0.284,"id":"e1280","stiffness":30000000,"target":881,"stress":-215.59903747455064},{"source":881,"area":1,"density":0.284,"id":"e1281","stiffness":30000000,"target":882,"stress":-717.41598174813},{"source":882,"area":1,"density":0.284,"id":"e1282","stiffness":30000000,"target":883,"stress":-719.2879753494958},{"source":883,"area":1,"density":0.284,"id":"e1283","stiffness":30000000,"target":884,"stress":182.93878977659242},{"source":884,"area":1,"density":0.284,"id":"e1284","stiffness":30000000,"target":885,"stress":-165.17800404509134},{"source":885,"area":1,"density":0.284,"id":"e1285","stiffness":30000000,"target":886,"stress":-607.607508270993},{"source":886,"area":1,"density":0.284,"id":"e1286","stiffness":30000000,"target":887,"stress":-614.9646323182889},{"source":887,"area":1,"density":0.284,"id":"e1287","stiffness":30000000,"target":880,"stress":158.84527298130644},{"source":862,"area":1,"density":0.284,"id":"e1288","stiffness":30000000,"target":885,"stress":116.06223357329117},{"source":852,"area":1,"density":0.284,"id":"e1289","stiffness":30000000,"target":883,"stress":-1026.7866477501245},{"source":536,"area":1,"density":0.284,"id":"e1290","stiffness":30000000,"target":881,"stress":134.34666676235125},{"source":871,"area":1,"density":0.284,"id":"e1291","stiffness":30000000,"target":887,"stress":-940.7302608005843},{"source":888,"area":1,"density":0.284,"id":"e1292","stiffness":30000000,"target":889,"stress":2.1097919605385296},{"source":889,"area":1,"density":0.284,"id":"e1293","stiffness":30000000,"target":796,"stress":28.50613998338012},{"source":796,"area":1,"density":0.284,"id":"e1294","stiffness":30000000,"target":890,"stress":23.86731566536645},{"source":890,"area":1,"density":0.284,"id":"e1295","stiffness":30000000,"target":891,"stress":-28.920015365429222},{"source":891,"area":1,"density":0.284,"id":"e1296","stiffness":30000000,"target":892,"stress":-12.047836700012516},{"source":892,"area":1,"density":0.284,"id":"e1297","stiffness":30000000,"target":792,"stress":93.18851598094749},{"source":792,"area":1,"density":0.284,"id":"e1298","stiffness":30000000,"target":893,"stress":49.9606426288286},{"source":893,"area":1,"density":0.284,"id":"e1299","stiffness":30000000,"target":888,"stress":-8.034500901849837},{"source":777,"area":1,"density":0.284,"id":"e1300","stiffness":30000000,"target":889,"stress":27.933096401016016},{"source":788,"area":1,"density":0.284,"id":"e1301","stiffness":30000000,"target":890,"stress":-54.329331448538575},{"source":451,"area":1,"density":0.284,"id":"e1302","stiffness":30000000,"target":892,"stress":107.57517094010862},{"source":789,"area":1,"density":0.284,"id":"e1303","stiffness":30000000,"target":893,"stress":-61.18786599187695},{"source":897,"area":1,"density":0.284,"id":"e1304","stiffness":30000000,"target":898,"stress":-234.73876147571502},{"source":898,"area":1,"density":0.284,"id":"e1305","stiffness":30000000,"target":899,"stress":-292.9512399483671},{"source":899,"area":1,"density":0.284,"id":"e1306","stiffness":30000000,"target":900,"stress":332.0003628463511},{"source":900,"area":1,"density":0.284,"id":"e1307","stiffness":30000000,"target":901,"stress":-378.00807192950595},{"source":901,"area":1,"density":0.284,"id":"e1308","stiffness":30000000,"target":902,"stress":-332.0827220627297},{"source":902,"area":1,"density":0.284,"id":"e1309","stiffness":30000000,"target":903,"stress":-272.14887446866106},{"source":903,"area":1,"density":0.284,"id":"e1310","stiffness":30000000,"target":904,"stress":340.7254669204391},{"source":904,"area":1,"density":0.284,"id":"e1311","stiffness":30000000,"target":897,"stress":-260.8202735848283},{"source":896,"area":1,"density":0.284,"id":"e1312","stiffness":30000000,"target":898,"stress":43.192181508868075},{"source":894,"area":1,"density":0.284,"id":"e1313","stiffness":30000000,"target":900,"stress":-595.2576398474688},{"source":895,"area":1,"density":0.284,"id":"e1314","stiffness":30000000,"target":902,"stress":167.81496492242056},{"source":777,"area":1,"density":0.284,"id":"e1315","stiffness":30000000,"target":904,"stress":-486.8871789469447},{"source":907,"area":1,"density":0.284,"id":"e1316","stiffness":30000000,"target":908,"stress":13.044575382311043},{"source":908,"area":1,"density":0.284,"id":"e1317","stiffness":30000000,"target":909,"stress":-26.937253674351332},{"source":909,"area":1,"density":0.284,"id":"e1318","stiffness":30000000,"target":910,"stress":-67.24483237323908},{"source":910,"area":1,"density":0.284,"id":"e1319","stiffness":30000000,"target":911,"stress":44.503250995230225},{"source":911,"area":1,"density":0.284,"id":"e1320","stiffness":30000000,"target":912,"stress":35.22120172302212},{"source":912,"area":1,"density":0.284,"id":"e1321","stiffness":30000000,"target":913,"stress":1.9949377414389267},{"source":913,"area":1,"density":0.284,"id":"e1322","stiffness":30000000,"target":914,"stress":-28.562215145615564},{"source":914,"area":1,"density":0.284,"id":"e1323","stiffness":30000000,"target":907,"stress":-7.079536741213214},{"source":568,"area":1,"density":0.284,"id":"e1324","stiffness":30000000,"target":912,"stress":-28.093530609525068},{"source":905,"area":1,"density":0.284,"id":"e1325","stiffness":30000000,"target":914,"stress":33.35297649414242},{"source":894,"area":1,"density":0.284,"id":"e1326","stiffness":30000000,"target":908,"stress":-36.36454537042145},{"source":906,"area":1,"density":0.284,"id":"e1327","stiffness":30000000,"target":910,"stress":127.2390889736132},{"source":570,"area":1,"density":0.284,"id":"e1328","stiffness":30000000,"target":578,"stress":-169.99290852243365},{"source":451,"area":1,"density":0.284,"id":"e1329","stiffness":30000000,"target":576,"stress":-915.3925262940444},{"source":569,"area":1,"density":0.284,"id":"e1330","stiffness":30000000,"target":574,"stress":-20.571999921220023},{"source":568,"area":1,"density":0.284,"id":"e1331","stiffness":30000000,"target":572,"stress":-979.830144579776},{"source":915,"area":1,"density":0.284,"id":"e1332","stiffness":30000000,"target":916,"stress":124.59896556727598},{"source":916,"area":1,"density":0.284,"id":"e1333","stiffness":30000000,"target":917,"stress":-425.1577229334723},{"source":917,"area":1,"density":0.284,"id":"e1334","stiffness":30000000,"target":918,"stress":-389.8088896939426},{"source":918,"area":1,"density":0.284,"id":"e1335","stiffness":30000000,"target":919,"stress":-65.38647632417977},{"source":919,"area":1,"density":0.284,"id":"e1336","stiffness":30000000,"target":920,"stress":150.72524695096322},{"source":920,"area":1,"density":0.284,"id":"e1337","stiffness":30000000,"target":921,"stress":-464.5396908646652},{"source":921,"area":1,"density":0.284,"id":"e1338","stiffness":30000000,"target":922,"stress":-440.7649485458332},{"source":922,"area":1,"density":0.284,"id":"e1339","stiffness":30000000,"target":915,"stress":-101.8853753273134},{"source":905,"area":1,"density":0.284,"id":"e1340","stiffness":30000000,"target":920,"stress":-682.5820890632741},{"source":569,"area":1,"density":0.284,"id":"e1341","stiffness":30000000,"target":922,"stress":93.35241271953089},{"source":788,"area":1,"density":0.284,"id":"e1342","stiffness":30000000,"target":916,"stress":-642.799538538758},{"source":895,"area":1,"density":0.284,"id":"e1343","stiffness":30000000,"target":918,"stress":89.05683171913111},{"source":923,"area":1,"density":0.284,"id":"e1344","stiffness":30000000,"target":924,"stress":114.21426958220806},{"source":924,"area":1,"density":0.284,"id":"e1345","stiffness":30000000,"target":925,"stress":-726.4123779221203},{"source":925,"area":1,"density":0.284,"id":"e1346","stiffness":30000000,"target":926,"stress":-720.7390270483068},{"source":926,"area":1,"density":0.284,"id":"e1347","stiffness":30000000,"target":927,"stress":95.4066467562056},{"source":927,"area":1,"density":0.284,"id":"e1348","stiffness":30000000,"target":928,"stress":98.98151703449349},{"source":928,"area":1,"density":0.284,"id":"e1349","stiffness":30000000,"target":929,"stress":-691.126382965679},{"source":929,"area":1,"density":0.284,"id":"e1350","stiffness":30000000,"target":930,"stress":-678.0770504731852},{"source":930,"area":1,"density":0.284,"id":"e1351","stiffness":30000000,"target":923,"stress":151.0906559444761},{"source":896,"area":1,"density":0.284,"id":"e1352","stiffness":30000000,"target":928,"stress":-172.40778278880757},{"source":789,"area":1,"density":0.284,"id":"e1353","stiffness":30000000,"target":926,"stress":-939.8940228643976},{"source":570,"area":1,"density":0.284,"id":"e1354","stiffness":30000000,"target":924,"stress":-235.20803638325512},{"source":906,"area":1,"density":0.284,"id":"e1355","stiffness":30000000,"target":930,"stress":-763.0674645382554},{"source":835,"area":1,"density":0.284,"id":"e1356","stiffness":30000000,"target":931,"stress":-5.2793803737465455},{"source":931,"area":1,"density":0.284,"id":"e1357","stiffness":30000000,"target":841,"stress":21.23518014910309},{"source":841,"area":1,"density":0.284,"id":"e1358","stiffness":30000000,"target":932,"stress":-11.41110880337828},{"source":932,"area":1,"density":0.284,"id":"e1359","stiffness":30000000,"target":839,"stress":57.81201106816897},{"source":824,"area":1,"density":0.284,"id":"e1360","stiffness":30000000,"target":931,"stress":24.70391928592415},{"source":789,"area":1,"density":0.284,"id":"e1361","stiffness":30000000,"target":932,"stress":61.60634306561105},{"source":498,"area":1,"density":0.284,"id":"e1362","stiffness":30000000,"target":838,"stress":99.87495956817584},{"source":834,"area":1,"density":0.284,"id":"e1363","stiffness":30000000,"target":836,"stress":5.233660794289534},{"source":935,"area":1,"density":0.284,"id":"e1364","stiffness":30000000,"target":936,"stress":-205.86288308210987},{"source":936,"area":1,"density":0.284,"id":"e1365","stiffness":30000000,"target":937,"stress":-310.20131822306195},{"source":937,"area":1,"density":0.284,"id":"e1366","stiffness":30000000,"target":938,"stress":324.45109803591913},{"source":938,"area":1,"density":0.284,"id":"e1367","stiffness":30000000,"target":939,"stress":-359.6654917532309},{"source":939,"area":1,"density":0.284,"id":"e1368","stiffness":30000000,"target":940,"stress":-318.3827658110233},{"source":940,"area":1,"density":0.284,"id":"e1369","stiffness":30000000,"target":941,"stress":-273.34179195550627},{"source":941,"area":1,"density":0.284,"id":"e1370","stiffness":30000000,"target":942,"stress":314.1307690216029},{"source":942,"area":1,"density":0.284,"id":"e1371","stiffness":30000000,"target":935,"stress":-227.2701109452962},{"source":934,"area":1,"density":0.284,"id":"e1372","stiffness":30000000,"target":936,"stress":-4.1868409756202},{"source":933,"area":1,"density":0.284,"id":"e1373","stiffness":30000000,"target":938,"stress":-569.2420155826816},{"source":896,"area":1,"density":0.284,"id":"e1374","stiffness":30000000,"target":940,"stress":149.12110532619016},{"source":824,"area":1,"density":0.284,"id":"e1375","stiffness":30000000,"target":942,"stress":-433.3485786307805},{"source":944,"area":1,"density":0.284,"id":"e1376","stiffness":30000000,"target":945,"stress":49.52464487078749},{"source":945,"area":1,"density":0.284,"id":"e1377","stiffness":30000000,"target":946,"stress":28.958439830273033},{"source":946,"area":1,"density":0.284,"id":"e1378","stiffness":30000000,"target":947,"stress":5.470260760295832},{"source":947,"area":1,"density":0.284,"id":"e1379","stiffness":30000000,"target":948,"stress":4.499845468233211},{"source":948,"area":1,"density":0.284,"id":"e1380","stiffness":30000000,"target":949,"stress":32.88852260280408},{"source":949,"area":1,"density":0.284,"id":"e1381","stiffness":30000000,"target":950,"stress":53.820445400480814},{"source":950,"area":1,"density":0.284,"id":"e1382","stiffness":30000000,"target":951,"stress":-27.703352498019445},{"source":951,"area":1,"density":0.284,"id":"e1383","stiffness":30000000,"target":944,"stress":29.945190473254005},{"source":608,"area":1,"density":0.284,"id":"e1384","stiffness":30000000,"target":949,"stress":29.083398557934267},{"source":906,"area":1,"density":0.284,"id":"e1385","stiffness":30000000,"target":951,"stress":73.12650674931129},{"source":933,"area":1,"density":0.284,"id":"e1386","stiffness":30000000,"target":945,"stress":-62.28570414151652},{"source":943,"area":1,"density":0.284,"id":"e1387","stiffness":30000000,"target":947,"stress":145.22866711772974},{"source":609,"area":1,"density":0.284,"id":"e1388","stiffness":30000000,"target":617,"stress":-182.89313331057173},{"source":498,"area":1,"density":0.284,"id":"e1389","stiffness":30000000,"target":615,"stress":-968.6337822333838},{"source":570,"area":1,"density":0.284,"id":"e1390","stiffness":30000000,"target":613,"stress":-134.39446588916385},{"source":608,"area":1,"density":0.284,"id":"e1391","stiffness":30000000,"target":611,"stress":-929.7767285680955},{"source":906,"area":1,"density":0.284,"id":"e1392","stiffness":30000000,"target":924,"stress":-943.6286235258042},{"source":570,"area":1,"density":0.284,"id":"e1393","stiffness":30000000,"target":926,"stress":-224.57061390969434},{"source":789,"area":1,"density":0.284,"id":"e1394","stiffness":30000000,"target":928,"stress":-891.5794407542254},{"source":896,"area":1,"density":0.284,"id":"e1395","stiffness":30000000,"target":930,"stress":1.2808169029238758},{"source":952,"area":1,"density":0.284,"id":"e1396","stiffness":30000000,"target":953,"stress":98.23266928379095},{"source":953,"area":1,"density":0.284,"id":"e1397","stiffness":30000000,"target":954,"stress":-725.3156178755497},{"source":954,"area":1,"density":0.284,"id":"e1398","stiffness":30000000,"target":955,"stress":-702.9282235554965},{"source":955,"area":1,"density":0.284,"id":"e1399","stiffness":30000000,"target":956,"stress":100.60650079877571},{"source":956,"area":1,"density":0.284,"id":"e1400","stiffness":30000000,"target":957,"stress":97.377047895128},{"source":957,"area":1,"density":0.284,"id":"e1401","stiffness":30000000,"target":958,"stress":-700.541875527534},{"source":958,"area":1,"density":0.284,"id":"e1402","stiffness":30000000,"target":959,"stress":-671.5652122641179},{"source":959,"area":1,"density":0.284,"id":"e1403","stiffness":30000000,"target":952,"stress":149.18420198806973},{"source":934,"area":1,"density":0.284,"id":"e1404","stiffness":30000000,"target":957,"stress":-213.3567263171178},{"source":834,"area":1,"density":0.284,"id":"e1405","stiffness":30000000,"target":955,"stress":-857.6842811017649},{"source":609,"area":1,"density":0.284,"id":"e1406","stiffness":30000000,"target":953,"stress":-302.89634531169594},{"source":943,"area":1,"density":0.284,"id":"e1407","stiffness":30000000,"target":959,"stress":-714.1179944090273},{"source":861,"area":1,"density":0.284,"id":"e1408","stiffness":30000000,"target":879,"stress":-8.53626540699012},{"source":834,"area":1,"density":0.284,"id":"e1409","stiffness":30000000,"target":877,"stress":125.6343733949451},{"source":535,"area":1,"density":0.284,"id":"e1410","stiffness":30000000,"target":875,"stress":14.361137707923076},{"source":871,"area":1,"density":0.284,"id":"e1411","stiffness":30000000,"target":873,"stress":5.061736552426889},{"source":962,"area":1,"density":0.284,"id":"e1412","stiffness":30000000,"target":963,"stress":-277.6930096559606},{"source":963,"area":1,"density":0.284,"id":"e1413","stiffness":30000000,"target":964,"stress":-266.21882262256526},{"source":964,"area":1,"density":0.284,"id":"e1414","stiffness":30000000,"target":965,"stress":322.4069937101102},{"source":965,"area":1,"density":0.284,"id":"e1415","stiffness":30000000,"target":966,"stress":-420.30523357126447},{"source":966,"area":1,"density":0.284,"id":"e1416","stiffness":30000000,"target":967,"stress":-369.7571484782007},{"source":967,"area":1,"density":0.284,"id":"e1417","stiffness":30000000,"target":968,"stress":-251.48629068792542},{"source":968,"area":1,"density":0.284,"id":"e1418","stiffness":30000000,"target":969,"stress":308.2647050061066},{"source":969,"area":1,"density":0.284,"id":"e1419","stiffness":30000000,"target":962,"stress":-315.3217145973431},{"source":961,"area":1,"density":0.284,"id":"e1420","stiffness":30000000,"target":963,"stress":111.34330124490613},{"source":960,"area":1,"density":0.284,"id":"e1421","stiffness":30000000,"target":965,"stress":-632.6268453841145},{"source":934,"area":1,"density":0.284,"id":"e1422","stiffness":30000000,"target":967,"stress":223.3108187838768},{"source":861,"area":1,"density":0.284,"id":"e1423","stiffness":30000000,"target":969,"stress":-519.3283024863578},{"source":971,"area":1,"density":0.284,"id":"e1424","stiffness":30000000,"target":972,"stress":43.6532772069781},{"source":972,"area":1,"density":0.284,"id":"e1425","stiffness":30000000,"target":973,"stress":16.2711965174639},{"source":973,"area":1,"density":0.284,"id":"e1426","stiffness":30000000,"target":974,"stress":-10.436878793807319},{"source":974,"area":1,"density":0.284,"id":"e1427","stiffness":30000000,"target":975,"stress":-30.36193590700772},{"source":975,"area":1,"density":0.284,"id":"e1428","stiffness":30000000,"target":976,"stress":57.44858522594378},{"source":976,"area":1,"density":0.284,"id":"e1429","stiffness":30000000,"target":977,"stress":60.74250852971692},{"source":977,"area":1,"density":0.284,"id":"e1430","stiffness":30000000,"target":978,"stress":14.188480225174839},{"source":978,"area":1,"density":0.284,"id":"e1431","stiffness":30000000,"target":971,"stress":-21.616804363284192},{"source":637,"area":1,"density":0.284,"id":"e1432","stiffness":30000000,"target":976,"stress":74.268252140075},{"source":943,"area":1,"density":0.284,"id":"e1433","stiffness":30000000,"target":978,"stress":45.097360060243545},{"source":960,"area":1,"density":0.284,"id":"e1434","stiffness":30000000,"target":972,"stress":-58.232164062303475},{"source":970,"area":1,"density":0.284,"id":"e1435","stiffness":30000000,"target":974,"stress":47.83200748844259},{"source":638,"area":1,"density":0.284,"id":"e1436","stiffness":30000000,"target":646,"stress":-136.60238919307133},{"source":535,"area":1,"density":0.284,"id":"e1437","stiffness":30000000,"target":644,"stress":-963.1820201134251},{"source":609,"area":1,"density":0.284,"id":"e1438","stiffness":30000000,"target":642,"stress":-205.43569197953929},{"source":637,"area":1,"density":0.284,"id":"e1439","stiffness":30000000,"target":640,"stress":-832.3249936162454},{"source":943,"area":1,"density":0.284,"id":"e1440","stiffness":30000000,"target":953,"stress":-1000.60896633142},{"source":609,"area":1,"density":0.284,"id":"e1441","stiffness":30000000,"target":955,"stress":-166.00049855426127},{"source":834,"area":1,"density":0.284,"id":"e1442","stiffness":30000000,"target":957,"stress":-950.801617494224},{"source":934,"area":1,"density":0.284,"id":"e1443","stiffness":30000000,"target":959,"stress":39.41854697181164},{"source":979,"area":1,"density":0.284,"id":"e1444","stiffness":30000000,"target":980,"stress":-154.39750496676922},{"source":980,"area":1,"density":0.284,"id":"e1445","stiffness":30000000,"target":981,"stress":-372.9263531866225},{"source":981,"area":1,"density":0.284,"id":"e1446","stiffness":30000000,"target":982,"stress":-366.0402431890376},{"source":982,"area":1,"density":0.284,"id":"e1447","stiffness":30000000,"target":983,"stress":103.6671433933891},{"source":983,"area":1,"density":0.284,"id":"e1448","stiffness":30000000,"target":984,"stress":-148.94341690296582},{"source":984,"area":1,"density":0.284,"id":"e1449","stiffness":30000000,"target":985,"stress":-411.5812824618148},{"source":985,"area":1,"density":0.284,"id":"e1450","stiffness":30000000,"target":986,"stress":-392.8269205208319},{"source":986,"area":1,"density":0.284,"id":"e1451","stiffness":30000000,"target":979,"stress":99.33482615681163},{"source":961,"area":1,"density":0.284,"id":"e1452","stiffness":30000000,"target":984,"stress":59.088714026770454},{"source":871,"area":1,"density":0.284,"id":"e1453","stiffness":30000000,"target":982,"stress":-585.392069500035},{"source":638,"area":1,"density":0.284,"id":"e1454","stiffness":30000000,"target":980,"stress":21.172290004544234},{"source":970,"area":1,"density":0.284,"id":"e1455","stiffness":30000000,"target":986,"stress":-604.2446765685362},{"source":987,"area":1,"density":0.284,"id":"e1456","stiffness":30000000,"target":988,"stress":-21.409561227705762},{"source":988,"area":1,"density":0.284,"id":"e1457","stiffness":30000000,"target":913,"stress":24.093092562335872},{"source":913,"area":1,"density":0.284,"id":"e1458","stiffness":30000000,"target":989,"stress":25.91659325894729},{"source":989,"area":1,"density":0.284,"id":"e1459","stiffness":30000000,"target":990,"stress":-0.10103053828894147},{"source":990,"area":1,"density":0.284,"id":"e1460","stiffness":30000000,"target":991,"stress":-18.725640635384426},{"source":991,"area":1,"density":0.284,"id":"e1461","stiffness":30000000,"target":909,"stress":80.73271365294708},{"source":909,"area":1,"density":0.284,"id":"e1462","stiffness":30000000,"target":992,"stress":60.132998163953154},{"source":992,"area":1,"density":0.284,"id":"e1463","stiffness":30000000,"target":987,"stress":-0.5479147302980816},{"source":894,"area":1,"density":0.284,"id":"e1464","stiffness":30000000,"target":988,"stress":39.88900407972915},{"source":905,"area":1,"density":0.284,"id":"e1465","stiffness":30000000,"target":989,"stress":-35.775863280216846},{"source":568,"area":1,"density":0.284,"id":"e1466","stiffness":30000000,"target":991,"stress":97.64496394582368},{"source":906,"area":1,"density":0.284,"id":"e1467","stiffness":30000000,"target":992,"stress":-75.00519142580102},{"source":996,"area":1,"density":0.284,"id":"e1468","stiffness":30000000,"target":997,"stress":-81.57464217497717},{"source":997,"area":1,"density":0.284,"id":"e1469","stiffness":30000000,"target":998,"stress":-331.3370139892717},{"source":998,"area":1,"density":0.284,"id":"e1470","stiffness":30000000,"target":999,"stress":216.76234710489575},{"source":999,"area":1,"density":0.284,"id":"e1471","stiffness":30000000,"target":1000,"stress":-228.85273339195896},{"source":1000,"area":1,"density":0.284,"id":"e1472","stiffness":30000000,"target":1001,"stress":-159.38797680721035},{"source":1001,"area":1,"density":0.284,"id":"e1473","stiffness":30000000,"target":1002,"stress":-123.31380845330386},{"source":1002,"area":1,"density":0.284,"id":"e1474","stiffness":30000000,"target":1003,"stress":227.03975861819802},{"source":1003,"area":1,"density":0.284,"id":"e1475","stiffness":30000000,"target":996,"stress":-57.09738326345844},{"source":995,"area":1,"density":0.284,"id":"e1476","stiffness":30000000,"target":997,"stress":-166.3483339187606},{"source":993,"area":1,"density":0.284,"id":"e1477","stiffness":30000000,"target":999,"stress":-362.88139707524823},{"source":994,"area":1,"density":0.284,"id":"e1478","stiffness":30000000,"target":1001,"stress":86.02695909216018},{"source":894,"area":1,"density":0.284,"id":"e1479","stiffness":30000000,"target":1003,"stress":-210.40651126237552},{"source":1006,"area":1,"density":0.284,"id":"e1480","stiffness":30000000,"target":1007,"stress":-34.971496651521534},{"source":1007,"area":1,"density":0.284,"id":"e1481","stiffness":30000000,"target":1008,"stress":-19.784020151268898},{"source":1008,"area":1,"density":0.284,"id":"e1482","stiffness":30000000,"target":1009,"stress":-9.053803970235288},{"source":1009,"area":1,"density":0.284,"id":"e1483","stiffness":30000000,"target":1010,"stress":117.33395173087614},{"source":1010,"area":1,"density":0.284,"id":"e1484","stiffness":30000000,"target":1011,"stress":6.412582532285743},{"source":1011,"area":1,"density":0.284,"id":"e1485","stiffness":30000000,"target":1012,"stress":66.6890260698865},{"source":1012,"area":1,"density":0.284,"id":"e1486","stiffness":30000000,"target":1013,"stress":48.693088733532285},{"source":1013,"area":1,"density":0.284,"id":"e1487","stiffness":30000000,"target":1006,"stress":8.100545642545457},{"source":670,"area":1,"density":0.284,"id":"e1488","stiffness":30000000,"target":1011,"stress":50.81648443339613},{"source":1004,"area":1,"density":0.284,"id":"e1489","stiffness":30000000,"target":1013,"stress":-48.4629363350348},{"source":993,"area":1,"density":0.284,"id":"e1490","stiffness":30000000,"target":1007,"stress":4.647912317812247},{"source":1005,"area":1,"density":0.284,"id":"e1491","stiffness":30000000,"target":1009,"stress":110.82976512828718},{"source":672,"area":1,"density":0.284,"id":"e1492","stiffness":30000000,"target":680,"stress":-42.51960015886173},{"source":568,"area":1,"density":0.284,"id":"e1493","stiffness":30000000,"target":678,"stress":-486.51709457087236},{"source":671,"area":1,"density":0.284,"id":"e1494","stiffness":30000000,"target":676,"stress":53.95626057943549},{"source":670,"area":1,"density":0.284,"id":"e1495","stiffness":30000000,"target":674,"stress":-535.9398478465225},{"source":1014,"area":1,"density":0.284,"id":"e1496","stiffness":30000000,"target":1015,"stress":114.30786676037422},{"source":1015,"area":1,"density":0.284,"id":"e1497","stiffness":30000000,"target":1016,"stress":-248.1368558754463},{"source":1016,"area":1,"density":0.284,"id":"e1498","stiffness":30000000,"target":1017,"stress":-239.79700183153784},{"source":1017,"area":1,"density":0.284,"id":"e1499","stiffness":30000000,"target":1018,"stress":-59.85744653257818},{"source":1018,"area":1,"density":0.284,"id":"e1500","stiffness":30000000,"target":1019,"stress":79.98802233442815},{"source":1019,"area":1,"density":0.284,"id":"e1501","stiffness":30000000,"target":1020,"stress":-214.11120217609226},{"source":1020,"area":1,"density":0.284,"id":"e1502","stiffness":30000000,"target":1021,"stress":-187.37347702910526},{"source":1021,"area":1,"density":0.284,"id":"e1503","stiffness":30000000,"target":1014,"stress":31.461173283113112},{"source":1004,"area":1,"density":0.284,"id":"e1504","stiffness":30000000,"target":1019,"stress":-356.7924186106238},{"source":671,"area":1,"density":0.284,"id":"e1505","stiffness":30000000,"target":1021,"stress":97.57194012286675},{"source":905,"area":1,"density":0.284,"id":"e1506","stiffness":30000000,"target":1015,"stress":-358.54498114231706},{"source":994,"area":1,"density":0.284,"id":"e1507","stiffness":30000000,"target":1017,"stress":45.65184288119818},{"source":1022,"area":1,"density":0.284,"id":"e1508","stiffness":30000000,"target":1023,"stress":125.79140032137127},{"source":1023,"area":1,"density":0.284,"id":"e1509","stiffness":30000000,"target":1024,"stress":-342.9983075963354},{"source":1024,"area":1,"density":0.284,"id":"e1510","stiffness":30000000,"target":1025,"stress":-338.50473881644814},{"source":1025,"area":1,"density":0.284,"id":"e1511","stiffness":30000000,"target":1026,"stress":61.396425237555796},{"source":1026,"area":1,"density":0.284,"id":"e1512","stiffness":30000000,"target":1027,"stress":50.72536342047194},{"source":1027,"area":1,"density":0.284,"id":"e1513","stiffness":30000000,"target":1028,"stress":-370.81693287917983},{"source":1028,"area":1,"density":0.284,"id":"e1514","stiffness":30000000,"target":1029,"stress":-352.3208871849079},{"source":1029,"area":1,"density":0.284,"id":"e1515","stiffness":30000000,"target":1022,"stress":133.0288496713015},{"source":995,"area":1,"density":0.284,"id":"e1516","stiffness":30000000,"target":1027,"stress":-185.623915773686},{"source":906,"area":1,"density":0.284,"id":"e1517","stiffness":30000000,"target":1025,"stress":-407.5820044314036},{"source":672,"area":1,"density":0.284,"id":"e1518","stiffness":30000000,"target":1023,"stress":16.583872310241862},{"source":1005,"area":1,"density":0.284,"id":"e1519","stiffness":30000000,"target":1029,"stress":-328.63986409898973},{"source":944,"area":1,"density":0.284,"id":"e1520","stiffness":30000000,"target":1030,"stress":-35.386451140862995},{"source":1030,"area":1,"density":0.284,"id":"e1521","stiffness":30000000,"target":950,"stress":49.24406741091268},{"source":950,"area":1,"density":0.284,"id":"e1522","stiffness":30000000,"target":1031,"stress":18.33566023207357},{"source":1031,"area":1,"density":0.284,"id":"e1523","stiffness":30000000,"target":948,"stress":48.04122542526189},{"source":933,"area":1,"density":0.284,"id":"e1524","stiffness":30000000,"target":1030,"stress":75.81170066362914},{"source":906,"area":1,"density":0.284,"id":"e1525","stiffness":30000000,"target":1031,"stress":14.517489069974982},{"source":608,"area":1,"density":0.284,"id":"e1526","stiffness":30000000,"target":947,"stress":116.2549610501975},{"source":943,"area":1,"density":0.284,"id":"e1527","stiffness":30000000,"target":945,"stress":-65.91207612374738},{"source":1034,"area":1,"density":0.284,"id":"e1528","stiffness":30000000,"target":1035,"stress":-60.58594183369712},{"source":1035,"area":1,"density":0.284,"id":"e1529","stiffness":30000000,"target":1036,"stress":-266.48245449952526},{"source":1036,"area":1,"density":0.284,"id":"e1530","stiffness":30000000,"target":1037,"stress":224.08229007157203},{"source":1037,"area":1,"density":0.284,"id":"e1531","stiffness":30000000,"target":1038,"stress":-239.35403679088716},{"source":1038,"area":1,"density":0.284,"id":"e1532","stiffness":30000000,"target":1039,"stress":-179.64137365930702},{"source":1039,"area":1,"density":0.284,"id":"e1533","stiffness":30000000,"target":1040,"stress":-195.09373683406145},{"source":1040,"area":1,"density":0.284,"id":"e1534","stiffness":30000000,"target":1041,"stress":189.22501804365982},{"source":1041,"area":1,"density":0.284,"id":"e1535","stiffness":30000000,"target":1034,"stress":-50.500067670880476},{"source":1033,"area":1,"density":0.284,"id":"e1536","stiffness":30000000,"target":1035,"stress":-135.24507774841658},{"source":1032,"area":1,"density":0.284,"id":"e1537","stiffness":30000000,"target":1037,"stress":-383.7627954914079},{"source":995,"area":1,"density":0.284,"id":"e1538","stiffness":30000000,"target":1039,"stress":43.68652185594252},{"source":933,"area":1,"density":0.284,"id":"e1539","stiffness":30000000,"target":1041,"stress":-170.33186779281152},{"source":1043,"area":1,"density":0.284,"id":"e1540","stiffness":30000000,"target":1044,"stress":4.729764580938897},{"source":1044,"area":1,"density":0.284,"id":"e1541","stiffness":30000000,"target":1045,"stress":-8.600145835759447},{"source":1045,"area":1,"density":0.284,"id":"e1542","stiffness":30000000,"target":1046,"stress":-30.64152037124256},{"source":1046,"area":1,"density":0.284,"id":"e1543","stiffness":30000000,"target":1047,"stress":112.33776892013644},{"source":1047,"area":1,"density":0.284,"id":"e1544","stiffness":30000000,"target":1048,"stress":8.301479781673585},{"source":1048,"area":1,"density":0.284,"id":"e1545","stiffness":30000000,"target":1049,"stress":41.02312920693264},{"source":1049,"area":1,"density":0.284,"id":"e1546","stiffness":30000000,"target":1050,"stress":16.769319969633113},{"source":1050,"area":1,"density":0.284,"id":"e1547","stiffness":30000000,"target":1043,"stress":74.94700973727302},{"source":710,"area":1,"density":0.284,"id":"e1548","stiffness":30000000,"target":1048,"stress":25.880731571062384},{"source":1005,"area":1,"density":0.284,"id":"e1549","stiffness":30000000,"target":1050,"stress":51.07332626535184},{"source":1032,"area":1,"density":0.284,"id":"e1550","stiffness":30000000,"target":1044,"stress":-16.233832095823693},{"source":1042,"area":1,"density":0.284,"id":"e1551","stiffness":30000000,"target":1046,"stress":136.65481467222676},{"source":711,"area":1,"density":0.284,"id":"e1552","stiffness":30000000,"target":719,"stress":-70.78121226245611},{"source":608,"area":1,"density":0.284,"id":"e1553","stiffness":30000000,"target":717,"stress":-497.810527111814},{"source":672,"area":1,"density":0.284,"id":"e1554","stiffness":30000000,"target":715,"stress":-23.779375518399593},{"source":710,"area":1,"density":0.284,"id":"e1555","stiffness":30000000,"target":713,"stress":-475.83736398312413},{"source":1005,"area":1,"density":0.284,"id":"e1556","stiffness":30000000,"target":1023,"stress":-396.3384705564211},{"source":672,"area":1,"density":0.284,"id":"e1557","stiffness":30000000,"target":1025,"stress":-45.29841965148966},{"source":906,"area":1,"density":0.284,"id":"e1558","stiffness":30000000,"target":1027,"stress":-569.6300598454122},{"source":995,"area":1,"density":0.284,"id":"e1559","stiffness":30000000,"target":1029,"stress":87.85399353902476},{"source":1051,"area":1,"density":0.284,"id":"e1560","stiffness":30000000,"target":1052,"stress":116.18320490078456},{"source":1052,"area":1,"density":0.284,"id":"e1561","stiffness":30000000,"target":1053,"stress":-346.526994917779},{"source":1053,"area":1,"density":0.284,"id":"e1562","stiffness":30000000,"target":1054,"stress":-339.26176576995056},{"source":1054,"area":1,"density":0.284,"id":"e1563","stiffness":30000000,"target":1055,"stress":60.586210234971624},{"source":1055,"area":1,"density":0.284,"id":"e1564","stiffness":30000000,"target":1056,"stress":49.38193890494817},{"source":1056,"area":1,"density":0.284,"id":"e1565","stiffness":30000000,"target":1057,"stress":-366.18011568931666},{"source":1057,"area":1,"density":0.284,"id":"e1566","stiffness":30000000,"target":1058,"stress":-343.26557848445873},{"source":1058,"area":1,"density":0.284,"id":"e1567","stiffness":30000000,"target":1051,"stress":125.30249981649128},{"source":1033,"area":1,"density":0.284,"id":"e1568","stiffness":30000000,"target":1056,"stress":-208.05117279956343},{"source":943,"area":1,"density":0.284,"id":"e1569","stiffness":30000000,"target":1054,"stress":-377.7970767858254},{"source":711,"area":1,"density":0.284,"id":"e1570","stiffness":30000000,"target":1052,"stress":-35.414164518341714},{"source":1042,"area":1,"density":0.284,"id":"e1571","stiffness":30000000,"target":1058,"stress":-284.3881726866591},{"source":960,"area":1,"density":0.284,"id":"e1572","stiffness":30000000,"target":978,"stress":57.71939881846158},{"source":943,"area":1,"density":0.284,"id":"e1573","stiffness":30000000,"target":976,"stress":55.53994011083873},{"source":637,"area":1,"density":0.284,"id":"e1574","stiffness":30000000,"target":974,"stress":44.34354156415475},{"source":970,"area":1,"density":0.284,"id":"e1575","stiffness":30000000,"target":972,"stress":-54.600732982497675},{"source":1061,"area":1,"density":0.284,"id":"e1576","stiffness":30000000,"target":1062,"stress":-149.31185978685747},{"source":1062,"area":1,"density":0.284,"id":"e1577","stiffness":30000000,"target":1063,"stress":-195.6976131555391},{"source":1063,"area":1,"density":0.284,"id":"e1578","stiffness":30000000,"target":1064,"stress":199.95720218013804},{"source":1064,"area":1,"density":0.284,"id":"e1579","stiffness":30000000,"target":1065,"stress":-273.46097474766395},{"source":1065,"area":1,"density":0.284,"id":"e1580","stiffness":30000000,"target":1066,"stress":-216.87626785060172},{"source":1066,"area":1,"density":0.284,"id":"e1581","stiffness":30000000,"target":1067,"stress":-138.51488584300213},{"source":1067,"area":1,"density":0.284,"id":"e1582","stiffness":30000000,"target":1068,"stress":179.19697361167968},{"source":1068,"area":1,"density":0.284,"id":"e1583","stiffness":30000000,"target":1061,"stress":-152.16487175752277},{"source":1060,"area":1,"density":0.284,"id":"e1584","stiffness":30000000,"target":1062,"stress":20.44619328139224},{"source":1059,"area":1,"density":0.284,"id":"e1585","stiffness":30000000,"target":1064,"stress":-405.5255352573141},{"source":1033,"area":1,"density":0.284,"id":"e1586","stiffness":30000000,"target":1066,"stress":133.85933634540908},{"source":960,"area":1,"density":0.284,"id":"e1587","stiffness":30000000,"target":1068,"stress":-269.47105289356045},{"source":1070,"area":1,"density":0.284,"id":"e1588","stiffness":30000000,"target":1071,"stress":45.52553774874857},{"source":1071,"area":1,"density":0.284,"id":"e1589","stiffness":30000000,"target":1072,"stress":0.7688971503294953},{"source":1072,"area":1,"density":0.284,"id":"e1590","stiffness":30000000,"target":1073,"stress":-29.18574474710619},{"source":1073,"area":1,"density":0.284,"id":"e1591","stiffness":30000000,"target":1074,"stress":-45.26442747190174},{"source":1074,"area":1,"density":0.284,"id":"e1592","stiffness":30000000,"target":1075,"stress":0.5361300549637904},{"source":1075,"area":1,"density":0.284,"id":"e1593","stiffness":30000000,"target":1076,"stress":80.1867072157145},{"source":1076,"area":1,"density":0.284,"id":"e1594","stiffness":30000000,"target":1077,"stress":63.034134990939954},{"source":1077,"area":1,"density":0.284,"id":"e1595","stiffness":30000000,"target":1070,"stress":87.95652252490724},{"source":739,"area":1,"density":0.284,"id":"e1596","stiffness":30000000,"target":1075,"stress":84.88011812600622},{"source":1042,"area":1,"density":0.284,"id":"e1597","stiffness":30000000,"target":1077,"stress":14.096314865643285},{"source":1059,"area":1,"density":0.284,"id":"e1598","stiffness":30000000,"target":1071,"stress":-37.997591140388785},{"source":1069,"area":1,"density":0.284,"id":"e1599","stiffness":30000000,"target":1073,"stress":-1.2628087591999073},{"source":740,"area":1,"density":0.284,"id":"e1600","stiffness":30000000,"target":748,"stress":-113.143753377246},{"source":637,"area":1,"density":0.284,"id":"e1601","stiffness":30000000,"target":746,"stress":-460.8800024419221},{"source":711,"area":1,"density":0.284,"id":"e1602","stiffness":30000000,"target":744,"stress":-116.92870739669604},{"source":739,"area":1,"density":0.284,"id":"e1603","stiffness":30000000,"target":742,"stress":-368.29950492830557},{"source":1042,"area":1,"density":0.284,"id":"e1604","stiffness":30000000,"target":1052,"stress":-444.43885022930976},{"source":711,"area":1,"density":0.284,"id":"e1605","stiffness":30000000,"target":1054,"stress":-18.76487142170126},{"source":943,"area":1,"density":0.284,"id":"e1606","stiffness":30000000,"target":1056,"stress":-591.6629591730691},{"source":1033,"area":1,"density":0.284,"id":"e1607","stiffness":30000000,"target":1058,"stress":114.00714115352373},{"source":1078,"area":1,"density":0.284,"id":"e1608","stiffness":30000000,"target":1079,"stress":-93.85152951371504},{"source":1079,"area":1,"density":0.284,"id":"e1609","stiffness":30000000,"target":1080,"stress":-192.02815634964566},{"source":1080,"area":1,"density":0.284,"id":"e1610","stiffness":30000000,"target":1081,"stress":-171.06551491437105},{"source":1081,"area":1,"density":0.284,"id":"e1611","stiffness":30000000,"target":1082,"stress":73.54432805675033},{"source":1082,"area":1,"density":0.284,"id":"e1612","stiffness":30000000,"target":1083,"stress":-50.71798762857258},{"source":1083,"area":1,"density":0.284,"id":"e1613","stiffness":30000000,"target":1084,"stress":-163.13390342946536},{"source":1084,"area":1,"density":0.284,"id":"e1614","stiffness":30000000,"target":1085,"stress":-172.58843811103216},{"source":1085,"area":1,"density":0.284,"id":"e1615","stiffness":30000000,"target":1078,"stress":73.2333443918316},{"source":1060,"area":1,"density":0.284,"id":"e1616","stiffness":30000000,"target":1083,"stress":10.851159728169534},{"source":970,"area":1,"density":0.284,"id":"e1617","stiffness":30000000,"target":1081,"stress":-288.5868562263358},{"source":740,"area":1,"density":0.284,"id":"e1618","stiffness":30000000,"target":1079,"stress":1.198677717043211},{"source":1069,"area":1,"density":0.284,"id":"e1619","stiffness":30000000,"target":1085,"stress":-331.74357951347207}],"ndofs":6516} \ No newline at end of file diff --git a/01_Code/physical_computing_interface/simulation/json/trialJuliaParallel.json b/01_Code/physical_computing_interface/simulation/json/trialJuliaParallel.json new file mode 100644 index 0000000000000000000000000000000000000000..e46c2b75484bcfc9cf13fabba9605a1e289825c8 --- /dev/null +++ b/01_Code/physical_computing_interface/simulation/json/trialJuliaParallel.json @@ -0,0 +1 @@ +{"nodes":[{"degrees_of_freedom":[0,1,2,3,4,5],"id":"n0","parent":"11","position":{"x":5,"z":0,"y":-5},"restrained_degrees_of_freedom":[true,true,true,true,true,true],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0,"z":0,"y":0},"angle":{"x":0,"z":0,"y":0}},{"degrees_of_freedom":[6,7,8,9,10,11],"id":"n1","parent":"11","position":{"x":0,"z":-5,"y":-5},"restrained_degrees_of_freedom":[true,true,true,true,true,true],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0,"z":0,"y":0},"angle":{"x":0,"z":0,"y":0}},{"degrees_of_freedom":[12,13,14,15,16,17],"id":"n2","parent":"11","position":{"x":-5,"z":0,"y":-5},"restrained_degrees_of_freedom":[true,true,true,true,true,true],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0,"z":0,"y":0},"angle":{"x":0,"z":0,"y":0}},{"degrees_of_freedom":[18,19,20,21,22,23],"id":"n3","parent":"11","position":{"x":0,"z":5,"y":-5},"restrained_degrees_of_freedom":[true,true,true,true,true,true],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0,"z":0,"y":0},"angle":{"x":0,"z":0,"y":0}},{"degrees_of_freedom":[24,25,26,27,28,29],"id":"n4","parent":"11","position":{"x":5,"z":0,"y":5},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-2.622669004540762e-5,"z":-3.649807507503507e-5,"y":-0.00018152598156514214},"angle":{"x":0.0,"z":0.0,"y":0.0}},{"degrees_of_freedom":[30,31,32,33,34,35],"id":"n5","parent":"11","position":{"x":5,"z":-5,"y":0},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-1.0664850583263008e-5,"z":-4.622496070950513e-5,"y":-9.241220111914953e-5},"angle":{"x":0.0,"z":0.0,"y":0.0}},{"degrees_of_freedom":[36,37,38,39,40,41],"id":"n6","parent":"11","position":{"x":5,"z":5,"y":0},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-1.0415461397413328e-5,"z":-7.979524037948363e-6,"y":-8.226909488574707e-5},"angle":{"x":0.0,"z":0.0,"y":0.0}},{"degrees_of_freedom":[42,43,44,45,46,47],"id":"n7","parent":"11","position":{"x":-5,"z":0,"y":5},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-5.943672435276918e-5,"z":-4.647451603141889e-5,"y":-0.00019857079727543677},"angle":{"x":0.0,"z":0.0,"y":0.0}},{"degrees_of_freedom":[48,49,50,51,52,53],"id":"n8","parent":"11","position":{"x":0,"z":-5,"y":5},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-5.377908933265365e-5,"z":-4.9267195367282344e-5,"y":-0.0001966219143571467},"angle":{"x":0.0,"z":0.0,"y":0.0}},{"degrees_of_freedom":[54,55,56,57,58,59],"id":"n9","parent":"11","position":{"x":0,"z":5,"y":5},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-4.7621166056535307e-5,"z":-2.152282985243175e-5,"y":-0.00018333998349201976},"angle":{"x":0.0,"z":0.0,"y":0.0}},{"degrees_of_freedom":[60,61,62,63,64,65],"id":"n10","parent":"11","position":{"x":-5,"z":-5,"y":0},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-7.540371661903145e-5,"z":-6.276743390482017e-5,"y":-0.00012068530154571406},"angle":{"x":0.0,"z":0.0,"y":0.0}},{"degrees_of_freedom":[66,67,68,69,70,71],"id":"n11","parent":"11","position":{"x":-5,"z":5,"y":0},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-6.41110110322377e-5,"z":-9.330334893963357e-6,"y":-9.601815856311724e-5},"angle":{"x":0.0,"z":0.0,"y":0.0}},{"degrees_of_freedom":[72,73,74,75,76,77],"id":"n12","parent":"11","position":{"x":5,"z":10,"y":-5},"restrained_degrees_of_freedom":[true,true,true,true,true,true],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0,"z":0,"y":0},"angle":{"x":0,"z":0,"y":0}},{"degrees_of_freedom":[78,79,80,81,82,83],"id":"n13","parent":"11","position":{"x":-5,"z":10,"y":-5},"restrained_degrees_of_freedom":[true,true,true,true,true,true],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0,"z":0,"y":0},"angle":{"x":0,"z":0,"y":0}},{"degrees_of_freedom":[84,85,86,87,88,89],"id":"n14","parent":"11","position":{"x":0,"z":15,"y":-5},"restrained_degrees_of_freedom":[true,true,true,true,true,true],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0,"z":0,"y":0},"angle":{"x":0,"z":0,"y":0}},{"degrees_of_freedom":[90,91,92,93,94,95],"id":"n15","parent":"11","position":{"x":5,"z":10,"y":5},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-2.471553384292074e-5,"z":4.293076360450236e-15,"y":-0.00017523239732911627},"angle":{"x":0.0,"z":0.0,"y":0.0}},{"degrees_of_freedom":[96,97,98,99,100,101],"id":"n16","parent":"11","position":{"x":5,"z":15,"y":0},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-1.0415461397259376e-5,"z":7.979524038239048e-6,"y":-8.226909488636887e-5},"angle":{"x":0.0,"z":0.0,"y":0.0}},{"degrees_of_freedom":[102,103,104,105,106,107],"id":"n17","parent":"11","position":{"x":-5,"z":10,"y":5},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-5.0115326036532106e-5,"z":2.2989053293626976e-15,"y":-0.00018616562060585213},"angle":{"x":0.0,"z":0.0,"y":0.0}},{"degrees_of_freedom":[108,109,110,111,112,113],"id":"n18","parent":"11","position":{"x":0,"z":15,"y":5},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-4.762116605692124e-5,"z":2.152282984822276e-5,"y":-0.00018333998349205776},"angle":{"x":0.0,"z":0.0,"y":-0.0}},{"degrees_of_freedom":[114,115,116,117,118,119],"id":"n19","parent":"11","position":{"x":-5,"z":15,"y":0},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-6.411101103230907e-5,"z":9.330334892218617e-6,"y":-9.60181585633705e-5},"angle":{"x":0.0,"z":0.0,"y":-0.0}},{"degrees_of_freedom":[120,121,122,123,124,125],"id":"n20","parent":"11","position":{"x":5,"z":20,"y":-5},"restrained_degrees_of_freedom":[true,true,true,true,true,true],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0,"z":0,"y":0},"angle":{"x":0,"z":0,"y":0}},{"degrees_of_freedom":[126,127,128,129,130,131],"id":"n21","parent":"11","position":{"x":-5,"z":20,"y":-5},"restrained_degrees_of_freedom":[true,true,true,true,true,true],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0,"z":0,"y":0},"angle":{"x":0,"z":0,"y":0}},{"degrees_of_freedom":[132,133,134,135,136,137],"id":"n22","parent":"11","position":{"x":0,"z":25,"y":-5},"restrained_degrees_of_freedom":[true,true,true,true,true,true],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0,"z":0,"y":0},"angle":{"x":0,"z":0,"y":0}},{"degrees_of_freedom":[138,139,140,141,142,143],"id":"n23","parent":"11","position":{"x":5,"z":20,"y":5},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-2.6226690045527584e-5,"z":3.649807507861705e-5,"y":-0.00018152598156441667},"angle":{"x":0.0,"z":0.0,"y":0.0}},{"degrees_of_freedom":[144,145,146,147,148,149],"id":"n24","parent":"11","position":{"x":5,"z":25,"y":0},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-1.0664850583020496e-5,"z":4.6224960711431364e-5,"y":-9.241220111875255e-5},"angle":{"x":0.0,"z":-0.0,"y":0.0}},{"degrees_of_freedom":[150,151,152,153,154,155],"id":"n25","parent":"11","position":{"x":-5,"z":20,"y":5},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-5.94367243532791e-5,"z":4.647451603424284e-5,"y":-0.0001985707972754713},"angle":{"x":0.0,"z":0.0,"y":-0.0}},{"degrees_of_freedom":[156,157,158,159,160,161],"id":"n26","parent":"11","position":{"x":0,"z":25,"y":5},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-5.377908933215693e-5,"z":4.9267195364944194e-5,"y":-0.00019662191435669893},"angle":{"x":0.0,"z":0.0,"y":0.0}},{"degrees_of_freedom":[162,163,164,165,166,167],"id":"n27","parent":"11","position":{"x":-5,"z":25,"y":0},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-7.540371661905112e-5,"z":6.27674339059022e-5,"y":-0.00012068530154538796},"angle":{"x":0.0,"z":0.0,"y":-0.0}},{"degrees_of_freedom":[168,169,170,171,172,173],"id":"n28","parent":"11","position":{"x":5,"z":0,"y":15},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-3.157181939621158e-5,"z":-4.391511017315585e-5,"y":-0.00038689371772921127},"angle":{"x":0.0,"z":0.0,"y":0.0}},{"degrees_of_freedom":[174,175,176,177,178,179],"id":"n29","parent":"11","position":{"x":5,"z":-5,"y":10},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-3.15755574346331e-5,"z":-7.619474063173224e-5,"y":-0.00028577052341646883},"angle":{"x":0.0,"z":-0.0,"y":0.0}},{"degrees_of_freedom":[180,181,182,183,184,185],"id":"n30","parent":"11","position":{"x":5,"z":5,"y":10},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-2.8374076014173224e-5,"z":-2.2306797506710552e-5,"y":-0.0002809613713139767},"angle":{"x":0.0,"z":0.0,"y":0.0}},{"degrees_of_freedom":[186,187,188,189,190,191],"id":"n31","parent":"11","position":{"x":-5,"z":0,"y":15},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-6.74773549988108e-5,"z":-5.453608168383314e-5,"y":-0.00039037793920424814},"angle":{"x":0.0,"z":0.0,"y":0.0}},{"degrees_of_freedom":[192,193,194,195,196,197],"id":"n32","parent":"11","position":{"x":0,"z":-5,"y":15},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-6.265110343997018e-5,"z":-5.64156780532844e-5,"y":-0.0003870629312411871},"angle":{"x":0.0,"z":0.0,"y":0.0}},{"degrees_of_freedom":[198,199,200,201,202,203],"id":"n33","parent":"11","position":{"x":0,"z":5,"y":15},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-5.780310357938788e-5,"z":-2.569366250995223e-5,"y":-0.00039000978940298143},"angle":{"x":0.0,"z":0.0,"y":-0.0}},{"degrees_of_freedom":[204,205,206,207,208,209],"id":"n34","parent":"11","position":{"x":-5,"z":-5,"y":10},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-0.00010749425148199805,"z":-9.216023831466012e-5,"y":-0.00029664225858187185},"angle":{"x":0.0,"z":0.0,"y":0.0}},{"degrees_of_freedom":[210,211,212,213,214,215],"id":"n35","parent":"11","position":{"x":-5,"z":5,"y":10},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-0.00010088870315271804,"z":-2.789774547817684e-5,"y":-0.00028995401058972976},"angle":{"x":0.0,"z":0.0,"y":-0.0}},{"degrees_of_freedom":[216,217,218,219,220,221],"id":"n36","parent":"11","position":{"x":5,"z":10,"y":15},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-3.0281177719633474e-5,"z":3.972900641371885e-15,"y":-0.0003908801157851507},"angle":{"x":0.0,"z":0.0,"y":0.0}},{"degrees_of_freedom":[222,223,224,225,226,227],"id":"n37","parent":"11","position":{"x":5,"z":15,"y":10},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-2.8374076014682307e-5,"z":2.2306797502773756e-5,"y":-0.0002809613713144747},"angle":{"x":0.0,"z":0.0,"y":-0.0}},{"degrees_of_freedom":[228,229,230,231,232,233],"id":"n38","parent":"11","position":{"x":-5,"z":10,"y":15},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-5.8763159630518174e-5,"z":1.503530880406231e-15,"y":-0.00039518547412590563},"angle":{"x":0.0,"z":0.0,"y":-0.0}},{"degrees_of_freedom":[234,235,236,237,238,239],"id":"n39","parent":"11","position":{"x":0,"z":15,"y":15},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-5.7803103579533035e-5,"z":2.56936625084787e-5,"y":-0.0003900097894026942},"angle":{"x":0.0,"z":0.0,"y":0.0}},{"degrees_of_freedom":[240,241,242,243,244,245],"id":"n40","parent":"11","position":{"x":-5,"z":15,"y":10},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-0.0001008887031527571,"z":2.7897745477413643e-5,"y":-0.0002899540105904807},"angle":{"x":0.0,"z":0.0,"y":0.0}},{"degrees_of_freedom":[246,247,248,249,250,251],"id":"n41","parent":"11","position":{"x":5,"z":20,"y":15},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-3.157181939583025e-5,"z":4.391511017484086e-5,"y":-0.0003868937177300421},"angle":{"x":0.0,"z":0.0,"y":0.0}},{"degrees_of_freedom":[252,253,254,255,256,257],"id":"n42","parent":"11","position":{"x":5,"z":25,"y":10},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-3.15755574344165e-5,"z":7.619474063370546e-5,"y":-0.000285770523415483},"angle":{"x":0.0,"z":0.0,"y":-0.0}},{"degrees_of_freedom":[258,259,260,261,262,263],"id":"n43","parent":"11","position":{"x":-5,"z":20,"y":15},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-6.747735499885347e-5,"z":5.453608168261128e-5,"y":-0.0003903779392038709},"angle":{"x":0.0,"z":-0.0,"y":0.0}},{"degrees_of_freedom":[264,265,266,267,268,269],"id":"n44","parent":"11","position":{"x":0,"z":25,"y":15},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-6.265110344037391e-5,"z":5.64156780503657e-5,"y":-0.00038706293124060153},"angle":{"x":0.0,"z":0.0,"y":-0.0}},{"degrees_of_freedom":[270,271,272,273,274,275],"id":"n45","parent":"11","position":{"x":-5,"z":25,"y":10},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-0.00010749425148202485,"z":9.216023831524612e-5,"y":-0.00029664225858100373},"angle":{"x":0.0,"z":-0.0,"y":0.0}},{"degrees_of_freedom":[276,277,278,279,280,281],"id":"n46","parent":"11","position":{"x":5,"z":0,"y":25},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":-400},"displacement":{"x":-2.640357923516516e-5,"z":-2.7593310076325773e-5,"y":-0.000684248754903702},"angle":{"x":0.0,"z":0.0,"y":0.0}},{"degrees_of_freedom":[282,283,284,285,286,287],"id":"n47","parent":"11","position":{"x":5,"z":-5,"y":20},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-2.739787689731868e-5,"z":-6.843540228700012e-5,"y":-0.0005094201798121322},"angle":{"x":0.0,"z":0.0,"y":0.0}},{"degrees_of_freedom":[288,289,290,291,292,293],"id":"n48","parent":"11","position":{"x":5,"z":5,"y":20},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-2.5529458048716966e-5,"z":-1.7609799416615502e-5,"y":-0.0005242205440922308},"angle":{"x":0.0,"z":-0.0,"y":0.0}},{"degrees_of_freedom":[294,295,296,297,298,299],"id":"n49","parent":"11","position":{"x":-5,"z":0,"y":25},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":-400},"displacement":{"x":-5.054157383271568e-5,"z":-3.712901865602862e-5,"y":-0.0006807830087482441},"angle":{"x":0.0,"z":0.0,"y":0.0}},{"degrees_of_freedom":[300,301,302,303,304,305],"id":"n50","parent":"11","position":{"x":0,"z":-5,"y":25},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":-400},"displacement":{"x":-5.105490188550998e-5,"z":-2.939725528546853e-5,"y":-0.0006698870233351675},"angle":{"x":0.0,"z":0.0,"y":0.0}},{"degrees_of_freedom":[306,307,308,309,310,311],"id":"n51","parent":"11","position":{"x":0,"z":5,"y":25},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":-400},"displacement":{"x":-4.7989864477355407e-5,"z":-1.7252236252765174e-5,"y":-0.0006869368037637531},"angle":{"x":0.0,"z":0.0,"y":-0.0}},{"degrees_of_freedom":[312,313,314,315,316,317],"id":"n52","parent":"11","position":{"x":-5,"z":-5,"y":20},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-9.944414308591107e-5,"z":-8.304862567770509e-5,"y":-0.0004989706872073259},"angle":{"x":0.0,"z":0.0,"y":0.0}},{"degrees_of_freedom":[318,319,320,321,322,323],"id":"n53","parent":"11","position":{"x":-5,"z":5,"y":20},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-9.690093516113132e-5,"z":-2.2608352359714697e-5,"y":-0.0005189452126844052},"angle":{"x":0.0,"z":0.0,"y":-0.0}},{"degrees_of_freedom":[324,325,326,327,328,329],"id":"n54","parent":"11","position":{"x":5,"z":10,"y":25},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":-400},"displacement":{"x":-2.5436478834849228e-5,"z":3.919908888870616e-15,"y":-0.0006793167892824741},"angle":{"x":0.0,"z":0.0,"y":-0.0}},{"degrees_of_freedom":[330,331,332,333,334,335],"id":"n55","parent":"11","position":{"x":5,"z":15,"y":20},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-2.5529458049329578e-5,"z":1.7609799415425506e-5,"y":-0.0005242205440920303},"angle":{"x":0.0,"z":0.0,"y":-0.0}},{"degrees_of_freedom":[336,337,338,339,340,341],"id":"n56","parent":"11","position":{"x":-5,"z":10,"y":25},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":-400},"displacement":{"x":-4.217420980364284e-5,"z":1.8563881549496783e-15,"y":-0.0006782558432357761},"angle":{"x":0.0,"z":0.0,"y":-0.0}},{"degrees_of_freedom":[342,343,344,345,346,347],"id":"n57","parent":"11","position":{"x":0,"z":15,"y":25},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":-400},"displacement":{"x":-4.798986447810033e-5,"z":1.7252236247593926e-5,"y":-0.0006869368037634386},"angle":{"x":0.0,"z":0.0,"y":0.0}},{"degrees_of_freedom":[348,349,350,351,352,353],"id":"n58","parent":"11","position":{"x":-5,"z":15,"y":20},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-9.690093516161118e-5,"z":2.2608352360963264e-5,"y":-0.0005189452126850586},"angle":{"x":0.0,"z":0.0,"y":0.0}},{"degrees_of_freedom":[354,355,356,357,358,359],"id":"n59","parent":"11","position":{"x":5,"z":20,"y":25},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":-400},"displacement":{"x":-2.640357923608995e-5,"z":2.7593310081519257e-5,"y":-0.0006842487549026783},"angle":{"x":0.0,"z":0.0,"y":0.0}},{"degrees_of_freedom":[360,361,362,363,364,365],"id":"n60","parent":"11","position":{"x":5,"z":25,"y":20},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-2.739787689707269e-5,"z":6.843540228079202e-5,"y":-0.000509420179812258},"angle":{"x":0.0,"z":0.0,"y":-0.0}},{"degrees_of_freedom":[366,367,368,369,370,371],"id":"n61","parent":"11","position":{"x":-5,"z":20,"y":25},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":-400},"displacement":{"x":-5.0541573832729864e-5,"z":3.7129018659037074e-5,"y":-0.0006807830087474601},"angle":{"x":0.0,"z":0.0,"y":0.0}},{"degrees_of_freedom":[372,373,374,375,376,377],"id":"n62","parent":"11","position":{"x":0,"z":25,"y":25},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":-400},"displacement":{"x":-5.105490188500528e-5,"z":2.9397255284851536e-5,"y":-0.0006698870233334568},"angle":{"x":0.0,"z":0.0,"y":-0.0}},{"degrees_of_freedom":[378,379,380,381,382,383],"id":"n63","parent":"11","position":{"x":-5,"z":25,"y":20},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-9.944414308602272e-5,"z":8.304862567835243e-5,"y":-0.0004989706872080032},"angle":{"x":0.0,"z":-0.0,"y":0.0}},{"degrees_of_freedom":[384,385,386,387,388,389],"id":"n64","parent":"11","position":{"x":15,"z":0,"y":-5},"restrained_degrees_of_freedom":[true,true,true,true,true,true],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0,"z":0,"y":0},"angle":{"x":0,"z":0,"y":0}},{"degrees_of_freedom":[390,391,392,393,394,395],"id":"n65","parent":"11","position":{"x":10,"z":-5,"y":-5},"restrained_degrees_of_freedom":[true,true,true,true,true,true],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0,"z":0,"y":0},"angle":{"x":0,"z":0,"y":0}},{"degrees_of_freedom":[396,397,398,399,400,401],"id":"n66","parent":"11","position":{"x":10,"z":5,"y":-5},"restrained_degrees_of_freedom":[true,true,true,true,true,true],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0,"z":0,"y":0},"angle":{"x":0,"z":0,"y":0}},{"degrees_of_freedom":[402,403,404,405,406,407],"id":"n67","parent":"11","position":{"x":15,"z":0,"y":5},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":2.6226690049924064e-5,"z":-3.64980750802813e-5,"y":-0.00018152598156451446},"angle":{"x":0.0,"z":-0.0,"y":0.0}},{"degrees_of_freedom":[408,409,410,411,412,413],"id":"n68","parent":"11","position":{"x":15,"z":-5,"y":0},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":1.0664850591705531e-5,"z":-4.62249607120993e-5,"y":-9.24122011208084e-5},"angle":{"x":0.0,"z":0.0,"y":0.0}},{"degrees_of_freedom":[414,415,416,417,418,419],"id":"n69","parent":"11","position":{"x":15,"z":5,"y":0},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":1.0415461390419565e-5,"z":-7.979524039638566e-6,"y":-8.226909488656813e-5},"angle":{"x":0.0,"z":0.0,"y":-0.0}},{"degrees_of_freedom":[420,421,422,423,424,425],"id":"n70","parent":"11","position":{"x":10,"z":-5,"y":5},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":1.4093426514988682e-14,"z":-3.967894390557354e-5,"y":-0.00018193413083052848},"angle":{"x":0.0,"z":0.0,"y":0.0}},{"degrees_of_freedom":[426,427,428,429,430,431],"id":"n71","parent":"11","position":{"x":10,"z":5,"y":5},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-8.973959241469921e-15,"z":-1.833652349287708e-5,"y":-0.0001745490197353032},"angle":{"x":0.0,"z":0.0,"y":0.0}},{"degrees_of_freedom":[432,433,434,435,436,437],"id":"n72","parent":"11","position":{"x":15,"z":10,"y":-5},"restrained_degrees_of_freedom":[true,true,true,true,true,true],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0,"z":0,"y":0},"angle":{"x":0,"z":0,"y":0}},{"degrees_of_freedom":[438,439,440,441,442,443],"id":"n73","parent":"11","position":{"x":10,"z":15,"y":-5},"restrained_degrees_of_freedom":[true,true,true,true,true,true],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0,"z":0,"y":0},"angle":{"x":0,"z":0,"y":0}},{"degrees_of_freedom":[444,445,446,447,448,449],"id":"n74","parent":"11","position":{"x":15,"z":10,"y":5},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":2.4715533828102213e-5,"z":4.185197987257086e-15,"y":-0.00017523239733414835},"angle":{"x":0.0,"z":0.0,"y":-0.0}},{"degrees_of_freedom":[450,451,452,453,454,455],"id":"n75","parent":"11","position":{"x":15,"z":15,"y":0},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":1.041546138984717e-5,"z":7.979524039919407e-6,"y":-8.22690948869498e-5},"angle":{"x":0.0,"z":0.0,"y":0.0}},{"degrees_of_freedom":[456,457,458,459,460,461],"id":"n76","parent":"11","position":{"x":10,"z":15,"y":5},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-9.22250521945878e-15,"z":1.8336523489606273e-5,"y":-0.00017454901973526247},"angle":{"x":0.0,"z":0.0,"y":0.0}},{"degrees_of_freedom":[462,463,464,465,466,467],"id":"n77","parent":"11","position":{"x":15,"z":20,"y":-5},"restrained_degrees_of_freedom":[true,true,true,true,true,true],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0,"z":0,"y":0},"angle":{"x":0,"z":0,"y":0}},{"degrees_of_freedom":[468,469,470,471,472,473],"id":"n78","parent":"11","position":{"x":10,"z":25,"y":-5},"restrained_degrees_of_freedom":[true,true,true,true,true,true],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0,"z":0,"y":0},"angle":{"x":0,"z":0,"y":0}},{"degrees_of_freedom":[474,475,476,477,478,479],"id":"n79","parent":"11","position":{"x":15,"z":20,"y":5},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":2.622669005253111e-5,"z":3.649807508413272e-5,"y":-0.00018152598156403324},"angle":{"x":0.0,"z":0.0,"y":0.0}},{"degrees_of_freedom":[480,481,482,483,484,485],"id":"n80","parent":"11","position":{"x":15,"z":25,"y":0},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":1.0664850591147653e-5,"z":4.622496071400262e-5,"y":-9.241220112013896e-5},"angle":{"x":0.0,"z":0.0,"y":0.0}},{"degrees_of_freedom":[486,487,488,489,490,491],"id":"n81","parent":"11","position":{"x":10,"z":25,"y":5},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":1.379691294210751e-14,"z":3.967894390258713e-5,"y":-0.00018193413082949423},"angle":{"x":0.0,"z":0.0,"y":0.0}},{"degrees_of_freedom":[492,493,494,495,496,497],"id":"n82","parent":"11","position":{"x":15,"z":0,"y":15},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":3.1571819396543286e-5,"z":-4.391511017068042e-5,"y":-0.000386893717721707},"angle":{"x":0.0,"z":0.0,"y":-0.0}},{"degrees_of_freedom":[498,499,500,501,502,503],"id":"n83","parent":"11","position":{"x":15,"z":-5,"y":10},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":3.157555748933821e-5,"z":-7.619474063694344e-5,"y":-0.00028577052339586953},"angle":{"x":0.0,"z":0.0,"y":-0.0}},{"degrees_of_freedom":[504,505,506,507,508,509],"id":"n84","parent":"11","position":{"x":15,"z":5,"y":10},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":2.8374075968478117e-5,"z":-2.2306797513444115e-5,"y":-0.00028096137132857806},"angle":{"x":0.0,"z":-0.0,"y":0.0}},{"degrees_of_freedom":[510,511,512,513,514,515],"id":"n85","parent":"11","position":{"x":10,"z":-5,"y":15},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":3.23002739784772e-14,"z":-4.597811671261646e-5,"y":-0.0003876268082655333},"angle":{"x":0.0,"z":0.0,"y":0.0}},{"degrees_of_freedom":[516,517,518,519,520,521],"id":"n86","parent":"11","position":{"x":10,"z":5,"y":15},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-2.9530289181524966e-14,"z":-2.225015419963793e-5,"y":-0.00038998851029909044},"angle":{"x":0.0,"z":0.0,"y":0.0}},{"degrees_of_freedom":[522,523,524,525,526,527],"id":"n87","parent":"11","position":{"x":15,"z":10,"y":15},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":3.0281177658931956e-5,"z":3.7085489220645106e-15,"y":-0.0003908801158224606},"angle":{"x":0.0,"z":0.0,"y":0.0}},{"degrees_of_freedom":[528,529,530,531,532,533],"id":"n88","parent":"11","position":{"x":15,"z":15,"y":10},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":2.8374075968120144e-5,"z":2.2306797509617416e-5,"y":-0.0002809613713290442},"angle":{"x":0.0,"z":0.0,"y":0.0}},{"degrees_of_freedom":[534,535,536,537,538,539],"id":"n89","parent":"11","position":{"x":10,"z":15,"y":15},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":-2.947743667059755e-14,"z":2.2250154198290694e-5,"y":-0.0003899885102990893},"angle":{"x":0.0,"z":0.0,"y":0.0}},{"degrees_of_freedom":[540,541,542,543,544,545],"id":"n90","parent":"11","position":{"x":15,"z":20,"y":15},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":3.157181939641227e-5,"z":4.391511017250436e-5,"y":-0.0003868937177226845},"angle":{"x":0.0,"z":0.0,"y":0.0}},{"degrees_of_freedom":[546,547,548,549,550,551],"id":"n91","parent":"11","position":{"x":15,"z":25,"y":10},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":3.1575557488802574e-5,"z":7.619474063893544e-5,"y":-0.00028577052339515016},"angle":{"x":0.0,"z":0.0,"y":0.0}},{"degrees_of_freedom":[552,553,554,555,556,557],"id":"n92","parent":"11","position":{"x":10,"z":25,"y":15},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":3.22239395123529e-14,"z":4.59781167107343e-5,"y":-0.00038762680826382405},"angle":{"x":0.0,"z":0.0,"y":0.0}},{"degrees_of_freedom":[558,559,560,561,562,563],"id":"n93","parent":"11","position":{"x":15,"z":0,"y":25},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":-400},"displacement":{"x":2.6403579194246127e-5,"z":-2.759331002200859e-5,"y":-0.0006842487548826687},"angle":{"x":0.0,"z":0.0,"y":-0.0}},{"degrees_of_freedom":[564,565,566,567,568,569],"id":"n94","parent":"11","position":{"x":15,"z":-5,"y":20},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":2.7397876987371424e-5,"z":-6.843540224762872e-5,"y":-0.0005094201797351822},"angle":{"x":0.0,"z":0.0,"y":-0.0}},{"degrees_of_freedom":[570,571,572,573,574,575],"id":"n95","parent":"11","position":{"x":15,"z":5,"y":20},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":2.552945794730746e-5,"z":-1.760979939863312e-5,"y":-0.0005242205441317948},"angle":{"x":0.0,"z":-0.0,"y":0.0}},{"degrees_of_freedom":[576,577,578,579,580,581],"id":"n96","parent":"11","position":{"x":10,"z":-5,"y":25},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":-400},"displacement":{"x":9.944324498261432e-15,"z":-1.848470678214762e-5,"y":-0.0006623083405927487},"angle":{"x":0.0,"z":0.0,"y":0.0}},{"degrees_of_freedom":[582,583,584,585,586,587],"id":"n97","parent":"11","position":{"x":10,"z":5,"y":25},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":-400},"displacement":{"x":-4.999523230647442e-14,"z":-1.4132588321151932e-5,"y":-0.0006762177500546807},"angle":{"x":0.0,"z":0.0,"y":-0.0}},{"degrees_of_freedom":[588,589,590,591,592,593],"id":"n98","parent":"11","position":{"x":15,"z":10,"y":25},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":-400},"displacement":{"x":2.5436478700342232e-5,"z":3.816790768587257e-15,"y":-0.0006793167893080055},"angle":{"x":0.0,"z":0.0,"y":-0.0}},{"degrees_of_freedom":[594,595,596,597,598,599],"id":"n99","parent":"11","position":{"x":15,"z":15,"y":20},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":2.552945794684534e-5,"z":1.7609799397626064e-5,"y":-0.0005242205441316564},"angle":{"x":0.0,"z":-0.0,"y":0.0}},{"degrees_of_freedom":[600,601,602,603,604,605],"id":"n100","parent":"11","position":{"x":10,"z":15,"y":25},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":-400},"displacement":{"x":-4.992333447664059e-14,"z":1.4132588316510469e-5,"y":-0.0006762177500546768},"angle":{"x":0.0,"z":0.0,"y":-0.0}},{"degrees_of_freedom":[606,607,608,609,610,611],"id":"n101","parent":"11","position":{"x":15,"z":20,"y":25},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":-400},"displacement":{"x":2.6403579195027708e-5,"z":2.7593310027274586e-5,"y":-0.0006842487548815358},"angle":{"x":0.0,"z":0.0,"y":0.0}},{"degrees_of_freedom":[612,613,614,615,616,617],"id":"n102","parent":"11","position":{"x":15,"z":25,"y":20},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":2.7397876987732294e-5,"z":6.843540224140432e-5,"y":-0.0005094201797351987},"angle":{"x":0.0,"z":0.0,"y":0.0}},{"degrees_of_freedom":[618,619,620,621,622,623],"id":"n103","parent":"11","position":{"x":10,"z":25,"y":25},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":-400},"displacement":{"x":9.936151831844958e-15,"z":1.8484706778428716e-5,"y":-0.0006623083405910376},"angle":{"x":0.0,"z":0.0,"y":-0.0}},{"degrees_of_freedom":[624,625,626,627,628,629],"id":"n104","parent":"11","position":{"x":25,"z":0,"y":-5},"restrained_degrees_of_freedom":[true,true,true,true,true,true],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0,"z":0,"y":0},"angle":{"x":0,"z":0,"y":0}},{"degrees_of_freedom":[630,631,632,633,634,635],"id":"n105","parent":"11","position":{"x":20,"z":-5,"y":-5},"restrained_degrees_of_freedom":[true,true,true,true,true,true],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0,"z":0,"y":0},"angle":{"x":0,"z":0,"y":0}},{"degrees_of_freedom":[636,637,638,639,640,641],"id":"n106","parent":"11","position":{"x":20,"z":5,"y":-5},"restrained_degrees_of_freedom":[true,true,true,true,true,true],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0,"z":0,"y":0},"angle":{"x":0,"z":0,"y":0}},{"degrees_of_freedom":[642,643,644,645,646,647],"id":"n107","parent":"11","position":{"x":25,"z":0,"y":5},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":5.943672434929455e-5,"z":-4.6474516045339845e-5,"y":-0.00019857079727649368},"angle":{"x":0.0,"z":0.0,"y":-0.0}},{"degrees_of_freedom":[648,649,650,651,652,653],"id":"n108","parent":"11","position":{"x":25,"z":-5,"y":0},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":7.540371662474222e-5,"z":-6.276743391166985e-5,"y":-0.00012068530155025119},"angle":{"x":0.0,"z":0.0,"y":0.0}},{"degrees_of_freedom":[654,655,656,657,658,659],"id":"n109","parent":"11","position":{"x":25,"z":5,"y":0},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":6.411101103000319e-5,"z":-9.33033489726297e-6,"y":-9.601815856137757e-5},"angle":{"x":0.0,"z":0.0,"y":0.0}},{"degrees_of_freedom":[660,661,662,663,664,665],"id":"n110","parent":"11","position":{"x":20,"z":-5,"y":5},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":5.377908934464671e-5,"z":-4.926719537586471e-5,"y":-0.00019662191435361419},"angle":{"x":0.0,"z":0.0,"y":0.0}},{"degrees_of_freedom":[666,667,668,669,670,671],"id":"n111","parent":"11","position":{"x":20,"z":5,"y":5},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":4.7621166041136505e-5,"z":-2.1522829856823794e-5,"y":-0.00018333998349751143},"angle":{"x":0.0,"z":0.0,"y":-0.0}},{"degrees_of_freedom":[672,673,674,675,676,677],"id":"n112","parent":"11","position":{"x":25,"z":10,"y":-5},"restrained_degrees_of_freedom":[true,true,true,true,true,true],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0,"z":0,"y":0},"angle":{"x":0,"z":0,"y":0}},{"degrees_of_freedom":[678,679,680,681,682,683],"id":"n113","parent":"11","position":{"x":20,"z":15,"y":-5},"restrained_degrees_of_freedom":[true,true,true,true,true,true],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0,"z":0,"y":0},"angle":{"x":0,"z":0,"y":0}},{"degrees_of_freedom":[684,685,686,687,688,689],"id":"n114","parent":"11","position":{"x":25,"z":10,"y":5},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":5.011532602470781e-5,"z":2.475233219871976e-15,"y":-0.00018616562060938966},"angle":{"x":0.0,"z":0.0,"y":0.0}},{"degrees_of_freedom":[690,691,692,693,694,695],"id":"n115","parent":"11","position":{"x":25,"z":15,"y":0},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":6.411101103003464e-5,"z":9.330334895621843e-6,"y":-9.601815856166844e-5},"angle":{"x":0.0,"z":-0.0,"y":0.0}},{"degrees_of_freedom":[696,697,698,699,700,701],"id":"n116","parent":"11","position":{"x":20,"z":15,"y":5},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":4.7621166041564426e-5,"z":2.1522829852024325e-5,"y":-0.00018333998349757779},"angle":{"x":0.0,"z":0.0,"y":0.0}},{"degrees_of_freedom":[702,703,704,705,706,707],"id":"n117","parent":"11","position":{"x":25,"z":20,"y":-5},"restrained_degrees_of_freedom":[true,true,true,true,true,true],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0,"z":0,"y":0},"angle":{"x":0,"z":0,"y":0}},{"degrees_of_freedom":[708,709,710,711,712,713],"id":"n118","parent":"11","position":{"x":20,"z":25,"y":-5},"restrained_degrees_of_freedom":[true,true,true,true,true,true],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0,"z":0,"y":0},"angle":{"x":0,"z":0,"y":0}},{"degrees_of_freedom":[714,715,716,717,718,719],"id":"n119","parent":"11","position":{"x":25,"z":20,"y":5},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":5.9436724349415116e-5,"z":4.647451604777672e-5,"y":-0.0001985707972767195},"angle":{"x":0.0,"z":0.0,"y":0.0}},{"degrees_of_freedom":[720,721,722,723,724,725],"id":"n120","parent":"11","position":{"x":25,"z":25,"y":0},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":7.54037166245126e-5,"z":6.27674339126665e-5,"y":-0.00012068530155027375},"angle":{"x":0.0,"z":0.0,"y":-0.0}},{"degrees_of_freedom":[726,727,728,729,730,731],"id":"n121","parent":"11","position":{"x":20,"z":25,"y":5},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":5.377908934575334e-5,"z":4.9267195374104666e-5,"y":-0.00019662191435311963},"angle":{"x":0.0,"z":0.0,"y":0.0}},{"degrees_of_freedom":[732,733,734,735,736,737],"id":"n122","parent":"11","position":{"x":25,"z":0,"y":15},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":6.74773549921152e-5,"z":-5.4536081695715786e-5,"y":-0.00039037793919015687},"angle":{"x":0.0,"z":0.0,"y":0.0}},{"degrees_of_freedom":[738,739,740,741,742,743],"id":"n123","parent":"11","position":{"x":25,"z":-5,"y":10},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0.00010749425148966461,"z":-9.216023833340413e-5,"y":-0.0002966422585563283},"angle":{"x":0.0,"z":0.0,"y":0.0}},{"degrees_of_freedom":[744,745,746,747,748,749],"id":"n124","parent":"11","position":{"x":25,"z":5,"y":10},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0.00010088870313693533,"z":-2.789774550173317e-5,"y":-0.0002899540106140654},"angle":{"x":0.0,"z":0.0,"y":0.0}},{"degrees_of_freedom":[750,751,752,753,754,755],"id":"n125","parent":"11","position":{"x":20,"z":-5,"y":15},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":6.265110349141813e-5,"z":-5.64156780422259e-5,"y":-0.00038706293114100753},"angle":{"x":0.0,"z":-0.0,"y":0.0}},{"degrees_of_freedom":[756,757,758,759,760,761],"id":"n126","parent":"11","position":{"x":20,"z":5,"y":15},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":5.7803103523855025e-5,"z":-2.5693662503752205e-5,"y":-0.0003900097894660623},"angle":{"x":0.0,"z":0.0,"y":0.0}},{"degrees_of_freedom":[762,763,764,765,766,767],"id":"n127","parent":"11","position":{"x":25,"z":10,"y":15},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":5.8763159591997684e-5,"z":1.5606480032091826e-15,"y":-0.0003951854742226091},"angle":{"x":0.0,"z":0.0,"y":0.0}},{"degrees_of_freedom":[768,769,770,771,772,773],"id":"n128","parent":"11","position":{"x":25,"z":15,"y":10},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0.00010088870313629748,"z":2.7897745500794137e-5,"y":-0.00028995401061367236},"angle":{"x":0.0,"z":0.0,"y":0.0}},{"degrees_of_freedom":[774,775,776,777,778,779],"id":"n129","parent":"11","position":{"x":20,"z":15,"y":15},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":5.780310352368397e-5,"z":2.5693662502984837e-5,"y":-0.00039000978946627276},"angle":{"x":0.0,"z":0.0,"y":0.0}},{"degrees_of_freedom":[780,781,782,783,784,785],"id":"n130","parent":"11","position":{"x":25,"z":20,"y":15},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":6.747735499324769e-5,"z":5.453608169457314e-5,"y":-0.0003903779391902922},"angle":{"x":0.0,"z":0.0,"y":0.0}},{"degrees_of_freedom":[786,787,788,789,790,791],"id":"n131","parent":"11","position":{"x":25,"z":25,"y":10},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":0.0001074942514892943,"z":9.216023833401722e-5,"y":-0.00029664225855504885},"angle":{"x":0.0,"z":0.0,"y":0.0}},{"degrees_of_freedom":[792,793,794,795,796,797],"id":"n132","parent":"11","position":{"x":20,"z":25,"y":15},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":6.265110349130742e-5,"z":5.6415678038750215e-5,"y":-0.0003870629311404042},"angle":{"x":0.0,"z":0.0,"y":0.0}},{"degrees_of_freedom":[798,799,800,801,802,803],"id":"n133","parent":"11","position":{"x":25,"z":0,"y":25},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":-400},"displacement":{"x":5.0541573847183614e-5,"z":-3.712901822761736e-5,"y":-0.0006807830086985303},"angle":{"x":0.0,"z":0.0,"y":0.0}},{"degrees_of_freedom":[804,805,806,807,808,809],"id":"n134","parent":"11","position":{"x":25,"z":-5,"y":20},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":9.944414317251503e-5,"z":-8.304862563637759e-5,"y":-0.0004989706869786226},"angle":{"x":0.0,"z":0.0,"y":-0.0}},{"degrees_of_freedom":[810,811,812,813,814,815],"id":"n135","parent":"11","position":{"x":25,"z":5,"y":20},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":9.690093505333794e-5,"z":-2.260835235581193e-5,"y":-0.0005189452128393646},"angle":{"x":0.0,"z":0.0,"y":0.0}},{"degrees_of_freedom":[816,817,818,819,820,821],"id":"n136","parent":"11","position":{"x":20,"z":-5,"y":25},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":-400},"displacement":{"x":5.1054901981180646e-5,"z":-2.9397255144471136e-5,"y":-0.0006698870230960394},"angle":{"x":0.0,"z":0.0,"y":0.0}},{"degrees_of_freedom":[822,823,824,825,826,827],"id":"n137","parent":"11","position":{"x":20,"z":5,"y":25},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":-400},"displacement":{"x":4.798986435548446e-5,"z":-1.725223619059061e-5,"y":-0.0006869368039293332},"angle":{"x":0.0,"z":0.0,"y":0.0}},{"degrees_of_freedom":[828,829,830,831,832,833],"id":"n138","parent":"11","position":{"x":25,"z":10,"y":25},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":-400},"displacement":{"x":4.217420971102332e-5,"z":1.676054791632663e-15,"y":-0.0006782558434006911},"angle":{"x":0.0,"z":0.0,"y":0.0}},{"degrees_of_freedom":[834,835,836,837,838,839],"id":"n139","parent":"11","position":{"x":25,"z":15,"y":20},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":9.690093505293194e-5,"z":2.2608352357014057e-5,"y":-0.0005189452128387015},"angle":{"x":0.0,"z":0.0,"y":0.0}},{"degrees_of_freedom":[840,841,842,843,844,845],"id":"n140","parent":"11","position":{"x":20,"z":15,"y":25},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":-400},"displacement":{"x":4.7989864356023846e-5,"z":1.7252236185361894e-5,"y":-0.0006869368039293307},"angle":{"x":0.0,"z":0.0,"y":0.0}},{"degrees_of_freedom":[846,847,848,849,850,851],"id":"n141","parent":"11","position":{"x":25,"z":20,"y":25},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":-400},"displacement":{"x":5.054157384752511e-5,"z":3.712901823057802e-5,"y":-0.0006807830086981802},"angle":{"x":0.0,"z":0.0,"y":-0.0}},{"degrees_of_freedom":[852,853,854,855,856,857],"id":"n142","parent":"11","position":{"x":25,"z":25,"y":20},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":0},"displacement":{"x":9.944414317247121e-5,"z":8.304862563733013e-5,"y":-0.0004989706869791533},"angle":{"x":0.0,"z":0.0,"y":0.0}},{"degrees_of_freedom":[858,859,860,861,862,863],"id":"n143","parent":"11","position":{"x":20,"z":25,"y":25},"restrained_degrees_of_freedom":[false,false,false,false,false,false],"force":{"x":0,"z":0,"y":-400},"displacement":{"x":5.105490198073157e-5,"z":2.9397255143902086e-5,"y":-0.0006698870230943305},"angle":{"x":0.0,"z":0.0,"y":0.0}}],"bar":false,"animation":{"speed":3,"exageration":2000,"showDisplacement":true},"viz":{"colorMap":0,"colorMaps":[[[0,[0.23,0.299,0.754]],[0.002,[0.23,0.299,0.754]],[0.004,[0.234,0.306,0.76]],[0.006,[0.234,0.306,0.76]],[0.008,[0.239,0.312,0.766]],[0.01,[0.239,0.312,0.766]],[0.012,[0.244,0.319,0.772]],[0.014,[0.244,0.319,0.772]],[0.016,[0.248,0.326,0.778]],[0.018,[0.248,0.326,0.778]],[0.02,[0.253,0.333,0.784]],[0.022,[0.253,0.333,0.784]],[0.023,[0.257,0.34,0.79]],[0.025,[0.257,0.34,0.79]],[0.027,[0.262,0.346,0.796]],[0.029,[0.262,0.346,0.796]],[0.031,[0.266,0.353,0.802]],[0.033,[0.266,0.353,0.802]],[0.035,[0.271,0.36,0.807]],[0.037,[0.271,0.36,0.807]],[0.039,[0.276,0.367,0.813]],[0.041,[0.276,0.367,0.813]],[0.043,[0.281,0.373,0.818]],[0.045,[0.281,0.373,0.818]],[0.047,[0.285,0.38,0.823]],[0.049,[0.285,0.38,0.823]],[0.051,[0.29,0.387,0.829]],[0.053,[0.29,0.387,0.829]],[0.055,[0.295,0.394,0.834]],[0.057,[0.295,0.394,0.834]],[0.059,[0.299,0.4,0.84]],[0.061,[0.299,0.4,0.84]],[0.063,[0.304,0.407,0.845]],[0.065,[0.304,0.407,0.845]],[0.067,[0.309,0.413,0.85]],[0.068,[0.309,0.413,0.85]],[0.07,[0.314,0.42,0.855]],[0.072,[0.314,0.42,0.855]],[0.074,[0.319,0.427,0.86]],[0.076,[0.319,0.427,0.86]],[0.078,[0.324,0.433,0.865]],[0.08,[0.324,0.433,0.865]],[0.082,[0.329,0.44,0.87]],[0.084,[0.329,0.44,0.87]],[0.086,[0.333,0.446,0.874]],[0.088,[0.333,0.446,0.874]],[0.09,[0.338,0.453,0.879]],[0.092,[0.338,0.453,0.879]],[0.094,[0.343,0.459,0.884]],[0.096,[0.343,0.459,0.884]],[0.098,[0.348,0.466,0.888]],[0.1,[0.348,0.466,0.888]],[0.102,[0.353,0.472,0.893]],[0.104,[0.353,0.472,0.893]],[0.106,[0.358,0.478,0.897]],[0.108,[0.358,0.478,0.897]],[0.11,[0.363,0.485,0.901]],[0.112,[0.363,0.485,0.901]],[0.114,[0.369,0.491,0.905]],[0.115,[0.369,0.491,0.905]],[0.117,[0.374,0.497,0.909]],[0.119,[0.374,0.497,0.909]],[0.121,[0.379,0.504,0.914]],[0.123,[0.379,0.504,0.914]],[0.125,[0.384,0.51,0.918]],[0.127,[0.384,0.51,0.918]],[0.129,[0.389,0.516,0.921]],[0.131,[0.389,0.516,0.921]],[0.133,[0.394,0.522,0.925]],[0.135,[0.394,0.522,0.925]],[0.137,[0.399,0.529,0.928]],[0.139,[0.399,0.529,0.928]],[0.141,[0.404,0.535,0.932]],[0.143,[0.404,0.535,0.932]],[0.145,[0.41,0.541,0.936]],[0.147,[0.41,0.541,0.936]],[0.149,[0.415,0.547,0.939]],[0.151,[0.415,0.547,0.939]],[0.153,[0.42,0.553,0.943]],[0.155,[0.42,0.553,0.943]],[0.157,[0.425,0.559,0.946]],[0.159,[0.425,0.559,0.946]],[0.16,[0.431,0.565,0.949]],[0.162,[0.431,0.565,0.949]],[0.164,[0.436,0.571,0.952]],[0.166,[0.436,0.571,0.952]],[0.168,[0.441,0.577,0.955]],[0.17,[0.441,0.577,0.955]],[0.172,[0.446,0.582,0.957]],[0.174,[0.446,0.582,0.957]],[0.176,[0.452,0.588,0.96]],[0.178,[0.452,0.588,0.96]],[0.18,[0.457,0.594,0.963]],[0.182,[0.457,0.594,0.963]],[0.184,[0.462,0.6,0.966]],[0.186,[0.462,0.6,0.966]],[0.188,[0.468,0.606,0.969]],[0.19,[0.468,0.606,0.969]],[0.192,[0.473,0.611,0.971]],[0.194,[0.473,0.611,0.971]],[0.196,[0.478,0.617,0.973]],[0.198,[0.478,0.617,0.973]],[0.2,[0.484,0.622,0.975]],[0.202,[0.484,0.622,0.975]],[0.204,[0.489,0.628,0.977]],[0.205,[0.489,0.628,0.977]],[0.207,[0.495,0.633,0.979]],[0.209,[0.495,0.633,0.979]],[0.211,[0.5,0.639,0.981]],[0.213,[0.5,0.639,0.981]],[0.215,[0.505,0.644,0.983]],[0.217,[0.505,0.644,0.983]],[0.219,[0.511,0.649,0.985]],[0.221,[0.511,0.649,0.985]],[0.223,[0.516,0.654,0.986]],[0.225,[0.516,0.654,0.986]],[0.227,[0.522,0.66,0.988]],[0.229,[0.522,0.66,0.988]],[0.231,[0.527,0.665,0.989]],[0.233,[0.527,0.665,0.989]],[0.235,[0.533,0.67,0.99]],[0.237,[0.533,0.67,0.99]],[0.239,[0.538,0.675,0.992]],[0.241,[0.538,0.675,0.992]],[0.243,[0.543,0.68,0.993]],[0.245,[0.543,0.68,0.993]],[0.247,[0.549,0.685,0.994]],[0.249,[0.549,0.685,0.994]],[0.25,[0.554,0.69,0.996]],[0.252,[0.554,0.69,0.996]],[0.254,[0.56,0.695,0.996]],[0.256,[0.56,0.695,0.996]],[0.258,[0.565,0.699,0.997]],[0.26,[0.565,0.699,0.997]],[0.262,[0.571,0.704,0.997]],[0.264,[0.571,0.704,0.997]],[0.266,[0.576,0.709,0.998]],[0.268,[0.576,0.709,0.998]],[0.27,[0.581,0.713,0.998]],[0.272,[0.581,0.713,0.998]],[0.274,[0.587,0.718,0.999]],[0.276,[0.587,0.718,0.999]],[0.278,[0.592,0.723,0.999]],[0.28,[0.592,0.723,0.999]],[0.282,[0.598,0.727,1]],[0.028,[0.598,0.727,1]],[0.286,[0.603,0.732,1]],[0.288,[0.603,0.732,1]],[0.29,[0.609,0.736,0.999]],[0.292,[0.609,0.736,0.999]],[0.294,[0.614,0.74,0.999]],[0.295,[0.614,0.74,0.999]],[0.297,[0.619,0.744,0.999]],[0.299,[0.619,0.744,0.999]],[0.301,[0.625,0.748,0.999]],[0.303,[0.625,0.748,0.999]],[0.305,[0.63,0.753,0.999]],[0.307,[0.63,0.753,0.999]],[0.309,[0.635,0.757,0.998]],[0.311,[0.635,0.757,0.998]],[0.313,[0.641,0.761,0.998]],[0.315,[0.641,0.761,0.998]],[0.317,[0.646,0.764,0.997]],[0.319,[0.646,0.764,0.997]],[0.321,[0.651,0.768,0.996]],[0.323,[0.651,0.768,0.996]],[0.325,[0.657,0.772,0.995]],[0.327,[0.657,0.772,0.995]],[0.329,[0.662,0.775,0.994]],[0.331,[0.662,0.775,0.994]],[0.333,[0.667,0.779,0.993]],[0.335,[0.667,0.779,0.993]],[0.337,[0.673,0.783,0.992]],[0.339,[0.673,0.783,0.992]],[0.341,[0.678,0.787,0.991]],[0.342,[0.678,0.787,0.991]],[0.344,[0.683,0.79,0.99]],[0.346,[0.683,0.79,0.99]],[0.348,[0.688,0.793,0.988]],[0.35,[0.688,0.793,0.988]],[0.352,[0.693,0.796,0.986]],[0.354,[0.693,0.796,0.986]],[0.356,[0.698,0.799,0.985]],[0.358,[0.698,0.799,0.985]],[0.36,[0.704,0.803,0.983]],[0.362,[0.704,0.803,0.983]],[0.364,[0.709,0.806,0.981]],[0.366,[0.709,0.806,0.981]],[0.368,[0.714,0.809,0.979]],[0.37,[0.714,0.809,0.979]],[0.372,[0.719,0.812,0.978]],[0.374,[0.719,0.812,0.978]],[0.376,[0.724,0.815,0.976]],[0.378,[0.724,0.815,0.976]],[0.38,[0.729,0.817,0.973]],[0.382,[0.729,0.817,0.973]],[0.384,[0.734,0.82,0.971]],[0.386,[0.734,0.82,0.971]],[0.387,[0.739,0.823,0.968]],[0.389,[0.739,0.823,0.968]],[0.391,[0.744,0.825,0.966]],[0.393,[0.744,0.825,0.966]],[0.395,[0.749,0.828,0.963]],[0.397,[0.749,0.828,0.963]],[0.399,[0.754,0.83,0.961]],[0.401,[0.754,0.83,0.961]],[0.403,[0.759,0.833,0.958]],[0.405,[0.759,0.833,0.958]],[0.407,[0.763,0.835,0.956]],[0.409,[0.763,0.835,0.956]],[0.411,[0.768,0.837,0.952]],[0.413,[0.768,0.837,0.952]],[0.415,[0.773,0.839,0.949]],[0.417,[0.773,0.839,0.949]],[0.419,[0.777,0.841,0.946]],[0.421,[0.777,0.841,0.946]],[0.423,[0.782,0.843,0.943]],[0.425,[0.782,0.843,0.943]],[0.427,[0.787,0.845,0.94]],[0.429,[0.787,0.845,0.94]],[0.431,[0.791,0.847,0.937]],[0.432,[0.791,0.847,0.937]],[0.434,[0.796,0.849,0.933]],[0.436,[0.796,0.849,0.933]],[0.438,[0.801,0.85,0.93]],[0.44,[0.801,0.85,0.93]],[0.442,[0.805,0.852,0.926]],[0.444,[0.805,0.852,0.926]],[0.446,[0.809,0.853,0.922]],[0.448,[0.809,0.853,0.922]],[0.45,[0.814,0.854,0.918]],[0.452,[0.814,0.854,0.918]],[0.454,[0.818,0.856,0.915]],[0.456,[0.818,0.856,0.915]],[0.458,[0.822,0.857,0.911]],[0.46,[0.822,0.857,0.911]],[0.462,[0.827,0.858,0.907]],[0.464,[0.827,0.858,0.907]],[0.466,[0.831,0.86,0.903]],[0.468,[0.831,0.86,0.903]],[0.47,[0.835,0.861,0.899]],[0.472,[0.835,0.861,0.899]],[0.474,[0.839,0.861,0.894]],[0.476,[0.839,0.861,0.894]],[0.477,[0.843,0.862,0.89]],[0.479,[0.843,0.862,0.89]],[0.481,[0.847,0.862,0.886]],[0.483,[0.847,0.862,0.886]],[0.485,[0.851,0.863,0.881]],[0.487,[0.851,0.863,0.881]],[0.489,[0.855,0.864,0.877]],[0.491,[0.855,0.864,0.877]],[0.493,[0.859,0.864,0.872]],[0.495,[0.859,0.864,0.872]],[0.497,[0.863,0.865,0.868]],[0.499,[0.863,0.865,0.868]],[0.501,[0.867,0.864,0.863]],[0.503,[0.867,0.864,0.863]],[0.505,[0.871,0.862,0.857]],[0.507,[0.871,0.862,0.857]],[0.509,[0.876,0.86,0.851]],[0.511,[0.876,0.86,0.851]],[0.513,[0.88,0.858,0.846]],[0.515,[0.88,0.858,0.846]],[0.517,[0.884,0.856,0.84]],[0.519,[0.884,0.856,0.84]],[0.521,[0.888,0.854,0.835]],[0.523,[0.888,0.854,0.835]],[0.524,[0.892,0.852,0.829]],[0.526,[0.892,0.852,0.829]],[0.528,[0.896,0.85,0.823]],[0.53,[0.896,0.85,0.823]],[0.532,[0.9,0.848,0.818]],[0.534,[0.9,0.848,0.818]],[0.536,[0.903,0.845,0.812]],[0.538,[0.903,0.845,0.812]],[0.54,[0.906,0.842,0.806]],[0.542,[0.906,0.842,0.806]],[0.544,[0.909,0.839,0.8]],[0.546,[0.909,0.839,0.8]],[0.548,[0.913,0.837,0.795]],[0.55,[0.913,0.837,0.795]],[0.552,[0.916,0.834,0.789]],[0.554,[0.916,0.834,0.789]],[0.556,[0.919,0.831,0.783]],[0.558,[0.919,0.831,0.783]],[0.56,[0.923,0.829,0.777]],[0.562,[0.923,0.829,0.777]],[0.564,[0.926,0.826,0.771]],[0.566,[0.926,0.826,0.771]],[0.568,[0.928,0.822,0.765]],[0.569,[0.928,0.822,0.765]],[0.571,[0.931,0.819,0.759]],[0.573,[0.931,0.819,0.759]],[0.575,[0.933,0.816,0.753]],[0.577,[0.933,0.816,0.753]],[0.579,[0.936,0.812,0.747]],[0.581,[0.936,0.812,0.747]],[0.583,[0.938,0.809,0.741]],[0.585,[0.938,0.809,0.741]],[0.587,[0.941,0.806,0.735]],[0.589,[0.941,0.806,0.735]],[0.591,[0.943,0.802,0.729]],[0.593,[0.943,0.802,0.729]],[0.595,[0.946,0.799,0.723]],[0.597,[0.946,0.799,0.723]],[0.599,[0.947,0.795,0.717]],[0.601,[0.947,0.795,0.717]],[0.603,[0.949,0.791,0.711]],[0.605,[0.949,0.791,0.711]],[0.607,[0.951,0.787,0.705]],[0.609,[0.951,0.787,0.705]],[0.611,[0.953,0.783,0.699]],[0.613,[0.953,0.783,0.699]],[0.614,[0.955,0.779,0.693]],[0.616,[0.955,0.779,0.693]],[0.618,[0.956,0.775,0.686]],[0.62,[0.956,0.775,0.686]],[0.622,[0.958,0.771,0.68]],[0.624,[0.958,0.771,0.68]],[0.626,[0.96,0.767,0.674]],[0.628,[0.96,0.767,0.674]],[0.63,[0.961,0.763,0.668]],[0.632,[0.961,0.763,0.668]],[0.634,[0.962,0.758,0.662]],[0.636,[0.962,0.758,0.662]],[0.638,[0.963,0.754,0.656]],[0.64,[0.963,0.754,0.656]],[0.642,[0.964,0.749,0.649]],[0.644,[0.964,0.749,0.649]],[0.646,[0.965,0.745,0.643]],[0.648,[0.965,0.745,0.643]],[0.65,[0.966,0.74,0.637]],[0.652,[0.966,0.74,0.637]],[0.654,[0.967,0.736,0.631]],[0.656,[0.967,0.736,0.631]],[0.658,[0.968,0.731,0.625]],[0.659,[0.968,0.731,0.625]],[0.661,[0.968,0.726,0.618]],[0.663,[0.968,0.726,0.618]],[0.665,[0.968,0.721,0.612]],[0.667,[0.968,0.721,0.612]],[0.669,[0.969,0.716,0.606]],[0.671,[0.969,0.716,0.606]],[0.673,[0.969,0.711,0.6]],[0.675,[0.969,0.711,0.6]],[0.677,[0.969,0.706,0.594]],[0.679,[0.969,0.706,0.594]],[0.681,[0.97,0.701,0.588]],[0.683,[0.97,0.701,0.588]],[0.685,[0.97,0.696,0.581]],[0.687,[0.97,0.696,0.581]],[0.689,[0.97,0.69,0.575]],[0.691,[0.97,0.69,0.575]],[0.693,[0.969,0.685,0.569]],[0.695,[0.969,0.685,0.569]],[0.697,[0.969,0.679,0.563]],[0.699,[0.969,0.679,0.563]],[0.701,[0.968,0.674,0.557]],[0.703,[0.968,0.674,0.557]],[0.705,[0.968,0.668,0.55]],[0.706,[0.968,0.668,0.55]],[0.708,[0.968,0.663,0.544]],[0.71,[0.968,0.663,0.544]],[0.712,[0.967,0.657,0.538]],[0.714,[0.967,0.657,0.538]],[0.716,[0.967,0.652,0.532]],[0.718,[0.967,0.652,0.532]],[0.72,[0.966,0.646,0.526]],[0.722,[0.966,0.646,0.526]],[0.724,[0.965,0.64,0.52]],[0.726,[0.965,0.64,0.52]],[0.728,[0.964,0.634,0.514]],[0.73,[0.964,0.634,0.514]],[0.732,[0.963,0.628,0.508]],[0.734,[0.963,0.628,0.508]],[0.736,[0.962,0.622,0.502]],[0.738,[0.962,0.622,0.502]],[0.74,[0.96,0.616,0.495]],[0.742,[0.96,0.616,0.495]],[0.744,[0.959,0.61,0.489]],[0.746,[0.959,0.61,0.489]],[0.748,[0.958,0.604,0.483]],[0.75,[0.958,0.604,0.483]],[0.751,[0.957,0.598,0.477]],[0.753,[0.957,0.598,0.477]],[0.755,[0.955,0.592,0.471]],[0.757,[0.955,0.592,0.471]],[0.759,[0.953,0.585,0.465]],[0.761,[0.953,0.585,0.465]],[0.763,[0.951,0.579,0.459]],[0.765,[0.951,0.579,0.459]],[0.767,[0.949,0.572,0.453]],[0.769,[0.949,0.572,0.453]],[0.771,[0.948,0.566,0.447]],[0.773,[0.948,0.566,0.447]],[0.775,[0.946,0.56,0.442]],[0.777,[0.946,0.56,0.442]],[0.779,[0.944,0.553,0.436]],[0.781,[0.944,0.553,0.436]],[0.783,[0.942,0.546,0.43]],[0.785,[0.942,0.546,0.43]],[0.787,[0.939,0.54,0.424]],[0.789,[0.939,0.54,0.424]],[0.791,[0.937,0.533,0.418]],[0.793,[0.937,0.533,0.418]],[0.795,[0.934,0.526,0.412]],[0.796,[0.934,0.526,0.412]],[0.798,[0.932,0.519,0.406]],[0.8,[0.932,0.519,0.406]],[0.802,[0.929,0.512,0.401]],[0.804,[0.929,0.512,0.401]],[0.806,[0.927,0.505,0.395]],[0.808,[0.927,0.505,0.395]],[0.81,[0.924,0.499,0.389]],[0.812,[0.924,0.499,0.389]],[0.814,[0.921,0.491,0.383]],[0.816,[0.921,0.491,0.383]],[0.818,[0.918,0.484,0.378]],[0.82,[0.918,0.484,0.378]],[0.822,[0.915,0.477,0.372]],[0.824,[0.915,0.477,0.372]],[0.826,[0.912,0.47,0.367]],[0.828,[0.912,0.47,0.367]],[0.83,[0.909,0.462,0.361]],[0.832,[0.909,0.462,0.361]],[0.834,[0.906,0.455,0.355]],[0.836,[0.906,0.455,0.355]],[0.838,[0.903,0.448,0.35]],[0.84,[0.903,0.448,0.35]],[0.841,[0.9,0.441,0.344]],[0.843,[0.9,0.441,0.344]],[0.845,[0.896,0.433,0.339]],[0.847,[0.896,0.433,0.339]],[0.849,[0.892,0.425,0.333]],[0.851,[0.892,0.425,0.333]],[0.853,[0.888,0.418,0.328]],[0.855,[0.888,0.418,0.328]],[0.857,[0.885,0.41,0.323]],[0.859,[0.885,0.41,0.323]],[0.861,[0.881,0.402,0.317]],[0.863,[0.881,0.402,0.317]],[0.865,[0.877,0.395,0.312]],[0.867,[0.877,0.395,0.312]],[0.869,[0.873,0.387,0.306]],[0.871,[0.873,0.387,0.306]],[0.873,[0.87,0.379,0.301]],[0.875,[0.87,0.379,0.301]],[0.877,[0.865,0.371,0.296]],[0.879,[0.865,0.371,0.296]],[0.881,[0.861,0.363,0.291]],[0.883,[0.861,0.363,0.291]],[0.885,[0.857,0.355,0.285]],[0.886,[0.857,0.355,0.285]],[0.888,[0.852,0.346,0.28]],[0.89,[0.852,0.346,0.28]],[0.892,[0.848,0.338,0.275]],[0.894,[0.848,0.338,0.275]],[0.896,[0.844,0.33,0.27]],[0.898,[0.844,0.33,0.27]],[0.9,[0.839,0.322,0.265]],[0.902,[0.839,0.322,0.265]],[0.904,[0.835,0.314,0.26]],[0.906,[0.835,0.314,0.26]],[0.908,[0.83,0.305,0.255]],[0.91,[0.83,0.305,0.255]],[0.912,[0.825,0.296,0.25]],[0.914,[0.825,0.296,0.25]],[0.916,[0.82,0.287,0.245]],[0.918,[0.82,0.287,0.245]],[0.92,[0.816,0.278,0.24]],[0.922,[0.816,0.278,0.24]],[0.924,[0.811,0.269,0.235]],[0.926,[0.811,0.269,0.235]],[0.928,[0.806,0.26,0.231]],[0.93,[0.806,0.26,0.231]],[0.932,[0.801,0.251,0.226]],[0.933,[0.801,0.251,0.226]],[0.935,[0.796,0.242,0.221]],[0.937,[0.796,0.242,0.221]],[0.939,[0.791,0.231,0.216]],[0.941,[0.791,0.231,0.216]],[0.943,[0.785,0.221,0.212]],[0.945,[0.785,0.221,0.212]],[0.947,[0.78,0.21,0.207]],[0.949,[0.78,0.21,0.207]],[0.951,[0.774,0.2,0.203]],[0.953,[0.774,0.2,0.203]],[0.955,[0.769,0.189,0.198]],[0.957,[0.769,0.189,0.198]],[0.959,[0.764,0.179,0.193]],[0.961,[0.764,0.179,0.193]],[0.963,[0.758,0.168,0.189]],[0.965,[0.758,0.168,0.189]],[0.967,[0.753,0.158,0.184]],[0.969,[0.753,0.158,0.184]],[0.971,[0.747,0.14,0.18]],[0.973,[0.747,0.14,0.18]],[0.975,[0.741,0.122,0.176]],[0.977,[0.741,0.122,0.176]],[0.978,[0.735,0.104,0.171]],[0.98,[0.735,0.104,0.171]],[0.982,[0.729,0.087,0.167]],[0.984,[0.729,0.087,0.167]],[0.986,[0.723,0.069,0.163]],[0.988,[0.723,0.069,0.163]],[0.99,[0.717,0.051,0.159]],[0.992,[0.717,0.051,0.159]],[0.994,[0.712,0.033,0.154]],[0.996,[0.712,0.033,0.154]],[0.998,[0.706,0.016,0.15]],[1,[0.706,0.016,0.15]]],[[0,[1,1,0.851]],[0.002,[1,1,0.851]],[0.004,[0.998,0.999,0.846]],[0.006,[0.998,0.999,0.846]],[0.008,[0.996,0.998,0.841]],[0.01,[0.996,0.998,0.841]],[0.012,[0.993,0.997,0.836]],[0.014,[0.993,0.997,0.836]],[0.016,[0.991,0.997,0.831]],[0.018,[0.991,0.997,0.831]],[0.02,[0.989,0.996,0.826]],[0.022,[0.989,0.996,0.826]],[0.023,[0.987,0.995,0.821]],[0.025,[0.987,0.995,0.821]],[0.027,[0.984,0.994,0.817]],[0.029,[0.984,0.994,0.817]],[0.031,[0.982,0.993,0.812]],[0.033,[0.982,0.993,0.812]],[0.035,[0.98,0.992,0.807]],[0.037,[0.98,0.992,0.807]],[0.039,[0.978,0.991,0.802]],[0.041,[0.978,0.991,0.802]],[0.043,[0.976,0.991,0.797]],[0.045,[0.976,0.991,0.797]],[0.047,[0.973,0.99,0.792]],[0.049,[0.973,0.99,0.792]],[0.051,[0.971,0.989,0.787]],[0.053,[0.971,0.989,0.787]],[0.055,[0.969,0.988,0.782]],[0.057,[0.969,0.988,0.782]],[0.059,[0.967,0.987,0.777]],[0.061,[0.967,0.987,0.777]],[0.063,[0.965,0.986,0.772]],[0.065,[0.965,0.986,0.772]],[0.067,[0.962,0.985,0.767]],[0.068,[0.962,0.985,0.767]],[0.07,[0.96,0.984,0.762]],[0.072,[0.96,0.984,0.762]],[0.074,[0.958,0.984,0.757]],[0.076,[0.958,0.984,0.757]],[0.078,[0.956,0.983,0.753]],[0.08,[0.956,0.983,0.753]],[0.082,[0.953,0.982,0.748]],[0.084,[0.953,0.982,0.748]],[0.086,[0.951,0.981,0.743]],[0.088,[0.951,0.981,0.743]],[0.09,[0.949,0.98,0.738]],[0.092,[0.949,0.98,0.738]],[0.094,[0.947,0.979,0.733]],[0.096,[0.947,0.979,0.733]],[0.098,[0.945,0.978,0.728]],[0.1,[0.945,0.978,0.728]],[0.102,[0.942,0.978,0.723]],[0.104,[0.942,0.978,0.723]],[0.106,[0.94,0.977,0.718]],[0.108,[0.94,0.977,0.718]],[0.11,[0.938,0.976,0.713]],[0.112,[0.938,0.976,0.713]],[0.114,[0.936,0.975,0.708]],[0.115,[0.936,0.975,0.708]],[0.117,[0.934,0.974,0.703]],[0.119,[0.934,0.974,0.703]],[0.121,[0.931,0.973,0.698]],[0.123,[0.931,0.973,0.698]],[0.125,[0.929,0.972,0.694]],[0.127,[0.929,0.972,0.694]],[0.129,[0.924,0.97,0.695]],[0.131,[0.924,0.97,0.695]],[0.133,[0.919,0.969,0.695]],[0.135,[0.919,0.969,0.695]],[0.137,[0.915,0.967,0.695]],[0.139,[0.915,0.967,0.695]],[0.141,[0.91,0.965,0.696]],[0.143,[0.91,0.965,0.696]],[0.145,[0.905,0.963,0.696]],[0.147,[0.905,0.963,0.696]],[0.149,[0.901,0.961,0.696]],[0.151,[0.901,0.961,0.696]],[0.153,[0.896,0.959,0.697]],[0.155,[0.896,0.959,0.697]],[0.157,[0.891,0.958,0.697]],[0.159,[0.891,0.958,0.697]],[0.16,[0.887,0.956,0.697]],[0.162,[0.887,0.956,0.697]],[0.164,[0.882,0.954,0.698]],[0.166,[0.882,0.954,0.698]],[0.168,[0.877,0.952,0.698]],[0.17,[0.877,0.952,0.698]],[0.172,[0.873,0.95,0.699]],[0.174,[0.873,0.95,0.699]],[0.176,[0.868,0.948,0.699]],[0.178,[0.868,0.948,0.699]],[0.18,[0.863,0.946,0.699]],[0.182,[0.863,0.946,0.699]],[0.184,[0.859,0.945,0.7]],[0.186,[0.859,0.945,0.7]],[0.188,[0.854,0.943,0.7]],[0.19,[0.854,0.943,0.7]],[0.192,[0.849,0.941,0.7]],[0.194,[0.849,0.941,0.7]],[0.196,[0.845,0.939,0.701]],[0.198,[0.845,0.939,0.701]],[0.2,[0.84,0.937,0.701]],[0.202,[0.84,0.937,0.701]],[0.204,[0.835,0.935,0.702]],[0.205,[0.835,0.935,0.702]],[0.207,[0.831,0.934,0.702]],[0.209,[0.831,0.934,0.702]],[0.211,[0.826,0.932,0.702]],[0.213,[0.826,0.932,0.702]],[0.215,[0.821,0.93,0.703]],[0.217,[0.821,0.93,0.703]],[0.219,[0.817,0.928,0.703]],[0.221,[0.817,0.928,0.703]],[0.223,[0.812,0.926,0.703]],[0.225,[0.812,0.926,0.703]],[0.227,[0.807,0.924,0.704]],[0.229,[0.807,0.924,0.704]],[0.231,[0.803,0.922,0.704]],[0.233,[0.803,0.922,0.704]],[0.235,[0.798,0.921,0.704]],[0.237,[0.798,0.921,0.704]],[0.239,[0.793,0.919,0.705]],[0.241,[0.793,0.919,0.705]],[0.243,[0.789,0.917,0.705]],[0.245,[0.789,0.917,0.705]],[0.247,[0.784,0.915,0.706]],[0.249,[0.784,0.915,0.706]],[0.25,[0.778,0.913,0.706]],[0.252,[0.778,0.913,0.706]],[0.254,[0.769,0.909,0.707]],[0.256,[0.769,0.909,0.707]],[0.258,[0.76,0.906,0.708]],[0.26,[0.76,0.906,0.708]],[0.262,[0.752,0.903,0.709]],[0.264,[0.752,0.903,0.709]],[0.266,[0.743,0.899,0.71]],[0.268,[0.743,0.899,0.71]],[0.27,[0.734,0.896,0.71]],[0.272,[0.734,0.896,0.71]],[0.274,[0.725,0.892,0.711]],[0.276,[0.725,0.892,0.711]],[0.278,[0.716,0.889,0.712]],[0.28,[0.716,0.889,0.712]],[0.282,[0.707,0.885,0.713]],[0.028,[0.707,0.885,0.713]],[0.286,[0.698,0.882,0.714]],[0.288,[0.698,0.882,0.714]],[0.29,[0.69,0.878,0.715]],[0.292,[0.69,0.878,0.715]],[0.294,[0.681,0.875,0.716]],[0.295,[0.681,0.875,0.716]],[0.297,[0.672,0.872,0.716]],[0.299,[0.672,0.872,0.716]],[0.301,[0.663,0.868,0.717]],[0.303,[0.663,0.868,0.717]],[0.305,[0.654,0.865,0.718]],[0.307,[0.654,0.865,0.718]],[0.309,[0.645,0.861,0.719]],[0.311,[0.645,0.861,0.719]],[0.313,[0.636,0.858,0.72]],[0.315,[0.636,0.858,0.72]],[0.317,[0.628,0.854,0.721]],[0.319,[0.628,0.854,0.721]],[0.321,[0.619,0.851,0.722]],[0.323,[0.619,0.851,0.722]],[0.325,[0.61,0.847,0.722]],[0.327,[0.61,0.847,0.722]],[0.329,[0.601,0.844,0.723]],[0.331,[0.601,0.844,0.723]],[0.333,[0.592,0.841,0.724]],[0.335,[0.592,0.841,0.724]],[0.337,[0.583,0.837,0.725]],[0.339,[0.583,0.837,0.725]],[0.341,[0.574,0.834,0.726]],[0.342,[0.574,0.834,0.726]],[0.344,[0.566,0.83,0.727]],[0.346,[0.566,0.83,0.727]],[0.348,[0.557,0.827,0.728]],[0.35,[0.557,0.827,0.728]],[0.352,[0.548,0.823,0.728]],[0.354,[0.548,0.823,0.728]],[0.356,[0.539,0.82,0.729]],[0.358,[0.539,0.82,0.729]],[0.36,[0.53,0.816,0.73]],[0.362,[0.53,0.816,0.73]],[0.364,[0.521,0.813,0.731]],[0.366,[0.521,0.813,0.731]],[0.368,[0.512,0.81,0.732]],[0.37,[0.512,0.81,0.732]],[0.372,[0.504,0.806,0.733]],[0.374,[0.504,0.806,0.733]],[0.376,[0.495,0.803,0.734]],[0.378,[0.495,0.803,0.734]],[0.38,[0.488,0.8,0.735]],[0.382,[0.488,0.8,0.735]],[0.384,[0.48,0.797,0.736]],[0.386,[0.48,0.797,0.736]],[0.387,[0.472,0.794,0.737]],[0.389,[0.472,0.794,0.737]],[0.391,[0.465,0.792,0.738]],[0.393,[0.465,0.792,0.738]],[0.395,[0.457,0.789,0.739]],[0.397,[0.457,0.789,0.739]],[0.399,[0.449,0.786,0.74]],[0.401,[0.449,0.786,0.74]],[0.403,[0.442,0.783,0.741]],[0.405,[0.442,0.783,0.741]],[0.407,[0.434,0.78,0.743]],[0.409,[0.434,0.78,0.743]],[0.411,[0.427,0.777,0.744]],[0.413,[0.427,0.777,0.744]],[0.415,[0.419,0.775,0.745]],[0.417,[0.419,0.775,0.745]],[0.419,[0.411,0.772,0.746]],[0.421,[0.411,0.772,0.746]],[0.423,[0.404,0.769,0.747]],[0.425,[0.404,0.769,0.747]],[0.427,[0.396,0.766,0.748]],[0.429,[0.396,0.766,0.748]],[0.431,[0.388,0.763,0.749]],[0.432,[0.388,0.763,0.749]],[0.434,[0.381,0.76,0.75]],[0.436,[0.381,0.76,0.75]],[0.438,[0.373,0.758,0.751]],[0.44,[0.373,0.758,0.751]],[0.442,[0.366,0.755,0.753]],[0.444,[0.366,0.755,0.753]],[0.446,[0.358,0.752,0.754]],[0.448,[0.358,0.752,0.754]],[0.45,[0.35,0.749,0.755]],[0.452,[0.35,0.749,0.755]],[0.454,[0.343,0.746,0.756]],[0.456,[0.343,0.746,0.756]],[0.458,[0.335,0.743,0.757]],[0.46,[0.335,0.743,0.757]],[0.462,[0.327,0.741,0.758]],[0.464,[0.327,0.741,0.758]],[0.466,[0.32,0.738,0.759]],[0.468,[0.32,0.738,0.759]],[0.47,[0.312,0.735,0.76]],[0.472,[0.312,0.735,0.76]],[0.474,[0.304,0.732,0.761]],[0.476,[0.304,0.732,0.761]],[0.477,[0.297,0.729,0.763]],[0.479,[0.297,0.729,0.763]],[0.481,[0.289,0.726,0.764]],[0.483,[0.289,0.726,0.764]],[0.485,[0.282,0.724,0.765]],[0.487,[0.282,0.724,0.765]],[0.489,[0.274,0.721,0.766]],[0.491,[0.274,0.721,0.766]],[0.493,[0.266,0.718,0.767]],[0.495,[0.266,0.718,0.767]],[0.497,[0.259,0.715,0.768]],[0.499,[0.259,0.715,0.768]],[0.501,[0.253,0.711,0.768]],[0.503,[0.253,0.711,0.768]],[0.505,[0.248,0.707,0.768]],[0.507,[0.248,0.707,0.768]],[0.509,[0.244,0.702,0.767]],[0.511,[0.244,0.702,0.767]],[0.513,[0.239,0.698,0.767]],[0.515,[0.239,0.698,0.767]],[0.517,[0.235,0.693,0.766]],[0.519,[0.235,0.693,0.766]],[0.521,[0.231,0.689,0.766]],[0.523,[0.231,0.689,0.766]],[0.524,[0.226,0.684,0.765]],[0.526,[0.226,0.684,0.765]],[0.528,[0.222,0.68,0.765]],[0.53,[0.222,0.68,0.765]],[0.532,[0.217,0.675,0.764]],[0.534,[0.217,0.675,0.764]],[0.536,[0.213,0.67,0.764]],[0.538,[0.213,0.67,0.764]],[0.54,[0.208,0.666,0.763]],[0.542,[0.208,0.666,0.763]],[0.544,[0.204,0.661,0.763]],[0.546,[0.204,0.661,0.763]],[0.548,[0.2,0.657,0.762]],[0.55,[0.2,0.657,0.762]],[0.552,[0.195,0.652,0.762]],[0.554,[0.195,0.652,0.762]],[0.556,[0.191,0.648,0.761]],[0.558,[0.191,0.648,0.761]],[0.56,[0.186,0.643,0.761]],[0.562,[0.186,0.643,0.761]],[0.564,[0.182,0.639,0.761]],[0.566,[0.182,0.639,0.761]],[0.568,[0.177,0.634,0.76]],[0.569,[0.177,0.634,0.76]],[0.571,[0.173,0.63,0.76]],[0.573,[0.173,0.63,0.76]],[0.575,[0.169,0.625,0.759]],[0.577,[0.169,0.625,0.759]],[0.579,[0.164,0.62,0.759]],[0.581,[0.164,0.62,0.759]],[0.583,[0.16,0.616,0.758]],[0.585,[0.16,0.616,0.758]],[0.587,[0.155,0.611,0.758]],[0.589,[0.155,0.611,0.758]],[0.591,[0.151,0.607,0.757]],[0.593,[0.151,0.607,0.757]],[0.595,[0.146,0.602,0.757]],[0.597,[0.146,0.602,0.757]],[0.599,[0.142,0.598,0.756]],[0.601,[0.142,0.598,0.756]],[0.603,[0.138,0.593,0.756]],[0.605,[0.138,0.593,0.756]],[0.607,[0.133,0.589,0.755]],[0.609,[0.133,0.589,0.755]],[0.611,[0.129,0.584,0.755]],[0.613,[0.129,0.584,0.755]],[0.614,[0.124,0.579,0.754]],[0.616,[0.124,0.579,0.754]],[0.618,[0.12,0.575,0.754]],[0.62,[0.12,0.575,0.754]],[0.622,[0.115,0.57,0.753]],[0.624,[0.115,0.57,0.753]],[0.626,[0.114,0.565,0.751]],[0.628,[0.114,0.565,0.751]],[0.63,[0.115,0.558,0.748]],[0.632,[0.115,0.558,0.748]],[0.634,[0.115,0.552,0.745]],[0.636,[0.115,0.552,0.745]],[0.638,[0.116,0.546,0.742]],[0.64,[0.116,0.546,0.742]],[0.642,[0.117,0.54,0.739]],[0.644,[0.117,0.54,0.739]],[0.646,[0.117,0.533,0.736]],[0.648,[0.117,0.533,0.736]],[0.65,[0.118,0.527,0.733]],[0.652,[0.118,0.527,0.733]],[0.654,[0.118,0.521,0.73]],[0.656,[0.118,0.521,0.73]],[0.658,[0.119,0.515,0.727]],[0.659,[0.119,0.515,0.727]],[0.661,[0.12,0.508,0.725]],[0.663,[0.12,0.508,0.725]],[0.665,[0.12,0.502,0.722]],[0.667,[0.12,0.502,0.722]],[0.669,[0.121,0.496,0.719]],[0.671,[0.121,0.496,0.719]],[0.673,[0.121,0.489,0.716]],[0.675,[0.121,0.489,0.716]],[0.677,[0.122,0.483,0.713]],[0.679,[0.122,0.483,0.713]],[0.681,[0.123,0.477,0.71]],[0.683,[0.123,0.477,0.71]],[0.685,[0.123,0.471,0.707]],[0.687,[0.123,0.471,0.707]],[0.689,[0.124,0.464,0.704]],[0.691,[0.124,0.464,0.704]],[0.693,[0.125,0.458,0.701]],[0.695,[0.125,0.458,0.701]],[0.697,[0.125,0.452,0.698]],[0.699,[0.125,0.452,0.698]],[0.701,[0.126,0.445,0.695]],[0.703,[0.126,0.445,0.695]],[0.705,[0.126,0.439,0.692]],[0.706,[0.126,0.439,0.692]],[0.708,[0.127,0.433,0.689]],[0.71,[0.127,0.433,0.689]],[0.712,[0.128,0.427,0.686]],[0.714,[0.128,0.427,0.686]],[0.716,[0.128,0.42,0.683]],[0.718,[0.128,0.42,0.683]],[0.72,[0.129,0.414,0.68]],[0.722,[0.129,0.414,0.68]],[0.724,[0.129,0.408,0.677]],[0.726,[0.129,0.408,0.677]],[0.728,[0.13,0.402,0.674]],[0.73,[0.13,0.402,0.674]],[0.732,[0.131,0.395,0.671]],[0.734,[0.131,0.395,0.671]],[0.736,[0.131,0.389,0.668]],[0.738,[0.131,0.389,0.668]],[0.74,[0.132,0.383,0.665]],[0.742,[0.132,0.383,0.665]],[0.744,[0.133,0.376,0.663]],[0.746,[0.133,0.376,0.663]],[0.748,[0.133,0.37,0.66]],[0.75,[0.133,0.37,0.66]],[0.751,[0.134,0.365,0.657]],[0.753,[0.134,0.365,0.657]],[0.755,[0.134,0.36,0.655]],[0.757,[0.134,0.36,0.655]],[0.759,[0.134,0.354,0.652]],[0.761,[0.134,0.354,0.652]],[0.763,[0.135,0.349,0.65]],[0.765,[0.135,0.349,0.65]],[0.767,[0.135,0.344,0.647]],[0.769,[0.135,0.344,0.647]],[0.771,[0.135,0.339,0.645]],[0.773,[0.135,0.339,0.645]],[0.775,[0.136,0.334,0.642]],[0.777,[0.136,0.334,0.642]],[0.779,[0.136,0.329,0.64]],[0.781,[0.136,0.329,0.64]],[0.783,[0.137,0.323,0.637]],[0.785,[0.137,0.323,0.637]],[0.787,[0.137,0.318,0.635]],[0.789,[0.137,0.318,0.635]],[0.791,[0.137,0.313,0.632]],[0.793,[0.137,0.313,0.632]],[0.795,[0.138,0.308,0.63]],[0.796,[0.138,0.308,0.63]],[0.798,[0.138,0.303,0.627]],[0.8,[0.138,0.303,0.627]],[0.802,[0.138,0.298,0.625]],[0.804,[0.138,0.298,0.625]],[0.806,[0.139,0.292,0.623]],[0.808,[0.139,0.292,0.623]],[0.81,[0.139,0.287,0.62]],[0.812,[0.139,0.287,0.62]],[0.814,[0.14,0.282,0.618]],[0.816,[0.14,0.282,0.618]],[0.818,[0.14,0.277,0.615]],[0.82,[0.14,0.277,0.615]],[0.822,[0.14,0.272,0.613]],[0.824,[0.14,0.272,0.613]],[0.826,[0.141,0.267,0.61]],[0.828,[0.141,0.267,0.61]],[0.83,[0.141,0.261,0.608]],[0.832,[0.141,0.261,0.608]],[0.834,[0.141,0.256,0.605]],[0.836,[0.141,0.256,0.605]],[0.838,[0.142,0.251,0.603]],[0.84,[0.142,0.251,0.603]],[0.841,[0.142,0.246,0.6]],[0.843,[0.142,0.246,0.6]],[0.845,[0.142,0.241,0.598]],[0.847,[0.142,0.241,0.598]],[0.849,[0.143,0.236,0.595]],[0.851,[0.143,0.236,0.595]],[0.853,[0.143,0.23,0.593]],[0.855,[0.143,0.23,0.593]],[0.857,[0.144,0.225,0.591]],[0.859,[0.144,0.225,0.591]],[0.861,[0.144,0.22,0.588]],[0.863,[0.144,0.22,0.588]],[0.865,[0.144,0.215,0.586]],[0.867,[0.144,0.215,0.586]],[0.869,[0.145,0.21,0.583]],[0.871,[0.145,0.21,0.583]],[0.873,[0.145,0.205,0.581]],[0.875,[0.145,0.205,0.581]],[0.877,[0.142,0.201,0.574]],[0.879,[0.142,0.201,0.574]],[0.881,[0.138,0.199,0.567]],[0.883,[0.138,0.199,0.567]],[0.885,[0.135,0.196,0.559]],[0.886,[0.135,0.196,0.559]],[0.888,[0.131,0.193,0.552]],[0.89,[0.131,0.193,0.552]],[0.892,[0.128,0.19,0.544]],[0.894,[0.128,0.19,0.544]],[0.896,[0.124,0.187,0.537]],[0.898,[0.124,0.187,0.537]],[0.9,[0.121,0.184,0.53]],[0.902,[0.121,0.184,0.53]],[0.904,[0.117,0.182,0.522]],[0.906,[0.117,0.182,0.522]],[0.908,[0.113,0.179,0.515]],[0.91,[0.113,0.179,0.515]],[0.912,[0.11,0.176,0.507]],[0.914,[0.11,0.176,0.507]],[0.916,[0.106,0.173,0.5]],[0.918,[0.106,0.173,0.5]],[0.92,[0.103,0.17,0.493]],[0.922,[0.103,0.17,0.493]],[0.924,[0.099,0.167,0.485]],[0.926,[0.099,0.167,0.485]],[0.928,[0.096,0.165,0.478]],[0.93,[0.096,0.165,0.478]],[0.932,[0.092,0.162,0.471]],[0.933,[0.092,0.162,0.471]],[0.935,[0.088,0.159,0.463]],[0.937,[0.088,0.159,0.463]],[0.939,[0.085,0.156,0.456]],[0.941,[0.085,0.156,0.456]],[0.943,[0.081,0.153,0.448]],[0.945,[0.081,0.153,0.448]],[0.947,[0.078,0.151,0.441]],[0.949,[0.078,0.151,0.441]],[0.951,[0.074,0.148,0.434]],[0.953,[0.074,0.148,0.434]],[0.955,[0.071,0.145,0.426]],[0.957,[0.071,0.145,0.426]],[0.959,[0.067,0.142,0.419]],[0.961,[0.067,0.142,0.419]],[0.963,[0.063,0.139,0.412]],[0.965,[0.063,0.139,0.412]],[0.967,[0.06,0.136,0.404]],[0.969,[0.06,0.136,0.404]],[0.971,[0.056,0.134,0.397]],[0.973,[0.056,0.134,0.397]],[0.975,[0.053,0.131,0.389]],[0.977,[0.053,0.131,0.389]],[0.978,[0.049,0.128,0.382]],[0.98,[0.049,0.128,0.382]],[0.982,[0.046,0.125,0.375]],[0.984,[0.046,0.125,0.375]],[0.986,[0.042,0.122,0.367]],[0.988,[0.042,0.122,0.367]],[0.99,[0.039,0.119,0.36]],[0.992,[0.039,0.119,0.36]],[0.994,[0.035,0.117,0.352]],[0.996,[0.035,0.117,0.352]],[0.998,[0.031,0.114,0.345]],[1,[0.031,0.114,0.345]]],[[0,[0,0,1]],[0.002,[0,0,1]],[0.004,[0,0.004,0.998]],[0.006,[0,0.004,0.998]],[0.008,[0,0.008,0.996]],[0.01,[0,0.008,0.996]],[0.012,[0,0.012,0.994]],[0.014,[0,0.012,0.994]],[0.016,[0,0.016,0.992]],[0.018,[0,0.016,0.992]],[0.02,[0,0.02,0.99]],[0.022,[0,0.02,0.99]],[0.023,[0,0.024,0.988]],[0.025,[0,0.024,0.988]],[0.027,[0,0.027,0.986]],[0.029,[0,0.027,0.986]],[0.031,[0,0.031,0.984]],[0.033,[0,0.031,0.984]],[0.035,[0,0.035,0.982]],[0.037,[0,0.035,0.982]],[0.039,[0,0.039,0.98]],[0.041,[0,0.039,0.98]],[0.043,[0,0.043,0.978]],[0.045,[0,0.043,0.978]],[0.047,[0,0.047,0.976]],[0.049,[0,0.047,0.976]],[0.051,[0,0.051,0.975]],[0.053,[0,0.051,0.975]],[0.055,[0,0.055,0.973]],[0.057,[0,0.055,0.973]],[0.059,[0,0.059,0.971]],[0.061,[0,0.059,0.971]],[0.063,[0,0.063,0.969]],[0.065,[0,0.063,0.969]],[0.067,[0,0.067,0.967]],[0.068,[0,0.067,0.967]],[0.07,[0,0.071,0.965]],[0.072,[0,0.071,0.965]],[0.074,[0,0.075,0.963]],[0.076,[0,0.075,0.963]],[0.078,[0,0.078,0.961]],[0.08,[0,0.078,0.961]],[0.082,[0,0.082,0.959]],[0.084,[0,0.082,0.959]],[0.086,[0,0.086,0.957]],[0.088,[0,0.086,0.957]],[0.09,[0,0.09,0.955]],[0.092,[0,0.09,0.955]],[0.094,[0,0.094,0.953]],[0.096,[0,0.094,0.953]],[0.098,[0,0.098,0.951]],[0.1,[0,0.098,0.951]],[0.102,[0,0.102,0.949]],[0.104,[0,0.102,0.949]],[0.106,[0,0.106,0.947]],[0.108,[0,0.106,0.947]],[0.11,[0,0.11,0.945]],[0.112,[0,0.11,0.945]],[0.114,[0,0.114,0.943]],[0.115,[0,0.114,0.943]],[0.117,[0,0.118,0.941]],[0.119,[0,0.118,0.941]],[0.121,[0,0.122,0.939]],[0.123,[0,0.122,0.939]],[0.125,[0,0.125,0.937]],[0.127,[0,0.125,0.937]],[0.129,[0,0.129,0.935]],[0.131,[0,0.129,0.935]],[0.133,[0,0.133,0.933]],[0.135,[0,0.133,0.933]],[0.137,[0,0.137,0.931]],[0.139,[0,0.137,0.931]],[0.141,[0,0.141,0.929]],[0.143,[0,0.141,0.929]],[0.145,[0,0.145,0.927]],[0.147,[0,0.145,0.927]],[0.149,[0,0.149,0.925]],[0.151,[0,0.149,0.925]],[0.153,[0,0.153,0.924]],[0.155,[0,0.153,0.924]],[0.157,[0,0.157,0.922]],[0.159,[0,0.157,0.922]],[0.16,[0,0.161,0.92]],[0.162,[0,0.161,0.92]],[0.164,[0,0.165,0.918]],[0.166,[0,0.165,0.918]],[0.168,[0,0.169,0.916]],[0.17,[0,0.169,0.916]],[0.172,[0,0.173,0.914]],[0.174,[0,0.173,0.914]],[0.176,[0,0.176,0.912]],[0.178,[0,0.176,0.912]],[0.18,[0,0.18,0.91]],[0.182,[0,0.18,0.91]],[0.184,[0,0.184,0.908]],[0.186,[0,0.184,0.908]],[0.188,[0,0.188,0.906]],[0.19,[0,0.188,0.906]],[0.192,[0,0.192,0.904]],[0.194,[0,0.192,0.904]],[0.196,[0,0.196,0.902]],[0.198,[0,0.196,0.902]],[0.2,[0,0.2,0.9]],[0.202,[0,0.2,0.9]],[0.204,[0,0.204,0.898]],[0.205,[0,0.204,0.898]],[0.207,[0,0.208,0.896]],[0.209,[0,0.208,0.896]],[0.211,[0,0.212,0.894]],[0.213,[0,0.212,0.894]],[0.215,[0,0.216,0.892]],[0.217,[0,0.216,0.892]],[0.219,[0,0.22,0.89]],[0.221,[0,0.22,0.89]],[0.223,[0,0.224,0.888]],[0.225,[0,0.224,0.888]],[0.227,[0,0.227,0.886]],[0.229,[0,0.227,0.886]],[0.231,[0,0.231,0.884]],[0.233,[0,0.231,0.884]],[0.235,[0,0.235,0.882]],[0.237,[0,0.235,0.882]],[0.239,[0,0.239,0.88]],[0.241,[0,0.239,0.88]],[0.243,[0,0.243,0.878]],[0.245,[0,0.243,0.878]],[0.247,[0,0.247,0.876]],[0.249,[0,0.247,0.876]],[0.25,[0,0.251,0.875]],[0.252,[0,0.251,0.875]],[0.254,[0,0.255,0.873]],[0.256,[0,0.255,0.873]],[0.258,[0,0.259,0.871]],[0.26,[0,0.259,0.871]],[0.262,[0,0.263,0.869]],[0.264,[0,0.263,0.869]],[0.266,[0,0.267,0.867]],[0.268,[0,0.267,0.867]],[0.27,[0,0.271,0.865]],[0.272,[0,0.271,0.865]],[0.274,[0,0.275,0.863]],[0.276,[0,0.275,0.863]],[0.278,[0,0.278,0.861]],[0.28,[0,0.278,0.861]],[0.282,[0,0.282,0.859]],[0.028,[0,0.282,0.859]],[0.286,[0,0.286,0.857]],[0.288,[0,0.286,0.857]],[0.29,[0,0.29,0.855]],[0.292,[0,0.29,0.855]],[0.294,[0,0.294,0.853]],[0.295,[0,0.294,0.853]],[0.297,[0,0.298,0.851]],[0.299,[0,0.298,0.851]],[0.301,[0,0.302,0.849]],[0.303,[0,0.302,0.849]],[0.305,[0,0.306,0.847]],[0.307,[0,0.306,0.847]],[0.309,[0,0.31,0.845]],[0.311,[0,0.31,0.845]],[0.313,[0,0.314,0.843]],[0.315,[0,0.314,0.843]],[0.317,[0,0.318,0.841]],[0.319,[0,0.318,0.841]],[0.321,[0,0.322,0.839]],[0.323,[0,0.322,0.839]],[0.325,[0,0.325,0.837]],[0.327,[0,0.325,0.837]],[0.329,[0,0.329,0.835]],[0.331,[0,0.329,0.835]],[0.333,[0,0.333,0.833]],[0.335,[0,0.333,0.833]],[0.337,[0,0.337,0.831]],[0.339,[0,0.337,0.831]],[0.341,[0,0.341,0.829]],[0.342,[0,0.341,0.829]],[0.344,[0,0.345,0.827]],[0.346,[0,0.345,0.827]],[0.348,[0,0.349,0.825]],[0.35,[0,0.349,0.825]],[0.352,[0,0.353,0.824]],[0.354,[0,0.353,0.824]],[0.356,[0,0.357,0.822]],[0.358,[0,0.357,0.822]],[0.36,[0,0.361,0.82]],[0.362,[0,0.361,0.82]],[0.364,[0,0.365,0.818]],[0.366,[0,0.365,0.818]],[0.368,[0,0.369,0.816]],[0.37,[0,0.369,0.816]],[0.372,[0,0.373,0.814]],[0.374,[0,0.373,0.814]],[0.376,[0,0.376,0.812]],[0.378,[0,0.376,0.812]],[0.38,[0,0.38,0.81]],[0.382,[0,0.38,0.81]],[0.384,[0,0.384,0.808]],[0.386,[0,0.384,0.808]],[0.387,[0,0.388,0.806]],[0.389,[0,0.388,0.806]],[0.391,[0,0.392,0.804]],[0.393,[0,0.392,0.804]],[0.395,[0,0.396,0.802]],[0.397,[0,0.396,0.802]],[0.399,[0,0.4,0.8]],[0.401,[0,0.4,0.8]],[0.403,[0,0.404,0.798]],[0.405,[0,0.404,0.798]],[0.407,[0,0.408,0.796]],[0.409,[0,0.408,0.796]],[0.411,[0,0.412,0.794]],[0.413,[0,0.412,0.794]],[0.415,[0,0.416,0.792]],[0.417,[0,0.416,0.792]],[0.419,[0,0.42,0.79]],[0.421,[0,0.42,0.79]],[0.423,[0,0.424,0.788]],[0.425,[0,0.424,0.788]],[0.427,[0,0.427,0.786]],[0.429,[0,0.427,0.786]],[0.431,[0,0.431,0.784]],[0.432,[0,0.431,0.784]],[0.434,[0,0.435,0.782]],[0.436,[0,0.435,0.782]],[0.438,[0,0.439,0.78]],[0.44,[0,0.439,0.78]],[0.442,[0,0.443,0.778]],[0.444,[0,0.443,0.778]],[0.446,[0,0.447,0.776]],[0.448,[0,0.447,0.776]],[0.45,[0,0.451,0.775]],[0.452,[0,0.451,0.775]],[0.454,[0,0.455,0.773]],[0.456,[0,0.455,0.773]],[0.458,[0,0.459,0.771]],[0.46,[0,0.459,0.771]],[0.462,[0,0.463,0.769]],[0.464,[0,0.463,0.769]],[0.466,[0,0.467,0.767]],[0.468,[0,0.467,0.767]],[0.47,[0,0.471,0.765]],[0.472,[0,0.471,0.765]],[0.474,[0,0.475,0.763]],[0.476,[0,0.475,0.763]],[0.477,[0,0.478,0.761]],[0.479,[0,0.478,0.761]],[0.481,[0,0.482,0.759]],[0.483,[0,0.482,0.759]],[0.485,[0,0.486,0.757]],[0.487,[0,0.486,0.757]],[0.489,[0,0.49,0.755]],[0.491,[0,0.49,0.755]],[0.493,[0,0.494,0.753]],[0.495,[0,0.494,0.753]],[0.497,[0,0.498,0.751]],[0.499,[0,0.498,0.751]],[0.501,[0,0.502,0.749]],[0.503,[0,0.502,0.749]],[0.505,[0,0.506,0.747]],[0.507,[0,0.506,0.747]],[0.509,[0,0.51,0.745]],[0.511,[0,0.51,0.745]],[0.513,[0,0.514,0.743]],[0.515,[0,0.514,0.743]],[0.517,[0,0.518,0.741]],[0.519,[0,0.518,0.741]],[0.521,[0,0.522,0.739]],[0.523,[0,0.522,0.739]],[0.524,[0,0.525,0.737]],[0.526,[0,0.525,0.737]],[0.528,[0,0.529,0.735]],[0.53,[0,0.529,0.735]],[0.532,[0,0.533,0.733]],[0.534,[0,0.533,0.733]],[0.536,[0,0.537,0.731]],[0.538,[0,0.537,0.731]],[0.54,[0,0.541,0.729]],[0.542,[0,0.541,0.729]],[0.544,[0,0.545,0.727]],[0.546,[0,0.545,0.727]],[0.548,[0,0.549,0.725]],[0.55,[0,0.549,0.725]],[0.552,[0,0.553,0.724]],[0.554,[0,0.553,0.724]],[0.556,[0,0.557,0.722]],[0.558,[0,0.557,0.722]],[0.56,[0,0.561,0.72]],[0.562,[0,0.561,0.72]],[0.564,[0,0.565,0.718]],[0.566,[0,0.565,0.718]],[0.568,[0,0.569,0.716]],[0.569,[0,0.569,0.716]],[0.571,[0,0.573,0.714]],[0.573,[0,0.573,0.714]],[0.575,[0,0.576,0.712]],[0.577,[0,0.576,0.712]],[0.579,[0,0.58,0.71]],[0.581,[0,0.58,0.71]],[0.583,[0,0.584,0.708]],[0.585,[0,0.584,0.708]],[0.587,[0,0.588,0.706]],[0.589,[0,0.588,0.706]],[0.591,[0,0.592,0.704]],[0.593,[0,0.592,0.704]],[0.595,[0,0.596,0.702]],[0.597,[0,0.596,0.702]],[0.599,[0,0.6,0.7]],[0.601,[0,0.6,0.7]],[0.603,[0,0.604,0.698]],[0.605,[0,0.604,0.698]],[0.607,[0,0.608,0.696]],[0.609,[0,0.608,0.696]],[0.611,[0,0.612,0.694]],[0.613,[0,0.612,0.694]],[0.614,[0,0.616,0.692]],[0.616,[0,0.616,0.692]],[0.618,[0,0.62,0.69]],[0.62,[0,0.62,0.69]],[0.622,[0,0.624,0.688]],[0.624,[0,0.624,0.688]],[0.626,[0,0.627,0.686]],[0.628,[0,0.627,0.686]],[0.63,[0,0.631,0.684]],[0.632,[0,0.631,0.684]],[0.634,[0,0.635,0.682]],[0.636,[0,0.635,0.682]],[0.638,[0,0.639,0.68]],[0.64,[0,0.639,0.68]],[0.642,[0,0.643,0.678]],[0.644,[0,0.643,0.678]],[0.646,[0,0.647,0.676]],[0.648,[0,0.647,0.676]],[0.65,[0,0.651,0.675]],[0.652,[0,0.651,0.675]],[0.654,[0,0.655,0.673]],[0.656,[0,0.655,0.673]],[0.658,[0,0.659,0.671]],[0.659,[0,0.659,0.671]],[0.661,[0,0.663,0.669]],[0.663,[0,0.663,0.669]],[0.665,[0,0.667,0.667]],[0.667,[0,0.667,0.667]],[0.669,[0,0.671,0.665]],[0.671,[0,0.671,0.665]],[0.673,[0,0.675,0.663]],[0.675,[0,0.675,0.663]],[0.677,[0,0.678,0.661]],[0.679,[0,0.678,0.661]],[0.681,[0,0.682,0.659]],[0.683,[0,0.682,0.659]],[0.685,[0,0.686,0.657]],[0.687,[0,0.686,0.657]],[0.689,[0,0.69,0.655]],[0.691,[0,0.69,0.655]],[0.693,[0,0.694,0.653]],[0.695,[0,0.694,0.653]],[0.697,[0,0.698,0.651]],[0.699,[0,0.698,0.651]],[0.701,[0,0.702,0.649]],[0.703,[0,0.702,0.649]],[0.705,[0,0.706,0.647]],[0.706,[0,0.706,0.647]],[0.708,[0,0.71,0.645]],[0.71,[0,0.71,0.645]],[0.712,[0,0.714,0.643]],[0.714,[0,0.714,0.643]],[0.716,[0,0.718,0.641]],[0.718,[0,0.718,0.641]],[0.72,[0,0.722,0.639]],[0.722,[0,0.722,0.639]],[0.724,[0,0.725,0.637]],[0.726,[0,0.725,0.637]],[0.728,[0,0.729,0.635]],[0.73,[0,0.729,0.635]],[0.732,[0,0.733,0.633]],[0.734,[0,0.733,0.633]],[0.736,[0,0.737,0.631]],[0.738,[0,0.737,0.631]],[0.74,[0,0.741,0.629]],[0.742,[0,0.741,0.629]],[0.744,[0,0.745,0.627]],[0.746,[0,0.745,0.627]],[0.748,[0,0.749,0.625]],[0.75,[0,0.749,0.625]],[0.751,[0,0.753,0.624]],[0.753,[0,0.753,0.624]],[0.755,[0,0.757,0.622]],[0.757,[0,0.757,0.622]],[0.759,[0,0.761,0.62]],[0.761,[0,0.761,0.62]],[0.763,[0,0.765,0.618]],[0.765,[0,0.765,0.618]],[0.767,[0,0.769,0.616]],[0.769,[0,0.769,0.616]],[0.771,[0,0.773,0.614]],[0.773,[0,0.773,0.614]],[0.775,[0,0.776,0.612]],[0.777,[0,0.776,0.612]],[0.779,[0,0.78,0.61]],[0.781,[0,0.78,0.61]],[0.783,[0,0.784,0.608]],[0.785,[0,0.784,0.608]],[0.787,[0,0.788,0.606]],[0.789,[0,0.788,0.606]],[0.791,[0,0.792,0.604]],[0.793,[0,0.792,0.604]],[0.795,[0,0.796,0.602]],[0.796,[0,0.796,0.602]],[0.798,[0,0.8,0.6]],[0.8,[0,0.8,0.6]],[0.802,[0,0.804,0.598]],[0.804,[0,0.804,0.598]],[0.806,[0,0.808,0.596]],[0.808,[0,0.808,0.596]],[0.81,[0,0.812,0.594]],[0.812,[0,0.812,0.594]],[0.814,[0,0.816,0.592]],[0.816,[0,0.816,0.592]],[0.818,[0,0.82,0.59]],[0.82,[0,0.82,0.59]],[0.822,[0,0.824,0.588]],[0.824,[0,0.824,0.588]],[0.826,[0,0.827,0.586]],[0.828,[0,0.827,0.586]],[0.83,[0,0.831,0.584]],[0.832,[0,0.831,0.584]],[0.834,[0,0.835,0.582]],[0.836,[0,0.835,0.582]],[0.838,[0,0.839,0.58]],[0.84,[0,0.839,0.58]],[0.841,[0,0.843,0.578]],[0.843,[0,0.843,0.578]],[0.845,[0,0.847,0.576]],[0.847,[0,0.847,0.576]],[0.849,[0,0.851,0.575]],[0.851,[0,0.851,0.575]],[0.853,[0,0.855,0.573]],[0.855,[0,0.855,0.573]],[0.857,[0,0.859,0.571]],[0.859,[0,0.859,0.571]],[0.861,[0,0.863,0.569]],[0.863,[0,0.863,0.569]],[0.865,[0,0.867,0.567]],[0.867,[0,0.867,0.567]],[0.869,[0,0.871,0.565]],[0.871,[0,0.871,0.565]],[0.873,[0,0.875,0.563]],[0.875,[0,0.875,0.563]],[0.877,[0,0.878,0.561]],[0.879,[0,0.878,0.561]],[0.881,[0,0.882,0.559]],[0.883,[0,0.882,0.559]],[0.885,[0,0.886,0.557]],[0.886,[0,0.886,0.557]],[0.888,[0,0.89,0.555]],[0.89,[0,0.89,0.555]],[0.892,[0,0.894,0.553]],[0.894,[0,0.894,0.553]],[0.896,[0,0.898,0.551]],[0.898,[0,0.898,0.551]],[0.9,[0,0.902,0.549]],[0.902,[0,0.902,0.549]],[0.904,[0,0.906,0.547]],[0.906,[0,0.906,0.547]],[0.908,[0,0.91,0.545]],[0.91,[0,0.91,0.545]],[0.912,[0,0.914,0.543]],[0.914,[0,0.914,0.543]],[0.916,[0,0.918,0.541]],[0.918,[0,0.918,0.541]],[0.92,[0,0.922,0.539]],[0.922,[0,0.922,0.539]],[0.924,[0,0.925,0.537]],[0.926,[0,0.925,0.537]],[0.928,[0,0.929,0.535]],[0.93,[0,0.929,0.535]],[0.932,[0,0.933,0.533]],[0.933,[0,0.933,0.533]],[0.935,[0,0.937,0.531]],[0.937,[0,0.937,0.531]],[0.939,[0,0.941,0.529]],[0.941,[0,0.941,0.529]],[0.943,[0,0.945,0.527]],[0.945,[0,0.945,0.527]],[0.947,[0,0.949,0.525]],[0.949,[0,0.949,0.525]],[0.951,[0,0.953,0.524]],[0.953,[0,0.953,0.524]],[0.955,[0,0.957,0.522]],[0.957,[0,0.957,0.522]],[0.959,[0,0.961,0.52]],[0.961,[0,0.961,0.52]],[0.963,[0,0.965,0.518]],[0.965,[0,0.965,0.518]],[0.967,[0,0.969,0.516]],[0.969,[0,0.969,0.516]],[0.971,[0,0.973,0.514]],[0.973,[0,0.973,0.514]],[0.975,[0,0.976,0.512]],[0.977,[0,0.976,0.512]],[0.978,[0,0.98,0.51]],[0.98,[0,0.98,0.51]],[0.982,[0,0.984,0.508]],[0.984,[0,0.984,0.508]],[0.986,[0,0.988,0.506]],[0.988,[0,0.988,0.506]],[0.99,[0,0.992,0.504]],[0.992,[0,0.992,0.504]],[0.994,[0,0.996,0.502]],[0.996,[0,0.996,0.502]],[0.998,[0,1,0.5]],[1,[0,1,0.5]]],[[0,[0,0,0.5]],[0.002,[0,0,0.5]],[0.004,[0,0,0.518]],[0.006,[0,0,0.518]],[0.008,[0,0,0.536]],[0.01,[0,0,0.536]],[0.012,[0,0,0.553]],[0.014,[0,0,0.553]],[0.016,[0,0,0.571]],[0.018,[0,0,0.571]],[0.02,[0,0,0.589]],[0.022,[0,0,0.589]],[0.023,[0,0,0.607]],[0.025,[0,0,0.607]],[0.027,[0,0,0.625]],[0.029,[0,0,0.625]],[0.031,[0,0,0.643]],[0.033,[0,0,0.643]],[0.035,[0,0,0.66]],[0.037,[0,0,0.66]],[0.039,[0,0,0.678]],[0.041,[0,0,0.678]],[0.043,[0,0,0.696]],[0.045,[0,0,0.696]],[0.047,[0,0,0.714]],[0.049,[0,0,0.714]],[0.051,[0,0,0.732]],[0.053,[0,0,0.732]],[0.055,[0,0,0.75]],[0.057,[0,0,0.75]],[0.059,[0,0,0.767]],[0.061,[0,0,0.767]],[0.063,[0,0,0.785]],[0.065,[0,0,0.785]],[0.067,[0,0,0.803]],[0.068,[0,0,0.803]],[0.07,[0,0,0.821]],[0.072,[0,0,0.821]],[0.074,[0,0,0.839]],[0.076,[0,0,0.839]],[0.078,[0,0,0.857]],[0.08,[0,0,0.857]],[0.082,[0,0,0.874]],[0.084,[0,0,0.874]],[0.086,[0,0,0.892]],[0.088,[0,0,0.892]],[0.09,[0,0,0.91]],[0.092,[0,0,0.91]],[0.094,[0,0,0.928]],[0.096,[0,0,0.928]],[0.098,[0,0,0.946]],[0.1,[0,0,0.946]],[0.102,[0,0,0.963]],[0.104,[0,0,0.963]],[0.106,[0,0,0.981]],[0.108,[0,0,0.981]],[0.11,[0,0,0.999]],[0.112,[0,0,0.999]],[0.114,[0,0,1]],[0.115,[0,0,1]],[0.117,[0,0,1]],[0.119,[0,0,1]],[0.121,[0,0,1]],[0.123,[0,0,1]],[0.125,[0,0.002,1]],[0.127,[0,0.002,1]],[0.129,[0,0.018,1]],[0.131,[0,0.018,1]],[0.133,[0,0.033,1]],[0.135,[0,0.033,1]],[0.137,[0,0.049,1]],[0.139,[0,0.049,1]],[0.141,[0,0.065,1]],[0.143,[0,0.065,1]],[0.145,[0,0.08,1]],[0.147,[0,0.08,1]],[0.149,[0,0.096,1]],[0.151,[0,0.096,1]],[0.153,[0,0.112,1]],[0.155,[0,0.112,1]],[0.157,[0,0.127,1]],[0.159,[0,0.127,1]],[0.16,[0,0.143,1]],[0.162,[0,0.143,1]],[0.164,[0,0.159,1]],[0.166,[0,0.159,1]],[0.168,[0,0.175,1]],[0.17,[0,0.175,1]],[0.172,[0,0.19,1]],[0.174,[0,0.19,1]],[0.176,[0,0.206,1]],[0.178,[0,0.206,1]],[0.18,[0,0.222,1]],[0.182,[0,0.222,1]],[0.184,[0,0.237,1]],[0.186,[0,0.237,1]],[0.188,[0,0.253,1]],[0.19,[0,0.253,1]],[0.192,[0,0.269,1]],[0.194,[0,0.269,1]],[0.196,[0,0.028,1]],[0.198,[0,0.028,1]],[0.2,[0,0.3,1]],[0.202,[0,0.3,1]],[0.204,[0,0.316,1]],[0.205,[0,0.316,1]],[0.207,[0,0.331,1]],[0.209,[0,0.331,1]],[0.211,[0,0.347,1]],[0.213,[0,0.347,1]],[0.215,[0,0.363,1]],[0.217,[0,0.363,1]],[0.219,[0,0.378,1]],[0.221,[0,0.378,1]],[0.223,[0,0.394,1]],[0.225,[0,0.394,1]],[0.227,[0,0.41,1]],[0.229,[0,0.41,1]],[0.231,[0,0.425,1]],[0.233,[0,0.425,1]],[0.235,[0,0.441,1]],[0.237,[0,0.441,1]],[0.239,[0,0.457,1]],[0.241,[0,0.457,1]],[0.243,[0,0.473,1]],[0.245,[0,0.473,1]],[0.247,[0,0.488,1]],[0.249,[0,0.488,1]],[0.25,[0,0.504,1]],[0.252,[0,0.504,1]],[0.254,[0,0.52,1]],[0.256,[0,0.52,1]],[0.258,[0,0.535,1]],[0.26,[0,0.535,1]],[0.262,[0,0.551,1]],[0.264,[0,0.551,1]],[0.266,[0,0.567,1]],[0.268,[0,0.567,1]],[0.27,[0,0.582,1]],[0.272,[0,0.582,1]],[0.274,[0,0.598,1]],[0.276,[0,0.598,1]],[0.278,[0,0.614,1]],[0.28,[0,0.614,1]],[0.282,[0,0.629,1]],[0.028,[0,0.629,1]],[0.286,[0,0.645,1]],[0.288,[0,0.645,1]],[0.29,[0,0.661,1]],[0.292,[0,0.661,1]],[0.294,[0,0.676,1]],[0.295,[0,0.676,1]],[0.297,[0,0.692,1]],[0.299,[0,0.692,1]],[0.301,[0,0.708,1]],[0.303,[0,0.708,1]],[0.305,[0,0.724,1]],[0.307,[0,0.724,1]],[0.309,[0,0.739,1]],[0.311,[0,0.739,1]],[0.313,[0,0.755,1]],[0.315,[0,0.755,1]],[0.317,[0,0.771,1]],[0.319,[0,0.771,1]],[0.321,[0,0.786,1]],[0.323,[0,0.786,1]],[0.325,[0,0.802,1]],[0.327,[0,0.802,1]],[0.329,[0,0.818,1]],[0.331,[0,0.818,1]],[0.333,[0,0.833,1]],[0.335,[0,0.833,1]],[0.337,[0,0.849,1]],[0.339,[0,0.849,1]],[0.341,[0,0.865,0.996]],[0.342,[0,0.865,0.996]],[0.344,[0,0.88,0.984]],[0.346,[0,0.88,0.984]],[0.348,[0,0.896,0.971]],[0.35,[0,0.896,0.971]],[0.352,[0.009,0.912,0.958]],[0.354,[0.009,0.912,0.958]],[0.356,[0.022,0.927,0.946]],[0.358,[0.022,0.927,0.946]],[0.36,[0.035,0.943,0.933]],[0.362,[0.035,0.943,0.933]],[0.364,[0.047,0.959,0.92]],[0.366,[0.047,0.959,0.92]],[0.368,[0.06,0.975,0.908]],[0.37,[0.06,0.975,0.908]],[0.372,[0.073,0.99,0.895]],[0.374,[0.073,0.99,0.895]],[0.376,[0.085,1,0.882]],[0.378,[0.085,1,0.882]],[0.38,[0.098,1,0.87]],[0.382,[0.098,1,0.87]],[0.384,[0.111,1,0.857]],[0.386,[0.111,1,0.857]],[0.387,[0.123,1,0.844]],[0.389,[0.123,1,0.844]],[0.391,[0.136,1,0.832]],[0.393,[0.136,1,0.832]],[0.395,[0.149,1,0.819]],[0.397,[0.149,1,0.819]],[0.399,[0.161,1,0.806]],[0.401,[0.161,1,0.806]],[0.403,[0.174,1,0.794]],[0.405,[0.174,1,0.794]],[0.407,[0.187,1,0.781]],[0.409,[0.187,1,0.781]],[0.411,[0.199,1,0.769]],[0.413,[0.199,1,0.769]],[0.415,[0.212,1,0.756]],[0.417,[0.212,1,0.756]],[0.419,[0.225,1,0.743]],[0.421,[0.225,1,0.743]],[0.423,[0.237,1,0.731]],[0.425,[0.237,1,0.731]],[0.427,[0.25,1,0.718]],[0.429,[0.25,1,0.718]],[0.431,[0.262,1,0.705]],[0.432,[0.262,1,0.705]],[0.434,[0.275,1,0.693]],[0.436,[0.275,1,0.693]],[0.438,[0.288,1,0.68]],[0.44,[0.288,1,0.68]],[0.442,[0.3,1,0.667]],[0.444,[0.3,1,0.667]],[0.446,[0.313,1,0.655]],[0.448,[0.313,1,0.655]],[0.45,[0.326,1,0.642]],[0.452,[0.326,1,0.642]],[0.454,[0.338,1,0.629]],[0.456,[0.338,1,0.629]],[0.458,[0.351,1,0.617]],[0.46,[0.351,1,0.617]],[0.462,[0.364,1,0.604]],[0.464,[0.364,1,0.604]],[0.466,[0.376,1,0.591]],[0.468,[0.376,1,0.591]],[0.47,[0.389,1,0.579]],[0.472,[0.389,1,0.579]],[0.474,[0.402,1,0.566]],[0.476,[0.402,1,0.566]],[0.477,[0.414,1,0.553]],[0.479,[0.414,1,0.553]],[0.481,[0.427,1,0.541]],[0.483,[0.427,1,0.541]],[0.485,[0.44,1,0.528]],[0.487,[0.44,1,0.528]],[0.489,[0.452,1,0.515]],[0.491,[0.452,1,0.515]],[0.493,[0.465,1,0.503]],[0.495,[0.465,1,0.503]],[0.497,[0.478,1,0.49]],[0.499,[0.478,1,0.49]],[0.501,[0.49,1,0.478]],[0.503,[0.49,1,0.478]],[0.505,[0.503,1,0.465]],[0.507,[0.503,1,0.465]],[0.509,[0.515,1,0.452]],[0.511,[0.515,1,0.452]],[0.513,[0.528,1,0.44]],[0.515,[0.528,1,0.44]],[0.517,[0.541,1,0.427]],[0.519,[0.541,1,0.427]],[0.521,[0.553,1,0.414]],[0.523,[0.553,1,0.414]],[0.524,[0.566,1,0.402]],[0.526,[0.566,1,0.402]],[0.528,[0.579,1,0.389]],[0.53,[0.579,1,0.389]],[0.532,[0.591,1,0.376]],[0.534,[0.591,1,0.376]],[0.536,[0.604,1,0.364]],[0.538,[0.604,1,0.364]],[0.54,[0.617,1,0.351]],[0.542,[0.617,1,0.351]],[0.544,[0.629,1,0.338]],[0.546,[0.629,1,0.338]],[0.548,[0.642,1,0.326]],[0.55,[0.642,1,0.326]],[0.552,[0.655,1,0.313]],[0.554,[0.655,1,0.313]],[0.556,[0.667,1,0.3]],[0.558,[0.667,1,0.3]],[0.56,[0.68,1,0.288]],[0.562,[0.68,1,0.288]],[0.564,[0.693,1,0.275]],[0.566,[0.693,1,0.275]],[0.568,[0.705,1,0.262]],[0.569,[0.705,1,0.262]],[0.571,[0.718,1,0.25]],[0.573,[0.718,1,0.25]],[0.575,[0.731,1,0.237]],[0.577,[0.731,1,0.237]],[0.579,[0.743,1,0.225]],[0.581,[0.743,1,0.225]],[0.583,[0.756,1,0.212]],[0.585,[0.756,1,0.212]],[0.587,[0.769,1,0.199]],[0.589,[0.769,1,0.199]],[0.591,[0.781,1,0.187]],[0.593,[0.781,1,0.187]],[0.595,[0.794,1,0.174]],[0.597,[0.794,1,0.174]],[0.599,[0.806,1,0.161]],[0.601,[0.806,1,0.161]],[0.603,[0.819,1,0.149]],[0.605,[0.819,1,0.149]],[0.607,[0.832,1,0.136]],[0.609,[0.832,1,0.136]],[0.611,[0.844,1,0.123]],[0.613,[0.844,1,0.123]],[0.614,[0.857,1,0.111]],[0.616,[0.857,1,0.111]],[0.618,[0.87,1,0.098]],[0.62,[0.87,1,0.098]],[0.622,[0.882,1,0.085]],[0.624,[0.882,1,0.085]],[0.626,[0.895,1,0.073]],[0.628,[0.895,1,0.073]],[0.63,[0.908,1,0.06]],[0.632,[0.908,1,0.06]],[0.634,[0.92,1,0.047]],[0.636,[0.92,1,0.047]],[0.638,[0.933,1,0.035]],[0.64,[0.933,1,0.035]],[0.642,[0.946,0.988,0.022]],[0.644,[0.946,0.988,0.022]],[0.646,[0.958,0.974,0.009]],[0.648,[0.958,0.974,0.009]],[0.65,[0.971,0.959,0]],[0.652,[0.971,0.959,0]],[0.654,[0.984,0.945,0]],[0.656,[0.984,0.945,0]],[0.658,[0.996,0.93,0]],[0.659,[0.996,0.93,0]],[0.661,[1,0.916,0]],[0.663,[1,0.916,0]],[0.665,[1,0.901,0]],[0.667,[1,0.901,0]],[0.669,[1,0.887,0]],[0.671,[1,0.887,0]],[0.673,[1,0.872,0]],[0.675,[1,0.872,0]],[0.677,[1,0.858,0]],[0.679,[1,0.858,0]],[0.681,[1,0.843,0]],[0.683,[1,0.843,0]],[0.685,[1,0.829,0]],[0.687,[1,0.829,0]],[0.689,[1,0.814,0]],[0.691,[1,0.814,0]],[0.693,[1,0.8,0]],[0.695,[1,0.8,0]],[0.697,[1,0.785,0]],[0.699,[1,0.785,0]],[0.701,[1,0.771,0]],[0.703,[1,0.771,0]],[0.705,[1,0.756,0]],[0.706,[1,0.756,0]],[0.708,[1,0.741,0]],[0.71,[1,0.741,0]],[0.712,[1,0.727,0]],[0.714,[1,0.727,0]],[0.716,[1,0.712,0]],[0.718,[1,0.712,0]],[0.72,[1,0.698,0]],[0.722,[1,0.698,0]],[0.724,[1,0.683,0]],[0.726,[1,0.683,0]],[0.728,[1,0.669,0]],[0.73,[1,0.669,0]],[0.732,[1,0.654,0]],[0.734,[1,0.654,0]],[0.736,[1,0.64,0]],[0.738,[1,0.64,0]],[0.74,[1,0.625,0]],[0.742,[1,0.625,0]],[0.744,[1,0.611,0]],[0.746,[1,0.611,0]],[0.748,[1,0.596,0]],[0.75,[1,0.596,0]],[0.751,[1,0.582,0]],[0.753,[1,0.582,0]],[0.755,[1,0.567,0]],[0.757,[1,0.567,0]],[0.759,[1,0.553,0]],[0.761,[1,0.553,0]],[0.763,[1,0.538,0]],[0.765,[1,0.538,0]],[0.767,[1,0.524,0]],[0.769,[1,0.524,0]],[0.771,[1,0.509,0]],[0.773,[1,0.509,0]],[0.775,[1,0.495,0]],[0.777,[1,0.495,0]],[0.779,[1,0.48,0]],[0.781,[1,0.48,0]],[0.783,[1,0.466,0]],[0.785,[1,0.466,0]],[0.787,[1,0.451,0]],[0.789,[1,0.451,0]],[0.791,[1,0.436,0]],[0.793,[1,0.436,0]],[0.795,[1,0.422,0]],[0.796,[1,0.422,0]],[0.798,[1,0.407,0]],[0.8,[1,0.407,0]],[0.802,[1,0.393,0]],[0.804,[1,0.393,0]],[0.806,[1,0.378,0]],[0.808,[1,0.378,0]],[0.81,[1,0.364,0]],[0.812,[1,0.364,0]],[0.814,[1,0.349,0]],[0.816,[1,0.349,0]],[0.818,[1,0.335,0]],[0.82,[1,0.335,0]],[0.822,[1,0.32,0]],[0.824,[1,0.32,0]],[0.826,[1,0.306,0]],[0.828,[1,0.306,0]],[0.83,[1,0.291,0]],[0.832,[1,0.291,0]],[0.834,[1,0.277,0]],[0.836,[1,0.277,0]],[0.838,[1,0.262,0]],[0.84,[1,0.262,0]],[0.841,[1,0.248,0]],[0.843,[1,0.248,0]],[0.845,[1,0.233,0]],[0.847,[1,0.233,0]],[0.849,[1,0.219,0]],[0.851,[1,0.219,0]],[0.853,[1,0.204,0]],[0.855,[1,0.204,0]],[0.857,[1,0.19,0]],[0.859,[1,0.19,0]],[0.861,[1,0.175,0]],[0.863,[1,0.175,0]],[0.865,[1,0.16,0]],[0.867,[1,0.16,0]],[0.869,[1,0.146,0]],[0.871,[1,0.146,0]],[0.873,[1,0.131,0]],[0.875,[1,0.131,0]],[0.877,[1,0.117,0]],[0.879,[1,0.117,0]],[0.881,[1,0.102,0]],[0.883,[1,0.102,0]],[0.885,[1,0.088,0]],[0.886,[1,0.088,0]],[0.888,[0.999,0.073,0]],[0.89,[0.999,0.073,0]],[0.892,[0.981,0.059,0]],[0.894,[0.981,0.059,0]],[0.896,[0.963,0.044,0]],[0.898,[0.963,0.044,0]],[0.9,[0.946,0.03,0]],[0.902,[0.946,0.03,0]],[0.904,[0.928,0.015,0]],[0.906,[0.928,0.015,0]],[0.908,[0.91,0.001,0]],[0.91,[0.91,0.001,0]],[0.912,[0.892,0,0]],[0.914,[0.892,0,0]],[0.916,[0.874,0,0]],[0.918,[0.874,0,0]],[0.92,[0.857,0,0]],[0.922,[0.857,0,0]],[0.924,[0.839,0,0]],[0.926,[0.839,0,0]],[0.928,[0.821,0,0]],[0.93,[0.821,0,0]],[0.932,[0.803,0,0]],[0.933,[0.803,0,0]],[0.935,[0.785,0,0]],[0.937,[0.785,0,0]],[0.939,[0.767,0,0]],[0.941,[0.767,0,0]],[0.943,[0.75,0,0]],[0.945,[0.75,0,0]],[0.947,[0.732,0,0]],[0.949,[0.732,0,0]],[0.951,[0.714,0,0]],[0.953,[0.714,0,0]],[0.955,[0.696,0,0]],[0.957,[0.696,0,0]],[0.959,[0.678,0,0]],[0.961,[0.678,0,0]],[0.963,[0.66,0,0]],[0.965,[0.66,0,0]],[0.967,[0.643,0,0]],[0.969,[0.643,0,0]],[0.971,[0.625,0,0]],[0.973,[0.625,0,0]],[0.975,[0.607,0,0]],[0.977,[0.607,0,0]],[0.978,[0.589,0,0]],[0.98,[0.589,0,0]],[0.982,[0.571,0,0]],[0.984,[0.571,0,0]],[0.986,[0.553,0,0]],[0.988,[0.553,0,0]],[0.99,[0.536,0,0]],[0.992,[0.536,0,0]],[0.994,[0.518,0,0]],[0.996,[0.518,0,0]],[0.998,[0.5,0,0]],[1,[0.5,0,0]]]],"maxStress":178.10598907470705,"minStress":-347.64988403320314},"edges":[{"source":0,"area":1,"density":0.028,"id":"e0","stiffness":1000000,"target":1,"stress":0.0},{"source":1,"area":1,"density":0.028,"id":"e1","stiffness":1000000,"target":2,"stress":0.0},{"source":2,"area":1,"density":0.028,"id":"e2","stiffness":1000000,"target":3,"stress":0.0},{"source":3,"area":1,"density":0.028,"id":"e3","stiffness":1000000,"target":0,"stress":0.0},{"source":4,"area":1,"density":0.028,"id":"e4","stiffness":1000000,"target":5,"stress":3.2599264486366094e-5},{"source":5,"area":1,"density":0.028,"id":"e5","stiffness":1000000,"target":0,"stress":-1.303679170294312e-5},{"source":0,"area":1,"density":0.028,"id":"e6","stiffness":1000000,"target":6,"stress":1.00310067000389e-6},{"source":6,"area":1,"density":0.028,"id":"e7","stiffness":1000000,"target":4,"stress":-0.00028226230409700374},{"source":7,"area":1,"density":0.028,"id":"e8","stiffness":1000000,"target":8,"stress":-0.0004395000298199689},{"source":8,"area":1,"density":0.028,"id":"e9","stiffness":1000000,"target":4,"stress":-0.00019573815131344505},{"source":4,"area":1,"density":0.028,"id":"e10","stiffness":1000000,"target":9,"stress":-0.00018969982693214064},{"source":9,"area":1,"density":0.028,"id":"e11","stiffness":1000000,"target":7,"stress":-0.00019573840252823846},{"source":2,"area":1,"density":0.028,"id":"e12","stiffness":1000000,"target":10,"stress":-7.657780546889203e-6},{"source":10,"area":1,"density":0.028,"id":"e13","stiffness":1000000,"target":7,"stress":1.5467294828985605e-6},{"source":7,"area":1,"density":0.028,"id":"e14","stiffness":1000000,"target":11,"stress":-0.0002008625562763988},{"source":11,"area":1,"density":0.028,"id":"e15","stiffness":1000000,"target":2,"stress":-8.60285059962014e-7},{"source":8,"area":1,"density":0.028,"id":"e16","stiffness":1000000,"target":10,"stress":1.5467294828985605e-6},{"source":10,"area":1,"density":0.028,"id":"e17","stiffness":1000000,"target":1,"stress":-7.657529332095813e-6},{"source":1,"area":1,"density":0.028,"id":"e18","stiffness":1000000,"target":5,"stress":-8.601594525653192e-7},{"source":5,"area":1,"density":0.028,"id":"e19","stiffness":1000000,"target":8,"stress":-0.0002008623050616054},{"source":6,"area":1,"density":0.028,"id":"e20","stiffness":1000000,"target":3,"stress":1.0032262774005849e-6},{"source":3,"area":1,"density":0.028,"id":"e21","stiffness":1000000,"target":11,"stress":-1.303654048814973e-5},{"source":11,"area":1,"density":0.028,"id":"e22","stiffness":1000000,"target":9,"stress":3.25991388789694e-5},{"source":9,"area":1,"density":0.028,"id":"e23","stiffness":1000000,"target":6,"stress":-0.0002822618016674169},{"source":12,"area":1,"density":0.028,"id":"e24","stiffness":1000000,"target":3,"stress":0.0},{"source":3,"area":1,"density":0.028,"id":"e25","stiffness":1000000,"target":13,"stress":0.0},{"source":13,"area":1,"density":0.028,"id":"e26","stiffness":1000000,"target":14,"stress":0.0},{"source":14,"area":1,"density":0.028,"id":"e27","stiffness":1000000,"target":12,"stress":0.0},{"source":15,"area":1,"density":0.028,"id":"e28","stiffness":1000000,"target":6,"stress":-0.00021207377007578112},{"source":6,"area":1,"density":0.028,"id":"e29","stiffness":1000000,"target":12,"stress":-5.3232414719214705e-6},{"source":12,"area":1,"density":0.028,"id":"e30","stiffness":1000000,"target":16,"stress":-5.3232414719214705e-6},{"source":16,"area":1,"density":0.028,"id":"e31","stiffness":1000000,"target":15,"stress":-0.00021207402129057453},{"source":17,"area":1,"density":0.028,"id":"e32","stiffness":1000000,"target":9,"stress":-0.0003065115656732961},{"source":9,"area":1,"density":0.028,"id":"e33","stiffness":1000000,"target":15,"stress":-0.00016559802843956785},{"source":15,"area":1,"density":0.028,"id":"e34","stiffness":1000000,"target":18,"stress":-0.00016559827965436123},{"source":18,"area":1,"density":0.028,"id":"e35","stiffness":1000000,"target":17,"stress":-0.0003065119424954862},{"source":13,"area":1,"density":0.028,"id":"e36","stiffness":1000000,"target":11,"stress":-4.173808184768253e-6},{"source":11,"area":1,"density":0.028,"id":"e37","stiffness":1000000,"target":17,"stress":-0.00012958462930364305},{"source":17,"area":1,"density":0.028,"id":"e38","stiffness":1000000,"target":19,"stress":-0.00012958462930364305},{"source":19,"area":1,"density":0.028,"id":"e39","stiffness":1000000,"target":13,"stress":-4.173682577371558e-6},{"source":16,"area":1,"density":0.028,"id":"e40","stiffness":1000000,"target":14,"stress":1.00310067000389e-6},{"source":14,"area":1,"density":0.028,"id":"e41","stiffness":1000000,"target":19,"stress":-1.303654048814973e-5},{"source":19,"area":1,"density":0.028,"id":"e42","stiffness":1000000,"target":18,"stress":3.25991388789694e-5},{"source":18,"area":1,"density":0.028,"id":"e43","stiffness":1000000,"target":16,"stress":-0.00028226192727481364},{"source":20,"area":1,"density":0.028,"id":"e44","stiffness":1000000,"target":14,"stress":0.0},{"source":14,"area":1,"density":0.028,"id":"e45","stiffness":1000000,"target":21,"stress":0.0},{"source":21,"area":1,"density":0.028,"id":"e46","stiffness":1000000,"target":22,"stress":0.0},{"source":22,"area":1,"density":0.028,"id":"e47","stiffness":1000000,"target":20,"stress":0.0},{"source":23,"area":1,"density":0.028,"id":"e48","stiffness":1000000,"target":16,"stress":-0.00028226167606002026},{"source":16,"area":1,"density":0.028,"id":"e49","stiffness":1000000,"target":20,"stress":1.0032262774005849e-6},{"source":20,"area":1,"density":0.028,"id":"e50","stiffness":1000000,"target":24,"stress":-1.303704291773651e-5},{"source":24,"area":1,"density":0.028,"id":"e51","stiffness":1000000,"target":23,"stress":3.259838523458923e-5},{"source":25,"area":1,"density":0.028,"id":"e52","stiffness":1000000,"target":18,"stress":-0.00019573777449125498},{"source":18,"area":1,"density":0.028,"id":"e53","stiffness":1000000,"target":23,"stress":-0.00018969932450255386},{"source":23,"area":1,"density":0.028,"id":"e54","stiffness":1000000,"target":26,"stress":-0.0001957386537430318},{"source":26,"area":1,"density":0.028,"id":"e55","stiffness":1000000,"target":25,"stress":-0.0004395005322495557},{"source":21,"area":1,"density":0.028,"id":"e56","stiffness":1000000,"target":19,"stress":-8.604106673587087e-7},{"source":19,"area":1,"density":0.028,"id":"e57","stiffness":1000000,"target":25,"stress":-0.0002008621794542087},{"source":25,"area":1,"density":0.028,"id":"e58","stiffness":1000000,"target":27,"stress":1.5462270533117817e-6},{"source":27,"area":1,"density":0.028,"id":"e59","stiffness":1000000,"target":21,"stress":-7.658031761682592e-6},{"source":24,"area":1,"density":0.028,"id":"e60","stiffness":1000000,"target":22,"stress":-8.601594525653192e-7},{"source":22,"area":1,"density":0.028,"id":"e61","stiffness":1000000,"target":27,"stress":-7.657529332095813e-6},{"source":27,"area":1,"density":0.028,"id":"e62","stiffness":1000000,"target":26,"stress":1.546855090295255e-6},{"source":26,"area":1,"density":0.028,"id":"e63","stiffness":1000000,"target":24,"stress":-0.0002008623050616054},{"source":28,"area":1,"density":0.028,"id":"e64","stiffness":1000000,"target":29,"stress":-0.11213785183764498},{"source":29,"area":1,"density":0.028,"id":"e65","stiffness":1000000,"target":4,"stress":-0.017016456071084176},{"source":4,"area":1,"density":0.028,"id":"e66","stiffness":1000000,"target":30,"stress":-0.009829780133526882},{"source":30,"area":1,"density":0.028,"id":"e67","stiffness":1000000,"target":28,"stress":-0.18349613589122138},{"source":31,"area":1,"density":0.028,"id":"e68","stiffness":1000000,"target":32,"stress":-0.0765012550458356},{"source":32,"area":1,"density":0.028,"id":"e69","stiffness":1000000,"target":28,"stress":-0.08632485805880784},{"source":28,"area":1,"density":0.028,"id":"e70","stiffness":1000000,"target":33,"stress":-0.08283171459822462},{"source":33,"area":1,"density":0.028,"id":"e71","stiffness":1000000,"target":31,"stress":-0.08632485818441524},{"source":7,"area":1,"density":0.028,"id":"e72","stiffness":1000000,"target":34,"stress":-0.011617832701717741},{"source":34,"area":1,"density":0.028,"id":"e73","stiffness":1000000,"target":31,"stress":-0.06220368424847268},{"source":31,"area":1,"density":0.028,"id":"e74","stiffness":1000000,"target":35,"stress":-0.1453469309400165},{"source":35,"area":1,"density":0.028,"id":"e75","stiffness":1000000,"target":7,"stress":-0.006038546957611352},{"source":32,"area":1,"density":0.028,"id":"e76","stiffness":1000000,"target":34,"stress":-0.06220368424847268},{"source":34,"area":1,"density":0.028,"id":"e77","stiffness":1000000,"target":8,"stress":-0.011617832827325139},{"source":8,"area":1,"density":0.028,"id":"e78","stiffness":1000000,"target":29,"stress":-0.006038546706396558},{"source":29,"area":1,"density":0.028,"id":"e79","stiffness":1000000,"target":32,"stress":-0.1453469306888017},{"source":30,"area":1,"density":0.028,"id":"e80","stiffness":1000000,"target":9,"stress":-0.009829779756704692},{"source":9,"area":1,"density":0.028,"id":"e81","stiffness":1000000,"target":35,"stress":-0.01701645594547678},{"source":35,"area":1,"density":0.028,"id":"e82","stiffness":1000000,"target":33,"stress":-0.11213785183764498},{"source":33,"area":1,"density":0.028,"id":"e83","stiffness":1000000,"target":30,"stress":-0.1834961355143992},{"source":36,"area":1,"density":0.028,"id":"e84","stiffness":1000000,"target":30,"stress":-0.18361865397399438},{"source":30,"area":1,"density":0.028,"id":"e85","stiffness":1000000,"target":15,"stress":-0.012763147699155531},{"source":15,"area":1,"density":0.028,"id":"e86","stiffness":1000000,"target":37,"stress":-0.012763147824762927},{"source":37,"area":1,"density":0.028,"id":"e87","stiffness":1000000,"target":36,"stress":-0.18361865422520915},{"source":38,"area":1,"density":0.028,"id":"e88","stiffness":1000000,"target":33,"stress":-0.038860065065518354},{"source":33,"area":1,"density":0.028,"id":"e89","stiffness":1000000,"target":36,"stress":-0.04306632103225256},{"source":36,"area":1,"density":0.028,"id":"e90","stiffness":1000000,"target":39,"stress":-0.04306632103225256},{"source":39,"area":1,"density":0.028,"id":"e91","stiffness":1000000,"target":38,"stress":-0.038860064939910954},{"source":17,"area":1,"density":0.028,"id":"e92","stiffness":1000000,"target":35,"stress":-0.009320440381426312},{"source":35,"area":1,"density":0.028,"id":"e93","stiffness":1000000,"target":38,"stress":-0.14705780215919734},{"source":38,"area":1,"density":0.028,"id":"e94","stiffness":1000000,"target":40,"stress":-0.1470578024104121},{"source":40,"area":1,"density":0.028,"id":"e95","stiffness":1000000,"target":17,"stress":-0.009320440381426312},{"source":37,"area":1,"density":0.028,"id":"e96","stiffness":1000000,"target":18,"stress":-0.009829779756704692},{"source":18,"area":1,"density":0.028,"id":"e97","stiffness":1000000,"target":40,"stress":-0.01701645594547678},{"source":40,"area":1,"density":0.028,"id":"e98","stiffness":1000000,"target":39,"stress":-0.11213785183764498},{"source":39,"area":1,"density":0.028,"id":"e99","stiffness":1000000,"target":37,"stress":-0.1834961355143992},{"source":41,"area":1,"density":0.028,"id":"e100","stiffness":1000000,"target":37,"stress":-0.18349613538879178},{"source":37,"area":1,"density":0.028,"id":"e101","stiffness":1000000,"target":23,"stress":-0.009829779505489898},{"source":23,"area":1,"density":0.028,"id":"e102","stiffness":1000000,"target":42,"stress":-0.017016456322298965},{"source":42,"area":1,"density":0.028,"id":"e103","stiffness":1000000,"target":41,"stress":-0.11213785221446715},{"source":43,"area":1,"density":0.028,"id":"e104","stiffness":1000000,"target":39,"stress":-0.08632485780759304},{"source":39,"area":1,"density":0.028,"id":"e105","stiffness":1000000,"target":41,"stress":-0.08283171447261724},{"source":41,"area":1,"density":0.028,"id":"e106","stiffness":1000000,"target":44,"stress":-0.08632485831002264},{"source":44,"area":1,"density":0.028,"id":"e107","stiffness":1000000,"target":43,"stress":-0.0765012554226578},{"source":25,"area":1,"density":0.028,"id":"e108","stiffness":1000000,"target":40,"stress":-0.006038546455181765},{"source":40,"area":1,"density":0.028,"id":"e109","stiffness":1000000,"target":43,"stress":-0.14534693056319428},{"source":43,"area":1,"density":0.028,"id":"e110","stiffness":1000000,"target":45,"stress":-0.062203684499687474},{"source":45,"area":1,"density":0.028,"id":"e111","stiffness":1000000,"target":25,"stress":-0.011617832827325139},{"source":42,"area":1,"density":0.028,"id":"e112","stiffness":1000000,"target":26,"stress":-0.006038546706396558},{"source":26,"area":1,"density":0.028,"id":"e113","stiffness":1000000,"target":45,"stress":-0.011617832576110345},{"source":45,"area":1,"density":0.028,"id":"e114","stiffness":1000000,"target":44,"stress":-0.06220368424847268},{"source":44,"area":1,"density":0.028,"id":"e115","stiffness":1000000,"target":42,"stress":-0.1453469304375869},{"source":46,"area":1,"density":0.028,"id":"e116","stiffness":1000000,"target":47,"stress":-6.284610206173206},{"source":47,"area":1,"density":0.028,"id":"e117","stiffness":1000000,"target":28,"stress":-2.2982880695949897},{"source":28,"area":1,"density":0.028,"id":"e118","stiffness":1000000,"target":48,"stress":-2.3104177590954307},{"source":48,"area":1,"density":0.028,"id":"e119","stiffness":1000000,"target":46,"stress":-5.284067615336782},{"source":49,"area":1,"density":0.028,"id":"e120","stiffness":1000000,"target":50,"stress":-0.17117806142207717},{"source":50,"area":1,"density":0.028,"id":"e121","stiffness":1000000,"target":46,"stress":-0.08750808174539028},{"source":46,"area":1,"density":0.028,"id":"e122","stiffness":1000000,"target":51,"stress":-0.010449475278571103},{"source":51,"area":1,"density":0.028,"id":"e123","stiffness":1000000,"target":49,"stress":-0.08750808224781986},{"source":31,"area":1,"density":0.028,"id":"e124","stiffness":1000000,"target":52,"stress":-1.865627913941519},{"source":52,"area":1,"density":0.028,"id":"e125","stiffness":1000000,"target":49,"stress":-6.876095359960009},{"source":49,"area":1,"density":0.028,"id":"e126","stiffness":1000000,"target":53,"stress":-5.710318826409683},{"source":53,"area":1,"density":0.028,"id":"e127","stiffness":1000000,"target":31,"stress":-1.890283150431024},{"source":50,"area":1,"density":0.028,"id":"e128","stiffness":1000000,"target":52,"stress":-6.876095359960009},{"source":52,"area":1,"density":0.028,"id":"e129","stiffness":1000000,"target":32,"stress":-1.865627913941519},{"source":32,"area":1,"density":0.028,"id":"e130","stiffness":1000000,"target":47,"stress":-1.8902831501798092},{"source":47,"area":1,"density":0.028,"id":"e131","stiffness":1000000,"target":50,"stress":-5.710318826032861},{"source":48,"area":1,"density":0.028,"id":"e132","stiffness":1000000,"target":33,"stress":-2.3104177587186085},{"source":33,"area":1,"density":0.028,"id":"e133","stiffness":1000000,"target":53,"stress":-2.2982880695949897},{"source":53,"area":1,"density":0.028,"id":"e134","stiffness":1000000,"target":51,"stress":-6.284610205921991},{"source":51,"area":1,"density":0.028,"id":"e135","stiffness":1000000,"target":48,"stress":-5.284067614959959},{"source":54,"area":1,"density":0.028,"id":"e136","stiffness":1000000,"target":48,"stress":-5.282841449370239},{"source":48,"area":1,"density":0.028,"id":"e137","stiffness":1000000,"target":36,"stress":-2.2278348034147752},{"source":36,"area":1,"density":0.028,"id":"e138","stiffness":1000000,"target":55,"stress":-2.2278348034147752},{"source":55,"area":1,"density":0.028,"id":"e139","stiffness":1000000,"target":54,"stress":-5.282841449370239},{"source":56,"area":1,"density":0.028,"id":"e140","stiffness":1000000,"target":51,"stress":-0.07929461194019798},{"source":51,"area":1,"density":0.028,"id":"e141","stiffness":1000000,"target":54,"stress":-0.005209025033210821},{"source":54,"area":1,"density":0.028,"id":"e142","stiffness":1000000,"target":57,"stress":-0.005209025410033011},{"source":57,"area":1,"density":0.028,"id":"e143","stiffness":1000000,"target":56,"stress":-0.07929461244262756},{"source":38,"area":1,"density":0.028,"id":"e144","stiffness":1000000,"target":53,"stress":-1.7995415778209203},{"source":53,"area":1,"density":0.028,"id":"e145","stiffness":1000000,"target":56,"stress":-5.709383305784893},{"source":56,"area":1,"density":0.028,"id":"e146","stiffness":1000000,"target":58,"stress":-5.7093833064129305},{"source":58,"area":1,"density":0.028,"id":"e147","stiffness":1000000,"target":38,"stress":-1.7995415776953128},{"source":55,"area":1,"density":0.028,"id":"e148","stiffness":1000000,"target":39,"stress":-2.3104177587186085},{"source":39,"area":1,"density":0.028,"id":"e149","stiffness":1000000,"target":58,"stress":-2.298288069343775},{"source":58,"area":1,"density":0.028,"id":"e150","stiffness":1000000,"target":57,"stress":-6.284610206550028},{"source":57,"area":1,"density":0.028,"id":"e151","stiffness":1000000,"target":55,"stress":-5.284067614834352},{"source":59,"area":1,"density":0.028,"id":"e152","stiffness":1000000,"target":55,"stress":-5.284067614834352},{"source":55,"area":1,"density":0.028,"id":"e153","stiffness":1000000,"target":41,"stress":-2.3104177585930006},{"source":41,"area":1,"density":0.028,"id":"e154","stiffness":1000000,"target":60,"stress":-2.2982880695949897},{"source":60,"area":1,"density":0.028,"id":"e155","stiffness":1000000,"target":59,"stress":-6.284610206173206},{"source":61,"area":1,"density":0.028,"id":"e156","stiffness":1000000,"target":57,"stress":-0.08750808174539028},{"source":57,"area":1,"density":0.028,"id":"e157","stiffness":1000000,"target":59,"stress":-0.010449474399319326},{"source":59,"area":1,"density":0.028,"id":"e158","stiffness":1000000,"target":62,"stress":-0.08750808224781986},{"source":62,"area":1,"density":0.028,"id":"e159","stiffness":1000000,"target":61,"stress":-0.17117806167329194},{"source":43,"area":1,"density":0.028,"id":"e160","stiffness":1000000,"target":58,"stress":-1.890283149426165},{"source":58,"area":1,"density":0.028,"id":"e161","stiffness":1000000,"target":61,"stress":-5.710318826409683},{"source":61,"area":1,"density":0.028,"id":"e162","stiffness":1000000,"target":63,"stress":-6.876095359708794},{"source":63,"area":1,"density":0.028,"id":"e163","stiffness":1000000,"target":43,"stress":-1.8656279140671264},{"source":60,"area":1,"density":0.028,"id":"e164","stiffness":1000000,"target":44,"stress":-1.890283150431024},{"source":44,"area":1,"density":0.028,"id":"e165","stiffness":1000000,"target":63,"stress":-1.8656279140671264},{"source":63,"area":1,"density":0.028,"id":"e166","stiffness":1000000,"target":62,"stress":-6.876095359960009},{"source":62,"area":1,"density":0.028,"id":"e167","stiffness":1000000,"target":60,"stress":-5.710318826032861},{"source":64,"area":1,"density":0.028,"id":"e168","stiffness":1000000,"target":65,"stress":0.0},{"source":65,"area":1,"density":0.028,"id":"e169","stiffness":1000000,"target":0,"stress":0.0},{"source":0,"area":1,"density":0.028,"id":"e170","stiffness":1000000,"target":66,"stress":0.0},{"source":66,"area":1,"density":0.028,"id":"e171","stiffness":1000000,"target":64,"stress":0.0},{"source":67,"area":1,"density":0.028,"id":"e172","stiffness":1000000,"target":68,"stress":3.2599264486366094e-5},{"source":68,"area":1,"density":0.028,"id":"e173","stiffness":1000000,"target":64,"stress":-1.303679170294312e-5},{"source":64,"area":1,"density":0.028,"id":"e174","stiffness":1000000,"target":69,"stress":1.0028494552105007e-6},{"source":69,"area":1,"density":0.028,"id":"e175","stiffness":1000000,"target":67,"stress":-0.000282262178489607},{"source":4,"area":1,"density":0.028,"id":"e176","stiffness":1000000,"target":70,"stress":-0.0003065116912806928},{"source":70,"area":1,"density":0.028,"id":"e177","stiffness":1000000,"target":67,"stress":-0.0003065116912806928},{"source":67,"area":1,"density":0.028,"id":"e178","stiffness":1000000,"target":71,"stress":-0.0001655985308691546},{"source":71,"area":1,"density":0.028,"id":"e179","stiffness":1000000,"target":4,"stress":-0.0001655985308691546},{"source":70,"area":1,"density":0.028,"id":"e180","stiffness":1000000,"target":5,"stress":-0.00012958450369624636},{"source":5,"area":1,"density":0.028,"id":"e181","stiffness":1000000,"target":65,"stress":-4.173682577371558e-6},{"source":65,"area":1,"density":0.028,"id":"e182","stiffness":1000000,"target":68,"stress":-4.173682577371558e-6},{"source":68,"area":1,"density":0.028,"id":"e183","stiffness":1000000,"target":70,"stress":-0.00012958437808884964},{"source":69,"area":1,"density":0.028,"id":"e184","stiffness":1000000,"target":66,"stress":-5.322990257128081e-6},{"source":66,"area":1,"density":0.028,"id":"e185","stiffness":1000000,"target":6,"stress":-5.322990257128081e-6},{"source":6,"area":1,"density":0.028,"id":"e186","stiffness":1000000,"target":71,"stress":-0.00021207377007578112},{"source":71,"area":1,"density":0.028,"id":"e187","stiffness":1000000,"target":69,"stress":-0.00021207377007578112},{"source":72,"area":1,"density":0.028,"id":"e188","stiffness":1000000,"target":66,"stress":0.0},{"source":66,"area":1,"density":0.028,"id":"e189","stiffness":1000000,"target":12,"stress":0.0},{"source":12,"area":1,"density":0.028,"id":"e190","stiffness":1000000,"target":73,"stress":0.0},{"source":73,"area":1,"density":0.028,"id":"e191","stiffness":1000000,"target":72,"stress":0.0},{"source":74,"area":1,"density":0.028,"id":"e192","stiffness":1000000,"target":69,"stress":-0.00021207377007578112},{"source":69,"area":1,"density":0.028,"id":"e193","stiffness":1000000,"target":72,"stress":-5.322990257128081e-6},{"source":72,"area":1,"density":0.028,"id":"e194","stiffness":1000000,"target":75,"stress":-5.323367079318165e-6},{"source":75,"area":1,"density":0.028,"id":"e195","stiffness":1000000,"target":74,"stress":-0.00021207389568317784},{"source":15,"area":1,"density":0.028,"id":"e196","stiffness":1000000,"target":71,"stress":-0.0001354771234973849},{"source":71,"area":1,"density":0.028,"id":"e197","stiffness":1000000,"target":74,"stress":-0.0001354771234973849},{"source":74,"area":1,"density":0.028,"id":"e198","stiffness":1000000,"target":76,"stress":-0.00013547737471217828},{"source":76,"area":1,"density":0.028,"id":"e199","stiffness":1000000,"target":15,"stress":-0.0001354776259269717},{"source":75,"area":1,"density":0.028,"id":"e200","stiffness":1000000,"target":73,"stress":-5.323115864524776e-6},{"source":73,"area":1,"density":0.028,"id":"e201","stiffness":1000000,"target":16,"stress":-5.322990257128081e-6},{"source":16,"area":1,"density":0.028,"id":"e202","stiffness":1000000,"target":76,"stress":-0.00021207377007578112},{"source":76,"area":1,"density":0.028,"id":"e203","stiffness":1000000,"target":75,"stress":-0.00021207377007578112},{"source":77,"area":1,"density":0.028,"id":"e204","stiffness":1000000,"target":73,"stress":0.0},{"source":73,"area":1,"density":0.028,"id":"e205","stiffness":1000000,"target":20,"stress":0.0},{"source":20,"area":1,"density":0.028,"id":"e206","stiffness":1000000,"target":78,"stress":0.0},{"source":78,"area":1,"density":0.028,"id":"e207","stiffness":1000000,"target":77,"stress":0.0},{"source":79,"area":1,"density":0.028,"id":"e208","stiffness":1000000,"target":75,"stress":-0.00028226167606002026},{"source":75,"area":1,"density":0.028,"id":"e209","stiffness":1000000,"target":77,"stress":1.0029750626071955e-6},{"source":77,"area":1,"density":0.028,"id":"e210","stiffness":1000000,"target":80,"stress":-1.3036917310339816e-5},{"source":80,"area":1,"density":0.028,"id":"e211","stiffness":1000000,"target":79,"stress":3.259838523458923e-5},{"source":23,"area":1,"density":0.028,"id":"e212","stiffness":1000000,"target":76,"stress":-0.00016559777722477444},{"source":76,"area":1,"density":0.028,"id":"e213","stiffness":1000000,"target":79,"stress":-0.00016559802843956785},{"source":79,"area":1,"density":0.028,"id":"e214","stiffness":1000000,"target":81,"stress":-0.0003065123193176763},{"source":81,"area":1,"density":0.028,"id":"e215","stiffness":1000000,"target":23,"stress":-0.0003065121937102796},{"source":80,"area":1,"density":0.028,"id":"e216","stiffness":1000000,"target":78,"stress":-4.173431362578168e-6},{"source":78,"area":1,"density":0.028,"id":"e217","stiffness":1000000,"target":24,"stress":-4.173682577371558e-6},{"source":24,"area":1,"density":0.028,"id":"e218","stiffness":1000000,"target":81,"stress":-0.00012958450369624636},{"source":81,"area":1,"density":0.028,"id":"e219","stiffness":1000000,"target":80,"stress":-0.00012958437808884964},{"source":82,"area":1,"density":0.028,"id":"e220","stiffness":1000000,"target":83,"stress":-0.11213785183764498},{"source":83,"area":1,"density":0.028,"id":"e221","stiffness":1000000,"target":67,"stress":-0.01701645581986938},{"source":67,"area":1,"density":0.028,"id":"e222","stiffness":1000000,"target":84,"stress":-0.009829780133526882},{"source":84,"area":1,"density":0.028,"id":"e223","stiffness":1000000,"target":82,"stress":-0.18349613589122138},{"source":28,"area":1,"density":0.028,"id":"e224","stiffness":1000000,"target":85,"stress":-0.038860064814303555},{"source":85,"area":1,"density":0.028,"id":"e225","stiffness":1000000,"target":82,"stress":-0.038860064939910954},{"source":82,"area":1,"density":0.028,"id":"e226","stiffness":1000000,"target":86,"stress":-0.043066321283467345},{"source":86,"area":1,"density":0.028,"id":"e227","stiffness":1000000,"target":28,"stress":-0.04306632115785995},{"source":85,"area":1,"density":0.028,"id":"e228","stiffness":1000000,"target":29,"stress":-0.14705780215919734},{"source":29,"area":1,"density":0.028,"id":"e229","stiffness":1000000,"target":70,"stress":-0.009320440255818916},{"source":70,"area":1,"density":0.028,"id":"e230","stiffness":1000000,"target":83,"stress":-0.009320440381426312},{"source":83,"area":1,"density":0.028,"id":"e231","stiffness":1000000,"target":85,"stress":-0.14705780215919734},{"source":84,"area":1,"density":0.028,"id":"e232","stiffness":1000000,"target":71,"stress":-0.012763147573548135},{"source":71,"area":1,"density":0.028,"id":"e233","stiffness":1000000,"target":30,"stress":-0.012763147573548135},{"source":30,"area":1,"density":0.028,"id":"e234","stiffness":1000000,"target":86,"stress":-0.18361865384838696},{"source":86,"area":1,"density":0.028,"id":"e235","stiffness":1000000,"target":84,"stress":-0.18361865384838696},{"source":87,"area":1,"density":0.028,"id":"e236","stiffness":1000000,"target":84,"stress":-0.18361865409960176},{"source":84,"area":1,"density":0.028,"id":"e237","stiffness":1000000,"target":74,"stress":-0.012763147699155531},{"source":74,"area":1,"density":0.028,"id":"e238","stiffness":1000000,"target":88,"stress":-0.012763147950370323},{"source":88,"area":1,"density":0.028,"id":"e239","stiffness":1000000,"target":87,"stress":-0.18361865422520915},{"source":36,"area":1,"density":0.028,"id":"e240","stiffness":1000000,"target":86,"stress":-0.0033384432554882776},{"source":86,"area":1,"density":0.028,"id":"e241","stiffness":1000000,"target":87,"stress":-0.003338443129880881},{"source":87,"area":1,"density":0.028,"id":"e242","stiffness":1000000,"target":89,"stress":-0.003338443129880881},{"source":89,"area":1,"density":0.028,"id":"e243","stiffness":1000000,"target":36,"stress":-0.003338443129880881},{"source":88,"area":1,"density":0.028,"id":"e244","stiffness":1000000,"target":76,"stress":-0.012763147573548135},{"source":76,"area":1,"density":0.028,"id":"e245","stiffness":1000000,"target":37,"stress":-0.012763147573548135},{"source":37,"area":1,"density":0.028,"id":"e246","stiffness":1000000,"target":89,"stress":-0.18361865384838696},{"source":89,"area":1,"density":0.028,"id":"e247","stiffness":1000000,"target":88,"stress":-0.18361865384838696},{"source":90,"area":1,"density":0.028,"id":"e248","stiffness":1000000,"target":88,"stress":-0.18349613538879178},{"source":88,"area":1,"density":0.028,"id":"e249","stiffness":1000000,"target":79,"stress":-0.0098297793798825},{"source":79,"area":1,"density":0.028,"id":"e250","stiffness":1000000,"target":91,"stress":-0.01701645619669157},{"source":91,"area":1,"density":0.028,"id":"e251","stiffness":1000000,"target":90,"stress":-0.11213785221446715},{"source":41,"area":1,"density":0.028,"id":"e252","stiffness":1000000,"target":89,"stress":-0.04306632065543036},{"source":89,"area":1,"density":0.028,"id":"e253","stiffness":1000000,"target":90,"stress":-0.04306632078103777},{"source":90,"area":1,"density":0.028,"id":"e254","stiffness":1000000,"target":92,"stress":-0.038860065316733146},{"source":92,"area":1,"density":0.028,"id":"e255","stiffness":1000000,"target":41,"stress":-0.038860065316733146},{"source":91,"area":1,"density":0.028,"id":"e256","stiffness":1000000,"target":81,"stress":-0.009320440507033708},{"source":81,"area":1,"density":0.028,"id":"e257","stiffness":1000000,"target":42,"stress":-0.009320440255818916},{"source":42,"area":1,"density":0.028,"id":"e258","stiffness":1000000,"target":92,"stress":-0.14705780215919734},{"source":92,"area":1,"density":0.028,"id":"e259","stiffness":1000000,"target":91,"stress":-0.14705780215919734},{"source":93,"area":1,"density":0.028,"id":"e260","stiffness":1000000,"target":94,"stress":-6.284610206424421},{"source":94,"area":1,"density":0.028,"id":"e261","stiffness":1000000,"target":82,"stress":-2.298288069343775},{"source":82,"area":1,"density":0.028,"id":"e262","stiffness":1000000,"target":95,"stress":-2.3104177587186085},{"source":95,"area":1,"density":0.028,"id":"e263","stiffness":1000000,"target":93,"stress":-5.284067615839211},{"source":46,"area":1,"density":0.028,"id":"e264","stiffness":1000000,"target":96,"stress":-0.07929461219141276},{"source":96,"area":1,"density":0.028,"id":"e265","stiffness":1000000,"target":93,"stress":-0.07929461219141276},{"source":93,"area":1,"density":0.028,"id":"e266","stiffness":1000000,"target":97,"stress":-0.005209025661247805},{"source":97,"area":1,"density":0.028,"id":"e267","stiffness":1000000,"target":46,"stress":-0.005209025661247805},{"source":96,"area":1,"density":0.028,"id":"e268","stiffness":1000000,"target":47,"stress":-5.709383305784893},{"source":47,"area":1,"density":0.028,"id":"e269","stiffness":1000000,"target":85,"stress":-1.7995415778209203},{"source":85,"area":1,"density":0.028,"id":"e270","stiffness":1000000,"target":94,"stress":-1.7995415775697055},{"source":94,"area":1,"density":0.028,"id":"e271","stiffness":1000000,"target":96,"stress":-5.709383306036108},{"source":95,"area":1,"density":0.028,"id":"e272","stiffness":1000000,"target":86,"stress":-2.2278348029123456},{"source":86,"area":1,"density":0.028,"id":"e273","stiffness":1000000,"target":48,"stress":-2.22783480366599},{"source":48,"area":1,"density":0.028,"id":"e274","stiffness":1000000,"target":97,"stress":-5.282841448993417},{"source":97,"area":1,"density":0.028,"id":"e275","stiffness":1000000,"target":95,"stress":-5.282841449119025},{"source":98,"area":1,"density":0.028,"id":"e276","stiffness":1000000,"target":95,"stress":-5.282841449747061},{"source":95,"area":1,"density":0.028,"id":"e277","stiffness":1000000,"target":87,"stress":-2.22783480316356},{"source":87,"area":1,"density":0.028,"id":"e278","stiffness":1000000,"target":99,"stress":-2.22783480316356},{"source":99,"area":1,"density":0.028,"id":"e279","stiffness":1000000,"target":98,"stress":-5.282841449747061},{"source":54,"area":1,"density":0.028,"id":"e280","stiffness":1000000,"target":97,"stress":-0.00023974859657473142},{"source":97,"area":1,"density":0.028,"id":"e281","stiffness":1000000,"target":98,"stress":-0.0002397488477895248},{"source":98,"area":1,"density":0.028,"id":"e282","stiffness":1000000,"target":100,"stress":-0.0002397492246117149},{"source":100,"area":1,"density":0.028,"id":"e283","stiffness":1000000,"target":54,"stress":-0.00023974909900431818},{"source":99,"area":1,"density":0.028,"id":"e284","stiffness":1000000,"target":89,"stress":-2.2278348029123456},{"source":89,"area":1,"density":0.028,"id":"e285","stiffness":1000000,"target":55,"stress":-2.22783480366599},{"source":55,"area":1,"density":0.028,"id":"e286","stiffness":1000000,"target":100,"stress":-5.282841448993417},{"source":100,"area":1,"density":0.028,"id":"e287","stiffness":1000000,"target":99,"stress":-5.282841449119025},{"source":101,"area":1,"density":0.028,"id":"e288","stiffness":1000000,"target":99,"stress":-5.284067615211174},{"source":99,"area":1,"density":0.028,"id":"e289","stiffness":1000000,"target":90,"stress":-2.310417758341786},{"source":90,"area":1,"density":0.028,"id":"e290","stiffness":1000000,"target":102,"stress":-2.2982880690925604},{"source":102,"area":1,"density":0.028,"id":"e291","stiffness":1000000,"target":101,"stress":-6.284610206550028},{"source":59,"area":1,"density":0.028,"id":"e292","stiffness":1000000,"target":100,"stress":-0.005209024656388631},{"source":100,"area":1,"density":0.028,"id":"e293","stiffness":1000000,"target":101,"stress":-0.005209024656388631},{"source":101,"area":1,"density":0.028,"id":"e294","stiffness":1000000,"target":103,"stress":-0.07929461206580538},{"source":103,"area":1,"density":0.028,"id":"e295","stiffness":1000000,"target":59,"stress":-0.07929461206580538},{"source":102,"area":1,"density":0.028,"id":"e296","stiffness":1000000,"target":92,"stress":-1.7995415775697055},{"source":92,"area":1,"density":0.028,"id":"e297","stiffness":1000000,"target":60,"stress":-1.7995415778209203},{"source":60,"area":1,"density":0.028,"id":"e298","stiffness":1000000,"target":103,"stress":-5.709383305784893},{"source":103,"area":1,"density":0.028,"id":"e299","stiffness":1000000,"target":102,"stress":-5.709383306036108},{"source":104,"area":1,"density":0.028,"id":"e300","stiffness":1000000,"target":105,"stress":0.0},{"source":105,"area":1,"density":0.028,"id":"e301","stiffness":1000000,"target":64,"stress":0.0},{"source":64,"area":1,"density":0.028,"id":"e302","stiffness":1000000,"target":106,"stress":0.0},{"source":106,"area":1,"density":0.028,"id":"e303","stiffness":1000000,"target":104,"stress":0.0},{"source":107,"area":1,"density":0.028,"id":"e304","stiffness":1000000,"target":108,"stress":1.5467294828985605e-6},{"source":108,"area":1,"density":0.028,"id":"e305","stiffness":1000000,"target":104,"stress":-7.657780546889203e-6},{"source":104,"area":1,"density":0.028,"id":"e306","stiffness":1000000,"target":109,"stress":-8.60285059962014e-7},{"source":109,"area":1,"density":0.028,"id":"e307","stiffness":1000000,"target":107,"stress":-0.0002008628074911922},{"source":67,"area":1,"density":0.028,"id":"e308","stiffness":1000000,"target":110,"stress":-0.00019573802570604836},{"source":110,"area":1,"density":0.028,"id":"e309","stiffness":1000000,"target":107,"stress":-0.0004395002810347623},{"source":107,"area":1,"density":0.028,"id":"e310","stiffness":1000000,"target":111,"stress":-0.00019573827692084177},{"source":111,"area":1,"density":0.028,"id":"e311","stiffness":1000000,"target":67,"stress":-0.00018969995253953733},{"source":110,"area":1,"density":0.028,"id":"e312","stiffness":1000000,"target":68,"stress":-0.00020086205384681202},{"source":68,"area":1,"density":0.028,"id":"e313","stiffness":1000000,"target":105,"stress":-8.604106673587087e-7},{"source":105,"area":1,"density":0.028,"id":"e314","stiffness":1000000,"target":108,"stress":-7.657780546889203e-6},{"source":108,"area":1,"density":0.028,"id":"e315","stiffness":1000000,"target":110,"stress":1.5463526607084763e-6},{"source":109,"area":1,"density":0.028,"id":"e316","stiffness":1000000,"target":106,"stress":-1.303679170294312e-5},{"source":106,"area":1,"density":0.028,"id":"e317","stiffness":1000000,"target":69,"stress":1.0032262774005849e-6},{"source":69,"area":1,"density":0.028,"id":"e318","stiffness":1000000,"target":111,"stress":-0.00028226192727481364},{"source":111,"area":1,"density":0.028,"id":"e319","stiffness":1000000,"target":109,"stress":3.259888766417601e-5},{"source":112,"area":1,"density":0.028,"id":"e320","stiffness":1000000,"target":106,"stress":0.0},{"source":106,"area":1,"density":0.028,"id":"e321","stiffness":1000000,"target":72,"stress":0.0},{"source":72,"area":1,"density":0.028,"id":"e322","stiffness":1000000,"target":113,"stress":0.0},{"source":113,"area":1,"density":0.028,"id":"e323","stiffness":1000000,"target":112,"stress":0.0},{"source":114,"area":1,"density":0.028,"id":"e324","stiffness":1000000,"target":109,"stress":-0.00012958475491103974},{"source":109,"area":1,"density":0.028,"id":"e325","stiffness":1000000,"target":112,"stress":-4.173808184768253e-6},{"source":112,"area":1,"density":0.028,"id":"e326","stiffness":1000000,"target":115,"stress":-4.173682577371558e-6},{"source":115,"area":1,"density":0.028,"id":"e327","stiffness":1000000,"target":114,"stress":-0.00012958462930364305},{"source":74,"area":1,"density":0.028,"id":"e328","stiffness":1000000,"target":111,"stress":-0.00016559827965436123},{"source":111,"area":1,"density":0.028,"id":"e329","stiffness":1000000,"target":114,"stress":-0.0003065116912806928},{"source":114,"area":1,"density":0.028,"id":"e330","stiffness":1000000,"target":116,"stress":-0.0003065118168880895},{"source":116,"area":1,"density":0.028,"id":"e331","stiffness":1000000,"target":74,"stress":-0.0001655985308691546},{"source":115,"area":1,"density":0.028,"id":"e332","stiffness":1000000,"target":113,"stress":-1.303679170294312e-5},{"source":113,"area":1,"density":0.028,"id":"e333","stiffness":1000000,"target":75,"stress":1.0032262774005849e-6},{"source":75,"area":1,"density":0.028,"id":"e334","stiffness":1000000,"target":116,"stress":-0.00028226192727481364},{"source":116,"area":1,"density":0.028,"id":"e335","stiffness":1000000,"target":115,"stress":3.259888766417601e-5},{"source":117,"area":1,"density":0.028,"id":"e336","stiffness":1000000,"target":113,"stress":0.0},{"source":113,"area":1,"density":0.028,"id":"e337","stiffness":1000000,"target":77,"stress":0.0},{"source":77,"area":1,"density":0.028,"id":"e338","stiffness":1000000,"target":118,"stress":0.0},{"source":118,"area":1,"density":0.028,"id":"e339","stiffness":1000000,"target":117,"stress":0.0},{"source":119,"area":1,"density":0.028,"id":"e340","stiffness":1000000,"target":115,"stress":-0.0002008623050616054},{"source":115,"area":1,"density":0.028,"id":"e341","stiffness":1000000,"target":117,"stress":-8.604106673587087e-7},{"source":117,"area":1,"density":0.028,"id":"e342","stiffness":1000000,"target":120,"stress":-7.657906154285896e-6},{"source":120,"area":1,"density":0.028,"id":"e343","stiffness":1000000,"target":119,"stress":1.546101445915087e-6},{"source":79,"area":1,"density":0.028,"id":"e344","stiffness":1000000,"target":116,"stress":-0.00018969932450255386},{"source":116,"area":1,"density":0.028,"id":"e345","stiffness":1000000,"target":119,"stress":-0.00019573764888385827},{"source":119,"area":1,"density":0.028,"id":"e346","stiffness":1000000,"target":121,"stress":-0.00043950040664215897},{"source":121,"area":1,"density":0.028,"id":"e347","stiffness":1000000,"target":79,"stress":-0.0001957386537430318},{"source":120,"area":1,"density":0.028,"id":"e348","stiffness":1000000,"target":118,"stress":-7.657780546889203e-6},{"source":118,"area":1,"density":0.028,"id":"e349","stiffness":1000000,"target":80,"stress":-8.601594525653192e-7},{"source":80,"area":1,"density":0.028,"id":"e350","stiffness":1000000,"target":121,"stress":-0.0002008625562763988},{"source":121,"area":1,"density":0.028,"id":"e351","stiffness":1000000,"target":120,"stress":1.5466038755018657e-6},{"source":122,"area":1,"density":0.028,"id":"e352","stiffness":1000000,"target":123,"stress":-0.06220368437408008},{"source":123,"area":1,"density":0.028,"id":"e353","stiffness":1000000,"target":107,"stress":-0.011617832450502947},{"source":107,"area":1,"density":0.028,"id":"e354","stiffness":1000000,"target":124,"stress":-0.006038547083218749},{"source":124,"area":1,"density":0.028,"id":"e355","stiffness":1000000,"target":122,"stress":-0.14534693106562388},{"source":82,"area":1,"density":0.028,"id":"e356","stiffness":1000000,"target":125,"stress":-0.08632485755637825},{"source":125,"area":1,"density":0.028,"id":"e357","stiffness":1000000,"target":122,"stress":-0.0765012554226578},{"source":122,"area":1,"density":0.028,"id":"e358","stiffness":1000000,"target":126,"stress":-0.08632485793320044},{"source":126,"area":1,"density":0.028,"id":"e359","stiffness":1000000,"target":82,"stress":-0.08283171484943941},{"source":125,"area":1,"density":0.028,"id":"e360","stiffness":1000000,"target":83,"stress":-0.1453469303119795},{"source":83,"area":1,"density":0.028,"id":"e361","stiffness":1000000,"target":110,"stress":-0.006038546455181765},{"source":110,"area":1,"density":0.028,"id":"e362","stiffness":1000000,"target":123,"stress":-0.011617832827325139},{"source":123,"area":1,"density":0.028,"id":"e363","stiffness":1000000,"target":125,"stress":-0.062203684625294874},{"source":124,"area":1,"density":0.028,"id":"e364","stiffness":1000000,"target":111,"stress":-0.01701645594547678},{"source":111,"area":1,"density":0.028,"id":"e365","stiffness":1000000,"target":84,"stress":-0.009829779882312088},{"source":84,"area":1,"density":0.028,"id":"e366","stiffness":1000000,"target":126,"stress":-0.18349613576561397},{"source":126,"area":1,"density":0.028,"id":"e367","stiffness":1000000,"target":124,"stress":-0.11213785183764498},{"source":127,"area":1,"density":0.028,"id":"e368","stiffness":1000000,"target":124,"stress":-0.14705780215919734},{"source":124,"area":1,"density":0.028,"id":"e369","stiffness":1000000,"target":114,"stress":-0.009320440255818916},{"source":114,"area":1,"density":0.028,"id":"e370","stiffness":1000000,"target":128,"stress":-0.009320440381426312},{"source":128,"area":1,"density":0.028,"id":"e371","stiffness":1000000,"target":127,"stress":-0.14705780228480472},{"source":87,"area":1,"density":0.028,"id":"e372","stiffness":1000000,"target":126,"stress":-0.043066321409074744},{"source":126,"area":1,"density":0.028,"id":"e373","stiffness":1000000,"target":127,"stress":-0.038860064688696155},{"source":127,"area":1,"density":0.028,"id":"e374","stiffness":1000000,"target":129,"stress":-0.038860064688696155},{"source":129,"area":1,"density":0.028,"id":"e375","stiffness":1000000,"target":87,"stress":-0.043066321534682137},{"source":128,"area":1,"density":0.028,"id":"e376","stiffness":1000000,"target":116,"stress":-0.01701645594547678},{"source":116,"area":1,"density":0.028,"id":"e377","stiffness":1000000,"target":88,"stress":-0.009829779882312088},{"source":88,"area":1,"density":0.028,"id":"e378","stiffness":1000000,"target":129,"stress":-0.18349613576561397},{"source":129,"area":1,"density":0.028,"id":"e379","stiffness":1000000,"target":128,"stress":-0.11213785183764498},{"source":130,"area":1,"density":0.028,"id":"e380","stiffness":1000000,"target":128,"stress":-0.14534693056319428},{"source":128,"area":1,"density":0.028,"id":"e381","stiffness":1000000,"target":119,"stress":-0.006038546580789162},{"source":119,"area":1,"density":0.028,"id":"e382","stiffness":1000000,"target":131,"stress":-0.011617832827325139},{"source":131,"area":1,"density":0.028,"id":"e383","stiffness":1000000,"target":130,"stress":-0.062203684625294874},{"source":90,"area":1,"density":0.028,"id":"e384","stiffness":1000000,"target":129,"stress":-0.08283171434700982},{"source":129,"area":1,"density":0.028,"id":"e385","stiffness":1000000,"target":130,"stress":-0.08632485755637825},{"source":130,"area":1,"density":0.028,"id":"e386","stiffness":1000000,"target":132,"stress":-0.0765012552970504},{"source":132,"area":1,"density":0.028,"id":"e387","stiffness":1000000,"target":90,"stress":-0.08632485755637825},{"source":131,"area":1,"density":0.028,"id":"e388","stiffness":1000000,"target":121,"stress":-0.011617832450502947},{"source":121,"area":1,"density":0.028,"id":"e389","stiffness":1000000,"target":91,"stress":-0.006038546706396558},{"source":91,"area":1,"density":0.028,"id":"e390","stiffness":1000000,"target":132,"stress":-0.1453469301863721},{"source":132,"area":1,"density":0.028,"id":"e391","stiffness":1000000,"target":131,"stress":-0.062203684499687474},{"source":133,"area":1,"density":0.028,"id":"e392","stiffness":1000000,"target":134,"stress":-6.876095359834401},{"source":134,"area":1,"density":0.028,"id":"e393","stiffness":1000000,"target":122,"stress":-1.8656279140671264},{"source":122,"area":1,"density":0.028,"id":"e394","stiffness":1000000,"target":135,"stress":-1.8902831503054165},{"source":135,"area":1,"density":0.028,"id":"e395","stiffness":1000000,"target":133,"stress":-5.710318826409683},{"source":93,"area":1,"density":0.028,"id":"e396","stiffness":1000000,"target":136,"stress":-0.08750808174539028},{"source":136,"area":1,"density":0.028,"id":"e397","stiffness":1000000,"target":133,"stress":-0.17117806167329194},{"source":133,"area":1,"density":0.028,"id":"e398","stiffness":1000000,"target":137,"stress":-0.08750808237342726},{"source":137,"area":1,"density":0.028,"id":"e399","stiffness":1000000,"target":93,"stress":-0.010449475278571103},{"source":136,"area":1,"density":0.028,"id":"e400","stiffness":1000000,"target":94,"stress":-5.710318826409683},{"source":94,"area":1,"density":0.028,"id":"e401","stiffness":1000000,"target":125,"stress":-1.8902831496773795},{"source":125,"area":1,"density":0.028,"id":"e402","stiffness":1000000,"target":134,"stress":-1.8656279138159115},{"source":134,"area":1,"density":0.028,"id":"e403","stiffness":1000000,"target":136,"stress":-6.876095359708794},{"source":135,"area":1,"density":0.028,"id":"e404","stiffness":1000000,"target":126,"stress":-2.2982880690925604},{"source":126,"area":1,"density":0.028,"id":"e405","stiffness":1000000,"target":95,"stress":-2.3104177587186085},{"source":95,"area":1,"density":0.028,"id":"e406","stiffness":1000000,"target":137,"stress":-5.284067615587997},{"source":137,"area":1,"density":0.028,"id":"e407","stiffness":1000000,"target":135,"stress":-6.284610205921991},{"source":138,"area":1,"density":0.028,"id":"e408","stiffness":1000000,"target":135,"stress":-5.709383305910501},{"source":135,"area":1,"density":0.028,"id":"e409","stiffness":1000000,"target":127,"stress":-1.7995415779465276},{"source":127,"area":1,"density":0.028,"id":"e410","stiffness":1000000,"target":139,"stress":-1.7995415780721349},{"source":139,"area":1,"density":0.028,"id":"e411","stiffness":1000000,"target":138,"stress":-5.709383306036108},{"source":98,"area":1,"density":0.028,"id":"e412","stiffness":1000000,"target":137,"stress":-0.005209024907603424},{"source":137,"area":1,"density":0.028,"id":"e413","stiffness":1000000,"target":138,"stress":-0.07929461156337578},{"source":138,"area":1,"density":0.028,"id":"e414","stiffness":1000000,"target":140,"stress":-0.07929461181459056},{"source":140,"area":1,"density":0.028,"id":"e415","stiffness":1000000,"target":98,"stress":-0.005209025033210821},{"source":139,"area":1,"density":0.028,"id":"e416","stiffness":1000000,"target":129,"stress":-2.2982880690925604},{"source":129,"area":1,"density":0.028,"id":"e417","stiffness":1000000,"target":99,"stress":-2.3104177587186085},{"source":99,"area":1,"density":0.028,"id":"e418","stiffness":1000000,"target":140,"stress":-5.284067615587997},{"source":140,"area":1,"density":0.028,"id":"e419","stiffness":1000000,"target":139,"stress":-6.284610205921991},{"source":141,"area":1,"density":0.028,"id":"e420","stiffness":1000000,"target":139,"stress":-5.710318825907254},{"source":139,"area":1,"density":0.028,"id":"e421","stiffness":1000000,"target":130,"stress":-1.8902831499285944},{"source":130,"area":1,"density":0.028,"id":"e422","stiffness":1000000,"target":142,"stress":-1.865627913941519},{"source":142,"area":1,"density":0.028,"id":"e423","stiffness":1000000,"target":141,"stress":-6.876095360085617},{"source":101,"area":1,"density":0.028,"id":"e424","stiffness":1000000,"target":140,"stress":-0.010449474776141516},{"source":140,"area":1,"density":0.028,"id":"e425","stiffness":1000000,"target":141,"stress":-0.08750808174539028},{"source":141,"area":1,"density":0.028,"id":"e426","stiffness":1000000,"target":143,"stress":-0.17117806230132893},{"source":143,"area":1,"density":0.028,"id":"e427","stiffness":1000000,"target":101,"stress":-0.08750808237342726},{"source":142,"area":1,"density":0.028,"id":"e428","stiffness":1000000,"target":132,"stress":-1.865627913941519},{"source":132,"area":1,"density":0.028,"id":"e429","stiffness":1000000,"target":102,"stress":-1.8902831498029868},{"source":102,"area":1,"density":0.028,"id":"e430","stiffness":1000000,"target":143,"stress":-5.710318826409683},{"source":143,"area":1,"density":0.028,"id":"e431","stiffness":1000000,"target":142,"stress":-6.876095359708794}],"ndofs":864} \ No newline at end of file diff --git a/01_Code/physical_computing_interface/simulation/julia/BeamFEM.jl b/01_Code/physical_computing_interface/simulation/julia/BeamFEM.jl new file mode 100644 index 0000000000000000000000000000000000000000..09a31f99e5bc4616ae2daa47140d55fbfa9c4bf4 --- /dev/null +++ b/01_Code/physical_computing_interface/simulation/julia/BeamFEM.jl @@ -0,0 +1,276 @@ +# // Amira Abdel-Rahman +# // (c) Massachusetts Institute of Technology 2020 + +using LinearAlgebra +import JSON + + +function rotation_matrix(element_vector, x_axis, y_axis,z_axis) + # find the direction cosines + L=norm(element_vector) + l = (element_vector[1])/L + m = (element_vector[2])/L + n = (element_vector[3])/L + D = ( l^2+ m^2+n^2)^0.5 + + transMatrix=[[l m n 0 0 0 0 0 0 0 0 0];[-m/D l/D 0 0 0 0 0 0 0 0 0 0];[ -l*n/D -m*n/D D 0 0 0 0 0 0 0 0 0];[ 0 0 0 l m n 0 0 0 0 0 0];[ 0 0 0 -m/D l/D 0 0 0 0 0 0 0];[ 0 0 0 -l*n/D -m*n/D D 0 0 0 0 0 0];[ 0 0 0 0 0 0 l m n 0 0 0];[ 0 0 0 0 0 0 -m/D l/D 0 0 0 0];[ 0 0 0 0 0 0 -l*n/D -m*n/D D 0 0 0];[ 0 0 0 0 0 0 0 0 0 l m n];[ 0 0 0 0 0 0 0 0 0 -m/D l/D 0];[ 0 0 0 0 0 0 0 0 0 -l*n/D -m*n/D D]] + + return transMatrix +end + +function get_stresses(setup) + nodes = setup["nodes"] + edges = setup["edges"] + ndofs = length(nodes)*6 + + x_axis = [1 0 0] + y_axis = [0 1 0] + z_axis = [0 0 1] + + # find the stresses in each member + stresses=zeros(length(edges)) + max11=-10e6 + min11=10e6 + for edge in edges + #degrees_of_freedom = properties["degrees_of_freedom"] + + element=parse(Int,edge["id"][2:end]) + + # find the nodes that the lements connects + fromNode = nodes[edge["source"]+1] + toNode = nodes[edge["target"]+1] + + # the coordinates for each node + fromPoint = [fromNode["position"]["x"] fromNode["position"]["y"] fromNode["position"]["z"]] + toPoint = [toNode["position"]["x"] toNode["position"]["y"] toNode["position"]["z"]] + + # find the degrees of freedom for each node + dofs = convert(Array{Int}, fromNode["degrees_of_freedom"]) + dofs=vcat(dofs,convert(Array{Int}, toNode["degrees_of_freedom"])) + + element_vector=toPoint-fromPoint + + + # find rotated mass and stifness matrices + tau = rotation_matrix(element_vector, x_axis,y_axis,z_axis) + + # i1=parse(Int,fromNode["id"][2:end]) + # i2=parse(Int,toNode["id"][2:end]) + + # global_displacements=[X[(i1)*6+1] X[(i1)*6+2] X[(i1)*6+3] X[(i1)*6+4] X[(i1)*6+5] X[(i1)*6+6] X[(i2)*6+1] X[(i2)*6+2] X[(i2)*6+3] X[(i2)*6+4] X[(i2)*6+5] X[(i2)*6+6]] # todo change + global_displacements=[fromNode["displacement"]["x"] fromNode["displacement"]["y"] fromNode["displacement"]["z"] fromNode["angle"]["x"] fromNode["angle"]["y"] fromNode["angle"]["z"] toNode["displacement"]["x"] toNode["displacement"]["y"] toNode["displacement"]["z"] toNode["angle"]["x"] toNode["angle"]["y"] toNode["angle"]["z"]] # todo change + + # nodal displacement + + q=tau*transpose(global_displacements) + # println(q) + # calculate the strain and stresses + strain =(q[7]-q[1])/norm(element_vector) + E = edge["stiffness"]# youngs modulus + stress=E.*strain + edge["stress"]=stress + if stress>max11 + max11=stress + end + if stress<min11 + min11=stress + end + # println(element) + # println(stress) + end + + + + setup["viz"]["minStress"]=min11 + setup["viz"]["maxStress"]=max11 + return stresses +end + +function get_matrices(setup) + + nodes = setup["nodes"] + edges = setup["edges"] + ndofs = length(nodes)*6 + + x_axis = [1 0 0] + y_axis = [0 1 0] + z_axis = [0 0 1] + + M = zeros((ndofs,ndofs)) + K = zeros((ndofs,ndofs)) + + for edge in edges + #degrees_of_freedom = properties["degrees_of_freedom"] + + element=parse(Int,edge["id"][2:end]) + + # find the nodes that the lements connects + fromNode = nodes[edge["source"]+1] + toNode = nodes[edge["target"]+1] + + # the coordinates for each node + fromPoint = [fromNode["position"]["x"] fromNode["position"]["y"] fromNode["position"]["z"]] + toPoint = [toNode["position"]["x"] toNode["position"]["y"] toNode["position"]["z"]] + + # find the degrees of freedom for each node + dofs = convert(Array{Int}, fromNode["degrees_of_freedom"]) + dofs=vcat(dofs,convert(Array{Int}, toNode["degrees_of_freedom"])) + + element_vector=toPoint-fromPoint + + # find element mass and stifness matrices + length = norm(element_vector) + rho = edge["density"] + area = edge["area"] + E = edge["stiffness"]# youngs modulus + + A = edge["area"] + G=1.0#todo shear_modulus + ixx = 1.0#todo section ixx + iyy = 1.0#todo section.iyy# + l0=length + j=1.0;#todo check + l02 = l0 * l0 + l03 = l0 * l0 * l0 + + # Cm = rho * area * length /6.0 + # Ck= E * area / length + + # m = [[2 1];[1 2]] + # k = [[1 -1];[-1 1]] + + k = [[E*A/l0 0 0 0 0 0 -E*A/l0 0 0 0 0 0];[0 12*E*ixx/l03 0 0 0 6*E*ixx/l02 0 -12*E*ixx/l03 0 0 0 6*E*ixx/l02];[0 0 12*E*iyy/l03 0 -6*E*iyy/l02 0 0 0 -12*E*iyy/l03 0 -6*E*iyy/l02 0];[0 0 0 G*j/l0 0 0 0 0 0 -G*j/l0 0 0];[0 0 -6*E*iyy/l02 0 4*E*iyy/l0 0 0 0 6*E*iyy/l02 0 2*E*iyy/l0 0];[0 6*E*ixx/l02 0 0 0 4*E*ixx/l0 0 -6*E*ixx/l02 0 0 0 2*E*ixx/l0];[-E*A/l0 0 0 0 0 0 E*A/l0 0 0 0 0 0];[0 -12*E*ixx/l03 0 0 0 -6*E*ixx/l02 0 12*E*ixx/l03 0 0 0 -6*E*ixx/l02];[0 0 -12*E*iyy/l03 0 6*E*iyy/l02 0 0 0 12*E*iyy/l03 0 6*E*iyy/l02 0];[0 0 0 -G*j/l0 0 0 0 0 0 G*j/l0 0 0];[0 0 -6*E*iyy/l02 0 2*E*iyy/l0 0 0 0 6*E*iyy/l02 0 4*E*iyy/l0 0];[0 6*E*ixx/l02 0 0 0 2*E*ixx/l0 0 -6*E*ixx/l02 0 0 0 4*E*ixx/l0]] + + # find rotated mass and stifness matrices + tau = rotation_matrix(element_vector, x_axis,y_axis,z_axis) + + # m_r=transpose(tau)*m*tau + k_r=transpose(tau)*k*tau + + + # change from element to global coordinate + index= dofs.+1 + + B=zeros((12,ndofs)) + for i in 1:12 + B[i,index[i]]=1.0 + end + + + # M_rG= transpose(B)*m_r*B + K_rG= transpose(B)*k_r*B + + # M += Cm .* M_rG + # K += Ck .* K_rG + K += K_rG + + end + + # construct the force vector + F=zeros(ndofs) + remove_indices=[]; + for node in nodes + #insert!(F,i, value); + #F=vcat(F,value) + i=parse(Int,node["id"][2:end]) + f=node["force"] + # println(f) + F[(i)*6+1]=f["x"] + F[(i)*6+2]=f["y"] + F[(i)*6+3]=f["z"] + F[(i)*6+4]=0 + F[(i)*6+5]=0 + F[(i)*6+6]=0 + dofs = convert(Array{Int}, node["degrees_of_freedom"]).+1 + restrained_dofs=node["restrained_degrees_of_freedom"] + for (index, value) in enumerate(dofs) + if restrained_dofs[index] + append!( remove_indices, value) + end + end + end + + # println(remove_indices) + # print(K) + # print(F) + + # M = M[setdiff(1:end, remove_indices), :] + K = K[setdiff(1:end, remove_indices), :] + + # M = M[:,setdiff(1:end, remove_indices)] + K = K[:,setdiff(1:end, remove_indices)] + + F = F[setdiff(1:end, remove_indices)] + return M,K,F +end + +function updateDisplacement(setup, X) + nodes= setup["nodes"] + i=0 + for node in nodes + if !node["restrained_degrees_of_freedom"][1] + #i=parse(Int,node["id"][2:end]) + node["displacement"]["x"]=X[(i)*6+1] + node["displacement"]["y"]=X[(i)*6+2] + node["displacement"]["z"]=X[(i)*6+3] + node["angle"]["x"]=X[(i)*6+4] + node["angle"]["y"]=X[(i)*6+5] + node["angle"]["z"]=X[(i)*6+6] + i=i+1 + end + end +end + +function solveFea(setup) + // # determine the global matrices + M,K,F=get_matrices(setup) + + #println(M) + #println(K) + #println(F) + + #evals=eigvals(K,M) + #evecs=eigvecs(K,M) + #frequencies=sqrt.(evals) + X=inv(K)*F + + + #updateDisplacement(displacements); + updateDisplacement(setup, X) + + # determine the stresses in each element + stresses=get_stresses(setup) + +end + + +################### +### Read data ##### +################### +setup = Dict() +open("./json/setupChiral3.json", "r") do f + global setup + dicttxt = String(read(f)) # file information to string + setup=JSON.parse(dicttxt) # parse and transform data +end + +setup=setup["setup"] + + +################### +### Solve FEA data ##### +################### +solveFea(setup) + + +################### +### Write data ##### +################### + +# pass data as a json string (how it shall be displayed in a file) +stringdata = JSON.json(setup) + +# write the file with the stringdata variable information +open("./json/trialJulia.json", "w") do f + write(f, stringdata) + end \ No newline at end of file diff --git a/01_Code/physical_computing_interface/simulation/julia/MetaVoxel GPU.ipynb b/01_Code/physical_computing_interface/simulation/julia/MetaVoxel GPU.ipynb new file mode 100644 index 0000000000000000000000000000000000000000..d4300705306bd8eb0bbd501ed79b2e532b64447d --- /dev/null +++ b/01_Code/physical_computing_interface/simulation/julia/MetaVoxel GPU.ipynb @@ -0,0 +1,818 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [], + "source": [ + "using LinearAlgebra\n", + "using Plots\n", + "import JSON\n", + "# using Quaternions\n", + "using StaticArrays, Rotations\n", + "using Distributed\n", + "using StaticArrays, BenchmarkTools\n", + "using Base.Threads\n", + "using CUDAnative\n", + "using CuArrays,CUDAdrv \n", + "using Test\n", + "import Base: +, * , -, ^\n", + "# BASED ON https://github.com/jonhiller/Voxelyze" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [], + "source": [ + "struct Vector3\n", + " x::Float32\n", + " y::Float32\n", + " z::Float32\n", + " function Vector3()\n", + " x=0.0\n", + " y=0.0\n", + " z=0.0\n", + " new(x,y,z)\n", + " end\n", + " function Vector3(x,y,z)\n", + " new(x,y,z)\n", + " end\n", + "end\n", + "struct Quaternion\n", + " x::Float32\n", + " y::Float32\n", + " z::Float32\n", + " w::Float32\n", + " function Quaternion()\n", + " x=0.0\n", + " y=0.0\n", + " z=0.0\n", + " w=1.0\n", + " new(x,y,z,w)\n", + " end\n", + " function Quaternion(x,y,z,w)\n", + " new(x,y,z,w)\n", + " end\n", + "end\n", + "\n", + "+(f::Vector3, g::Vector3)=Vector3(f.x+g.x , f.y+g.y,f.z+g.z )\n", + "-(f::Vector3, g::Vector3)=Vector3(f.x-g.x , f.y-g.y,f.z-g.z )\n", + "*(f::Vector3, g::Vector3)=Vector3(f.x*g.x , f.y*g.y,f.z*g.z )\n", + "\n", + "+(f::Vector3, g::Number)=Vector3(f.x+g , f.y+g,f.z+g )\n", + "-(f::Vector3, g::Number)=Vector3(f.x-g , f.y-g,f.z-g )\n", + "*(f::Vector3, g::Number)=Vector3(f.x*g , f.y*g,f.z*g )\n", + "\n", + "+(g::Vector3, f::Number)=Vector3(f.x+g , f.y+g,f.z+g )\n", + "-(g::Vector3, f::Number)=Vector3(g-f.x , g-f.y,g-f.z )\n", + "*(g::Vector3, f::Number)=Vector3(f.x*g , f.y*g,f.z*g )\n", + "\n", + "addX(f::Vector3, g::Number)=Vector3(f.x+g , f.y,f.z)\n", + "addY(f::Vector3, g::Number)=Vector3(f.x , f.y+g,f.z )\n", + "addZ(f::Vector3, g::Number)=Vector3(f.x , f.y,f.z+g )\n", + "\n", + "function Base.show(io::IO, v::Vector3)\n", + " print(io, \"x:$(v.x), y:$(v.y), z:$(v.z)\")\n", + "end\n", + "\n", + "function Base.show(io::IO, v::Quaternion)\n", + " print(io, \"x:$(v.x), y:$(v.y), z:$(v.z), w:$(v.z)\")\n", + "end\n", + "\n", + "Base.Broadcast.broadcastable(q::Vector3) = Ref(q)" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [], + "source": [ + "struct Node\n", + " id::Int32\n", + " position::Vector3\n", + " restrained::Bool\n", + " displacement::Vector3\n", + " angle::Vector3\n", + " force::Vector3\n", + " currPosition::Vector3\n", + " orient::Quaternion\n", + " linMom::Vector3\n", + " angMom::Vector3\n", + " intForce::Vector3\n", + " intMoment::Vector3\n", + " moment::Vector3\n", + " function Node()\n", + " id=0\n", + " position=Vector3()\n", + " restrained=false\n", + " displacement=Vector3()\n", + " angle=Vector3()\n", + " force=Vector3()\n", + " currPosition=Vector3()\n", + " orient=Quaternion()\n", + " linMom=Vector3()\n", + " angMom=Vector3()\n", + " intForce=Vector3()\n", + " intMoment=Vector3()\n", + " moment=Vector3()\n", + " new(id,position,restrained,displacement,angle,force,currPosition,orient,linMom,angMom,intForce,intMoment,moment)\n", + " end\n", + "end\n", + "struct Edge\n", + " id::Int32\n", + " source::Int32 #change to Int32\n", + " target::Int32\n", + " area::Float32\n", + " density::Float32\n", + " stiffness::Float32\n", + " stress::Float32\n", + " axis::Vector3\n", + " currentRestLength::Float32\n", + " pos2::Vector3\n", + " angle1v::Vector3\n", + " angle2v::Vector3\n", + " angle1::Quaternion\n", + " angle2::Quaternion\n", + " currentTransverseStrainSum::Float32\n", + " ## add pos node and negative node\n", + " ## add memory cuda??\n", + " function Edge()\n", + " id=0\n", + " source=0\n", + " target=0\n", + " area=0.0\n", + " density=0.0\n", + " stiffness=0.0\n", + " stress=0.0\n", + " axis=Vector3(1.0,0.0,0.0)\n", + " currentRestLength=0.0\n", + " pos2=Vector3()\n", + " angle1v=Vector3()\n", + " angle2v=Vector3()\n", + " angle1=Quaternion()\n", + " angle2=Quaternion()\n", + " currentTransverseStrainSum=0.0\n", + " \n", + " new(id,source,target,area,density,stiffness,stress,axis,currentRestLength,pos2,angle1v,angle2v,angle1,angle2,currentTransverseStrainSum)\n", + " end\n", + "end\n", + "\n", + "function Base.show(io::IO, v::Node)\n", + " print(io, \"node:$(v.id), position:($(v.position)), restrained:$(v.restrained)\")\n", + "end\n", + "\n", + "function Base.show(io::IO, v::Edge)\n", + " print(io, \"edge:$(v.id), source:$(v.source), target:$(v.target), stress:$(v.stress), axis:($(v.axis))\")\n", + "end\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "3-element CuArray{Node,1,Nothing}:\n", + " node:0, position:(x:0.0, y:0.0, z:0.0), restrained:false\n", + " node:0, position:(x:0.0, y:0.0, z:0.0), restrained:false\n", + " node:0, position:(x:0.0, y:0.0, z:0.0), restrained:false" + ] + }, + "execution_count": 17, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# allowscalar(false)\n", + "m=Vector3(1.0,1.0,1.0)\n", + "mg=CuArray([m,m,m])\n", + "mm=mg.+m\n", + "# broadcast(+, mg, m)\n", + "# broadcast(addX, mg, 1)\n", + "\n", + "# m=node\n", + "# println(m)\n", + "m=Node()\n", + "mg=CuArray([m,m,m])" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Dict{String,Any} with 6 entries:\n", + " \"nodes\" => Any[Dict{String,Any}(\"degrees_of_freedom\"=>Any[0, 1, 2, 3, 4, …\n", + " \"bar\" => false\n", + " \"animation\" => Dict{String,Any}(\"speed\"=>3,\"exageration\"=>2000,\"showDisplacem…\n", + " \"viz\" => Dict{String,Any}(\"colorMap\"=>0,\"colorMaps\"=>Any[\"coolwarm\", \"Y…\n", + " \"edges\" => Any[Dict{String,Any}(\"source\"=>0,\"area\"=>1,\"density\"=>0.0284,\"…\n", + " \"ndofs\" => 72" + ] + }, + "execution_count": 18, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "###############################################################################################\n", + "setup = Dict()\n", + "open(\"../json/setupTest.json\", \"r\") do f\n", + " global setup\n", + " dicttxt = String(read(f)) # file information to string\n", + " setup=JSON.parse(dicttxt) # parse and transform data\n", + "end\n", + "\n", + "setup=setup[\"setup\"]" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "initialize (generic function with 1 method)" + ] + }, + "execution_count": 19, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "function initialize(setup)\n", + "\tnodes = setup[\"nodes\"]\n", + " edges = setup[\"edges\"]\n", + " \n", + " i=1\n", + "\t# pre-calculate current position\n", + "\tfor node in nodes\n", + " # element=parse(Int,node[\"id\"][2:end])\n", + " N_position[i,:]=[node[\"position\"][\"x\"] node[\"position\"][\"y\"] node[\"position\"][\"z\"]]\n", + " \n", + " N_positionV[i]=Vector3(node[\"position\"][\"x\"],node[\"position\"][\"y\"],node[\"position\"][\"z\"])\n", + " \n", + " append!(N_degrees_of_freedom,[node[\"degrees_of_freedom\"]])\n", + " N_restrained_degrees_of_freedom[i,:]=node[\"restrained_degrees_of_freedom\"]\n", + " N_restrained[i]=node[\"restrained_degrees_of_freedom\"][1]\n", + " append!(N_displacement,[[node[\"displacement\"][\"x\"] node[\"displacement\"][\"y\"] node[\"displacement\"][\"z\"]]])\n", + " append!(N_angle,[[node[\"angle\"][\"x\"] node[\"angle\"][\"y\"] node[\"angle\"][\"z\"]]])\n", + " append!(N_force,[[node[\"force\"][\"x\"] node[\"force\"][\"y\"] node[\"force\"][\"z\"]]])\n", + " append!(N_currPosition,[[node[\"position\"][\"x\"] node[\"position\"][\"y\"] node[\"position\"][\"z\"]]])\n", + " append!(N_orient,[Quat(1.0,0.0,0.0,0.0)])#quat\n", + " append!(N_linMom,[[0 0 0]])\n", + " append!(N_angMom,[[0 0 0]])\n", + " append!(N_intForce,[[0 0 0]])\n", + " append!(N_intMoment,[[0 0 0]])\n", + " append!(N_moment,[[0 0 0]])\n", + " \n", + " # for dynamic simulations\n", + " append!(N_posTimeSteps,[[]])\n", + " append!(N_angTimeSteps,[[]])\n", + " \n", + " i=i+1\n", + " \n", + "\tend \n", + " \n", + " i=1\n", + "\t# pre-calculate the axis\n", + "\tfor edge in edges\n", + " # element=parse(Int,edge[\"id\"][2:end])\n", + " \n", + " # find the nodes that the lements connects\n", + " fromNode = nodes[edge[\"source\"]+1]\n", + " toNode = nodes[edge[\"target\"]+1]\n", + "\n", + " \n", + " node1 = [fromNode[\"position\"][\"x\"] fromNode[\"position\"][\"y\"] fromNode[\"position\"][\"z\"]]\n", + " node2 = [toNode[\"position\"][\"x\"] toNode[\"position\"][\"y\"] toNode[\"position\"][\"z\"]]\n", + " \n", + " length=norm(node2-node1)\n", + " axis=normalize(collect(Iterators.flatten(node2-node1)))\n", + " \n", + " append!(E_source,[edge[\"source\"]+1])\n", + " append!(E_target,[edge[\"target\"]+1])\n", + " append!(E_area,[edge[\"area\"]])\n", + " append!(E_density,[edge[\"density\"]])\n", + " append!(E_stiffness,[edge[\"stiffness\"]])\n", + " append!(E_stress,[0])\n", + " append!(E_axis,[axis])\n", + " append!(E_currentRestLength,[length])\n", + " append!(E_pos2,[[0 0 0]])\n", + " append!(E_angle1v,[[0 0 0]])\n", + " append!(E_angle2v,[[0 0 0]])\n", + " append!(E_angle1,[Quat(1.0,0,0,0)]) #quat\n", + " append!(E_angle2,[Quat(1.0,0,0,0)]) #quat\n", + " append!(E_currentTransverseStrainSum,[0])\n", + " \n", + " # for dynamic simulations\n", + " append!(E_stressTimeSteps,[[]])\n", + " \n", + " i=i+1\n", + "\tend \n", + "\t\n", + "end" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "12-element CuArray{Vector3,1,Nothing}:\n", + " x:5.0, y:-5.0, z:0.0 \n", + " x:0.0, y:-5.0, z:-5.0\n", + " x:-5.0, y:-5.0, z:0.0\n", + " x:0.0, y:-5.0, z:5.0 \n", + " x:5.0, y:5.0, z:0.0 \n", + " x:5.0, y:0.0, z:-5.0 \n", + " x:5.0, y:0.0, z:5.0 \n", + " x:-5.0, y:5.0, z:0.0 \n", + " x:0.0, y:5.0, z:-5.0 \n", + " x:0.0, y:5.0, z:5.0 \n", + " x:-5.0, y:0.0, z:-5.0\n", + " x:-5.0, y:0.0, z:5.0 " + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "########\n", + "voxCount=0\n", + "linkCount=0\n", + "nodes = setup[\"nodes\"]\n", + "edges = setup[\"edges\"]\n", + "voxCount=size(nodes)[1]\n", + "linkCount=size(edges)[1]\n", + "strain =0 #todooo moveeee\n", + "\n", + "############# nodes\n", + "N_position=fill(Vector3(),voxCount)\n", + "N_restrained=zeros(Bool, voxCount)\n", + "N_displacement=fill(Vector3(),voxCount)\n", + "N_angle=fill(Vector3(),voxCount)\n", + "N_currPosition=fill(Vector3(),voxCount)\n", + "N_linMom=fill(Vector3(),voxCount)\n", + "N_angMom=fill(Vector3(),voxCount)\n", + "N_intForce=fill(Vector3(),voxCount)\n", + "N_intMoment=fill(Vector3(),voxCount)\n", + "N_moment=fill(Vector3(),voxCount)\n", + "# N_posTimeSteps=[]\n", + "# N_angTimeSteps=[]\n", + "N_force=fill(Vector3(),voxCount)\n", + "N_orient=fill(Quaternion(),voxCount)\n", + "\n", + "############# edges\n", + "E_source=fill(0,linkCount)\n", + "E_target=fill(0,linkCount)\n", + "E_area=fill(0.0F0,linkCount)\n", + "E_density=fill(0.0F0,linkCount)\n", + "E_stiffness=fill(0.0F0,linkCount)\n", + "E_stress=fill(0.0F0,linkCount)\n", + "E_axis=fill(Vector3(1.0,0.0,0.0),linkCount)\n", + "E_currentRestLength=fill(0.0F0,linkCount)\n", + "E_pos2=fill(Vector3(),linkCount)\n", + "E_angle1v=fill(Vector3(),linkCount)\n", + "E_angle2v=fill(Vector3(),linkCount)\n", + "E_angle1=fill(Quaternion(),voxCount)\n", + "E_angle2=fill(Quaternion(),voxCount)\n", + "E_currentTransverseStrainSum=fill(0.0F0,linkCount)# TODO remove ot incorporate\n", + "# E_stressTimeSteps=[]\n", + "\n", + "\n", + "\n", + "initialize(setup)\n", + "N_position\n", + "N_positionGPU=CuArray(N_position)\n", + "N_restrained_degrees_of_freedomGPU=CuArray(N_restrained_degrees_of_freedom)\n", + "N_restrainedGPU=CuArray(N_restrained)\n", + "N_positionVGPU=CuArray(N_positionV)\n", + "# N_positionV .= ifelse.(N_restrained .==true, N_positionV, N_positionV .+ 1 )" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "bench_gpu! (generic function with 1 method)" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "function trialGPU!(N_positionVGPU, N_restrainedGPU, vecGPU)\n", + " index = (blockIdx().x - 1) * blockDim().x + threadIdx().x\n", + " stride = blockDim().x * gridDim().x\n", + " for i = index:stride:length(vecGPU)\n", + " @inbounds N_positionVGPU[i]=ifelse(N_restrainedGPU[i], N_positionVGPU[i], N_positionVGPU[i] +vecGPU[i] )\n", + " end\n", + " return\n", + "end\n", + "\n", + "# function trialGPU!(N_positionVGPU, N_restrainedGPU, vecGPU)\n", + "# i = (blockIdx().x-1) * blockDim().x + threadIdx().x\n", + "# N_positionVGPU[i]=ifelse(N_restrainedGPU[i], N_positionVGPU[i], N_positionVGPU[i] +vecGPU[i] )\n", + "# return\n", + "# end\n", + "\n", + "function bench_gpu!(N_positionVGPU, N_restrainedGPU, vecGPU)\n", + " N=length(vecGPU)\n", + " numblocks = ceil(Int, N/256)\n", + " CuArrays.@sync begin\n", + " @cuda threads=256 blocks=numblocks trialGPU!(N_positionVGPU, N_restrainedGPU, vecGPU)\n", + " end\n", + "end\n", + "\n", + "# @cuda threads=voxCount trialGPU(N_positionVGPU, N_restrainedGPU, vecGPU)\n", + "# N_positionVGPU" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "trialCPU! (generic function with 1 method)" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "function trialCPU!(N_positionV, N_restrained, vec)\n", + " for i in 1:length(vec)\n", + " @inbounds N_positionV[i]=ifelse(N_restrained[i], N_positionV[i], N_positionV[i] +vec[i] )\n", + " end\n", + " return\n", + "end\n", + "\n", + "# trialCPU!(N_positionV, N_restrained, vec)\n", + "# N_positionV" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "voxCount=2^12\n", + "\n", + "############# nodes\n", + "N_positionV=fill(Vector3(0,0,0),voxCount)\n", + "N_restrained=zeros(Bool, voxCount)\n", + "\n", + "N_restrainedGPU=CuArray(N_restrained)\n", + "N_positionVGPU=CuArray(N_positionV)\n", + "\n", + "vec = fill(Vector3(1,1,1),voxCount)\n", + "vecGPU = CuArray(vec)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# @btime bench_gpu!(N_positionVGPU, N_restrainedGPU, vecGPU)\n", + "@btime bench_gpu!(N_positionVGPU, N_restrainedGPU, vecGPU)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "@btime trialCPU!(N_positionV, N_restrained, vec)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "num=[2^8,2^9,2^10]\n", + "resulstGPU=[34.89e-6,35.6e-6,37.3e-6]\n", + "resulstCPU=[347.437e-9,676.6e-9,1.38e-6]" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(Any[256, 512, 1024, 2048, 4096, 8192, 16384, 32768, 65536, 131072, 262144, 524288, 1048576, 2097152, 4194304, 8388608, 16777216, 33554432], Any[0.0002236, 0.0001802, 0.0001789, 0.000165599, 0.0001807, 0.0001797, 0.0001961, 0.0002399, 0.0003058, 0.0005876, 0.0006443, 0.0008724, 0.001016701, 0.001034, 0.0014529, 0.0021805, 0.003616799, 0.0067031], Any[5.0e-7, 7.0e-7, 1.4e-6, 2.8e-6, 5.6e-6, 1.1001e-5, 2.3101e-5, 4.68e-5, 9.52e-5, 0.000197001, 0.0004137, 0.000879599, 0.0016901, 0.0033103, 0.0067236, 0.0133556, 0.0272343, 0.053784501])" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "function bench()\n", + " num=[]\n", + " resultsGPU=[]\n", + " resultsCPU=[]\n", + " for i in 8:25\n", + " voxCount=2^i\n", + "\n", + " ############# nodes\n", + " N_positionV=fill(Vector3(0,0,0),voxCount)\n", + " N_restrained=zeros(Bool, voxCount)\n", + "\n", + " N_restrainedGPU=CuArray(N_restrained)\n", + " N_positionVGPU=CuArray(N_positionV)\n", + "\n", + " vec = fill(Vector3(1,1,1),voxCount)\n", + " vecGPU = CuArray(vec)\n", + " \n", + " res=@timed bench_gpu!(N_positionVGPU, N_restrainedGPU, vecGPU)\n", + " res1=@timed trialCPU!(N_positionV, N_restrained, vec)\n", + " \n", + " append!(num,voxCount)\n", + " append!(resultsGPU,res[2])\n", + " append!(resultsCPU,res1[2])\n", + " end\n", + " return num,resultsGPU,resultsCPU\n", + "end\n", + "num,resultsGPU,resultsCPU=bench()" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "data": { + "image/svg+xml": [ + "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n", + "<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" width=\"600\" height=\"400\" viewBox=\"0 0 2400 1600\">\n", + "<defs>\n", + " <clipPath id=\"clip1800\">\n", + " <rect x=\"0\" y=\"0\" width=\"2400\" height=\"1600\"/>\n", + " </clipPath>\n", + "</defs>\n", + "<path clip-path=\"url(#clip1800)\" d=\"\n", + "M0 1600 L2400 1600 L2400 0 L0 0 Z\n", + " \" fill=\"#ffffff\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n", + "<defs>\n", + " <clipPath id=\"clip1801\">\n", + " <rect x=\"480\" y=\"0\" width=\"1681\" height=\"1600\"/>\n", + " </clipPath>\n", + "</defs>\n", + "<path clip-path=\"url(#clip1800)\" d=\"\n", + "M180.66 1487.47 L2352.76 1487.47 L2352.76 47.2441 L180.66 47.2441 Z\n", + " \" fill=\"#ffffff\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n", + "<defs>\n", + " <clipPath id=\"clip1802\">\n", + " <rect x=\"180\" y=\"47\" width=\"2173\" height=\"1441\"/>\n", + " </clipPath>\n", + "</defs>\n", + "<polyline clip-path=\"url(#clip1802)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n", + " 242.119,1487.47 242.119,47.2441 \n", + " \"/>\n", + "<polyline clip-path=\"url(#clip1802)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n", + " 852.817,1487.47 852.817,47.2441 \n", + " \"/>\n", + "<polyline clip-path=\"url(#clip1802)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n", + " 1463.52,1487.47 1463.52,47.2441 \n", + " \"/>\n", + "<polyline clip-path=\"url(#clip1802)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n", + " 2074.21,1487.47 2074.21,47.2441 \n", + " \"/>\n", + "<polyline clip-path=\"url(#clip1802)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n", + " 180.66,1446.73 2352.76,1446.73 \n", + " \"/>\n", + "<polyline clip-path=\"url(#clip1802)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n", + " 180.66,1194.1 2352.76,1194.1 \n", + " \"/>\n", + "<polyline clip-path=\"url(#clip1802)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n", + " 180.66,941.48 2352.76,941.48 \n", + " \"/>\n", + "<polyline clip-path=\"url(#clip1802)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n", + " 180.66,688.857 2352.76,688.857 \n", + " \"/>\n", + "<polyline clip-path=\"url(#clip1802)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n", + " 180.66,436.234 2352.76,436.234 \n", + " \"/>\n", + "<polyline clip-path=\"url(#clip1802)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n", + " 180.66,183.611 2352.76,183.611 \n", + " \"/>\n", + "<polyline clip-path=\"url(#clip1800)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", + " 180.66,1487.47 2352.76,1487.47 \n", + " \"/>\n", + "<polyline clip-path=\"url(#clip1800)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", + " 180.66,1487.47 180.66,47.2441 \n", + " \"/>\n", + "<polyline clip-path=\"url(#clip1800)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", + " 242.119,1487.47 242.119,1470.19 \n", + " \"/>\n", + "<polyline clip-path=\"url(#clip1800)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", + " 852.817,1487.47 852.817,1470.19 \n", + " \"/>\n", + "<polyline clip-path=\"url(#clip1800)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", + " 1463.52,1487.47 1463.52,1470.19 \n", + " \"/>\n", + "<polyline clip-path=\"url(#clip1800)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", + " 2074.21,1487.47 2074.21,1470.19 \n", + " \"/>\n", + "<polyline clip-path=\"url(#clip1800)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", + " 180.66,1446.73 206.725,1446.73 \n", + " \"/>\n", + "<polyline clip-path=\"url(#clip1800)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", + " 180.66,1194.1 206.725,1194.1 \n", + " \"/>\n", + "<polyline clip-path=\"url(#clip1800)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", + " 180.66,941.48 206.725,941.48 \n", + " \"/>\n", + "<polyline clip-path=\"url(#clip1800)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", + " 180.66,688.857 206.725,688.857 \n", + " \"/>\n", + "<polyline clip-path=\"url(#clip1800)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", + " 180.66,436.234 206.725,436.234 \n", + " \"/>\n", + "<polyline clip-path=\"url(#clip1800)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", + " 180.66,183.611 206.725,183.611 \n", + " \"/>\n", + "<g clip-path=\"url(#clip1800)\">\n", + "<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:middle;\" transform=\"rotate(0, 242.119, 1541.47)\" x=\"242.119\" y=\"1541.47\">0</text>\n", + "</g>\n", + "<g clip-path=\"url(#clip1800)\">\n", + "<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:start;\" transform=\"rotate(0, 787.746, 1562.48)\" x=\"787.746\" y=\"1562.48\">1×10</text>\n", + "</g>\n", + "<g clip-path=\"url(#clip1800)\">\n", + "<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:38px; text-anchor:start;\" transform=\"rotate(0, 896.143, 1535.07)\" x=\"896.143\" y=\"1535.07\">7</text>\n", + "</g>\n", + "<g clip-path=\"url(#clip1800)\">\n", + "<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:start;\" transform=\"rotate(0, 1398.44, 1562.48)\" x=\"1398.44\" y=\"1562.48\">2×10</text>\n", + "</g>\n", + "<g clip-path=\"url(#clip1800)\">\n", + "<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:38px; text-anchor:start;\" transform=\"rotate(0, 1506.84, 1535.07)\" x=\"1506.84\" y=\"1535.07\">7</text>\n", + "</g>\n", + "<g clip-path=\"url(#clip1800)\">\n", + "<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:start;\" transform=\"rotate(0, 2009.14, 1562.48)\" x=\"2009.14\" y=\"1562.48\">3×10</text>\n", + "</g>\n", + "<g clip-path=\"url(#clip1800)\">\n", + "<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:38px; text-anchor:start;\" transform=\"rotate(0, 2117.54, 1535.07)\" x=\"2117.54\" y=\"1535.07\">7</text>\n", + "</g>\n", + "<g clip-path=\"url(#clip1800)\">\n", + "<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:end;\" transform=\"rotate(0, 156.66, 1464.23)\" x=\"156.66\" y=\"1464.23\">0.00</text>\n", + "</g>\n", + "<g clip-path=\"url(#clip1800)\">\n", + "<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:end;\" transform=\"rotate(0, 156.66, 1211.6)\" x=\"156.66\" y=\"1211.6\">0.01</text>\n", + "</g>\n", + "<g clip-path=\"url(#clip1800)\">\n", + "<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:end;\" transform=\"rotate(0, 156.66, 958.98)\" x=\"156.66\" y=\"958.98\">0.02</text>\n", + "</g>\n", + "<g clip-path=\"url(#clip1800)\">\n", + "<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:end;\" transform=\"rotate(0, 156.66, 706.357)\" x=\"156.66\" y=\"706.357\">0.03</text>\n", + "</g>\n", + "<g clip-path=\"url(#clip1800)\">\n", + "<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:end;\" transform=\"rotate(0, 156.66, 453.734)\" x=\"156.66\" y=\"453.734\">0.04</text>\n", + "</g>\n", + "<g clip-path=\"url(#clip1800)\">\n", + "<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:end;\" transform=\"rotate(0, 156.66, 201.111)\" x=\"156.66\" y=\"201.111\">0.05</text>\n", + "</g>\n", + "<polyline clip-path=\"url(#clip1802)\" style=\"stroke:#009af9; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", + " 242.135,1441.08 242.15,1442.17 242.182,1442.21 242.244,1442.54 242.369,1442.16 242.619,1442.19 243.12,1441.77 244.12,1440.67 246.121,1439 250.124,1431.88 \n", + " 258.128,1430.45 274.137,1424.69 306.155,1421.04 370.192,1420.6 498.264,1410.02 754.41,1391.64 1266.7,1355.36 2291.28,1277.39 \n", + " \"/>\n", + "<polyline clip-path=\"url(#clip1802)\" style=\"stroke:#e26f46; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", + " 242.135,1446.71 242.15,1446.71 242.182,1446.69 242.244,1446.66 242.369,1446.58 242.619,1446.45 243.12,1446.14 244.12,1445.54 246.121,1444.32 250.124,1441.75 \n", + " 258.128,1436.28 274.137,1424.51 306.155,1404.03 370.192,1363.1 498.264,1276.87 754.41,1109.33 1266.7,758.725 2291.28,88.0053 \n", + " \"/>\n", + "<path clip-path=\"url(#clip1800)\" d=\"\n", + "M1936.45 312.204 L2280.76 312.204 L2280.76 130.764 L1936.45 130.764 Z\n", + " \" fill=\"#ffffff\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n", + "<polyline clip-path=\"url(#clip1800)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", + " 1936.45,312.204 2280.76,312.204 2280.76,130.764 1936.45,130.764 1936.45,312.204 \n", + " \"/>\n", + "<polyline clip-path=\"url(#clip1800)\" style=\"stroke:#009af9; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", + " 1960.45,191.244 2104.45,191.244 \n", + " \"/>\n", + "<g clip-path=\"url(#clip1800)\">\n", + "<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:start;\" transform=\"rotate(0, 2128.45, 208.744)\" x=\"2128.45\" y=\"208.744\">GPU</text>\n", + "</g>\n", + "<polyline clip-path=\"url(#clip1800)\" style=\"stroke:#e26f46; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", + " 1960.45,251.724 2104.45,251.724 \n", + " \"/>\n", + "<g clip-path=\"url(#clip1800)\">\n", + "<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:start;\" transform=\"rotate(0, 2128.45, 269.224)\" x=\"2128.45\" y=\"269.224\">CPU</text>\n", + "</g>\n", + "</svg>\n" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "plot(num,[resultsGPU resultsCPU],label = [\"GPU\" \"CPU\"])" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "N=100\n", + "function repeatGPU(N)\n", + " for i in 1:N\n", + " @cuda threads=voxCount trialGPU(N_positionVGPU, N_restrainedGPU, vecGPU)\n", + " end\n", + "end\n", + "@btime repeatGPU(N)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "function repeatCPU(N)\n", + " for i in 1:N\n", + " trialCPU!(N_positionV, N_restrained, vec)\n", + " end\n", + "end\n", + "@btime repeatCPU(N)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Trial 2" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "N_positionV" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Julia 1.2.0", + "language": "julia", + "name": "julia-1.2" + }, + "language_info": { + "file_extension": ".jl", + "mimetype": "application/julia", + "name": "julia", + "version": "1.2.0" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/01_Code/physical_computing_interface/simulation/julia/MetaVoxel GPU1.ipynb b/01_Code/physical_computing_interface/simulation/julia/MetaVoxel GPU1.ipynb new file mode 100644 index 0000000000000000000000000000000000000000..dd67fe3d80c13e2e1cf5a593646d7669fae10ab2 --- /dev/null +++ b/01_Code/physical_computing_interface/simulation/julia/MetaVoxel GPU1.ipynb @@ -0,0 +1,989 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "using LinearAlgebra\n", + "using Plots\n", + "import JSON\n", + "# using Quaternions\n", + "using StaticArrays, Rotations\n", + "using Distributed\n", + "using StaticArrays, BenchmarkTools\n", + "using Base.Threads\n", + "using CUDAnative\n", + "using CuArrays,CUDAdrv \n", + "using Test\n", + "import Base: +, * , -, ^\n", + "# BASED ON https://github.com/jonhiller/Voxelyze" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "struct Vector3\n", + " x::Float32\n", + " y::Float32\n", + " z::Float32\n", + " function Vector3()\n", + " x=0.0\n", + " y=0.0\n", + " z=0.0\n", + " new(x,y,z)\n", + " end\n", + " function Vector3(x,y,z)\n", + " new(x,y,z)\n", + " end\n", + "end\n", + "struct Quaternion\n", + " x::Float32\n", + " y::Float32\n", + " z::Float32\n", + " w::Float32\n", + " function Quaternion()\n", + " x=0.0\n", + " y=0.0\n", + " z=0.0\n", + " w=1.0\n", + " new(x,y,z,w)\n", + " end\n", + " function Quaternion(x,y,z,w)\n", + " new(x,y,z,w)\n", + " end\n", + "end\n", + "\n", + "+(f::Vector3, g::Vector3)=Vector3(f.x+g.x , f.y+g.y,f.z+g.z )\n", + "-(f::Vector3, g::Vector3)=Vector3(f.x-g.x , f.y-g.y,f.z-g.z )\n", + "*(f::Vector3, g::Vector3)=Vector3(f.x*g.x , f.y*g.y,f.z*g.z )\n", + "\n", + "+(f::Vector3, g::Number)=Vector3(f.x+g , f.y+g,f.z+g )\n", + "-(f::Vector3, g::Number)=Vector3(f.x-g , f.y-g,f.z-g )\n", + "*(f::Vector3, g::Number)=Vector3(f.x*g , f.y*g,f.z*g )\n", + "\n", + "+(g::Vector3, f::Number)=Vector3(f.x+g , f.y+g,f.z+g )\n", + "-(g::Vector3, f::Number)=Vector3(g-f.x , g-f.y,g-f.z )\n", + "*(g::Vector3, f::Number)=Vector3(f.x*g , f.y*g,f.z*g )\n", + "\n", + "addX(f::Vector3, g::Number)=Vector3(f.x+g , f.y,f.z)\n", + "addY(f::Vector3, g::Number)=Vector3(f.x , f.y+g,f.z )\n", + "addZ(f::Vector3, g::Number)=Vector3(f.x , f.y,f.z+g )\n", + "\n", + "function Base.show(io::IO, v::Vector3)\n", + " print(io, \"x:$(v.x), y:$(v.y), z:$(v.z)\")\n", + "end\n", + "\n", + "function Base.show(io::IO, v::Quaternion)\n", + " print(io, \"x:$(v.x), y:$(v.y), z:$(v.z), w:$(v.z)\")\n", + "end\n", + "\n", + "Base.Broadcast.broadcastable(q::Vector3) = Ref(q)" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "ename": "ErrorException", + "evalue": "invalid redefinition of constant Node", + "output_type": "error", + "traceback": [ + "invalid redefinition of constant Node", + "", + "Stacktrace:", + " [1] top-level scope at C:\\Users\\amira\\.julia\\packages\\IJulia\\yLI42\\src\\kernel.jl:52" + ] + } + ], + "source": [ + "mutable struct Node\n", + " id::Int32\n", + " position::Vector3\n", + " restrained::Bool\n", + " displacement::Vector3\n", + " angle::Vector3\n", + " force::Vector3\n", + " currPosition::Vector3\n", + " orient::Quaternion\n", + " linMom::Vector3\n", + " angMom::Vector3\n", + " intForce::Vector3\n", + " intMoment::Vector3\n", + " moment::Vector3\n", + " function Node()\n", + " id=0\n", + " position=Vector3()\n", + " restrained=false\n", + " displacement=Vector3()\n", + " angle=Vector3()\n", + " force=Vector3()\n", + " currPosition=Vector3()\n", + " orient=Quaternion()\n", + " linMom=Vector3()\n", + " angMom=Vector3()\n", + " intForce=Vector3()\n", + " intMoment=Vector3()\n", + " moment=Vector3()\n", + " new(id,position,restrained,displacement,angle,force,currPosition,orient,linMom,angMom,intForce,intMoment,moment)\n", + " end\n", + "end\n", + "mutable struct Edge\n", + " id::Int32\n", + " source::Int32 #change to Int32\n", + " target::Int32\n", + " area::Float32\n", + " density::Float32\n", + " stiffness::Float32\n", + " stress::Float32\n", + " axis::Vector3\n", + " currentRestLength::Float32\n", + " pos2::Vector3\n", + " angle1v::Vector3\n", + " angle2v::Vector3\n", + " angle1::Quaternion\n", + " angle2::Quaternion\n", + " currentTransverseStrainSum::Float32\n", + " ## add pos node and negative node\n", + " ## add memory cuda??\n", + " function Edge()\n", + " id=0\n", + " source=0\n", + " target=0\n", + " area=0.0\n", + " density=0.0\n", + " stiffness=0.0\n", + " stress=0.0\n", + " axis=Vector3(1.0,0.0,0.0)\n", + " currentRestLength=0.0\n", + " pos2=Vector3()\n", + " angle1v=Vector3()\n", + " angle2v=Vector3()\n", + " angle1=Quaternion()\n", + " angle2=Quaternion()\n", + " currentTransverseStrainSum=0.0\n", + " \n", + " new(id,source,target,area,density,stiffness,stress,axis,currentRestLength,pos2,angle1v,angle2v,angle1,angle2,currentTransverseStrainSum)\n", + " end\n", + "end\n", + "\n", + "function Base.show(io::IO, v::Node)\n", + " print(io, \"node:$(v.id), position:($(v.position)), restrained:$(v.restrained)\")\n", + "end\n", + "\n", + "function Base.show(io::IO, v::Edge)\n", + " print(io, \"edge:$(v.id), source:$(v.source), target:$(v.target), stress:$(v.stress), axis:($(v.axis))\")\n", + "end\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "3-element CuArray{Node,1,Nothing}:\n", + " node:0, position:(x:0.0, y:0.0, z:0.0), restrained:false\n", + " node:0, position:(x:0.0, y:0.0, z:0.0), restrained:false\n", + " node:0, position:(x:0.0, y:0.0, z:0.0), restrained:false" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# allowscalar(false)\n", + "m=Vector3(1.0,1.0,1.0)\n", + "mg=CuArray([m,m,m])\n", + "mm=mg.+m\n", + "# broadcast(+, mg, m)\n", + "# broadcast(addX, mg, 1)\n", + "\n", + "# m=node\n", + "# println(m)\n", + "m=Node()\n", + "mg=CuArray([m,m,m])" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Dict{String,Any} with 6 entries:\n", + " \"nodes\" => Any[Dict{String,Any}(\"degrees_of_freedom\"=>Any[0, 1, 2, 3, 4, …\n", + " \"bar\" => false\n", + " \"animation\" => Dict{String,Any}(\"speed\"=>3,\"exageration\"=>2000,\"showDisplacem…\n", + " \"viz\" => Dict{String,Any}(\"colorMap\"=>0,\"colorMaps\"=>Any[\"coolwarm\", \"Y…\n", + " \"edges\" => Any[Dict{String,Any}(\"source\"=>0,\"area\"=>1,\"density\"=>0.0284,\"…\n", + " \"ndofs\" => 72" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "###############################################################################################\n", + "setup = Dict()\n", + "open(\"../json/setupTest.json\", \"r\") do f\n", + " global setup\n", + " dicttxt = String(read(f)) # file information to string\n", + " setup=JSON.parse(dicttxt) # parse and transform data\n", + "end\n", + "\n", + "setup=setup[\"setup\"]" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "initialize (generic function with 1 method)" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "function initialize(setup)\n", + "\tnodes = setup[\"nodes\"]\n", + " edges = setup[\"edges\"]\n", + " \n", + " i=1\n", + "\t# pre-calculate current position\n", + "\tfor node in nodes\n", + " # element=parse(Int,node[\"id\"][2:end])\n", + " N_position[i]=Vector3(node[\"position\"][\"x\"],node[\"position\"][\"y\"],node[\"position\"][\"z\"])\n", + " N_restrained[i]=node[\"restrained_degrees_of_freedom\"][1] ## todo later consider other degrees of freedom\n", + " N_displacement[i]=Vector3(node[\"displacement\"][\"x\"],node[\"displacement\"][\"y\"],node[\"displacement\"][\"z\"])\n", + " N_angle[i]=Vector3(node[\"angle\"][\"x\"],node[\"angle\"][\"y\"],node[\"angle\"][\"z\"])\n", + " N_force[i]=Vector3(node[\"force\"][\"x\"],node[\"force\"][\"y\"],node[\"force\"][\"z\"])\n", + " N_currPosition[i]=Vector3(node[\"position\"][\"x\"],node[\"position\"][\"y\"],node[\"position\"][\"z\"])\n", + "\n", + " # for dynamic simulations\n", + " # append!(N_posTimeSteps,[[]])\n", + " # append!(N_angTimeSteps,[[]])\n", + " \n", + " i=i+1\n", + "\tend \n", + " \n", + " i=1\n", + "\t# pre-calculate the axis\n", + "\tfor edge in edges\n", + " # element=parse(Int,edge[\"id\"][2:end])\n", + " \n", + " # find the nodes that the lements connects\n", + " fromNode = nodes[edge[\"source\"]+1]\n", + " toNode = nodes[edge[\"target\"]+1]\n", + "\n", + " \n", + " node1 = [fromNode[\"position\"][\"x\"] fromNode[\"position\"][\"y\"] fromNode[\"position\"][\"z\"]]\n", + " node2 = [toNode[\"position\"][\"x\"] toNode[\"position\"][\"y\"] toNode[\"position\"][\"z\"]]\n", + " \n", + " length=norm(node2-node1)\n", + " axis=normalize(collect(Iterators.flatten(node2-node1)))\n", + " \n", + " E_source[i]=edge[\"source\"]+1\n", + " E_target[i]=edge[\"target\"]+1\n", + " E_area[i]=edge[\"area\"]\n", + " E_density[i]=edge[\"density\"]\n", + " E_stiffness[i]=edge[\"stiffness\"]\n", + " E_axis[i]=Vector3(axis[1],axis[2],axis[3])\n", + " E_currentRestLength[i]=length\n", + " \n", + " \n", + " # for dynamic simulations\n", + " # append!(E_stressTimeSteps,[[]])\n", + " \n", + " i=i+1\n", + "\tend \n", + "end" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "24-element CuArray{Float32,1,Nothing}:\n", + " 0.0\n", + " 0.0\n", + " 0.0\n", + " 0.0\n", + " 0.0\n", + " 0.0\n", + " 0.0\n", + " 0.0\n", + " 0.0\n", + " 0.0\n", + " 0.0\n", + " 0.0\n", + " 0.0\n", + " 0.0\n", + " 0.0\n", + " 0.0\n", + " 0.0\n", + " 0.0\n", + " 0.0\n", + " 0.0\n", + " 0.0\n", + " 0.0\n", + " 0.0\n", + " 0.0" + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "########\n", + "voxCount=0\n", + "linkCount=0\n", + "nodes = setup[\"nodes\"]\n", + "edges = setup[\"edges\"]\n", + "voxCount=size(nodes)[1]\n", + "linkCount=size(edges)[1]\n", + "strain =0 #todooo moveeee\n", + "\n", + "# Nodes=fill(Node(),voxCount)\n", + "# Edges=fill(Edge(),linkCount)\n", + "\n", + "########\n", + "voxCount=0\n", + "linkCount=0\n", + "nodes = setup[\"nodes\"]\n", + "edges = setup[\"edges\"]\n", + "voxCount=size(nodes)[1]\n", + "linkCount=size(edges)[1]\n", + "strain =0 #todooo moveeee\n", + "\n", + "############# nodes\n", + "N_position=fill(Vector3(),voxCount)\n", + "N_restrained=zeros(Bool, voxCount)\n", + "N_displacement=fill(Vector3(),voxCount)\n", + "N_angle=fill(Vector3(),voxCount)\n", + "N_currPosition=fill(Vector3(),voxCount)\n", + "N_linMom=fill(Vector3(),voxCount)\n", + "N_angMom=fill(Vector3(),voxCount)\n", + "N_intForce=fill(Vector3(),voxCount)\n", + "N_intMoment=fill(Vector3(),voxCount)\n", + "N_moment=fill(Vector3(),voxCount)\n", + "# N_posTimeSteps=[]\n", + "# N_angTimeSteps=[]\n", + "N_force=fill(Vector3(),voxCount)\n", + "N_orient=fill(Quaternion(),voxCount)\n", + "\n", + "############# edges\n", + "E_source=fill(0,linkCount)\n", + "E_target=fill(0,linkCount)\n", + "E_area=fill(0.0f0,linkCount)\n", + "E_density=fill(0.0f0,linkCount)\n", + "E_stiffness=fill(0.0f0,linkCount)\n", + "E_stress=fill(0.0f0,linkCount)\n", + "E_axis=fill(Vector3(1.0,0.0,0.0),linkCount)\n", + "E_currentRestLength=fill(0.0f0,linkCount)\n", + "E_pos2=fill(Vector3(),linkCount)\n", + "E_angle1v=fill(Vector3(),linkCount)\n", + "E_angle2v=fill(Vector3(),linkCount)\n", + "E_angle1=fill(Quaternion(),voxCount)\n", + "E_angle2=fill(Quaternion(),voxCount)\n", + "\n", + "E_intForce1= CuArray(N_intForce) \n", + "E_intMoment1= CuArray(N_intMoment) \n", + "\n", + "E_intForce2= CuArray(N_intForce) \n", + "E_intMoment2= CuArray(N_intMoment) \n", + "\n", + "E_currentTransverseStrainSum=fill(0.0f0,linkCount)# TODO remove ot incorporate\n", + "# E_stressTimeSteps=[]\n", + "\n", + "\n", + "#################################################################\n", + "initialize(setup)\n", + "#################################################################\n", + "\n", + "########################## turn to cuda arrays\n", + "############# nodes\n", + "N_position= CuArray(N_position) \n", + "N_restrained= CuArray(N_restrained) \n", + "N_displacement=CuArray(N_displacement) \n", + "N_angle= CuArray(N_angle) \n", + "N_currPosition=CuArray(N_currPosition) \n", + "N_linMom= CuArray(N_linMom) \n", + "N_angMom= CuArray(N_angMom) \n", + "N_intForce= CuArray(N_intForce) \n", + "N_intMoment= CuArray(N_intMoment) \n", + "N_moment= CuArray(N_moment)\n", + "N_force= CuArray(N_force) \n", + "N_orient= CuArray(N_orient) \n", + "\n", + "############# edges\n", + "E_source= CuArray(E_source) \n", + "E_target= CuArray(E_target)\n", + "E_area= CuArray(E_area) \n", + "E_density= CuArray(E_density)\n", + "E_stiffness= CuArray(E_stiffness)\n", + "E_stress= CuArray(E_stress)\n", + "E_axis= CuArray(E_axis) \n", + "E_currentRestLength= CuArray(E_currentRestLength)\n", + "E_pos2= CuArray(E_pos2)\n", + "E_angle1v= CuArray(E_angle1v)\n", + "E_angle2v= CuArray(E_angle2v)\n", + "E_angle1= CuArray(E_angle1)\n", + "E_angle2= CuArray(E_angle2)\n", + "E_currentTransverseStrainSum=CuArray(E_currentTransverseStrainSum)\n", + "# E_stressTimeSteps=[]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# create dummy nodes and edges\n", + "# update edges (for all edges change int force for node1 and node1)\n", + "# update nodes" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "function doTimeStep(setup,dt,static,currentTimeStep,saveInterval)\n", + " \n", + "\n", + " if dt==0\n", + " return true\n", + " elseif (dt<0) \n", + " dt = recommendedTimeStep()\n", + " end\n", + "\n", + "# \t# if (collisions) updateCollisions();\n", + "# \tcollisions=false\n", + "\n", + "# \t# Euler integration:\n", + "# \tDiverged = false\n", + "# # for edge in edges\n", + " \n", + "\tfor i in 1:linkCount\n", + " \n", + " updateForces(setup,i,static)# element numbers??\n", + " \n", + " # todo: update forces and whatever\n", + " if axialStrain(true) > 100\n", + " Diverged = true; # catch divergent condition! (if any thread sets true we will fail, so don't need mutex...\n", + " end\n", + " end\n", + " \n", + " if Diverged\n", + " println(\"Divergedd!!!!!\")\n", + " return false\n", + " end\n", + " \n", + " for i in 1:voxCount\n", + " timeStep(dt,i,static,currentTimeStep)\n", + " # timeStep(dt,node,static,currentTimeStep)\n", + " if(!static&& currentTimeStep%saveInterval==0)\n", + " append!(N_posTimeSteps[i],[N_displacement[i]])\n", + " append!(N_angTimeSteps[i],[N_angle[i]])\n", + "\n", + " end\n", + " # todo: update linMom,angMom, orient and whatever\n", + " end\n", + "\n", + "\n", + " currentTimeStep = currentTimeStep+dt\n", + " return true\n", + "end" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "bench_gpu! (generic function with 1 method)" + ] + }, + "execution_count": 23, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "function trialGPU!(N_positionVGPU, N_restrainedGPU, vecGPU)\n", + " index = (blockIdx().x - 1) * blockDim().x + threadIdx().x\n", + " stride = blockDim().x * gridDim().x\n", + " ## @cuprintln(\"thread $index, block $stride\")\n", + " for i = index:stride:length(vecGPU)\n", + " @inbounds N_positionVGPU[i]=ifelse(N_restrainedGPU[i], N_positionVGPU[i], N_positionVGPU[i] +vecGPU[i] )\n", + " end\n", + " return\n", + "end\n", + "\n", + "# function trialGPU!(N_positionVGPU, N_restrainedGPU, vecGPU)\n", + "# i = (blockIdx().x-1) * blockDim().x + threadIdx().x\n", + "# N_positionVGPU[i]=ifelse(N_restrainedGPU[i], N_positionVGPU[i], N_positionVGPU[i] +vecGPU[i] )\n", + "# return\n", + "# end\n", + "\n", + "function bench_gpu!(N_positionVGPU, N_restrainedGPU, vecGPU)\n", + " N=length(vecGPU)\n", + " numblocks = ceil(Int, N/256)\n", + " CuArrays.@sync begin\n", + " @cuda threads=256 blocks=numblocks trialGPU!(N_positionVGPU, N_restrainedGPU, vecGPU)\n", + " end\n", + "end\n", + "\n", + "# @cuda threads=voxCount trialGPU(N_positionVGPU, N_restrainedGPU, vecGPU)\n", + "# N_positionVGPU" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "trialCPU! (generic function with 1 method)" + ] + }, + "execution_count": 18, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "function trialCPU!(N_positionV, N_restrained, vec)\n", + " for i in 1:length(vec)\n", + " @inbounds N_positionV[i]=ifelse(N_restrained[i], N_positionV[i], N_positionV[i] +vec[i] )\n", + " end\n", + " return\n", + "end\n", + "\n", + "# trialCPU!(N_positionV, N_restrained, vec)\n", + "# N_positionV" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "12-element CuArray{Vector3,1,Nothing}:\n", + " x:1.0, y:1.0, z:1.0\n", + " x:1.0, y:1.0, z:1.0\n", + " x:1.0, y:1.0, z:1.0\n", + " x:1.0, y:1.0, z:1.0\n", + " x:1.0, y:1.0, z:1.0\n", + " x:1.0, y:1.0, z:1.0\n", + " x:1.0, y:1.0, z:1.0\n", + " x:1.0, y:1.0, z:1.0\n", + " x:1.0, y:1.0, z:1.0\n", + " x:1.0, y:1.0, z:1.0\n", + " x:1.0, y:1.0, z:1.0\n", + " x:1.0, y:1.0, z:1.0" + ] + }, + "execution_count": 19, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "voxCount=12\n", + "\n", + "############# nodes\n", + "N_positionV=fill(Vector3(0,0,0),voxCount)\n", + "N_restrained=zeros(Bool, voxCount)\n", + "\n", + "N_restrainedGPU=CuArray(N_restrained)\n", + "N_positionVGPU=CuArray(N_positionV)\n", + "\n", + "vec = fill(Vector3(1,1,1),voxCount)\n", + "vecGPU = CuArray(vec)" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1\r\n", + "2\r\n", + "3\r\n", + "4\r\n", + "5\r\n", + "6\r\n", + "7\r\n", + "8\r\n", + "9\r\n", + "10\r\n", + "11\r\n", + "12\r\n" + ] + } + ], + "source": [ + "N=length(vecGPU)\n", + "numblocks = ceil(Int, N/12)\n", + "@cuda threads=12 blocks=numblocks trialGPU!(N_positionVGPU, N_restrainedGPU, vecGPU)\n", + "synchronize()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# @btime bench_gpu!(N_positionVGPU, N_restrainedGPU, vecGPU)\n", + "@btime bench_gpu!(N_positionVGPU, N_restrainedGPU, vecGPU)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "@btime trialCPU!(N_positionV, N_restrained, vec)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "num=[2^8,2^9,2^10]\n", + "resulstGPU=[34.89e-6,35.6e-6,37.3e-6]\n", + "resulstCPU=[347.437e-9,676.6e-9,1.38e-6]" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(Any[256, 512, 1024, 2048, 4096, 8192, 16384, 32768, 65536, 131072, 262144, 524288, 1048576, 2097152, 4194304, 8388608, 16777216, 33554432], Any[0.0002236, 0.0001802, 0.0001789, 0.000165599, 0.0001807, 0.0001797, 0.0001961, 0.0002399, 0.0003058, 0.0005876, 0.0006443, 0.0008724, 0.001016701, 0.001034, 0.0014529, 0.0021805, 0.003616799, 0.0067031], Any[5.0e-7, 7.0e-7, 1.4e-6, 2.8e-6, 5.6e-6, 1.1001e-5, 2.3101e-5, 4.68e-5, 9.52e-5, 0.000197001, 0.0004137, 0.000879599, 0.0016901, 0.0033103, 0.0067236, 0.0133556, 0.0272343, 0.053784501])" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "function bench()\n", + " num=[]\n", + " resultsGPU=[]\n", + " resultsCPU=[]\n", + " for i in 8:25\n", + " voxCount=2^i\n", + "\n", + " ############# nodes\n", + " N_positionV=fill(Vector3(0,0,0),voxCount)\n", + " N_restrained=zeros(Bool, voxCount)\n", + "\n", + " N_restrainedGPU=CuArray(N_restrained)\n", + " N_positionVGPU=CuArray(N_positionV)\n", + "\n", + " vec = fill(Vector3(1,1,1),voxCount)\n", + " vecGPU = CuArray(vec)\n", + " \n", + " res=@timed bench_gpu!(N_positionVGPU, N_restrainedGPU, vecGPU)\n", + " res1=@timed trialCPU!(N_positionV, N_restrained, vec)\n", + " \n", + " append!(num,voxCount)\n", + " append!(resultsGPU,res[2])\n", + " append!(resultsCPU,res1[2])\n", + " end\n", + " return num,resultsGPU,resultsCPU\n", + "end\n", + "num,resultsGPU,resultsCPU=bench()" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "data": { + "image/svg+xml": [ + "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n", + "<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" width=\"600\" height=\"400\" viewBox=\"0 0 2400 1600\">\n", + "<defs>\n", + " <clipPath id=\"clip1800\">\n", + " <rect x=\"0\" y=\"0\" width=\"2400\" height=\"1600\"/>\n", + " </clipPath>\n", + "</defs>\n", + "<path clip-path=\"url(#clip1800)\" d=\"\n", + "M0 1600 L2400 1600 L2400 0 L0 0 Z\n", + " \" fill=\"#ffffff\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n", + "<defs>\n", + " <clipPath id=\"clip1801\">\n", + " <rect x=\"480\" y=\"0\" width=\"1681\" height=\"1600\"/>\n", + " </clipPath>\n", + "</defs>\n", + "<path clip-path=\"url(#clip1800)\" d=\"\n", + "M180.66 1487.47 L2352.76 1487.47 L2352.76 47.2441 L180.66 47.2441 Z\n", + " \" fill=\"#ffffff\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n", + "<defs>\n", + " <clipPath id=\"clip1802\">\n", + " <rect x=\"180\" y=\"47\" width=\"2173\" height=\"1441\"/>\n", + " </clipPath>\n", + "</defs>\n", + "<polyline clip-path=\"url(#clip1802)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n", + " 242.119,1487.47 242.119,47.2441 \n", + " \"/>\n", + "<polyline clip-path=\"url(#clip1802)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n", + " 852.817,1487.47 852.817,47.2441 \n", + " \"/>\n", + "<polyline clip-path=\"url(#clip1802)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n", + " 1463.52,1487.47 1463.52,47.2441 \n", + " \"/>\n", + "<polyline clip-path=\"url(#clip1802)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n", + " 2074.21,1487.47 2074.21,47.2441 \n", + " \"/>\n", + "<polyline clip-path=\"url(#clip1802)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n", + " 180.66,1446.73 2352.76,1446.73 \n", + " \"/>\n", + "<polyline clip-path=\"url(#clip1802)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n", + " 180.66,1194.1 2352.76,1194.1 \n", + " \"/>\n", + "<polyline clip-path=\"url(#clip1802)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n", + " 180.66,941.48 2352.76,941.48 \n", + " \"/>\n", + "<polyline clip-path=\"url(#clip1802)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n", + " 180.66,688.857 2352.76,688.857 \n", + " \"/>\n", + "<polyline clip-path=\"url(#clip1802)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n", + " 180.66,436.234 2352.76,436.234 \n", + " \"/>\n", + "<polyline clip-path=\"url(#clip1802)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n", + " 180.66,183.611 2352.76,183.611 \n", + " \"/>\n", + "<polyline clip-path=\"url(#clip1800)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", + " 180.66,1487.47 2352.76,1487.47 \n", + " \"/>\n", + "<polyline clip-path=\"url(#clip1800)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", + " 180.66,1487.47 180.66,47.2441 \n", + " \"/>\n", + "<polyline clip-path=\"url(#clip1800)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", + " 242.119,1487.47 242.119,1470.19 \n", + " \"/>\n", + "<polyline clip-path=\"url(#clip1800)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", + " 852.817,1487.47 852.817,1470.19 \n", + " \"/>\n", + "<polyline clip-path=\"url(#clip1800)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", + " 1463.52,1487.47 1463.52,1470.19 \n", + " \"/>\n", + "<polyline clip-path=\"url(#clip1800)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", + " 2074.21,1487.47 2074.21,1470.19 \n", + " \"/>\n", + "<polyline clip-path=\"url(#clip1800)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", + " 180.66,1446.73 206.725,1446.73 \n", + " \"/>\n", + "<polyline clip-path=\"url(#clip1800)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", + " 180.66,1194.1 206.725,1194.1 \n", + " \"/>\n", + "<polyline clip-path=\"url(#clip1800)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", + " 180.66,941.48 206.725,941.48 \n", + " \"/>\n", + "<polyline clip-path=\"url(#clip1800)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", + " 180.66,688.857 206.725,688.857 \n", + " \"/>\n", + "<polyline clip-path=\"url(#clip1800)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", + " 180.66,436.234 206.725,436.234 \n", + " \"/>\n", + "<polyline clip-path=\"url(#clip1800)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", + " 180.66,183.611 206.725,183.611 \n", + " \"/>\n", + "<g clip-path=\"url(#clip1800)\">\n", + "<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:middle;\" transform=\"rotate(0, 242.119, 1541.47)\" x=\"242.119\" y=\"1541.47\">0</text>\n", + "</g>\n", + "<g clip-path=\"url(#clip1800)\">\n", + "<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:start;\" transform=\"rotate(0, 787.746, 1562.48)\" x=\"787.746\" y=\"1562.48\">1×10</text>\n", + "</g>\n", + "<g clip-path=\"url(#clip1800)\">\n", + "<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:38px; text-anchor:start;\" transform=\"rotate(0, 896.143, 1535.07)\" x=\"896.143\" y=\"1535.07\">7</text>\n", + "</g>\n", + "<g clip-path=\"url(#clip1800)\">\n", + "<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:start;\" transform=\"rotate(0, 1398.44, 1562.48)\" x=\"1398.44\" y=\"1562.48\">2×10</text>\n", + "</g>\n", + "<g clip-path=\"url(#clip1800)\">\n", + "<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:38px; text-anchor:start;\" transform=\"rotate(0, 1506.84, 1535.07)\" x=\"1506.84\" y=\"1535.07\">7</text>\n", + "</g>\n", + "<g clip-path=\"url(#clip1800)\">\n", + "<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:start;\" transform=\"rotate(0, 2009.14, 1562.48)\" x=\"2009.14\" y=\"1562.48\">3×10</text>\n", + "</g>\n", + "<g clip-path=\"url(#clip1800)\">\n", + "<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:38px; text-anchor:start;\" transform=\"rotate(0, 2117.54, 1535.07)\" x=\"2117.54\" y=\"1535.07\">7</text>\n", + "</g>\n", + "<g clip-path=\"url(#clip1800)\">\n", + "<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:end;\" transform=\"rotate(0, 156.66, 1464.23)\" x=\"156.66\" y=\"1464.23\">0.00</text>\n", + "</g>\n", + "<g clip-path=\"url(#clip1800)\">\n", + "<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:end;\" transform=\"rotate(0, 156.66, 1211.6)\" x=\"156.66\" y=\"1211.6\">0.01</text>\n", + "</g>\n", + "<g clip-path=\"url(#clip1800)\">\n", + "<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:end;\" transform=\"rotate(0, 156.66, 958.98)\" x=\"156.66\" y=\"958.98\">0.02</text>\n", + "</g>\n", + "<g clip-path=\"url(#clip1800)\">\n", + "<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:end;\" transform=\"rotate(0, 156.66, 706.357)\" x=\"156.66\" y=\"706.357\">0.03</text>\n", + "</g>\n", + "<g clip-path=\"url(#clip1800)\">\n", + "<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:end;\" transform=\"rotate(0, 156.66, 453.734)\" x=\"156.66\" y=\"453.734\">0.04</text>\n", + "</g>\n", + "<g clip-path=\"url(#clip1800)\">\n", + "<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:end;\" transform=\"rotate(0, 156.66, 201.111)\" x=\"156.66\" y=\"201.111\">0.05</text>\n", + "</g>\n", + "<polyline clip-path=\"url(#clip1802)\" style=\"stroke:#009af9; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", + " 242.135,1441.08 242.15,1442.17 242.182,1442.21 242.244,1442.54 242.369,1442.16 242.619,1442.19 243.12,1441.77 244.12,1440.67 246.121,1439 250.124,1431.88 \n", + " 258.128,1430.45 274.137,1424.69 306.155,1421.04 370.192,1420.6 498.264,1410.02 754.41,1391.64 1266.7,1355.36 2291.28,1277.39 \n", + " \"/>\n", + "<polyline clip-path=\"url(#clip1802)\" style=\"stroke:#e26f46; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", + " 242.135,1446.71 242.15,1446.71 242.182,1446.69 242.244,1446.66 242.369,1446.58 242.619,1446.45 243.12,1446.14 244.12,1445.54 246.121,1444.32 250.124,1441.75 \n", + " 258.128,1436.28 274.137,1424.51 306.155,1404.03 370.192,1363.1 498.264,1276.87 754.41,1109.33 1266.7,758.725 2291.28,88.0053 \n", + " \"/>\n", + "<path clip-path=\"url(#clip1800)\" d=\"\n", + "M1936.45 312.204 L2280.76 312.204 L2280.76 130.764 L1936.45 130.764 Z\n", + " \" fill=\"#ffffff\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n", + "<polyline clip-path=\"url(#clip1800)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", + " 1936.45,312.204 2280.76,312.204 2280.76,130.764 1936.45,130.764 1936.45,312.204 \n", + " \"/>\n", + "<polyline clip-path=\"url(#clip1800)\" style=\"stroke:#009af9; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", + " 1960.45,191.244 2104.45,191.244 \n", + " \"/>\n", + "<g clip-path=\"url(#clip1800)\">\n", + "<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:start;\" transform=\"rotate(0, 2128.45, 208.744)\" x=\"2128.45\" y=\"208.744\">GPU</text>\n", + "</g>\n", + "<polyline clip-path=\"url(#clip1800)\" style=\"stroke:#e26f46; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", + " 1960.45,251.724 2104.45,251.724 \n", + " \"/>\n", + "<g clip-path=\"url(#clip1800)\">\n", + "<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:start;\" transform=\"rotate(0, 2128.45, 269.224)\" x=\"2128.45\" y=\"269.224\">CPU</text>\n", + "</g>\n", + "</svg>\n" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "plot(num,[resultsGPU resultsCPU],label = [\"GPU\" \"CPU\"])" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "N=100\n", + "function repeatGPU(N)\n", + " for i in 1:N\n", + " @cuda threads=voxCount trialGPU(N_positionVGPU, N_restrainedGPU, vecGPU)\n", + " end\n", + "end\n", + "@btime repeatGPU(N)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "function repeatCPU(N)\n", + " for i in 1:N\n", + " trialCPU!(N_positionV, N_restrained, vec)\n", + " end\n", + "end\n", + "@btime repeatCPU(N)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Trial 2" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "N_positionV" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Julia 1.2.0", + "language": "julia", + "name": "julia-1.2" + }, + "language_info": { + "file_extension": ".jl", + "mimetype": "application/julia", + "name": "julia", + "version": "1.2.0" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/01_Code/physical_computing_interface/simulation/julia/parallelFEA.jl b/01_Code/physical_computing_interface/simulation/julia/parallelFEA.jl new file mode 100644 index 0000000000000000000000000000000000000000..336f29ad5eb58aa877271ed3722e9c77e841948f --- /dev/null +++ b/01_Code/physical_computing_interface/simulation/julia/parallelFEA.jl @@ -0,0 +1,1273 @@ +using LinearAlgebra +using Plots +import JSON +# import Pkg; Pkg.add("Quaternions") +# using Quaternions +# import Pkg; Pkg.add("Rotations") +using StaticArrays, Rotations +# BASED ON https://github.com/jonhiller/Voxelyze + + +function simulateParallel(setup,numTimeSteps,dt,static=true,saveInterval=10) + initialize(setup) + for i in 1:numTimeSteps + println("Timestep:",i) + doTimeStep(setup,dt,static,i,saveInterval); + end +end + +function initialize(setup) + nodes = setup["nodes"] + edges = setup["edges"] + # pre-calculate current position + for node in nodes + # element=parse(Int,node["id"][2:end]) + + append!(N_position,[[node["position"]["x"] node["position"]["y"] node["position"]["z"]]]) + append!(N_degrees_of_freedom,[node["degrees_of_freedom"]]) + append!(N_restrained_degrees_of_freedom, [node["restrained_degrees_of_freedom"]]) + append!(N_displacement,[[node["displacement"]["x"] node["displacement"]["y"] node["displacement"]["z"]]]) + append!(N_angle,[[node["angle"]["x"] node["angle"]["y"] node["angle"]["z"]]]) + append!(N_force,[[node["force"]["x"] node["force"]["y"] node["force"]["z"]]]) + append!(N_currPosition,[[node["position"]["x"] node["position"]["y"] node["position"]["z"]]]) + append!(N_orient,[Quat(1.0,0.0,0.0,0.0)])#quat + append!(N_linMom,[[0 0 0]]) + append!(N_angMom,[[0 0 0]]) + append!(N_intForce,[[0 0 0]]) + append!(N_intMoment,[[0 0 0]]) + append!(N_moment,[[0 0 0]]) + + # for dynamic simulations + append!(N_posTimeSteps,[[]]) + append!(N_angTimeSteps,[[]]) + + end + # pre-calculate the axis + for edge in edges + # element=parse(Int,edge["id"][2:end]) + + # find the nodes that the lements connects + fromNode = nodes[edge["source"]+1] + toNode = nodes[edge["target"]+1] + + + node1 = [fromNode["position"]["x"] fromNode["position"]["y"] fromNode["position"]["z"]] + node2 = [toNode["position"]["x"] toNode["position"]["y"] toNode["position"]["z"]] + + length=norm(node2-node1) + axis=normalize(collect(Iterators.flatten(node2-node1))) + + append!(E_source,[edge["source"]+1]) + append!(E_target,[edge["target"]+1]) + append!(E_area,[edge["area"]]) + append!(E_density,[edge["density"]]) + append!(E_stiffness,[edge["stiffness"]]) + append!(E_stress,[0]) + append!(E_axis,[axis]) + append!(E_currentRestLength,[length]) + append!(E_pos2,[[0 0 0]]) + append!(E_angle1v,[[0 0 0]]) + append!(E_angle2v,[[0 0 0]]) + append!(E_angle1,[Quat(1.0,0,0,0)]) #quat + append!(E_angle2,[Quat(1.0,0,0,0)]) #quat + append!(E_currentTransverseStrainSum,[0]) + + # for dynamic simulations + append!(E_stressTimeSteps,[[]]) + + end + +end + +function doTimeStep(setup,dt,static,currentTimeStep,saveInterval) + + nodes = setup["nodes"] + edges = setup["edges"] + voxCount=size(nodes)[1] + linkCount=size(edges)[1] + + if dt==0 + return true + elseif (dt<0) + dt = recommendedTimeStep() + end + + # if (collisions) updateCollisions(); + collisions=false + + # Euler integration: + Diverged = false + # for edge in edges + + for i in 1:linkCount + # fromNode = nodes[edge["source"]+1] + # toNode = nodes[edge["target"]+1] + # node1 = [fromNode["position"]["x"] fromNode["position"]["y"] fromNode["position"]["z"]] + # node2 = [toNode["position"]["x"] toNode["position"]["y"] toNode["position"]["z"]] + # updateForces(setup,edge,node1,node2,static)# element numbers?? + updateForces(setup,i,static)# element numbers?? + # todo: update forces and whatever + if axialStrain(true) > 100 + Diverged = true; # catch divergent condition! (if any thread sets true we will fail, so don't need mutex... + end + end + + if Diverged + println("Divergedd!!!!!") + return false + end + + for i in 1:voxCount + timeStep(dt,i,static,currentTimeStep) + # timeStep(dt,node,static,currentTimeStep) + if(!static&& currentTimeStep%saveInterval==0) + append!(N_posTimeSteps[i],[N_displacement[i]]) + append!(N_angTimeSteps[i],[N_angle[i]]) + + end + # todo: update linMom,angMom, orient and whatever + end + + + currentTimeStep = currentTimeStep+dt + return true +end + +function updateForces(setup,edge,static=true) + + # pVNeg=new THREE.Vector3(node1.position.x,node1.position.y,node1.position.z); + # pVPos=new THREE.Vector3(node2.position.x,node2.position.y,node2.position.z); + # currentRestLength=pVPos.clone().sub(pVNeg).length(); + # edge.currentRestLength=currentRestLength; # todo make sure updated + + + node1=E_source[edge] + node2=E_target[edge] + + currentRestLength=E_currentRestLength[edge] + + + pVNeg=copy(N_currPosition[node1])# todo change to be linked to edge not node + pVPos=copy(N_currPosition[node2])# todo change to be linked to edge not node + + + + # Vec3D<double> three + oldPos2 = copy(E_pos2[edge]) + + oldAngle1v = copy(E_angle1v[edge]) + oldAngle2v = copy(E_angle2v[edge])# remember the positions/angles from last timestep to calculate velocity + # var oldAngle1v=new THREE.Vector3(node1.angle.x,node1.angle.y,node1.angle.z);//? + # var oldAngle2v=new THREE.Vector3(node2.angle.x,node2.angle.y,node2.angle.z); //?? + + + totalRot= orientLink(edge) # sets pos2, angle1, angle2 /*restLength*/ + + + + dPos2=0.5*(copy(E_pos2[edge])-oldPos2) + dAngle1=0.5*(copy(E_angle1v[edge])-oldAngle1v) + dAngle2=0.5*(copy(E_angle2v[edge])-oldAngle2v) + + + + # if volume effects... + # if (!mat->isXyzIndependent() || currentTransverseStrainSum != 0) + # updateTransverseInfo(); //currentTransverseStrainSum != 0 catches when we disable poissons mid-simulation + + + _stress=updateStrain((E_pos2[edge][1]/E_currentRestLength[edge]),E_stiffness[edge]) + # var _stress=updateStrain(1.0); + + + E_stress[edge] = _stress + if !static + append!(E_stressTimeSteps[edge],[_stress]) + end + + ######### check this + if setup["viz"]["minStress"]>_stress + setup["viz"]["minStress"]=_stress + elseif setup["viz"]["maxStress"]<_stress + setup["viz"]["maxStress"]=_stress + end + + + # if (isFailed()){forceNeg = forcePos = momentNeg = momentPos = Vec3D<double>(0,0,0); return;} + + # var b1=mat->_b1, b2=mat->_b2, b3=mat->_b3, a2=mat->_a2; //local copies //todo get from where i had + + l = currentRestLength # ?? + rho = E_density[edge] + A = E_area[edge] + E = E_stiffness[edge] # youngs modulus + G=1.0 # todo shear_modulus + ixx = 1.0 # todo section ixx + I=1.0 + iyy = 1.0 # todo section.iyy// + # var l0=length.dataSync(); + J=1.0;# todo check + # var l02 = l0 * l0; + # var l03 = l0 * l0 * l0; + b1= 12*E*I/(l*l*l) + b2= 6*E*I/(l*l) + b3= 2*E*I/(l) + a1= E*A/l + a2= G*J/l + nu=0 + + b1= 5e6 + b2= 1.25e7 + b3= 2.08333e+07 + a1= E*A/l + a2= 1.04167e+07 + + L = 5; + a1 = E*L # EA/L : Units of N/m + a2 = E * L*L*L / (12.0*(1+nu)) # GJ/L : Units of N-m + b1 = E*L # 12EI/L^3 : Units of N/m + b2 = E*L*L/2.0 # 6EI/L^2 : Units of N (or N-m/m: torque related to linear distance) + b3 = E*L*L*L/6.0 # 2EI/L : Units of N-m + # console.log("currentRestLength:"+currentRestLength); + # console.log("b1:"+b1/10e6); + # console.log("b2:"+b2/10e7); + # console.log("b3:"+b3/10e7); + # console.log("a2:"+a2/10e7); + # var b1= 5e6; + # var b2= 1.25e7; + # var b3= 2.08333e+07; + # var a1= E*A/l; + # var a2= 1.04167e+07; + + currentTransverseArea=25.0 # todo ?? later change + currentTransverseArea=A + + # Beam equations. All relevant terms are here, even though some are zero for small angle and others are zero for large angle (profiled as negligible performance penalty) + forceNeg = [(_stress*currentTransverseArea) (b1*E_pos2[edge][2]-b2*(E_angle1v[edge][3] + E_angle2v[edge][3])) (b1*E_pos2[edge][3] + b2*(E_angle1v[edge][2] + E_angle2v[edge][2]))] # Use Curstress instead of -a1*Pos2.x to account for non-linear deformation + forcePos = -forceNeg; + + momentNeg = [(a2*(E_angle2v[edge][1]-E_angle1v[edge][1])) (-b2*E_pos2[edge][3]-b3*(2*E_angle1v[edge][2]+E_angle2v[edge][2])) (b2*E_pos2[edge][2] - b3*(2*E_angle1v[edge][3] + E_angle2v[edge][3]))] + momentPos = [(a2*(E_angle1v[edge][1]-E_angle2v[edge][1])) (-b2*E_pos2[edge][3]- b3*(E_angle1v[edge][2]+2*E_angle2v[edge][2])) (b2*E_pos2[edge][2] - b3*(E_angle1v[edge][3] + 2*E_angle2v[edge][3]))] + + + # //local damping: + # if (isLocalVelocityValid()){ //if we don't have the basis for a good damping calculation, don't do any damping. + # float sqA1=mat->_sqA1, sqA2xIp=mat->_sqA2xIp,sqB1=mat->_sqB1, sqB2xFMp=mat->_sqB2xFMp, sqB3xIp=mat->_sqB3xIp; + # Vec3D<double> posCalc( sqA1*dPos2.x, + # sqB1*dPos2.y - sqB2xFMp*(dAngle1.z+dAngle2.z), + # sqB1*dPos2.z + sqB2xFMp*(dAngle1.y+dAngle2.y)); + + # forceNeg += pVNeg->dampingMultiplier()*posCalc; + # forcePos -= pVPos->dampingMultiplier()*posCalc; + + # momentNeg -= 0.5*pVNeg->dampingMultiplier()*Vec3D<>( -sqA2xIp*(dAngle2.x - dAngle1.x), + # sqB2xFMp*dPos2.z + sqB3xIp*(2*dAngle1.y + dAngle2.y), + # -sqB2xFMp*dPos2.y + sqB3xIp*(2*dAngle1.z + dAngle2.z)); + # momentPos -= 0.5*pVPos->dampingMultiplier()*Vec3D<>( sqA2xIp*(dAngle2.x - dAngle1.x), + # sqB2xFMp*dPos2.z + sqB3xIp*(dAngle1.y + 2*dAngle2.y), + # -sqB2xFMp*dPos2.y + sqB3xIp*(dAngle1.z + 2*dAngle2.z)); + + # } + # else setBoolState(LOCAL_VELOCITY_VALID, true); //we're good for next go-around unless something changes + + # transform forces and moments to local voxel coordinates + smallAngle=false # ?? todo check + + + if !smallAngle # ?? chech + forceNeg = RotateVec3DInv(E_angle1[edge],forceNeg) + momentNeg = RotateVec3DInv(E_angle1[edge],momentNeg) + end + + + + + + forcePos = RotateVec3DInv(E_angle2[edge],forcePos); + momentPos = RotateVec3DInv(E_angle2[edge],momentPos); + + # println(momentPos) + + forceNeg =toAxisOriginalVector3(forceNeg,E_axis[edge]); + forcePos =toAxisOriginalVector3(forcePos,E_axis[edge]); + + momentNeg=toAxisOriginalQuat(momentNeg,E_axis[edge]);# TODOO CHECKKKKKK + momentPos=toAxisOriginalQuat(momentPos,E_axis[edge]); + + # println(momentPos[2]," ",momentPos[3]," ",momentPos[4]," ",momentPos[1]," ") + + N_intForce[node1] =N_intForce[node1] +(forceNeg) ; + N_intForce[node2] =N_intForce[node2] +(forcePos) ; + # println(N_intMoment[node2]) + N_intMoment[node1]=[(N_intMoment[node1][1]+momentNeg[2]) (N_intMoment[node1][2]+momentNeg[3]) (N_intMoment[node2][3]+momentPos[4])]; + N_intMoment[node2]=[(N_intMoment[node2][1]+momentPos[2]) (N_intMoment[node2][2]+momentPos[3]) (N_intMoment[node2][3]+momentPos[4])]; + # println(N_intMoment[node2]) + # assert(!(forceNeg.x != forceNeg.x) || !(forceNeg.y != forceNeg.y) || !(forceNeg.z != forceNeg.z)); //assert non QNAN + # assert(!(forcePos.x != forcePos.x) || !(forcePos.y != forcePos.y) || !(forcePos.z != forcePos.z)); //assert non QNAN + + +end + +function orientLink( edge) # updates pos2, angle1, angle2, and smallAngle //Quat3D<double> /*double restLength*/ + node1=E_source[edge] + node2=E_target[edge] + + currentRestLength=E_currentRestLength[edge] + pVNeg=copy(N_currPosition[node1])# todo change to be linked to edge not node + pVPos=copy(N_currPosition[node2])# todo change to be linked to edge not node + + pos2 = toAxisXVector3(pVPos-pVNeg,E_axis[edge]) # digit truncation happens here... + # pos2.x = Math.round(pos2.x * 1e4) / 1e4; + angle1 = toAxisXQuat(N_orient[node1],E_axis[edge]) + angle2 = toAxisXQuat(N_orient[node2],E_axis[edge]) + # println(angle1[2]," ",angle1[3]," ",angle1[4]," ",angle1[1]) + + totalRot = conjugate(angle1) #keep track of the total rotation of this bond (after toAxisX()) # Quat3D<double> + # println(totalRot.x," ",totalRot.y," ",totalRot.z," ",totalRot.w) + pos2 = RotateVec3D(totalRot,pos2) + + + + # angle2 = copy(totalRot) .* angle2 # todo .* + angle2=Quat(angle2.w*totalRot.w,angle2.x*totalRot.x,angle2.y*totalRot.y,angle2.z*totalRot.z) + angle1 = Quat(1.0,0.0,0.0,0.0)#new THREE.Quaternion() #zero for now... + + + # small angle approximation? + # var SmallTurn = ((Math.abs(pos2.z)+Math.abs(pos2.y))/pos2.x); + # var ExtendPerc = (Math.abs(1-pos2.x/currentRestLength)); + # if (!smallAngle /*&& angle2.IsSmallAngle()*/ && SmallTurn < SA_BOND_BEND_RAD && ExtendPerc < SA_BOND_EXT_PERC){ + # smallAngle = true; + # setBoolState(LOCAL_VELOCITY_VALID, false); + # } + # else if (smallAngle && (/*!angle2.IsSmallishAngle() || */SmallTurn > HYSTERESIS_FACTOR*SA_BOND_BEND_RAD || ExtendPerc > HYSTERESIS_FACTOR*SA_BOND_EXT_PERC)){ + # smallAngle = false; + # setBoolState(LOCAL_VELOCITY_VALID, false); + # } + + smallAngle=true #todo later remove + + if (smallAngle) #Align so Angle1 is all zeros + pos2[1] =pos2[1]- currentRestLength #only valid for small angles + else #Large angle. Align so that Pos2.y, Pos2.z are zero. + # FromAngleToPosX(angle1,pos2) #get the angle to align Pos2 with the X axis + # totalRot = angle1.clone().multiply(totalRot) #update our total rotation to reflect this + # angle2 = angle1.clone().multiply( angle2) #rotate angle2 + # pos2 = new THREE.Vector3(pos2.length() - currentRestLength, 0, 0); + end + + + + angle1v = ToRotationVector(angle1) + angle2v = ToRotationVector(angle2) + + # assert(!(angle1v.x != angle1v.x) || !(angle1v.y != angle1v.y) || !(angle1v.z != angle1v.z)); # assert non QNAN + # assert(!(angle2v.x != angle2v.x) || !(angle2v.y != angle2v.y) || !(angle2v.z != angle2v.z)); # assert non QNAN + + E_pos2[edge]=copy(pos2) + E_angle1v[edge]=copy(angle1v) + E_angle2v[edge]=copy(angle2v) + E_angle1[edge]=copy(angle1) + E_angle2[edge]=copy(angle2) + + + + return totalRot +end + +function RotateVec3D(a, f) + fx= (f[1]==-0) ? 0 : f[1] + fy= (f[2]==-0) ? 0 : f[2] + fz= (f[3]==-0) ? 0 : f[3] + # fx= f[1] + # fy= f[2] + # fz= f[3] + tw = fx*a.x + fy*a.y + fz*a.z + tx = fx*a.w - fy*a.z + fz*a.y + ty = fx*a.z + fy*a.w - fz*a.x + tz = -fx*a.y + fy*a.x + fz*a.w + + return [(a.w*tx+a.x*tw+a.y*tz-a.z*ty) (a.w*ty-a.x*tz+a.y*tw+a.z*tx) (a.w*tz+a.x*ty-a.y*tx + a.z*tw)] +end +#!< Returns a vector representing the specified vector "f" rotated by this quaternion. @param[in] f The vector to transform. +function RotateVec3DInv(a, f) + fx=f[1] + fy=f[2] + fz=f[3] + tw = a.x*fx + a.y*fy + a.z*fz + tx = a.w*fx - a.y*fz + a.z*fy + ty = a.w*fy + a.x*fz - a.z*fx + tz = a.w*fz - a.x*fy + a.y*fx + return [(tw*a.x + tx*a.w + ty*a.z - tz*a.y) (tw*a.y - tx*a.z + ty*a.w + tz*a.x) (tw*a.z + tx*a.y - ty*a.x + tz*a.w)] +end +#!< Returns a vector representing the specified vector "f" rotated by the inverse of this quaternion. This is the opposite of RotateVec3D. @param[in] f The vector to transform. + + +function setFromUnitVectors(vFrom, vTo ) + # assumes direction vectors vFrom and vTo are normalized + EPS = 0.000001; + r = dot(vFrom,vTo)+1 + + if r < EPS + r = 0; + if abs( vFrom.x ) > abs( vFrom.z ) + qx = - vFrom[2] + qy = vFrom[1] + qz = 0 + qw = r + else + qx = 0 + qy = - vFrom[3] + qz = vFrom[2] + qw = r + end + else + # crossVectors( vFrom, vTo ); // inlined to avoid cyclic dependency on Vector3 + qx = vFrom[2] * vTo[3] - vFrom[3] * vTo[2] + qy = vFrom[3] * vTo[1] - vFrom[1] * vTo[3] + qz = vFrom[1] * vTo[2] - vFrom[2] * vTo[1] + qw = r + + end + qx= (qx==-0) ? 0 : qx + qy= (qy==-0) ? 0 : qy + qz= (qz==-0) ? 0 : qz + qw= (qw==-0) ? 0 : qw + nn=normalize(collect(Iterators.flatten([qw,qx,qy,qz]))) + return [nn[1] nn[2] nn[3] nn[4]] + # return normalizeQ(Quat(qw,qx,qy,qz)) + # return Quat(nn[1], nn[2], nn[3], nn[4]) + +end + +function normalizeQ(q) + l = norm(q) + if l === 0 + qx = 0 + qy = 0 + qz = 0 + qw = 1 + else + l = 1 / l + qx = q.x * l + qy = q.y * l + qz = q.z * l + qw = q.w * l + end + return Quat(qw,qx,qy,qz) +end + +function conjugate(q) + x= (-q.x==-0) ? 0 : -q.x + y= (-q.y==-0) ? 0 : -q.y + z= (-q.z==-0) ? 0 : -q.z + + return Quat(q.w, x, y, z) +end +#Returns a quaternion that is the conjugate of this quaternion. This quaternion is not modified. + +function applyQuaternion(q1,q2) + x = q1[2] + y = q1[3] + z = q1[4] + w = q1[1] + qx = q2[2] + qy = q2[3] + qz = q2[4] + qw = q2[1] + + # calculate quat * vector + + ix = qw * x + qy * z - qz * y + iy = qw * y + qz * x - qx * z + iz = qw * z + qx * y - qy * x + iw = - qx * x - qy * y - qz * z + + # calculate result * inverse quat + + xx = ix * qw + iw * - qx + iy * - qz - iz * - qy + yy = iy * qw + iw * - qy + iz * - qx - ix * - qz + zz = iz * qw + iw * - qz + ix * - qy - iy * - qx + + mm=normalize(collect(Iterators.flatten([xx yy zz]))) + return [mm[1] mm[2] mm[3]] +end + +function applyQuaternion1(e,q2) + x = e[1] + y = e[2] + z = e[3] + + qx = q2[2] + qy = q2[3] + qz = q2[4] + qw = q2[1] + + # calculate quat * vector + + ix = qw * x + qy * z - qz * y + iy = qw * y + qz * x - qx * z + iz = qw * z + qx * y - qy * x + iw = - qx * x - qy * y - qz * z + + # calculate result * inverse quat + + xx = ix * qw + iw * - qx + iy * - qz - iz * - qy + yy = iy * qw + iw * - qy + iz * - qx - ix * - qz + zz = iz * qw + iw * - qz + ix * - qy - iy * - qx + + return [xx yy zz] +end + +function setQuaternionFromEuler(euler) + x=euler[1] + y=euler[2] + z=euler[3] + + c1 = cos( x / 2 ) + c2 = cos( y / 2 ) + c3 = cos( z / 2 ) + + s1 = sin( x / 2 ) + s2 = sin( y / 2 ) + s3 = sin( z / 2 ) + + x = s1 * c2 * c3 + c1 * s2 * s3 + y = c1 * s2 * c3 - s1 * c2 * s3 + z = c1 * c2 * s3 + s1 * s2 * c3 + w = c1 * c2 * c3 - s1 * s2 * s3 + + return [w x y z] +end + +function quatToMatrix( quaternion ) + + te = zeros(16) + + x = quaternion[2] + y = quaternion[3] + z = quaternion[4] + w = quaternion[1] + + x2 = x + x + y2 = y + y + z2 = z + z + xx = x * x2 + xy = x * y2 + xz = x * z2 + yy = y * y2 + yz = y * z2 + zz = z * z2 + wx = w * x2 + wy = w * y2 + wz = w * z2 + + sx = 1 + sy = 1 + sz = 1 + + te[ 1 ] = ( 1 - ( yy + zz ) ) * sx + te[ 2 ] = ( xy + wz ) * sx + te[ 3 ] = ( xz - wy ) * sx + te[ 4 ] = 0; + + te[ 5 ] = ( xy - wz ) * sy + te[ 6 ] = ( 1 - ( xx + zz ) ) * sy + te[ 7 ] = ( yz + wx ) * sy + te[ 8 ] = 0; + + te[ 9 ] = ( xz + wy ) * sz + te[ 10 ] = ( yz - wx ) * sz + te[ 11 ] = ( 1 - ( xx + yy ) ) * sz + te[ 12 ] = 0 + + te[ 13 ] = 0 #position.x; + te[ 14 ] = 0 #position.y; + te[ 15 ] = 0 #position.z; + te[ 16 ] = 1 + + return te + +end + +function setFromRotationMatrix(m) + te = m + m11 = (te[ 1 ]== -0.0) ? 0.0 : te[ 1 ] + m12 = (te[ 5 ]== -0.0) ? 0.0 : te[ 5 ] + m13 = (te[ 9 ]== -0.0) ? 0.0 : te[ 9 ] + m21 = (te[ 2 ]== -0.0) ? 0.0 : te[ 2 ] + m22 = (te[ 6 ]== -0.0) ? 0.0 : te[ 6 ] + m23 = (te[ 10]== -0.0) ? 0.0 : te[ 10] + m31 = (te[ 3 ]== -0.0) ? 0.0 : te[ 3 ] + m32 = (te[ 7 ]== -0.0) ? 0.0 : te[ 7 ] + m33 = (te[ 11]== -0.0) ? 0.0 : te[ 11] + + m11 = te[ 1 ] + m12 = te[ 5 ] + m13 = te[ 9 ] + m21 = te[ 2 ] + m22 = te[ 6 ] + m23 = te[ 10] + m31 = te[ 3 ] + m32 = te[ 7 ] + m33 = te[ 11] + + + + y = asin( clamp( m13, - 1, 1 ) ) + + if ( abs( m13 ) < 0.9999999 ) + + x = atan( - m23, m33 ) + z = atan( - m12, m11 )#-m12, m11 + # if(m23==0.0) + # x = atan( m23, m33 ) + # end + # if(m12==0.0) + # z = atan( m12, m11 ) + # end + + else + + x = atan( m32, m22 ) + z = 0; + + end + + return [x y z] + +end + +function toAxisOriginalVector3(pV,axis) + # xaxis=[1 0 0] + + # vector=copy(axis) + # vector=normalize(collect(Iterators.flatten(vector))) + + # p = SVector(pV[1],pV[2], pV[3]) + # q=setFromUnitVectors(xaxis, vector) + + # v= q * p + # return [v[1] v[2] v[3]] + + xaxis=[1 0 0] + + vector=copy(axis) + vector=normalize(collect(Iterators.flatten(vector))) + + p = SVector(pV[1],pV[2], pV[3]) + + q=setFromUnitVectors(xaxis, vector) + + qq=Quat(q[1],q[2],q[3],q[4]) + d=17 + qw=round(q[1], digits=d) + qx=round(q[2], digits=d) + qy=round(q[3], digits=d) + qz=round(q[4], digits=d) + + rot=setFromRotationMatrix(copy(quatToMatrix( copy([qw qx qy qz]) ))) + + return applyQuaternion1( copy(pV) ,setQuaternionFromEuler(copy(rot)) ) +end + +function toAxisXVector3(pV,axis) #TODO CHANGE + # xaxis=[1 0 0] + # vector=copy(axis) + # vector=normalize(collect(Iterators.flatten(vector))) + # p = SVector(pV[1],pV[2], pV[3]) + # q=setFromUnitVectors(vector,xaxis) + + # v= q * p + # return [v[1] v[2] v[3]] + + xaxis=[1 0 0] + + vector=copy(axis) + vector=normalize(collect(Iterators.flatten(vector))) + + p = SVector(pV[1],pV[2], pV[3]) + + q=setFromUnitVectors(vector,xaxis) + + qq=Quat(q[1],q[2],q[3],q[4]) + d=17 + qw=round(q[1], digits=d) + qx=round(q[2], digits=d) + qy=round(q[3], digits=d) + qz=round(q[4], digits=d) + + + rot=setFromRotationMatrix(copy(quatToMatrix( copy([qw qx qy qz]) ))) + + + return applyQuaternion1( copy(pV) ,setQuaternionFromEuler(copy(rot)) ) +end +#transforms a vec3D in the original orientation of the bond to that as if the bond was in +X direction + +function toAxisOriginalQuat(pQ,axis) + # xaxis=[1 0 0] + # vector=copy(axis) + # vector=normalize(collect(Iterators.flatten(vector))) + + # p = SVector(pQ[1],pQ[2], pQ[3]) + # q=setFromUnitVectors(xaxis, vector) + + # v=q * p + # return Quat(1.0,v[1],v[2],v[3]) + + xaxis=[1 0 0] + + vector=copy(axis) + vector=normalize(collect(Iterators.flatten(vector))) + + + p = SVector(pQ[1],pQ[2], pQ[3]) + + q=setFromUnitVectors(xaxis,vector) + + qq=Quat(q[1],q[2],q[3],q[4]) + d=17 + qw=round(q[1], digits=d) + qx=round(q[2], digits=d) + qy=round(q[3], digits=d) + qz=round(q[4], digits=d) + + rot=setFromRotationMatrix(copy(quatToMatrix( copy([qw qx qy qz]) ))) + v=applyQuaternion1( copy([pQ[1] pQ[2] pQ[3]]) ,setQuaternionFromEuler(copy(rot)) ) + + return [1.0 v[1] v[2] v[3]] + +end + +function toAxisXQuat(pQ,axis) + # xaxis=[1 0 0] + # vector=copy(axis) + # vector=normalize(collect(Iterators.flatten(vector))) + + # p = SVector(q.x,q.y, q.z) + # q=setFromUnitVectors(vector,xaxis) + + # v=q * p + # return Quat(q.w,v[1],v[2],v[3]) + + xaxis=[1 0 0] + + vector=copy(axis) + vector=normalize(collect(Iterators.flatten(vector))) + + p = SVector(pQ.x,pQ.y, pQ.z) + + q=setFromUnitVectors(vector,xaxis) + + qq=Quat(q[1],q[2],q[3],q[4]) + d=17 + qw=round(q[1], digits=d) + qx=round(q[2], digits=d) + qy=round(q[3], digits=d) + qz=round(q[4], digits=d) + + rot=setFromRotationMatrix(copy(quatToMatrix( copy([qw qx qy qz]) ))) + v=applyQuaternion1( copy([pQ.x pQ.y pQ.z ]) ,setQuaternionFromEuler(copy(rot)) ) + return Quat(1.0,v[1],v[2],v[3]) + # return [1.0 v[1] v[2] v[3]] +end +#transforms a vec3D in the original orientation of the bond to that as if the bond was in +X direction + + +function ToRotationVector(a) + if (a.w >= 1.0 || a.w <= -1.0) + return [0 0 0] + end + squareLength = 1.0-a.w*a.w; # because x*x + y*y + z*z + w*w = 1.0, but more susceptible to w noise (when + SLTHRESH_ACOS2SQRT= 2.4e-3; # SquareLength threshhold for when we can use square root optimization for acos. From SquareLength = 1-w*w. (calculate according to 1.0-W_THRESH_ACOS2SQRT*W_THRESH_ACOS2SQRT + + if (squareLength < SLTHRESH_ACOS2SQRT) # ??????? + return [a.x a.y a.z] *(2.0*sqrt((2-2*a.w)/squareLength)); # acos(w) = sqrt(2*(1-x)) for w close to 1. for w=0.001, error is 1.317e-6 + else + return [a.x a.y a.z] * (2.0*acos(a.w)/sqrt(squareLength)); + end +end +# !< Returns a rotation vector representing this quaternion rotation. Adapted from http://www.euclideanspace.com/maths/geometry/rotations/conversions/quaternionToAngle/ + + +function FromRotationVector(VecIn) + theta=VecIn/2.0 + thetaMag2=norm(theta)*norm(theta) + DBL_EPSILONx24 =5.328e-15 + if thetaMag2*thetaMag2 < DBL_EPSILONx24 + qw=1.0 - 0.5*thetaMag2 + s=1.0 - thetaMag2 / 6.0 + else + thetaMag = sqrt(thetaMag2) + qw=cos(thetaMag) + s=sin(thetaMag) / thetaMag + end + qx=theta[1]*s + qy=theta[2]*s + qz=theta[3]*s; + + return Quat(qw,qx,qy,qz) +end + + +function FromAngleToPosX(a, RotateFrom) #highly optimized at the expense of readability + + SMALL_ANGLE_RAD= 1.732e-2 # Angles less than this get small angle approximations. To get: Root solve atan(t)/t-1+MAX_ERROR_PERCENT. From: MAX_ERROR_PERCENT = (t-atan(t))/t + SMALL_ANGLE_W =0.9999625 # quaternion W value corresponding to a SMALL_ANGLE_RAD. To calculate, cos(SMALL_ANGLE_RAD*0.5). + W_THRESH_ACOS2SQRT= 0.9988 # Threshhold of w above which we can approximate acos(w) with sqrt(2-2w). To get: Root solve 1-sqrt(2-2wt)/acos(wt) - MAX_ERROR_PERCENT. From MAX_ERROR_PERCENT = (acos(wt)-sqrt(2-2wt))/acos(wt) + + + if (RotateFrom[1]==0 && RotateFrom[2]==0 && RotateFrom[3]==0) + return 0 #leave off if it slows down too much!! + end + + # Catch and handle small angle: + YoverX = RotateFrom[2]/RotateFrom[1] + ZoverX = RotateFrom[3]/RotateFrom[1] + if (YoverX<SMALL_ANGLE_RAD && YoverX>-SMALL_ANGLE_RAD && ZoverX<SMALL_ANGLE_RAD && ZoverX>-SMALL_ANGLE_RAD) # ??? //Intercept small angle and zero angle + ax=0 + ay=0.5*ZoverX + az=-0.5*YoverX + aw = 1+0.5*(-a.y*a.y-a.z*a.z) # w=sqrt(1-x*x-y*y), small angle sqrt(1+x) ~= 1+x/2 at x near zero. + return Quat(aw,ax,ay,az) + end + + # more accurate non-small angle: + RotFromNorm = copy(RotateFrom) + RotFromNorm=normalize(collect(Iterators.flatten(RotFromNorm))) # Normalize the input... + + theta = acos(RotFromNorm[1]) # because RotFromNorm is normalized, 1,0,0 is normalized, and A.B = |A||B|cos(theta) = cos(theta) + if(theta >(π-DISCARD_ANGLE_RAD)) # ?????? + aw=0 + ax=0 + ay=1 + az=0 + return Quat(aw,ax,ay,az) + end # 180 degree rotation (about y axis, since the vector must be pointing in -x direction + + AxisMagInv = 1.0/sqrt(RotFromNorm[3]*RotFromNorm[3]+RotFromNorm[2]*RotFromNorm[2]) + # Here theta is the angle, axis is RotFromNorm.Cross(Vec3D(1,0,0)) = Vec3D(0, RotFromNorm.z/AxisMagInv, -RotFromNorm.y/AxisMagInv), which is still normalized. (super rolled together) + aa = 0.5*theta + s = sin(a) + aw= cos(aa) + ax= 0 + ay= RotFromNorm[3]*AxisMagInv*s + az = -RotFromNorm[2]*AxisMagInv*s # angle axis function, reduced + return Quat(aw,ax,ay,az) + +end + # !< Overwrites this quaternion with the calculated rotation that would transform the specified RotateFrom vector to point in the positve X direction. Note: function changes this quaternion. @param[in] RotateFrom An arbitrary direction vector. Does not need to be normalized. + + + function axialStrain(positiveEnd) + # strainRatio = pVPos->material()->E/pVNeg->material()->E; + strainRatio=1.0 + return positiveEnd ? (2.0 *strain*strainRatio/(1.0+strainRatio)) : (2.0*strain/(1.0+strainRatio)) +end + +function updateStrain( axialStrain,E) # ?from where strain + strain = axialStrain # redundant? + currentTransverseStrainSum=0.0 # ??? todo + linear=true + maxStrain=100000000000000000000;# ?? todo later change + if linear + if axialStrain > maxStrain + maxStrain = axialStrain # remember this maximum for easy reference + end + return stress(axialStrain,E) + else + if (axialStrain > maxStrain) # if new territory on the stress/strain curve + maxStrain = axialStrain # remember this maximum for easy reference + returnStress = stress(axialStrain,E) # ??currentTransverseStrainSum + if (nu != 0.0) + strainOffset = maxStrain-stress(axialStrain,E)/(_eHat*(1-nu)) # precalculate strain offset for when we back off + else + strainOffset = maxStrain-returnStress/E # precalculate strain offset for when we back off + end + else # backed off a non-linear material, therefore in linear region. + relativeStrain = axialStrain-strainOffset # treat the material as linear with a strain offset according to the maximum plastic deformation + if (nu != 0.0) + returnStress = stress(relativeStrain,E) + else + returnStress = E*relativeStrain + end + end + return returnStress + end +end + +function stress( strain , E ) #end,transverseStrainSum, forceLinear){ + # reference: http://www.colorado.edu/engineering/CAS/courses.d/Structures.d/IAST.Lect05.d/IAST.Lect05.pdf page 10 + # if (isFailed(strain)) return 0.0f; //if a failure point is set and exceeded, we've broken! + # var E =setup.edges[0].stiffness; //todo change later to material ?? + # var E=1000000;//todo change later to material ?? + # var scaleFactor=1; + return E*strain; + + # # if (strain <= strainData[1] || linear || forceLinear){ //for compression/first segment and linear materials (forced or otherwise), simple calculation + + # if (nu==0.0) return E*strain; + # else return _eHat*((1-nu)*strain + nu*transverseStrainSum); + # else return eHat()*((1-nu)*strain + nu*transverseStrainSum); + # # } + + # //the non-linear feature with non-zero poissons ratio is currently experimental + # int DataCount = modelDataPoints(); + # for (int i=2; i<DataCount; i++){ //go through each segment in the material model (skipping the first segment because it has already been handled. + # if (strain <= strainData[i] || i==DataCount-1){ //if in the segment ending with this point (or if this is the last point extrapolate out) + # float Perc = (strain-strainData[i-1])/(strainData[i]-strainData[i-1]); + # float basicStress = stressData[i-1] + Perc*(stressData[i]-stressData[i-1]); + # if (nu==0.0f) return basicStress; + # else { //accounting for volumetric effects + # float modulus = (stressData[i]-stressData[i-1])/(strainData[i]-strainData[i-1]); + # float modulusHat = modulus/((1-2*nu)*(1+nu)); + # float effectiveStrain = basicStress/modulus; //this is the strain at which a simple linear stress strain line would hit this point at the definied modulus + # float effectiveTransverseStrainSum = transverseStrainSum*(effectiveStrain/strain); + # return modulusHat*((1-nu)*effectiveStrain + nu*effectiveTransverseStrainSum); + # } + # } + # } + + # assert(false); //should never reach this point + # return 0.0f; +end + +function ToEulerAngles(q) # TODO I THINK WRONG + # roll (x-axis rotation) + sinr_cosp = (2 * (q.w * q.x + q.y * q.z) )== -0.0 ? 0.0 : (2 * (q.w * q.x + q.y * q.z) ) + cosr_cosp = (1 - 2 * (q.x * q.x + q.y * q.y))== -0.0 ? 0.0 : (1 - 2 * (q.x * q.x + q.y * q.y)) + + roll = atan(sinr_cosp, cosr_cosp) + + + # pitch (y-axis rotation) + sinp = 2 * (q.w * q.y - q.z * q.x) + if (abs(sinp) >= 1) + pitch = copysign(π / 2, sinp) # use 90 degrees if out of range + else + pitch = asin(sinp) + end + + # yaw (z-axis rotation) + siny_cosp = 2 * (q.w * q.z + q.x * q.y) + cosy_cosp = 1 - 2 * (q.y * q.y + q.z * q.z) + yaw = atan(siny_cosp, cosy_cosp) + + + return [roll pitch yaw] +end +# ToEulerAngles(Quat(1.0,1.0,1.0,1.0)) + + +# http://klas-physics.googlecode.com/svn/trunk/src/general/Integrator.cpp (reference) +function timeStep(dt,node,static,currentTimeStep) + previousDt = dt + linMom=copy(N_linMom[node]) + angMom=copy(N_angMom[node]) + orient=copy(N_orient[node]) + pos=copy(N_currPosition[node]) + + + if (dt == 0.0) + return 0 + end + + if(all(N_restrained_degrees_of_freedom[node] .>=1)) + # pos = originalPosition() + ext->translation(); + # orient = ext->rotationQuat(); + # haltMotion(); + # # pos=copy(N_position[node]) + # # node.currPosition=pos.clone(); + # # linMom = new THREE.Vector3(0,0,0); + # # angMom = new THREE.Vector3(0,0,0); + # # node.displacement={x:0,y:0,z:0}; + + # node.orient=orient.clone(); + # node.linMom=linMom.clone(); + # node.angMom=angMom.clone(); + return 0 + end + + + # Translation + curForce = force(node,static,currentTimeStep) + + # var fricForce = curForce.clone(); + + # if (isFloorEnabled()) floorForce(dt, &curForce); //floor force needs dt to calculate threshold to "stop" a slow voxel into static friction. + + # fricForce = curForce - fricForce; + + # assert(!(curForce.x != curForce.x) || !(curForce.y != curForce.y) || !(curForce.z != curForce.z)); //assert non QNAN + linMom=linMom+curForce*dt + + + massInverse=8e-6 # todo ?? later change + translate=linMom*(dt*massInverse) # ??massInverse + + # // we need to check for friction conditions here (after calculating the translation) and stop things accordingly + # if (isFloorEnabled() && floorPenetration() >= 0){ //we must catch a slowing voxel here since it all boils down to needing access to the dt of this timestep. + # double work = fricForce.x*translate.x + fricForce.y*translate.y; //F dot disp + # double hKe = 0.5*mat->_massInverse*(linMom.x*linMom.x + linMom.y*linMom.y); //horizontal kinetic energy + + # if(hKe + work <= 0) setFloorStaticFriction(true); //this checks for a change of direction according to the work-energy principle + + # if (isFloorStaticFriction()){ //if we're in a state of static friction, zero out all horizontal motion + # linMom.x = linMom.y = 0; + # translate.x = translate.y = 0; + # } + # } + # else setFloorStaticFriction(false); + pos=pos+translate + + + N_currPosition[node]=copy(pos) + N_displacement[node]=N_displacement[node]+translate + + # Rotation + curMoment = moment(node) + angMom=angMom+curMoment*dt + + + + momentInertiaInverse=1.0 # todo ?? later change + # orient=orient.*FromRotationVector(copy(angMom)*(dt*momentInertiaInverse)) + + temp=FromRotationVector(copy(angMom)*(dt*momentInertiaInverse)) + + orient=Quat(orient.w*temp.w,orient.x*temp.x,orient.y*temp.y,orient.z*temp.z) + + # orient.multiply(FromRotationVector(angMom.clone().multiplyScalar((dt*momentInertiaInverse)))) # tupdate the orientation //momentInertiaInverse + + N_orient[node]=copy(orient) + + + eul = ToEulerAngles(orient) # TODO I THINK WRONG + + N_angle[node]=copy(eul) + + N_linMom[node]=copy(linMom) + N_angMom[node]=copy(angMom) + + + + # if (ext){//?? todo fix + # var size = 1;//change + # if (ext->isFixed(X_TRANSLATE)) {pos.x = ix*size + ext->translation().x; linMom.x=0;} + # if (ext->isFixed(Y_TRANSLATE)) {pos.y = iy*size + ext->translation().y; linMom.y=0;} + # if (ext->isFixed(Z_TRANSLATE)) {pos.z = iz*size + ext->translation().z; linMom.z=0;} + # if (ext->isFixedAnyRotation()){ //if any rotation fixed, all are fixed + # if (ext->isFixedAllRotation()){ + # orient = ext->rotationQuat(); + # angMom = Vec3D<double>(); + # } + # else { //partial fixes: slow! + # Vec3D<double> tmpRotVec = orient.ToRotationVector(); + # if (ext->isFixed(X_ROTATE)){ tmpRotVec.x=0; angMom.x=0;} + # if (ext->isFixed(Y_ROTATE)){ tmpRotVec.y=0; angMom.y=0;} + # if (ext->isFixed(Z_ROTATE)){ tmpRotVec.z=0; angMom.z=0;} + # orient.FromRotationVector(tmpRotVec); + # } + # } + # } + + # poissonsStrainInvalid = true; +end + +function force(node,static,currentTimeStep) + # forces from internal bonds + totalForce=[0 0 0] + # new THREE.Vector3(node.force.x,node.force.y,node.force.z); + # todo + + + + totalForce=totalForce+N_intForce[node] + + # for (int i=0; i<6; i++){ + # if (links[i]) totalForce += links[i]->force(isNegative((linkDirection)i)); # total force in LCS + # } + totalForce = RotateVec3D(N_orient[node],totalForce); # from local to global coordinates + + + # assert(!(totalForce.x != totalForce.x) || !(totalForce.y != totalForce.y) || !(totalForce.z != totalForce.z)); //assert non QNAN + + # other forces + if(static) + totalForce=totalForce+N_force[node] + # }else if(currentTimeStep<50){ + # totalForce.add(new THREE.Vector3(node.force.x,node.force.y,node.force.z)); + else + # var ex=0.1; + # if(node.force.y!=0){ + # var f=400*Math.sin(currentTimeStep*ex); + # totalForce.add(new THREE.Vector3(0,f,0)); + + # } + x=N_position[node][3] + t=currentTimeStep + wave=getForce(x,t) + totalForce=totalForce+[0 wave 0] + end + + + # if (externalExists()) totalForce += external()->force(); //external forces + # totalForce -= velocity()*mat->globalDampingTranslateC(); //global damping f-cv + # totalForce.z += mat->gravityForce(); //gravity, according to f=mg + + # if (isCollisionsEnabled()){ + # for (std::vector<CVX_Collision*>::iterator it=colWatch->begin(); it!=colWatch->end(); it++){ + # totalForce -= (*it)->contactForce(this); + # } + # } + # todo make internal forces 0 again + N_intForce[node]=[0 0 0] # do i really need it? + + # node.force.x=0; + # node.force.y=0; + # node.force.z=0; + + + return totalForce +end + +function moment(node) + #moments from internal bonds + totalMoment=[0 0 0] + # for (int i=0; i<6; i++){ + # if (links[i]) totalMoment += links[i]->moment(isNegative((linkDirection)i)); //total force in LCS + # } + + totalMoment=totalMoment+N_intMoment[node] + + totalMoment = RotateVec3D(N_orient[node],totalMoment); + + totalMoment=totalMoment+N_moment[node] + + #other moments + # if (externalExists()) totalMoment += external()->moment(); //external moments + # totalMoment -= angularVelocity()*mat->globalDampingRotateC(); //global damping + + N_intMoment[node]=[0 0 0] # do i really need it? + + return totalMoment +end + +function updateDataAndSave(setup,fileName) + nodes = setup["nodes"] + edges = setup["edges"] + voxCount=size(nodes)[1] + linkCount=size(edges)[1] + + i=1 + for edge in edges + edge["stress"]=E_stress[i] + i=i+1 + + end + + + i=1 + for node in nodes + node["displacement"]["x"]=N_displacement[i][1] + node["displacement"]["y"]=N_displacement[i][2] + node["displacement"]["z"]=N_displacement[i][3] + + node["angle"]["x"]=N_angle[i][1] + node["angle"]["y"]=N_angle[i][2] + node["angle"]["z"]=N_angle[i][3] + i=i+1 + + end + + # pass data as a json string (how it shall be displayed in a file) + stringdata = JSON.json(setup) + + # write the file with the stringdata variable information + open(fileName, "w") do f + write(f, stringdata) + end + +end + + +############################################################################################### +setup = Dict() +open("../json/setup1.json", "r") do f + global setup + dicttxt = String(read(f)) # file information to string + setup=JSON.parse(dicttxt) # parse and transform data +end + +setup=setup["setup"] +############# nodes +N_position=[] +N_degrees_of_freedom=[] +N_restrained_degrees_of_freedom=[] +N_displacement=[] +N_angle=[] +N_currPosition=[] +N_linMom=[] +N_angMom=[] +N_intForce=[] +N_intMoment=[] +N_moment=[] +N_posTimeSteps=[] +N_angTimeSteps=[] +N_force=[] +N_orient=[] + +############# edges +E_source=[] +E_target=[] +E_area=[] +E_density=[] +E_stiffness=[] +E_stress=[] +E_axis=[] +E_currentRestLength=[] +E_pos2=[] +E_angle1v=[] +E_angle2v=[] +E_angle1=[] +E_angle2=[] +E_currentTransverseStrainSum=[] +E_stressTimeSteps=[] + +######## +voxCount=0 +linkCount=0 +nodes = setup["nodes"] +edges = setup["edges"] +voxCount=size(nodes)[1] +linkCount=size(edges)[1] +strain =0 #todooo moveeee + + +######## ######## ######## ######## +# println(toAxisXVector3([-5,0,-5 ],[-0.7071067811865475,0,-0.7071067811865475 ])) +# println(toAxisXVector3([5,-5,0 ],[0.7071067811865475,-0.7071067811865475,0 ])) +# println(toAxisXVector3([-5,5,0 ],[-0.7071067811865475,0.7071067811865475,0 ])) +# println(toAxisXVector3([-5,-5,0 ],[-0.7071067811865475,-0.7071067811865475,0 ])) +# println(toAxisXVector3([5,0,5 ],[0.7071067811865475,0,0.7071067811865475 ])) +# println(toAxisXVector3([0,5,5 ],[0,0.7071067811865475,0.7071067811865475 ])) + +# println() +# println(toAxisOriginalVector3([1 0 0],[0 0 1])) +# println(toAxisOriginalVector3([0 1 0],[0 0 1])) +# println(toAxisOriginalVector3([0 0 1],[0 0 1])) + +# println() + +# println(toAxisXVector3([1 0 0],[0 0 1])) +# println(toAxisXVector3([0 1 0],[0 0 1])) +# println(toAxisXVector3([0 0 1],[0 0 1])) + +# println() +dt=0.0251646 +numTimeSteps=10 +simulateParallel(setup,numTimeSteps,dt,true,10) +# setup["animation"]["exageration"]=75444 + +updateDataAndSave(setup,"../json/trialJuliaParallel.json") \ No newline at end of file diff --git a/01_Code/physical_computing_interface/simulation/lib/CSS2DRenderer.js b/01_Code/physical_computing_interface/simulation/lib/CSS2DRenderer.js new file mode 100644 index 0000000000000000000000000000000000000000..111861ac3b2761bd7c1fb1310bebe93e9b273699 --- /dev/null +++ b/01_Code/physical_computing_interface/simulation/lib/CSS2DRenderer.js @@ -0,0 +1,182 @@ +/** + * @author mrdoob / http://mrdoob.com/ + */ + +THREE.CSS2DObject = function ( element ) { + + THREE.Object3D.call( this ); + + this.element = element; + this.element.style.position = 'absolute'; + + this.addEventListener( 'removed', function () { + + this.traverse( function ( object ) { + + if ( object.element instanceof Element && object.element.parentNode !== null ) { + + object.element.parentNode.removeChild( object.element ); + + } + + } ); + + } ); + +}; + +THREE.CSS2DObject.prototype = Object.create( THREE.Object3D.prototype ); +THREE.CSS2DObject.prototype.constructor = THREE.CSS2DObject; + +// + +THREE.CSS2DRenderer = function () { + + var _this = this; + + var _width, _height; + var _widthHalf, _heightHalf; + + var vector = new THREE.Vector3(); + var viewMatrix = new THREE.Matrix4(); + var viewProjectionMatrix = new THREE.Matrix4(); + + var cache = { + objects: new WeakMap() + }; + + var domElement = document.createElement( 'div' ); + domElement.style.overflow = 'hidden'; + + this.domElement = domElement; + + this.getSize = function () { + + return { + width: _width, + height: _height + }; + + }; + + this.setSize = function ( width, height ) { + + _width = width; + _height = height; + + _widthHalf = _width / 2; + _heightHalf = _height / 2; + + domElement.style.width = width + 'px'; + domElement.style.height = height + 'px'; + + }; + + var renderObject = function ( object, scene, camera ) { + + if ( object instanceof THREE.CSS2DObject ) { + + object.onBeforeRender( _this, scene, camera ); + + vector.setFromMatrixPosition( object.matrixWorld ); + vector.applyMatrix4( viewProjectionMatrix ); + + var element = object.element; + var style = 'translate(-50%,-50%) translate(' + ( vector.x * _widthHalf + _widthHalf ) + 'px,' + ( - vector.y * _heightHalf + _heightHalf ) + 'px)'; + + element.style.WebkitTransform = style; + element.style.MozTransform = style; + element.style.oTransform = style; + element.style.transform = style; + + element.style.display = ( object.visible && vector.z >= - 1 && vector.z <= 1 ) ? '' : 'none'; + + var objectData = { + distanceToCameraSquared: getDistanceToSquared( camera, object ) + }; + + cache.objects.set( object, objectData ); + + if ( element.parentNode !== domElement ) { + + domElement.appendChild( element ); + + } + + object.onAfterRender( _this, scene, camera ); + + } + + for ( var i = 0, l = object.children.length; i < l; i ++ ) { + + renderObject( object.children[ i ], scene, camera ); + + } + + }; + + var getDistanceToSquared = function () { + + var a = new THREE.Vector3(); + var b = new THREE.Vector3(); + + return function ( object1, object2 ) { + + a.setFromMatrixPosition( object1.matrixWorld ); + b.setFromMatrixPosition( object2.matrixWorld ); + + return a.distanceToSquared( b ); + + }; + + }(); + + var filterAndFlatten = function ( scene ) { + + var result = []; + + scene.traverse( function ( object ) { + + if ( object instanceof THREE.CSS2DObject ) result.push( object ); + + } ); + + return result; + + }; + + var zOrder = function ( scene ) { + + var sorted = filterAndFlatten( scene ).sort( function ( a, b ) { + + var distanceA = cache.objects.get( a ).distanceToCameraSquared; + var distanceB = cache.objects.get( b ).distanceToCameraSquared; + + return distanceA - distanceB; + + } ); + + var zMax = sorted.length; + + for ( var i = 0, l = sorted.length; i < l; i ++ ) { + + sorted[ i ].element.style.zIndex = zMax - i; + + } + + }; + + this.render = function ( scene, camera ) { + + if ( scene.autoUpdate === true ) scene.updateMatrixWorld(); + if ( camera.parent === null ) camera.updateMatrixWorld(); + + viewMatrix.copy( camera.matrixWorldInverse ); + viewProjectionMatrix.multiplyMatrices( camera.projectionMatrix, viewMatrix ); + + renderObject( scene, scene, camera ); + zOrder( scene ); + + }; + +}; diff --git a/01_Code/physical_computing_interface/simulation/lib/three-text2d.min.js b/01_Code/physical_computing_interface/simulation/lib/three-text2d.min.js new file mode 100644 index 0000000000000000000000000000000000000000..44b82888ccc45b7b76b268571dc38961587121f8 --- /dev/null +++ b/01_Code/physical_computing_interface/simulation/lib/three-text2d.min.js @@ -0,0 +1 @@ +!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e(require("THREE")):"function"==typeof define&&define.amd?define(["THREE"],e):"object"==typeof exports?exports.THREE_Text2D=e(require("THREE")):t.THREE_Text2D=e(t.THREE)}(window,function(t){return function(t){var e={};function i(n){if(e[n])return e[n].exports;var r=e[n]={i:n,l:!1,exports:{}};return t[n].call(r.exports,r,r.exports,i),r.l=!0,r.exports}return i.m=t,i.c=e,i.d=function(t,e,n){i.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:n})},i.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},i.t=function(t,e){if(1&e&&(t=i(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var n=Object.create(null);if(i.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var r in t)i.d(n,r,function(e){return t[e]}.bind(null,r));return n},i.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return i.d(e,"a",e),e},i.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},i.p="",i(i.s=3)}([function(e,i){e.exports=t},function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=i(0);e.textAlign={center:new n.Vector2(0,0),left:new n.Vector2(1,0),top:new n.Vector2(0,-1),topLeft:new n.Vector2(1,-1),topRight:new n.Vector2(-1,-1),right:new n.Vector2(-1,0),bottom:new n.Vector2(0,1),bottomLeft:new n.Vector2(1,1),bottomRight:new n.Vector2(-1,1)};var r={};e.getFontHeight=function(t){var e=r[t];if(!e){var i=document.getElementsByTagName("body")[0],n=document.createElement("div"),s=document.createTextNode("MÉq");n.appendChild(s),n.setAttribute("style","font:"+t+";position:absolute;top:0;left:0"),i.appendChild(n),e=n.offsetHeight,r[t]=e,i.removeChild(n)}return e}},function(t,e,i){"use strict";var n,r=this&&this.__extends||(n=function(t,e){return(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var i in e)e.hasOwnProperty(i)&&(t[i]=e[i])})(t,e)},function(t,e){function i(){this.constructor=t}n(t,e),t.prototype=null===e?Object.create(e):(i.prototype=e.prototype,new i)});Object.defineProperty(e,"__esModule",{value:!0});var s=i(0),o=i(1),a=i(5),h=function(t){function e(e,i){void 0===e&&(e=""),void 0===i&&(i={});var n=t.call(this)||this;return n._align=new s.Vector2,n._font=i.font||"30px Arial",n._fillStyle=i.fillStyle||"#FFFFFF",n._shadowColor=i.shadowColor||"rgba(0, 0, 0, 0)",n._shadowBlur=i.shadowBlur||0,n._shadowOffsetX=i.shadowOffsetX||0,n._shadowOffsetY=i.shadowOffsetY||0,n._lineHeight=i.lineHeight||1.2,n.canvas=new a.CanvasText,n.align=i.align||o.textAlign.center,n.side=i.side||s.DoubleSide,n.antialias=void 0===i.antialias||i.antialias,n.text=e,n}return r(e,t),Object.defineProperty(e.prototype,"width",{get:function(){return this.canvas.textWidth},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"height",{get:function(){return this.canvas.textHeight},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"text",{get:function(){return this._text},set:function(t){this._text!==t&&(this._text=t,this.updateText())},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"font",{get:function(){return this._font},set:function(t){this._font!==t&&(this._font=t,this.updateText())},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"fillStyle",{get:function(){return this._fillStyle},set:function(t){this._fillStyle!==t&&(this._fillStyle=t,this.updateText())},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"align",{get:function(){return this._align},set:function(t){this._align.copy(t)},enumerable:!0,configurable:!0}),e.prototype.cleanUp=function(){this.texture&&this.texture.dispose()},e.prototype.applyAntiAlias=function(){!1===this.antialias&&(this.texture.magFilter=s.NearestFilter,this.texture.minFilter=s.LinearMipMapLinearFilter)},e}(s.Object3D);e.Text2D=h},function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=i(4);e.SpriteText2D=n.SpriteText2D;var r=i(6);e.MeshText2D=r.MeshText2D;var s=i(1);e.textAlign=s.textAlign},function(t,e,i){"use strict";var n,r=this&&this.__extends||(n=function(t,e){return(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var i in e)e.hasOwnProperty(i)&&(t[i]=e[i])})(t,e)},function(t,e){function i(){this.constructor=t}n(t,e),t.prototype=null===e?Object.create(e):(i.prototype=e.prototype,new i)});Object.defineProperty(e,"__esModule",{value:!0});var s=i(0),o=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return r(e,t),e.prototype.raycast=function(){return this.sprite.raycast.apply(this.sprite,arguments)},e.prototype.updateText=function(){this.canvas.drawText(this._text,{font:this._font,fillStyle:this._fillStyle,lineHeight:this._lineHeight,align:this.align}),this.cleanUp(),this.texture=new s.Texture(this.canvas.canvas),this.texture.needsUpdate=!0,this.applyAntiAlias(),this.material?this.material.map=this.texture:this.material=new s.SpriteMaterial({map:this.texture}),this.sprite||(this.sprite=new s.Sprite(this.material),this.add(this.sprite)),this.sprite.scale.set(this.canvas.width,this.canvas.height,1),this.updateAlign()},e.prototype.updateAlign=function(){this.sprite&&(this.sprite.center.x=(.5-.5*this._align.x)*this.canvas.textWidth/this.canvas.width,this.sprite.center.y=1-(.5*this._align.y+.5)*this.canvas.textHeight/this.canvas.height)},Object.defineProperty(e.prototype,"align",{get:function(){return this._align},set:function(t){this._align.copy(t),this.updateAlign()},enumerable:!0,configurable:!0}),e}(i(2).Text2D);e.SpriteText2D=o},function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=i(0),r=i(1),s=function(){function t(){this.textWidth=null,this.textHeight=null,this.canvas=document.createElement("canvas"),this.ctx=this.canvas.getContext("2d")}return Object.defineProperty(t.prototype,"width",{get:function(){return this.canvas.width},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"height",{get:function(){return this.canvas.height},enumerable:!0,configurable:!0}),t.prototype.drawText=function(t,e){var i=this;this.ctx.font=e.font;var s=r.getFontHeight(e.font),o=(t||"").toString().split("\n");this.textWidth=Math.max.apply(null,o.map(function(t){return Math.ceil(i.ctx.measureText(t).width)})),this.textHeight=s+s*e.lineHeight*(o.length-1),this.canvas.width=Math.max(2,n.Math.ceilPowerOfTwo(this.textWidth)),this.canvas.height=Math.max(2,n.Math.ceilPowerOfTwo(this.textHeight)),this.ctx.font=e.font,this.ctx.clearRect(0,0,this.canvas.width,this.canvas.height),this.ctx.fillStyle=e.fillStyle,1===e.align.x?this.ctx.textAlign="left":0===e.align.x?this.ctx.textAlign="center":this.ctx.textAlign="right",this.ctx.textBaseline="top",this.ctx.shadowColor=e.shadowColor,this.ctx.shadowBlur=e.shadowBlur,this.ctx.shadowOffsetX=e.shadowOffsetX,this.ctx.shadowOffsetY=e.shadowOffsetY;for(var a=this.textWidth*(.5-.5*e.align.x),h=0;h<o.length;h++)this.ctx.fillText(o[h],a,s*e.lineHeight*h);return this.canvas},t}();e.CanvasText=s},function(t,e,i){"use strict";var n,r=this&&this.__extends||(n=function(t,e){return(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var i in e)e.hasOwnProperty(i)&&(t[i]=e[i])})(t,e)},function(t,e){function i(){this.constructor=t}n(t,e),t.prototype=null===e?Object.create(e):(i.prototype=e.prototype,new i)});Object.defineProperty(e,"__esModule",{value:!0});var s=i(0),o=function(t){function e(e,i){return void 0===e&&(e=""),void 0===i&&(i={}),t.call(this,e,i)||this}return r(e,t),e.prototype.raycast=function(){this.mesh.raycast.apply(this.mesh,arguments)},e.prototype.updateText=function(){this.cleanUp(),this.canvas.drawText(this._text,{font:this._font,fillStyle:this._fillStyle,shadowBlur:this._shadowBlur,shadowColor:this._shadowColor,shadowOffsetX:this._shadowOffsetX,shadowOffsetY:this._shadowOffsetY,lineHeight:this._lineHeight,align:this.align}),this.texture=new s.Texture(this.canvas.canvas),this.texture.needsUpdate=!0,this.applyAntiAlias(),this.material?this.material.map=this.texture:(this.material=new s.MeshBasicMaterial({map:this.texture,side:this.side}),this.material.transparent=!0),this.mesh||(this.geometry=new s.PlaneGeometry(this.canvas.width,this.canvas.height),this.mesh=new s.Mesh(this.geometry,this.material),this.add(this.mesh)),this.mesh.position.x=this.canvas.width/2-this.canvas.textWidth/2+this.canvas.textWidth/2*this.align.x,this.mesh.position.y=-this.canvas.height/2+this.canvas.textHeight/2*this.align.y,this.geometry.vertices[0].x=this.geometry.vertices[2].x=-this.canvas.width/2,this.geometry.vertices[1].x=this.geometry.vertices[3].x=this.canvas.width/2,this.geometry.vertices[0].y=this.geometry.vertices[1].y=this.canvas.height/2,this.geometry.vertices[2].y=this.geometry.vertices[3].y=-this.canvas.height/2,this.geometry.verticesNeedUpdate=!0},e}(i(2).Text2D);e.MeshText2D=o}])}); \ No newline at end of file diff --git a/01_Code/physical_computing_interface/simulation/rhino3dm.wasm b/01_Code/physical_computing_interface/simulation/rhino3dm.wasm new file mode 100644 index 0000000000000000000000000000000000000000..93793a23fb7e4cdf5adc7a31ce8d6faea04284b7 Binary files /dev/null and b/01_Code/physical_computing_interface/simulation/rhino3dm.wasm differ diff --git a/01_Code/physical_computing_interface/simulation/visualization/draw.js b/01_Code/physical_computing_interface/simulation/visualization/draw.js new file mode 100644 index 0000000000000000000000000000000000000000..96970c07d5a354384632511374d61e18ae951716 --- /dev/null +++ b/01_Code/physical_computing_interface/simulation/visualization/draw.js @@ -0,0 +1,187 @@ + +// Amira Abdel-Rahman +// (c) Massachusetts Institute of Technology 2020 + +///////////call from node app.js code/////////////// +// wait for the rhino3dm web assembly to load asynchronously +// rhino3dm().then(function(m) {// todo change call to app.js +// _rhino3dm = m; // global +// initRhino3dm(1,10,createVoxel,true,true); +// saveJSON(); +// }); +///////////////////////////////////// + +var three; //todo change location +var three1; //todo change location +var setup=JSON.parse(JSON.stringify(setupEmpty)); +var setup1=JSON.parse(JSON.stringify(setupEmpty)); +var globalSetup={ + exageration:10e3, + speed:3.0, + updateStress:false + +}; +var ex=gui.add(globalSetup, 'exageration', 0, 10e4).listen(); +var sp=gui.add(globalSetup, 'speed', 0, 5).listen(); +var sp=gui.add(globalSetup, 'updateStress').listen(); + +var static=false; + +var latticeSize=10; +var voxelSize=5; + +ex.onChange(updateExSpeed); +sp.onChange(); + + +rhino3dm().then(async m => { + console.log('Loaded rhino3dm.'); + + document.getElementById("footer2").innerHTML = "Loaded rhino3dm."; + _rhino3dm = m; // global + + + + + + + var material={ + area:1.0, + density:0.028, + stiffness:10000000 + }; + + var material2={ + area:1.0, + density:0.028, + stiffness:1000000 + }; + + setup.hierarical=false; + setup.voxelSize=voxelSize; + + const position=new THREE.Vector3(0,0,0); + const position2=new THREE.Vector3(voxelSize*2,0,0); + + /// + //try bounding box conditions + var support=new _rhino3dm.BoundingBox([-voxelSize/2+position.x,-voxelSize/2+position.y,-voxelSize/2+position.z], [voxelSize/2+position.x,voxelSize/2+position.y,voxelSize/2+position.z]); + + var temp=voxelSize*latticeSize-voxelSize; + + var load=new _rhino3dm.BoundingBox([-voxelSize/2+position.x,-voxelSize/2+position.y,0-voxelSize/2+position.z], [voxelSize/2+position.x,voxelSize/2+position.y,temp+voxelSize/2+position.z]); + + + + var temp1=voxelSize*latticeSize-3*voxelSize; + + var matB=new _rhino3dm.BoundingBox([-voxelSize/2+position2.x,-voxelSize/2+position2.y,temp1-voxelSize/2+position2.z], [voxelSize/2+position2.x,voxelSize/2+position2.y,temp]); + + var dof=[true,true,true,true,true,true]; + var supports=[[support,dof]]; + var loads=[[load,{x:0,y:-400,z:0}]]; + var diffMaterialBox=[[matB,material2]]; + + /// + + + lateralLoadSetup(setup,position,latticeSize,voxelSize,createVoxel,supports,loads,material); + // changeMaterialFromBox(setup,diffMaterialBox); + + + setup.viz.colorMaps=[YlGnBu,coolwarm, winter ,jet]; + setup.viz.minStress=10e6; + setup.viz.maxStress=-10e6; + + setup.viz.exageration=globalSetup.exageration; + setup.solve=solveParallel; + setup.numTimeSteps=100; + setup.supports=supports; + setup.loads=loads; + + + three= new threejs(setup,"webgl1","graph",static); + three.init(); + three.drawConstraintBoundingBoxes([support],[load]); + + + //////////////////////////////////// + + setup1.hierarical=true; + setup1.voxelSize=voxelSize; + + + + lateralLoadSetup(setup1,position,latticeSize,voxelSize,createHieraricalVoxel,supports,loads,material); + // changeMaterialFromBox(setup1,diffMaterialBox); + + setup1.viz.colorMaps=[YlGnBu,coolwarm, winter ,jet]; + setup1.viz.minStress=10e6; + setup1.viz.maxStress=-10e6; + + setup1.viz.exageration=globalSetup.exageration; + setup1.solve=solveParallel; + setup1.supports=supports; + setup1.loads=loads; + + + + three1= new threejs(setup1,"webgl","threejs",static); + three1.init(); + + gui.add(three.setup,"numTimeSteps", 0, 500).listen(); + gui.add(three.setup,"solve"); + + + + document.getElementById("footer2").innerHTML = "Press solve for structure simulation."; + + // more stuff +}); + +function solveParallel(){ + document.getElementById("footer2").innerHTML = "Running..."; + var numTimeSteps=250; + ///////////////////////////////////////////////////// + + + var dt=0.0251646; //?? todo change to recommended step + var dt=0.01; //?? todo change to recommended step + + + setTimeout(function() { + simulateParallel( setup,three.setup.numTimeSteps,dt,static,2); + simulateParallel(setup1,three.setup.numTimeSteps,dt,static,2); + }, 1); + + // var dt=0.0251646; //?? todo change to recommended step + // simulateParallel(setup1,numTimeSteps,dt); + + /////////////////////////////////////// + // updateColors(); + // three.animate(); + // three1.animate(); + + ///////////////////// + +} + +function updateExSpeed(){ + three.setup.animation.exageration=globalSetup.exageration; + three1.setup.animation.exageration=globalSetup.exageration; + three.setup.animation.speed=globalSetup.speed; + three1.setup.animation.speed=globalSetup.speed; + +} + +function getForce(x,t){ + var a0=10000.0; + var l=1.0 ; + var f=2.0; + var amp=0.1; + var x=parseInt(x/voxelSize)/10.0; + var t=t/100.0; + var ax=1-0.825*(x-1)+1.0625*(x*x-1); + return a0* ax *Math.sin(2*Math.PI*(x/l-f*t+amp)); + +} diff --git a/01_Code/physical_computing_interface/simulation/visualization/geometry.js b/01_Code/physical_computing_interface/simulation/visualization/geometry.js index 700830c286209face2057072eebb6d194cebd4e8..1cfe55eb8ab51c047d7b4c72800a119bd85aa34f 100644 --- a/01_Code/physical_computing_interface/simulation/visualization/geometry.js +++ b/01_Code/physical_computing_interface/simulation/visualization/geometry.js @@ -1,64 +1,99 @@ +var solveFea; let _rhino3dm = null; -// // wait for the rhino3dm web assembly to load asynchronously -rhino3dm().then(function(m) {// todo change call to app.js - _rhino3dm = m; // global - // initRhino3dm(1,10,createVoxelnotRhino,true,true); - console.log("Loaded RhinoScript"); - //saveJSON(); -}); +var occupancy=[]; +var gridSize=10; + // initialize -function initRhino3dm(latticeSize,voxelSize,voxelBuilder,addForces,solve) {//later change type to dictiary - console.log("Loaded RhinoScript"); +function latticeSetup(setup,latticeSize,voxelSize,voxelBuilder,forces) {//later change type to dictiary // var voxelSize=10.0; - // var latticeSize=5; + // var latticeSize=5; + const material={ + area:1.0, + density:0.028, + stiffness:1000000 + }; - createLattice(voxelSize,latticeSize,latticeSize,latticeSize,voxelBuilder); + createLattice(setup,voxelSize,latticeSize,latticeSize,latticeSize,voxelBuilder,material); - restrainBelow(-voxelSize/2); - if(addForces){ //don't add forces chiral //todo fix - addForceAbove(0.75*voxelSize*latticeSize,{x:0,y:-400,z:0}); - } - - if(solve){ - solveFea(); + + //todo fix this + if(setup.hierarical){ + addForceAbove(setup,0.75*voxelSize*latticeSize,forces); + restrainBelow(setup,voxelSize*0.75); + }else{ + addForceAbove(setup,0.8*voxelSize*latticeSize,forces); + restrainBelow(setup,-voxelSize/2); } +} + +/// +function lateralLoadSetup(setup,position,length,voxelSize,voxelBuilder,supports,loads,material) { + + createLattice(setup,voxelSize,1,1,length,voxelBuilder,material,position); + //todo incorporate this into the drawing phase so you don't have to loop twice + restrainFromBox(setup,supports); + loadFromBox(setup,loads); +} + +function lateralLoadSetup1(setup,position,length,voxelSize,voxelBuilder,supports,loads,material) { + + createLattice(setup,voxelSize,1,length,1,voxelBuilder,material,position); + + //todo incorporate this into the drawing phase so you don't have to loop twice + restrainFromBox(setup,supports); + loadFromBox(setup,loads); } //////////////////////////////////////////////////////////// -function createLattice(size,sizeX,sizeY,sizeZ,voxelBuilder){ +function createLattice(setup,size,sizeX,sizeY,sizeZ,voxelBuilder,material,position=new THREE.Vector3(0,0,0)){ + + for (var i=0;i<gridSize;++i){ + occupancy.push([]); + for (var j=0;j<gridSize;++j){ + occupancy[i].push([]); + for (var k=0;k<gridSize;++k){ + occupancy[i][j].push(-1); + } + } + } + + var count=0; + + var area=material.area; + var density=material.density; + var stiffness=material.stiffness; for(var i=0;i<sizeX;i++){ for(var j=0;j<sizeY;j++){ for(var k=0;k<sizeZ;k++){ - voxelBuilder(size,new THREE.Vector3(i*size,j*size,k*size)); - } + if(i>sizeX/3){ + stiffness=100000; + + } + voxelBuilder(setup,size,new THREE.Vector3(i*size+position.x,j*size+position.y,k*size+position.z),area,density,stiffness); + } } - } + } + } -function simulate(size,timeline,voxelBuilder ){ - init(); - console.log(timeline.length) - for(var i=0;i<timeline.length;i++){ //TODO LATER CHANGE TO OCCUPANCY - console.log(timeline[i]); - voxelBuilder(size,new THREE.Vector3(timeline[i].x*size,timeline[i].y*size,timeline[i].z*size)); - } - drawStructure(); - colorEdges(); - animate(); -} -function createVoxel(size,position){ +function createVoxel(setup,size,position,area,density,stiffness){ - var sphere = new _rhino3dm.Sphere([0,0,0], size/2); - var box = sphere.toBrep().getBoundingBox(); + // var sphere = new _rhino3dm.Sphere([0,0,0], size/2); + // var box = sphere.toBrep().getBoundingBox(); + var box=new _rhino3dm.BoundingBox([0,0,0], [size,size,size]); // console.log(box.min) - box = box.toBrep(); + box = box.toBrep(); + + position.x-=size/2; + position.y-=size/2; + position.z-=size/2; for(var i=0; i<6;i++){//for each face @@ -75,23 +110,28 @@ function createVoxel(size,position){ var face=box.faces().get(i); - nodesIndices.push(checkandAdd(add(position,toPosition(face.pointAt(size , size/2))))); - nodesIndices.push(checkandAdd(add(position,toPosition(face.pointAt(size/2, 0 ))))); - nodesIndices.push(checkandAdd(add(position,toPosition(face.pointAt(0 , size/2))))); - nodesIndices.push(checkandAdd(add(position,toPosition(face.pointAt(size/2, size ))))); + nodesIndices.push(checkandAdd(setup,add(position,toPosition(face.pointAt(size , size/2))))); + nodesIndices.push(checkandAdd(setup,add(position,toPosition(face.pointAt(size/2, 0 ))))); + nodesIndices.push(checkandAdd(setup,add(position,toPosition(face.pointAt(0 , size/2))))); + nodesIndices.push(checkandAdd(setup,add(position,toPosition(face.pointAt(size/2, size ))))); - linkNodes(nodesIndices); + linkNodes(setup,nodesIndices,area,density,stiffness); } } -function createChiralVoxel(size,position){ +function createChiralVoxel(setup,size,position,area,density,stiffness){ - var sphere = new _rhino3dm.Sphere([0,0,0], size/2); - var box = sphere.toBrep().getBoundingBox(); - // console.log(box.min) - box = box.toBrep(); + // var sphere = new _rhino3dm.Sphere([0,0,0], size/2); + // var box = sphere.toBrep().getBoundingBox(); + // console.log(box.min) + var box=new _rhino3dm.BoundingBox([0,0,0], [size,size,size]); + box = box.toBrep(); + + position.x-=size/2; + position.y-=size/2; + position.z-=size/2; for(var i=0; i<6;i++){//for each face @@ -99,10 +139,10 @@ function createChiralVoxel(size,position){ var face=box.faces().get(i); - nodesIndices.push(checkandAdd(add(position,toPosition(face.pointAt(size , size/2))))); - nodesIndices.push(checkandAdd(add(position,toPosition(face.pointAt(size/2, 0 ))))); - nodesIndices.push(checkandAdd(add(position,toPosition(face.pointAt(0 , size/2))))); - nodesIndices.push(checkandAdd(add(position,toPosition(face.pointAt(size/2, size ))))); + nodesIndices.push(checkandAdd(setup,add(position,toPosition(face.pointAt(size , size/2))))); + nodesIndices.push(checkandAdd(setup,add(position,toPosition(face.pointAt(size/2, 0 ))))); + nodesIndices.push(checkandAdd(setup,add(position,toPosition(face.pointAt(0 , size/2))))); + nodesIndices.push(checkandAdd(setup,add(position,toPosition(face.pointAt(size/2, size ))))); // linkNodes(nodesIndices); @@ -124,190 +164,225 @@ function createChiralVoxel(size,position){ c.translate(face.pointAt(size/2, size/2)); for(var ii=0; ii<n;ii++){//for each face // createNode(toPosition(c.pointAt(ii*1/n)),'e',false,[]); - nodesIndices1.push(checkandAdd(add(position,toPosition(c.pointAt(ii*1/n))))); + nodesIndices1.push(checkandAdd(setup,add(position,toPosition(c.pointAt(ii*1/n))))); } - linkNodes(nodesIndices1); + + linkNodes(setup,nodesIndices1,area,density,stiffness); + if(i==0){ - addEdge(nodesIndices[0], nodesIndices1[1], 1.0, 0.284 , 30.0e6); - addEdge(nodesIndices[1], nodesIndices1[3], 1.0, 0.284 , 30.0e6); - addEdge(nodesIndices[2], nodesIndices1[5], 1.0, 0.284 , 30.0e6); - addEdge(nodesIndices[3], nodesIndices1[7], 1.0, 0.284 , 30.0e6); + add_Edge(setup,nodesIndices[0], nodesIndices1[1] ,area,density,stiffness); + add_Edge(setup,nodesIndices[1], nodesIndices1[3] ,area,density,stiffness); + add_Edge(setup,nodesIndices[2], nodesIndices1[5] ,area,density,stiffness); + add_Edge(setup,nodesIndices[3], nodesIndices1[7] ,area,density,stiffness); }else if(i==1){ - addEdge(nodesIndices[3], nodesIndices1[1], 1.0, 0.284 , 30.0e6); - addEdge(nodesIndices[0], nodesIndices1[3], 1.0, 0.284 , 30.0e6); - addEdge(nodesIndices[1], nodesIndices1[5], 1.0, 0.284 , 30.0e6); - addEdge(nodesIndices[2], nodesIndices1[7], 1.0, 0.284 , 30.0e6); + add_Edge(setup,nodesIndices[3], nodesIndices1[1],area,density,stiffness); + add_Edge(setup,nodesIndices[0], nodesIndices1[3],area,density,stiffness); + add_Edge(setup,nodesIndices[1], nodesIndices1[5],area,density,stiffness); + add_Edge(setup,nodesIndices[2], nodesIndices1[7],area,density,stiffness); }else if(i==2){ - addEdge(nodesIndices[0], nodesIndices1[5], 1.0, 0.284 , 30.0e6); - addEdge(nodesIndices[1], nodesIndices1[7], 1.0, 0.284 , 30.0e6); - addEdge(nodesIndices[2], nodesIndices1[1], 1.0, 0.284 , 30.0e6); - addEdge(nodesIndices[3], nodesIndices1[3], 1.0, 0.284 , 30.0e6); + add_Edge(setup,nodesIndices[0], nodesIndices1[5],area,density,stiffness); + add_Edge(setup,nodesIndices[1], nodesIndices1[7],area,density,stiffness); + add_Edge(setup,nodesIndices[2], nodesIndices1[1],area,density,stiffness); + add_Edge(setup,nodesIndices[3], nodesIndices1[3],area,density,stiffness); - var force=new THREE.Vector3(0,-400,0); - addForce('n'+nodesIndices[0],force); - addForce('n'+nodesIndices[1],force); - addForce('n'+nodesIndices[2],force); - addForce('n'+nodesIndices[3],force); + // var force=new THREE.Vector3(0,-400,0); + // addForce(setup,'n'+nodesIndices[0],force); + // addForce(setup,'n'+nodesIndices[1],force); + // addForce(setup,'n'+nodesIndices[2],force); + // addForce(setup,'n'+nodesIndices[3],force); }else if(i==3){ - addEdge(nodesIndices[3], nodesIndices1[5], 1.0, 0.284 , 30.0e6); - addEdge(nodesIndices[0], nodesIndices1[7], 1.0, 0.284 , 30.0e6); - addEdge(nodesIndices[1], nodesIndices1[1], 1.0, 0.284 , 30.0e6); - addEdge(nodesIndices[2], nodesIndices1[3], 1.0, 0.284 , 30.0e6); + add_Edge(setup,nodesIndices[3], nodesIndices1[5],area,density,stiffness); + add_Edge(setup,nodesIndices[0], nodesIndices1[7],area,density,stiffness); + add_Edge(setup,nodesIndices[1], nodesIndices1[1],area,density,stiffness); + add_Edge(setup,nodesIndices[2], nodesIndices1[3],area,density,stiffness); }else if(i==4){ - addEdge(nodesIndices[0], nodesIndices1[5], 1.0, 0.284 , 30.0e6); - addEdge(nodesIndices[1], nodesIndices1[7], 1.0, 0.284 , 30.0e6); - addEdge(nodesIndices[2], nodesIndices1[1], 1.0, 0.284 , 30.0e6); - addEdge(nodesIndices[3], nodesIndices1[3], 1.0, 0.284 , 30.0e6); + add_Edge(setup,nodesIndices[0], nodesIndices1[5],area,density,stiffness); + add_Edge(setup,nodesIndices[1], nodesIndices1[7],area,density,stiffness); + add_Edge(setup,nodesIndices[2], nodesIndices1[1],area,density,stiffness); + add_Edge(setup,nodesIndices[3], nodesIndices1[3],area,density,stiffness); }else if(i==5){ - addEdge(nodesIndices[0], nodesIndices1[5], 1.0, 0.284 , 30.0e6); - addEdge(nodesIndices[1], nodesIndices1[3], 1.0, 0.284 , 30.0e6); - addEdge(nodesIndices[2], nodesIndices1[1], 1.0, 0.284 , 30.0e6); - addEdge(nodesIndices[3], nodesIndices1[7], 1.0, 0.284 , 30.0e6); + add_Edge(setup,nodesIndices[0], nodesIndices1[5],area,density,stiffness); + add_Edge(setup,nodesIndices[1], nodesIndices1[3],area,density,stiffness); + add_Edge(setup,nodesIndices[2], nodesIndices1[1],area,density,stiffness); + add_Edge(setup,nodesIndices[3], nodesIndices1[7],area,density,stiffness); } } } ///////////////// -function createOldVoxelnotRhino(size,position){ - addNode(position.clone().add(new THREE.Vector3(0,0,0)),true, new THREE.Vector3(0,0,0)); +function createOldVoxelnotRhino(setup,size,position){ + add_Node(setup,position.clone().add(new THREE.Vector3(0,0,0)),true, new THREE.Vector3(0,0,0)); - addNode(position.clone().add(new THREE.Vector3(-size, size*1.5,-size)),false, new THREE.Vector3(0,-200,0)); - addNode(position.clone().add(new THREE.Vector3(-size, size*1.5, size)),false, new THREE.Vector3(0,-200,0)); - addNode(position.clone().add(new THREE.Vector3( size, size*1.5, size)),false, new THREE.Vector3(0,-200,0)); - addNode(position.clone().add(new THREE.Vector3( size, size*1.5,-size)),false, new THREE.Vector3(0,-200,0)); + add_Node(setup,position.clone().add(new THREE.Vector3(-size, size*1.5,-size)),false, new THREE.Vector3(0,-200,0)); + add_Node(setup,position.clone().add(new THREE.Vector3(-size, size*1.5, size)),false, new THREE.Vector3(0,-200,0)); + add_Node(setup,position.clone().add(new THREE.Vector3( size, size*1.5, size)),false, new THREE.Vector3(0,-200,0)); + add_Node(setup,position.clone().add(new THREE.Vector3( size, size*1.5,-size)),false, new THREE.Vector3(0,-200,0)); - addNode(position.clone().add(new THREE.Vector3(0, size*1.5*2,0)),false, new THREE.Vector3(0,-400,0)); + add_Node(setup,position.clone().add(new THREE.Vector3(0, size*1.5*2,0)),false, new THREE.Vector3(0,-400,0)); - addEdge(0, 1, 1.0, 0.284 , 30.0e6); - addEdge(0, 2, 1.0, 0.284 , 30.0e6); - addEdge(0, 3, 1.0, 0.284 , 30.0e6); - addEdge(0, 4, 1.0, 0.284 , 30.0e6); + add_Edge(setup,0, 1, 1.0, 0.284 , 30.0e6); + add_Edge(setup,0, 2, 1.0, 0.284 , 30.0e6); + add_Edge(setup,0, 3, 1.0, 0.284 , 30.0e6); + add_Edge(setup,0, 4, 1.0, 0.284 , 30.0e6); - addEdge(1, 2, 1.0, 0.284 , 30.0e6); - addEdge(2, 3, 1.0, 0.284 , 30.0e6); - addEdge(3, 4, 1.0, 0.284 , 30.0e6); - addEdge(4, 1, 1.0, 0.284 , 30.0e6); + add_Edge(setup,1, 2, 1.0, 0.284 , 30.0e6); + add_Edge(setup,2, 3, 1.0, 0.284 , 30.0e6); + add_Edge(setup,3, 4, 1.0, 0.284 , 30.0e6); + add_Edge(setup,4, 1, 1.0, 0.284 , 30.0e6); - addEdge(5, 1, 1.0, 0.284 , 30.0e6); - addEdge(5, 2, 1.0, 0.284 , 30.0e6); - addEdge(5, 3, 1.0, 0.284 , 30.0e6); - addEdge(5, 4, 1.0, 0.284 , 30.0e6); + add_Edge(setup,5, 1, 1.0, 0.284 , 30.0e6); + add_Edge(setup,5, 2, 1.0, 0.284 , 30.0e6); + add_Edge(setup,5, 3, 1.0, 0.284 , 30.0e6); + add_Edge(setup,5, 4, 1.0, 0.284 , 30.0e6); // console.log(setup) } -function createVoxelnotRhino(size,position){ +function createVoxelnotRhino(setup,size,position){ //down square - addNode(position.clone().add(new THREE.Vector3(-size, 0,-size)),true, new THREE.Vector3(0,0,0));//0 - addNode(position.clone().add(new THREE.Vector3(-size, 0, 0)),true, new THREE.Vector3(0,0,0));//1//mid - addNode(position.clone().add(new THREE.Vector3(-size, 0, size)),true, new THREE.Vector3(0,0,0));//2 - addNode(position.clone().add(new THREE.Vector3( 0, 0, size)),true, new THREE.Vector3(0,0,0));//3//mid - addNode(position.clone().add(new THREE.Vector3( size, 0, size)),true, new THREE.Vector3(0,0,0));//4 - addNode(position.clone().add(new THREE.Vector3( size, 0, 0)),true, new THREE.Vector3(0,0,0));//5//mid - addNode(position.clone().add(new THREE.Vector3( size, 0,-size)),true, new THREE.Vector3(0,0,0));//6 - addNode(position.clone().add(new THREE.Vector3( 0, 0,-size)),true, new THREE.Vector3(0,0,0));//7//mid + add_Node(setup,position.clone().add(new THREE.Vector3(-size, 0,-size)),true, new THREE.Vector3(0,0,0));//0 + add_Node(setup,position.clone().add(new THREE.Vector3(-size, 0, 0)),true, new THREE.Vector3(0,0,0));//1//mid + add_Node(setup,position.clone().add(new THREE.Vector3(-size, 0, size)),true, new THREE.Vector3(0,0,0));//2 + add_Node(setup,position.clone().add(new THREE.Vector3( 0, 0, size)),true, new THREE.Vector3(0,0,0));//3//mid + add_Node(setup,position.clone().add(new THREE.Vector3( size, 0, size)),true, new THREE.Vector3(0,0,0));//4 + add_Node(setup,position.clone().add(new THREE.Vector3( size, 0, 0)),true, new THREE.Vector3(0,0,0));//5//mid + add_Node(setup,position.clone().add(new THREE.Vector3( size, 0,-size)),true, new THREE.Vector3(0,0,0));//6 + add_Node(setup,position.clone().add(new THREE.Vector3( 0, 0,-size)),true, new THREE.Vector3(0,0,0));//7//mid - addEdge(0, 1, 1.0, 0.284 , 30.0e6); - addEdge(1, 2, 1.0, 0.284 , 30.0e6); - addEdge(2, 3, 1.0, 0.284 , 30.0e6); - addEdge(3, 4, 1.0, 0.284 , 30.0e6); - addEdge(4, 5, 1.0, 0.284 , 30.0e6); - addEdge(5, 6, 1.0, 0.284 , 30.0e6); - addEdge(6, 7, 1.0, 0.284 , 30.0e6); - addEdge(7, 0, 1.0, 0.284 , 30.0e6); - - addEdge(1, 3, 1.0, 0.284 , 30.0e6); - addEdge(3, 5, 1.0, 0.284 , 30.0e6); - addEdge(5, 7, 1.0, 0.284 , 30.0e6); - addEdge(7, 1, 1.0, 0.284 , 30.0e6); + add_Edge(setup,0, 1, 1.0, 0.284 , 30.0e6); + add_Edge(setup,1, 2, 1.0, 0.284 , 30.0e6); + add_Edge(setup,2, 3, 1.0, 0.284 , 30.0e6); + add_Edge(setup,3, 4, 1.0, 0.284 , 30.0e6); + add_Edge(setup,4, 5, 1.0, 0.284 , 30.0e6); + add_Edge(setup,5, 6, 1.0, 0.284 , 30.0e6); + add_Edge(setup,6, 7, 1.0, 0.284 , 30.0e6); + add_Edge(setup,7, 0, 1.0, 0.284 , 30.0e6); + + add_Edge(setup,1, 3, 1.0, 0.284 , 30.0e6); + add_Edge(setup,3, 5, 1.0, 0.284 , 30.0e6); + add_Edge(setup,5, 7, 1.0, 0.284 , 30.0e6); + add_Edge(setup,7, 1, 1.0, 0.284 , 30.0e6); //up square - addNode(position.clone().add(new THREE.Vector3(-size, size*2,-size)),false, new THREE.Vector3(0,-400,0));//0+8 - addNode(position.clone().add(new THREE.Vector3(-size, size*2, 0)),false, new THREE.Vector3(0,-400,0));//1+8//mid - addNode(position.clone().add(new THREE.Vector3(-size, size*2, size)),false, new THREE.Vector3(0,-400,0));//2+8 - addNode(position.clone().add(new THREE.Vector3( 0, size*2, size)),false, new THREE.Vector3(0,-400,0));//3+8//mid - addNode(position.clone().add(new THREE.Vector3( size, size*2, size)),false, new THREE.Vector3(0,-400,0));//4+8 - addNode(position.clone().add(new THREE.Vector3( size, size*2, 0)),false, new THREE.Vector3(0,-400,0));//5+8//mid - addNode(position.clone().add(new THREE.Vector3( size, size*2,-size)),false, new THREE.Vector3(0,-400,0));//6+8 - addNode(position.clone().add(new THREE.Vector3( 0, size*2,-size)),false, new THREE.Vector3(0,-400,0));//7+8//mid + add_Node(setup,position.clone().add(new THREE.Vector3(-size, size*2,-size)),false, new THREE.Vector3(0,-400,0));//0+8 + add_Node(setup,position.clone().add(new THREE.Vector3(-size, size*2, 0)),false, new THREE.Vector3(0,-400,0));//1+8//mid + add_Node(setup,position.clone().add(new THREE.Vector3(-size, size*2, size)),false, new THREE.Vector3(0,-400,0));//2+8 + add_Node(setup,position.clone().add(new THREE.Vector3( 0, size*2, size)),false, new THREE.Vector3(0,-400,0));//3+8//mid + add_Node(setup,position.clone().add(new THREE.Vector3( size, size*2, size)),false, new THREE.Vector3(0,-400,0));//4+8 + add_Node(setup,position.clone().add(new THREE.Vector3( size, size*2, 0)),false, new THREE.Vector3(0,-400,0));//5+8//mid + add_Node(setup,position.clone().add(new THREE.Vector3( size, size*2,-size)),false, new THREE.Vector3(0,-400,0));//6+8 + add_Node(setup,position.clone().add(new THREE.Vector3( 0, size*2,-size)),false, new THREE.Vector3(0,-400,0));//7+8//mid - addEdge(0+8, 1+8, 1.0, 0.284 , 30.0e6); - addEdge(1+8, 2+8, 1.0, 0.284 , 30.0e6); - addEdge(2+8, 3+8, 1.0, 0.284 , 30.0e6); - addEdge(3+8, 4+8, 1.0, 0.284 , 30.0e6); - addEdge(4+8, 5+8, 1.0, 0.284 , 30.0e6); - addEdge(5+8, 6+8, 1.0, 0.284 , 30.0e6); - addEdge(6+8, 7+8, 1.0, 0.284 , 30.0e6); - addEdge(7+8, 0+8, 1.0, 0.284 , 30.0e6); - - addEdge(1+8, 3+8, 1.0, 0.284 , 30.0e6); - addEdge(3+8, 5+8, 1.0, 0.284 , 30.0e6); - addEdge(5+8, 7+8, 1.0, 0.284 , 30.0e6); - addEdge(7+8, 1+8, 1.0, 0.284 , 30.0e6); + add_Edge(setup,0+8, 1+8, 1.0, 0.284 , 30.0e6); + add_Edge(setup,1+8, 2+8, 1.0, 0.284 , 30.0e6); + add_Edge(setup,2+8, 3+8, 1.0, 0.284 , 30.0e6); + add_Edge(setup,3+8, 4+8, 1.0, 0.284 , 30.0e6); + add_Edge(setup,4+8, 5+8, 1.0, 0.284 , 30.0e6); + add_Edge(setup,5+8, 6+8, 1.0, 0.284 , 30.0e6); + add_Edge(setup,6+8, 7+8, 1.0, 0.284 , 30.0e6); + add_Edge(setup,7+8, 0+8, 1.0, 0.284 , 30.0e6); + + add_Edge(setup,1+8, 3+8, 1.0, 0.284 , 30.0e6); + add_Edge(setup,3+8, 5+8, 1.0, 0.284 , 30.0e6); + add_Edge(setup,5+8, 7+8, 1.0, 0.284 , 30.0e6); + add_Edge(setup,7+8, 1+8, 1.0, 0.284 , 30.0e6); //left square - addNode(position.clone().add(new THREE.Vector3(-size, size,-size)),false, new THREE.Vector3(0,0,0));//0+16 - addNode(position.clone().add(new THREE.Vector3( size, size,-size)),false, new THREE.Vector3(0,0,0));//1+16 + add_Node(setup,position.clone().add(new THREE.Vector3(-size, size,-size)),false, new THREE.Vector3(0,0,0));//0+16 + add_Node(setup,position.clone().add(new THREE.Vector3( size, size,-size)),false, new THREE.Vector3(0,0,0));//1+16 - addEdge(0, 16, 1.0, 0.284 , 30.0e6); - addEdge(16, 8, 1.0, 0.284 , 30.0e6); + add_Edge(setup,0, 16, 1.0, 0.284 , 30.0e6); + add_Edge(setup,16, 8, 1.0, 0.284 , 30.0e6); - addEdge(6, 17, 1.0, 0.284 , 30.0e6); - addEdge(17, 14, 1.0, 0.284 , 30.0e6); + add_Edge(setup,6, 17, 1.0, 0.284 , 30.0e6); + add_Edge(setup,17, 14, 1.0, 0.284 , 30.0e6); - addEdge(16, 07, 1.0, 0.284 , 30.0e6); - addEdge(15, 16, 1.0, 0.284 , 30.0e6); - addEdge(17, 15, 1.0, 0.284 , 30.0e6); - addEdge(07, 17, 1.0, 0.284 , 30.0e6); + add_Edge(setup,16, 07, 1.0, 0.284 , 30.0e6); + add_Edge(setup,15, 16, 1.0, 0.284 , 30.0e6); + add_Edge(setup,17, 15, 1.0, 0.284 , 30.0e6); + add_Edge(setup,07, 17, 1.0, 0.284 , 30.0e6); //right square - addNode(position.clone().add(new THREE.Vector3(-size, size, size)),false, new THREE.Vector3(0,0,0));//0+18 - addNode(position.clone().add(new THREE.Vector3( size, size, size)),false, new THREE.Vector3(0,0,0));//1+18 + add_Node(setup,position.clone().add(new THREE.Vector3(-size, size, size)),false, new THREE.Vector3(0,0,0));//0+18 + add_Node(setup,position.clone().add(new THREE.Vector3( size, size, size)),false, new THREE.Vector3(0,0,0));//1+18 - addEdge(2, 18, 1.0, 0.284 , 30.0e6); - addEdge(18, 10, 1.0, 0.284 , 30.0e6); + add_Edge(setup,2, 18, 1.0, 0.284 , 30.0e6); + add_Edge(setup,18, 10, 1.0, 0.284 , 30.0e6); - addEdge(4, 19, 1.0, 0.284 , 30.0e6); - addEdge(19, 12, 1.0, 0.284 , 30.0e6); + add_Edge(setup,4, 19, 1.0, 0.284 , 30.0e6); + add_Edge(setup,19, 12, 1.0, 0.284 , 30.0e6); - addEdge(18, 03, 1.0, 0.284 , 30.0e6); - addEdge(11, 18, 1.0, 0.284 , 30.0e6); - addEdge(19, 11, 1.0, 0.284 , 30.0e6); - addEdge(03, 19, 1.0, 0.284 , 30.0e6); + add_Edge(setup,18, 03, 1.0, 0.284 , 30.0e6); + add_Edge(setup,11, 18, 1.0, 0.284 , 30.0e6); + add_Edge(setup,19, 11, 1.0, 0.284 , 30.0e6); + add_Edge(setup,03, 19, 1.0, 0.284 , 30.0e6); //front square - addEdge(16, 01, 1.0, 0.284 , 30.0e6); - addEdge(09, 16, 1.0, 0.284 , 30.0e6); - addEdge(18, 09, 1.0, 0.284 , 30.0e6); - addEdge(01, 18, 1.0, 0.284 , 30.0e6); + add_Edge(setup,16, 01, 1.0, 0.284 , 30.0e6); + add_Edge(setup,09, 16, 1.0, 0.284 , 30.0e6); + add_Edge(setup,18, 09, 1.0, 0.284 , 30.0e6); + add_Edge(setup,01, 18, 1.0, 0.284 , 30.0e6); //back square - addEdge(17, 05, 1.0, 0.284 , 30.0e6); - addEdge(13, 17, 1.0, 0.284 , 30.0e6); - addEdge(19, 13, 1.0, 0.284 , 30.0e6); - addEdge(05, 19, 1.0, 0.284 , 30.0e6); + add_Edge(setup,17, 05, 1.0, 0.284 , 30.0e6); + add_Edge(setup,13, 17, 1.0, 0.284 , 30.0e6); + add_Edge(setup,19, 13, 1.0, 0.284 , 30.0e6); + add_Edge(setup,05, 19, 1.0, 0.284 , 30.0e6); } -function createSimpleSetupnotRhino(size,position){ - addNode(position.clone().add(new THREE.Vector3(-0, 2*size,-0)),true, new THREE.Vector3(0,0,0));//0 - addNode(position.clone().add(new THREE.Vector3(-0, 0,-0)),true, new THREE.Vector3(0,0,0));//0 - addNode(position.clone().add(new THREE.Vector3(2*size, size,)),false, new THREE.Vector3(0,-200,0));//0 +function createSimpleSetupnotRhino(setup,size,position){ + add_Node(setup,position.clone().add(new THREE.Vector3(-0, 2*size,-0)),true, new THREE.Vector3(0,0,0));//0 + add_Node(setup,position.clone().add(new THREE.Vector3(-0, 0,-0)),true, new THREE.Vector3(0,0,0));//0 + add_Node(setup,position.clone().add(new THREE.Vector3(2*size, size,)),false, new THREE.Vector3(0,-200,0));//0 - addEdge(0, 2, 1.0, 0.284 , 30.0e6); - addEdge(1, 2, 2.0, 0.284 , 30.0e6); + add_Edge(setup,0, 2, 1.0, 0.284 , 30.0e6); + add_Edge(setup,1, 2, 2.0, 0.284 , 30.0e6); } +/////////////hierarical nodes/// +function createHieraricalVoxel(setup,size,position,area,density,stiffness){ + var i=parseInt(position.x/size); + var j=parseInt(position.y/size); + var k=parseInt(position.z/size); + occupancy[i][j][k]=checkandAdd(setup,position); + //create node at size +position + + var list=[]; + list.push([0,0,1]); + list.push([0,0,-1]); + list.push([1,0,0]); + list.push([-1,0,0]); + list.push([0,1,0]); + list.push([0,-1,0]); + + var count=0; + + for(var count=0;count<list.length;count++){ + + var ii=i+list[count][0]; + var jj=j+list[count][1]; + var kk=k+list[count][2]; + + if((ii>=0 && ii<gridSize) && (jj>=0 && jj<gridSize) && (kk>=0 && kk<gridSize)){//in bounds + //check neighbours + if(occupancy[ii][jj][kk]>-0.5){ + add_Edge(setup,occupancy[i][j][k], occupancy[ii][jj][kk], area,density,stiffness); + } + } + } +} + ///old setups var setupSimple={ nodes: [ @@ -481,27 +556,25 @@ var setupEmpty={//empty animation : { showDisplacement : true, - exageration : 2000, + exageration : 20e2, speed:3.0 }, viz : { - minStress:-500, - maxStress: 500, + minStress:10e6, + maxStress: -10e6, colorMaps:[coolwarm,YlGnBu, winter ,jet], colorMap:0, }, - solve: solveFea, - bar:false }; /////////////////////drawing utils////////////////////// -function addNode(position,restrained,force){ +function add_Node(setup,position,restrained,force){ var bar=setup.bar; var numNode=setup.nodes.length; setup.nodes.push({ @@ -533,8 +606,8 @@ function addNode(position,restrained,force){ } } -function addEdge(source,target,area,density,stiffness){ - if (edgeNeeded(source,target)){ +function add_Edge(setup,source,target,area,density,stiffness){ + if (edgeNeeded(setup,source,target)){ var numEdge=setup.edges.length; setup.edges.push({ id: 'e'+numEdge, source: source, target: target ,area:area,density:density,stiffness:stiffness,stress:0 }); @@ -550,35 +623,35 @@ function addEdge(source,target,area,density,stiffness){ } -function checkandAdd(pos){ +function checkandAdd(setup,pos){ var restrained=false; var force= new THREE.Vector3(0,0,0); var node=nodeAt(setup,pos); if(typeof node === 'undefined'){ //doesn't exist - addNode(toThreeVec(pos),restrained, force); + add_Node(setup,toThreeVec(pos),restrained, force); return parseInt(setup.nodes[setup.nodes.length-1].id.substring(1)); }else{ // setup.nodes.find(v => v.name === node.name).enabled = false; // if(restrained){ - // restrain(node.id) + // restrain(setup,node.id) // } - // addForce(node.id,force); + // addForce(setup,node.id,force); return parseInt(node.id.substring(1));//return name } } -function linkNodes(nodesIndices){ //create square/circle +function linkNodes(setup,nodesIndices,area, density, stiffness){ //create square/circle for(var i=0;i<nodesIndices.length-1;i++){ - addEdge(nodesIndices[i], nodesIndices[i+1], 1.0, 0.284 , 30.0e6); + add_Edge(setup,nodesIndices[i], nodesIndices[i+1], area, density , stiffness); } - addEdge(nodesIndices[nodesIndices.length-1], nodesIndices[0], 1.0, 0.284 , 30.0e6); + add_Edge(setup,nodesIndices[nodesIndices.length-1], nodesIndices[0], area, density , stiffness); } -function restrain(name){ +function restrain(setup,name){ var restrained; if(!setup.bar){ restrained=[true,true,true,true,true,true]; @@ -589,14 +662,14 @@ function restrain(name){ } -function addForce(name,force){ +function addForce(setup,name,force){ var node=setup.nodes.find(v => v.id === name); node.force.x += force.x; node.force.y += force.y; node.force.z += force.z; } -function restrainBelow(y){ +function restrainBelow(setup,y){ for(var i=0;i<setup.nodes.length;i++){ if(setup.nodes[i].position.y<=y){ if(setup.bar){ @@ -608,7 +681,7 @@ function restrainBelow(y){ } } -function addForceAbove(y,force){ +function addForceAbove(setup,y,force){ for(var i=0;i<setup.nodes.length;i++){ if(setup.nodes[i].position.y>=y){ setup.nodes[i].force.x += force.x; @@ -618,4 +691,47 @@ function addForceAbove(y,force){ } } +function restrainFromBox(setup,supports){ + for(var i=0;i<setup.nodes.length;i++){ + for(var j=0;j<supports.length;j++){ + if(supports[j][0].contains([setup.nodes[i].position.x,setup.nodes[i].position.y,setup.nodes[i].position.z])){ + setup.nodes[i].restrained_degrees_of_freedom=supports[j][1]; + } + } + } +} + +function loadFromBox(setup,loads){ + for(var i=0;i<setup.nodes.length;i++){ + for(var j=0;j<loads.length;j++){ + if(loads[j][0].contains([setup.nodes[i].position.x,setup.nodes[i].position.y,setup.nodes[i].position.z])){ + var force=loads[j][1]; + setup.nodes[i].force.x += force.x; + setup.nodes[i].force.y += force.y; + setup.nodes[i].force.z += force.z; + } + } + } +} + +function changeMaterialFromBox(setup,box){ + for(var i=0;i<setup.edges.length;i++){ + for(var j=0;j<box.length;j++){ + if(edgeInBox(setup,setup.edges[i],box[j][0])){ + setup.edges[i].area=box[j][1].area; + setup.edges[i].stiffness=box[j][1].stiffness; + setup.edges[i].density=box[j][1].density; + } + } + } +} + +function edgeInBox(setup,edge,box){ + const node1=setup.nodes[edge.source]; + const node2=setup.nodes[edge.target]; + + return box.contains([node1.position.x,node1.position.y,node1.position.z])&&box.contains([node2.position.x,node2.position.y,node2.position.z]); + +} + //////////// \ No newline at end of file diff --git a/01_Code/physical_computing_interface/simulation/visualization/main.js b/01_Code/physical_computing_interface/simulation/visualization/main.js index 91f0247fe6b61bbed16b6bbbd35704bce1dd4cbf..c7b026b1cf185c06e5eb6583a06bcb945fefd563 100644 --- a/01_Code/physical_computing_interface/simulation/visualization/main.js +++ b/01_Code/physical_computing_interface/simulation/visualization/main.js @@ -1,60 +1,118 @@ +// Amira Abdel-Rahman +// (c) Massachusetts Institute of Technology 2019 + var color1= 0xffffff; /*white*/ var color2= 0x020227; /*kohly*/ var color3= 0x1c5c61; /*teal*/ var color4= "#fa6e70"; //red/orange var color5="#380152"; //purple var color6="#696767"; //grey -var setup; -var simulationContainerName="simulation"; -var simulationContainerName1="webgl1"; -var simulationContainer1=document.getElementById( simulationContainerName1 ); -var simulationContainer=document.getElementById( simulationContainerName ); +var color7="#03dbfc"; //blue +///////////globals (in case of hierarichal)///////////// +var camera; +var gui = new dat.GUI(); -function gui(){ - var gui = new dat.GUI(); - var f1 = gui.addFolder('Displacement Animation'); - f1.add(setup.animation, 'showDisplacement'); - f1.add(setup.animation, 'exageration', 0, 10000); - f1.add(setup.animation, 'speed', 0, 5); +var clock = new THREE.Clock(); - var f2 = gui.addFolder('Stresses Visualization'); - f2.add(setup.viz, 'minStress', -1000, 0).listen(); - f2.add(setup.viz, 'maxStress', 0, 1000).listen(); - f2.add(setup.viz, 'colorMap', {coolwarm:0, YlGnBu:1, winter:2,jet:3}); +var timeElapsed = clock.getElapsedTime(); +var currTimeStep=0; +var increase=true; - // gui.add(setup, 'solve'); +var setupEmpty={//empty + nodes: [ + ], + edges: [ + ], - for (j in f2.__controllers) f2.__controllers[j].onChange (colorEdges); + //material properties - AISI 1095 Carbon Steel (Spring Steel) + ndofs : 3*6, + + animation : { + + showDisplacement : true, + exageration : 10e5/2, + speed:3.0 + + }, + viz : { + + + minStress:10e6, + maxStress: -10e6, + colorMaps:[YlGnBu,coolwarm, winter ,jet], + colorMap:0, + + }, + +}; + +var setup=JSON.parse(JSON.stringify(setupEmpty)); + + +function animate(){ + timeElapsed = clock.getElapsedTime(); + requestAnimationFrame(animate); + if(increase){ + currTimeStep+=setup.animation.speed*setup.animation.speed*0.08; //todo change to globalSetup + }else{ + currTimeStep-=setup.animation.speed*setup.animation.speed*0.08; //todo change to globalSetup + } } +animate(); +/////////////////////////////// + + +////////////threejs1 object and utils////////////////////// + +function threejs1(setup,containerName,container1Name,static=true){ + // this.line; + this.setup=setup; + this.renderer; + this.scene; + // this.camera; + this.controls; + this.containerName=containerName; + this.container = document.getElementById( this.containerName ); + this.container1Name=container1Name; + // this.line1; + this.matLineBasic; + this.matLineDashed; + this.static=static; + this.labelRenderer=[]; + // viewport + this.elementsGroup; + -var line, renderer, scene, camera, camera2, controls; -var line1; -var matLineBasic, matLineDashed; -var stats; -// var gui; -// viewport -// var insetWidth; -// var insetHeight; -var counter=0; -var clock = new THREE.Clock(); +} -function init() { - renderer = new THREE.WebGLRenderer( { antialias: true } ); - renderer.setPixelRatio( window.devicePixelRatio ); - renderer.setClearColor( color1, 1.0 ); - renderer.setSize( getWidth(), getHeight() ); - simulationContainer1.appendChild( renderer.domElement ); - scene = new THREE.Scene(); - camera = new THREE.PerspectiveCamera( 40, getWidth() / getHeight(), 1, 1000 ); - camera.position.set( - 40, 0, 60 ); - - controls = new THREE.OrbitControls( camera, renderer.domElement ); - controls.minDistance = 10; - controls.maxDistance = 500; - matLineBasic = new THREE.LineMaterial( { +threejs1.prototype.init=function() { + + this.renderer = new THREE.WebGLRenderer( { antialias: true } ); + this.renderer.setPixelRatio( window.devicePixelRatio ); + this.renderer.setClearColor( color2, 1.0 ); + this.renderer.setSize( this.getWidth(), this.getHeight() ); + this.container.appendChild( this.renderer.domElement ); + this.scene = new THREE.Scene(); + + camera = new THREE.PerspectiveCamera( 60, this.getWidth() / this.getHeight(), 1, 10000 ); + camera = new THREE.PerspectiveCamera( 45, this.getWidth()/ this.getHeight() , 1, 10000); + // camera.position.set( -gridSize*voxelSize*1.0, 0, 60 ); + // camera.position.set( 40, 0, 60 ); + // camera = new THREE.PerspectiveCamera( 45, this.getWidth()/ this.getHeight() , 1, 10000); + camera.position.set( -this.setup.gridSize*voxelSize/2, this.setup.gridSize*voxelSize, this.setup.gridSize*voxelSize/2 ); + // camera.lookAt(this.setup. gridSize/2*voxelSize, 0, this.setup.gridSize/2*voxelSize ); + + this.controls = new THREE.OrbitControls( camera, this.renderer.domElement ); + this.controls.minDistance = 10; + this.controls.maxDistance = 500; + this.controls.target= new THREE.Vector3(this.setup.gridSize/2*voxelSize, 0, this.setup.gridSize/2*voxelSize); + this.controls.autoRotate=true; + this.controls.update(); + + this.matLineBasic = new THREE.LineMaterial( { color: 0xffffff, linewidth: 5, // in pixels vertexColors: THREE.VertexColors, @@ -74,7 +132,7 @@ function init() { // } ); // matLineDashed.defines.USE_DASH = ""; - matLineDashed = new THREE.LineMaterial( { + this.matLineDashed = new THREE.LineMaterial( { color: 0xffffff, linewidth: 5, // in pixels vertexColors: THREE.VertexColors, @@ -82,50 +140,75 @@ function init() { dashed: false } ); - - - - - - - var helper = new THREE.GridHelper( 50, 50 ); - helper.position.y = -5; + console.log(this.setup.gridSize) + var helper = new THREE.GridHelper( this.setup.gridSize, this.setup.gridSize ); + helper.position.y = -voxelSize/2; + helper.position.x = this.setup.gridSize*this.setup.voxelSize/2-this.setup.voxelSize/2; + helper.position.z = this.setup.gridSize*this.setup.voxelSize/2-this.setup.voxelSize/2; + helper.scale.x=this.setup.voxelSize; + helper.scale.z=this.setup.voxelSize; helper.material.opacity = 0.5; - helper.material.transparent = true; - // scene.add( helper ); + helper.material.transparent = true; + helper.name="gridHelper"; + this.scene.add( helper ); + + this.elementsGroup=new THREE.Group(); + this.elementsGroup.name="elementsGroup"; + + // this.labelRenderer = new THREE.CSS2DRenderer(); + // this.labelRenderer.setSize( this.getWidth(), this.getHeight() ); + // this.labelRenderer.domElement.style.position = 'absolute'; + // this.labelRenderer.domElement.style.top = 0; + // this.container.appendChild( this.labelRenderer.domElement ); + // this.controls = new THREE.OrbitControls( camera, this.labelRenderer.domElement ); + // draw forces // draw degrees of freedom - simulationContainer.addEventListener( 'resize', onWindowResize, false ); - onWindowResize(); + window.addEventListener( 'resize', onWindowResize, false ); + onWindowResize(this); - // gui(); - + this.update(this.setup); + + if(!this.static){ + this.renderEuler(); + this.animateEuler() + }else{ + this.render(); + this.animate(); + } + guiCreate(this); +}; + +threejs1.prototype.update=function(setup){ + this.setup=setup; + this.drawStructure(); + this.scene.add(this.elementsGroup); + this.colorEdges(); + this.drawConstraintBoundingBoxes(); } -//////////////////////Threejs utils////////////////////////////////////// -function drawStructure(){ +threejs1.prototype.drawStructure=function() { //draw edges - for(var i=0;i<setup.edges.length;i++){ - createEdge(setup.nodes[setup.edges[i].source].position,setup.nodes[setup.edges[i].target].position,setup.edges[i].id),false; - createEdge(setup.nodes[setup.edges[i].source].position,setup.nodes[setup.edges[i].target].position,setup.edges[i].id,true); + for(var i=0;i<this.setup.edges.length;i++){ + //this.createEdge(this.setup.nodes[this.setup.edges[i].source].position,this.setup.nodes[this.setup.edges[i].target].position,this.setup.edges[i].id,false); + this.createEdge(this.setup.nodes[this.setup.edges[i].source].position,this.setup.nodes[this.setup.edges[i].target].position,this.setup.edges[i].id,true); } // draw nodes - for(var i=0;i<setup.nodes.length;i++){ - createNode(setup.nodes[i].position,setup.nodes[i].id,false,setup.nodes[i].restrained_degrees_of_freedom[0]); - createNode(setup.nodes[i].position,setup.nodes[i].id,true,setup.nodes[i].restrained_degrees_of_freedom[0]); + for(var i=0;i<this.setup.nodes.length;i++){ + //this.createNode(this.setup.nodes[i].position,this.setup.nodes[i].id,false,this.setup.nodes[i].restrained_degrees_of_freedom[0]); + this.createNode(this.setup.nodes[i].position,this.setup.nodes[i].id,true,this.setup.nodes[i].restrained_degrees_of_freedom[0]); } - drawForces(); -} - -function createEdge(fromPoint,toPoint,name,displacement){ + this.drawForces(); +}; - fromPoint=toThreeVec(fromPoint); - toPoint=toThreeVec(toPoint); +threejs1.prototype.createEdge=function(fromPoint,toPoint,name,displacement) { + fromPoint=toThreeVec(fromPoint);//todo utils + toPoint=toThreeVec(toPoint);//todo utils var positions = []; var colors = []; var points =[fromPoint,toPoint]; @@ -140,7 +223,7 @@ function createEdge(fromPoint,toPoint,name,displacement){ positions.push( point.x, point.y, point.z ); // color.setHSL( i / l, 1.0, 0.5 ); - color=interpolateLinearly(i / l, setup.viz.colorMaps[setup.viz.colorMap]); + color=interpolateLinearly(i / l, this.setup.viz.colorMaps[this.setup.viz.colorMap]); // color=interpolateLinearly(i / l, coolwarm); colors.push( color[0], color[1], color[2]); } @@ -152,9 +235,9 @@ function createEdge(fromPoint,toPoint,name,displacement){ var line; if(displacement){ - line = new THREE.Line2( geometry, matLineDashed ); + line = new THREE.Line2( geometry, this.matLineDashed ); }else{ - line = new THREE.Line2( geometry, matLineBasic ); + line = new THREE.Line2( geometry, this.matLineBasic ); } line.computeLineDistances(); line.scale.set( 1, 1, 1 ); @@ -164,12 +247,16 @@ function createEdge(fromPoint,toPoint,name,displacement){ }else{ line.name=name; } + - scene.add( line ); + this.elementsGroup.add(line); + // this.scene.add( line ); -} + -function createNode(point,name,displacement,restrained){ +}; + +threejs1.prototype.createNode=function(point,name,displacement,restrained) { var geometry = new THREE.BoxGeometry( 1, 1, 1 ); var material; @@ -190,18 +277,33 @@ function createNode(point,name,displacement,restrained){ var cube = new THREE.Mesh( geometry, material ); cube.position.set(point.x, point.y, point.z); cube.scale.set(0.5, 0.5,0.5); + + if(this.setup.hierarical){ + cube.scale.set(0.75*this.setup.voxelSize, 0.75*this.setup.voxelSize,0.75*this.setup.voxelSize); + } if(displacement){ cube.name='d'+name; }else{ cube.name=name; } - scene.add( cube ); + + // var earthDiv = document.createElement( 'div' ); + // earthDiv.className = 'label'; + // earthDiv.textContent = name; + // earthDiv.style.marginTop = '-1em'; + // var earthLabel = new THREE.CSS2DObject( earthDiv ); + // earthLabel.position.set( point.x*0.1, point.y*0.1, point.z*0.1 ); + // cube.add( earthLabel ); + + this.elementsGroup.add(cube); + // this.scene.add( cube ); -} + +}; -function editEdge(fromPoint,toPoint,name){ - var edge = scene.getObjectByName(name); +threejs1.prototype.editEdge=function(fromPoint,toPoint,name) { + var edge = this.scene.getObjectByName(name); var positions = []; var points =[fromPoint,toPoint]; @@ -222,153 +324,360 @@ function editEdge(fromPoint,toPoint,name){ // geometry.setColors( colors ); -} +}; -function drawForces(){ - for(var i=0;i<setup.nodes.length;i++){ +threejs1.prototype.drawForces=function() { + for(var i=0;i<this.setup.nodes.length;i++){ var dx=0.1; - var o=toThreeVec(setup.nodes[i].position); - var dir = toThreeVec(setup.nodes[i].force); + var o=toThreeVec(this.setup.nodes[i].position); + var dir = toThreeVec(this.setup.nodes[i].force); var length = dir.length (); dir.normalize(); var scale=0.002; if(length!=0){ var arrowhelper=new THREE.ArrowHelper( dir, o.sub(dir), scale*length, color4 ,scale*length, scale*length); // var arrowhelper=new THREE.ArrowHelper( dir, o.sub(dir), scale*length, color5); - scene.add(arrowhelper); + arrowhelper.name="f"+i; + this.elementsGroup.add(arrowhelper); + // this.scene.add(arrowhelper); + } } +}; + +threejs1.prototype.updateForce=function(id,f){ + var scale=0.0001; + var force=new THREE.Vector3(0,f,0); + var length = force.length (); + var arrow = this.scene.getObjectByName("f"+id.substring(1)); + // arrowhelper=new THREE.ArrowHelper( force.normalize(), arrow.position, scale*length, color4 ,scale*length, scale*length); + // arrowhelper.name="f"+id.substring(1); + arrow.setDirection(force.normalize()); + arrow.setLength(scale*length,scale*length,scale*length); + + } /////// -function animate() { - requestAnimationFrame( animate ); - // main scene - onWindowResize() ; +threejs1.prototype.animate=function() { + requestAnimationFrame( this.animate.bind(this)); + this.render(); + +}; - renderer.setClearColor( color1, 1 ); - renderer.setViewport( 0, 0, getWidth(), getHeight() ); +threejs1.prototype.animateEuler=function() { + requestAnimationFrame( this.animateEuler.bind(this)); + this.renderEuler(); +}; + +threejs1.prototype.render=function(){ + // main scene + // this.labelRenderer.render( this.scene, camera ); + + this.renderer.setClearColor( color2, 1 ); + this.renderer.setViewport( 0, 0, this.getWidth(), this.getHeight() ); // renderer will set this eventually - matLineBasic.resolution.set( getWidth(), getHeight() ); // resolution of the viewport - matLineDashed.resolution.set( getWidth(),getHeight() ); // resolution of the viewport - renderer.render( scene, camera ); + this.matLineBasic.resolution.set( this.getWidth(), this.getHeight() ); // resolution of the viewport + this.matLineDashed.resolution.set( this.getWidth(), this.getHeight() ); // resolution of the viewport + this.renderer.render( this.scene, camera ); - var timeElapsed = clock.getElapsedTime(); - var speed=setup.animation.speed; - var exageration=setup.animation.exageration; + var speed=this.setup.animation.speed; + var exageration=this.setup.animation.exageration; // var exageration=0.01; - if(setup.animation.showDisplacement){ + if(this.setup.animation.showDisplacement){ //displacement animation edges - for(var i=0;i<setup.edges.length;i++){ + for(var i=0;i<this.setup.edges.length;i++){ var fromPoint=new THREE.Vector3(0,0,0); var toPoint=new THREE.Vector3(0,0,0); - var node1=setup.nodes[setup.edges[i].source]; - var node2=setup.nodes[setup.edges[i].target]; + var node1=this.setup.nodes[this.setup.edges[i].source]; + var node2=this.setup.nodes[this.setup.edges[i].target]; + fromPoint.x = node1.position.x+node1.displacement.x*exageration+ Math.sin(timeElapsed*speed)* node1.displacement.x*exageration ; fromPoint.y = node1.position.y+node1.displacement.y*exageration+ Math.sin(timeElapsed*speed)* node1.displacement.y*exageration ; fromPoint.z = node1.position.z+node1.displacement.z*exageration+ Math.sin(timeElapsed*speed)* node1.displacement.z*exageration ; + + var node = this.scene.getObjectByName('d'+node1.id); + + node.position.x = fromPoint.x; + node.position.y = fromPoint.y; + node.position.z = fromPoint.z; + + node.rotation.x = 0+node1.angle.x*exageration+ Math.sin(timeElapsed*speed)* node1.angle.x*exageration ; + node.rotation.y = 0+node1.angle.y*exageration+ Math.sin(timeElapsed*speed)* node1.angle.y*exageration ; + node.rotation.z = 0+node1.angle.z*exageration+ Math.sin(timeElapsed*speed)* node1.angle.z*exageration ; + + toPoint.x = node2.position.x+node2.displacement.x*exageration+ Math.sin(timeElapsed*speed)* node2.displacement.x*exageration ; toPoint.y = node2.position.y+node2.displacement.y*exageration+ Math.sin(timeElapsed*speed)* node2.displacement.y*exageration ; toPoint.z = node2.position.z+node2.displacement.z*exageration+ Math.sin(timeElapsed*speed)* node2.displacement.z*exageration ; - editEdge(fromPoint,toPoint,'d'+setup.edges[i].id); + node = this.scene.getObjectByName('d'+node2.id); + + node.position.x = toPoint.x; + node.position.y = toPoint.y; + node.position.z = toPoint.z; + + node.rotation.x = 0+node2.angle.x*exageration+ Math.sin(timeElapsed*speed)* node2.angle.x*exageration ; + node.rotation.y = 0+node2.angle.y*exageration+ Math.sin(timeElapsed*speed)* node2.angle.y*exageration ; + node.rotation.z = 0+node2.angle.z*exageration+ Math.sin(timeElapsed*speed)* node2.angle.z*exageration ; + + + this.editEdge(fromPoint,toPoint,'d'+this.setup.edges[i].id); } //displacement animation nodes - for(var i=0;i<setup.nodes.length;i++){ - var node = scene.getObjectByName('d'+setup.nodes[i].id); - // var origPos=toThreeVec(setup.nodes[i].position); - // var displacement=toThreeVec(setup.nodes[i].displacement).multiplyScalar(exageration); - // var currPos=origPos.clone().addVectors(displacement,displacement.clone().multiplyScalar(Math.sin(timeElapsed*speed))); - // nodeD.position.set(currPos.x,currPos.y,currPos.z); - node.position.x = setup.nodes[i].position.x+setup.nodes[i].displacement.x*exageration+ Math.sin(timeElapsed*speed)* setup.nodes[i].displacement.x*exageration ; - node.position.y = setup.nodes[i].position.y+setup.nodes[i].displacement.y*exageration+ Math.sin(timeElapsed*speed)* setup.nodes[i].displacement.y*exageration ; - node.position.z = setup.nodes[i].position.z+setup.nodes[i].displacement.z*exageration+ Math.sin(timeElapsed*speed)* setup.nodes[i].displacement.z*exageration ; - - node.rotation.x = 0+setup.nodes[i].angle.x*exageration+ Math.sin(timeElapsed*speed)* setup.nodes[i].angle.x*exageration ; - node.rotation.y = 0+setup.nodes[i].angle.y*exageration+ Math.sin(timeElapsed*speed)* setup.nodes[i].angle.y*exageration ; - node.rotation.z = 0+setup.nodes[i].angle.z*exageration+ Math.sin(timeElapsed*speed)* setup.nodes[i].angle.z*exageration ; + // for(var i=0;i<this.setup.nodes.length;i++){ + // var node = this.scene.getObjectByName('d'+this.setup.nodes[i].id); + // // var origPos=toThreeVec(setup.nodes[i].position); + // // var displacement=toThreeVec(setup.nodes[i].displacement).multiplyScalar(exageration); + // // var currPos=origPos.clone().addVectors(displacement,displacement.clone().multiplyScalar(Math.sin(timeElapsed*speed))); + // // nodeD.position.set(currPos.x,currPos.y,currPos.z); + // node.position.x = this.setup.nodes[i].position.x+this.setup.nodes[i].displacement.x*exageration+ Math.sin(timeElapsed*speed)*this.setup.nodes[i].displacement.x*exageration ; + // node.position.y = this.setup.nodes[i].position.y+this.setup.nodes[i].displacement.y*exageration+ Math.sin(timeElapsed*speed)*this.setup.nodes[i].displacement.y*exageration ; + // node.position.z = this.setup.nodes[i].position.z+this.setup.nodes[i].displacement.z*exageration+ Math.sin(timeElapsed*speed)*this.setup.nodes[i].displacement.z*exageration ; + + // node.rotation.x = 0+this.setup.nodes[i].angle.x*exageration+ Math.sin(timeElapsed*speed)* this.setup.nodes[i].angle.x*exageration ; + // node.rotation.y = 0+this.setup.nodes[i].angle.y*exageration+ Math.sin(timeElapsed*speed)* this.setup.nodes[i].angle.y*exageration ; + // node.rotation.z = 0+this.setup.nodes[i].angle.z*exageration+ Math.sin(timeElapsed*speed)* this.setup.nodes[i].angle.z*exageration ; - } + // } } - -} -function animateEuler() { - requestAnimationFrame( animateEuler ); +}; + +threejs1.prototype.renderEuler=function(){ // main scene - renderer.setClearColor( color2, 1 ); - renderer.setViewport( 0, 0, getWidth(), getHeight() ); + this.renderer.setClearColor( color2, 1 ); + this.renderer.setViewport( 0, 0, this.getWidth(), this.getHeight() ); // renderer will set this eventually - matLineBasic.resolution.set( getWidth(), getHeight() ); // resolution of the viewport - matLineDashed.resolution.set( getWidth(), getHeight() ); // resolution of the viewport - renderer.render( scene, camera ); + this.matLineBasic.resolution.set( this.getWidth(), this.getHeight() ); // resolution of the viewport + this.matLineDashed.resolution.set( this.getWidth(), this.getHeight() ); // resolution of the viewport + this.renderer.render( this.scene, camera ); - var timeElapsed = clock.getElapsedTime(); - var speed=setup.animation.speed; - var exageration=setup.animation.exageration; - // var exageration=0.01; + var speed=this.setup.animation.speed; + var exageration=this.setup.animation.exageration; - doTimeStep(setup,dt); - - if(setup.animation.showDisplacement){ - //displacement animation edges - // for(var i=0;i<setup.edges.length;i++){ - // var fromPoint=new THREE.Vector3(0,0,0); - // var toPoint=new THREE.Vector3(0,0,0); - // var node1=setup.nodes[setup.edges[i].source]; - // var node2=setup.nodes[setup.edges[i].target]; - // fromPoint.x = node1.position.x+node1.displacement.x*exageration+ Math.sin(timeElapsed*speed)* node1.displacement.x*exageration ; - // fromPoint.y = node1.position.y+node1.displacement.y*exageration+ Math.sin(timeElapsed*speed)* node1.displacement.y*exageration ; - // fromPoint.z = node1.position.z+node1.displacement.z*exageration+ Math.sin(timeElapsed*speed)* node1.displacement.z*exageration ; - // toPoint.x = node2.position.x+node2.displacement.x*exageration+ Math.sin(timeElapsed*speed)* node2.displacement.x*exageration ; - // toPoint.y = node2.position.y+node2.displacement.y*exageration+ Math.sin(timeElapsed*speed)* node2.displacement.y*exageration ; - // toPoint.z = node2.position.z+node2.displacement.z*exageration+ Math.sin(timeElapsed*speed)* node2.displacement.z*exageration ; - - // editEdge(fromPoint,toPoint,'d'+setup.edges[i].id); - + + //todo later change how it's implemented + if(this.setup.nodes[0].posTimeSteps){ + var numIntervals=this.setup.nodes[0].posTimeSteps.length; + // if(currTimeStep>=numIntervals){ + // currTimeStep=numIntervals-1; + // increase=false; + // }else if(currTimeStep<0){ + // currTimeStep=0; + // increase=true; // } - //displacement animation nodes - for(var i=0;i<setup.nodes.length;i++){ - var node = scene.getObjectByName('d'+setup.nodes[i].id); - // var origPos=toThreeVec(setup.nodes[i].position); - // var displacement=toThreeVec(setup.nodes[i].displacement).multiplyScalar(exageration); - // var currPos=origPos.clone().addVectors(displacement,displacement.clone().multiplyScalar(Math.sin(timeElapsed*speed))); - // nodeD.position.set(currPos.x,currPos.y,currPos.z); - node.position.x = setup.nodes[i].currPosition.x; - node.position.y = setup.nodes[i].currPosition.y; - node.position.z = setup.nodes[i].currPosition.z; - - // node.rotation.x = 0+setup.nodes[i].angle.x*exageration+ Math.sin(timeElapsed*speed)* setup.nodes[i].angle.x*exageration ; - // node.rotation.y = 0+setup.nodes[i].angle.y*exageration+ Math.sin(timeElapsed*speed)* setup.nodes[i].angle.y*exageration ; - // node.rotation.z = 0+setup.nodes[i].angle.z*exageration+ Math.sin(timeElapsed*speed)* setup.nodes[i].angle.z*exageration ; + if(currTimeStep>=numIntervals){ + currTimeStep=0; + } + + var index=parseInt(currTimeStep); + if(this.setup.animation.showDisplacement){ + //displacement animation edges + for(var i=0;i<this.setup.edges.length;i++){ + var fromPoint=new THREE.Vector3(0,0,0); + var toPoint=new THREE.Vector3(0,0,0); + var node1=this.setup.nodes[this.setup.edges[i].source]; + var node2=this.setup.nodes[this.setup.edges[i].target]; + + fromPoint.x = node1.position.x+node1.posTimeSteps[index].x*exageration ; + fromPoint.y = node1.position.y+node1.posTimeSteps[index].y*exageration ; + fromPoint.z = node1.position.z+node1.posTimeSteps[index].z*exageration ; + + var node = this.scene.getObjectByName('d'+node1.id); + //todo check if this is effecient or ject go thought nodes + + node.position.x = fromPoint.x; + node.position.y = fromPoint.y; + node.position.z = fromPoint.z; + + node.rotation.x = 0+node1.angTimeSteps[index].x*exageration ; + node.rotation.y = 0+node1.angTimeSteps[index].y*exageration ; + node.rotation.z = 0+node1.angTimeSteps[index].z*exageration ; + + this.updateForce(node1.id,getForce(node1.position.z,currTimeStep)); + + + toPoint.x = node2.position.x+node2.posTimeSteps[index].x*exageration ; + toPoint.y = node2.position.y+node2.posTimeSteps[index].y*exageration ; + toPoint.z = node2.position.z+node2.posTimeSteps[index].z*exageration ; + + node = this.scene.getObjectByName('d'+node2.id); + + node.position.x = toPoint.x; + node.position.y = toPoint.y; + node.position.z = toPoint.z; + + node.rotation.x = 0+node2.angTimeSteps[index].x*exageration ; + node.rotation.y = 0+node2.angTimeSteps[index].y*exageration ; + node.rotation.z = 0+node2.angTimeSteps[index].z*exageration ; + + this.updateForce(node2.id,getForce(node2.position.z,currTimeStep)); + + + this.editEdge(fromPoint,toPoint,'d'+this.setup.edges[i].id); + if(globalSetup.updateStress){ + this.colorEdge(this.setup.edges[i].stressTimeSteps[index],'d'+this.setup.edges[i].id); + } + + + } + } + } + +}; +threejs1.prototype.getWidth=function(){ + // return container.style.width; + if(this.container1Name===""){ + return window.innerWidth; + }else{ + return $('#'+this.container1Name).width() ; } - -} + +}; -function onWindowResize() { - camera.aspect = getWidth() / getHeight(); +threejs1.prototype.getHeight=function(){ + // return container.style.height; + if(this.container1Name===""){ + console.log() + return window.innerHeight ; + }else{ + return $('#'+this.container1Name).height() ; + } +}; + +/////events//// + +//todo change +function onWindowResize(sim) { + camera.aspect = sim.getWidth() / sim.getHeight(); camera.updateProjectionMatrix(); - renderer.setSize( getWidth(), getHeight() ); + sim.renderer.setSize( sim.getWidth(), sim.getHeight() ); + } -var getWidth=function(){ - // return container.style.width; - return $('#'+simulationContainerName).width() ; +//////////////// + +threejs1.prototype.colorEdges=function() { + + for(var ii=0;ii<this.setup.edges.length;ii++){ + var element=this.setup.edges[ii]; + //this.colorEdge(element.stress,element.id); + this.colorEdge(element.stress,'d'+element.id); + } }; -var getHeight=function(){ - // return container.style.height; - return $('#'+simulationContainerName).height() ; +threejs1.prototype.colorEdge=function(val,name) { + + var colors = []; + var val=map(val,this.setup.viz.minStress,this.setup.viz.maxStress,1.0,0.0); + var divisions = Math.round( 12 * 2 ); + + for ( var i = 0, l = divisions; i <= l; i ++ ) { + color=interpolateLinearly(val, this.setup.viz.colorMaps[this.setup.viz.colorMap]); + colors.push( color[0], color[1], color[2]); + } + var edge = this.scene.getObjectByName(name); + edge.geometry.setColors( colors ); + }; +threejs1.prototype.drawConstraintBoundingBoxes=function() { + let supports=this.setup.supports; + let loads=this.setup.loads; + if (supports ) { + for (var i=0;i< supports.length;i++) { + let s=supports[i][0]; + this.drawBox(s.min,s.max,color4); + } + } + if (loads ) { + for (var i=0;i< loads.length;i++) { + let l=loads[i][0]; + this.drawBox(l.min,l.max,color7); + } + + } + +}; + +threejs1.prototype.drawBox=function(min,max,color) { + var box = new THREE.Box3(new THREE.Vector3(min[0],min[1],min[2]),new THREE.Vector3(max[0],max[1],max[2])); + var helper = new THREE.Box3Helper( box, color ); + this.elementsGroup.add(helper); + // this.scene.add( helper ); + // todo add name?? +}; + +threejs1.prototype.reset=function(setup){ + // console.log(this.elementsGroup.getObjectByName( "e0" )) + // var object = this.scene.getObjectByName( "elementsGroup" ); + // if(object){ + // this.scene.remove(object); + // } + + var scene=this.scene; + this.scene.traverse( function ( object ) { + + if(object.name!="gridHelper"&&object.type!="Scene"){ + // console.log(object) + // console.log(this.scene) + // object.geometry.dispose(); + scene.remove(object); + } + // // if ( object.type =="Mesh" ){ + // // if ( parseInt(object.name) >num-1){ + // // object.geometry.dispose(); + // // console.log(object) + // // scene.remove(object); + // // } + // // } + } ); + this.elementsGroup=new THREE.Group(); + this.elementsGroup.name="elementsGroup"; + + setup=JSON.parse(JSON.stringify(setupEmpty)); + this.setup=setup; + return this.setup; + +} + + + +/////////////////gui//////////////// +function guiCreate (three){ + + + var f1 = gui.addFolder('Displacement Animation '+three.containerName); + f1.add(three.setup.animation, 'showDisplacement'); + f1.add(three.setup.animation, 'exageration', 0, 10e4); + f1.add(three.setup.animation, 'speed', 0, 5); + + var f2 = gui.addFolder('Stresses Visualization '+three.containerName); + f2.add(three.setup.viz, 'minStress', -1000, 0).listen(); + f2.add(three.setup.viz, 'maxStress', 0, 1000).listen(); + f2.add(three.setup.viz, 'colorMap', {coolwarm:0, YlGnBu:1, winter:2,jet:3}); + + // gui.add(setup, 'solve'); + + for (j in f2.__controllers) f2.__controllers[j].onChange (updateColors.bind(this)); //todo check three + +} + +//todo remove this +function updateColors(){ + sim.colorEdges(); + // three1.colorEdges(); +} + diff --git a/01_Code/physical_computing_interface/simulation/visualization/utils.js b/01_Code/physical_computing_interface/simulation/visualization/utils.js index 8da5e8594ac94caeb4473dbd3f17ea3ba317871f..d86fdb270b0abf00eb63f509b0686d4933b5b260 100644 --- a/01_Code/physical_computing_interface/simulation/visualization/utils.js +++ b/01_Code/physical_computing_interface/simulation/visualization/utils.js @@ -1,3 +1,6 @@ +// Amira Abdel-Rahman +// (c) Massachusetts Institute of Technology 2019 + ////////////utils///////////////////// function map (value, x1, y1, x2, y2) { return (value - x1) * (y2 - x2) / (y1 - x1) + x2; @@ -82,14 +85,13 @@ function nodeAt(setup,pos){ function getNodebyName(setup,name){ return setup.nodes.find(node => node.name===name); } -function edgeNeeded(source,target){ +function edgeNeeded(setup,source,target){ var e=setup.edges.find(edge => (edge.source===source && edge.target===target) || (edge.source===target && edge.target===source)); var b=(typeof e === 'undefined'); return b; } -//////////////// - +////////////// function updateDisplacement(X){ var count=0; for(var i=0;i<setup.nodes.length;i++){ @@ -127,34 +129,11 @@ function updateStresses(S){ element.stress=S[ii]; } if(!node){ - colorEdges(); + three.colorEdges(); //todo check!! } } -function colorEdges(){ - for(var ii=0;ii<setup.edges.length;ii++){ - var element=setup.edges[ii]; - colorEdge(element.stress,element.id); - colorEdge(element.stress,'d'+element.id); - } -} - -function colorEdge(val,name){ - - var colors = []; - var val=map(val,setup.viz.minStress,setup.viz.maxStress,1.0,0.0); - var divisions = Math.round( 12 * 2 ); - - for ( var i = 0, l = divisions; i <= l; i ++ ) { - color=interpolateLinearly(val, setup.viz.colorMaps[setup.viz.colorMap]); - colors.push( color[0], color[1], color[2]); - } - var edge = scene.getObjectByName(name); - edge.geometry.setColors( colors ); - -} - //////////inverse/////////////// // Lower Upper Solver function lusolve(A, b, update) {