@prefix :        <https://www.web3d.org/x3d/content/examples/Savage/GroundVehicles/Wolverine/Wolverine.ttl#> .
@prefix owl:     <http://www.w3.org/2002/07/owl#> .
@prefix rdf:     <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs:    <http://www.w3.org/2000/01/rdf-schema#> .
@prefix schema:  <http://schema.org/> .
@prefix dcterms: <http://purl.org/dc/terms/> .
@prefix xsd:     <http://www.w3.org/2001/XMLSchema#> .
@prefix x3d:     <https://www.web3d.org/specifications/x3d-4.0.xsd#> .
@prefix x3do:    <https://www.web3d.org/specifications/X3dOntology4.0#> .

:X3D a owl:NamedIndividual, x3do:X3D ;
  x3do:hasHead :head ;
  x3do:hasScene :Scene ;
  x3do:profile 'Immersive' ;
  x3do:version '3.0' ;
  x3do:noNamespaceSchemaLocation 'https://www.web3d.org/specifications/x3d-3.0.xsd' .
:head a owl:NamedIndividual, x3do:head ;
  x3do:hasParent :X3D ;
  x3do:hasMeta :meta_1_1, :meta_1_2, :meta_1_3, :meta_1_4, :meta_1_5, :meta_1_6, :meta_1_7, :meta_1_8, :meta_1_9, :meta_1_10, :meta_1_11, :meta_1_12, :meta_1_13, :meta_1_14, :meta_1_15, :meta_1_16, :meta_1_17, :meta_1_18, :meta_1_19 .
:meta_1_1 a owl:NamedIndividual, x3do:meta ;
  x3do:hasParent :head ;
  x3do:content 'Wolverine.x3d' ;
  x3do:name 'title' .
:meta_1_2 a owl:NamedIndividual, x3do:meta ;
  x3do:hasParent :head ;
  x3do:content 'Wolverine is an M1A1 tank chassis with a deployable Heavy Assualt Bridge(HAB). Original M1A1 model authored by Scott Tufts.' ;
  x3do:name 'description' .
:meta_1_3 a owl:NamedIndividual, x3do:meta ;
  x3do:hasParent :head ;
  x3do:content 'Nick Wittwer' ;
  x3do:name 'creator' .
:meta_1_4 a owl:NamedIndividual, x3do:meta ;
  x3do:hasParent :head ;
  x3do:content '15 February 2005' ;
  x3do:name 'created' .
:meta_1_5 a owl:NamedIndividual, x3do:meta ;
  x3do:hasParent :head ;
  x3do:content '20 October 2019' ;
  x3do:name 'modified' .
:meta_1_6 a owl:NamedIndividual, x3do:meta ;
  x3do:hasParent :head ;
  x3do:content 'TODO list: - split out HAB as separate model; - build prototypes; . figure out how to add HABs to scene repeatedly; - check sound and image urls, permissions' ;
  x3do:name 'warning' .
:meta_1_7 a owl:NamedIndividual, x3do:meta ;
  x3do:hasParent :head ;
  x3do:content 'WolverineConstructionReport.pdf' ;
  x3do:name 'reference' .
:meta_1_8 a owl:NamedIndividual, x3do:meta ;
  x3do:hasParent :head ;
  x3do:content 'https://www.fas.org/man/dod-101/sys/land/m1.htm' ;
  x3do:name 'reference' .
:meta_1_9 a owl:NamedIndividual, x3do:meta ;
  x3do:hasParent :head ;
  x3do:content 'https://www.fas.org/man/dod-101/sys/land/wolverine.htm' ;
  x3do:name 'reference' .
:meta_1_10 a owl:NamedIndividual, x3do:meta ;
  x3do:hasParent :head ;
  x3do:content 'https://www.fas.org/man/dod-101/sys/land/wol3.jpg' ;
  x3do:name 'Image' .
:meta_1_11 a owl:NamedIndividual, x3do:meta ;
  x3do:hasParent :head ;
  x3do:content 'https://www.fas.org/man/dod-101/sys/land/wolverine.htm' ;
  x3do:name 'drawing' .
:meta_1_12 a owl:NamedIndividual, x3do:meta ;
  x3do:hasParent :head ;
  x3do:content 'M1A1 Main Battle Tank Abrams, MBT, Wolverine, HAB, Heavy Assault Bridge, AVLB' ;
  x3do:name 'subject' .
:meta_1_13 a owl:NamedIndividual, x3do:meta ;
  x3do:hasParent :head ;
  x3do:content '../../license.html' ;
  x3do:name 'license' .
:meta_1_14 a owl:NamedIndividual, x3do:meta ;
  x3do:hasParent :head ;
  x3do:content 'https://www.web3d.org/x3d/content/examples/Basic/X3dSceneAuthoringHints.html#license' ;
  x3do:name 'license' .
:meta_1_15 a owl:NamedIndividual, x3do:meta ;
  x3do:hasParent :head ;
  x3do:content 'https://www.web3d.org/x3d/content/examples/Savage/GroundVehicles/Wolverine/Wolverine.x3d' ;
  x3do:name 'identifier' .
:meta_1_16 a owl:NamedIndividual, x3do:meta ;
  x3do:hasParent :head ;
  x3do:content 'X3D-Edit 3.2, https://www.web3d.org/x3d/tools/X3D-Edit' ;
  x3do:name 'generator' .
:meta_1_17 a owl:NamedIndividual, x3do:meta ;
  x3do:hasParent :head ;
  x3do:content 'Xeena VRML importer, X3D-Edit 3.1, https://www.web3d.org/x3d/content/README.X3D-Edit.html' ;
  x3do:name 'translator' .
:meta_1_18 a owl:NamedIndividual, x3do:meta ;
  x3do:hasParent :head ;
  x3do:content 'Vrml97ToX3dNist, http://ovrt.nist.gov/v2_x3d.html' ;
  x3do:name 'generator' .
:meta_1_19 a owl:NamedIndividual, x3do:meta ;
  x3do:hasParent :head ;
  x3do:content 'Wings3D, http://www.wings3d.com' ;
  x3do:name 'generator' .
:meta dcterms:title "Wolverine.x3d" .
:meta dcterms:description "Wolverine is an M1A1 tank chassis with a deployable Heavy Assualt Bridge(HAB). Original M1A1 model authored by Scott Tufts." .
:meta dcterms:creator "Nick Wittwer" .
:meta dcterms:created "15 February 2005" .
:meta dcterms:modified "20 October 2019" .
:meta dcterms:warning "TODO list: - split out HAB as separate model; - build prototypes; . figure out how to add HABs to scene repeatedly; - check sound and image urls, permissions" .
:meta dcterms:reference "WolverineConstructionReport.pdf" .
:meta dcterms:reference "https://www.fas.org/man/dod-101/sys/land/m1.htm" .
:meta dcterms:reference "https://www.fas.org/man/dod-101/sys/land/wolverine.htm" .
:meta dcterms:Image "https://www.fas.org/man/dod-101/sys/land/wol3.jpg" .
:meta dcterms:drawing "https://www.fas.org/man/dod-101/sys/land/wolverine.htm" .
:meta dcterms:subject "M1A1 Main Battle Tank Abrams, MBT, Wolverine, HAB, Heavy Assault Bridge, AVLB" .
:meta dcterms:license "../../license.html" .
:meta dcterms:license "https://www.web3d.org/x3d/content/examples/Basic/X3dSceneAuthoringHints.html#license" .
:meta dcterms:identifier "https://www.web3d.org/x3d/content/examples/Savage/GroundVehicles/Wolverine/Wolverine.x3d" .
:meta dcterms:generator "X3D-Edit 3.2, https://www.web3d.org/x3d/tools/X3D-Edit" .
:meta dcterms:translator "Xeena VRML importer, X3D-Edit 3.1, https://www.web3d.org/x3d/content/README.X3D-Edit.html" .
:meta dcterms:generator "Vrml97ToX3dNist, http://ovrt.nist.gov/v2_x3d.html" .
:meta dcterms:generator "Wings3D, http://www.wings3d.com" .
:Scene a owl:NamedIndividual, x3do:Scene ;
  x3do:hasParent :X3D ;
  x3do:hasChildren :WorldInfo_2_1, :Background_2_2, :CommandButtons, :Viewpoints, :Timers, :Movements, :M1HAB .
:WorldInfo_2_1 a owl:NamedIndividual, x3do:WorldInfo ;
  x3do:hasParent :Scene ;
  x3do:title 'Wolverine.x3d' .
:Background_2_2 a owl:NamedIndividual, x3do:Background ;
  x3do:hasParent :Scene ;
  x3do:groundAngle ( 1.309 1.570796 ) ;
  x3do:groundColor ( 0 0.3 .7 0 0.35 0.75 0 0.4 0.8 ) ;
  x3do:skyAngle ( 1.309 1.571 ) ;
  x3do:skyColor ( 0 0.2 0.7 0 0.5 1 1 1 1 ) .
:CommandButtons a owl:NamedIndividual, x3do:Group ;
  x3do:hasParent :Scene ;
  x3do:hasChildren :unfoldButton, :LayDownButton, :MoveTank ;
  x3do:DEF 'CommandButtons' .
:unfoldButton a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :CommandButtons ;
  x3do:hasChildren :Shape_2_3_1_1, :unfold, :UnfoldText, :Sound_2_3_1_4 ;
  x3do:DEF 'unfoldButton' ;
  x3do:translation ( -3 3.5 0 ) .
:Shape_2_3_1_1 a owl:NamedIndividual, x3do:Shape ;
  x3do:hasParent :unfoldButton ;
  x3do:hasAppearance :PanelGreen ;
  x3do:hasGeometry :Button .
:PanelGreen a owl:NamedIndividual, x3do:Appearance ;
  x3do:hasParent :Shape_2_3_1_1 ;
  x3do:hasMaterial :Material_2_3_1_1_1_1 ;
  x3do:DEF 'PanelGreen' .
:Material_2_3_1_1_1_1 a owl:NamedIndividual, x3do:Material ;
  x3do:hasParent :PanelGreen ;
  x3do:diffuseColor ( .2 .8 .2 ) .
:Button a owl:NamedIndividual, x3do:Sphere ;
  x3do:hasParent :Shape_2_3_1_1 ;
  x3do:DEF 'Button' ;
  x3do:radius .25 .
:unfold a owl:NamedIndividual, x3do:TouchSensor ;
  x3do:hasParent :unfoldButton ;
  x3do:DEF 'unfold' ;
  x3do:description 'unfold sensor' .
:UnfoldText a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :unfoldButton ;
  x3do:hasChildren :Shape_2_3_1_3_1 ;
  x3do:DEF 'UnfoldText' ;
  x3do:scale ( .25 .25 .25 ) ;
  x3do:translation ( -0.55 .3 0 ) .
:Shape_2_3_1_3_1 a owl:NamedIndividual, x3do:Shape ;
  x3do:hasParent :UnfoldText ;
  x3do:hasAppearance :black ;
  x3do:hasGeometry :Text_2_3_1_3_1_2 .
:black a owl:NamedIndividual, x3do:Appearance ;
  x3do:hasParent :Shape_2_3_1_3_1 ;
  x3do:hasMaterial :Material_2_3_1_3_1_1_1 ;
  x3do:DEF 'black' .
:Material_2_3_1_3_1_1_1 a owl:NamedIndividual, x3do:Material ;
  x3do:hasParent :black ;
  x3do:diffuseColor ( 0 0 0 ) .
:Text_2_3_1_3_1_2 a owl:NamedIndividual, x3do:Text ;
  x3do:hasParent :Shape_2_3_1_3_1 ;
  x3do:string '"Press to Extend"' .
:Sound_2_3_1_4 a owl:NamedIndividual, x3do:Sound ;
  x3do:hasParent :unfoldButton ;
  x3do:hasSource :BridgeSound ;
  x3do:maxBack 1000 ;
  x3do:maxFront 1000 .
:BridgeSound a owl:NamedIndividual, x3do:AudioClip ;
  x3do:hasParent :Sound_2_3_1_4 ;
  x3do:DEF 'BridgeSound' ;
  x3do:description 'BridgeExtend' ;
  x3do:url '"bridgeExtend.wav" "http://www.grsites.com/sounds/18791905/vehicle/vehicle080.wav"' .
:LayDownButton a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :CommandButtons ;
  x3do:hasChildren :Shape_2_3_2_1, :LayOnGroundSensor, :EmployBridgeButton ;
  x3do:DEF 'LayDownButton' ;
  x3do:translation ( -1 3.5 0 ) .
:Shape_2_3_2_1 a owl:NamedIndividual, x3do:Shape ;
  x3do:hasParent :LayDownButton ;
  x3do:hasAppearance :PanelGreen-USE-1 ;
  x3do:hasGeometry :Button-USE-1 .
:PanelGreen-USE-1 a owl:NamedIndividual, x3do:Appearance ;
  x3do:hasParent :Shape_2_3_2_1 ;
  owl:sameAs :PanelGreen . # DEF matching this USE
:Button-USE-1 a owl:NamedIndividual, x3do:Sphere ;
  x3do:hasParent :Shape_2_3_2_1 ;
  owl:sameAs :Button . # DEF matching this USE
:LayOnGroundSensor a owl:NamedIndividual, x3do:TouchSensor ;
  x3do:hasParent :LayDownButton ;
  x3do:DEF 'LayOnGroundSensor' ;
  x3do:description 'put bridge on ground senso' .
:EmployBridgeButton a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :LayDownButton ;
  x3do:hasChildren :Shape_2_3_2_3_1 ;
  x3do:DEF 'EmployBridgeButton' ;
  x3do:scale ( .25 .25 .25 ) ;
  x3do:translation ( -0.5 .3 0 ) .
:Shape_2_3_2_3_1 a owl:NamedIndividual, x3do:Shape ;
  x3do:hasParent :EmployBridgeButton ;
  x3do:hasAppearance :black-USE-1 ;
  x3do:hasGeometry :Text_2_3_2_3_1_2 .
:black-USE-1 a owl:NamedIndividual, x3do:Appearance ;
  x3do:hasParent :Shape_2_3_2_3_1 ;
  owl:sameAs :black . # DEF matching this USE
:Text_2_3_2_3_1_2 a owl:NamedIndividual, x3do:Text ;
  x3do:hasParent :Shape_2_3_2_3_1 ;
  x3do:string '"Press to Deploy"' .
:MoveTank a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :CommandButtons ;
  x3do:hasChildren :Shape_2_3_3_1, :MoveTankSensor, :Transform_2_3_3_3, :Sound_2_3_3_4 ;
  x3do:DEF 'MoveTank' ;
  x3do:translation ( 1 3.5 0 ) .
:Shape_2_3_3_1 a owl:NamedIndividual, x3do:Shape ;
  x3do:hasParent :MoveTank ;
  x3do:hasAppearance :PanelGreen-USE-2 ;
  x3do:hasGeometry :Button-USE-2 .
:PanelGreen-USE-2 a owl:NamedIndividual, x3do:Appearance ;
  x3do:hasParent :Shape_2_3_3_1 ;
  owl:sameAs :PanelGreen . # DEF matching this USE
:Button-USE-2 a owl:NamedIndividual, x3do:Sphere ;
  x3do:hasParent :Shape_2_3_3_1 ;
  owl:sameAs :Button . # DEF matching this USE
:MoveTankSensor a owl:NamedIndividual, x3do:TouchSensor ;
  x3do:hasParent :MoveTank ;
  x3do:DEF 'MoveTankSensor' ;
  x3do:description 'put bridge on ground senso' .
:Transform_2_3_3_3 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :MoveTank ;
  x3do:hasChildren :Shape_2_3_3_3_1 ;
  x3do:scale ( .25 .25 .25 ) ;
  x3do:translation ( -0.5 .3 0 ) .
:Shape_2_3_3_3_1 a owl:NamedIndividual, x3do:Shape ;
  x3do:hasParent :Transform_2_3_3_3 ;
  x3do:hasAppearance :black-USE-2 ;
  x3do:hasGeometry :Text_2_3_3_3_1_2 .
:black-USE-2 a owl:NamedIndividual, x3do:Appearance ;
  x3do:hasParent :Shape_2_3_3_3_1 ;
  owl:sameAs :black . # DEF matching this USE
:Text_2_3_3_3_1_2 a owl:NamedIndividual, x3do:Text ;
  x3do:hasParent :Shape_2_3_3_3_1 ;
  x3do:string '"Press to Employ"' .
:Sound_2_3_3_4 a owl:NamedIndividual, x3do:Sound ;
  x3do:hasParent :MoveTank ;
  x3do:hasSource :TankSound ;
  x3do:minBack 1000 ;
  x3do:minFront 1000 .
:TankSound a owl:NamedIndividual, x3do:AudioClip ;
  x3do:hasParent :Sound_2_3_3_4 ;
  x3do:DEF 'TankSound' ;
  x3do:description 'TankMoving' ;
  x3do:url '"Tredlop2.wav" "http://www.grsites.com/sounds/18791905/vehicle/vehicle025.wav"' .
:Viewpoints a owl:NamedIndividual, x3do:Group ;
  x3do:hasParent :Scene ;
  x3do:hasChildren :Viewpoint_2_4_1, :Viewpoint_2_4_2 ;
  x3do:DEF 'Viewpoints' .
:Viewpoint_2_4_1 a owl:NamedIndividual, x3do:Viewpoint ;
  x3do:hasParent :Viewpoints ;
  x3do:description 'Side' ;
  x3do:position ( 0 2 10 ) .
:Viewpoint_2_4_2 a owl:NamedIndividual, x3do:Viewpoint ;
  x3do:hasParent :Viewpoints ;
  x3do:description 'Side and back' ;
  x3do:orientation ( 1 0 0 -0.35 ) ;
  x3do:position ( -15 3.5 17 ) .
:Timers a owl:NamedIndividual, x3do:Group ;
  x3do:hasParent :Scene ;
  x3do:hasChildren :ExtendHABClock, :lauchTimer, :MoveTankTimer ;
  x3do:DEF 'Timers' .
:ExtendHABClock a owl:NamedIndividual, x3do:TimeSensor ;
  x3do:hasParent :Timers ;
  x3do:DEF 'ExtendHABClock' ;
  x3do:cycleInterval '10' .
:lauchTimer a owl:NamedIndividual, x3do:TimeSensor ;
  x3do:hasParent :Timers ;
  x3do:DEF 'lauchTimer' ;
  x3do:cycleInterval '10' .
:MoveTankTimer a owl:NamedIndividual, x3do:TimeSensor ;
  x3do:hasParent :Timers ;
  x3do:DEF 'MoveTankTimer' ;
  x3do:cycleInterval '10' .
:Movements a owl:NamedIndividual, x3do:Group ;
  x3do:hasParent :Scene ;
  x3do:hasChildren :UnfoldingMovements, :DeployMovements, :CrossTankMovement ;
  x3do:DEF 'Movements' .
:UnfoldingMovements a owl:NamedIndividual, x3do:Group ;
  x3do:hasParent :Movements ;
  x3do:hasChildren :BridgePathBottomPositions, :BridgePathTopPositions, :TopTilt ;
  x3do:hasROUTE :ROUTE_2_6_1_2, :ROUTE_2_6_1_4, :ROUTE_2_6_1_6 ;
  x3do:DEF 'UnfoldingMovements' .
:BridgePathBottomPositions a owl:NamedIndividual, x3do:PositionInterpolator ;
  x3do:hasParent :UnfoldingMovements ;
  x3do:DEF 'BridgePathBottomPositions' ;
  x3do:key ( 0.15 0.45 0.6 ) ;
  x3do:keyValue ( 0 0 0 -2.75 0 0 -5.5 0 0 ) .
:ROUTE_2_6_1_2 a owl:NamedIndividual, x3do:ROUTE ;
  x3do:hasParent :UnfoldingMovements ;
  x3do:fromField 'fraction_changed' ;
  x3do:fromNode 'ExtendHABClock' ;
  x3do:toField 'set_fraction' ;
  x3do:toNode 'BridgePathBottomPositions' .
:BridgePathTopPositions a owl:NamedIndividual, x3do:PositionInterpolator ;
  x3do:hasParent :UnfoldingMovements ;
  x3do:DEF 'BridgePathTopPositions' ;
  x3do:key ( 0.2 0.4 0.6 0.75 .9 ) ;
  x3do:keyValue ( 0 0 0 0 0.25 0 0 0.6 0 0 0.65 0 0 -0.2 0 ) .
:ROUTE_2_6_1_4 a owl:NamedIndividual, x3do:ROUTE ;
  x3do:hasParent :UnfoldingMovements ;
  x3do:fromField 'fraction_changed' ;
  x3do:fromNode 'ExtendHABClock' ;
  x3do:toField 'set_fraction' ;
  x3do:toNode 'BridgePathTopPositions' .
:TopTilt a owl:NamedIndividual, x3do:OrientationInterpolator ;
  x3do:hasParent :UnfoldingMovements ;
  x3do:DEF 'TopTilt' ;
  x3do:key ( 0.15 0.25 0.5 0.75 ) ;
  x3do:keyValue ( 0.0 0.0 1.0 0.0 0.0 0.0 1.0 0.015 0.0 0.0 1.0 0.0 0.0 0.0 1.0 -0.075 ) .
:ROUTE_2_6_1_6 a owl:NamedIndividual, x3do:ROUTE ;
  x3do:hasParent :UnfoldingMovements ;
  x3do:fromField 'fraction_changed' ;
  x3do:fromNode 'ExtendHABClock' ;
  x3do:toField 'set_fraction' ;
  x3do:toNode 'TopTilt' .
:DeployMovements a owl:NamedIndividual, x3do:Group ;
  x3do:hasParent :Movements ;
  x3do:hasChildren :BridgeOnGround, :TiltBridgeToGround, :TiltFrontArm, :ExtendFrontHydraulic, :BackHydCylinder, :BackHydCylTilt ;
  x3do:hasROUTE :ROUTE_2_6_2_2, :ROUTE_2_6_2_4, :ROUTE_2_6_2_6, :ROUTE_2_6_2_8, :ROUTE_2_6_2_11, :ROUTE_2_6_2_12 ;
  x3do:DEF 'DeployMovements' .
:BridgeOnGround a owl:NamedIndividual, x3do:PositionInterpolator ;
  x3do:hasParent :DeployMovements ;
  x3do:DEF 'BridgeOnGround' ;
  x3do:key ( .2 .4 .6 .7 ) ;
  x3do:keyValue ( -7 1 0.3 -15 1 0.3 -25.5 1 0.3 -25.5 -2 0.3 ) .
:ROUTE_2_6_2_2 a owl:NamedIndividual, x3do:ROUTE ;
  x3do:hasParent :DeployMovements ;
  x3do:fromField 'fraction_changed' ;
  x3do:fromNode 'lauchTimer' ;
  x3do:toField 'set_fraction' ;
  x3do:toNode 'BridgeOnGround' .
:TiltBridgeToGround a owl:NamedIndividual, x3do:OrientationInterpolator ;
  x3do:hasParent :DeployMovements ;
  x3do:DEF 'TiltBridgeToGround' ;
  x3do:key ( 0.6 0.7 0.85 ) ;
  x3do:keyValue ( 0 0 0 0 0 0 1 0.12 0 0 0 0 ) .
:ROUTE_2_6_2_4 a owl:NamedIndividual, x3do:ROUTE ;
  x3do:hasParent :DeployMovements ;
  x3do:fromField 'fraction_changed' ;
  x3do:fromNode 'lauchTimer' ;
  x3do:toField 'set_fraction' ;
  x3do:toNode 'TiltBridgeToGround' .
:TiltFrontArm a owl:NamedIndividual, x3do:OrientationInterpolator ;
  x3do:hasParent :DeployMovements ;
  x3do:DEF 'TiltFrontArm' ;
  x3do:key ( 0.6 0.83 0.94 ) ;
  x3do:keyValue ( 0 0 0 0 0 0 1 -0.9 0 0 0 0 ) .
:ROUTE_2_6_2_6 a owl:NamedIndividual, x3do:ROUTE ;
  x3do:hasParent :DeployMovements ;
  x3do:fromField 'fraction_changed' ;
  x3do:fromNode 'lauchTimer' ;
  x3do:toField 'set_fraction' ;
  x3do:toNode 'TiltFrontArm' .
:ExtendFrontHydraulic a owl:NamedIndividual, x3do:PositionInterpolator ;
  x3do:hasParent :DeployMovements ;
  x3do:DEF 'ExtendFrontHydraulic' ;
  x3do:key ( 0.6 0.83 0.94 ) ;
  x3do:keyValue ( 0 1 0 0 2.4 0 0 1 0 ) .
:ROUTE_2_6_2_8 a owl:NamedIndividual, x3do:ROUTE ;
  x3do:hasParent :DeployMovements ;
  x3do:fromField 'fraction_changed' ;
  x3do:fromNode 'lauchTimer' ;
  x3do:toField 'set_fraction' ;
  x3do:toNode 'ExtendFrontHydraulic' .
:BackHydCylinder a owl:NamedIndividual, x3do:PositionInterpolator ;
  x3do:hasParent :DeployMovements ;
  x3do:DEF 'BackHydCylinder' ;
  x3do:key ( 0.1 0.65 0.95 ) ;
  x3do:keyValue ( 0.0 0.75 0.0 0.0 1.4 0.0 0.0 -0.25 0.0 ) .
:BackHydCylTilt a owl:NamedIndividual, x3do:OrientationInterpolator ;
  x3do:hasParent :DeployMovements ;
  x3do:DEF 'BackHydCylTilt' ;
  x3do:key ( .2 .65 .9 ) ;
  x3do:keyValue ( 0 0 1 0.75 0 0 1 -0.8 0 0 1 -0.85 ) .
:ROUTE_2_6_2_11 a owl:NamedIndividual, x3do:ROUTE ;
  x3do:hasParent :DeployMovements ;
  x3do:fromField 'fraction_changed' ;
  x3do:fromNode 'ExtendHABClock' ;
  x3do:toField 'set_fraction' ;
  x3do:toNode 'BackHydCylinder' .
:ROUTE_2_6_2_12 a owl:NamedIndividual, x3do:ROUTE ;
  x3do:hasParent :DeployMovements ;
  x3do:fromField 'fraction_changed' ;
  x3do:fromNode 'ExtendHABClock' ;
  x3do:toField 'set_fraction' ;
  x3do:toNode 'BackHydCylTilt' .
:CrossTankMovement a owl:NamedIndividual, x3do:Group ;
  x3do:hasParent :Movements ;
  x3do:hasChildren :MoveTankAcrossBridge, :TiltTankAcrossBridge ;
  x3do:hasROUTE :ROUTE_2_6_3_2, :ROUTE_2_6_3_4 ;
  x3do:DEF 'CrossTankMovement' .
:MoveTankAcrossBridge a owl:NamedIndividual, x3do:PositionInterpolator ;
  x3do:hasParent :CrossTankMovement ;
  x3do:DEF 'MoveTankAcrossBridge' ;
  x3do:key ( .01 .2 .4 .6 .8 ) ;
  x3do:keyValue ( 0 0 0 -10 0.4 0 -20 .8 0 -30 0.4 0 -40 0 0 ) .
:ROUTE_2_6_3_2 a owl:NamedIndividual, x3do:ROUTE ;
  x3do:hasParent :CrossTankMovement ;
  x3do:fromField 'fraction_changed' ;
  x3do:fromNode 'MoveTankTimer' ;
  x3do:toField 'set_fraction' ;
  x3do:toNode 'MoveTankAcrossBridge' .
:TiltTankAcrossBridge a owl:NamedIndividual, x3do:OrientationInterpolator ;
  x3do:hasParent :CrossTankMovement ;
  x3do:DEF 'TiltTankAcrossBridge' ;
  x3do:key ( .1 .3 .5 .7 ) ;
  x3do:keyValue ( 0 0 0 0 0 0 1 -0.1 0 0 1 0.1 0 0 0 0 ) .
:ROUTE_2_6_3_4 a owl:NamedIndividual, x3do:ROUTE ;
  x3do:hasParent :CrossTankMovement ;
  x3do:fromField 'fraction_changed' ;
  x3do:fromNode 'MoveTankTimer' ;
  x3do:toField 'set_fraction' ;
  x3do:toNode 'TiltTankAcrossBridge' .
:M1HAB a owl:NamedIndividual, x3do:Group ;
  x3do:hasParent :Scene ;
  x3do:hasChildren :M1ChassisPlus, :HABstack, :LayBridgeRoutes, :CrossBridgeRoutes ;
  x3do:DEF 'M1HAB' .
:M1ChassisPlus a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :M1HAB ;
  x3do:hasChildren :M1Chassis, :M1HABturret ;
  x3do:DEF 'M1ChassisPlus' .
:M1Chassis a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :M1ChassisPlus ;
  x3do:hasChildren :M1A1Chassis ;
  x3do:DEF 'M1Chassis' ;
  x3do:scale ( 1 1 .9 ) .
:M1A1Chassis a owl:NamedIndividual, x3do:Inline ;
  x3do:hasParent :M1Chassis ;
  x3do:DEF 'M1A1Chassis' ;
  x3do:url '"M1A1Chassis.wrl" "https://www.web3d.org/x3d/content/examples/Savage/GroundVehicles/M1A1/M1A1Chassis.wrl"' .
:M1HABturret a owl:NamedIndividual, x3do:Group ;
  x3do:hasParent :M1ChassisPlus ;
  x3do:hasChildren :loadArm, :FrontArmTranslation, :FrontHydraulic, :BackHydraulic, :Hatch, :box, :box2 ;
  x3do:DEF 'M1HABturret' .
:loadArm a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :M1HABturret ;
  x3do:hasChildren :Shape_2_7_1_2_1_1, :PointLight_2_7_1_2_1_2 ;
  x3do:DEF 'loadArm' ;
  x3do:scale ( .8 .5 .85 ) ;
  x3do:translation ( 0 0 -1.5 ) .
:Shape_2_7_1_2_1_1 a owl:NamedIndividual, x3do:Shape ;
  x3do:hasParent :loadArm ;
  x3do:hasAppearance :sand_color ;
  x3do:hasGeometry :IndexedFaceSet_2_7_1_2_1_1_2 .
:sand_color a owl:NamedIndividual, x3do:Appearance ;
  x3do:hasParent :Shape_2_7_1_2_1_1 ;
  x3do:hasMaterial :Material_2_7_1_2_1_1_1_1 ;
  x3do:DEF 'sand_color' .
:Material_2_7_1_2_1_1_1_1 a owl:NamedIndividual, x3do:Material ;
  x3do:hasParent :sand_color ;
  x3do:diffuseColor ( .8 .7 .6 ) .
:IndexedFaceSet_2_7_1_2_1_1_2 a owl:NamedIndividual, x3do:IndexedFaceSet ;
  x3do:hasParent :Shape_2_7_1_2_1_1 ;
  x3do:hasCoord :Coordinate_2_7_1_2_1_1_2_1 ;
  x3do:coordIndex ( 0 1 8 9 -1 2 1 0 3 -1 5 1 2 6 -1 7 3 0 4 -1 7 4 5 6 -1 10 8 1 5 -1 10 11 13 12 -1 11 4 0 9 -1 11 10 5 4 -1 12 13 14 15 -1 14 13 11 9 -1 15 14 9 8 -1 17 16 7 6 -1 18 17 6 2 -1 19 3 7 16 -1 19 18 2 3 -1 20 16 17 21 24 -1 22 18 19 23 25 -1 22 21 17 18 -1 27 23 19 16 20 26 -1 29 27 26 28 24 21 22 25 -1 31 30 24 28 -1 32 31 28 26 -1 33 20 24 30 -1 33 32 26 20 -1 35 34 27 29 -1 36 35 29 25 -1 37 23 27 34 -1 37 36 25 23 -1 38 33 30 39 46 -1 40 31 32 41 47 -1 40 39 30 31 -1 41 32 33 38 -1 43 34 35 44 48 -1 43 42 37 34 -1 45 36 37 42 49 -1 45 44 35 36 -1 46 39 40 47 -1 47 41 38 46 -1 48 44 45 49 -1 49 42 43 48 -1 51 12 15 53 52 -1 51 50 53 15 8 10 12 -1 54 55 56 57 -1 55 54 50 51 -1 56 55 51 52 -1 57 53 50 54 -1 57 56 52 53 -1 ) .
:Coordinate_2_7_1_2_1_1_2_1 a owl:NamedIndividual, x3do:Coordinate ;
  x3do:hasParent :IndexedFaceSet_2_7_1_2_1_1_2 ;
  x3do:point ( -0.161045 -0.863419 1.00218 -0.13592 1.13602 0.999036 0.646417 1.0889 0.99911 0.599297 -0.910538 1.00225 -0.116808 -0.86656 -0.997821 -0.13592 1.13288 -1.00096 0.646417 1.08576 -1.00089 0.640585 -0.91368 -0.997747 -0.176901 1.18314 0.998962 -1.21357 -0.816299 1.0021 -0.176901 1.18 -1.00104 -1.21947 -0.819441 -0.997895 -3.26944 1.23508 -0.801122 -3.39065 0.334725 -0.799708 -3.44521 0.337238 0.80029 -3.324 1.23759 0.798876 2.88173 -0.272004 -0.998755 2.90821 1.72744 -1.0019 2.90821 1.73058 0.998102 2.86109 -0.268863 1.00124 5.87202 -0.329679 -0.998664 5.92332 1.66967 -1.0018 5.92332 1.67281 0.998193 5.88003 -0.326717 1.00133 5.8959 1.15627 -1.001 5.89695 1.20425 0.998929 5.07222 -0.310621 -0.332027 5.07222 -0.309574 0.334639 5.8959 1.15732 -0.334332 5.89695 1.2032 0.332263 7.17741 0.459345 -0.999904 7.17741 0.460392 -0.333238 7.16737 0.034379 -0.332569 7.16737 0.0333318 -0.999234 7.1772 0.110093 0.33398 7.09555 0.509626 0.333352 7.09555 0.510673 1.00002 7.08618 0.11319 1.00064 8.2643 0.0506105 -0.999262 8.30364 0.433984 -0.999864 8.30364 0.435031 -0.333198 8.2643 0.0516577 -0.332596 8.18312 0.130469 1.00062 8.18312 0.129421 0.33395 8.22178 0.484265 0.333392 8.22178 0.485312 1.00006 8.47796 0.216939 -0.999523 8.47796 0.217986 -0.332857 8.39643 0.281485 0.333711 8.39643 0.282532 1.00038 -0.583875 1.19401 -0.477202 -1.81083 1.21151 -0.439022 -1.81083 1.21288 0.436852 -0.583875 1.19551 0.475087 -0.600174 1.02905 -0.463696 -1.78866 1.04595 -0.426814 -1.78866 1.04729 0.425164 -0.600174 1.03051 0.462099 ) .
:PointLight_2_7_1_2_1_2 a owl:NamedIndividual, x3do:PointLight ;
  x3do:hasParent :loadArm ;
  x3do:intensity .6 ;
  x3do:location ( 3 3 3 ) .
:FrontArmTranslation a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :M1HABturret ;
  x3do:hasChildren :FrontArm ;
  x3do:DEF 'FrontArmTranslation' ;
  x3do:rotation ( 0 1 0 3.14 ) ;
  x3do:scale ( .6 .45 .65 ) ;
  x3do:translation ( -3.6 1.1 -1.5 ) .
:FrontArm a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :FrontArmTranslation ;
  x3do:hasChildren :Shape_2_7_1_2_2_1_1 ;
  x3do:DEF 'FrontArm' .
:Shape_2_7_1_2_2_1_1 a owl:NamedIndividual, x3do:Shape ;
  x3do:hasParent :FrontArm ;
  x3do:hasAppearance :sand_color-USE-1 ;
  x3do:hasGeometry :IndexedFaceSet_2_7_1_2_2_1_1_2 .
:sand_color-USE-1 a owl:NamedIndividual, x3do:Appearance ;
  x3do:hasParent :Shape_2_7_1_2_2_1_1 ;
  owl:sameAs :sand_color . # DEF matching this USE
:IndexedFaceSet_2_7_1_2_2_1_1_2 a owl:NamedIndividual, x3do:IndexedFaceSet ;
  x3do:hasParent :Shape_2_7_1_2_2_1_1 ;
  x3do:hasCoord :Coordinate_2_7_1_2_2_1_1_2_1 ;
  x3do:coordIndex ( 5 1 2 6 -1 7 3 0 4 -1 7 4 5 6 17 -1 9 8 5 4 -1 10 9 4 0 -1 11 1 5 8 -1 11 10 0 1 -1 13 12 8 9 -1 15 14 10 11 -1 16 2 1 0 3 -1 17 6 2 16 -1 19 18 17 16 -1 20 19 16 3 -1 21 7 17 18 -1 21 20 3 7 -1 22 23 24 25 -1 23 22 21 18 -1 24 23 18 19 -1 25 20 21 22 -1 25 24 19 20 -1 27 13 9 10 14 26 -1 29 15 11 8 12 28 -1 29 28 27 26 -1 30 31 32 33 -1 31 30 15 29 -1 32 31 29 26 -1 33 14 15 30 -1 33 32 26 14 -1 34 35 36 37 -1 35 34 27 28 -1 36 35 28 12 -1 37 13 27 34 -1 37 36 12 13 -1 52 51 50 49 48 47 46 45 44 43 42 41 40 39 38 53 -1 54 38 39 55 -1 55 39 40 56 -1 56 40 41 57 -1 57 41 42 58 -1 58 42 43 59 -1 59 43 44 60 -1 60 44 45 61 -1 61 45 46 62 -1 62 46 47 63 -1 63 47 48 64 -1 64 48 49 65 -1 65 49 50 66 -1 66 50 51 67 -1 67 51 52 68 -1 68 52 53 69 -1 69 53 38 54 -1 69 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 -1 ) .
:Coordinate_2_7_1_2_2_1_1_2_1 a owl:NamedIndividual, x3do:Coordinate ;
  x3do:hasParent :IndexedFaceSet_2_7_1_2_2_1_1_2 ;
  x3do:point ( -1.0 -1.0 1.0 -1.0 1.0 1.0 0.635798 1.0 1.0 3.21678 -1.0 1.0 -1.0 -1.0 -1.0 -1.0 1.0 -1.0 0.635798 1.0 -1.0 3.21678 -1.0 -1.0 -2.03303 1.0 -1.0 -2.03303 -0.43018 -1.0 -2.03303 -0.352978 1.0 -2.03303 1.0 1.0 -3.39692 1.0 -0.3 -3.39692 0.400655 -0.3 -3.39692 0.400655 0.3 -3.39692 1.0 0.3 2.76852 0.669533 1.0 2.76852 0.669533 -1.0 5.92251 0.669533 -1.0 5.92251 0.669533 1.0 5.92251 0.0109711 1.0 5.92251 0.0109711 -1.0 6.09129 0.231547 -1.0 6.53661 0.669533 -1.0 6.53661 0.669533 1.0 6.09129 0.231547 1.0 -3.39692 0.400655 0.18 -3.39692 0.400655 -0.18 -3.39692 1.0 -0.18 -3.39692 1.0 0.18 -3.70092 1.0 0.3 -3.70092 1.0 0.18 -3.70092 0.400655 0.18 -3.70092 0.400655 0.3 -3.70092 0.400655 -0.18 -3.70092 1.0 -0.18 -3.70092 1.0 -0.3 -3.70092 0.400655 -0.3 -3.6 1.0 -0.12 -3.71481 0.977164 -0.12 -3.81213 0.912132 -0.12 -3.87716 0.814805 -0.12 -3.9 0.7 -0.12 -3.87716 0.585195 -0.12 -3.81213 0.487868 -0.12 -3.71481 0.422836 -0.12 -3.6 0.4 -0.12 -3.48519 0.422836 -0.12 -3.38787 0.487868 -0.12 -3.32284 0.585195 -0.12 -3.3 0.7 -0.12 -3.32284 0.814805 -0.12 -3.38787 0.912132 -0.12 -3.48519 0.977164 -0.12 -3.6 1.0 0.12 -3.71481 0.977164 0.12 -3.81213 0.912132 0.12 -3.87716 0.814805 0.12 -3.9 0.7 0.12 -3.87716 0.585195 0.12 -3.81213 0.487868 0.12 -3.71481 0.422836 0.12 -3.6 0.4 0.12 -3.48519 0.422836 0.12 -3.38787 0.487868 0.12 -3.32284 0.585195 0.12 -3.3 0.7 0.12 -3.32284 0.814805 0.12 -3.38787 0.912132 0.12 -3.48519 0.977164 0.12 ) .
:FrontHydraulic a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :M1HABturret ;
  x3do:hasChildren :bigHydo, :LittleFrontHydroTranslation ;
  x3do:DEF 'FrontHydraulic' ;
  x3do:rotation ( 0 0 1 .6 ) ;
  x3do:translation ( -1 0.6 -1.5 ) .
:bigHydo a owl:NamedIndividual, x3do:Shape ;
  x3do:hasParent :FrontHydraulic ;
  x3do:hasAppearance :sand_color-USE-2 ;
  x3do:hasGeometry :Cylinder_2_7_1_2_3_1_2 ;
  x3do:DEF 'bigHydo' .
:sand_color-USE-2 a owl:NamedIndividual, x3do:Appearance ;
  x3do:hasParent :bigHydo ;
  owl:sameAs :sand_color . # DEF matching this USE
:Cylinder_2_7_1_2_3_1_2 a owl:NamedIndividual, x3do:Cylinder ;
  x3do:hasParent :bigHydo ;
  x3do:height 1 ;
  x3do:radius .2 .
:LittleFrontHydroTranslation a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :FrontHydraulic ;
  x3do:hasChildren :LittleFrontHydro ;
  x3do:DEF 'LittleFrontHydroTranslation' ;
  x3do:translation ( 0 -1.0 0 ) .
:LittleFrontHydro a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :LittleFrontHydroTranslation ;
  x3do:hasChildren :littleHydro ;
  x3do:DEF 'LittleFrontHydro' .
:littleHydro a owl:NamedIndividual, x3do:Shape ;
  x3do:hasParent :LittleFrontHydro ;
  x3do:hasAppearance :sand_color-USE-3 ;
  x3do:hasGeometry :Cylinder_2_7_1_2_3_2_1_1_2 ;
  x3do:DEF 'littleHydro' .
:sand_color-USE-3 a owl:NamedIndividual, x3do:Appearance ;
  x3do:hasParent :littleHydro ;
  owl:sameAs :sand_color . # DEF matching this USE
:Cylinder_2_7_1_2_3_2_1_1_2 a owl:NamedIndividual, x3do:Cylinder ;
  x3do:hasParent :littleHydro ;
  x3do:radius .08 .
:BackHydraulic a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :M1HABturret ;
  x3do:hasChildren :bigHydo-USE-1, :BackHydroCylinder ;
  x3do:DEF 'BackHydraulic' ;
  x3do:rotation ( 0 0 1 .75 ) ;
  x3do:translation ( 6 .55 -1.5 ) .
:bigHydo-USE-1 a owl:NamedIndividual, x3do:Shape ;
  x3do:hasParent :BackHydraulic ;
  owl:sameAs :bigHydo . # DEF matching this USE
:BackHydroCylinder a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :BackHydraulic ;
  x3do:hasChildren :littleHydro-USE-1, :Transform_2_7_1_2_4_2_2 ;
  x3do:DEF 'BackHydroCylinder' ;
  x3do:translation ( 0 1.25 0 ) .
:littleHydro-USE-1 a owl:NamedIndividual, x3do:Shape ;
  x3do:hasParent :BackHydroCylinder ;
  owl:sameAs :littleHydro . # DEF matching this USE
:Transform_2_7_1_2_4_2_2 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :BackHydroCylinder ;
  x3do:hasChildren :Shape_2_7_1_2_4_2_2_1 ;
  x3do:rotation ( 1 0 0 1.57 ) ;
  x3do:translation ( 0 1 0 ) .
:Shape_2_7_1_2_4_2_2_1 a owl:NamedIndividual, x3do:Shape ;
  x3do:hasParent :Transform_2_7_1_2_4_2_2 ;
  x3do:hasAppearance :sand_color-USE-4 ;
  x3do:hasGeometry :Cylinder_2_7_1_2_4_2_2_1_2 .
:sand_color-USE-4 a owl:NamedIndividual, x3do:Appearance ;
  x3do:hasParent :Shape_2_7_1_2_4_2_2_1 ;
  owl:sameAs :sand_color . # DEF matching this USE
:Cylinder_2_7_1_2_4_2_2_1_2 a owl:NamedIndividual, x3do:Cylinder ;
  x3do:hasParent :Shape_2_7_1_2_4_2_2_1 ;
  x3do:height 1.25 ;
  x3do:radius .1 .
:Hatch a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :M1HABturret ;
  x3do:hasChildren :Shape_2_7_1_2_5_1 ;
  x3do:DEF 'Hatch' ;
  x3do:translation ( 0 0.25 -3 ) .
:Shape_2_7_1_2_5_1 a owl:NamedIndividual, x3do:Shape ;
  x3do:hasParent :Hatch ;
  x3do:hasAppearance :sand_color-USE-5 ;
  x3do:hasGeometry :IndexedFaceSet_2_7_1_2_5_1_2 .
:sand_color-USE-5 a owl:NamedIndividual, x3do:Appearance ;
  x3do:hasParent :Shape_2_7_1_2_5_1 ;
  owl:sameAs :sand_color . # DEF matching this USE
:IndexedFaceSet_2_7_1_2_5_1_2 a owl:NamedIndividual, x3do:IndexedFaceSet ;
  x3do:hasParent :Shape_2_7_1_2_5_1 ;
  x3do:hasCoord :Coordinate_2_7_1_2_5_1_2_1 ;
  x3do:coordIndex ( 0 7 6 5 4 3 2 1 -1 3 11 10 2 -1 4 12 11 3 -1 5 13 12 4 -1 6 14 13 5 -1 7 15 14 6 -1 8 0 1 9 -1 9 1 2 10 -1 10 11 12 13 14 15 8 9 -1 15 7 0 8 -1 ) .
:Coordinate_2_7_1_2_5_1_2_1 a owl:NamedIndividual, x3do:Coordinate ;
  x3do:hasParent :IndexedFaceSet_2_7_1_2_5_1_2 ;
  x3do:point ( -0.666053 -0.084515 -0.08561 -0.296482 -0.084515 -0.182057 0.192171 -0.084515 -0.171857 0.513661 -0.084515 -0.060986 0.479662 -0.084515 0.08561 0.110091 -0.084515 0.182057 -0.378562 -0.084515 0.171857 -0.700052 -0.084515 0.060986 -0.666053 -0.684515 -0.08561 -0.296482 -0.684515 -0.182057 0.192171 -0.684515 -0.171857 0.513661 -0.684515 -0.060986 0.479662 -0.684515 0.08561 0.110091 -0.684515 0.182057 -0.378562 -0.684515 0.171857 -0.700052 -0.684515 0.060986 ) .
:box a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :M1HABturret ;
  x3do:hasChildren :Shape_2_7_1_2_6_1 ;
  x3do:DEF 'box' ;
  x3do:scale ( .5 .3 .4 ) ;
  x3do:translation ( 0 0.25 1 ) .
:Shape_2_7_1_2_6_1 a owl:NamedIndividual, x3do:Shape ;
  x3do:hasParent :box ;
  x3do:hasAppearance :sand_color-USE-6 ;
  x3do:hasGeometry :IndexedFaceSet_2_7_1_2_6_1_2 .
:sand_color-USE-6 a owl:NamedIndividual, x3do:Appearance ;
  x3do:hasParent :Shape_2_7_1_2_6_1 ;
  owl:sameAs :sand_color . # DEF matching this USE
:IndexedFaceSet_2_7_1_2_6_1_2 a owl:NamedIndividual, x3do:IndexedFaceSet ;
  x3do:hasParent :Shape_2_7_1_2_6_1 ;
  x3do:hasCoord :Coordinate_2_7_1_2_6_1_2_1 ;
  x3do:coordIndex ( 2 1 0 3 -1 4 0 1 5 -1 5 1 2 6 -1 6 2 3 7 -1 7 3 0 4 -1 7 4 5 6 -1 10 9 8 11 -1 12 8 9 13 -1 13 9 10 14 -1 14 10 11 15 -1 15 11 8 12 -1 15 12 13 14 -1 18 17 16 19 -1 20 16 17 21 -1 21 17 18 22 -1 22 18 19 23 -1 23 19 16 20 -1 23 20 21 22 -1 26 25 24 27 -1 28 24 25 29 -1 29 25 26 30 -1 30 26 27 31 -1 31 27 24 28 -1 31 28 29 30 -1 ) .
:Coordinate_2_7_1_2_6_1_2_1 a owl:NamedIndividual, x3do:Coordinate ;
  x3do:hasParent :IndexedFaceSet_2_7_1_2_6_1_2 ;
  x3do:point ( -0.6741 1.00164 -0.0432 -0.6741 1.08724 -0.0432 0.6741 1.08724 -0.0432 0.6741 1.00164 -0.0432 -0.6741 1.00164 -0.5568 -0.6741 1.08724 -0.5568 0.6741 1.08724 -0.5568 0.6741 1.00164 -0.5568 -0.6741 1.00342 0.8568 -0.6741 1.08902 0.8568 0.6741 1.08902 0.8568 0.6741 1.00342 0.8568 -0.6741 1.00342 0.3432 -0.6741 1.08902 0.3432 0.6741 1.08902 0.3432 0.6741 1.00342 0.3432 -1.0 -1.0 1.0 -1.0 1.0 1.0 1.0 1.0 1.0 1.0 -1.0 1.0 -1.0 -1.0 -1.0 -1.0 1.0 -1.0 1.0 1.0 -1.0 1.0 -1.0 -1.0 -0.216188 1.45084 2.58824 -0.216188 1.45084 2.52832 0.412972 1.45084 2.52832 0.412972 1.45084 2.58824 -0.216188 1.09132 2.58824 -0.216188 1.09132 2.52832 0.412972 1.09132 2.52832 0.412972 1.09132 2.58824 ) .
:box2 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :M1HABturret ;
  x3do:hasChildren :Shape_2_7_1_2_7_1 ;
  x3do:DEF 'box2' ;
  x3do:scale ( .4 .2 .4 ) ;
  x3do:translation ( 3 0 0 ) .
:Shape_2_7_1_2_7_1 a owl:NamedIndividual, x3do:Shape ;
  x3do:hasParent :box2 ;
  x3do:hasAppearance :sand_color-USE-7 ;
  x3do:hasGeometry :IndexedFaceSet_2_7_1_2_7_1_2 .
:sand_color-USE-7 a owl:NamedIndividual, x3do:Appearance ;
  x3do:hasParent :Shape_2_7_1_2_7_1 ;
  owl:sameAs :sand_color . # DEF matching this USE
:IndexedFaceSet_2_7_1_2_7_1_2 a owl:NamedIndividual, x3do:IndexedFaceSet ;
  x3do:hasParent :Shape_2_7_1_2_7_1 ;
  x3do:hasCoord :Coordinate_2_7_1_2_7_1_2_1 ;
  x3do:coordIndex ( 2 1 0 3 -1 4 0 1 5 -1 5 1 2 6 -1 6 2 3 7 -1 7 3 0 4 -1 7 4 5 6 -1 10 9 8 11 -1 12 8 9 13 -1 13 9 10 14 -1 14 10 11 15 -1 15 11 8 12 -1 15 12 13 14 -1 18 17 16 19 -1 20 16 17 21 -1 21 17 18 22 -1 22 18 19 23 -1 23 19 16 20 -1 23 20 21 22 -1 26 25 24 27 -1 28 24 25 29 -1 29 25 26 30 -1 30 26 27 31 -1 31 27 24 28 -1 31 28 29 30 -1 ) .
:Coordinate_2_7_1_2_7_1_2_1 a owl:NamedIndividual, x3do:Coordinate ;
  x3do:hasParent :IndexedFaceSet_2_7_1_2_7_1_2 ;
  x3do:point ( -0.6741 1.00164 -0.0432 -0.6741 1.08724 -0.0432 0.6741 1.08724 -0.0432 0.6741 1.00164 -0.0432 -0.6741 1.00164 -0.5568 -0.6741 1.08724 -0.5568 0.6741 1.08724 -0.5568 0.6741 1.00164 -0.5568 -0.6741 1.00342 0.8568 -0.6741 1.08902 0.8568 0.6741 1.08902 0.8568 0.6741 1.00342 0.8568 -0.6741 1.00342 0.3432 -0.6741 1.08902 0.3432 0.6741 1.08902 0.3432 0.6741 1.00342 0.3432 -1.0 -1.0 1.0 -1.0 1.0 1.0 1.0 1.0 1.0 1.0 -1.0 1.0 -1.0 -1.0 -1.0 -1.0 1.0 -1.0 1.0 1.0 -1.0 1.0 -1.0 -1.0 -0.216188 1.45084 2.58824 -0.216188 1.45084 2.52832 0.412972 1.45084 2.52832 0.412972 1.45084 2.58824 -0.216188 1.09132 2.58824 -0.216188 1.09132 2.52832 0.412972 1.09132 2.52832 0.412972 1.09132 2.58824 ) .
:HABstack a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :M1HAB ;
  x3do:hasChildren :BridgeHalf, :BridgeHalf2, :ExtendBridgeRoutes ;
  x3do:DEF 'HABstack' ;
  x3do:translation ( -7 0.9 0.3 ) .
:BridgeHalf a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :HABstack ;
  x3do:hasChildren :BridgeSection1, :BridgeSection2, :ExtraDetails ;
  x3do:DEF 'BridgeHalf' .
:BridgeSection1 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :BridgeHalf ;
  x3do:hasChildren :InsideNearSection, :InsideFarSection, :RoadSurface ;
  x3do:DEF 'BridgeSection1' ;
  x3do:scale ( .5 .5 .5 ) .
:InsideNearSection a owl:NamedIndividual, x3do:Group ;
  x3do:hasParent :BridgeSection1 ;
  x3do:hasChildren :InnerSide, :Roller, :AllRails, :InnerSide2 ;
  x3do:DEF 'InsideNearSection' .
:InnerSide a owl:NamedIndividual, x3do:Shape ;
  x3do:hasParent :InsideNearSection ;
  x3do:hasGeometry :Extrusion_2_7_2_1_1_1_1_1 ;
  x3do:hasAppearance :sand_color-USE-8 ;
  x3do:DEF 'InnerSide' .
:Extrusion_2_7_2_1_1_1_1_1 a owl:NamedIndividual, x3do:Extrusion ;
  x3do:hasParent :InnerSide ;
  x3do:creaseAngle 3.14 ;
  x3do:crossSection ( 0 0 26 0 26 -2 2 -0.5 0 0 ) ;
  x3do:solid false ;
  x3do:spine ( 0 0 0 0 0 0.25 0 0 0.5 0 0 0.75 0 0 1 ) .
:sand_color-USE-8 a owl:NamedIndividual, x3do:Appearance ;
  x3do:hasParent :InnerSide ;
  owl:sameAs :sand_color . # DEF matching this USE
:Roller a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :InsideNearSection ;
  x3do:hasChildren :pivotPole, :Transform_2_7_2_1_1_1_2_2, :Transform_2_7_2_1_1_1_2_3 ;
  x3do:DEF 'Roller' ;
  x3do:translation ( 26.1 2.0 0.5 ) .
:pivotPole a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Roller ;
  x3do:hasChildren :Shape_2_7_2_1_1_1_2_1_1 ;
  x3do:DEF 'pivotPole' ;
  x3do:rotation ( 1 0 0 -1.57 ) .
:Shape_2_7_2_1_1_1_2_1_1 a owl:NamedIndividual, x3do:Shape ;
  x3do:hasParent :pivotPole ;
  x3do:hasGeometry :Cylinder_2_7_2_1_1_1_2_1_1_1 ;
  x3do:hasAppearance :sand_color-USE-9 .
:Cylinder_2_7_2_1_1_1_2_1_1_1 a owl:NamedIndividual, x3do:Cylinder ;
  x3do:hasParent :Shape_2_7_2_1_1_1_2_1_1 ;
  x3do:height 1.0 ;
  x3do:radius .05 .
:sand_color-USE-9 a owl:NamedIndividual, x3do:Appearance ;
  x3do:hasParent :Shape_2_7_2_1_1_1_2_1_1 ;
  owl:sameAs :sand_color . # DEF matching this USE
:Transform_2_7_2_1_1_1_2_2 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Roller ;
  x3do:hasChildren :wheel ;
  x3do:rotation ( 1 0 0 1.57 ) ;
  x3do:scale ( .025 .025 .025 ) ;
  x3do:translation ( 0 0 0.5 ) .
:wheel a owl:NamedIndividual, x3do:Shape ;
  x3do:hasParent :Transform_2_7_2_1_1_1_2_2 ;
  x3do:hasGeometry :Extrusion_2_7_2_1_1_1_2_2_1_1 ;
  x3do:hasAppearance :Appearance_2_7_2_1_1_1_2_2_1_2 ;
  x3do:DEF 'wheel' .
:Extrusion_2_7_2_1_1_1_2_2_1_1 a owl:NamedIndividual, x3do:Extrusion ;
  x3do:hasParent :wheel ;
  x3do:beginCap false ;
  x3do:convex false ;
  x3do:creaseAngle 1.57 ;
  x3do:crossSection ( 1.00 0.00 0.92 -0.38 0.71 -0.71 0.38 -0.92 0.00 -1.00 -0.38 -0.92 -0.71 -0.71 -0.92 -0.38 -1.00 -0.00 -0.92 0.38 -0.71 0.71 -0.38 0.92 0.00 1.00 0.38 0.92 0.71 0.71 0.92 0.38 1.00 0 ) ;
  x3do:endCap false ;
  x3do:spine ( 2.00 0.0 0.00 1.85 0.0 0.77 1.41 0.0 1.41 0.77 0.0 1.85 0.00 0.0 2.00 -0.77 0.0 1.85 -1.41 0.0 1.41 -1.85 0.0 0.77 -2.00 0.0 0.00 -1.85 0.0 -0.77 -1.41 0.0 -1.41 -0.77 0.0 -1.85 0.00 0.0 -2.00 0.77 0.0 -1.85 1.41 0.0 -1.41 1.85 0.0 -0.77 2.00 0.0 0.00 ) .
:Appearance_2_7_2_1_1_1_2_2_1_2 a owl:NamedIndividual, x3do:Appearance ;
  x3do:hasParent :wheel ;
  x3do:hasMaterial :Material_2_7_2_1_1_1_2_2_1_2_1 .
:Material_2_7_2_1_1_1_2_2_1_2_1 a owl:NamedIndividual, x3do:Material ;
  x3do:hasParent :Appearance_2_7_2_1_1_1_2_2_1_2 ;
  x3do:diffuseColor ( 0 0 0 ) .
:Transform_2_7_2_1_1_1_2_3 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Roller ;
  x3do:hasChildren :wheel-USE-1 ;
  x3do:rotation ( 1 0 0 1.57 ) ;
  x3do:scale ( .025 .025 .025 ) ;
  x3do:translation ( 0 0 -0.5 ) .
:wheel-USE-1 a owl:NamedIndividual, x3do:Shape ;
  x3do:hasParent :Transform_2_7_2_1_1_1_2_3 ;
  owl:sameAs :wheel . # DEF matching this USE
:AllRails a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :InsideNearSection ;
  x3do:hasChildren :BottomRails ;
  x3do:DEF 'AllRails' .
:BottomRails a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :AllRails ;
  x3do:hasChildren :BottomRail, :Transform_2_7_2_1_1_1_3_1_2, :Bolts ;
  x3do:DEF 'BottomRails' ;
  x3do:translation ( 13.5 0.1 1.0 ) .
:BottomRail a owl:NamedIndividual, x3do:Shape ;
  x3do:hasParent :BottomRails ;
  x3do:hasGeometry :Box_2_7_2_1_1_1_3_1_1_1 ;
  x3do:hasAppearance :sand_color-USE-10 ;
  x3do:DEF 'BottomRail' .
:Box_2_7_2_1_1_1_3_1_1_1 a owl:NamedIndividual, x3do:Box ;
  x3do:hasParent :BottomRail ;
  x3do:size ( 25.5 0.175 0.025 ) .
:sand_color-USE-10 a owl:NamedIndividual, x3do:Appearance ;
  x3do:hasParent :BottomRail ;
  owl:sameAs :sand_color . # DEF matching this USE
:Transform_2_7_2_1_1_1_3_1_2 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :BottomRails ;
  x3do:hasChildren :BottomRail-USE-1, :Transform_2_7_2_1_1_1_3_1_2_2 ;
  x3do:translation ( 0 0 -1 ) .
:BottomRail-USE-1 a owl:NamedIndividual, x3do:Shape ;
  x3do:hasParent :Transform_2_7_2_1_1_1_3_1_2 ;
  owl:sameAs :BottomRail . # DEF matching this USE
:Transform_2_7_2_1_1_1_3_1_2_2 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Transform_2_7_2_1_1_1_3_1_2 ;
  x3do:hasChildren :wheel-USE-2 ;
  x3do:rotation ( 1 0 0 1.57 ) ;
  x3do:scale ( .05 .05 .05 ) ;
  x3do:translation ( 12.7 0 -0.05 ) .
:wheel-USE-2 a owl:NamedIndividual, x3do:Shape ;
  x3do:hasParent :Transform_2_7_2_1_1_1_3_1_2_2 ;
  owl:sameAs :wheel . # DEF matching this USE
:Bolts a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :BottomRails ;
  x3do:hasChildren :bolt, :Transform_2_7_2_1_1_1_3_1_3_2, :Transform_2_7_2_1_1_1_3_1_3_3, :Transform_2_7_2_1_1_1_3_1_3_4 ;
  x3do:DEF 'Bolts' ;
  x3do:rotation ( 1 0 0 1.57 ) ;
  x3do:scale ( .0025 .07 .0025 ) ;
  x3do:translation ( 12.55 -0.05 0 ) .
:bolt a owl:NamedIndividual, x3do:Shape ;
  x3do:hasParent :Bolts ;
  x3do:hasGeometry :Cylinder_2_7_2_1_1_1_3_1_3_1_1 ;
  x3do:hasAppearance :Appearance_2_7_2_1_1_1_3_1_3_1_2 ;
  x3do:DEF 'bolt' .
:Cylinder_2_7_2_1_1_1_3_1_3_1_1 a owl:NamedIndividual, x3do:Cylinder ;
  x3do:hasParent :bolt ;
  x3do:height .5 ;
  x3do:radius 8.5 .
:Appearance_2_7_2_1_1_1_3_1_3_1_2 a owl:NamedIndividual, x3do:Appearance ;
  x3do:hasParent :bolt ;
  x3do:hasMaterial :Material_2_7_2_1_1_1_3_1_3_1_2_1 .
:Material_2_7_2_1_1_1_3_1_3_1_2_1 a owl:NamedIndividual, x3do:Material ;
  x3do:hasParent :Appearance_2_7_2_1_1_1_3_1_3_1_2 ;
  x3do:diffuseColor ( 0 0 0 ) .
:Transform_2_7_2_1_1_1_3_1_3_2 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Bolts ;
  x3do:hasChildren :bolt-USE-1 ;
  x3do:translation ( 50.0 0 0 ) .
:bolt-USE-1 a owl:NamedIndividual, x3do:Shape ;
  x3do:hasParent :Transform_2_7_2_1_1_1_3_1_3_2 ;
  owl:sameAs :bolt . # DEF matching this USE
:Transform_2_7_2_1_1_1_3_1_3_3 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Bolts ;
  x3do:hasChildren :bolt-USE-2 ;
  x3do:translation ( 50.0 0 -40.0 ) .
:bolt-USE-2 a owl:NamedIndividual, x3do:Shape ;
  x3do:hasParent :Transform_2_7_2_1_1_1_3_1_3_3 ;
  owl:sameAs :bolt . # DEF matching this USE
:Transform_2_7_2_1_1_1_3_1_3_4 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Bolts ;
  x3do:hasChildren :bolt-USE-3 ;
  x3do:translation ( 0 0 -40 ) .
:bolt-USE-3 a owl:NamedIndividual, x3do:Shape ;
  x3do:hasParent :Transform_2_7_2_1_1_1_3_1_3_4 ;
  owl:sameAs :bolt . # DEF matching this USE
:InnerSide2 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :InsideNearSection ;
  x3do:DEF 'InnerSide2' ;
  x3do:translation ( 0 0 -2 ) .
:InsideFarSection a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :BridgeSection1 ;
  x3do:hasChildren :InnerSide-USE-1, :Roller-USE-1, :Transform_2_7_2_1_1_2_3, :Transform_2_7_2_1_1_2_4 ;
  x3do:DEF 'InsideFarSection' ;
  x3do:translation ( 0 0 -2 ) .
:InnerSide-USE-1 a owl:NamedIndividual, x3do:Shape ;
  x3do:hasParent :InsideFarSection ;
  owl:sameAs :InnerSide . # DEF matching this USE
:Roller-USE-1 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :InsideFarSection ;
  owl:sameAs :Roller . # DEF matching this USE
:Transform_2_7_2_1_1_2_3 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :InsideFarSection ;
  x3do:hasChildren :BottomRail-USE-2, :Bolts-USE-1 ;
  x3do:translation ( 13.5 0.1 0 ) .
:BottomRail-USE-2 a owl:NamedIndividual, x3do:Shape ;
  x3do:hasParent :Transform_2_7_2_1_1_2_3 ;
  owl:sameAs :BottomRail . # DEF matching this USE
:Bolts-USE-1 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Transform_2_7_2_1_1_2_3 ;
  owl:sameAs :Bolts . # DEF matching this USE
:Transform_2_7_2_1_1_2_4 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :InsideFarSection ;
  x3do:hasChildren :BottomRail-USE-3, :Transform_2_7_2_1_1_2_4_2 ;
  x3do:translation ( 13.5 0.1 1.0 ) .
:BottomRail-USE-3 a owl:NamedIndividual, x3do:Shape ;
  x3do:hasParent :Transform_2_7_2_1_1_2_4 ;
  owl:sameAs :BottomRail . # DEF matching this USE
:Transform_2_7_2_1_1_2_4_2 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Transform_2_7_2_1_1_2_4 ;
  x3do:hasChildren :wheel-USE-3 ;
  x3do:rotation ( 1 0 0 1.57 ) ;
  x3do:scale ( .05 .05 .05 ) ;
  x3do:translation ( 12.7 0 0.05 ) .
:wheel-USE-3 a owl:NamedIndividual, x3do:Shape ;
  x3do:hasParent :Transform_2_7_2_1_1_2_4_2 ;
  owl:sameAs :wheel . # DEF matching this USE
:RoadSurface a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :BridgeSection1 ;
  x3do:hasChildren :Surface ;
  x3do:DEF 'RoadSurface' ;
  x3do:translation ( 0 0.01 -2.1 ) .
:Surface a owl:NamedIndividual, x3do:Shape ;
  x3do:hasParent :RoadSurface ;
  x3do:hasGeometry :Extrusion_2_7_2_1_1_3_1_1 ;
  x3do:hasAppearance :Appearance_2_7_2_1_1_3_1_2 ;
  x3do:DEF 'Surface' .
:Extrusion_2_7_2_1_1_3_1_1 a owl:NamedIndividual, x3do:Extrusion ;
  x3do:hasParent :Surface ;
  x3do:creaseAngle 3.14 ;
  x3do:crossSection ( 0 -0.05 2 -0.6 26 -2.2 26 -2.0 2 -0.50 0 0.0 ) ;
  x3do:scale ( 1 1 1 1 1 1 1 1 1 1 ) ;
  x3do:spine ( 0 0 0 0 0 0.5 0 0 1 0 0 1.5 0 0 3.2 ) .
:Appearance_2_7_2_1_1_3_1_2 a owl:NamedIndividual, x3do:Appearance ;
  x3do:hasParent :Surface ;
  x3do:hasTexture :ImageTexture_2_7_2_1_1_3_1_2_1 .
:ImageTexture_2_7_2_1_1_3_1_2_1 a owl:NamedIndividual, x3do:ImageTexture ;
  x3do:hasParent :Appearance_2_7_2_1_1_3_1_2 ;
  x3do:url '"wellwall.jpg" "https://www.web3d.org/x3d/content/examples/Vrml2Sourcebook/wellwall.jpg"' .
:BridgeSection2 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :BridgeHalf ;
  x3do:hasChildren :BridgeSection1-USE-1 ;
  x3do:DEF 'BridgeSection2' ;
  x3do:translation ( 0 0 -3.1 ) .
:BridgeSection1-USE-1 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :BridgeSection2 ;
  owl:sameAs :BridgeSection1 . # DEF matching this USE
:ExtraDetails a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :BridgeHalf ;
  x3do:hasChildren :crossMember1, :crossMember2, :crossMember3, :crossMember4 ;
  x3do:DEF 'ExtraDetails' ;
  x3do:translation ( 5.5 0.25 -1.5 ) .
:crossMember1 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :ExtraDetails ;
  x3do:hasChildren :Beam ;
  x3do:DEF 'crossMember1' .
:Beam a owl:NamedIndividual, x3do:Shape ;
  x3do:hasParent :crossMember1 ;
  x3do:hasAppearance :Appearance_2_7_2_1_3_1_1_1 ;
  x3do:hasGeometry :Box_2_7_2_1_3_1_1_2 ;
  x3do:DEF 'Beam' .
:Appearance_2_7_2_1_3_1_1_1 a owl:NamedIndividual, x3do:Appearance ;
  x3do:hasParent :Beam ;
  x3do:hasMaterial :white .
:white a owl:NamedIndividual, x3do:Material ;
  x3do:hasParent :Appearance_2_7_2_1_3_1_1_1 ;
  x3do:DEF 'white' ;
  x3do:diffuseColor ( 1 1 1 ) .
:Box_2_7_2_1_3_1_1_2 a owl:NamedIndividual, x3do:Box ;
  x3do:hasParent :Beam ;
  x3do:size ( 0.1 0.2 2.5 ) .
:crossMember2 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :ExtraDetails ;
  x3do:hasChildren :Beam-USE-1 ;
  x3do:DEF 'crossMember2' ;
  x3do:translation ( 1 0.05 0 ) .
:Beam-USE-1 a owl:NamedIndividual, x3do:Shape ;
  x3do:hasParent :crossMember2 ;
  owl:sameAs :Beam . # DEF matching this USE
:crossMember3 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :ExtraDetails ;
  x3do:hasChildren :Beam-USE-2 ;
  x3do:DEF 'crossMember3' ;
  x3do:translation ( 3 .15 0 ) .
:Beam-USE-2 a owl:NamedIndividual, x3do:Shape ;
  x3do:hasParent :crossMember3 ;
  owl:sameAs :Beam . # DEF matching this USE
:crossMember4 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :ExtraDetails ;
  x3do:hasChildren :Beam-USE-3 ;
  x3do:DEF 'crossMember4' ;
  x3do:translation ( 4 0.2 0 ) .
:Beam-USE-3 a owl:NamedIndividual, x3do:Shape ;
  x3do:hasParent :crossMember4 ;
  owl:sameAs :Beam . # DEF matching this USE
:BridgeHalf2 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :HABstack ;
  x3do:hasChildren :Transform_2_7_2_2_1 ;
  x3do:DEF 'BridgeHalf2' .
:Transform_2_7_2_2_1 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :BridgeHalf2 ;
  x3do:hasChildren :Transform_2_7_2_2_1_1 ;
  x3do:rotation ( 0 1 0 3.14 ) ;
  x3do:translation ( 15 1.25 -3.65 ) .
:Transform_2_7_2_2_1_1 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Transform_2_7_2_2_1 ;
  x3do:hasChildren :BridgeHalf-USE-1 ;
  x3do:rotation ( 0 0 1 -0.065 ) .
:BridgeHalf-USE-1 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Transform_2_7_2_2_1_1 ;
  owl:sameAs :BridgeHalf . # DEF matching this USE
:ExtendBridgeRoutes a owl:NamedIndividual, x3do:Group ;
  x3do:hasParent :HABstack ;
  x3do:hasROUTE :ROUTE_2_7_2_3_1, :ROUTE_2_7_2_3_2, :ROUTE_2_7_2_3_3, :ROUTE_2_7_2_3_4, :ROUTE_2_7_2_3_5, :ROUTE_2_7_2_3_6, :ROUTE_2_7_2_3_7 ;
  x3do:DEF 'ExtendBridgeRoutes' .
:ROUTE_2_7_2_3_1 a owl:NamedIndividual, x3do:ROUTE ;
  x3do:hasParent :ExtendBridgeRoutes ;
  x3do:fromField 'value_changed' ;
  x3do:fromNode 'BridgePathBottomPositions' ;
  x3do:toField 'set_translation' ;
  x3do:toNode 'BridgeHalf' .
:ROUTE_2_7_2_3_2 a owl:NamedIndividual, x3do:ROUTE ;
  x3do:hasParent :ExtendBridgeRoutes ;
  x3do:fromField 'value_changed' ;
  x3do:fromNode 'BridgePathTopPositions' ;
  x3do:toField 'set_translation' ;
  x3do:toNode 'BridgeHalf2' .
:ROUTE_2_7_2_3_3 a owl:NamedIndividual, x3do:ROUTE ;
  x3do:hasParent :ExtendBridgeRoutes ;
  x3do:fromField 'value_changed' ;
  x3do:fromNode 'TopTilt' ;
  x3do:toField 'set_rotation' ;
  x3do:toNode 'BridgeHalf2' .
:ROUTE_2_7_2_3_4 a owl:NamedIndividual, x3do:ROUTE ;
  x3do:hasParent :ExtendBridgeRoutes ;
  x3do:fromField 'value_changed' ;
  x3do:fromNode 'ExtendFrontHydraulic' ;
  x3do:toField 'set_translation' ;
  x3do:toNode 'LittleFrontHydro' .
:ROUTE_2_7_2_3_5 a owl:NamedIndividual, x3do:ROUTE ;
  x3do:hasParent :ExtendBridgeRoutes ;
  x3do:fromField 'value_changed' ;
  x3do:fromNode 'BackHydCylinder' ;
  x3do:toField 'set_translation' ;
  x3do:toNode 'BackHydroCylinder' .
:ROUTE_2_7_2_3_6 a owl:NamedIndividual, x3do:ROUTE ;
  x3do:hasParent :ExtendBridgeRoutes ;
  x3do:fromField 'value_changed' ;
  x3do:fromNode 'BackHydCylTilt' ;
  x3do:toField 'set_rotation' ;
  x3do:toNode 'BackHydraulic' .
:ROUTE_2_7_2_3_7 a owl:NamedIndividual, x3do:ROUTE ;
  x3do:hasParent :ExtendBridgeRoutes ;
  x3do:fromField 'touchTime' ;
  x3do:fromNode 'unfold' ;
  x3do:toField 'set_startTime' ;
  x3do:toNode 'BridgeSound' .
:LayBridgeRoutes a owl:NamedIndividual, x3do:Group ;
  x3do:hasParent :M1HAB ;
  x3do:hasROUTE :ROUTE_2_7_3_1, :ROUTE_2_7_3_2, :ROUTE_2_7_3_3, :ROUTE_2_7_3_4, :ROUTE_2_7_3_5 ;
  x3do:DEF 'LayBridgeRoutes' .
:ROUTE_2_7_3_1 a owl:NamedIndividual, x3do:ROUTE ;
  x3do:hasParent :LayBridgeRoutes ;
  x3do:fromField 'value_changed' ;
  x3do:fromNode 'BridgeOnGround' ;
  x3do:toField 'set_translation' ;
  x3do:toNode 'HABstack' .
:ROUTE_2_7_3_2 a owl:NamedIndividual, x3do:ROUTE ;
  x3do:hasParent :LayBridgeRoutes ;
  x3do:fromField 'touchTime' ;
  x3do:fromNode 'unfold' ;
  x3do:toField 'startTime' ;
  x3do:toNode 'ExtendHABClock' .
:ROUTE_2_7_3_3 a owl:NamedIndividual, x3do:ROUTE ;
  x3do:hasParent :LayBridgeRoutes ;
  x3do:fromField 'value_changed' ;
  x3do:fromNode 'TiltBridgeToGround' ;
  x3do:toField 'set_rotation' ;
  x3do:toNode 'HABstack' .
:ROUTE_2_7_3_4 a owl:NamedIndividual, x3do:ROUTE ;
  x3do:hasParent :LayBridgeRoutes ;
  x3do:fromField 'touchTime' ;
  x3do:fromNode 'LayOnGroundSensor' ;
  x3do:toField 'startTime' ;
  x3do:toNode 'lauchTimer' .
:ROUTE_2_7_3_5 a owl:NamedIndividual, x3do:ROUTE ;
  x3do:hasParent :LayBridgeRoutes ;
  x3do:fromField 'value_changed' ;
  x3do:fromNode 'TiltFrontArm' ;
  x3do:toField 'set_rotation' ;
  x3do:toNode 'FrontArm' .
:CrossBridgeRoutes a owl:NamedIndividual, x3do:Group ;
  x3do:hasParent :M1HAB ;
  x3do:hasROUTE :ROUTE_2_7_4_1, :ROUTE_2_7_4_2, :ROUTE_2_7_4_3, :ROUTE_2_7_4_4 ;
  x3do:DEF 'CrossBridgeRoutes' .
:ROUTE_2_7_4_1 a owl:NamedIndividual, x3do:ROUTE ;
  x3do:hasParent :CrossBridgeRoutes ;
  x3do:fromField 'value_changed' ;
  x3do:fromNode 'MoveTankAcrossBridge' ;
  x3do:toField 'set_translation' ;
  x3do:toNode 'M1ChassisPlus' .
:ROUTE_2_7_4_2 a owl:NamedIndividual, x3do:ROUTE ;
  x3do:hasParent :CrossBridgeRoutes ;
  x3do:fromField 'value_changed' ;
  x3do:fromNode 'TiltTankAcrossBridge' ;
  x3do:toField 'set_rotation' ;
  x3do:toNode 'M1ChassisPlus' .
:ROUTE_2_7_4_3 a owl:NamedIndividual, x3do:ROUTE ;
  x3do:hasParent :CrossBridgeRoutes ;
  x3do:fromField 'touchTime' ;
  x3do:fromNode 'MoveTankSensor' ;
  x3do:toField 'startTime' ;
  x3do:toNode 'MoveTankTimer' .
:ROUTE_2_7_4_4 a owl:NamedIndividual, x3do:ROUTE ;
  x3do:hasParent :CrossBridgeRoutes ;
  x3do:fromField 'touchTime' ;
  x3do:fromNode 'MoveTankSensor' ;
  x3do:toField 'set_startTime' ;
  x3do:toNode 'TankSound' .
