Browse Source

Merge remote-tracking branch 'upstream/dev' into dev

zhaoy 7 years ago
parent
commit
4c5ef9e7f9
100 changed files with 1952 additions and 10670 deletions
  1. 462 72
      build/three.js
  2. 351 348
      build/three.min.js
  3. 462 72
      build/three.module.js
  4. 15 15
      docs/api/audio/Audio.html
  5. 4 4
      docs/api/audio/AudioListener.html
  6. 8 7
      docs/api/audio/PositionalAudio.html
  7. 1 1
      docs/api/extras/ShapeUtils.html
  8. 1 1
      docs/api/loaders/CubeTextureLoader.html
  9. 1 1
      docs/api/loaders/ImageLoader.html
  10. 12 1
      docs/api/loaders/JSONLoader.html
  11. 1 0
      docs/api/loaders/Loader.html
  12. 1 2
      docs/api/loaders/ObjectLoader.html
  13. 1 1
      docs/api/loaders/TextureLoader.html
  14. 28 4
      docs/api/math/Color.html
  15. 1 1
      docs/api/objects/Line.html
  16. 8 7
      docs/examples/loaders/MTLLoader.html
  17. 0 1
      editor/index.html
  18. 0 20
      editor/js/Loader.js
  19. 1 1
      editor/js/libs/tern-threejs/threejs.js
  20. 1 4
      examples/files.js
  21. 25 36
      examples/js/BufferGeometryUtils.js
  22. 3 4
      examples/js/controls/EditorControls.js
  23. 1 1
      examples/js/exporters/GLTFExporter.js
  24. 4 1
      examples/js/loaders/AssimpJSONLoader.js
  25. 4 3
      examples/js/loaders/AssimpLoader.js
  26. 4 1
      examples/js/loaders/BinaryLoader.js
  27. 12 2
      examples/js/loaders/ColladaLoader.js
  28. 2 10
      examples/js/loaders/DRACOLoader.js
  29. 12 1
      examples/js/loaders/FBXLoader.js
  30. 1 1
      examples/js/loaders/GLTFLoader.js
  31. 1 1
      examples/js/loaders/LoaderSupport.js
  32. 4 4
      examples/js/loaders/MMDLoader.js
  33. 2 1
      examples/js/loaders/MTLLoader.js
  34. 0 752
      examples/js/loaders/UTF8Loader.js
  35. 2 1
      examples/js/loaders/VRMLLoader.js
  36. 1 1
      examples/js/loaders/VRMLoader.js
  37. 2 1
      examples/js/loaders/deprecated/LegacyGLTFLoader.js
  38. 2 2
      examples/js/vr/WebVR.js
  39. 0 0
      examples/js/vr/deprecated/DaydreamController.js
  40. 0 0
      examples/js/vr/deprecated/GearVRController.js
  41. 0 21
      examples/models/obj/gear_vr_controller/LICENSE.txt
  42. 0 22
      examples/models/obj/gear_vr_controller/gear_vr_controller.mtl
  43. 0 1064
      examples/models/obj/gear_vr_controller/gear_vr_controller.obj
  44. 0 21
      examples/models/obj/oculus_go_controller/LICENSE.txt
  45. 0 14
      examples/models/obj/oculus_go_controller/oculus_go_controller.mtl
  46. 0 7013
      examples/models/obj/oculus_go_controller/oculus_go_controller.obj
  47. BIN
      examples/models/utf8/James_Body_Lores.jpg
  48. BIN
      examples/models/utf8/James_EyeLashBotTran.png
  49. BIN
      examples/models/utf8/James_EyeLashTopTran.png
  50. BIN
      examples/models/utf8/James_Eye_Green.jpg
  51. BIN
      examples/models/utf8/James_Eye_Inner_Green.jpg
  52. BIN
      examples/models/utf8/James_Face_Color_Hair_Lores.jpg
  53. BIN
      examples/models/utf8/James_Mouth_Gum_Lores.jpg
  54. BIN
      examples/models/utf8/James_Tongue_Lores.jpg
  55. BIN
      examples/models/utf8/MCasShoe1TEX_Lores.jpg
  56. BIN
      examples/models/utf8/MJeans1TEX_Lores.jpg
  57. BIN
      examples/models/utf8/MTshirt3TEX_Lores.jpg
  58. BIN
      examples/models/utf8/Nail_Hand_01_Lores.jpg
  59. 0 21
      examples/models/utf8/WaltHi.js
  60. BIN
      examples/models/utf8/WaltHi.utf8
  61. 0 107
      examples/models/utf8/ben.js
  62. BIN
      examples/models/utf8/ben.utf8
  63. 0 107
      examples/models/utf8/ben_dds.js
  64. BIN
      examples/models/utf8/dds/James_Body_Lores.dds
  65. BIN
      examples/models/utf8/dds/James_EyeLashBotTran.dds
  66. BIN
      examples/models/utf8/dds/James_EyeLashTopTran.dds
  67. BIN
      examples/models/utf8/dds/James_Eye_Green.dds
  68. BIN
      examples/models/utf8/dds/James_Eye_Inner_Green.dds
  69. BIN
      examples/models/utf8/dds/James_Face_Color_Hair_Lores.dds
  70. BIN
      examples/models/utf8/dds/James_Mouth_Gum_Lores.dds
  71. BIN
      examples/models/utf8/dds/James_Tongue_Lores.dds
  72. BIN
      examples/models/utf8/dds/MCasShoe1TEX_Lores.dds
  73. BIN
      examples/models/utf8/dds/MJeans1TEX_Lores.dds
  74. BIN
      examples/models/utf8/dds/MTshirt3TEX_Lores.dds
  75. BIN
      examples/models/utf8/dds/Nail_Hand_01_Lores.dds
  76. BIN
      examples/models/utf8/hand.jpg
  77. 0 27
      examples/models/utf8/hand.js
  78. BIN
      examples/models/utf8/hand.utf8
  79. 2 4
      examples/webaudio_orientation.html
  80. 0 2
      examples/webgl_buffergeometry_instancing_lambert.html
  81. 0 232
      examples/webgl_loader_utf8.html
  82. 3 3
      examples/webgl_tiled_forward.html
  83. 25 21
      examples/webvr_ballshooter.html
  84. 0 262
      examples/webvr_gearvr.html
  85. 36 22
      examples/webvr_lorenzattractor.html
  86. 0 263
      examples/webvr_oculusgo.html
  87. 6 0
      src/audio/AudioListener.js
  88. 8 0
      src/audio/PositionalAudio.js
  89. 1 1
      src/loaders/CubeTextureLoader.js
  90. 1 1
      src/loaders/ImageLoader.js
  91. 10 0
      src/loaders/JSONLoader.js
  92. 1 1
      src/loaders/Loader.js
  93. 42 4
      src/loaders/ObjectLoader.js
  94. 1 1
      src/loaders/TextureLoader.js
  95. 56 0
      src/math/Color.js
  96. 9 7
      src/math/Quaternion.js
  97. 95 19
      src/objects/Mesh.js
  98. 4 2
      src/renderers/WebGLRenderer.js
  99. 112 1
      src/renderers/webvr/WebVRManager.js
  100. 99 21
      src/renderers/webvr/WebXRManager.js

+ 462 - 72
build/three.js

@@ -3827,9 +3827,31 @@
 
 
 				if ( ! isRootObject && meta.images[ image.uuid ] === undefined ) {
 				if ( ! isRootObject && meta.images[ image.uuid ] === undefined ) {
 
 
+					var url;
+
+					if ( Array.isArray( image ) ) {
+
+						// process array of images e.g. CubeTexture
+
+						url = [];
+
+						for ( var i = 0, l = image.length; i < l; i ++ ) {
+
+							url.push( getDataURL( image[ i ] ) );
+
+						}
+
+					} else {
+
+						// process single image
+
+						url = getDataURL( image );
+
+					}
+
 					meta.images[ image.uuid ] = {
 					meta.images[ image.uuid ] = {
 						uuid: image.uuid,
 						uuid: image.uuid,
-						url: getDataURL( image )
+						url: url
 					};
 					};
 
 
 				}
 				}
@@ -6646,6 +6668,62 @@
 
 
 		},
 		},
 
 
+		copySRGBToLinear: function () {
+
+			function SRGBToLinear( c ) {
+
+				return ( c < 0.04045 ) ? c * 0.0773993808 : Math.pow( c * 0.9478672986 + 0.0521327014, 2.4 );
+
+			}
+
+			return function copySRGBToLinear( color ) {
+
+				this.r = SRGBToLinear( color.r );
+				this.g = SRGBToLinear( color.g );
+				this.b = SRGBToLinear( color.b );
+
+				return this;
+
+			};
+
+		}(),
+
+		copyLinearToSRGB: function () {
+
+			function LinearToSRGB( c ) {
+
+				return ( c < 0.0031308 ) ? c * 12.92 : 1.055 * ( Math.pow( c, 0.41666 ) ) - 0.055;
+
+			}
+
+			return function copyLinearToSRGB( color ) {
+
+				this.r = LinearToSRGB( color.r );
+				this.g = LinearToSRGB( color.g );
+				this.b = LinearToSRGB( color.b );
+
+				return this;
+
+			};
+
+		}(),
+
+		convertSRGBToLinear: function () {
+
+			this.copySRGBToLinear( this );
+
+			return this;
+
+		},
+
+		convertLinearToSRGB: function () {
+
+			this.copyLinearToSRGB( this );
+
+			return this;
+
+		},
+
 		getHex: function () {
 		getHex: function () {
 
 
 			return ( this.r * 255 ) << 16 ^ ( this.g * 255 ) << 8 ^ ( this.b * 255 ) << 0;
 			return ( this.r * 255 ) << 16 ^ ( this.g * 255 ) << 8 ^ ( this.b * 255 ) << 0;
@@ -14291,13 +14369,13 @@
 
 
 			}
 			}
 
 
-			function checkBufferGeometryIntersection( object, raycaster, ray, position, uv, a, b, c ) {
+			function checkBufferGeometryIntersection( object, material, raycaster, ray, position, uv, a, b, c ) {
 
 
 				vA.fromBufferAttribute( position, a );
 				vA.fromBufferAttribute( position, a );
 				vB.fromBufferAttribute( position, b );
 				vB.fromBufferAttribute( position, b );
 				vC.fromBufferAttribute( position, c );
 				vC.fromBufferAttribute( position, c );
 
 
-				var intersection = checkIntersection( object, object.material, raycaster, ray, vA, vB, vC, intersectionPoint );
+				var intersection = checkIntersection( object, material, raycaster, ray, vA, vB, vC, intersectionPoint );
 
 
 				if ( intersection ) {
 				if ( intersection ) {
 
 
@@ -14360,24 +14438,64 @@
 					var index = geometry.index;
 					var index = geometry.index;
 					var position = geometry.attributes.position;
 					var position = geometry.attributes.position;
 					var uv = geometry.attributes.uv;
 					var uv = geometry.attributes.uv;
-					var i, l;
+					var groups = geometry.groups;
+					var drawRange = geometry.drawRange;
+					var i, j, il, jl;
+					var group, groupMaterial;
+					var start, end;
 
 
 					if ( index !== null ) {
 					if ( index !== null ) {
 
 
 						// indexed buffer geometry
 						// indexed buffer geometry
 
 
-						for ( i = 0, l = index.count; i < l; i += 3 ) {
+						if ( Array.isArray( material ) ) {
+
+							for ( i = 0, il = groups.length; i < il; i ++ ) {
+
+								group = groups[ i ];
+								groupMaterial = material[ group.materialIndex ];
 
 
-							a = index.getX( i );
-							b = index.getX( i + 1 );
-							c = index.getX( i + 2 );
+								start = Math.max( group.start, drawRange.start );
+								end = Math.min( ( group.start + group.count ), ( drawRange.start + drawRange.count ) );
 
 
-							intersection = checkBufferGeometryIntersection( this, raycaster, ray, position, uv, a, b, c );
+								for ( j = start, jl = end; j < jl; j += 3 ) {
 
 
-							if ( intersection ) {
+									a = index.getX( i );
+									b = index.getX( i + 1 );
+									c = index.getX( i + 2 );
 
 
-								intersection.faceIndex = Math.floor( i / 3 ); // triangle number in indexed buffer semantics
-								intersects.push( intersection );
+									intersection = checkBufferGeometryIntersection( this, groupMaterial, raycaster, ray, position, uv, a, b, c );
+
+									if ( intersection ) {
+
+										intersection.faceIndex = Math.floor( i / 3 ); // triangle number in indexed buffer semantics
+										intersects.push( intersection );
+
+									}
+
+								}
+
+							}
+
+						} else {
+
+							start = Math.max( 0, drawRange.start );
+							end = Math.min( index.count, ( drawRange.start + drawRange.count ) );
+
+							for ( i = start, il = end; i < il; i += 3 ) {
+
+								a = index.getX( i );
+								b = index.getX( i + 1 );
+								c = index.getX( i + 2 );
+
+								intersection = checkBufferGeometryIntersection( this, material, raycaster, ray, position, uv, a, b, c );
+
+								if ( intersection ) {
+
+									intersection.faceIndex = Math.floor( i / 3 ); // triangle number in indexed buffer semantics
+									intersects.push( intersection );
+
+								}
 
 
 							}
 							}
 
 
@@ -14387,18 +14505,54 @@
 
 
 						// non-indexed buffer geometry
 						// non-indexed buffer geometry
 
 
-						for ( i = 0, l = position.count; i < l; i += 3 ) {
+						if ( Array.isArray( material ) ) {
+
+							for ( i = 0, il = groups.length; i < il; i ++ ) {
+
+								group = groups[ i ];
+								groupMaterial = material[ group.materialIndex ];
+
+								start = Math.max( group.start, drawRange.start );
+								end = Math.min( ( group.start + group.count ), ( drawRange.start + drawRange.count ) );
+
+								for ( j = start, jl = end; j < jl; j += 3 ) {
+
+									a = j;
+									b = j + 1;
+									c = j + 2;
+
+									intersection = checkBufferGeometryIntersection( this, groupMaterial, raycaster, ray, position, uv, a, b, c );
+
+									if ( intersection ) {
+
+										intersection.faceIndex = Math.floor( i / 3 ); // triangle number in non-indexed buffer semantics
+										intersects.push( intersection );
+
+									}
+
+								}
+
+							}
+
+						} else {
+
+							start = Math.max( 0, drawRange.start );
+							end = Math.min( position.count, ( drawRange.start + drawRange.count ) );
 
 
-							a = i;
-							b = i + 1;
-							c = i + 2;
+							for ( i = start, il = end; i < il; i += 3 ) {
 
 
-							intersection = checkBufferGeometryIntersection( this, raycaster, ray, position, uv, a, b, c );
+								a = i;
+								b = i + 1;
+								c = i + 2;
 
 
-							if ( intersection ) {
+								intersection = checkBufferGeometryIntersection( this, material, raycaster, ray, position, uv, a, b, c );
 
 
-								intersection.faceIndex = Math.floor( i / 3 ); // triangle number in non-indexed buffer semantics
-								intersects.push( intersection );
+								if ( intersection ) {
+
+									intersection.faceIndex = Math.floor( i / 3 ); // triangle number in non-indexed buffer semantics
+									intersects.push( intersection );
+
+								}
 
 
 							}
 							}
 
 
@@ -20973,6 +21127,26 @@
 
 
 	}
 	}
 
 
+	/**
+	 * @author mrdoob / http://mrdoob.com/
+	 */
+
+	function Group() {
+
+		Object3D.call( this );
+
+		this.type = 'Group';
+
+	}
+
+	Group.prototype = Object.assign( Object.create( Object3D.prototype ), {
+
+		constructor: Group,
+
+		isGroup: true
+
+	} );
+
 	/**
 	/**
 	 * @author mrdoob / http://mrdoob.com/
 	 * @author mrdoob / http://mrdoob.com/
 	 * @author greggman / http://games.greggman.com/
 	 * @author greggman / http://games.greggman.com/
@@ -21243,6 +21417,7 @@
 
 
 		var poseTarget = null;
 		var poseTarget = null;
 
 
+		var controllers = [];
 		var standingMatrix = new Matrix4();
 		var standingMatrix = new Matrix4();
 		var standingMatrixInverse = new Matrix4();
 		var standingMatrixInverse = new Matrix4();
 
 
@@ -21306,9 +21481,111 @@
 
 
 		//
 		//
 
 
+		var isTriggerPressed = false;
+
+		function findGamepad( id ) {
+
+			var gamepads = navigator.getGamepads && navigator.getGamepads();
+
+			for ( var i = 0, j = 0, l = gamepads.length; i < l; i ++ ) {
+
+				var gamepad = gamepads[ i ];
+
+				if ( gamepad && ( gamepad.id === 'Daydream Controller' ||
+					gamepad.id === 'Gear VR Controller' || gamepad.id === 'Oculus Go Controller' ||
+					gamepad.id === 'OpenVR Gamepad' || gamepad.id.startsWith( 'Oculus Touch' ) ||
+					gamepad.id.startsWith( 'Spatial Controller' ) ) ) {
+
+					if ( j === id ) return gamepad;
+
+					j ++;
+
+				}
+
+			}
+
+		}
+
+		function updateControllers() {
+
+			for ( var i = 0; i < controllers.length; i ++ ) {
+
+				var controller = controllers[ i ];
+
+				var gamepad = findGamepad( i );
+
+				if ( gamepad !== undefined && gamepad.pose !== undefined ) {
+
+					if ( gamepad.pose === null ) return;
+
+					//  Pose
+
+					var pose = gamepad.pose;
+
+					if ( pose.hasPosition === false ) controller.position.set( 0.2, - 0.6, - 0.05 );
+
+					if ( pose.position !== null ) controller.position.fromArray( pose.position );
+					if ( pose.orientation !== null ) controller.quaternion.fromArray( pose.orientation );
+					controller.matrix.compose( controller.position, controller.quaternion, controller.scale );
+					controller.matrix.premultiply( standingMatrix );
+					controller.matrix.decompose( controller.position, controller.quaternion, controller.scale );
+					controller.matrixWorldNeedsUpdate = true;
+					controller.visible = true;
+
+					//  Trigger
+
+					var buttonId = gamepad.id === 'Daydream Controller' ? 0 : 1;
+
+					if ( isTriggerPressed !== gamepad.buttons[ buttonId ].pressed ) {
+
+						isTriggerPressed = gamepad.buttons[ buttonId ].pressed;
+
+						if ( isTriggerPressed ) {
+
+							controller.dispatchEvent( { type: 'selectstart' } );
+
+						} else {
+
+							controller.dispatchEvent( { type: 'selectend' } );
+							controller.dispatchEvent( { type: 'select' } );
+
+						}
+
+					}
+
+				} else {
+
+					controller.visible = false;
+
+				}
+
+			}
+
+		}
+
+		//
+
 		this.enabled = false;
 		this.enabled = false;
 		this.userHeight = 1.6;
 		this.userHeight = 1.6;
 
 
+		this.getController = function ( id ) {
+
+			var controller = controllers[ id ];
+
+			if ( controller === undefined ) {
+
+				controller = new Group();
+				controller.matrixAutoUpdate = false;
+				controller.visible = false;
+
+				controllers[ id ] = controller;
+
+			}
+
+			return controller;
+
+		};
+
 		this.getDevice = function () {
 		this.getDevice = function () {
 
 
 			return device;
 			return device;
@@ -21331,7 +21608,12 @@
 
 
 		this.getCamera = function ( camera ) {
 		this.getCamera = function ( camera ) {
 
 
-			if ( device === null ) return camera;
+			if ( device === null ) {
+
+				camera.position.set( 0, scope.userHeight, 0 );
+				return camera;
+
+			}
 
 
 			device.depthNear = camera.near;
 			device.depthNear = camera.near;
 			device.depthFar = camera.far;
 			device.depthFar = camera.far;
@@ -21447,6 +21729,8 @@
 
 
 			}
 			}
 
 
+			updateControllers();
+
 			return cameraVR;
 			return cameraVR;
 
 
 		};
 		};
@@ -21502,10 +21786,14 @@
 
 
 		var pose = null;
 		var pose = null;
 
 
+		var controllers = [];
+		var inputSources = [];
+
 		function isPresenting() {
 		function isPresenting() {
 
 
 			return session !== null && frameOfRef !== null;
 			return session !== null && frameOfRef !== null;
 
 
+
 		}
 		}
 
 
 		//
 		//
@@ -21526,6 +21814,24 @@
 
 
 		this.enabled = false;
 		this.enabled = false;
 
 
+		this.getController = function ( id ) {
+
+			var controller = controllers[ id ];
+
+			if ( controller === undefined ) {
+
+				controller = new Group();
+				controller.matrixAutoUpdate = false;
+				controller.visible = false;
+
+				controllers[ id ] = controller;
+
+			}
+
+			return controller;
+
+		};
+
 		this.getDevice = function () {
 		this.getDevice = function () {
 
 
 			return device;
 			return device;
@@ -21542,18 +21848,30 @@
 
 
 		//
 		//
 
 
+		function onSessionEvent( event ) {
+
+			var controller = controllers[ inputSources.indexOf( event.inputSource ) ];
+			if ( controller ) controller.dispatchEvent( { type: event.type } );
+
+		}
+
+		function onSessionEnd() {
+
+			renderer.setFramebuffer( null );
+			animation.stop();
+
+		}
+
 		this.setSession = function ( value, options ) {
 		this.setSession = function ( value, options ) {
 
 
 			session = value;
 			session = value;
 
 
 			if ( session !== null ) {
 			if ( session !== null ) {
 
 
-				session.addEventListener( 'end', function () {
-
-					renderer.setFramebuffer( null );
-					animation.stop();
-
-				} );
+				session.addEventListener( 'select', onSessionEvent );
+				session.addEventListener( 'selectstart', onSessionEvent );
+				session.addEventListener( 'selectend', onSessionEvent );
+				session.addEventListener( 'end', onSessionEnd );
 
 
 				session.baseLayer = new XRWebGLLayer( session, gl );
 				session.baseLayer = new XRWebGLLayer( session, gl );
 				session.requestFrameOfReference( options.frameOfReferenceType ).then( function ( value ) {
 				session.requestFrameOfReference( options.frameOfReferenceType ).then( function ( value ) {
@@ -21567,6 +21885,17 @@
 
 
 				} );
 				} );
 
 
+				//
+
+				inputSources = session.getInputSources();
+
+				session.addEventListener( 'inputsourceschange', function () {
+
+					inputSources = session.getInputSources();
+					console.log( inputSources );
+
+				} );
+
 			}
 			}
 
 
 		};
 		};
@@ -21634,31 +21963,63 @@
 
 
 			pose = frame.getDevicePose( frameOfRef );
 			pose = frame.getDevicePose( frameOfRef );
 
 
-			var layer = session.baseLayer;
-			var views = frame.views;
+			if ( pose !== null ) {
+
+				var layer = session.baseLayer;
+				var views = frame.views;
+
+				for ( var i = 0; i < views.length; i ++ ) {
+
+					var view = views[ i ];
+					var viewport = layer.getViewport( view );
+					var viewMatrix = pose.getViewMatrix( view );
+
+					var camera = cameraVR.cameras[ i ];
+					camera.matrix.fromArray( viewMatrix ).getInverse( camera.matrix );
+					camera.projectionMatrix.fromArray( view.projectionMatrix );
+					camera.viewport.set( viewport.x, viewport.y, viewport.width, viewport.height );
+
+					if ( i === 0 ) {
+
+						cameraVR.matrix.copy( camera.matrix );
+
+						// HACK (mrdoob)
+						// https://github.com/w3c/webvr/issues/203
+
+						cameraVR.projectionMatrix.copy( camera.projectionMatrix );
+
+					}
+
+				}
 
 
-			for ( var i = 0; i < views.length; i ++ ) {
+			}
+
+			//
 
 
-				var view = views[ i ];
-				var viewport = layer.getViewport( view );
-				var viewMatrix = pose.getViewMatrix( view );
+			for ( var i = 0; i < controllers.length; i ++ ) {
 
 
-				var camera = cameraVR.cameras[ i ];
-				camera.matrix.fromArray( viewMatrix ).getInverse( camera.matrix );
-				camera.projectionMatrix.fromArray( view.projectionMatrix );
-				camera.viewport.set( viewport.x, viewport.y, viewport.width, viewport.height );
+				var controller = controllers[ i ];
 
 
-				if ( i === 0 ) {
+				var inputSource = inputSources[ i ];
 
 
-					cameraVR.matrix.copy( camera.matrix );
+				if ( inputSource ) {
 
 
-					// HACK (mrdoob)
-					// https://github.com/w3c/webvr/issues/203
+					var inputPose = frame.getInputPose( inputSource, frameOfRef );
+
+					if ( inputPose !== null ) {
+
+						controller.matrix.elements = inputPose.pointerMatrix;
+						controller.matrix.decompose( controller.position, controller.rotation, controller.scale );
+						controller.visible = true;
+
+						continue;
 
 
-					cameraVR.projectionMatrix.copy( camera.projectionMatrix );
+					}
 
 
 				}
 				}
 
 
+				controller.visible = false;
+
 			}
 			}
 
 
 			if ( onAnimationFrameCallback ) onAnimationFrameCallback( time );
 			if ( onAnimationFrameCallback ) onAnimationFrameCallback( time );
@@ -23858,11 +24219,13 @@
 
 
 		function refreshUniformsPhysical( uniforms, material ) {
 		function refreshUniformsPhysical( uniforms, material ) {
 
 
+			refreshUniformsStandard( uniforms, material );
+
+			uniforms.reflectivity.value = material.reflectivity; // also part of uniforms common
+
 			uniforms.clearCoat.value = material.clearCoat;
 			uniforms.clearCoat.value = material.clearCoat;
 			uniforms.clearCoatRoughness.value = material.clearCoatRoughness;
 			uniforms.clearCoatRoughness.value = material.clearCoatRoughness;
 
 
-			refreshUniformsStandard( uniforms, material );
-
 		}
 		}
 
 
 		function refreshUniformsDepth( uniforms, material ) {
 		function refreshUniformsDepth( uniforms, material ) {
@@ -25625,26 +25988,6 @@
 
 
 	} );
 	} );
 
 
-	/**
-	 * @author mrdoob / http://mrdoob.com/
-	 */
-
-	function Group() {
-
-		Object3D.call( this );
-
-		this.type = 'Group';
-
-	}
-
-	Group.prototype = Object.assign( Object.create( Object3D.prototype ), {
-
-		constructor: Group,
-
-		isGroup: true
-
-	} );
-
 	/**
 	/**
 	 * @author mrdoob / http://mrdoob.com/
 	 * @author mrdoob / http://mrdoob.com/
 	 */
 	 */
@@ -31716,7 +32059,7 @@
 
 
 	Object.assign( ImageLoader.prototype, {
 	Object.assign( ImageLoader.prototype, {
 
 
-		crossOrigin: 'Anonymous',
+		crossOrigin: 'anonymous',
 
 
 		load: function ( url, onLoad, onProgress, onError ) {
 		load: function ( url, onLoad, onProgress, onError ) {
 
 
@@ -31819,7 +32162,7 @@
 
 
 	Object.assign( CubeTextureLoader.prototype, {
 	Object.assign( CubeTextureLoader.prototype, {
 
 
-		crossOrigin: 'Anonymous',
+		crossOrigin: 'anonymous',
 
 
 		load: function ( urls, onLoad, onProgress, onError ) {
 		load: function ( urls, onLoad, onProgress, onError ) {
 
 
@@ -31890,7 +32233,7 @@
 
 
 	Object.assign( TextureLoader.prototype, {
 	Object.assign( TextureLoader.prototype, {
 
 
-		crossOrigin: 'Anonymous',
+		crossOrigin: 'anonymous',
 
 
 		load: function ( url, onLoad, onProgress, onError ) {
 		load: function ( url, onLoad, onProgress, onError ) {
 
 
@@ -36410,7 +36753,7 @@
 
 
 	Object.assign( Loader.prototype, {
 	Object.assign( Loader.prototype, {
 
 
-		crossOrigin: undefined,
+		crossOrigin: 'anonymous',
 
 
 		onLoadStart: function () {},
 		onLoadStart: function () {},
 
 
@@ -36753,6 +37096,8 @@
 
 
 	Object.assign( JSONLoader.prototype, {
 	Object.assign( JSONLoader.prototype, {
 
 
+		crossOrigin: 'anonymous',
+
 		load: function ( url, onLoad, onProgress, onError ) {
 		load: function ( url, onLoad, onProgress, onError ) {
 
 
 			var scope = this;
 			var scope = this;
@@ -36790,9 +37135,17 @@
 
 
 		},
 		},
 
 
+		setCrossOrigin: function ( value ) {
+
+			this.crossOrigin = value;
+			return this;
+
+		},
+
 		setTexturePath: function ( value ) {
 		setTexturePath: function ( value ) {
 
 
 			this.texturePath = value;
 			this.texturePath = value;
+			return this;
 
 
 		},
 		},
 
 
@@ -37299,6 +37652,8 @@
 
 
 	Object.assign( ObjectLoader.prototype, {
 	Object.assign( ObjectLoader.prototype, {
 
 
+		crossOrigin: 'anonymous',
+
 		load: function ( url, onLoad, onProgress, onError ) {
 		load: function ( url, onLoad, onProgress, onError ) {
 
 
 			if ( this.texturePath === '' ) {
 			if ( this.texturePath === '' ) {
@@ -37765,12 +38120,36 @@
 				var loader = new ImageLoader( manager );
 				var loader = new ImageLoader( manager );
 				loader.setCrossOrigin( this.crossOrigin );
 				loader.setCrossOrigin( this.crossOrigin );
 
 
-				for ( var i = 0, l = json.length; i < l; i ++ ) {
+				for ( var i = 0, il = json.length; i < il; i ++ ) {
 
 
 					var image = json[ i ];
 					var image = json[ i ];
-					var path = /^(\/\/)|([a-z]+:(\/\/)?)/i.test( image.url ) ? image.url : scope.texturePath + image.url;
+					var url = image.url;
+
+					if ( Array.isArray( url ) ) {
+
+						// load array of images e.g CubeTexture
+
+						images[ image.uuid ] = [];
+
+						for ( var j = 0, jl = url.length; j < jl; j ++ ) {
+
+							var currentUrl = url[ j ];
+
+							var path = /^(\/\/)|([a-z]+:(\/\/)?)/i.test( currentUrl ) ? currentUrl : scope.texturePath + currentUrl;
 
 
-					images[ image.uuid ] = loadImage( path );
+							images[ image.uuid ].push( loadImage( path ) );
+
+						}
+
+					} else {
+
+						// load single image
+
+						var path = /^(\/\/)|([a-z]+:(\/\/)?)/i.test( image.url ) ? image.url : scope.texturePath + image.url;
+
+						images[ image.uuid ] = loadImage( path );
+
+					}
 
 
 				}
 				}
 
 
@@ -37812,7 +38191,18 @@
 
 
 					}
 					}
 
 
-					var texture = new Texture( images[ data.image ] );
+					var texture;
+
+					if ( Array.isArray( images[ data.image ] ) ) {
+
+						texture = new CubeTexture( images[ data.image ] );
+
+					} else {
+
+						texture = new Texture( images[ data.image ] );
+
+					}
+
 					texture.needsUpdate = true;
 					texture.needsUpdate = true;
 
 
 					texture.uuid = data.uuid;
 					texture.uuid = data.uuid;

File diff suppressed because it is too large
+ 351 - 348
build/three.min.js


+ 462 - 72
build/three.module.js

@@ -3821,9 +3821,31 @@ Texture.prototype = Object.assign( Object.create( EventDispatcher.prototype ), {
 
 
 			if ( ! isRootObject && meta.images[ image.uuid ] === undefined ) {
 			if ( ! isRootObject && meta.images[ image.uuid ] === undefined ) {
 
 
+				var url;
+
+				if ( Array.isArray( image ) ) {
+
+					// process array of images e.g. CubeTexture
+
+					url = [];
+
+					for ( var i = 0, l = image.length; i < l; i ++ ) {
+
+						url.push( getDataURL( image[ i ] ) );
+
+					}
+
+				} else {
+
+					// process single image
+
+					url = getDataURL( image );
+
+				}
+
 				meta.images[ image.uuid ] = {
 				meta.images[ image.uuid ] = {
 					uuid: image.uuid,
 					uuid: image.uuid,
-					url: getDataURL( image )
+					url: url
 				};
 				};
 
 
 			}
 			}
@@ -6640,6 +6662,62 @@ Object.assign( Color.prototype, {
 
 
 	},
 	},
 
 
+	copySRGBToLinear: function () {
+
+		function SRGBToLinear( c ) {
+
+			return ( c < 0.04045 ) ? c * 0.0773993808 : Math.pow( c * 0.9478672986 + 0.0521327014, 2.4 );
+
+		}
+
+		return function copySRGBToLinear( color ) {
+
+			this.r = SRGBToLinear( color.r );
+			this.g = SRGBToLinear( color.g );
+			this.b = SRGBToLinear( color.b );
+
+			return this;
+
+		};
+
+	}(),
+
+	copyLinearToSRGB: function () {
+
+		function LinearToSRGB( c ) {
+
+			return ( c < 0.0031308 ) ? c * 12.92 : 1.055 * ( Math.pow( c, 0.41666 ) ) - 0.055;
+
+		}
+
+		return function copyLinearToSRGB( color ) {
+
+			this.r = LinearToSRGB( color.r );
+			this.g = LinearToSRGB( color.g );
+			this.b = LinearToSRGB( color.b );
+
+			return this;
+
+		};
+
+	}(),
+
+	convertSRGBToLinear: function () {
+
+		this.copySRGBToLinear( this );
+
+		return this;
+
+	},
+
+	convertLinearToSRGB: function () {
+
+		this.copyLinearToSRGB( this );
+
+		return this;
+
+	},
+
 	getHex: function () {
 	getHex: function () {
 
 
 		return ( this.r * 255 ) << 16 ^ ( this.g * 255 ) << 8 ^ ( this.b * 255 ) << 0;
 		return ( this.r * 255 ) << 16 ^ ( this.g * 255 ) << 8 ^ ( this.b * 255 ) << 0;
@@ -14285,13 +14363,13 @@ Mesh.prototype = Object.assign( Object.create( Object3D.prototype ), {
 
 
 		}
 		}
 
 
-		function checkBufferGeometryIntersection( object, raycaster, ray, position, uv, a, b, c ) {
+		function checkBufferGeometryIntersection( object, material, raycaster, ray, position, uv, a, b, c ) {
 
 
 			vA.fromBufferAttribute( position, a );
 			vA.fromBufferAttribute( position, a );
 			vB.fromBufferAttribute( position, b );
 			vB.fromBufferAttribute( position, b );
 			vC.fromBufferAttribute( position, c );
 			vC.fromBufferAttribute( position, c );
 
 
-			var intersection = checkIntersection( object, object.material, raycaster, ray, vA, vB, vC, intersectionPoint );
+			var intersection = checkIntersection( object, material, raycaster, ray, vA, vB, vC, intersectionPoint );
 
 
 			if ( intersection ) {
 			if ( intersection ) {
 
 
@@ -14354,24 +14432,64 @@ Mesh.prototype = Object.assign( Object.create( Object3D.prototype ), {
 				var index = geometry.index;
 				var index = geometry.index;
 				var position = geometry.attributes.position;
 				var position = geometry.attributes.position;
 				var uv = geometry.attributes.uv;
 				var uv = geometry.attributes.uv;
-				var i, l;
+				var groups = geometry.groups;
+				var drawRange = geometry.drawRange;
+				var i, j, il, jl;
+				var group, groupMaterial;
+				var start, end;
 
 
 				if ( index !== null ) {
 				if ( index !== null ) {
 
 
 					// indexed buffer geometry
 					// indexed buffer geometry
 
 
-					for ( i = 0, l = index.count; i < l; i += 3 ) {
+					if ( Array.isArray( material ) ) {
+
+						for ( i = 0, il = groups.length; i < il; i ++ ) {
+
+							group = groups[ i ];
+							groupMaterial = material[ group.materialIndex ];
 
 
-						a = index.getX( i );
-						b = index.getX( i + 1 );
-						c = index.getX( i + 2 );
+							start = Math.max( group.start, drawRange.start );
+							end = Math.min( ( group.start + group.count ), ( drawRange.start + drawRange.count ) );
 
 
-						intersection = checkBufferGeometryIntersection( this, raycaster, ray, position, uv, a, b, c );
+							for ( j = start, jl = end; j < jl; j += 3 ) {
 
 
-						if ( intersection ) {
+								a = index.getX( i );
+								b = index.getX( i + 1 );
+								c = index.getX( i + 2 );
 
 
-							intersection.faceIndex = Math.floor( i / 3 ); // triangle number in indexed buffer semantics
-							intersects.push( intersection );
+								intersection = checkBufferGeometryIntersection( this, groupMaterial, raycaster, ray, position, uv, a, b, c );
+
+								if ( intersection ) {
+
+									intersection.faceIndex = Math.floor( i / 3 ); // triangle number in indexed buffer semantics
+									intersects.push( intersection );
+
+								}
+
+							}
+
+						}
+
+					} else {
+
+						start = Math.max( 0, drawRange.start );
+						end = Math.min( index.count, ( drawRange.start + drawRange.count ) );
+
+						for ( i = start, il = end; i < il; i += 3 ) {
+
+							a = index.getX( i );
+							b = index.getX( i + 1 );
+							c = index.getX( i + 2 );
+
+							intersection = checkBufferGeometryIntersection( this, material, raycaster, ray, position, uv, a, b, c );
+
+							if ( intersection ) {
+
+								intersection.faceIndex = Math.floor( i / 3 ); // triangle number in indexed buffer semantics
+								intersects.push( intersection );
+
+							}
 
 
 						}
 						}
 
 
@@ -14381,18 +14499,54 @@ Mesh.prototype = Object.assign( Object.create( Object3D.prototype ), {
 
 
 					// non-indexed buffer geometry
 					// non-indexed buffer geometry
 
 
-					for ( i = 0, l = position.count; i < l; i += 3 ) {
+					if ( Array.isArray( material ) ) {
+
+						for ( i = 0, il = groups.length; i < il; i ++ ) {
+
+							group = groups[ i ];
+							groupMaterial = material[ group.materialIndex ];
+
+							start = Math.max( group.start, drawRange.start );
+							end = Math.min( ( group.start + group.count ), ( drawRange.start + drawRange.count ) );
+
+							for ( j = start, jl = end; j < jl; j += 3 ) {
+
+								a = j;
+								b = j + 1;
+								c = j + 2;
+
+								intersection = checkBufferGeometryIntersection( this, groupMaterial, raycaster, ray, position, uv, a, b, c );
+
+								if ( intersection ) {
+
+									intersection.faceIndex = Math.floor( i / 3 ); // triangle number in non-indexed buffer semantics
+									intersects.push( intersection );
+
+								}
+
+							}
+
+						}
+
+					} else {
+
+						start = Math.max( 0, drawRange.start );
+						end = Math.min( position.count, ( drawRange.start + drawRange.count ) );
 
 
-						a = i;
-						b = i + 1;
-						c = i + 2;
+						for ( i = start, il = end; i < il; i += 3 ) {
 
 
-						intersection = checkBufferGeometryIntersection( this, raycaster, ray, position, uv, a, b, c );
+							a = i;
+							b = i + 1;
+							c = i + 2;
 
 
-						if ( intersection ) {
+							intersection = checkBufferGeometryIntersection( this, material, raycaster, ray, position, uv, a, b, c );
 
 
-							intersection.faceIndex = Math.floor( i / 3 ); // triangle number in non-indexed buffer semantics
-							intersects.push( intersection );
+							if ( intersection ) {
+
+								intersection.faceIndex = Math.floor( i / 3 ); // triangle number in non-indexed buffer semantics
+								intersects.push( intersection );
+
+							}
 
 
 						}
 						}
 
 
@@ -20967,6 +21121,26 @@ function WebGLUtils( gl, extensions ) {
 
 
 }
 }
 
 
+/**
+ * @author mrdoob / http://mrdoob.com/
+ */
+
+function Group() {
+
+	Object3D.call( this );
+
+	this.type = 'Group';
+
+}
+
+Group.prototype = Object.assign( Object.create( Object3D.prototype ), {
+
+	constructor: Group,
+
+	isGroup: true
+
+} );
+
 /**
 /**
  * @author mrdoob / http://mrdoob.com/
  * @author mrdoob / http://mrdoob.com/
  * @author greggman / http://games.greggman.com/
  * @author greggman / http://games.greggman.com/
@@ -21237,6 +21411,7 @@ function WebVRManager( renderer ) {
 
 
 	var poseTarget = null;
 	var poseTarget = null;
 
 
+	var controllers = [];
 	var standingMatrix = new Matrix4();
 	var standingMatrix = new Matrix4();
 	var standingMatrixInverse = new Matrix4();
 	var standingMatrixInverse = new Matrix4();
 
 
@@ -21300,9 +21475,111 @@ function WebVRManager( renderer ) {
 
 
 	//
 	//
 
 
+	var isTriggerPressed = false;
+
+	function findGamepad( id ) {
+
+		var gamepads = navigator.getGamepads && navigator.getGamepads();
+
+		for ( var i = 0, j = 0, l = gamepads.length; i < l; i ++ ) {
+
+			var gamepad = gamepads[ i ];
+
+			if ( gamepad && ( gamepad.id === 'Daydream Controller' ||
+				gamepad.id === 'Gear VR Controller' || gamepad.id === 'Oculus Go Controller' ||
+				gamepad.id === 'OpenVR Gamepad' || gamepad.id.startsWith( 'Oculus Touch' ) ||
+				gamepad.id.startsWith( 'Spatial Controller' ) ) ) {
+
+				if ( j === id ) return gamepad;
+
+				j ++;
+
+			}
+
+		}
+
+	}
+
+	function updateControllers() {
+
+		for ( var i = 0; i < controllers.length; i ++ ) {
+
+			var controller = controllers[ i ];
+
+			var gamepad = findGamepad( i );
+
+			if ( gamepad !== undefined && gamepad.pose !== undefined ) {
+
+				if ( gamepad.pose === null ) return;
+
+				//  Pose
+
+				var pose = gamepad.pose;
+
+				if ( pose.hasPosition === false ) controller.position.set( 0.2, - 0.6, - 0.05 );
+
+				if ( pose.position !== null ) controller.position.fromArray( pose.position );
+				if ( pose.orientation !== null ) controller.quaternion.fromArray( pose.orientation );
+				controller.matrix.compose( controller.position, controller.quaternion, controller.scale );
+				controller.matrix.premultiply( standingMatrix );
+				controller.matrix.decompose( controller.position, controller.quaternion, controller.scale );
+				controller.matrixWorldNeedsUpdate = true;
+				controller.visible = true;
+
+				//  Trigger
+
+				var buttonId = gamepad.id === 'Daydream Controller' ? 0 : 1;
+
+				if ( isTriggerPressed !== gamepad.buttons[ buttonId ].pressed ) {
+
+					isTriggerPressed = gamepad.buttons[ buttonId ].pressed;
+
+					if ( isTriggerPressed ) {
+
+						controller.dispatchEvent( { type: 'selectstart' } );
+
+					} else {
+
+						controller.dispatchEvent( { type: 'selectend' } );
+						controller.dispatchEvent( { type: 'select' } );
+
+					}
+
+				}
+
+			} else {
+
+				controller.visible = false;
+
+			}
+
+		}
+
+	}
+
+	//
+
 	this.enabled = false;
 	this.enabled = false;
 	this.userHeight = 1.6;
 	this.userHeight = 1.6;
 
 
+	this.getController = function ( id ) {
+
+		var controller = controllers[ id ];
+
+		if ( controller === undefined ) {
+
+			controller = new Group();
+			controller.matrixAutoUpdate = false;
+			controller.visible = false;
+
+			controllers[ id ] = controller;
+
+		}
+
+		return controller;
+
+	};
+
 	this.getDevice = function () {
 	this.getDevice = function () {
 
 
 		return device;
 		return device;
@@ -21325,7 +21602,12 @@ function WebVRManager( renderer ) {
 
 
 	this.getCamera = function ( camera ) {
 	this.getCamera = function ( camera ) {
 
 
-		if ( device === null ) return camera;
+		if ( device === null ) {
+
+			camera.position.set( 0, scope.userHeight, 0 );
+			return camera;
+
+		}
 
 
 		device.depthNear = camera.near;
 		device.depthNear = camera.near;
 		device.depthFar = camera.far;
 		device.depthFar = camera.far;
@@ -21441,6 +21723,8 @@ function WebVRManager( renderer ) {
 
 
 		}
 		}
 
 
+		updateControllers();
+
 		return cameraVR;
 		return cameraVR;
 
 
 	};
 	};
@@ -21496,10 +21780,14 @@ function WebXRManager( renderer ) {
 
 
 	var pose = null;
 	var pose = null;
 
 
+	var controllers = [];
+	var inputSources = [];
+
 	function isPresenting() {
 	function isPresenting() {
 
 
 		return session !== null && frameOfRef !== null;
 		return session !== null && frameOfRef !== null;
 
 
+
 	}
 	}
 
 
 	//
 	//
@@ -21520,6 +21808,24 @@ function WebXRManager( renderer ) {
 
 
 	this.enabled = false;
 	this.enabled = false;
 
 
+	this.getController = function ( id ) {
+
+		var controller = controllers[ id ];
+
+		if ( controller === undefined ) {
+
+			controller = new Group();
+			controller.matrixAutoUpdate = false;
+			controller.visible = false;
+
+			controllers[ id ] = controller;
+
+		}
+
+		return controller;
+
+	};
+
 	this.getDevice = function () {
 	this.getDevice = function () {
 
 
 		return device;
 		return device;
@@ -21536,18 +21842,30 @@ function WebXRManager( renderer ) {
 
 
 	//
 	//
 
 
+	function onSessionEvent( event ) {
+
+		var controller = controllers[ inputSources.indexOf( event.inputSource ) ];
+		if ( controller ) controller.dispatchEvent( { type: event.type } );
+
+	}
+
+	function onSessionEnd() {
+
+		renderer.setFramebuffer( null );
+		animation.stop();
+
+	}
+
 	this.setSession = function ( value, options ) {
 	this.setSession = function ( value, options ) {
 
 
 		session = value;
 		session = value;
 
 
 		if ( session !== null ) {
 		if ( session !== null ) {
 
 
-			session.addEventListener( 'end', function () {
-
-				renderer.setFramebuffer( null );
-				animation.stop();
-
-			} );
+			session.addEventListener( 'select', onSessionEvent );
+			session.addEventListener( 'selectstart', onSessionEvent );
+			session.addEventListener( 'selectend', onSessionEvent );
+			session.addEventListener( 'end', onSessionEnd );
 
 
 			session.baseLayer = new XRWebGLLayer( session, gl );
 			session.baseLayer = new XRWebGLLayer( session, gl );
 			session.requestFrameOfReference( options.frameOfReferenceType ).then( function ( value ) {
 			session.requestFrameOfReference( options.frameOfReferenceType ).then( function ( value ) {
@@ -21561,6 +21879,17 @@ function WebXRManager( renderer ) {
 
 
 			} );
 			} );
 
 
+			//
+
+			inputSources = session.getInputSources();
+
+			session.addEventListener( 'inputsourceschange', function () {
+
+				inputSources = session.getInputSources();
+				console.log( inputSources );
+
+			} );
+
 		}
 		}
 
 
 	};
 	};
@@ -21628,31 +21957,63 @@ function WebXRManager( renderer ) {
 
 
 		pose = frame.getDevicePose( frameOfRef );
 		pose = frame.getDevicePose( frameOfRef );
 
 
-		var layer = session.baseLayer;
-		var views = frame.views;
+		if ( pose !== null ) {
+
+			var layer = session.baseLayer;
+			var views = frame.views;
+
+			for ( var i = 0; i < views.length; i ++ ) {
+
+				var view = views[ i ];
+				var viewport = layer.getViewport( view );
+				var viewMatrix = pose.getViewMatrix( view );
+
+				var camera = cameraVR.cameras[ i ];
+				camera.matrix.fromArray( viewMatrix ).getInverse( camera.matrix );
+				camera.projectionMatrix.fromArray( view.projectionMatrix );
+				camera.viewport.set( viewport.x, viewport.y, viewport.width, viewport.height );
+
+				if ( i === 0 ) {
+
+					cameraVR.matrix.copy( camera.matrix );
+
+					// HACK (mrdoob)
+					// https://github.com/w3c/webvr/issues/203
+
+					cameraVR.projectionMatrix.copy( camera.projectionMatrix );
+
+				}
+
+			}
 
 
-		for ( var i = 0; i < views.length; i ++ ) {
+		}
+
+		//
 
 
-			var view = views[ i ];
-			var viewport = layer.getViewport( view );
-			var viewMatrix = pose.getViewMatrix( view );
+		for ( var i = 0; i < controllers.length; i ++ ) {
 
 
-			var camera = cameraVR.cameras[ i ];
-			camera.matrix.fromArray( viewMatrix ).getInverse( camera.matrix );
-			camera.projectionMatrix.fromArray( view.projectionMatrix );
-			camera.viewport.set( viewport.x, viewport.y, viewport.width, viewport.height );
+			var controller = controllers[ i ];
 
 
-			if ( i === 0 ) {
+			var inputSource = inputSources[ i ];
 
 
-				cameraVR.matrix.copy( camera.matrix );
+			if ( inputSource ) {
 
 
-				// HACK (mrdoob)
-				// https://github.com/w3c/webvr/issues/203
+				var inputPose = frame.getInputPose( inputSource, frameOfRef );
+
+				if ( inputPose !== null ) {
+
+					controller.matrix.elements = inputPose.pointerMatrix;
+					controller.matrix.decompose( controller.position, controller.rotation, controller.scale );
+					controller.visible = true;
+
+					continue;
 
 
-				cameraVR.projectionMatrix.copy( camera.projectionMatrix );
+				}
 
 
 			}
 			}
 
 
+			controller.visible = false;
+
 		}
 		}
 
 
 		if ( onAnimationFrameCallback ) onAnimationFrameCallback( time );
 		if ( onAnimationFrameCallback ) onAnimationFrameCallback( time );
@@ -23852,11 +24213,13 @@ function WebGLRenderer( parameters ) {
 
 
 	function refreshUniformsPhysical( uniforms, material ) {
 	function refreshUniformsPhysical( uniforms, material ) {
 
 
+		refreshUniformsStandard( uniforms, material );
+
+		uniforms.reflectivity.value = material.reflectivity; // also part of uniforms common
+
 		uniforms.clearCoat.value = material.clearCoat;
 		uniforms.clearCoat.value = material.clearCoat;
 		uniforms.clearCoatRoughness.value = material.clearCoatRoughness;
 		uniforms.clearCoatRoughness.value = material.clearCoatRoughness;
 
 
-		refreshUniformsStandard( uniforms, material );
-
 	}
 	}
 
 
 	function refreshUniformsDepth( uniforms, material ) {
 	function refreshUniformsDepth( uniforms, material ) {
@@ -25619,26 +25982,6 @@ Points.prototype = Object.assign( Object.create( Object3D.prototype ), {
 
 
 } );
 } );
 
 
-/**
- * @author mrdoob / http://mrdoob.com/
- */
-
-function Group() {
-
-	Object3D.call( this );
-
-	this.type = 'Group';
-
-}
-
-Group.prototype = Object.assign( Object.create( Object3D.prototype ), {
-
-	constructor: Group,
-
-	isGroup: true
-
-} );
-
 /**
 /**
  * @author mrdoob / http://mrdoob.com/
  * @author mrdoob / http://mrdoob.com/
  */
  */
@@ -31710,7 +32053,7 @@ function ImageLoader( manager ) {
 
 
 Object.assign( ImageLoader.prototype, {
 Object.assign( ImageLoader.prototype, {
 
 
-	crossOrigin: 'Anonymous',
+	crossOrigin: 'anonymous',
 
 
 	load: function ( url, onLoad, onProgress, onError ) {
 	load: function ( url, onLoad, onProgress, onError ) {
 
 
@@ -31813,7 +32156,7 @@ function CubeTextureLoader( manager ) {
 
 
 Object.assign( CubeTextureLoader.prototype, {
 Object.assign( CubeTextureLoader.prototype, {
 
 
-	crossOrigin: 'Anonymous',
+	crossOrigin: 'anonymous',
 
 
 	load: function ( urls, onLoad, onProgress, onError ) {
 	load: function ( urls, onLoad, onProgress, onError ) {
 
 
@@ -31884,7 +32227,7 @@ function TextureLoader( manager ) {
 
 
 Object.assign( TextureLoader.prototype, {
 Object.assign( TextureLoader.prototype, {
 
 
-	crossOrigin: 'Anonymous',
+	crossOrigin: 'anonymous',
 
 
 	load: function ( url, onLoad, onProgress, onError ) {
 	load: function ( url, onLoad, onProgress, onError ) {
 
 
@@ -36404,7 +36747,7 @@ Loader.Handlers = {
 
 
 Object.assign( Loader.prototype, {
 Object.assign( Loader.prototype, {
 
 
-	crossOrigin: undefined,
+	crossOrigin: 'anonymous',
 
 
 	onLoadStart: function () {},
 	onLoadStart: function () {},
 
 
@@ -36747,6 +37090,8 @@ function JSONLoader( manager ) {
 
 
 Object.assign( JSONLoader.prototype, {
 Object.assign( JSONLoader.prototype, {
 
 
+	crossOrigin: 'anonymous',
+
 	load: function ( url, onLoad, onProgress, onError ) {
 	load: function ( url, onLoad, onProgress, onError ) {
 
 
 		var scope = this;
 		var scope = this;
@@ -36784,9 +37129,17 @@ Object.assign( JSONLoader.prototype, {
 
 
 	},
 	},
 
 
+	setCrossOrigin: function ( value ) {
+
+		this.crossOrigin = value;
+		return this;
+
+	},
+
 	setTexturePath: function ( value ) {
 	setTexturePath: function ( value ) {
 
 
 		this.texturePath = value;
 		this.texturePath = value;
+		return this;
 
 
 	},
 	},
 
 
@@ -37293,6 +37646,8 @@ function ObjectLoader( manager ) {
 
 
 Object.assign( ObjectLoader.prototype, {
 Object.assign( ObjectLoader.prototype, {
 
 
+	crossOrigin: 'anonymous',
+
 	load: function ( url, onLoad, onProgress, onError ) {
 	load: function ( url, onLoad, onProgress, onError ) {
 
 
 		if ( this.texturePath === '' ) {
 		if ( this.texturePath === '' ) {
@@ -37759,12 +38114,36 @@ Object.assign( ObjectLoader.prototype, {
 			var loader = new ImageLoader( manager );
 			var loader = new ImageLoader( manager );
 			loader.setCrossOrigin( this.crossOrigin );
 			loader.setCrossOrigin( this.crossOrigin );
 
 
-			for ( var i = 0, l = json.length; i < l; i ++ ) {
+			for ( var i = 0, il = json.length; i < il; i ++ ) {
 
 
 				var image = json[ i ];
 				var image = json[ i ];
-				var path = /^(\/\/)|([a-z]+:(\/\/)?)/i.test( image.url ) ? image.url : scope.texturePath + image.url;
+				var url = image.url;
+
+				if ( Array.isArray( url ) ) {
+
+					// load array of images e.g CubeTexture
+
+					images[ image.uuid ] = [];
+
+					for ( var j = 0, jl = url.length; j < jl; j ++ ) {
+
+						var currentUrl = url[ j ];
+
+						var path = /^(\/\/)|([a-z]+:(\/\/)?)/i.test( currentUrl ) ? currentUrl : scope.texturePath + currentUrl;
 
 
-				images[ image.uuid ] = loadImage( path );
+						images[ image.uuid ].push( loadImage( path ) );
+
+					}
+
+				} else {
+
+					// load single image
+
+					var path = /^(\/\/)|([a-z]+:(\/\/)?)/i.test( image.url ) ? image.url : scope.texturePath + image.url;
+
+					images[ image.uuid ] = loadImage( path );
+
+				}
 
 
 			}
 			}
 
 
@@ -37806,7 +38185,18 @@ Object.assign( ObjectLoader.prototype, {
 
 
 				}
 				}
 
 
-				var texture = new Texture( images[ data.image ] );
+				var texture;
+
+				if ( Array.isArray( images[ data.image ] ) ) {
+
+					texture = new CubeTexture( images[ data.image ] );
+
+				} else {
+
+					texture = new Texture( images[ data.image ] );
+
+				}
+
 				texture.needsUpdate = true;
 				texture.needsUpdate = true;
 
 
 				texture.uuid = data.uuid;
 				texture.uuid = data.uuid;

+ 15 - 15
docs/api/audio/Audio.html

@@ -98,24 +98,24 @@
 
 
 		<h2>Methods</h2>
 		<h2>Methods</h2>
 
 
-		<h3>[method:null connect]()</h3>
+		<h3>[method:Audio connect]()</h3>
 		<p>
 		<p>
 		Connect to the [page:Audio.source]. This is used internally on initialisation and when
 		Connect to the [page:Audio.source]. This is used internally on initialisation and when
 		setting / removing filters.
 		setting / removing filters.
 		</p>
 		</p>
 
 
-		<h3>[method:null disconnect]()</h3>
+		<h3>[method:Audio disconnect]()</h3>
 		<p>
 		<p>
 		Disconnect from the [page:Audio.source]. This is used internally when
 		Disconnect from the [page:Audio.source]. This is used internally when
 		setting / removing filters.
 		setting / removing filters.
 		</p>
 		</p>
 
 
-		<h3>[method:Array getFilter]()</h3>
+		<h3>[method:BiquadFilterNode getFilter]()</h3>
 		<p>
 		<p>
 		Returns the first element of the [page:Audio.filters filters] array.
 		Returns the first element of the [page:Audio.filters filters] array.
 		</p>
 		</p>
 
 
-		<h3>[method:null getFilters]()</h3>
+		<h3>[method:Array getFilters]()</h3>
 		<p>
 		<p>
 		Returns the [page:Audio.filters filters] array.
 		Returns the [page:Audio.filters filters] array.
 		</p>
 		</p>
@@ -131,22 +131,22 @@
 		Return the [page:Audio.gain gainNode].
 		Return the [page:Audio.gain gainNode].
 		</p>
 		</p>
 
 
-		<h3>[method:Number getPlaybackRate]()</h3>
+		<h3>[method:Float getPlaybackRate]()</h3>
 		<p>
 		<p>
 		Return the value of [page:Audio.playbackRate playbackRate].
 		Return the value of [page:Audio.playbackRate playbackRate].
 		</p>
 		</p>
 
 
-		<h3>[method:Number getVolume]( value )</h3>
+		<h3>[method:Float getVolume]( value )</h3>
 		<p>
 		<p>
 		Return the current volume.
 		Return the current volume.
 		</p>
 		</p>
 
 
-		<h3>[method:null play]()</h3>
+		<h3>[method:Audio play]()</h3>
 		<p>
 		<p>
 		If [page:Audio.hasPlaybackControl hasPlaybackControl] is true, starts playback.
 		If [page:Audio.hasPlaybackControl hasPlaybackControl] is true, starts playback.
 		</p>
 		</p>
 
 
-		<h3>[method:null pause]()</h3>
+		<h3>[method:Audio pause]()</h3>
 		<p>
 		<p>
 		If [page:Audio.hasPlaybackControl hasPlaybackControl] is true, pauses playback.
 		If [page:Audio.hasPlaybackControl hasPlaybackControl] is true, pauses playback.
 		</p>
 		</p>
@@ -162,7 +162,7 @@
 		If [page:Audio.autoplay autoplay], also starts playback.
 		If [page:Audio.autoplay autoplay], also starts playback.
 		</p>
 		</p>
 
 
-		<h3>[method:null setFilter]( filter )</h3>
+		<h3>[method:Audio setFilter]( filter )</h3>
 		<p>
 		<p>
 		Applies a single [link:https://developer.mozilla.org/en-US/docs/Web/API/BiquadFilterNode BiquadFilterNode] to the audio.
 		Applies a single [link:https://developer.mozilla.org/en-US/docs/Web/API/BiquadFilterNode BiquadFilterNode] to the audio.
 		</p>
 		</p>
@@ -173,37 +173,37 @@
 		Applies an array of [link:https://developer.mozilla.org/en-US/docs/Web/API/BiquadFilterNode BiquadFilterNodes] to the audio.
 		Applies an array of [link:https://developer.mozilla.org/en-US/docs/Web/API/BiquadFilterNode BiquadFilterNodes] to the audio.
 		</p>
 		</p>
 
 
-		<h3>[method:null setLoop]( [param:Boolean value] )</h3>
+		<h3>[method:Audio setLoop]( [param:Boolean value] )</h3>
 		<p>
 		<p>
 		Set [link:https://developer.mozilla.org/en-US/docs/Web/API/AudioBufferSourceNode/loop source.loop] to *value*
 		Set [link:https://developer.mozilla.org/en-US/docs/Web/API/AudioBufferSourceNode/loop source.loop] to *value*
 		(whether playback should loop).
 		(whether playback should loop).
 		</p>
 		</p>
 
 
-		<h3>[method:null setMediaElementSource]( mediaElement )</h3>
+		<h3>[method:Audio setMediaElementSource]( mediaElement )</h3>
 		<p>
 		<p>
 		Applies the given object of type [link:https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement HTMLMediaElement] as the source of this audio.<br />
 		Applies the given object of type [link:https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement HTMLMediaElement] as the source of this audio.<br />
 		Also sets [page:Audio.hasPlaybackControl hasPlaybackControl] to false.
 		Also sets [page:Audio.hasPlaybackControl hasPlaybackControl] to false.
 
 
 		</p>
 		</p>
 
 
-		<h3>[method:null setNodeSource]( audioNode )</h3>
+		<h3>[method:Audio setNodeSource]( audioNode )</h3>
 		<p>
 		<p>
 		Setup the [page:Audio.source source] to the audioBuffer, and sets [page:Audio.sourceType sourceType] to 'audioNode'.<br />
 		Setup the [page:Audio.source source] to the audioBuffer, and sets [page:Audio.sourceType sourceType] to 'audioNode'.<br />
 		Also sets [page:Audio.hasPlaybackControl hasPlaybackControl] to false.
 		Also sets [page:Audio.hasPlaybackControl hasPlaybackControl] to false.
 
 
 		</p>
 		</p>
 
 
-		<h3>[method:null setPlaybackRate]( [param:Number value] )</h3>
+		<h3>[method:Audio setPlaybackRate]( [param:Float value] )</h3>
 		<p>
 		<p>
 		If [page:Audio.hasPlaybackControl hasPlaybackControl] is enabled, set the [page:Audio.playbackRate playbackRate] to *value*.
 		If [page:Audio.hasPlaybackControl hasPlaybackControl] is enabled, set the [page:Audio.playbackRate playbackRate] to *value*.
 		</p>
 		</p>
 
 
-		<h3>[method:null setVolume]( [param:Number value] )</h3>
+		<h3>[method:Audio setVolume]( [param:Float value] )</h3>
 		<p>
 		<p>
 		Set the volume.
 		Set the volume.
 		</p>
 		</p>
 
 
-		<h3>[method:null stop]()</h3>
+		<h3>[method:Audio stop]()</h3>
 		<p>
 		<p>
 		If [page:Audio.hasPlaybackControl hasPlaybackControl] is enabled, stops playback,
 		If [page:Audio.hasPlaybackControl hasPlaybackControl] is enabled, stops playback,
 		resets [page:Audio.startTime startTime] to *0* and sets [page:Audio.isPlaying isPlaying] to false.
 		resets [page:Audio.startTime startTime] to *0* and sets [page:Audio.isPlaying isPlaying] to false.

+ 4 - 4
docs/api/audio/AudioListener.html

@@ -76,7 +76,7 @@
 		Return the [page:AudioListener.gain gainNode].
 		Return the [page:AudioListener.gain gainNode].
 		</p>
 		</p>
 
 
-		<h3>[method:null removeFilter]()</h3>
+		<h3>[method:AudioListener removeFilter]()</h3>
 		<p>
 		<p>
 		Set the [page:AudioListener.filter filter] property to *null*.
 		Set the [page:AudioListener.filter filter] property to *null*.
 		</p>
 		</p>
@@ -86,17 +86,17 @@
 		Returns the value of the [page:AudioListener.filter filter] property.
 		Returns the value of the [page:AudioListener.filter filter] property.
 		</p>
 		</p>
 
 
-		<h3>[method:null setFilter]( [param:AudioNode value] )</h3>
+		<h3>[method:AudioListener setFilter]( [param:AudioNode value] )</h3>
 		<p>
 		<p>
 		Set the [page:AudioListener.filter filter] property to *value*.
 		Set the [page:AudioListener.filter filter] property to *value*.
 		</p>
 		</p>
 
 
-		<h3>[method:Number getMasterVolume]()</h3>
+		<h3>[method:Float getMasterVolume]()</h3>
 		<p>
 		<p>
 		Return the volume.
 		Return the volume.
 		</p>
 		</p>
 
 
-		<h3>[method:null setMasterVolume]( [param:Number value] )</h3>
+		<h3>[method:AudioListener setMasterVolume]( [param:Number value] )</h3>
 		<p>
 		<p>
 		Set the volume.
 		Set the volume.
 		</p>
 		</p>

+ 8 - 7
docs/api/audio/PositionalAudio.html

@@ -22,6 +22,7 @@
 		<h2>Example</h2>
 		<h2>Example</h2>
 
 
 		<p>
 		<p>
+			[example:webaudio_orientation webaudio / orientation ]</br>
 			[example:webaudio_sandbox webaudio / sandbox ]</br>
 			[example:webaudio_sandbox webaudio / sandbox ]</br>
 			[example:webaudio_timing webaudio / timing ]
 			[example:webaudio_timing webaudio / timing ]
 		</p>
 		</p>
@@ -82,22 +83,22 @@
 		Returns the [page:PositionalAudio.panner panner].
 		Returns the [page:PositionalAudio.panner panner].
 		</p>
 		</p>
 
 
-		<h3>[method:Number getRefDistance]()</h3>
+		<h3>[method:Float getRefDistance]()</h3>
 		<p>
 		<p>
 		Returns the value of [link:https://developer.mozilla.org/en-US/docs/Web/API/PannerNode/refDistance panner.refDistance].
 		Returns the value of [link:https://developer.mozilla.org/en-US/docs/Web/API/PannerNode/refDistance panner.refDistance].
 		</p>
 		</p>
 
 
-		<h3>[method:PannerNode setRefDistance]( [param:Number value] )</h3>
+		<h3>[method:PositionalAudio setRefDistance]( [param:Number value] )</h3>
 		<p>
 		<p>
 		Sets the value of [link:https://developer.mozilla.org/en-US/docs/Web/API/PannerNode/refDistance panner.refDistance].
 		Sets the value of [link:https://developer.mozilla.org/en-US/docs/Web/API/PannerNode/refDistance panner.refDistance].
 		</p>
 		</p>
 
 
-		<h3>[method:PannerNode getRolloffFactor]()</h3>
+		<h3>[method:Float getRolloffFactor]()</h3>
 		<p>
 		<p>
 		Returns the value of [link:https://developer.mozilla.org/en-US/docs/Web/API/PannerNode/rolloffFactor panner.rolloffFactor].
 		Returns the value of [link:https://developer.mozilla.org/en-US/docs/Web/API/PannerNode/rolloffFactor panner.rolloffFactor].
 		</p>
 		</p>
 
 
-		<h3>[method:PannerNode setRolloffFactor]( [param:Number value] )</h3>
+		<h3>[method:PositionalAudio setRolloffFactor]( [param:Number value] )</h3>
 		<p>
 		<p>
 		Sets the value of [link:https://developer.mozilla.org/en-US/docs/Web/API/PannerNode/rolloffFactor panner.rolloffFactor].
 		Sets the value of [link:https://developer.mozilla.org/en-US/docs/Web/API/PannerNode/rolloffFactor panner.rolloffFactor].
 		</p>
 		</p>
@@ -107,17 +108,17 @@
 		Returns the value of [link:https://developer.mozilla.org/en-US/docs/Web/API/PannerNode/distanceModel panner.distanceModel].
 		Returns the value of [link:https://developer.mozilla.org/en-US/docs/Web/API/PannerNode/distanceModel panner.distanceModel].
 		</p>
 		</p>
 
 
-		<h3>[method:String setDistanceModel]( [param:String value] )</h3>
+		<h3>[method:PositionalAudio setDistanceModel]( [param:String value] )</h3>
 		<p>
 		<p>
 		Sets the value of [link:https://developer.mozilla.org/en-US/docs/Web/API/PannerNode/distanceModel panner.distanceModel].
 		Sets the value of [link:https://developer.mozilla.org/en-US/docs/Web/API/PannerNode/distanceModel panner.distanceModel].
 		</p>
 		</p>
 
 
-		<h3>[method:PannerNode getMaxDistance]()</h3>
+		<h3>[method:Float getMaxDistance]()</h3>
 		<p>
 		<p>
 		Returns the value of [link:https://developer.mozilla.org/en-US/docs/Web/API/PannerNode/maxDistance panner.maxDistance].
 		Returns the value of [link:https://developer.mozilla.org/en-US/docs/Web/API/PannerNode/maxDistance panner.maxDistance].
 		</p>
 		</p>
 
 
-		<h3>[method:PannerNode setMaxDistance]( [param:Number value] )</h3>
+		<h3>[method:PositionalAudio setMaxDistance]( [param:Number value] )</h3>
 		<p>
 		<p>
 		Sets the value of [link:https://developer.mozilla.org/en-US/docs/Web/API/PannerNode/maxDistance panner.maxDistance].
 		Sets the value of [link:https://developer.mozilla.org/en-US/docs/Web/API/PannerNode/maxDistance panner.maxDistance].
 		</p>
 		</p>

+ 1 - 1
docs/api/extras/ShapeUtils.html

@@ -39,7 +39,7 @@
 		[page:ExtrudeGeometry ExtrudeGeometry] and [page:ShapeGeometry ShapeGeometry].
 		[page:ExtrudeGeometry ExtrudeGeometry] and [page:ShapeGeometry ShapeGeometry].
 		</p>
 		</p>
 
 
-		<h3>[method:null triangulateShape]( contour, holes )</h3>
+		<h3>[method:Array triangulateShape]( contour, holes )</h3>
 		<p>
 		<p>
 		contour -- 2D polygon.<br />
 		contour -- 2D polygon.<br />
 		holes -- array of holes<br /><br />
 		holes -- array of holes<br /><br />

+ 1 - 1
docs/api/loaders/CubeTextureLoader.html

@@ -56,7 +56,7 @@ scene.background = new THREE.CubeTextureLoader()
 		<p>
 		<p>
 		If set, assigns the [link:https://developer.mozilla.org/en-US/docs/Web/HTML/CORS_settings_attributes crossOrigin]
 		If set, assigns the [link:https://developer.mozilla.org/en-US/docs/Web/HTML/CORS_settings_attributes crossOrigin]
 	 attribute of the image to the value of *crossOrigin*,
 	 attribute of the image to the value of *crossOrigin*,
-		prior to starting the load. Default is *"Anonymous"*.
+		prior to starting the load. Default is *"anonymous"*.
 		</p>
 		</p>
 
 
 		<h3>[property:LoadingManager manager]</h3>
 		<h3>[property:LoadingManager manager]</h3>

+ 1 - 1
docs/api/loaders/ImageLoader.html

@@ -69,7 +69,7 @@
 		<h3>[property:String crossOrigin]</h3>
 		<h3>[property:String crossOrigin]</h3>
 		<p>
 		<p>
 		If set, assigns the [link:https://developer.mozilla.org/en-US/docs/Web/HTML/CORS_settings_attributes crossOrigin]
 		If set, assigns the [link:https://developer.mozilla.org/en-US/docs/Web/HTML/CORS_settings_attributes crossOrigin]
-	 attribute of the image to the value of *crossOrigin*, prior to starting the load. Default is *"Anonymous"*.
+	 attribute of the image to the value of *crossOrigin*, prior to starting the load. Default is *"anonymous"*.
 		</p>
 		</p>
 
 
 		<h3>[property:LoadingManager manager]</h3>
 		<h3>[property:LoadingManager manager]</h3>

+ 12 - 1
docs/api/loaders/JSONLoader.html

@@ -62,6 +62,12 @@
 
 
 		<h2>Properties</h2>
 		<h2>Properties</h2>
 
 
+		<h3>[property:String crossOrigin]</h3>
+		<p>
+		If set, assigns the [link:https://developer.mozilla.org/en-US/docs/Web/HTML/CORS_settings_attributes crossOrigin]
+	 attribute of the image to the value of *crossOrigin*, prior to starting the load. Default is *"anonymous"*.
+		</p>
+
 		<h3>[property:LoadingManager manager]</h3>
 		<h3>[property:LoadingManager manager]</h3>
 		<p>
 		<p>
 			The [page:LoadingManager loadingManager]  the loader is using. Default is [page:DefaultLoadingManager].
 			The [page:LoadingManager loadingManager]  the loader is using. Default is [page:DefaultLoadingManager].
@@ -87,7 +93,12 @@
 		Begin loading from url and pass the <em>JSON</em> to onLoad.
 		Begin loading from url and pass the <em>JSON</em> to onLoad.
 		</p>
 		</p>
 
 
-		<h3>[method:null setTexturePath]( [param:String texturePath] )</h3>
+		<h3>[method:JSONLoader setCrossOrigin]( [param:String value] )</h3>
+		<p>
+			Set the [page:.crossOrigin] attribute.
+		</p>
+
+		<h3>[method:JSONLoader setTexturePath]( [param:String texturePath] )</h3>
 		<p>
 		<p>
 			Set the base path or URL from which to load files. This can be useful if
 			Set the base path or URL from which to load files. This can be useful if
 			you are loading many files from the same directory.
 			you are loading many files from the same directory.

+ 1 - 0
docs/api/loaders/Loader.html

@@ -39,6 +39,7 @@
 		<h3>[property:string crossOrigin]</h3>
 		<h3>[property:string crossOrigin]</h3>
 		<p>
 		<p>
 		The crossOrigin string to implement CORS for loading the url from a different domain that allows CORS.
 		The crossOrigin string to implement CORS for loading the url from a different domain that allows CORS.
+		Default is *"anonymous"*.
 		</p>
 		</p>
 
 
 		<h2>Methods</h2>
 		<h2>Methods</h2>

+ 1 - 2
docs/api/loaders/ObjectLoader.html

@@ -77,8 +77,7 @@
 		<h3>[property:String crossOrigin]</h3>
 		<h3>[property:String crossOrigin]</h3>
 		<p>
 		<p>
 		If set, assigns the [link:https://developer.mozilla.org/en-US/docs/Web/HTML/CORS_settings_attributes crossOrigin]
 		If set, assigns the [link:https://developer.mozilla.org/en-US/docs/Web/HTML/CORS_settings_attributes crossOrigin]
-	 attribute of the image to the value of *crossOrigin*,
-		prior to starting the load. Default is *undefined*.
+	 attribute of the image to the value of *crossOrigin*, prior to starting the load. Default is *"anonymous"*.
 		</p>
 		</p>
 
 
 		<h3>[property:LoadingManager manager]</h3>
 		<h3>[property:LoadingManager manager]</h3>

+ 1 - 1
docs/api/loaders/TextureLoader.html

@@ -72,7 +72,7 @@
 		<h3>[property:String crossOrigin]</h3>
 		<h3>[property:String crossOrigin]</h3>
 		<p>
 		<p>
 		If set, assigns the [link:https://developer.mozilla.org/en-US/docs/Web/HTML/CORS_settings_attributes crossOrigin]
 		If set, assigns the [link:https://developer.mozilla.org/en-US/docs/Web/HTML/CORS_settings_attributes crossOrigin]
-	 attribute of the image to the value of *crossOrigin*, prior to starting the load. Default is *"Anonymous"*.
+	 attribute of the image to the value of *crossOrigin*, prior to starting the load. Default is *"anonymous"*.
 		</p>
 		</p>
 
 
 
 

+ 28 - 4
docs/api/math/Color.html

@@ -124,13 +124,23 @@ var color = new THREE.Color( 1, 0, 0 );
 		<h3>[method:Color convertGammaToLinear]( [param:Float gammaFactor] ) </h3>
 		<h3>[method:Color convertGammaToLinear]( [param:Float gammaFactor] ) </h3>
 		<p>
 		<p>
 		[page:Float gammaFactor] - (optional). Default is *2.0*.<br /><br />
 		[page:Float gammaFactor] - (optional). Default is *2.0*.<br /><br />
-		Converts this color from gamma to linear space by taking [page:.r r], [page:.g g] and [page:.b b] to the power of [page:Float gammaFactor].
+		Converts this color from gamma space to linear space by taking [page:.r r], [page:.g g] and [page:.b b] to the power of [page:Float gammaFactor].
 		</p>
 		</p>
 		
 		
 		<h3>[method:Color convertLinearToGamma]( [param:Float gammaFactor] ) </h3>
 		<h3>[method:Color convertLinearToGamma]( [param:Float gammaFactor] ) </h3>
 		<p>
 		<p>
 		[page:Float gammaFactor] - (optional). Default is *2.0*.<br /><br />
 		[page:Float gammaFactor] - (optional). Default is *2.0*.<br /><br />
-		Converts this color from linear to gamma space by taking [page:.r r], [page:.g g] and [page:.b b] to the power of 1 / [page:Float gammaFactor].
+		Converts this color from linear space to gamma space by taking [page:.r r], [page:.g g] and [page:.b b] to the power of 1 / [page:Float gammaFactor].
+		</p>
+
+		<h3>[method:Color convertLinearToSRGB]() </h3>
+		<p>
+		Converts this color from linear space to sRGB space.
+		</p>
+
+		<h3>[method:Color convertSRGBToLinear]() </h3>
+		<p>
+		Converts this color from sRGB space to linear space.
 		</p>
 		</p>
 
 
 		<h3>[method:Color copyGammaToLinear]( [param:Color color], [param:Float gammaFactor] ) </h3>
 		<h3>[method:Color copyGammaToLinear]( [param:Color color], [param:Float gammaFactor] ) </h3>
@@ -138,7 +148,7 @@ var color = new THREE.Color( 1, 0, 0 );
 		[page:Color color] — Color to copy.<br />
 		[page:Color color] — Color to copy.<br />
 		[page:Float gammaFactor] - (optional). Default is *2.0*.<br /><br />
 		[page:Float gammaFactor] - (optional). Default is *2.0*.<br /><br />
 
 
-		Copies the given color into this color while converting it from gamma to linear space
+		Copies the given color into this color, and then converts this color from gamma space to linear space
 		by taking [page:.r r], [page:.g g] and [page:.b b] to the power of [page:Float gammaFactor].
 		by taking [page:.r r], [page:.g g] and [page:.b b] to the power of [page:Float gammaFactor].
 		</p>
 		</p>
 
 
@@ -147,10 +157,24 @@ var color = new THREE.Color( 1, 0, 0 );
 		[page:Color color] — Color to copy.<br />
 		[page:Color color] — Color to copy.<br />
 		[page:Float gammaFactor] - (optional). Default is *2.0*.<br /><br />
 		[page:Float gammaFactor] - (optional). Default is *2.0*.<br /><br />
 
 
-		Copies the given color into this color while converting it from linear to gamma space
+		Copies the given color into this color, and then converts this color from linear space to gamma space
 		by taking [page:.r r], [page:.g g] and [page:.b b] to the power of 1 / [page:Float gammaFactor].
 		by taking [page:.r r], [page:.g g] and [page:.b b] to the power of 1 / [page:Float gammaFactor].
 		</p>
 		</p>
 
 
+		<h3>[method:Color copyLinearToSRGB]( [param:Color color]] ) </h3>
+		<p>
+		[page:Color color] — Color to copy.<br />
+
+		Copies the given color into this color, and then converts this color from linear space to sRGB space.
+		</p>
+
+		<h3>[method:Color copySRGBToLinear]( [param:Color color] ) </h3>
+		<p>
+		[page:Color color] — Color to copy.<br />
+
+		Copies the given color into this color, and then converts this color from sRGB space to linear space.
+		</p>
+
 		<h3>[method:Boolean equals]( [param:Color color] ) </h3>
 		<h3>[method:Boolean equals]( [param:Color color] ) </h3>
 		<p>Compares the RGB values of [page:Color color] with those of this object. Returns true if they are the same, false otherwise.</p>
 		<p>Compares the RGB values of [page:Color color] with those of this object. Returns true if they are the same, false otherwise.</p>
 
 

+ 1 - 1
docs/api/objects/Line.html

@@ -46,7 +46,7 @@
 		<h3>[name]( [param:Geometry geometry], [param:Material material] )</h3>
 		<h3>[name]( [param:Geometry geometry], [param:Material material] )</h3>
 
 
 		<p>
 		<p>
-		[page:Geometry geometry] — vertices representing the line segment(s). Default is a new [page:new BufferGeometry].<br />
+		[page:Geometry geometry] — vertices representing the line segment(s). Default is a new [page:BufferGeometry].<br />
 		[page:Material material] — material for the line. Default is a new [page:LineBasicMaterial] with random color.<br />
 		[page:Material material] — material for the line. Default is a new [page:LineBasicMaterial] with random color.<br />
 		</p>
 		</p>
 
 

+ 8 - 7
docs/examples/loaders/MTLLoader.html

@@ -11,7 +11,7 @@
 
 
 		<h1>[name]</h1>
 		<h1>[name]</h1>
 
 
-		<p class="desc">A loader for loading an <em>.mtl</em> resource, used internaly by [page:OBJLoader] and [page:UTF8Loader].<br />
+		<p class="desc">A loader for loading an <em>.mtl</em> resource, used internaly by [page:OBJLoader].<br />
 		The Material Template Library format (MTL) or .MTL File Format is a companion file format to .OBJ that describes surface shading
 		The Material Template Library format (MTL) or .MTL File Format is a companion file format to .OBJ that describes surface shading
 		(material) properties of objects within one or more .OBJ files.
 		(material) properties of objects within one or more .OBJ files.
 		</p>
 		</p>
@@ -44,7 +44,7 @@
 		</p>
 		</p>
 
 
 
 
-		<h3>[method:null setPath]( [param:String path] )</h3>
+		<h3>[method:MTLLoader setPath]( [param:String path] )</h3>
 		<p>
 		<p>
 			[page:String path] — required<br />
 			[page:String path] — required<br />
 		</p>
 		</p>
@@ -53,7 +53,7 @@
 		</p>
 		</p>
 
 
 
 
-		<h3>[method:null setTexturePath]( [param:String path] )</h3>
+		<h3>[method:MTLLoader setTexturePath]( [param:String path] )</h3>
 		<p>
 		<p>
 			[page:String path] — required<br />
 			[page:String path] — required<br />
 		</p>
 		</p>
@@ -62,16 +62,17 @@
 		</p>
 		</p>
 
 
 
 
-		<h3>[method:null setCrossOrigin]( [param:boolean useCrossOrigin] )</h3>
+		<h3>[method:MTLLoader setCrossOrigin]( [param:String value] )</h3>
 		<p>
 		<p>
-			[page:boolean useCrossOrigin] — required<br />
+			[page:String value] — required<br />
 		</p>
 		</p>
 		<p>
 		<p>
-			Set to true if you need to load textures from a different origin.
+			If set, assigns the [link:https://developer.mozilla.org/en-US/docs/Web/HTML/CORS_settings_attributes crossOrigin]
+		 attribute of the image to the value of *crossOrigin*, prior to starting the load. Default is *"anonymous"*.
 		</p>
 		</p>
 
 
 
 
-		<h3>[method:null setMaterialOptions]( [param:Object options] )</h3>
+		<h3>[method:MTLLoader setMaterialOptions]( [param:Object options] )</h3>
 		<p>
 		<p>
 			[page:Object options] — required
 			[page:Object options] — required
 			<ul>
 			<ul>

+ 0 - 1
editor/index.html

@@ -41,7 +41,6 @@
 		<script src="../examples/js/loaders/SVGLoader.js"></script>
 		<script src="../examples/js/loaders/SVGLoader.js"></script>
 		<script src="../examples/js/loaders/TGALoader.js"></script>
 		<script src="../examples/js/loaders/TGALoader.js"></script>
 		<script src="../examples/js/loaders/TDSLoader.js"></script>
 		<script src="../examples/js/loaders/TDSLoader.js"></script>
-		<script src="../examples/js/loaders/UTF8Loader.js"></script>
 		<script src="../examples/js/loaders/VRMLLoader.js"></script>
 		<script src="../examples/js/loaders/VRMLLoader.js"></script>
 		<script src="../examples/js/loaders/VTKLoader.js"></script>
 		<script src="../examples/js/loaders/VTKLoader.js"></script>
 		<script src="../examples/js/loaders/ctm/lzma.js"></script>
 		<script src="../examples/js/loaders/ctm/lzma.js"></script>

+ 0 - 20
editor/js/Loader.js

@@ -427,26 +427,6 @@ var Loader = function ( editor ) {
 
 
 				break;
 				break;
 
 
-			/*
-			case 'utf8':
-
-				reader.addEventListener( 'load', function ( event ) {
-
-					var contents = event.target.result;
-
-					var geometry = new THREE.UTF8Loader().parse( contents );
-					var material = new THREE.MeshLambertMaterial();
-
-					var mesh = new THREE.Mesh( geometry, material );
-
-					editor.execute( new AddObjectCommand( mesh ) );
-
-				}, false );
-				reader.readAsBinaryString( file );
-
-				break;
-			*/
-
 			case 'vtk':
 			case 'vtk':
 
 
 				reader.addEventListener( 'load', function ( event ) {
 				reader.addEventListener( 'load', function ( event ) {

+ 1 - 1
editor/js/libs/tern-threejs/threejs.js

@@ -1836,7 +1836,7 @@
           "!doc": "Parse a <em>mtl</em> text structure and return a [page:MTLLoaderMaterialCreator] instance.<br>"
           "!doc": "Parse a <em>mtl</em> text structure and return a [page:MTLLoaderMaterialCreator] instance.<br>"
         }
         }
       },
       },
-      "!doc": "A loader for loading an <em>.mtl</em> resource, used internaly by [page:OBJMTLLoader] and [page:UTF8Loader].",
+      "!doc": "A loader for loading an <em>.mtl</em> resource, used internaly by [page:OBJLoader].",
       "!type": "fn(baseUrl: string, options: object, crossOrigin: string)"
       "!type": "fn(baseUrl: string, options: object, crossOrigin: string)"
     },
     },
     "MaterialLoader": {
     "MaterialLoader": {

+ 1 - 4
examples/files.js

@@ -132,7 +132,6 @@ var files = {
 		"webgl_loader_texture_pvrtc",
 		"webgl_loader_texture_pvrtc",
 		"webgl_loader_texture_tga",
 		"webgl_loader_texture_tga",
 		"webgl_loader_ttf",
 		"webgl_loader_ttf",
-		"webgl_loader_utf8",
 		"webgl_loader_vrm",
 		"webgl_loader_vrm",
 		"webgl_loader_vrml",
 		"webgl_loader_vrml",
 		"webgl_loader_vtk",
 		"webgl_loader_vtk",
@@ -319,11 +318,9 @@ var files = {
 		"webaudio_visualizer"
 		"webaudio_visualizer"
 	],
 	],
 	"webvr": [
 	"webvr": [
+		"webvr_ballshooter",
 		"webvr_cubes",
 		"webvr_cubes",
-		"webvr_daydream",
-		"webvr_gearvr",
 		"webvr_lorenzattractor",
 		"webvr_lorenzattractor",
-		"webvr_oculusgo",
 		"webvr_panorama",
 		"webvr_panorama",
 		"webvr_rollercoaster",
 		"webvr_rollercoaster",
 		"webvr_sandbox",
 		"webvr_sandbox",

+ 25 - 36
examples/js/BufferGeometryUtils.js

@@ -39,10 +39,10 @@ THREE.BufferGeometryUtils = {
 
 
 		var tan1 = [], tan2 = [];
 		var tan1 = [], tan2 = [];
 
 
-		for ( var k = 0; k < nVertices; k ++ ) {
+		for ( var i = 0; i < nVertices; i ++ ) {
 
 
-			tan1[ k ] = new THREE.Vector3();
-			tan2[ k ] = new THREE.Vector3();
+			tan1[ i ] = new THREE.Vector3();
+			tan2[ i ] = new THREE.Vector3();
 
 
 		}
 		}
 
 
@@ -117,19 +117,19 @@ THREE.BufferGeometryUtils = {
 
 
 		}
 		}
 
 
-		for ( var j = 0, jl = groups.length; j < jl; ++ j ) {
+		for ( var i = 0, il = groups.length; i < il; ++ i ) {
 
 
-			var group = groups[ j ];
+			var group = groups[ i ];
 
 
 			var start = group.start;
 			var start = group.start;
 			var count = group.count;
 			var count = group.count;
 
 
-			for ( var i = start, il = start + count; i < il; i += 3 ) {
+			for ( var j = start, jl = start + count; j < jl; j += 3 ) {
 
 
 				handleTriangle(
 				handleTriangle(
-					indices[ i + 0 ],
-					indices[ i + 1 ],
-					indices[ i + 2 ]
+					indices[ j + 0 ],
+					indices[ j + 1 ],
+					indices[ j + 2 ]
 				);
 				);
 
 
 			}
 			}
@@ -165,18 +165,18 @@ THREE.BufferGeometryUtils = {
 
 
 		}
 		}
 
 
-		for ( var j = 0, jl = groups.length; j < jl; ++ j ) {
+		for ( var i = 0, il = groups.length; i < il; ++ i ) {
 
 
-			var group = groups[ j ];
+			var group = groups[ i ];
 
 
 			var start = group.start;
 			var start = group.start;
 			var count = group.count;
 			var count = group.count;
 
 
-			for ( var i = start, il = start + count; i < il; i += 3 ) {
+			for ( var j = start, jl = start + count; j < jl; j += 3 ) {
 
 
-				handleVertex( indices[ i + 0 ] );
-				handleVertex( indices[ i + 1 ] );
-				handleVertex( indices[ i + 2 ] );
+				handleVertex( indices[ j + 0 ] );
+				handleVertex( indices[ j + 1 ] );
+				handleVertex( indices[ j + 2 ] );
 
 
 			}
 			}
 
 
@@ -214,7 +214,7 @@ THREE.BufferGeometryUtils = {
 
 
 			for ( var name in geometry.attributes ) {
 			for ( var name in geometry.attributes ) {
 
 
-				if ( !attributesUsed.has( name ) ) return null;
+				if ( ! attributesUsed.has( name ) ) return null;
 
 
 				if ( attributes[ name ] === undefined ) attributes[ name ] = [];
 				if ( attributes[ name ] === undefined ) attributes[ name ] = [];
 
 
@@ -226,7 +226,7 @@ THREE.BufferGeometryUtils = {
 
 
 			for ( var name in geometry.morphAttributes ) {
 			for ( var name in geometry.morphAttributes ) {
 
 
-				if ( !morphAttributesUsed.has( name ) ) return null;
+				if ( ! morphAttributesUsed.has( name ) ) return null;
 
 
 				if ( morphAttributes[ name ] === undefined ) morphAttributes[ name ] = [];
 				if ( morphAttributes[ name ] === undefined ) morphAttributes[ name ] = [];
 
 
@@ -270,34 +270,23 @@ THREE.BufferGeometryUtils = {
 		if ( isIndexed ) {
 		if ( isIndexed ) {
 
 
 			var indexOffset = 0;
 			var indexOffset = 0;
-			var indexList = [];
+			var mergedIndex = [];
 
 
 			for ( var i = 0; i < geometries.length; ++ i ) {
 			for ( var i = 0; i < geometries.length; ++ i ) {
 
 
 				var index = geometries[ i ].index;
 				var index = geometries[ i ].index;
 
 
-				if ( indexOffset > 0 ) {
+				for ( var j = 0; j < index.count; ++ j ) {
 
 
-					index = index.clone();
-
-					for ( var j = 0; j < index.count; ++ j ) {
-
-						index.setX( j, index.getX( j ) + indexOffset );
-
-					}
+					mergedIndex.push( index.getX( j ) + indexOffset );
 
 
 				}
 				}
 
 
-				indexList.push( index );
 				indexOffset += geometries[ i ].attributes.position.count;
 				indexOffset += geometries[ i ].attributes.position.count;
 
 
 			}
 			}
 
 
-			var mergedIndex = this.mergeBufferAttributes( indexList );
-
-			if ( !mergedIndex ) return null;
-
-			mergedGeometry.index = mergedIndex;
+			mergedGeometry.setIndex( mergedIndex );
 
 
 		}
 		}
 
 
@@ -336,7 +325,7 @@ THREE.BufferGeometryUtils = {
 
 
 				var mergedMorphAttribute = this.mergeBufferAttributes( morphAttributesToMerge );
 				var mergedMorphAttribute = this.mergeBufferAttributes( morphAttributesToMerge );
 
 
-				if ( !mergedMorphAttribute ) return null;
+				if ( ! mergedMorphAttribute ) return null;
 
 
 				mergedGeometry.morphAttributes[ name ].push( mergedMorphAttribute );
 				mergedGeometry.morphAttributes[ name ].push( mergedMorphAttribute );
 
 
@@ -381,11 +370,11 @@ THREE.BufferGeometryUtils = {
 		var array = new TypedArray( arrayLength );
 		var array = new TypedArray( arrayLength );
 		var offset = 0;
 		var offset = 0;
 
 
-		for ( var j = 0; j < attributes.length; ++ j ) {
+		for ( var i = 0; i < attributes.length; ++ i ) {
 
 
-			array.set( attributes[ j ].array, offset );
+			array.set( attributes[ i ].array, offset );
 
 
-			offset += attributes[ j ].array.length;
+			offset += attributes[ i ].array.length;
 
 
 		}
 		}
 
 

+ 3 - 4
examples/js/controls/EditorControls.js

@@ -14,7 +14,7 @@ THREE.EditorControls = function ( object, domElement ) {
 	this.enabled = true;
 	this.enabled = true;
 	this.center = new THREE.Vector3();
 	this.center = new THREE.Vector3();
 	this.panSpeed = 0.001;
 	this.panSpeed = 0.001;
-	this.zoomSpeed = 0.001;
+	this.zoomSpeed = 0.1;
 	this.rotationSpeed = 0.005;
 	this.rotationSpeed = 0.005;
 
 
 	// internals
 	// internals
@@ -187,9 +187,8 @@ THREE.EditorControls = function ( object, domElement ) {
 
 
 		event.preventDefault();
 		event.preventDefault();
 
 
-		// if ( scope.enabled === false ) return;
-
-		scope.zoom( new THREE.Vector3( 0, 0, event.deltaY ) );
+		// Normalize deltaY due to https://bugzilla.mozilla.org/show_bug.cgi?id=1392460
+		scope.zoom( new THREE.Vector3( 0, 0, event.deltaY > 0 ? 1 : - 1 ) );
 
 
 	}
 	}
 
 

+ 1 - 1
examples/js/exporters/GLTFExporter.js

@@ -244,7 +244,7 @@ THREE.GLTFExporter.prototype = {
 
 
 			if ( cachedData.attributes.has( normal ) ) {
 			if ( cachedData.attributes.has( normal ) ) {
 
 
-				return cachedData.textures.get( normal );
+				return cachedData.attributes.get( normal );
 
 
 			}
 			}
 
 

+ 4 - 1
examples/js/loaders/AssimpJSONLoader.js

@@ -21,7 +21,7 @@ THREE.AssimpJSONLoader.prototype = {
 
 
 	constructor: THREE.AssimpJSONLoader,
 	constructor: THREE.AssimpJSONLoader,
 
 
-	crossOrigin: 'Anonymous',
+	crossOrigin: 'anonymous',
 
 
 	load: function ( url, onLoad, onProgress, onError ) {
 	load: function ( url, onLoad, onProgress, onError ) {
 
 
@@ -67,6 +67,7 @@ THREE.AssimpJSONLoader.prototype = {
 	setCrossOrigin: function ( value ) {
 	setCrossOrigin: function ( value ) {
 
 
 		this.crossOrigin = value;
 		this.crossOrigin = value;
+		return this;
 
 
 	},
 	},
 
 
@@ -221,8 +222,10 @@ THREE.AssimpJSONLoader.prototype = {
 
 
 					case '$mat.opacity':
 					case '$mat.opacity':
 						if ( value < 1 ) {
 						if ( value < 1 ) {
+
 							material.opacity = value;
 							material.opacity = value;
 							material.transparent = true;
 							material.transparent = true;
+
 						}
 						}
 						break;
 						break;
 
 

+ 4 - 3
examples/js/loaders/AssimpLoader.js

@@ -12,7 +12,7 @@ THREE.AssimpLoader.prototype = {
 
 
 	constructor: THREE.AssimpLoader,
 	constructor: THREE.AssimpLoader,
 
 
-	crossOrigin: 'Anonymous',
+	crossOrigin: 'anonymous',
 
 
 	load: function ( url, onLoad, onProgress, onError ) {
 	load: function ( url, onLoad, onProgress, onError ) {
 
 
@@ -34,6 +34,7 @@ THREE.AssimpLoader.prototype = {
 	setCrossOrigin: function ( value ) {
 	setCrossOrigin: function ( value ) {
 
 
 		this.crossOrigin = value;
 		this.crossOrigin = value;
+		return this;
 
 
 	},
 	},
 
 
@@ -1129,7 +1130,7 @@ THREE.AssimpLoader.prototype = {
 			}
 			}
 
 
 			if ( ! key ) {
 			if ( ! key ) {
-				
+
 				return null;
 				return null;
 
 
 			} else if ( nextKey ) {
 			} else if ( nextKey ) {
@@ -1150,7 +1151,7 @@ THREE.AssimpLoader.prototype = {
 				var l = T / dT;
 				var l = T / dT;
 
 
 				return lerp( key.mValue.toTHREE(), nextKey.mValue.toTHREE(), l );
 				return lerp( key.mValue.toTHREE(), nextKey.mValue.toTHREE(), l );
-				
+
 			}
 			}
 
 
 		}
 		}

+ 4 - 1
examples/js/loaders/BinaryLoader.js

@@ -19,7 +19,7 @@ THREE.BinaryLoader.prototype = {
 
 
 	constructor: THREE.BinaryLoader,
 	constructor: THREE.BinaryLoader,
 
 
-	crossOrigin: 'Anonymous',
+	crossOrigin: 'anonymous',
 
 
 	// Load models generated by slim OBJ converter with BINARY option (converter_obj_three_slim.py -t binary)
 	// Load models generated by slim OBJ converter with BINARY option (converter_obj_three_slim.py -t binary)
 	//  - binary models consist of two files: JS and BIN
 	//  - binary models consist of two files: JS and BIN
@@ -66,18 +66,21 @@ THREE.BinaryLoader.prototype = {
 	setBinaryPath: function ( value ) {
 	setBinaryPath: function ( value ) {
 
 
 		this.binaryPath = value;
 		this.binaryPath = value;
+		return this;
 
 
 	},
 	},
 
 
 	setCrossOrigin: function ( value ) {
 	setCrossOrigin: function ( value ) {
 
 
 		this.crossOrigin = value;
 		this.crossOrigin = value;
+		return this;
 
 
 	},
 	},
 
 
 	setTexturePath: function ( value ) {
 	setTexturePath: function ( value ) {
 
 
 		this.texturePath = value;
 		this.texturePath = value;
+		return this;
 
 
 	},
 	},
 
 

+ 12 - 2
examples/js/loaders/ColladaLoader.js

@@ -13,7 +13,7 @@ THREE.ColladaLoader.prototype = {
 
 
 	constructor: THREE.ColladaLoader,
 	constructor: THREE.ColladaLoader,
 
 
-	crossOrigin: 'Anonymous',
+	crossOrigin: 'anonymous',
 
 
 	load: function ( url, onLoad, onProgress, onError ) {
 	load: function ( url, onLoad, onProgress, onError ) {
 
 
@@ -33,6 +33,7 @@ THREE.ColladaLoader.prototype = {
 	setPath: function ( value ) {
 	setPath: function ( value ) {
 
 
 		this.path = value;
 		this.path = value;
+		return this;
 
 
 	},
 	},
 
 
@@ -49,6 +50,7 @@ THREE.ColladaLoader.prototype = {
 	setCrossOrigin: function ( value ) {
 	setCrossOrigin: function ( value ) {
 
 
 		this.crossOrigin = value;
 		this.crossOrigin = value;
+		return this;
 
 
 	},
 	},
 
 
@@ -965,7 +967,15 @@ THREE.ColladaLoader.prototype = {
 
 
 			// setup bind matrix
 			// setup bind matrix
 
 
-			build.bindMatrix = new THREE.Matrix4().fromArray( data.bindShapeMatrix ).transpose();
+			if ( data.bindShapeMatrix ) {
+
+				build.bindMatrix = new THREE.Matrix4().fromArray( data.bindShapeMatrix ).transpose(); 
+
+			} else {
+
+				build.bindMatrix = new THREE.Matrix4().transpose(); 
+
+			}
 
 
 			// process bones and inverse bind matrix data
 			// process bones and inverse bind matrix data
 
 

+ 2 - 10
examples/js/loaders/DRACOLoader.js

@@ -42,9 +42,6 @@ THREE.DRACOLoader.prototype = {
         var loader = new THREE.FileLoader(scope.manager);
         var loader = new THREE.FileLoader(scope.manager);
         loader.setPath(this.path);
         loader.setPath(this.path);
         loader.setResponseType('arraybuffer');
         loader.setResponseType('arraybuffer');
-        if (this.crossOrigin !== undefined) {
-          loader.crossOrigin = this.crossOrigin;
-        }
         loader.load(url, function(blob) {
         loader.load(url, function(blob) {
             scope.decodeDracoFile(blob, onLoad);
             scope.decodeDracoFile(blob, onLoad);
         }, onProgress, onError);
         }, onProgress, onError);
@@ -55,11 +52,6 @@ THREE.DRACOLoader.prototype = {
         return this;
         return this;
     },
     },
 
 
-    setCrossOrigin: function(value) {
-        this.crossOrigin = value;
-        return this;
-    },
-
     setVerbosity: function(level) {
     setVerbosity: function(level) {
         this.verbosity = level;
         this.verbosity = level;
         return this;
         return this;
@@ -146,7 +138,7 @@ THREE.DRACOLoader.prototype = {
     },
     },
 
 
     addAttributeToGeometry: function(dracoDecoder, decoder, dracoGeometry,
     addAttributeToGeometry: function(dracoDecoder, decoder, dracoGeometry,
-                                     attributeName, attributeType, attribute, 
+                                     attributeName, attributeType, attribute,
                                      geometry, geometryBuffer) {
                                      geometry, geometryBuffer) {
       if (attribute.ptr === 0) {
       if (attribute.ptr === 0) {
         var errorMsg = 'THREE.DRACOLoader: No attribute ' + attributeName;
         var errorMsg = 'THREE.DRACOLoader: No attribute ' + attributeName;
@@ -224,7 +216,7 @@ THREE.DRACOLoader.prototype = {
           throw new Error( errorMsg );
           throw new Error( errorMsg );
 
 
       }
       }
-      
+
       // Copy data from decoder.
       // Copy data from decoder.
       for (var i = 0; i < numValues; i++) {
       for (var i = 0; i < numValues; i++) {
         geometryBuffer[attributeName][i] = attributeData.GetValue(i);
         geometryBuffer[attributeName][i] = attributeData.GetValue(i);

+ 12 - 1
examples/js/loaders/FBXLoader.js

@@ -32,6 +32,8 @@
 
 
 	Object.assign( THREE.FBXLoader.prototype, {
 	Object.assign( THREE.FBXLoader.prototype, {
 
 
+		crossOrigin: 'anonymous',
+
 		load: function ( url, onLoad, onProgress, onError ) {
 		load: function ( url, onLoad, onProgress, onError ) {
 
 
 			var self = this;
 			var self = this;
@@ -63,6 +65,13 @@
 
 
 		},
 		},
 
 
+		setCrossOrigin: function ( value ) {
+
+			this.crossOrigin = value;
+			return this;
+
+		},
+
 		parse: function ( FBXBuffer, resourceDirectory ) {
 		parse: function ( FBXBuffer, resourceDirectory ) {
 
 
 			var FBXTree;
 			var FBXTree;
@@ -93,9 +102,11 @@
 
 
 			// console.log( FBXTree );
 			// console.log( FBXTree );
 
 
+			var textureLoader = new THREE.TextureLoader( this.manager ).setPath( resourceDirectory ).setCrossOrigin( this.crossOrigin );
+
 			var connections = parseConnections( FBXTree );
 			var connections = parseConnections( FBXTree );
 			var images = parseImages( FBXTree );
 			var images = parseImages( FBXTree );
-			var textures = parseTextures( FBXTree, new THREE.TextureLoader( this.manager ).setPath( resourceDirectory ), images, connections );
+			var textures = parseTextures( FBXTree, textureLoader, images, connections );
 			var materials = parseMaterials( FBXTree, textures, connections );
 			var materials = parseMaterials( FBXTree, textures, connections );
 			var deformers = parseDeformers( FBXTree, connections );
 			var deformers = parseDeformers( FBXTree, connections );
 			var geometryMap = parseGeometries( FBXTree, connections, deformers );
 			var geometryMap = parseGeometries( FBXTree, connections, deformers );

+ 1 - 1
examples/js/loaders/GLTFLoader.js

@@ -19,7 +19,7 @@ THREE.GLTFLoader = ( function () {
 
 
 		constructor: GLTFLoader,
 		constructor: GLTFLoader,
 
 
-		crossOrigin: 'Anonymous',
+		crossOrigin: 'anonymous',
 
 
 		load: function ( url, onLoad, onProgress, onError ) {
 		load: function ( url, onLoad, onProgress, onError ) {
 
 

+ 1 - 1
examples/js/loaders/LoaderSupport.js

@@ -1240,7 +1240,7 @@ THREE.LoaderSupport.WorkerDirector = (function () {
 
 
 		this.maxQueueSize = MAX_QUEUE_SIZE ;
 		this.maxQueueSize = MAX_QUEUE_SIZE ;
 		this.maxWebWorkers = MAX_WEB_WORKER;
 		this.maxWebWorkers = MAX_WEB_WORKER;
-		this.crossOrigin = null;
+		this.crossOrigin = 'anonymous';
 
 
 		if ( ! Validator.isValid( classDef ) ) throw 'Provided invalid classDef: ' + classDef;
 		if ( ! Validator.isValid( classDef ) ) throw 'Provided invalid classDef: ' + classDef;
 
 

+ 4 - 4
examples/js/loaders/MMDLoader.js

@@ -50,7 +50,7 @@ THREE.MMDLoader = ( function () {
 
 
 		constructor: MMDLoader,
 		constructor: MMDLoader,
 
 
-		crossOrigin: undefined,
+		crossOrigin: 'anonymous',
 
 
 		/**
 		/**
 		 * @param {string} value
 		 * @param {string} value
@@ -329,7 +329,7 @@ THREE.MMDLoader = ( function () {
 
 
 		constructor: MeshBuilder,
 		constructor: MeshBuilder,
 
 
-		crossOrigin: undefined,
+		crossOrigin: 'anonymous',
 
 
 		/**
 		/**
 		 * @param {string} crossOrigin
 		 * @param {string} crossOrigin
@@ -876,7 +876,7 @@ THREE.MMDLoader = ( function () {
 
 
 		constructor: MaterialBuilder,
 		constructor: MaterialBuilder,
 
 
-		crossOrigin: undefined,
+		crossOrigin: 'anonymous',
 
 
 		texturePath: undefined,
 		texturePath: undefined,
 
 
@@ -946,7 +946,7 @@ THREE.MMDLoader = ( function () {
 				params.shininess = Math.max( material.shininess, 1e-4 ); // to prevent pow( 0.0, 0.0 )
 				params.shininess = Math.max( material.shininess, 1e-4 ); // to prevent pow( 0.0, 0.0 )
 				params.transparent = params.opacity !== 1.0;
 				params.transparent = params.opacity !== 1.0;
 
 
-				// 
+				//
 
 
 				params.skinning = geometry.bones.length > 0 ? true : false;
 				params.skinning = geometry.bones.length > 0 ? true : false;
 				params.morphTargets = geometry.morphTargets.length > 0 ? true : false;
 				params.morphTargets = geometry.morphTargets.length > 0 ? true : false;

+ 2 - 1
examples/js/loaders/MTLLoader.js

@@ -208,11 +208,12 @@ THREE.MTLLoader.MaterialCreator.prototype = {
 
 
 	constructor: THREE.MTLLoader.MaterialCreator,
 	constructor: THREE.MTLLoader.MaterialCreator,
 
 
-	crossOrigin: 'Anonymous',
+	crossOrigin: 'anonymous',
 
 
 	setCrossOrigin: function ( value ) {
 	setCrossOrigin: function ( value ) {
 
 
 		this.crossOrigin = value;
 		this.crossOrigin = value;
+		return this;
 
 
 	},
 	},
 
 

+ 0 - 752
examples/js/loaders/UTF8Loader.js

@@ -1,752 +0,0 @@
-/**
- * Loader for UTF8 version2 (after r51) encoded models generated by:
- *	http://code.google.com/p/webgl-loader/
- *
- * Code to load/decompress mesh is taken from r100 of this webgl-loader
- */
-
-THREE.UTF8Loader = function () {};
-
-/**
- * Load UTF8 encoded model
- * @param jsonUrl - URL from which to load json containing information about model
- * @param callback - Callback(THREE.Object3D) on successful loading of model
- * @param options - options on how to load model (see THREE.MTLLoader.MaterialCreator for basic options)
- *                  Additional options include
- *                   geometryBase: Base url from which to load referenced geometries
- *                   materialBase: Base url from which to load referenced textures
- */
-
-THREE.UTF8Loader.prototype.load = function ( jsonUrl, callback, options ) {
-
-	this.downloadModelJson( jsonUrl, callback, options );
-
-};
-
-// BufferGeometryCreator
-
-THREE.UTF8Loader.BufferGeometryCreator = function () {
-};
-
-THREE.UTF8Loader.BufferGeometryCreator.prototype.create = function ( attribArray, indices ) {
-
-	var ntris = indices.length / 3;
-
-	var geometry = new THREE.BufferGeometry();
-
-	var positions = new Float32Array( ntris * 3 * 3 );
-	var normals = new Float32Array( ntris * 3 * 3 );
-	var uvs = new Float32Array( ntris * 3 * 2 );
-
-	var i, j, offset;
-
-	var end = attribArray.length;
-	var stride = 8;
-
-	// extract positions
-
-	j = 0;
-	offset = 0;
-
-	for ( i = offset; i < end; i += stride ) {
-
-		positions[ j ++ ] = attribArray[ i ];
-		positions[ j ++ ] = attribArray[ i + 1 ];
-		positions[ j ++ ] = attribArray[ i + 2 ];
-
-	}
-
-	// extract uvs
-
-	j = 0;
-	offset = 3;
-
-	for ( i = offset; i < end; i += stride ) {
-
-		uvs[ j ++ ] = attribArray[ i ];
-		uvs[ j ++ ] = attribArray[ i + 1 ];
-
-	}
-
-	// extract normals
-
-	j = 0;
-	offset = 5;
-
-	for ( i = offset; i < end; i += stride ) {
-
-		normals[ j ++ ] = attribArray[ i ];
-		normals[ j ++ ] = attribArray[ i + 1 ];
-		normals[ j ++ ] = attribArray[ i + 2 ];
-
-	}
-
-	geometry.setIndex( new THREE.BufferAttribute( indices, 1 ) );
-	geometry.addAttribute( 'position', new THREE.BufferAttribute( positions, 3 ) );
-	geometry.addAttribute( 'normal', new THREE.BufferAttribute( normals, 3 ) );
-	geometry.addAttribute( 'uv', new THREE.BufferAttribute( uvs, 2 ) );
-
-	geometry.computeBoundingSphere();
-
-	return geometry;
-
-};
-
-
-// UTF-8 decoder from webgl-loader (r100)
-// http://code.google.com/p/webgl-loader/
-
-// Model manifest description. Contains objects like:
-// name: {
-//   materials: { 'material_name': { ... } ... },
-//   decodeParams: {
-//     decodeOffsets: [ ... ],
-//     decodeScales: [ ... ],
-//   },
-//   urls: {
-//     'url': [
-//       { material: 'material_name',
-//         attribRange: [#, #],
-//         indexRange: [#, #],
-//         names: [ 'object names' ... ],
-//         lengths: [#, #, # ... ]
-//       }
-//     ],
-//     ...
-//   }
-// }
-
-var DEFAULT_DECODE_PARAMS = {
-
-	decodeOffsets: [ - 4095, - 4095, - 4095, 0, 0, - 511, - 511, - 511 ],
-	decodeScales: [ 1 / 8191, 1 / 8191, 1 / 8191, 1 / 1023, 1 / 1023, 1 / 1023, 1 / 1023, 1 / 1023 ]
-
-	// TODO: normal decoding? (see walt.js)
-	// needs to know: input, output (from vertex format!)
-	//
-	// Should split attrib/index.
-	// 1) Decode position and non-normal attributes.
-	// 2) Decode indices, computing normals
-	// 3) Maybe normalize normals? Only necessary for refinement, or fixed?
-	// 4) Maybe refine normals? Should this be part of regular refinement?
-	// 5) Morphing
-
-};
-
-// Triangle strips!
-
-// TODO: will it be an optimization to specialize this method at
-// runtime for different combinations of stride, decodeOffset and
-// decodeScale?
-
-THREE.UTF8Loader.prototype.decompressAttribsInner_ = function ( str, inputStart, inputEnd,
-	output, outputStart, stride, decodeOffset, decodeScale ) {
-
-	var prev = 0;
-
-	for ( var j = inputStart; j < inputEnd; j ++ ) {
-
-		var code = str.charCodeAt( j );
-		prev += ( code >> 1 ) ^ ( - ( code & 1 ) );
-
-		output[ outputStart ] = decodeScale * ( prev + decodeOffset );
-		outputStart += stride;
-
-	}
-
-};
-
-THREE.UTF8Loader.prototype.decompressIndices_ = function ( str, inputStart, numIndices, output, outputStart ) {
-
-	var highest = 0;
-
-	for ( var i = 0; i < numIndices; i ++ ) {
-
-		var code = str.charCodeAt( inputStart ++ );
-
-		output[ outputStart ++ ] = highest - code;
-
-		if ( code === 0 ) {
-
-			highest ++;
-
-		}
-
-	}
-
-};
-
-THREE.UTF8Loader.prototype.decompressAABBs_ = function ( str, inputStart, numBBoxen, decodeOffsets, decodeScales ) {
-
-	var numFloats = 6 * numBBoxen;
-
-	var inputEnd = inputStart + numFloats;
-	var outputStart = 0;
-
-	var bboxen = new Float32Array( numFloats );
-
-	for ( var i = inputStart; i < inputEnd; i += 6 ) {
-
-		var minX = str.charCodeAt( i + 0 ) + decodeOffsets[ 0 ];
-		var minY = str.charCodeAt( i + 1 ) + decodeOffsets[ 1 ];
-		var minZ = str.charCodeAt( i + 2 ) + decodeOffsets[ 2 ];
-
-		var radiusX = ( str.charCodeAt( i + 3 ) + 1 ) >> 1;
-		var radiusY = ( str.charCodeAt( i + 4 ) + 1 ) >> 1;
-		var radiusZ = ( str.charCodeAt( i + 5 ) + 1 ) >> 1;
-
-		bboxen[ outputStart ++ ] = decodeScales[ 0 ] * ( minX + radiusX );
-		bboxen[ outputStart ++ ] = decodeScales[ 1 ] * ( minY + radiusY );
-		bboxen[ outputStart ++ ] = decodeScales[ 2 ] * ( minZ + radiusZ );
-
-		bboxen[ outputStart ++ ] = decodeScales[ 0 ] * radiusX;
-		bboxen[ outputStart ++ ] = decodeScales[ 1 ] * radiusY;
-		bboxen[ outputStart ++ ] = decodeScales[ 2 ] * radiusZ;
-
-	}
-
-	return bboxen;
-
-};
-
-THREE.UTF8Loader.prototype.decompressMesh = function ( str, meshParams, decodeParams, name, idx, callback ) {
-
-	// Extract conversion parameters from attribArrays.
-
-	var stride = decodeParams.decodeScales.length;
-
-	var decodeOffsets = decodeParams.decodeOffsets;
-	var decodeScales = decodeParams.decodeScales;
-
-	var attribStart = meshParams.attribRange[ 0 ];
-	var numVerts = meshParams.attribRange[ 1 ];
-
-	// Decode attributes.
-
-	var inputOffset = attribStart;
-	var attribsOut = new Float32Array( stride * numVerts );
-
-	for ( var j = 0; j < stride; j ++ ) {
-
-		var end = inputOffset + numVerts;
-
-		var decodeScale = decodeScales[ j ];
-
-		if ( decodeScale ) {
-
-			// Assume if decodeScale is never set, simply ignore the
-			// attribute.
-
-			this.decompressAttribsInner_( str, inputOffset, end, attribsOut, j, stride, decodeOffsets[ j ], decodeScale );
-
-		}
-
-		inputOffset = end;
-
-	}
-
-	var numIndices = 3 * meshParams.indexRange[ 1 ];
-
-	var indicesOut = new Uint16Array( numIndices );
-
-	this.decompressIndices_( str, inputOffset, numIndices, indicesOut, 0 );
-
-	// Decode bboxen.
-
-	var bboxen = undefined;
-	var bboxOffset = meshParams.bboxes;
-
-	if ( bboxOffset ) {
-
-		bboxen = this.decompressAABBs_( str, bboxOffset, meshParams.names.length, decodeOffsets, decodeScales );
-
-	}
-
-	callback( name, idx, attribsOut, indicesOut, bboxen, meshParams );
-
-};
-
-THREE.UTF8Loader.prototype.copyAttrib = function ( stride, attribsOutFixed, lastAttrib, index ) {
-
-	for ( var j = 0; j < stride; j ++ ) {
-
-		lastAttrib[ j ] = attribsOutFixed[ stride * index + j ];
-
-	}
-
-};
-
-THREE.UTF8Loader.prototype.decodeAttrib2 = function ( str, stride, decodeOffsets, decodeScales, deltaStart,
-	numVerts, attribsOut, attribsOutFixed, lastAttrib, index ) {
-
-	for ( var j = 0; j < 5; j ++ ) {
-
-		var code = str.charCodeAt( deltaStart + numVerts * j + index );
-		var delta = ( code >> 1 ) ^ ( - ( code & 1 ) );
-
-		lastAttrib[ j ] += delta;
-		attribsOutFixed[ stride * index + j ] = lastAttrib[ j ];
-		attribsOut[ stride * index + j ] = decodeScales[ j ] * ( lastAttrib[ j ] + decodeOffsets[ j ] );
-
-	}
-
-};
-
-THREE.UTF8Loader.prototype.accumulateNormal = function ( i0, i1, i2, attribsOutFixed, crosses ) {
-
-	var p0x = attribsOutFixed[ 8 * i0 ];
-	var p0y = attribsOutFixed[ 8 * i0 + 1 ];
-	var p0z = attribsOutFixed[ 8 * i0 + 2 ];
-
-	var p1x = attribsOutFixed[ 8 * i1 ];
-	var p1y = attribsOutFixed[ 8 * i1 + 1 ];
-	var p1z = attribsOutFixed[ 8 * i1 + 2 ];
-
-	var p2x = attribsOutFixed[ 8 * i2 ];
-	var p2y = attribsOutFixed[ 8 * i2 + 1 ];
-	var p2z = attribsOutFixed[ 8 * i2 + 2 ];
-
-	p1x -= p0x;
-	p1y -= p0y;
-	p1z -= p0z;
-
-	p2x -= p0x;
-	p2y -= p0y;
-	p2z -= p0z;
-
-	p0x = p1y * p2z - p1z * p2y;
-	p0y = p1z * p2x - p1x * p2z;
-	p0z = p1x * p2y - p1y * p2x;
-
-	crosses[ 3 * i0 ] += p0x;
-	crosses[ 3 * i0 + 1 ] += p0y;
-	crosses[ 3 * i0 + 2 ] += p0z;
-
-	crosses[ 3 * i1 ] += p0x;
-	crosses[ 3 * i1 + 1 ] += p0y;
-	crosses[ 3 * i1 + 2 ] += p0z;
-
-	crosses[ 3 * i2 ] += p0x;
-	crosses[ 3 * i2 + 1 ] += p0y;
-	crosses[ 3 * i2 + 2 ] += p0z;
-
-};
-
-THREE.UTF8Loader.prototype.decompressMesh2 = function ( str, meshParams, decodeParams, name, idx, callback ) {
-
-	var MAX_BACKREF = 96;
-
-	// Extract conversion parameters from attribArrays.
-
-	var stride = decodeParams.decodeScales.length;
-
-	var decodeOffsets = decodeParams.decodeOffsets;
-	var decodeScales = decodeParams.decodeScales;
-
-	var deltaStart = meshParams.attribRange[ 0 ];
-	var numVerts = meshParams.attribRange[ 1 ];
-
-	var codeStart = meshParams.codeRange[ 0 ];
-
-	var numIndices = 3 * meshParams.codeRange[ 2 ];
-
-	var indicesOut = new Uint16Array( numIndices );
-
-	var crosses = new Int32Array( 3 * numVerts );
-
-	var lastAttrib = new Uint16Array( stride );
-
-	var attribsOutFixed = new Uint16Array( stride * numVerts );
-	var attribsOut = new Float32Array( stride * numVerts );
-
-	var highest = 0;
-	var outputStart = 0;
-
-	for ( var i = 0; i < numIndices; i += 3 ) {
-
-		var code = str.charCodeAt( codeStart ++ );
-
-		var max_backref = Math.min( i, MAX_BACKREF );
-
-		if ( code < max_backref ) {
-
-  		// Parallelogram
-
-			var winding = code % 3;
-			var backref = i - ( code - winding );
-			var i0, i1, i2;
-
-			switch ( winding ) {
-
-				case 0:
-
-					i0 = indicesOut[ backref + 2 ];
-					i1 = indicesOut[ backref + 1 ];
-					i2 = indicesOut[ backref + 0 ];
-					break;
-
-				case 1:
-
-					i0 = indicesOut[ backref + 0 ];
-					i1 = indicesOut[ backref + 2 ];
-					i2 = indicesOut[ backref + 1 ];
-					break;
-
-				case 2:
-
-					i0 = indicesOut[ backref + 1 ];
-					i1 = indicesOut[ backref + 0 ];
-					i2 = indicesOut[ backref + 2 ];
-					break;
-
-			}
-
-			indicesOut[ outputStart ++ ] = i0;
-			indicesOut[ outputStart ++ ] = i1;
-
-			code = str.charCodeAt( codeStart ++ );
-
-			var index = highest - code;
-			indicesOut[ outputStart ++ ] = index;
-
-			if ( code === 0 ) {
-
-				for ( var j = 0; j < 5; j ++ ) {
-
-					var deltaCode = str.charCodeAt( deltaStart + numVerts * j + highest );
-
-					var prediction = ( ( deltaCode >> 1 ) ^ ( - ( deltaCode & 1 ) ) ) +
-						attribsOutFixed[ stride * i0 + j ] +
-						attribsOutFixed[ stride * i1 + j ] -
-						attribsOutFixed[ stride * i2 + j ];
-
-					lastAttrib[ j ] = prediction;
-
-					attribsOutFixed[ stride * highest + j ] = prediction;
-					attribsOut[ stride * highest + j ] = decodeScales[ j ] * ( prediction + decodeOffsets[ j ] );
-
-				}
-
-				highest ++;
-
-			} else {
-
-				this.copyAttrib( stride, attribsOutFixed, lastAttrib, index );
-
-			}
-
-			this.accumulateNormal( i0, i1, index, attribsOutFixed, crosses );
-
-		} else {
-
-			// Simple
-
-			var index0 = highest - ( code - max_backref );
-
-			indicesOut[ outputStart ++ ] = index0;
-
-			if ( code === max_backref ) {
-
-				this.decodeAttrib2( str, stride, decodeOffsets, decodeScales, deltaStart,
-					numVerts, attribsOut, attribsOutFixed, lastAttrib, highest ++ );
-
-			} else {
-
-				this.copyAttrib( stride, attribsOutFixed, lastAttrib, index0 );
-
-			}
-
-			code = str.charCodeAt( codeStart ++ );
-
-			var index1 = highest - code;
-			indicesOut[ outputStart ++ ] = index1;
-
-			if ( code === 0 ) {
-
-				this.decodeAttrib2( str, stride, decodeOffsets, decodeScales, deltaStart,
-					numVerts, attribsOut, attribsOutFixed, lastAttrib, highest ++ );
-
-			} else {
-
-				this.copyAttrib( stride, attribsOutFixed, lastAttrib, index1 );
-
-			}
-
-			code = str.charCodeAt( codeStart ++ );
-
-			var index2 = highest - code;
-			indicesOut[ outputStart ++ ] = index2;
-
-			if ( code === 0 ) {
-
-				for ( var j = 0; j < 5; j ++ ) {
-
-					lastAttrib[ j ] = ( attribsOutFixed[ stride * index0 + j ] + attribsOutFixed[ stride * index1 + j ] ) / 2;
-
-				}
-
-				this.decodeAttrib2( str, stride, decodeOffsets, decodeScales, deltaStart,
-					numVerts, attribsOut, attribsOutFixed, lastAttrib, highest ++ );
-
-			} else {
-
-				this.copyAttrib( stride, attribsOutFixed, lastAttrib, index2 );
-
-			}
-
-			this.accumulateNormal( index0, index1, index2, attribsOutFixed, crosses );
-
-		}
-
-	}
-
-	for ( var i = 0; i < numVerts; i ++ ) {
-
-		var nx = crosses[ 3 * i ];
-		var ny = crosses[ 3 * i + 1 ];
-		var nz = crosses[ 3 * i + 2 ];
-
-		var norm = 511.0 / Math.sqrt( nx * nx + ny * ny + nz * nz );
-
-		var cx = str.charCodeAt( deltaStart + 5 * numVerts + i );
-		var cy = str.charCodeAt( deltaStart + 6 * numVerts + i );
-		var cz = str.charCodeAt( deltaStart + 7 * numVerts + i );
-
-		attribsOut[ stride * i + 5 ] = norm * nx + ( ( cx >> 1 ) ^ ( - ( cx & 1 ) ) );
-		attribsOut[ stride * i + 6 ] = norm * ny + ( ( cy >> 1 ) ^ ( - ( cy & 1 ) ) );
-		attribsOut[ stride * i + 7 ] = norm * nz + ( ( cz >> 1 ) ^ ( - ( cz & 1 ) ) );
-
-	}
-
-	callback( name, idx, attribsOut, indicesOut, undefined, meshParams );
-
-};
-
-THREE.UTF8Loader.prototype.downloadMesh = function ( path, name, meshEntry, decodeParams, callback ) {
-
-	var loader = this;
-	var idx = 0;
-
-	function onprogress( data ) {
-
-		while ( idx < meshEntry.length ) {
-
-			var meshParams = meshEntry[ idx ];
-			var indexRange = meshParams.indexRange;
-
-			if ( indexRange ) {
-
-				var meshEnd = indexRange[ 0 ] + 3 * indexRange[ 1 ];
-
-				if ( data.length < meshEnd ) break;
-
-				loader.decompressMesh( data, meshParams, decodeParams, name, idx, callback );
-
-			} else {
-
-				var codeRange = meshParams.codeRange;
-				var meshEnd = codeRange[ 0 ] + codeRange[ 1 ];
-
-				if ( data.length < meshEnd ) break;
-
-				loader.decompressMesh2( data, meshParams, decodeParams, name, idx, callback );
-
-			}
-
-			++ idx;
-
-		}
-
-	}
-
-	getHttpRequest( path, function ( data ) {
-
-		onprogress( data );
-
-		// TODO: handle errors.
-
-	} );
-
-};
-
-THREE.UTF8Loader.prototype.downloadMeshes = function ( path, meshUrlMap, decodeParams, callback ) {
-
-	for ( var url in meshUrlMap ) {
-
-		var meshEntry = meshUrlMap[ url ];
-		this.downloadMesh( path + url, url, meshEntry, decodeParams, callback );
-
-	}
-
-};
-
-THREE.UTF8Loader.prototype.createMeshCallback = function ( materialBaseUrl, loadModelInfo, allDoneCallback ) {
-
-	var nCompletedUrls = 0;
-	var nExpectedUrls = 0;
-
-	var expectedMeshesPerUrl = {};
-	var decodedMeshesPerUrl = {};
-
-	var modelParts = {};
-
-	var meshUrlMap = loadModelInfo.urls;
-
-	for ( var url in meshUrlMap ) {
-
-		expectedMeshesPerUrl[ url ] = meshUrlMap[ url ].length;
-		decodedMeshesPerUrl[ url ] = 0;
-
-		nExpectedUrls ++;
-
-		modelParts[ url ] = new THREE.Object3D();
-
-	}
-
-	var model = new THREE.Object3D();
-
-	// Prepare materials first...
-
-	var materialCreator = new THREE.MTLLoader.MaterialCreator( materialBaseUrl, loadModelInfo.options );
-	materialCreator.setMaterials( loadModelInfo.materials );
-
-	materialCreator.preload();
-
-	// Create callback for creating mesh parts
-
-	var bufferGeometryCreator = new THREE.UTF8Loader.BufferGeometryCreator();
-
-	var meshCallback = function ( name, idx, attribArray, indexArray, bboxen, meshParams ) {
-
-		// Got ourselves a new mesh
-
-		// name identifies this part of the model (url)
-		// idx is the mesh index of this mesh of the part
-		// attribArray defines the vertices
-		// indexArray defines the faces
-		// bboxen defines the bounding box
-		// meshParams contains the material info
-
-		var geometry = bufferGeometryCreator.create( attribArray, indexArray );
-		var material = materialCreator.create( meshParams.material );
-
-		var mesh = new THREE.Mesh( geometry, material );
-		modelParts[ name ].add( mesh );
-
-		//model.add(new THREE.Mesh(geometry, material));
-
-		decodedMeshesPerUrl[ name ] ++;
-
-		if ( decodedMeshesPerUrl[ name ] === expectedMeshesPerUrl[ name ] ) {
-
-			nCompletedUrls ++;
-
-			model.add( modelParts[ name ] );
-
-			if ( nCompletedUrls === nExpectedUrls ) {
-
-				// ALL DONE!!!
-
-				allDoneCallback( model );
-
-			}
-
-		}
-
-	};
-
-	return meshCallback;
-
-};
-
-THREE.UTF8Loader.prototype.downloadModel = function ( geometryBase, materialBase, model, callback ) {
-
-	var meshCallback = this.createMeshCallback( materialBase, model, callback );
-	this.downloadMeshes( geometryBase, model.urls, model.decodeParams, meshCallback );
-
-};
-
-THREE.UTF8Loader.prototype.downloadModelJson = function ( jsonUrl, callback, options ) {
-
-	getJsonRequest( jsonUrl, function ( loaded ) {
-
-		if ( ! loaded.decodeParams ) {
-
-			if ( options && options.decodeParams ) {
-
-				loaded.decodeParams = options.decodeParams;
-
-			} else {
-
-				loaded.decodeParams = DEFAULT_DECODE_PARAMS;
-
-			}
-
-		}
-
-		loaded.options = options;
-
-		var geometryBase = jsonUrl.substr( 0, jsonUrl.lastIndexOf( "/" ) + 1 );
-		var materialBase = geometryBase;
-
-		if ( options && options.geometryBase ) {
-
-			geometryBase = options.geometryBase;
-
-			if ( geometryBase.charAt( geometryBase.length - 1 ) !== "/" ) {
-
-				geometryBase = geometryBase + "/";
-
-			}
-
-		}
-
-		if ( options && options.materialBase ) {
-
-			materialBase = options.materialBase;
-
-			if ( materialBase.charAt( materialBase.length - 1 ) !== "/" ) {
-
-				materialBase = materialBase + "/";
-
-			}
-
-		}
-
-		this.downloadModel( geometryBase, materialBase, loaded, callback );
-
-	}.bind( this ) );
-
-};
-
-// XMLHttpRequest stuff
-
-function getHttpRequest( url, onload, opt_onprogress ) {
-
-	var req = new THREE.FileLoader();
-	req.load( url, onload, opt_onprogress );
-
-}
-
-function getJsonRequest( url, onjson ) {
-
-	getHttpRequest( url, function ( e ) {
-
-		onjson( JSON.parse( e ) );
-
-	},
-	function () {} );
-
-}
-
-function addListeners( dom, listeners ) {
-
-	// TODO: handle event capture, object binding.
-
-	for ( var key in listeners ) {
-
-		dom.addEventListener( key, listeners[ key ] );
-
-	}
-
-}

+ 2 - 1
examples/js/loaders/VRMLLoader.js

@@ -26,7 +26,7 @@ THREE.VRMLLoader.prototype = {
 
 
 	recordingFieldname: null,
 	recordingFieldname: null,
 
 
-	crossOrigin: 'Anonymous',
+	crossOrigin: 'anonymous',
 
 
 	load: function ( url, onLoad, onProgress, onError ) {
 	load: function ( url, onLoad, onProgress, onError ) {
 
 
@@ -44,6 +44,7 @@ THREE.VRMLLoader.prototype = {
 	setCrossOrigin: function ( value ) {
 	setCrossOrigin: function ( value ) {
 
 
 		this.crossOrigin = value;
 		this.crossOrigin = value;
+		return this;
 
 
 	},
 	},
 
 

+ 1 - 1
examples/js/loaders/VRMLoader.js

@@ -26,7 +26,7 @@ THREE.VRMLoader = ( function () {
 
 
 		constructor: VRMLoader,
 		constructor: VRMLoader,
 
 
-		crossOrigin: 'Anonymous',
+		crossOrigin: 'anonymous',
 
 
 		load: function ( url, onLoad, onProgress, onError ) {
 		load: function ( url, onLoad, onProgress, onError ) {
 
 

+ 2 - 1
examples/js/loaders/deprecated/LegacyGLTFLoader.js

@@ -17,7 +17,7 @@ THREE.LegacyGLTFLoader = ( function () {
 
 
 		constructor: LegacyGLTFLoader,
 		constructor: LegacyGLTFLoader,
 
 
-		crossOrigin: 'Anonymous',
+		crossOrigin: 'anonymous',
 
 
 		load: function ( url, onLoad, onProgress, onError ) {
 		load: function ( url, onLoad, onProgress, onError ) {
 
 
@@ -40,6 +40,7 @@ THREE.LegacyGLTFLoader = ( function () {
 		setCrossOrigin: function ( value ) {
 		setCrossOrigin: function ( value ) {
 
 
 			this.crossOrigin = value;
 			this.crossOrigin = value;
+			return this;
 
 
 		},
 		},
 
 

+ 2 - 2
examples/js/vr/WebVR.js

@@ -78,7 +78,7 @@ var WEBVR = {
 
 
 				if ( currentSession === null ) {
 				if ( currentSession === null ) {
 
 
-					device.requestSession( { immersive: true } ).then( onSessionStarted );
+					device.requestSession( { exclusive: true } ).then( onSessionStarted );
 
 
 				} else {
 				} else {
 
 
@@ -137,7 +137,7 @@ var WEBVR = {
 
 
 			navigator.xr.requestDevice().then( function ( device ) {
 			navigator.xr.requestDevice().then( function ( device ) {
 
 
-				device.supportsSession( { immersive: true } ).then( function () {
+				device.supportsSession( { exclusive: true } ).then( function () {
 
 
 					showEnterXR( device );
 					showEnterXR( device );
 
 

+ 0 - 0
examples/js/vr/DaydreamController.js → examples/js/vr/deprecated/DaydreamController.js


+ 0 - 0
examples/js/vr/GearVRController.js → examples/js/vr/deprecated/GearVRController.js


+ 0 - 21
examples/models/obj/gear_vr_controller/LICENSE.txt

@@ -1,21 +0,0 @@
-The MIT License
-
-Copyright © 2015-2017 A-Frame authors.
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.

+ 0 - 22
examples/models/obj/gear_vr_controller/gear_vr_controller.mtl

@@ -1,22 +0,0 @@
-# Gear VR Controller MTL
-newmtl Base
-Kd 0.0911392 0.0911392 0.0911392
-Ns 256
-d 1
-illum 2
-Ka 0 0 0
-Ks 0.04 0.04 0.04
-newmtl Touchpad
-Kd 0.172688 0.172688 0.172688
-Ns 256
-d 1
-illum 2
-Ka 0 0 0
-Ks 0.04 0.04 0.04
-newmtl Trigger
-Kd 0.172688 0.172688 0.172688
-Ns 256
-d 1
-illum 2
-Ka 0 0 0
-Ks 0.04 0.04 0.04

+ 0 - 1064
examples/models/obj/gear_vr_controller/gear_vr_controller.obj

@@ -1,1064 +0,0 @@
-# Gear VR Controller
-# Units	meters
-
-o Base
-v 0.0120377 -0.0217958 0.0802467
-v 0.0097514 -0.0243733 0.085021
-v 0.00472159 -0.026189 0.0883812
-v 0.00251746 -0.0380262 0.0722965
-v 0.00269244 -0.0383627 0.0773935
-v 0.0041137 -0.0363887 0.0818603
-v 0.00799378 -0.0358757 0.0773606
-v 0.011047 -0.0321853 0.0741615
-v 0.0110994 -0.0300889 0.0806922
-v 0.00323768 -0.0332681 0.0857424
-v 0.00779541 -0.0325099 0.0837432
-v 0.0125704 -0.0284915 0.0769487
-v 0.0070908 -0.0363513 0.0727187
-v 0.0122399 0.00754624 0.0258895
-v 0.0111836 -0.00345728 0.0207223
-v 0.00575354 -0.01088 -0.00438047
-v 0 -0.0115812 -0.00562427
-v 0.0181079 0.00995213 -0.00106643
-v 0.0116229 0.00995217 -0.0139021
-v 0 0.00995163 -0.0183425
-v 0.00689219 -0.0113732 0.00103067
-v 0 -0.0121148 0.0102695
-v 0.0160727 0.00995237 -0.0081
-v 0.0169152 -0.00216802 -0.00389487
-v 0.0168956 0.0100554 0.00845563
-v 0.0154117 -0.00332344 0.00842671
-v 0.0126428 0.00094904 -0.0149559
-v 0 -0.0125775 -0.00027984
-v 0.0195474 0.00395938 -0.000436593
-v 0.00574342 -0.0113584 0.0097881
-v 0.0175192 0.00788466 0.00998393
-v 0.0187872 0.00410691 0.00722581
-v 0.0139964 -0.00264663 -0.00927289
-v 0.0173328 -0.00263693 0.00246136
-v 0.0102034 -0.0092698 -0.00154566
-v 0.0172801 0.00341704 -0.0085318
-v 0.006218 0.00995197 -0.0171755
-v 0 0.00761475 -0.0205764
-v 0.00653162 0.00762267 -0.019446
-v 0.0153456 0.00762246 -0.0118764
-v 0.010847 0.00761475 -0.0166483
-v 0.0195131 0.00760949 0.00353866
-v 0.0185358 0.00769649 -0.00539745
-v 0.0102 -0.00992829 0.00356989
-v 0.00642435 0.0032985 -0.0201171
-v 0.00974452 0.00179156 -0.0177271
-v 0.0088227 -0.00660134 0.0195079
-v 0.0128939 0.00177954 0.0230278
-v 0 -0.0266 0.0891412
-v 0.0137859 0.00560591 0.0177206
-v 0.0122827 -0.00279898 0.0164583
-v 0.0124171 0.00945384 0.0185667
-v 0 0.00339475 -0.0214264
-v 0.00754595 -0.00744792 -0.0102493
-v 0 -0.0370955 0.0814149
-v 0 -0.0378036 0.0796494
-v 0 -0.0384903 0.0765344
-v 0 0.00759363 0.0258084
-v 0 0.00945384 0.0185667
-v 1.06707e-018 -0.0104048 -0.00704971
-v 0.00871332 -0.00449104 -0.0134489
-v 0.00754595 -0.00153417 -0.0166485
-v 0.00435666 0.000630421 -0.0189907
-v -2.13415e-018 0.00142271 -0.019848
-v 0 -0.0335356 0.0860422
-v 0.00435666 -0.00961251 -0.00790704
-v 0 -0.009703 0.0191341
-v 0 -0.0105182 0.0159021
-v 0.00905767 -0.00711343 0.0160021
-v 0 -0.0380536 0.0732949
-v 0.00482963 -0.00888521 0.0189157
-v 0.00515124 -0.00977728 0.0160612
-v -0.0120377 -0.0217958 0.0802467
-v -0.0097514 -0.0243733 0.085021
-v -0.00472159 -0.026189 0.0883812
-v -0.00251746 -0.0380262 0.0722965
-v -0.00269244 -0.0383627 0.0773935
-v -0.0041137 -0.0363887 0.0818603
-v -0.00799378 -0.0358757 0.0773606
-v -0.011047 -0.0321853 0.0741615
-v -0.0110994 -0.0300889 0.0806922
-v -0.00323768 -0.0332681 0.0857424
-v -0.00779541 -0.0325099 0.0837432
-v -0.0125704 -0.0284915 0.0769487
-v -0.0070908 -0.0363513 0.0727187
-v -0.0122399 0.00754624 0.0258895
-v -0.0111836 -0.00345728 0.0207223
-v -0.00575354 -0.01088 -0.00438047
-v -0.0181079 0.00995213 -0.00106643
-v -0.0116229 0.00995217 -0.0139021
-v -0.00689219 -0.0113732 0.00103067
-v -0.0160727 0.00995237 -0.0081
-v -0.0169152 -0.00216802 -0.00389487
-v -0.0168956 0.0100554 0.00845563
-v -0.0154117 -0.00332344 0.00842671
-v -0.0126428 0.00094904 -0.0149559
-v -0.0195474 0.00395938 -0.000436593
-v -0.00574342 -0.0113584 0.0097881
-v -0.0175192 0.00788466 0.00998393
-v -0.0187872 0.00410691 0.00722581
-v -0.0139964 -0.00264663 -0.00927289
-v -0.0173328 -0.00263693 0.00246136
-v -0.0102034 -0.0092698 -0.00154566
-v -0.0172801 0.00341704 -0.0085318
-v -0.006218 0.00995197 -0.0171755
-v -0.00653162 0.00762267 -0.019446
-v -0.0153456 0.00762246 -0.0118764
-v -0.010847 0.00761475 -0.0166483
-v -0.0195131 0.00760949 0.00353866
-v -0.0185358 0.00769649 -0.00539745
-v -0.0102 -0.00992829 0.00356989
-v -0.00642435 0.0032985 -0.0201171
-v -0.00974452 0.00179156 -0.0177271
-v -0.0088227 -0.00660134 0.0195079
-v -0.0128939 0.00177954 0.0230278
-v -0.0137859 0.00560591 0.0177206
-v -0.0122827 -0.00279898 0.0164583
-v -0.0124171 0.00945384 0.0185667
-v -0.00754595 -0.00744792 -0.0102493
-v -0.00871332 -0.00449104 -0.0134489
-v -0.00754595 -0.00153417 -0.0166485
-v -0.00435666 0.000630421 -0.0189907
-v -0.00435666 -0.00961251 -0.00790704
-v -0.00905767 -0.00711343 0.0160021
-v -0.00482963 -0.00888521 0.0189157
-v -0.00515124 -0.00977728 0.0160612
-vn 0.995614 -0.0475096 0.0805988
-vn 0.994868 0.0884399 0.0491474
-vn 0.987191 0.0115243 0.159123
-vn 0.9447 0.191452 0.266247
-vn 0.639669 -0.745114 0.188756
-vn 0.846744 -0.52524 -0.0845413
-vn 0.85642 -0.397126 0.329902
-vn 0.93036 0.250913 -0.267346
-vn 0.565338 0.823313 -0.050486
-vn 0.957818 0.272286 0.0918948
-vn 0.465751 0.883741 -0.0455838
-vn 0.616383 0.74684 0.249603
-vn 0.89423 -0.195181 -0.402812
-vn 0.982919 -0.163021 -0.0854121
-vn 0.535428 -0.814225 -0.2244
-vn 0.331804 -0.931921 0.146385
-vn 0 -0.998076 -0.0620001
-vn 0.329818 -0.941533 -0.0688207
-vn 0.512036 0.819619 -0.256989
-vn 0.789575 0.261601 -0.5551
-vn 0.375947 0.839243 -0.392855
-vn 0.296759 -0.914533 -0.274889
-vn 0.586353 -0.783701 -0.204947
-vn 0.924245 0.0449264 0.379148
-vn 0.883405 0.275604 0.378995
-vn 0.253575 -0.537792 0.804039
-vn 0.602949 -0.508122 0.615033
-vn 0.408399 -0.350645 0.842768
-vn 0.287541 -0.817212 0.499485
-vn 0.600116 0.330758 -0.728326
-vn 0.906215 -0.419022 -0.05652
-vn 0.874416 -0.443354 0.197063
-vn 0.599262 -0.796837 0.0770437
-vn 0.846816 -0.530479 0.038657
-vn 0.975728 -0.190185 0.108553
-vn 0.947088 -0.164004 0.275912
-vn 0.834639 -0.499096 -0.232985
-vn 0.714519 -0.692013 -0.102865
-vn 0.691382 -0.594329 -0.410809
-vn 0.825381 -0.178809 0.535513
-vn 0.251651 0.807729 -0.533147
-vn 0.356491 0.423197 -0.832957
-vn 0.216677 -0.963193 0.15909
-vn 0.697166 -0.316465 -0.64328
-vn 0 -0.981311 0.192428
-vn 0.818313 -0.489641 0.301026
-vn 0 0.360828 -0.932633
-vn 0 0.967638 -0.252341
-vn 0.492859 -0.782597 -0.380305
-vn 0.116882 -0.951608 -0.28422
-vn 0 -0.395356 0.918528
-vn 0 -0.90804 -0.418884
-vn 0 -0.999989 0.00462657
-vn 0 -0.955654 0.294491
-vn 1.02234e-006 0.879948 0.47507
-vn 0 0.879904 0.475151
-vn -0.000168025 0.879916 0.47513
-vn 0.332534 0.942583 -0.0309582
-vn 0 0.993683 0.112223
-vn 0 0.98768 0.156484
-vn 0.313401 -0.13053 -0.940607
-vn 0.202835 -0.539648 -0.817091
-vn 0 -0.334443 -0.942416
-vn 0.567877 -0.614068 -0.548121
-vn 0.429258 -0.522076 -0.737004
-vn 0.164861 -0.85489 -0.491919
-vn 0.518752 -0.248983 -0.817866
-vn 0 -0.771262 -0.636518
-vn 0 -0.672326 0.740255
-vn 0 -0.890251 0.455471
-vn 0 -0.624868 -0.78073
-vn 0.390092 -0.915476 -0.0986533
-vn 0.627936 -0.741402 0.236684
-vn 3.18038e-008 0.921959 0.387289
-vn -9.82873e-007 0.879948 0.47507
-vn 0 -0.994767 -0.102174
-vn 0 -0.953285 -0.302073
-vn 0.283772 -0.917438 0.278893
-vn 0 -0.965967 0.258665
-vn 0.0007921 0.944877 0.327423
-vn -8.06992e-005 0.879829 0.47529
-vn -0.995614 -0.0475096 0.0805988
-vn -0.987191 0.0115243 0.159123
-vn -0.994868 0.0884399 0.0491474
-vn -0.9447 0.191452 0.266247
-vn -0.639669 -0.745114 0.188756
-vn -0.85642 -0.397126 0.329902
-vn -0.846744 -0.52524 -0.0845413
-vn -0.93036 0.250913 -0.267346
-vn -0.957818 0.272286 0.0918948
-vn -0.565338 0.823313 -0.050486
-vn -0.465751 0.883741 -0.0455838
-vn -0.616383 0.74684 0.249603
-vn -0.89423 -0.195181 -0.402812
-vn -0.982919 -0.163021 -0.0854121
-vn -0.535428 -0.814225 -0.2244
-vn -0.331804 -0.931921 0.146385
-vn -0.329818 -0.941533 -0.0688207
-vn -0.512036 0.819619 -0.256989
-vn -0.375947 0.839243 -0.392855
-vn -0.789575 0.261601 -0.5551
-vn -0.296759 -0.914533 -0.274889
-vn -0.586353 -0.783701 -0.204947
-vn -0.924245 0.0449264 0.379148
-vn -0.883405 0.275604 0.378995
-vn -0.253575 -0.537792 0.804039
-vn -0.408399 -0.350645 0.842768
-vn -0.602949 -0.508122 0.615033
-vn -0.287541 -0.817212 0.499485
-vn -0.600116 0.330758 -0.728326
-vn -0.906215 -0.419022 -0.05652
-vn -0.874416 -0.443354 0.197063
-vn -0.599262 -0.796837 0.0770437
-vn -0.846816 -0.530479 0.038657
-vn -0.975728 -0.190185 0.108553
-vn -0.947088 -0.164004 0.275912
-vn -0.834639 -0.499096 -0.232985
-vn -0.714519 -0.692013 -0.102865
-vn -0.691382 -0.594329 -0.410809
-vn -0.825381 -0.178809 0.535513
-vn -0.251651 0.807729 -0.533147
-vn -0.356491 0.423197 -0.832957
-vn -0.216677 -0.963193 0.15909
-vn -0.697166 -0.316465 -0.64328
-vn -0.818313 -0.489641 0.301026
-vn -0.492859 -0.782597 -0.380305
-vn -0.116882 -0.951608 -0.28422
-vn 0.000168025 0.879916 0.47513
-vn -0.332534 0.942583 -0.0309582
-vn -0.313401 -0.13053 -0.940607
-vn -0.202835 -0.539648 -0.817091
-vn -0.567877 -0.614068 -0.548121
-vn -0.429258 -0.522076 -0.737004
-vn -0.164861 -0.85489 -0.491919
-vn -0.518752 -0.248983 -0.817866
-vn -0.390092 -0.915476 -0.0986533
-vn -0.627936 -0.741402 0.236684
-vn -0.000792047 0.944877 0.327423
-vn -0.283772 -0.917438 0.278893
-vn 8.06992e-005 0.879829 0.47529
-vt 0.872162 0.452749
-vt 0.913444 0.460038
-vt 0.867146 0.871112
-vt 0.928333 0.43788
-vt 0.764421 0.86984
-vt 0.791868 0.850656
-vt 0.803132 0.887395
-vt 0.958767 0.211058
-vt 0.994834 0.255602
-vt 0.964021 0.303967
-vt 0.975682 0.363076
-vt 0.903251 0.195538
-vt 0.939805 0.267778
-vt 0.758951 0.849918
-vt 0.761861 0.361034
-vt 0.719422 0.285526
-vt 0.769811 0.294273
-vt 0.970637 0.158108
-vt 0.914338 0.137693
-vt 0.902921 0.073504
-vt 0.762727 0.254765
-vt 0.797604 0.27411
-vt 0.906403 0.422907
-vt 0.950794 0.365316
-vt 0.742086 0.921408
-vt 0.773458 0.906106
-vt 0.777563 0.976057
-vt 0.743082 0.893261
-vt 0.855378 0.08764
-vt 0.829588 0.4465
-vt 0.842594 0.4112
-vt 0.795897 0.311195
-vt 0.873851 0.296814
-vt 0.81924 0.861306
-vt 0.927306 0.334494
-vt 0.870677 0.248301
-vt 0.797685 0.443929
-vt 0.844497 0.208889
-vt 0.837466 0.931917
-vt 0.815912 0.0253472
-vt 0.798923 0.0652843
-vt 0.733267 0.87182
-vt 0.839794 0.155647
-vt 0.719421 0.365672
-vt 0.859096 0.344206
-vt 0.719424 0.0550654
-vt 0.719423 0.0121951
-vt 0.784942 0.209243
-vt 0.73285 0.850439
-vt 0.719382 0.987805
-vt 0.719422 0.245258
-vt 0.719391 0.868824
-vt 0.71939 0.882628
-vt 0.254599 0.0969414
-vt 0.157625 0.0121951
-vt 0.236181 0.0514575
-vt 0.303546 0.842961
-vt 0.157632 0.678282
-vt 0.293835 0.763108
-vt 0.257686 0.678218
-vt 0.287142 0.901935
-vt 0.251285 0.950582
-vt 0.157632 0.987805
-vt 0.207733 0.978025
-vt 0.784736 0.108258
-vt 0.765649 0.135463
-vt 0.719424 0.101307
-vt 0.800208 0.184744
-vt 0.795216 0.157246
-vt 0.756037 0.225742
-vt 0.815217 0.132305
-vt 0.719422 0.230726
-vt 0.719387 0.923387
-vt 0.719389 0.891307
-vt 0.719424 0.126927
-vt 0.760028 0.443822
-vt 0.799139 0.411358
-vt 0.157631 0.615578
-vt 0.0606522 0.0969434
-vt 0.719419 0.446478
-vt 0.719391 0.85602
-vt 0.760889 0.414795
-vt 0.71942 0.414889
-vt 0.256234 0.614787
-vt 0.195662 0.0194381
-vt 0.566678 0.452732
-vt 0.571636 0.871091
-vt 0.525396 0.460016
-vt 0.510515 0.437862
-vt 0.67436 0.869834
-vt 0.635648 0.887383
-vt 0.646917 0.850646
-vt 0.480083 0.21106
-vt 0.474831 0.303964
-vt 0.444019 0.255602
-vt 0.463172 0.363068
-vt 0.535598 0.195539
-vt 0.499045 0.267778
-vt 0.679833 0.849912
-vt 0.676981 0.361032
-vt 0.669033 0.294272
-vt 0.468213 0.158112
-vt 0.535926 0.0735076
-vt 0.524511 0.137696
-vt 0.676118 0.254765
-vt 0.641241 0.27411
-vt 0.532444 0.422893
-vt 0.488058 0.365307
-vt 0.696688 0.921404
-vt 0.661203 0.976048
-vt 0.665318 0.906098
-vt 0.695695 0.893257
-vt 0.58347 0.0876427
-vt 0.609252 0.446489
-vt 0.596249 0.411191
-vt 0.642947 0.311193
-vt 0.564997 0.296812
-vt 0.619543 0.861291
-vt 0.511544 0.334489
-vt 0.568172 0.248301
-vt 0.641154 0.443921
-vt 0.594351 0.208889
-vt 0.601307 0.931899
-vt 0.622934 0.025349
-vt 0.639924 0.0652861
-vt 0.705513 0.871818
-vt 0.599054 0.155649
-vt 0.57975 0.344201
-vt 0.653904 0.209244
-vt 0.705934 0.850437
-vt 0.0790697 0.0514584
-vt 0.0117188 0.842961
-vt 0.0214292 0.763108
-vt 0.057578 0.678219
-vt 0.0281225 0.901935
-vt 0.0639796 0.950581
-vt 0.107531 0.978025
-vt 0.654112 0.10826
-vt 0.673199 0.135465
-vt 0.638639 0.184746
-vt 0.643632 0.157248
-vt 0.682808 0.225743
-vt 0.623631 0.132307
-vt 0.678809 0.443818
-vt 0.639701 0.411353
-vt 0.0590282 0.614789
-vt 0.67795 0.414792
-vt 0.119589 0.0194391
-mtllib gear_vr_controller.mtl
-usemtl Base
-g Default
-f 48/1/1 14/2/2 1/3/3
-f 52/4/4 14/2/2 48/1/1
-f 7/5/5 8/6/6 9/7/7
-f 43/8/8 18/9/9 42/10/10
-f 18/9/11 25/11/12 42/10/10
-f 36/12/13 43/8/8 29/13/14
-f 8/6/6 7/5/5 13/14/15
-f 30/15/16 28/16/17 21/17/18
-f 23/18/19 40/19/20 19/20/21
-f 16/21/22 35/22/23 21/17/18
-f 52/4/4 50/23/24 25/11/12
-f 31/24/25 25/11/12 50/23/24
-f 10/25/26 11/26/27 3/27/28
-f 7/5/5 11/26/27 6/28/29
-f 41/29/30 19/20/21 40/19/20
-f 15/30/31 51/31/32 48/1/1
-f 50/23/24 48/1/1 51/31/32
-f 44/32/33 35/22/23 34/33/34
-f 44/32/33 21/17/18 35/22/23
-f 12/34/35 8/6/6 15/30/31
-f 31/24/25 50/23/24 32/35/36
-f 34/33/34 24/36/37 29/13/14
-f 47/37/38 8/6/6 13/14/15
-f 33/38/39 36/12/13 24/36/37
-f 2/39/40 3/27/28 11/26/27
-f 19/20/21 41/29/30 37/40/41
-f 39/41/42 37/40/41 41/29/30
-f 40/19/20 23/18/19 43/8/8
-f 29/13/14 42/10/10 32/35/36
-f 50/23/24 52/4/4 48/1/1
-f 43/8/8 42/10/10 29/13/14
-f 13/14/15 7/5/5 5/42/43
-f 32/35/36 34/33/34 29/13/14
-f 43/8/8 36/12/13 40/19/20
-f 27/43/44 40/19/20 36/12/13
-f 21/17/18 44/32/33 30/15/16
-f 10/25/26 6/28/29 11/26/27
-f 9/7/7 11/26/27 7/5/5
-f 18/9/11 43/8/8 23/18/19
-f 5/42/43 7/5/5 6/28/29
-f 31/24/25 42/10/10 25/11/12
-f 21/17/18 28/16/17 16/21/22
-f 22/44/45 28/16/17 30/15/16
-f 29/13/14 24/36/37 36/12/13
-f 24/36/37 35/22/23 33/38/39
-f 34/33/34 32/35/36 26/45/46
-f 35/22/23 24/36/37 34/33/34
-f 15/30/31 48/1/1 12/34/35
-f 34/33/34 26/45/46 44/32/33
-f 38/46/47 20/47/48 39/41/42
-f 37/40/41 39/41/42 20/47/48
-f 11/26/27 9/7/7 2/39/40
-f 16/21/22 54/48/49 35/22/23
-f 1/3/3 2/39/40 12/34/35
-f 9/7/7 12/34/35 2/39/40
-f 36/12/13 33/38/39 27/43/44
-f 15/30/31 8/6/6 47/37/38
-f 51/31/32 26/45/46 50/23/24
-f 32/35/36 50/23/24 26/45/46
-f 13/14/15 5/42/43 4/49/50
-f 31/24/25 32/35/36 42/10/10
-f 12/34/35 9/7/7 8/6/6
-f 12/34/35 48/1/1 1/3/3
-f 10/25/26 3/27/28 49/50/51
-f 28/16/17 17/51/52 16/21/22
-f 57/52/53 5/42/43 56/53/54
-f 1/54/55 49/55/56 2/56/57
-f 18/57/58 59/58/59 25/59/12
-f 25/59/12 59/58/59 52/60/60
-f 23/61/19 19/62/21 20/63/48
-f 19/62/21 37/64/41 20/63/48
-f 45/65/61 63/66/62 53/67/63
-f 33/38/39 61/68/64 27/43/44
-f 62/69/65 27/43/44 61/68/64
-f 33/38/39 35/22/23 54/48/49
-f 66/70/66 16/21/22 17/51/52
-f 27/43/44 62/69/65 46/71/67
-f 46/71/67 62/69/65 63/66/62
-f 63/66/62 45/65/61 46/71/67
-f 61/68/64 33/38/39 54/48/49
-f 17/51/52 60/72/68 66/70/66
-f 65/73/69 10/25/26 49/50/51
-f 6/28/29 10/25/26 65/73/69
-f 65/73/69 55/74/70 6/28/29
-f 64/75/71 53/67/63 63/66/62
-f 71/76/72 13/14/15 4/49/50
-f 13/14/15 71/76/72 47/37/38
-f 69/77/73 51/31/32 47/37/38
-f 51/31/32 15/30/31 47/37/38
-f 59/58/59 18/57/11 20/63/48
-f 23/61/19 20/63/48 18/57/11
-f 16/21/22 66/70/66 54/48/49
-f 58/78/74 73/79/75 1/54/55
-f 71/76/72 4/49/50 67/80/76
-f 70/81/77 67/80/76 4/49/50
-f 30/15/16 72/82/78 22/44/45
-f 68/83/79 22/44/45 72/82/78
-f 1/54/55 14/84/80 58/78/74
-f 2/56/57 49/55/56 3/85/81
-f 39/41/42 45/65/61 38/46/47
-f 53/67/63 38/46/47 45/65/61
-f 72/82/78 69/77/73 71/76/72
-f 47/37/38 71/76/72 69/77/73
-f 68/83/79 72/82/78 67/80/76
-f 71/76/72 67/80/76 72/82/78
-f 40/19/20 27/43/44 41/29/30
-f 46/71/67 41/29/30 27/43/44
-f 72/82/78 30/15/16 69/77/73
-f 44/32/33 69/77/73 30/15/16
-f 41/29/30 46/71/67 39/41/42
-f 45/65/61 39/41/42 46/71/67
-f 6/28/29 55/74/70 5/42/43
-f 56/53/54 5/42/43 55/74/70
-f 52/60/60 59/58/59 14/84/80
-f 58/78/74 14/84/80 59/58/59
-f 44/32/33 26/45/46 69/77/73
-f 51/31/32 69/77/73 26/45/46
-f 5/42/43 57/52/53 4/49/50
-f 70/81/77 4/49/50 57/52/53
-f 115/86/82 73/87/83 86/88/84
-f 118/89/85 115/86/82 86/88/84
-f 79/90/86 81/91/87 80/92/88
-f 110/93/89 109/94/90 89/95/91
-f 89/95/92 109/94/90 94/96/93
-f 104/97/94 97/98/95 110/93/89
-f 80/92/88 85/99/96 79/90/86
-f 98/100/97 91/101/98 28/16/17
-f 92/102/99 90/103/100 107/104/101
-f 88/105/102 91/101/98 103/106/103
-f 118/89/85 94/96/93 116/107/104
-f 99/108/105 116/107/104 94/96/93
-f 82/109/106 75/110/107 83/111/108
-f 79/90/86 78/112/109 83/111/108
-f 108/113/110 107/104/101 90/103/100
-f 87/114/111 115/86/82 117/115/112
-f 116/107/104 117/115/112 115/86/82
-f 111/116/113 102/117/114 103/106/103
-f 111/116/113 103/106/103 91/101/98
-f 84/118/115 87/114/111 80/92/88
-f 99/108/105 100/119/116 116/107/104
-f 102/117/114 97/98/95 93/120/117
-f 114/121/118 85/99/96 80/92/88
-f 101/122/119 93/120/117 104/97/94
-f 74/123/120 83/111/108 75/110/107
-f 90/103/100 105/124/121 108/113/110
-f 106/125/122 108/113/110 105/124/121
-f 107/104/101 110/93/89 92/102/99
-f 97/98/95 100/119/116 109/94/90
-f 116/107/104 115/86/82 118/89/85
-f 110/93/89 97/98/95 109/94/90
-f 85/99/96 77/126/123 79/90/86
-f 100/119/116 97/98/95 102/117/114
-f 110/93/89 107/104/101 104/97/94
-f 96/127/124 104/97/94 107/104/101
-f 91/101/98 98/100/97 111/116/113
-f 82/109/106 83/111/108 78/112/109
-f 81/91/87 79/90/86 83/111/108
-f 89/95/92 92/102/99 110/93/89
-f 77/126/123 78/112/109 79/90/86
-f 99/108/105 94/96/93 109/94/90
-f 91/101/98 88/105/102 28/16/17
-f 22/44/45 98/100/97 28/16/17
-f 97/98/95 104/97/94 93/120/117
-f 93/120/117 101/122/119 103/106/103
-f 102/117/114 95/128/125 100/119/116
-f 103/106/103 102/117/114 93/120/117
-f 87/114/111 84/118/115 115/86/82
-f 102/117/114 111/116/113 95/128/125
-f 38/46/47 106/125/122 20/47/48
-f 105/124/121 20/47/48 106/125/122
-f 83/111/108 74/123/120 81/91/87
-f 88/105/102 103/106/103 119/129/126
-f 73/87/83 84/118/115 74/123/120
-f 81/91/87 74/123/120 84/118/115
-f 104/97/94 96/127/124 101/122/119
-f 87/114/111 114/121/118 80/92/88
-f 117/115/112 116/107/104 95/128/125
-f 100/119/116 95/128/125 116/107/104
-f 85/99/96 76/130/127 77/126/123
-f 99/108/105 109/94/90 100/119/116
-f 84/118/115 80/92/88 81/91/87
-f 84/118/115 73/87/83 115/86/82
-f 82/109/106 49/50/51 75/110/107
-f 28/16/17 88/105/102 17/51/52
-f 57/52/53 56/53/54 77/126/123
-f 73/79/75 74/131/128 49/55/56
-f 89/132/129 94/133/93 59/58/59
-f 94/133/93 118/134/60 59/58/59
-f 92/135/99 20/63/48 90/136/100
-f 90/136/100 20/63/48 105/137/121
-f 112/138/130 53/67/63 122/139/131
-f 101/122/119 96/127/124 120/140/132
-f 121/141/133 120/140/132 96/127/124
-f 101/122/119 119/129/126 103/106/103
-f 123/142/134 17/51/52 88/105/102
-f 96/127/124 113/143/135 121/141/133
-f 113/143/135 112/138/130 122/139/131
-f 122/139/131 121/141/133 113/143/135
-f 120/140/132 119/129/126 101/122/119
-f 17/51/52 123/142/134 60/72/68
-f 65/73/69 49/50/51 82/109/106
-f 78/112/109 65/73/69 82/109/106
-f 65/73/69 78/112/109 55/74/70
-f 64/75/71 122/139/131 53/67/63
-f 125/144/136 76/130/127 85/99/96
-f 85/99/96 114/121/118 125/144/136
-f 124/145/137 114/121/118 117/115/112
-f 117/115/112 114/121/118 87/114/111
-f 59/58/59 20/63/48 89/132/92
-f 92/135/99 89/132/92 20/63/48
-f 88/105/102 119/129/126 123/142/134
-f 58/78/74 86/146/138 73/79/75
-f 125/144/136 67/80/76 76/130/127
-f 70/81/77 76/130/127 67/80/76
-f 98/100/97 22/44/45 126/147/139
-f 68/83/79 126/147/139 22/44/45
-f 73/79/75 49/55/56 1/54/55
-f 74/131/128 75/148/140 49/55/56
-f 106/125/122 38/46/47 112/138/130
-f 53/67/63 112/138/130 38/46/47
-f 126/147/139 125/144/136 124/145/137
-f 114/121/118 124/145/137 125/144/136
-f 68/83/79 67/80/76 126/147/139
-f 125/144/136 126/147/139 67/80/76
-f 107/104/101 108/113/110 96/127/124
-f 113/143/135 96/127/124 108/113/110
-f 126/147/139 124/145/137 98/100/97
-f 111/116/113 98/100/97 124/145/137
-f 108/113/110 106/125/122 113/143/135
-f 112/138/130 113/143/135 106/125/122
-f 78/112/109 77/126/123 55/74/70
-f 56/53/54 55/74/70 77/126/123
-f 118/134/60 86/146/138 59/58/59
-f 58/78/74 59/58/59 86/146/138
-f 111/116/113 124/145/137 95/128/125
-f 117/115/112 95/128/125 124/145/137
-f 77/126/123 76/130/127 57/52/53
-f 70/81/77 57/52/53 76/130/127
-
-o Touchpad
-v 0 0.011 -0.0154875
-v -0.00302146 0.011 -0.0151899
-v -0.00592681 0.011 -0.0143086
-v -0.00860439 0.011 -0.0128774
-v -0.0109513 0.011 -0.0109513
-v -0.0128774 0.011 -0.00860439
-v -0.0143086 0.011 -0.00592681
-v -0.0151899 0.011 -0.00302146
-v -0.0154875 0.011 0
-v -0.0151899 0.011 0.00302146
-v -0.0143086 0.011 0.00592681
-v -0.0128774 0.011 0.00860439
-v -0.0109513 0.011 0.0109513
-v -0.00860439 0.011 0.0128774
-v -0.00592681 0.011 0.0143086
-v -0.00302146 0.011 0.0151899
-v 0 0.011 0.0154875
-v 0.00302146 0.011 0.0151899
-v 0.00592681 0.011 0.0143086
-v 0.00860439 0.011 0.0128774
-v 0.0109513 0.011 0.0109513
-v 0.0128774 0.011 0.00860439
-v 0.0143086 0.011 0.00592681
-v 0.0151899 0.011 0.00302146
-v 0.0154875 0.011 0
-v 0.0151899 0.011 -0.00302146
-v 0.0143086 0.011 -0.00592681
-v 0.0128774 0.011 -0.00860439
-v 0.0109513 0.011 -0.0109513
-v 0.00860439 0.011 -0.0128774
-v 0.00592681 0.011 -0.0143086
-v 0.00302146 0.011 -0.0151899
-v -0.00592681 0.00775 -0.0143086
-v -0.00860439 0.00775 -0.0128774
-v -0.0109513 0.00775 -0.0109513
-v -0.0128774 0.00775 -0.00860439
-v -0.0143086 0.00775 -0.00592681
-v -0.0151899 0.00775 -0.00302146
-v -0.0154875 0.00775 0
-v -0.0151899 0.00775 0.00302146
-v -0.0143086 0.00775 0.00592681
-v -0.0128774 0.00775 0.00860439
-v -0.0109513 0.00775 0.0109513
-v -0.00860439 0.00775 0.0128774
-v -0.00592681 0.00775 0.0143086
-v -0.00302146 0.00775 0.0151899
-v 0 0.00775 0.0154875
-v 0.00302146 0.00775 0.0151899
-v 0.00592681 0.00775 0.0143086
-v 0.00860439 0.00775 0.0128774
-v 0.0109513 0.00775 0.0109513
-v 0.0128774 0.00775 0.00860439
-v 0.0143086 0.00775 0.00592681
-v 0.0151899 0.00775 0.00302146
-v 0.0154875 0.00775 0
-v 0.0151899 0.00775 -0.00302146
-v 0.0143086 0.00775 -0.00592681
-v 0.0128774 0.00775 -0.00860439
-v 0.0109513 0.00775 -0.0109513
-v 0.00860439 0.00775 -0.0128774
-v 0.00592681 0.00775 -0.0143086
-v 0.00302146 0.00775 -0.0151899
-v 0 0.00775 -0.0154875
-v -0.00302146 0.00775 -0.0151899
-vn 0 1 0
-vn -0.527988 0 -0.849252
-vn -0.582554 0 -0.812792
-vn -0.683524 0 -0.729928
-vn -0.729928 0 -0.683524
-vn 0.527988 0 0.849252
-vn 0.582554 0 0.812792
-vn 0.683524 0 0.729928
-vn 0.729928 0 0.683524
-vn -0.352162 0 -0.935939
-vn -0.412793 0 -0.910825
-vn 0.352162 0 0.935939
-vn 0.412793 0 0.910825
-vn 0.162803 0 0.986659
-vn 0.227168 0 0.973856
-vn -0.162803 0 -0.986659
-vn -0.227168 0 -0.973856
-vn -0.0328128 0 0.999462
-vn 0.0328128 0 0.999462
-vn 0.0328128 0 -0.999462
-vn -0.0328128 0 -0.999462
-vn -0.227168 0 0.973856
-vn -0.162803 0 0.986659
-vn 0.227168 0 -0.973856
-vn 0.162803 0 -0.986659
-vn -0.412793 0 0.910825
-vn -0.352162 0 0.935939
-vn 0.412793 0 -0.910825
-vn 0.352162 0 -0.935939
-vn -0.582554 0 0.812792
-vn -0.527988 0 0.849252
-vn 0.582554 0 -0.812792
-vn 0.527988 0 -0.849252
-vn -0.849252 0 0.527988
-vn -0.812792 0 0.582554
-vn -0.729928 0 0.683524
-vn -0.683524 0 0.729928
-vn 0.849252 0 -0.527988
-vn 0.812792 0 -0.582554
-vn 0.729928 0 -0.683524
-vn 0.683524 0 -0.729928
-vn -0.935939 0 0.352162
-vn -0.910825 0 0.412793
-vn 0.935939 0 -0.352162
-vn 0.910825 0 -0.412793
-vn -0.986659 0 0.162803
-vn -0.973856 0 0.227168
-vn 0.986659 0 -0.162803
-vn 0.973856 0 -0.227168
-vn -0.910825 0 -0.412793
-vn -0.935939 0 -0.352162
-vn -0.973856 0 -0.227168
-vn -0.986659 0 -0.162803
-vn 0.910825 0 0.412793
-vn 0.935939 0 0.352162
-vn 0.973856 0 0.227168
-vn 0.986659 0 0.162803
-vn -0.812792 0 -0.582554
-vn -0.849252 0 -0.527988
-vn 0.812792 0 0.582554
-vn 0.849252 0 0.527988
-vn -0.999462 0 -0.0328128
-vn -0.999462 0 0.0328128
-vn 0.999462 0 0.0328128
-vn 0.999462 0 -0.0328128
-vt 0.38852 0.824935
-vt 0.372021 0.816172
-vt 0.406406 0.83033
-vt 0.424998 0.832151
-vt 0.357534 0.804373
-vt 0.443591 0.83033
-vt 0.345608 0.789984
-vt 0.461476 0.824935
-vt 0.336698 0.773542
-vt 0.477976 0.816172
-vt 0.331158 0.755657
-vt 0.492463 0.804374
-vt 0.329252 0.737001
-vt 0.504389 0.789985
-vt 0.331158 0.718345
-vt 0.5133 0.773543
-vt 0.336697 0.700459
-vt 0.51884 0.755657
-vt 0.345607 0.684017
-vt 0.520746 0.737001
-vt 0.357533 0.669627
-vt 0.51884 0.718345
-vt 0.37202 0.657829
-vt 0.5133 0.700459
-vt 0.38852 0.649066
-vt 0.50439 0.684016
-vt 0.406406 0.643671
-vt 0.492464 0.669627
-vt 0.424998 0.641849
-vt 0.477977 0.657829
-vt 0.443591 0.64367
-vt 0.461477 0.649065
-vt 0.359933 0.834407
-vt 0.342149 0.819935
-vt 0.490064 0.639593
-vt 0.507849 0.654065
-vt 0.380192 0.845168
-vt 0.469805 0.628832
-vt 0.447837 0.622204
-vt 0.402159 0.851796
-vt 0.424998 0.619966
-vt 0.424998 0.854034
-vt 0.402159 0.622204
-vt 0.447837 0.851796
-vt 0.380191 0.628833
-vt 0.469805 0.845168
-vt 0.359933 0.639593
-vt 0.490063 0.834408
-vt 0.32749 0.671684
-vt 0.342148 0.654066
-vt 0.522506 0.802318
-vt 0.507848 0.819936
-vt 0.316448 0.691787
-vt 0.533549 0.782216
-vt 0.30933 0.713718
-vt 0.540668 0.760286
-vt 0.316449 0.782215
-vt 0.309331 0.760285
-vt 0.53355 0.691786
-vt 0.540668 0.713717
-vt 0.327491 0.802316
-vt 0.522507 0.671684
-vt 0.306354 0.737002
-vt 0.543646 0.737002
-mtllib gear_vr_controller.mtl
-usemtl Touchpad
-g Default
-f 129/149/141 130/150/141 128/151/141
-f 127/152/141 128/151/141 130/150/141
-f 130/150/141 131/153/141 127/152/141
-f 158/154/141 127/152/141 131/153/141
-f 131/153/141 132/155/141 158/154/141
-f 157/156/141 158/154/141 132/155/141
-f 132/155/141 133/157/141 157/156/141
-f 156/158/141 157/156/141 133/157/141
-f 133/157/141 134/159/141 156/158/141
-f 155/160/141 156/158/141 134/159/141
-f 134/159/141 135/161/141 155/160/141
-f 154/162/141 155/160/141 135/161/141
-f 135/161/141 136/163/141 154/162/141
-f 153/164/141 154/162/141 136/163/141
-f 136/163/141 137/165/141 153/164/141
-f 152/166/141 153/164/141 137/165/141
-f 137/165/141 138/167/141 152/166/141
-f 151/168/141 152/166/141 138/167/141
-f 138/167/141 139/169/141 151/168/141
-f 150/170/141 151/168/141 139/169/141
-f 139/169/141 140/171/141 150/170/141
-f 149/172/141 150/170/141 140/171/141
-f 140/171/141 141/173/141 149/172/141
-f 148/174/141 149/172/141 141/173/141
-f 141/173/141 142/175/141 148/174/141
-f 147/176/141 148/174/141 142/175/141
-f 142/175/141 143/177/141 147/176/141
-f 146/178/141 147/176/141 143/177/141
-f 143/177/141 144/179/141 146/178/141
-f 145/180/141 146/178/141 144/179/141
-f 130/150/142 160/181/143 131/153/144
-f 161/182/145 131/153/144 160/181/143
-f 146/178/146 176/183/147 147/176/148
-f 177/184/149 147/176/148 176/183/147
-f 129/149/150 159/185/151 130/150/142
-f 160/181/143 130/150/142 159/185/151
-f 145/180/152 175/186/153 146/178/146
-f 176/183/147 146/178/146 175/186/153
-f 144/179/154 174/187/155 145/180/152
-f 175/186/153 145/180/152 174/187/155
-f 128/151/156 190/188/157 129/149/150
-f 159/185/151 129/149/150 190/188/157
-f 143/177/158 173/189/159 144/179/154
-f 174/187/155 144/179/154 173/189/159
-f 127/152/160 189/190/161 128/151/156
-f 190/188/157 128/151/156 189/190/161
-f 142/175/162 172/191/163 143/177/158
-f 173/189/159 143/177/158 172/191/163
-f 158/154/164 188/192/165 127/152/160
-f 189/190/161 127/152/160 188/192/165
-f 141/173/166 171/193/167 142/175/162
-f 172/191/163 142/175/162 171/193/167
-f 157/156/168 187/194/169 158/154/164
-f 188/192/165 158/154/164 187/194/169
-f 140/171/170 170/195/171 141/173/166
-f 171/193/167 141/173/166 170/195/171
-f 156/158/172 186/196/173 157/156/168
-f 187/194/169 157/156/168 186/196/173
-f 138/167/174 168/197/175 139/169/176
-f 169/198/177 139/169/176 168/197/175
-f 154/162/178 184/199/179 155/160/180
-f 185/200/181 155/160/180 184/199/179
-f 139/169/176 169/198/177 140/171/170
-f 170/195/171 140/171/170 169/198/177
-f 155/160/180 185/200/181 156/158/172
-f 186/196/173 156/158/172 185/200/181
-f 137/165/182 167/201/183 138/167/174
-f 168/197/175 138/167/174 167/201/183
-f 153/164/184 183/202/185 154/162/178
-f 184/199/179 154/162/178 183/202/185
-f 136/163/186 166/203/187 137/165/182
-f 167/201/183 137/165/182 166/203/187
-f 152/166/188 182/204/189 153/164/184
-f 183/202/185 153/164/184 182/204/189
-f 133/157/190 163/205/191 134/159/192
-f 164/206/193 134/159/192 163/205/191
-f 149/172/194 179/207/195 150/170/196
-f 180/208/197 150/170/196 179/207/195
-f 132/155/198 162/209/199 133/157/190
-f 163/205/191 133/157/190 162/209/199
-f 148/174/200 178/210/201 149/172/194
-f 179/207/195 149/172/194 178/210/201
-f 131/153/144 161/182/145 132/155/198
-f 162/209/199 132/155/198 161/182/145
-f 147/176/148 177/184/149 148/174/200
-f 178/210/201 148/174/200 177/184/149
-f 135/161/202 165/211/203 136/163/186
-f 166/203/187 136/163/186 165/211/203
-f 151/168/204 181/212/205 152/166/188
-f 182/204/189 152/166/188 181/212/205
-f 134/159/192 164/206/193 135/161/202
-f 165/211/203 135/161/202 164/206/193
-f 150/170/196 180/208/197 151/168/204
-f 181/212/205 151/168/204 180/208/197
-
-o Trigger
-v 0.00736809 -0.00639162 -0.0160172
-v 0.00754595 -0.00744792 -0.0102493
-v 0.00555627 -0.00301564 -0.0178696
-v 0.004868 -0.00974427 -0.0189879
-v 0 -0.00968463 -0.0199828
-v 0 -0.0111187 -0.0170885
-v 1.06707e-018 -0.0104048 -0.00704971
-v 0.00871332 -0.00449104 -0.0134489
-v 0.00754595 -0.00153417 -0.0166485
-v 0.00435666 0.000630421 -0.0189907
-v 0 -0.00298128 -0.0189934
-v -2.13415e-018 0.00142271 -0.019848
-v 0.00435666 -0.00961251 -0.00790704
-v 0.0045098 -0.0106875 -0.0171466
-v -0.00736809 -0.00639162 -0.0160172
-v -0.00754595 -0.00744792 -0.0102493
-v -0.00555627 -0.00301564 -0.0178696
-v -0.004868 -0.00974427 -0.0189879
-v -0.00871332 -0.00449104 -0.0134489
-v -0.00754595 -0.00153417 -0.0166485
-v -0.00435666 0.000630421 -0.0189907
-v -0.00435666 -0.00961251 -0.00790704
-v -0.0045098 -0.0106875 -0.0171466
-vn 0.516079 -0.79892 -0.308851
-vn 0.475699 -0.86347 -0.167718
-vn 0 -0.896134 -0.443783
-vn 0 -0.996009 -0.0892506
-vn 0.588731 -0.0629963 -0.80587
-vn 0.474605 -0.0521618 -0.878652
-vn 0.863581 -0.306813 -0.400117
-vn 0.308966 -0.166377 -0.936407
-vn 0.706055 -0.0971262 -0.701465
-vn 0.919435 -0.285884 -0.270017
-vn 0.792968 -0.607558 -0.0455422
-vn 0 -0.0347585 -0.999396
-vn 0 -0.190515 -0.981684
-vn 0.398966 0.111307 -0.910185
-vn 0 0.146015 -0.989282
-vn 0.307972 -0.946242 0.0988904
-vn 0 -0.997481 0.0709366
-vn 0.669595 -0.558842 -0.489223
-vn -0.516079 -0.79892 -0.308851
-vn -0.475699 -0.86347 -0.167718
-vn -0.588731 -0.0629963 -0.80587
-vn -0.863581 -0.306813 -0.400117
-vn -0.474605 -0.0521618 -0.878652
-vn -0.308966 -0.166377 -0.936407
-vn -0.706055 -0.0971262 -0.701465
-vn -0.919435 -0.285884 -0.270017
-vn -0.792968 -0.607558 -0.0455422
-vn -0.398966 0.111307 -0.910185
-vn -0.307972 -0.946242 0.0988904
-vn -0.669595 -0.558842 -0.489223
-vt 0.421572 0.496062
-vt 0.421082 0.506817
-vt 0.39 0.490766
-vt 0.39 0.510712
-vt 0.448703 0.44978
-vt 0.460455 0.493442
-vt 0.441509 0.403972
-vt 0.48257 0.443454
-vt 0.501341 0.50233
-vt 0.47332 0.553913
-vt 0.39 0.439053
-vt 0.39 0.389803
-vt 0.434968 0.583667
-vt 0.39 0.594197
-vt 0.358428 0.496062
-vt 0.358918 0.506817
-vt 0.319544 0.493442
-vt 0.331297 0.44978
-vt 0.33849 0.403972
-vt 0.297429 0.443455
-vt 0.278659 0.50233
-vt 0.30668 0.553913
-vt 0.345032 0.583667
-mtllib gear_vr_controller.mtl
-usemtl Trigger
-g Default
-f 194/213/206 204/214/207 195/215/208
-f 204/214/207 196/216/209 195/215/208
-f 194/213/210 193/217/211 191/218/212
-f 200/219/213 199/220/214 193/217/211
-f 198/221/215 191/218/212 199/220/214
-f 191/218/212 193/217/211 199/220/214
-f 198/221/215 192/222/216 191/218/212
-f 201/223/217 202/224/218 200/219/213
-f 201/223/217 194/213/219 195/215/220
-f 193/217/211 201/223/217 200/219/213
-f 193/217/211 194/213/219 201/223/217
-f 204/214/207 203/225/221 196/216/209
-f 197/226/222 196/216/209 203/225/221
-f 192/222/216 204/214/207 191/218/212
-f 204/214/207 192/222/216 203/225/221
-f 204/214/207 194/213/223 191/218/212
-f 208/227/224 195/215/208 213/228/225
-f 213/228/225 195/215/208 196/216/209
-f 208/227/226 205/229/227 207/230/228
-f 211/231/229 207/230/228 210/232/230
-f 205/229/227 210/232/230 207/230/228
-f 205/229/227 209/233/231 210/232/230
-f 209/233/231 205/229/227 206/234/232
-f 201/223/217 211/231/229 202/224/218
-f 201/223/217 195/215/220 208/227/233
-f 207/230/228 211/231/229 201/223/217
-f 207/230/228 201/223/217 208/227/233
-f 213/228/225 196/216/209 212/235/234
-f 197/226/222 212/235/234 196/216/209
-f 206/234/232 205/229/227 213/228/225
-f 213/228/225 212/235/234 206/234/232
-f 213/228/225 205/229/227 208/227/235

+ 0 - 21
examples/models/obj/oculus_go_controller/LICENSE.txt

@@ -1,21 +0,0 @@
-The MIT License
-
-Copyright © 2018 @Kosso.
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.

+ 0 - 14
examples/models/obj/oculus_go_controller/oculus_go_controller.mtl

@@ -1,14 +0,0 @@
-# Color definition for Tinkercad Obj File 2015. Created by @kosso.
-
-newmtl color_10988977
-Ka 0 0 0 
-Kd 0.6549019607843137 0.6784313725490196 0.6941176470588235
-d 1.0
-illum 0.0
-
-newmtl color_14541540
-Ka 0 0 0 
-Kd 0.8666666666666667 0.8862745098039215 0.8941176470588236
-d 1.0
-illum 0.0
-

+ 0 - 7013
examples/models/obj/oculus_go_controller/oculus_go_controller.obj

@@ -1,7013 +0,0 @@
-# Object Export From Tinkercad Server 2015. Created by @kosso
-
-mtllib obj.mtl
-
-o obj_0
-v -0.0054 		0.0471 		0.0428
-v 0.0079 		0.0368 		-0.052
-v -0.0055 		0.0471 		0.0427
-v -0.0274 		0.0426 		-0.0277
-v 0.0139 		0.0293 		0.0511
-v 0.0141 		0.0291 		0.051
-v 0.014 		0.0297 		0.0506
-v 0.0141 		0.0294 		0.0506
-v 0.0057 		0.0345 		-0.0528
-v -0.0083 		-0.0466 		0.1037
-v 0.0062 		0.0344 		-0.0527
-v -0.0084 		-0.0478 		0.1025
-v 0.0128 		0.0311 		0.0519
-v -0.0089 		-0.0428 		0.106
-v 0.0024 		0.0471 		0.0428
-v 0.0023 		0.0471 		0.0429
-v 0.0005 		0.047 		0.0435
-v 0.0128 		0.0309 		0.0521
-v 0.0096 		0.0395 		-0.0509
-v 0.0141 		0.0306 		0.0495
-v -0.0015 		0.047 		0.0438
-v 0.0002 		0.047 		0.0436
-v 0.0128 		0.0321 		0.0509
-v 0.0101 		0.0371 		-0.0511
-v 0.0126 		0.031 		0.0522
-v -0.0095 		-0.0442 		0.1047
-v -0.0017 		0.047 		0.0437
-v 0.0112 		0.0326 		0.0532
-v 0.0113 		0.0325 		0.0531
-v 0.0103 		0.0346 		-0.0513
-v -0.0243 		0.0489 		-0.0338
-v -0.0099 		-0.0456 		0.1032
-v -0.0251 		0.0482 		-0.0317
-v -0.01 		-0.0471 		0.1018
-v 0.0127 		0.0312 		0.0519
-v 0.0127 		0.0313 		0.0519
-v -0.0248 		0.0488 		-0.0316
-v -0.0244 		0.0489 		-0.0335
-v 0.0122 		0.0374 		-0.0501
-v 0.0048 		0.0393 		-0.0524
-v -0.0035 		0.047 		0.0435
-v 0.0041 		0.0405 		-0.0523
-v 0.0014 		-0.0557 		0.0782
-v -0.0015 		-0.056 		0.078
-v -0.0044 		-0.0557 		0.0782
-v 0.0021 		0.0425 		-0.0522
-v 0.0033 		0.0448 		-0.0513
-v -0.0045 		-0.0471 		0.1053
-v 0.0047 		0.0437 		-0.0514
-v -0.0048 		-0.0476 		0.1047
-v -0.0041 		0.0015 		0.0122
-v -0.0015 		-0.0553 		0.0754
-v 0.0015 		-0.055 		0.0757
-v -0.0035 		0.0014 		0.0121
-v -0.0049 		-0.0482 		0.1041
-v 0.0026 		0.0481 		-0.0502
-v 0.0142 		0.0377 		-0.0489
-v -0.0248 		0.0488 		-0.0313
-v -0.0037 		0.047 		0.0434
-v -0.0217 		0.0489 		-0.0322
-v -0.0218 		0.0488 		-0.0311
-v 0.0116 		0.0403 		-0.0498
-v 0.0017 		-0.0541 		0.0731
-v -0.0015 		-0.0543 		0.0729
-v 0.0135 		0.0409 		-0.0486
-v -0.0254 		0.0481 		-0.0295
-v -0.005 		-0.0488 		0.1035
-v 0.0044 		0.047 		-0.0503
-v 0.0153 		0.0415 		-0.0472
-v -0.0064 		-0.0466 		0.1049
-v 0.0042 		-0.055 		0.079
-v 0.0161 		0.0378 		-0.0475
-v -0.0066 		-0.0475 		0.104
-v 0.0113 		0.0326 		0.053
-v -0.0067 		-0.0484 		0.1031
-v 0.017 		0.042 		-0.0457
-v 0.0045 		-0.0542 		0.0764
-v -0.0109 		0.0355 		0.0544
-v 0.0079 		0.0355 		0.0544
-v 0.0028 		0.0374 		0.0562
-v 0.0024 		0.0375 		0.0563
-v 0.0024 		0.0374 		0.0562
-v 0.0048 		-0.0532 		0.0739
-v -0.0054 		0.0375 		0.0563
-v 0.0093 		0.0332 		-0.0518
-v 0.0015 		0.0493 		-0.0498
-v -0.0054 		0.0374 		0.0562
-v 0.0102 		0.0328 		-0.0515
-v 0.0124 		0.0345 		-0.0503
-v -0.025 		0.0488 		-0.0294
-v -0.0015 		0.0379 		0.0566
-v -0.0015 		0.0374 		0.0562
-v -0.0133 		-0.051 		0.086
-v -0.0034 		0.0014 		0.0121
-v -0.025 		0.0488 		-0.0291
-v 0.0113 		0.0334 		0.0522
-v -0.0015 		0.0013 		0.012
-v -0.0022 		0.0013 		0.0121
-v 0.0112 		0.0326 		0.0532
-v 0.0098 		0.0338 		0.0539
-v -0.0015 		-0.0022 		0.017
-v 0.0112 		0.0327 		0.053
-v 0.0112 		0.0327 		0.053
-v -0.0002 		0.0014 		0.0121
-v 0.0005 		0.0014 		0.0121
-v 0.0005 		0.0014 		0.0121
-v 0.0005 		-0.0016 		0.0164
-v -0.0058 		0.0374 		0.0562
-v 0.0024 		0.0018 		0.0123
-v 0.0017 		0.0016 		0.0122
-v 0.0024 		0.0018 		0.0123
-v 0.0097 		0.0345 		0.0534
-v 0.0096 		0.034 		0.0541
-v -0.0015 		0.0506 		-0.0489
-v 0.0091 		0.0343 		0.0543
-v 0.0096 		0.034 		0.0541
-v 0.0097 		0.0339 		0.054
-v 0.0005 		0.0378 		0.0565
-v 0.0004 		0.0374 		0.0562
-v -0.0035 		0.0378 		0.0565
-v -0.0034 		0.0374 		0.0562
-v 0.0096 		0.034 		0.054
-v -0.0194 		0.0161 		0.0159
-v -0.0197 		0.0171 		0.0165
-v 0.002 		0.0492 		-0.0483
-v -0.0015 		0.0493 		-0.0489
-v -0.0188 		0.015 		0.0153
-v -0.0045 		0.0492 		-0.0484
-v -0.0198 		0.017 		0.0164
-v -0.019 		0.0149 		0.0152
-v -0.0177 		0.0131 		0.0142
-v -0.018 		0.0129 		0.014
-v -0.0222 		0.0488 		-0.0288
-v -0.0224 		0.0487 		-0.0272
-v 0.0029 		0.0493 		-0.0496
-v 0.0187 		0.0179 		0.0368
-v -0.0212 		0.0283 		0.0229
-v -0.0048 		-0.0444 		0.1071
-v -0.0055 		-0.0451 		0.1064
-v -0.0211 		0.0238 		0.0203
-v -0.0211 		0.0261 		0.0216
-v -0.006 		-0.0458 		0.1057
-v -0.0213 		0.0237 		0.0203
-v -0.0214 		0.0261 		0.0216
-v -0.021 		0.0221 		0.0194
-v -0.0224 		0.0487 		-0.0272
-v -0.0202 		0.0193 		0.0177
-v -0.0208 		0.0215 		0.019
-v -0.0205 		0.0192 		0.0177
-v -0.021 		0.0214 		0.019
-v -0.0068 		-0.0434 		0.1069
-v 0.0057 		-0.0454 		0.0629
-v 0.0051 		-0.0456 		0.0627
-v -0.0255 		0.0477 		-0.0273
-v -0.0255 		0.0477 		-0.0273
-v 0.0062 		-0.0452 		0.0631
-v 0.008 		-0.0444 		0.0639
-v -0.0255 		0.0478 		-0.0273
-v -0.0075 		-0.0444 		0.1059
-v -0.0249 		0.0487 		-0.0272
-v 0.0084 		-0.0442 		0.0641
-v 0.0097 		-0.0434 		0.0649
-v 0.0088 		-0.0439 		0.0644
-v 0.0113 		-0.0422 		0.0661
-v 0.0128 		-0.0409 		0.0674
-v 0.0116 		-0.042 		0.0663
-v 0.0114 		-0.0421 		0.0662
-v 0.0141 		-0.0395 		0.0688
-v 0.014 		-0.0396 		0.0687
-v 0.0138 		-0.0397 		0.0685
-v 0.0153 		-0.0379 		0.0704
-v 0.0163 		-0.0362 		0.0721
-v 0.0161 		-0.0366 		0.0717
-v 0.0158 		-0.037 		0.0713
-v -0.0214 		0.0248 		0.027
-v -0.0224 		0.0487 		-0.0272
-v -0.0213 		0.0252 		0.0272
-v 0.0171 		-0.0344 		0.0739
-v 0.0178 		-0.0326 		0.0757
-v 0.0175 		-0.0333 		0.075
-v 0.0173 		-0.0339 		0.0744
-v 0.0183 		-0.0307 		0.0776
-v -0.0213 		0.0225 		0.0255
-v -0.0213 		0.0225 		0.0255
-v -0.0257 		0.0478 		-0.0273
-v -0.0213 		0.0229 		0.0258
-v 0.0186 		-0.0287 		0.0795
-v -0.0251 		0.0487 		-0.0272
-v 0.0184 		-0.03 		0.0783
-v 0.0183 		-0.0304 		0.0779
-v -0.021 		0.0203 		0.0241
-v 0.0187 		-0.0268 		0.0815
-v 0.0186 		-0.0248 		0.0835
-v -0.0114 		-0.0529 		0.0842
-v -0.0214 		0.0225 		0.0255
-v -0.0065 		-0.0375 		0.1095
-v -0.0211 		0.0202 		0.0241
-v -0.008 		-0.0385 		0.1085
-v -0.0224 		0.0487 		-0.0272
-v -0.021 		0.0202 		0.0241
-v -0.0092 		-0.0397 		0.1073
-v -0.0098 		-0.0537 		0.0888
-v -0.0199 		0.0159 		0.0213
-v -0.0102 		-0.0412 		0.1059
-v -0.008 		-0.055 		0.0875
-v -0.02 		0.0158 		0.0213
-v -0.0192 		0.0143 		0.0202
-v -0.0059 		-0.056 		0.0866
-v -0.019 		0.0138 		0.02
-v -0.0089 		-0.0363 		0.1086
-v -0.0224 		0.0487 		-0.0272
-v -0.0226 		0.0502 		-0.0258
-v -0.0198 		0.0158 		0.0212
-v -0.0191 		0.0137 		0.0199
-v -0.0226 		0.0487 		-0.0258
-v -0.0226 		0.0487 		-0.0258
-v -0.019 		0.0137 		0.0199
-v -0.0183 		0.0123 		0.019
-v -0.018 		0.0118 		0.0187
-v -0.018 		0.0118 		0.0187
-v -0.0107 		-0.0534 		0.0865
-v -0.022 		0.0486 		-0.0218
-v -0.0217 		0.0486 		-0.0194
-v 0.0048 		0.0492 		-0.0478
-v -0.0086 		-0.0548 		0.0851
-v -0.0181 		0.0118 		0.0187
-v -0.0064 		-0.0559 		0.084
-v -0.0179 		0.0291 		-0.0488
-v -0.0186 		0.0284 		-0.0483
-v -0.0191 		0.0277 		-0.0478
-v 0.0145 		0.0343 		-0.0491
-v -0.0201 		0.0265 		-0.0469
-v -0.0215 		0.0248 		0.027
-v -0.0092 		-0.0544 		0.0826
-v 0.0142 		0.0309 		-0.0494
-v -0.0068 		-0.0555 		0.0815
-v -0.0213 		0.0246 		-0.0455
-v -0.0214 		0.0245 		-0.0455
-v -0.0214 		0.0247 		-0.0455
-v -0.0205 		0.018 		0.0226
-v -0.0205 		0.018 		0.0227
-v -0.0212 		0.0248 		-0.0457
-v -0.0203 		0.0262 		-0.0467
-v -0.0206 		0.018 		0.0226
-v -0.0219 		0.0228 		-0.0444
-v -0.0228 		0.0237 		-0.0438
-v -0.0214 		0.0159 		0.0348
-v -0.0211 		0.014 		0.0329
-v -0.0206 		0.0121 		0.031
-v -0.0104 		-0.0377 		0.1072
-v -0.02 		0.0103 		0.0291
-v -0.0191 		0.0085 		0.0273
-v -0.0181 		0.0068 		0.0257
-v 0.0164 		0.0341 		-0.0478
-v -0.0173 		0.0099 		0.0048
-v -0.0122 		0.0063 		0.0103
-v -0.0124 		0.0065 		0.0104
-v 0.0161 		0.0303 		-0.0481
-v -0.0049 		-0.0555 		0.0915
-v -0.0107 		0.0055 		0.0098
-v -0.0125 		0.0063 		0.0103
-v -0.0073 		-0.055 		0.0899
-v -0.0218 		0.0234 		-0.0447
-v -0.0054 		-0.0559 		0.0891
-v 0.0182 		0.0338 		-0.0463
-v 0.0179 		0.0296 		-0.0467
-v -0.0153 		0.0095 		0.0121
-v -0.0155 		0.0092 		0.012
-v -0.0151 		0.0315 		-0.0505
-v -0.0164 		0.0106 		0.0128
-v -0.0167 		0.0111 		0.0131
-v -0.0165 		0.0304 		-0.0497
-v -0.0169 		0.0301 		-0.0495
-v -0.0127 		-0.0503 		0.0922
-v -0.0168 		0.011 		0.013
-v -0.0139 		0.008 		0.0113
-v 0.0179 		0.038 		-0.046
-v -0.0151 		0.0315 		-0.0505
-v -0.0141 		0.0077 		0.0111
-v -0.0114 		-0.0522 		0.0904
-v -0.0151 		0.0315 		-0.0505
-v -0.0149 		-0.0474 		0.0925
-v -0.0138 		-0.0497 		0.0903
-v -0.0124 		-0.0517 		0.0882
-v 0.0149 		0.0491 		-0.0401
-v 0.0136 		0.0491 		-0.0415
-v -0.016 		-0.0464 		0.0906
-v -0.0149 		-0.0488 		0.0882
-v 0.017 		0.0465 		-0.0437
-v 0.0182 		0.0471 		-0.0419
-v -0.0049 		-0.0419 		0.1084
-v -0.0097 		0.0034 		0.0134
-v -0.0091 		0.0031 		0.0131
-v -0.0091 		0.0031 		0.0132
-v -0.0059 		-0.0426 		0.1077
-v 0.0179 		0.0491 		-0.0406
-v -0.0073 		0.0023 		0.0127
-v -0.0073 		0.0023 		0.0127
-v -0.0073 		0.0023 		0.0127
-v 0.0183 		-0.0229 		0.0854
-v 0.0183 		-0.0232 		0.0851
-v 0.0184 		-0.0236 		0.0847
-v -0.0092 		0.0031 		0.0132
-v 0.0062 		0.0363 		0.0552
-v 0.0178 		-0.021 		0.0873
-v 0.0043 		0.037 		0.0559
-v 0.0171 		-0.0191 		0.0891
-v 0.0173 		-0.0197 		0.0886
-v 0.0175 		-0.0202 		0.0881
-v 0.0163 		-0.0174 		0.0909
-v 0.0153 		-0.0157 		0.0926
-v 0.0158 		-0.0166 		0.0917
-v 0.0161 		-0.017 		0.0913
-v 0.0141 		-0.0141 		0.0942
-v 0.0128 		-0.0127 		0.0956
-v 0.0138 		-0.0138 		0.0945
-v 0.014 		-0.014 		0.0943
-v -0.0073 		0.0019 		0.0132
-v -0.0073 		0.0023 		0.0127
-v -0.0143 		-0.0461 		0.0964
-v -0.0137 		-0.0483 		0.0942
-v -0.0155 		-0.0451 		0.0949
-v -0.0073 		0.037 		0.0559
-v -0.0073 		0.037 		0.0559
-v -0.0216 		0.0503 		-0.0329
-v 0.0043 		0.0023 		0.0127
-v 0.0043 		0.0023 		0.0127
-v 0.0043 		0.0023 		0.0127
-v -0.0092 		0.0363 		0.0552
-v 0.0113 		-0.0113 		0.0969
-v 0.0114 		-0.0115 		0.0968
-v 0.0116 		-0.0116 		0.0967
-v 0.0097 		-0.0102 		0.0981
-v -0.0216 		0.0489 		-0.033
-v -0.0216 		0.0489 		-0.033
-v -0.011 		0.0355 		0.0544
-v -0.0215 		0.0489 		-0.0331
-v 0.0088 		-0.0097 		0.0986
-v 0.0043 		0.0023 		0.0127
-v 0.008 		0.0355 		0.0544
-v 0.0054 		-0.0456 		0.0627
-v -0.0015 		0.0379 		0.0568
-v -0.0035 		-0.002 		0.0169
-v 0.0005 		0.0378 		0.0567
-v 0.0024 		0.0375 		0.0564
-v -0.0054 		0.0375 		0.0564
-v -0.0035 		0.0378 		0.0567
-v 0.0024 		-0.0017 		0.0172
-v 0.0086 		-0.0441 		0.0642
-v 0.0115 		-0.0421 		0.0662
-v 0.014 		-0.0396 		0.0687
-v -0.0216 		0.0501 		-0.0186
-v -0.0169 		0.01 		0.0175
-v 0.016 		-0.0368 		0.0715
-v -0.0058 		-0.0397 		0.1091
-v -0.0216 		0.0485 		-0.0187
-v -0.0215 		0.0485 		-0.0186
-v -0.007 		-0.0406 		0.1082
-v 0.0175 		-0.0336 		0.0747
-v 0.0184 		-0.0303 		0.078
-v -0.017 		0.0099 		0.0175
-v -0.008 		-0.0416 		0.1072
-v -0.0168 		0.0099 		0.0175
-v -0.0215 		0.0351 		0.0172
-v -0.0159 		0.0087 		0.0167
-v -0.0155 		0.0082 		0.0164
-v -0.0156 		0.0083 		0.0164
-v -0.0141 		0.0066 		0.0154
-v -0.0145 		0.0071 		0.0157
-v -0.0142 		0.0067 		0.0154
-v 0.0062 		0.0364 		0.0552
-v 0.0184 		-0.0233 		0.085
-v -0.013 		0.0057 		0.0148
-v 0.0044 		0.037 		0.0559
-v -0.0126 		0.0053 		0.0146
-v -0.0214 		0.0489 		-0.0334
-v -0.0073 		0.037 		0.0559
-v 0.0175 		-0.02 		0.0883
-v -0.0142 		0.0067 		0.0154
-v -0.0092 		0.0364 		0.0552
-v -0.0126 		0.0053 		0.0145
-v -0.0125 		0.0053 		0.0145
-v 0.016 		-0.0168 		0.0915
-v -0.0114 		0.0045 		0.014
-v -0.0109 		0.0041 		0.0138
-v 0.014 		-0.014 		0.0943
-v -0.0109 		0.0041 		0.0138
-v -0.0109 		0.0041 		0.0138
-v 0.0115 		-0.0115 		0.0968
-v -0.0214 		0.0485 		-0.0183
-v 0.0086 		-0.0095 		0.0988
-v 0.0053 		-0.0492 		0.0669
-v -0.0156 		0.0082 		0.0164
-v 0.0054 		-0.0474 		0.0648
-v -0.0214 		0.0485 		-0.0182
-v -0.0167 		-0.0438 		0.0932
-v -0.0124 		-0.0335 		0.1064
-v -0.017 		0.0052 		0.0241
-v -0.0156 		0.0038 		0.0226
-v -0.0114 		-0.0294 		0.1076
-v -0.019 		0.0378 		-0.0475
-v -0.0133 		-0.0313 		0.1057
-v 0.008 		-0.0092 		0.0991
-v 0.0084 		-0.0094 		0.0989
-v -0.011 		-0.0092 		0.0991
-v -0.0114 		-0.0094 		0.0989
-v 0.0062 		-0.0083 		0.1
-v 0.0044 		-0.0077 		0.1006
-v 0.0051 		-0.0079 		0.1003
-v 0.0156 		0.049 		-0.0394
-v 0.0056 		-0.0081 		0.1002
-v 0.0024 		-0.0072 		0.1011
-v 0.0005 		-0.0069 		0.1014
-v 0.0017 		-0.0071 		0.1012
-v -0.0114 		-0.0479 		0.0991
-v 0.0022 		-0.0072 		0.1011
-v -0.021 		0.0489 		-0.0341
-v -0.0015 		-0.0068 		0.1015
-v -0.0035 		-0.0069 		0.1014
-v -0.0054 		-0.0072 		0.1011
-v 0.0053 		-0.0019 		-0.0314
-v -0.0129 		-0.0471 		0.0978
-v -0.0051 		-0.0072 		0.1011
-v -0.0047 		-0.0071 		0.1012
-v -0.0073 		-0.0077 		0.1006
-v -0.0124 		-0.049 		0.0959
-v 0.0057 		-0.0019 		-0.0316
-v -0.0092 		-0.0083 		0.1
-v -0.0086 		-0.0081 		0.1002
-v -0.0081 		-0.0079 		0.1003
-v -0.0115 		-0.0508 		0.0941
-v 0.008 		-0.001 		-0.0313
-v -0.005 		-0.0071 		0.1012
-v -0.0059 		-0.0319 		0.1107
-v 0.0068 		-0.0014 		-0.0316
-v -0.0102 		-0.0511 		0.0959
-v 0.008 		-0.0007 		-0.0313
-v -0.008 		-0.0328 		0.1097
-v -0.0092 		-0.0526 		0.0944
-v -0.0084 		-0.008 		0.1003
-v 0.0062 		-0.0017 		-0.0313
-v 0.0124 		0.0015 		-0.0311
-v 0.0124 		0.0015 		-0.0312
-v -0.0098 		-0.0341 		0.1085
-v 0.0125 		0.0015 		-0.0312
-v -0.008 		-0.0538 		0.0932
-v 0.0054 		-0.008 		0.1003
-v 0.002 		-0.0071 		0.1012
-v -0.0064 		-0.0293 		0.1106
-v -0.0065 		-0.0548 		0.0922
-v 0.0115 		0.001 		-0.0314
-v -0.0086 		-0.0304 		0.1095
-v 0.0124 		0.0015 		-0.0311
-v 0.0124 		0.0015 		-0.0311
-v -0.0107 		-0.0318 		0.1081
-v -0.0104 		-0.0525 		0.0925
-v -0.0089 		-0.0539 		0.091
-v 0.0125 		0.0015 		-0.0313
-v -0.0049 		-0.0113 		0.1048
-v -0.0068 		-0.0268 		0.1103
-v -0.0083 		-0.0122 		0.1039
-v -0.0092 		-0.0279 		0.1091
-v -0.005 		-0.0091 		0.103
-v -0.0084 		-0.01 		0.1021
-v 0.005 		-0.0521 		0.0715
-v 0.008 		-0.0507 		0.0729
-v 0.0053 		-0.0122 		0.1039
-v 0.002 		-0.0113 		0.1048
-v 0.0052 		-0.0507 		0.0692
-v -0.0182 		0.0415 		-0.0472
-v 0.0082 		-0.0493 		0.0706
-v -0.0049 		-0.0368 		0.1103
-v 0.0172 		0.0059 		-0.031
-v 0.0176 		0.0063 		-0.0307
-v 0.0164 		0.0049 		-0.0308
-v -0.0199 		0.042 		-0.0457
-v -0.0054 		-0.0343 		0.1106
-v 0.0126 		0.0017 		-0.0312
-v -0.0073 		-0.0352 		0.1097
-v 0.0134 		0.0024 		-0.0313
-v -0.0214 		0.0424 		-0.044
-v 0.0163 		0.0051 		-0.0308
-v -0.0142 		0.0025 		0.0213
-v 0.0068 		-0.0538 		0.0802
-v -0.0126 		0.0013 		0.0202
-v -0.0109 		0.0003 		0.0191
-v -0.003 		-0.0482 		0.1046
-v -0.012 		0.0009 		0.0198
-v -0.0031 		-0.0485 		0.1044
-v -0.0103 		0 		0.0188
-v -0.0032 		-0.0488 		0.1041
-v -0.0092 		-0.0005 		0.0183
-v -0.0033 		-0.0491 		0.1038
-v -0.019 		0.0303 		-0.0481
-v -0.018 		0.0379 		0.0353
-v -0.0015 		-0.011 		0.1051
-v 0.0072 		-0.0529 		0.0777
-v 0.0054 		-0.01 		0.1021
-v -0.0059 		-0.053 		0.0973
-v 0.002 		-0.0091 		0.103
-v 0.0076 		-0.0519 		0.0753
-v -0.0049 		-0.0537 		0.0966
-v -0.0015 		-0.0088 		0.1034
-v -0.008 		-0.0525 		0.0963
-v -0.007 		-0.0535 		0.0953
-v -0.0193 		0.0341 		-0.0478
-v -0.0058 		-0.0544 		0.0945
-v 0.0183 		0.0069 		-0.0309
-v -0.0208 		0.0296 		-0.0467
-v 0.005 		-0.055 		0.0875
-v -0.0211 		0.0338 		-0.0463
-v 0.0068 		-0.0537 		0.0888
-v 0.0056 		-0.0548 		0.0851
-v -0.0227 		0.0335 		-0.0447
-v 0.0077 		-0.0534 		0.0865
-v 0.008 		-0.0005 		-0.0335
-v -0.0242 		0.0332 		-0.043
-v 0.0062 		-0.0544 		0.0826
-v 0.008 		-0.0001 		-0.0347
-v -0.0208 		0.038 		-0.046
-v -0.0224 		0.038 		-0.0444
-v -0.0238 		0.0381 		-0.0426
-v 0.005 		-0.0538 		0.0932
-v 0.0062 		-0.0526 		0.0944
-v -0.0251 		0.038 		-0.0407
-v 0.0072 		-0.0511 		0.0959
-v -0.0262 		0.0379 		-0.0388
-v 0.0164 		0.0076 		-0.0371
-v 0.0159 		0.0067 		-0.0368
-v 0.0161 		0.006 		-0.0351
-v -0.011 		-0.0496 		0.0975
-v -0.0083 		-0.049 		0.1013
-v -0.008 		-0.0501 		0.1002
-v -0.0099 		-0.0485 		0.1003
-v -0.0224 		0.029 		-0.0451
-v -0.0095 		-0.0499 		0.0989
-v -0.0238 		0.0284 		-0.0434
-v -0.0089 		-0.0513 		0.0975
-v -0.0015 		-0.0491 		0.1039
-v 0.0122 		0.0026 		-0.0354
-v 0.0124 		0.0029 		-0.0355
-v -0.0251 		0.0278 		-0.0416
-v 0.0122 		0.0027 		-0.0354
-v 0.0121 		0.0026 		-0.0354
-v 0.0163 		0.0053 		-0.033
-v 0.0124 		0.0019 		-0.0332
-v -0.006 		-0.051 		0.1005
-v -0.0262 		0.0273 		-0.0397
-v -0.0055 		-0.0517 		0.0998
-v -0.008 		-0.0168 		0.1068
-v -0.0048 		-0.0523 		0.0991
-v -0.019 		0.0359 		0.034
-v -0.0082 		-0.0144 		0.1054
-v -0.0189 		0.036 		0.0341
-v -0.018 		0.0378 		0.0352
-v -0.019 		0.0358 		0.034
-v -0.0075 		-0.0512 		0.0991
-v -0.0068 		-0.0522 		0.0981
-v -0.0181 		0.0379 		0.0353
-v -0.0191 		0.0359 		0.034
-v -0.0047 		-0.0184 		0.1088
-v -0.0198 		0.034 		0.0328
-v -0.0198 		0.0338 		0.0327
-v -0.0205 		0.0316 		0.0313
-v -0.0199 		0.0338 		0.0327
-v 0.0059 		-0.0539 		0.091
-v -0.021 		0.0294 		0.0299
-v -0.0205 		0.0316 		0.0313
-v -0.021 		0.0294 		0.0299
-v -0.0206 		0.0316 		0.0313
-v -0.0211 		0.0294 		0.0299
-v 0.0074 		-0.0525 		0.0925
-v 0.005 		-0.0168 		0.1068
-v -0.02 		0.0338 		0.0327
-v -0.0213 		0.0271 		0.0284
-v -0.0213 		0.0271 		0.0284
-v -0.0214 		0.0271 		0.0284
-v 0.0052 		-0.0144 		0.1054
-v 0.005 		-0.0525 		0.0963
-v 0.0017 		-0.0184 		0.1088
-v 0.008 		-0.0496 		0.0975
-v -0.0015 		-0.0181 		0.1091
-v -0.0049 		-0.0494 		0.1029
-v -0.0048 		-0.05 		0.1023
-v -0.0045 		-0.0505 		0.1018
-v -0.0181 		0.029 		0.0478
-v -0.019 		0.0276 		0.0464
-v -0.0191 		0.0273 		0.0462
-v -0.02 		0.0255 		0.0444
-v -0.0198 		0.0259 		0.0447
-v -0.0066 		-0.0493 		0.1022
-v -0.0206 		0.0237 		0.0425
-v -0.021 		0.0223 		0.0411
-v -0.0211 		0.0218 		0.0406
-v -0.0214 		0.0199 		0.0387
-v -0.0064 		-0.0502 		0.1013
-v -0.0213 		0.0204 		0.0393
-v -0.0215 		0.0185 		0.0374
-v -0.0215 		0.0179 		0.0367
-v -0.0125 		0.0444 		0.0393
-v 0.0096 		0.0009 		-0.0348
-v 0.005 		-0.0501 		0.1002
-v 0.0057 		-0.0017 		-0.0316
-v 0.0124 		0.0015 		-0.0313
-v 0.0124 		0.0015 		-0.0313
-v -0.0255 		0.0329 		-0.0412
-v -0.0266 		0.0326 		-0.0392
-v 0.0129 		0.0019 		-0.0313
-v 0.0053 		-0.049 		0.1013
-v 0.0059 		-0.0513 		0.0975
-v 0.0065 		-0.0499 		0.0989
-v 0.0181 		0.007 		-0.0309
-v 0.0069 		-0.0485 		0.1003
-v 0.0156 		0.0504 		-0.0394
-v 0.0171 		0.049 		-0.0362
-v 0.0173 		0.0489 		-0.0356
-v 0.0084 		-0.0477 		0.0684
-v 0.0113 		-0.0457 		0.0703
-v -0.0275 		0.0323 		-0.0372
-v 0.0061 		0.0041 		0.009
-v -0.0015 		-0.0473 		0.1055
-v 0.0018 		-0.016 		0.1076
-v -0.0283 		0.0319 		-0.0351
-v 0.0137 		-0.0433 		0.0727
-v -0.0015 		-0.0157 		0.1079
-v -0.0015 		-0.0568 		0.0858
-v 0.0008 		-0.0566 		0.086
-v -0.0048 		-0.016 		0.1076
-v -0.0199 		0.0465 		-0.0437
-v 0.0019 		-0.0136 		0.1063
-v -0.0015 		-0.0133 		0.1066
-v -0.0018 		-0.0473 		0.1055
-v -0.0037 		-0.0566 		0.086
-v -0.0021 		-0.0474 		0.1054
-v -0.0024 		-0.0476 		0.1053
-v -0.0026 		-0.0477 		0.1051
-v -0.0028 		-0.0479 		0.1049
-v -0.0211 		0.0471 		-0.0419
-v 0.001 		-0.0565 		0.0834
-v -0.0015 		-0.0567 		0.0832
-v -0.004 		-0.0565 		0.0834
-v 0.018 		0.0489 		-0.0341
-v -0.0223 		0.0476 		-0.04
-v 0.0157 		-0.0405 		0.0756
-v -0.0206 		0.0491 		-0.0409
-v -0.0049 		-0.0136 		0.1063
-v 0.0086 		-0.046 		0.0662
-v 0.0079 		0.0051 		0.0096
-v 0.0114 		-0.044 		0.0682
-v 0.006 		0.0045 		0.0093
-v -0.0175 		0.0491 		-0.0406
-v -0.0176 		0.0491 		-0.0404
-v 0.0139 		-0.0415 		0.0707
-v -0.0214 		0.049 		-0.0398
-v -0.0232 		0.048 		-0.038
-v -0.0015 		-0.0453 		0.107
-v -0.0218 		0.049 		-0.0393
-v 0.0159 		-0.0387 		0.0735
-v -0.0021 		-0.0454 		0.1069
-v -0.0045 		0.0428 		0.0385
-v 0.0012 		-0.0562 		0.0808
-v -0.0027 		-0.0456 		0.1068
-v -0.0015 		-0.0565 		0.0806
-v -0.0045 		0.0428 		0.0385
-v -0.0032 		-0.0458 		0.1065
-v -0.0117 		0.0428 		0.0385
-v -0.0141 		0.043 		0.0385
-v -0.0117 		0.0428 		0.0385
-v -0.0037 		-0.0462 		0.1062
-v -0.0042 		-0.0562 		0.0808
-v -0.0042 		-0.0466 		0.1058
-v -0.0186 		0.049 		-0.0394
-v -0.0188 		0.049 		-0.0388
-v -0.0078 		0.0428 		0.0384
-v -0.0061 		0.0428 		0.0384
-v -0.0061 		0.0428 		0.0384
-v -0.0097 		0.0428 		0.0384
-v -0.0096 		0.0428 		0.0384
-v -0.0078 		0.0428 		0.0384
-v -0.0228 		0.0427 		-0.0422
-v -0.0126 		0.0444 		0.0394
-v -0.0109 		0.0455 		0.0402
-v -0.024 		0.043 		-0.0403
-v 0.0029 		-0.056 		0.0866
-v -0.0155 		0.0414 		0.0376
-v -0.0155 		0.0414 		0.0376
-v -0.0156 		0.0414 		0.0375
-v -0.0156 		0.0414 		0.0376
-v -0.0251 		0.0431 		-0.0384
-v -0.0168 		0.0398 		0.0365
-v -0.0168 		0.0397 		0.0365
-v 0.0034 		-0.0559 		0.084
-v -0.0169 		0.0397 		0.0364
-v 0.0255 		0.0397 		-0.028
-v -0.017 		0.0397 		0.0365
-v -0.026 		0.0432 		-0.0363
-v 0.0246 		0.0424 		-0.0277
-v 0.0237 		0.0449 		-0.0276
-v 0.0237 		0.045 		-0.0275
-v 0.0248 		0.0415 		-0.0278
-v 0.0248 		0.0416 		-0.0278
-v 0.0038 		-0.0555 		0.0815
-v 0.0245 		0.0424 		-0.0277
-v 0.0227 		0.0478 		-0.0273
-v -0.0015 		-0.0561 		0.0909
-v 0.0003 		-0.056 		0.091
-v -0.0266 		0.0431 		-0.0342
-v 0.002 		-0.0555 		0.0915
-v -0.0032 		-0.056 		0.091
-v 0.0005 		-0.0564 		0.0885
-v -0.0271 		0.0378 		-0.0368
-v -0.0015 		-0.0566 		0.0884
-v -0.0279 		0.0376 		-0.0347
-v 0.0025 		-0.0559 		0.0891
-v -0.014 		0.0428 		0.0384
-v -0.0142 		0.0428 		0.0384
-v -0.0141 		0.0428 		0.0384
-v -0.0142 		0.043 		0.0386
-v 0.0043 		-0.055 		0.0899
-v -0.0035 		-0.0564 		0.0885
-v -0.0284 		0.0373 		-0.0325
-v 0.0003 		-0.0491 		0.1038
-v 0.0002 		-0.0488 		0.1041
-v 0.0002 		-0.0485 		0.1044
-v 0 		-0.0482 		0.1046
-v 0.0186 		0.0503 		-0.0329
-v 0.0186 		0.0489 		-0.033
-v 0.0187 		0.0489 		-0.0322
-v 0.0185 		0.0489 		-0.0331
-v 0.0221 		0.0487 		-0.0272
-v -0.0287 		0.037 		-0.0304
-v 0.0199 		0.0237 		-0.0438
-v 0.0186 		0.0501 		-0.0186
-v 0.0189 		0.0234 		-0.0447
-v 0.0185 		0.0485 		-0.0186
-v 0.0186 		0.0485 		-0.0187
-v 0.0187 		0.0486 		-0.0194
-v 0.0172 		-0.0374 		0.0787
-v 0.0184 		0.0489 		-0.0334
-v 0.0181 		-0.0341 		0.082
-v 0.0174 		-0.0355 		0.0767
-v 0.0183 		-0.0322 		0.08
-v 0.0198 		0.0335 		-0.0447
-v -0.0117 		0.0335 		-0.0519
-v -0.0132 		0.0346 		-0.0513
-v 0.0213 		0.0332 		-0.043
-v -0.013 		0.0371 		-0.0511
-v -0.0125 		0.0395 		-0.0509
-v -0.0015 		-0.0536 		0.0979
-v -0.0033 		-0.0532 		0.0982
-v -0.0024 		-0.0535 		0.098
-v 0.0195 		0.038 		-0.0444
-v 0.0184 		0.0485 		-0.0183
-v -0.0151 		0.0374 		-0.0501
-v -0.0015 		0.0502 		-0.0258
-v 0.0184 		0.0485 		-0.0182
-v 0.0209 		0.0381 		-0.0426
-v -0.0015 		-0.0546 		0.0957
-v -0.0039 		-0.0542 		0.0961
-v -0.0027 		-0.0545 		0.0958
-v -0.0171 		0.0377 		-0.0489
-v 0.0195 		0.029 		-0.0451
-v -0.0015 		-0.0555 		0.0933
-v 0.0209 		0.0284 		-0.0434
-v -0.0044 		-0.055 		0.0938
-v -0.003 		-0.0554 		0.0935
-v -0.0145 		0.0403 		-0.0498
-v 0.0222 		0.038 		-0.0407
-v 0.0107 		-0.0488 		0.0748
-v -0.0164 		0.0409 		-0.0486
-v 0.0226 		0.0329 		-0.0412
-v 0.013 		-0.0465 		0.0771
-v 0.0149 		-0.0438 		0.0798
-v 0.0222 		0.0278 		-0.0416
-v 0.011 		-0.0474 		0.0725
-v 0.0134 		-0.045 		0.0749
-v 0.0016 		0.0428 		0.0385
-v 0.0233 		0.0379 		-0.0388
-v 0.0154 		-0.0422 		0.0776
-v 0.0237 		0.0326 		-0.0392
-v -0.0082 		0.0379 		-0.0525
-v 0.0048 		0.0428 		0.0384
-v 0.0031 		0.0428 		0.0384
-v 0.0233 		0.0273 		-0.0397
-v 0.0032 		0.0428 		0.0384
-v -0.0104 		0.0387 		-0.0518
-v 0.0015 		0.0428 		0.0385
-v -0.003 		0.0428 		0.0384
-v -0.003 		0.0428 		0.0384
-v 0.0091 		-0.0521 		0.0818
-v -0.006 		0.037 		-0.0531
-v 0.0112 		-0.0501 		0.0838
-v -0.0001 		-0.0479 		0.1049
-v -0.0004 		-0.0477 		0.1051
-v 0.0097 		-0.0512 		0.0794
-v -0.0006 		-0.0476 		0.1053
-v -0.0009 		-0.0474 		0.1054
-v -0.0012 		-0.0473 		0.1055
-v 0.0119 		-0.0491 		0.0816
-v 0.0103 		-0.0501 		0.0771
-v 0.0125 		-0.0479 		0.0793
-v 0.005 		0.0498 		-0.0038
-v 0.0246 		0.0323 		-0.0372
-v -0.0186 		0.0499 		-0.0122
-v -0.0006 		-0.0535 		0.098
-v -0.008 		0.0498 		-0.0038
-v -0.0139 		0.0499 		-0.0071
-v 0.005 		0.0482 		-0.0038
-v 0.005 		0.0482 		-0.0038
-v -0.0015 		0.0498 		-0.0027
-v 0 		0.0428 		0.0384
-v 0 		0.0428 		0.0384
-v 0.0018 		-0.0476 		0.1047
-v 0.0163 		-0.0409 		0.0827
-v 0.0172 		-0.0377 		0.0859
-v 0.0015 		-0.0471 		0.1053
-v -0.0015 		0.0428 		0.0384
-v -0.0063 		0.035 		-0.0533
-v 0.0168 		-0.0392 		0.0807
-v -0.0062 		0.036 		-0.0532
-v 0.0177 		-0.0359 		0.0839
-v 0.0043 		0.0471 		0.0416
-v 0.0254 		0.0319 		-0.0351
-v -0.0126 		0.0345 		0.0533
-v -0.0142 		0.0333 		0.0522
-v -0.008 		0.0347 		-0.0529
-v -0.0086 		0.0345 		-0.0528
-v -0.0155 		0.0321 		0.051
-v -0.0086 		0.0349 		-0.0528
-v -0.0156 		0.032 		0.0509
-v -0.0168 		0.0307 		0.0496
-v -0.017 		0.0306 		0.0494
-v -0.0216 		0.016 		0.0348
-v -0.0064 		0.035 		-0.0532
-v -0.0213 		0.014 		0.0329
-v 0.0128 		-0.0478 		0.0861
-v -0.0208 		0.0121 		0.031
-v -0.0201 		0.0103 		0.0291
-v -0.0193 		0.0085 		0.0274
-v 0.014 		-0.0452 		0.0887
-v -0.0183 		0.0068 		0.0257
-v 0.0194 		0.0476 		-0.04
-v -0.0171 		0.0053 		0.0241
-v -0.0063 		0.035 		-0.0533
-v 0.0148 		-0.0425 		0.0915
-v -0.0158 		0.0038 		0.0227
-v -0.0085 		0.0364 		-0.0527
-v 0.0048 		0.0482 		-0.0038
-v 0.0082 		0.0482 		-0.0056
-v 0.0084 		0.0482 		-0.0057
-v 0.0136 		-0.0466 		0.084
-v 0.0149 		-0.0439 		0.0868
-v -0.0109 		0.0348 		-0.0521
-v -0.0099 		0.0342 		-0.0525
-v 0.0109 		0.0499 		-0.0071
-v 0.0156 		0.0499 		-0.0122
-v 0.0003 		-0.0532 		0.0982
-v -0.0003 		-0.0545 		0.0958
-v -0.0103 		0.0341 		-0.0524
-v -0.0109 		0.0339 		-0.0522
-v -0.0143 		0.0025 		0.0213
-v 0.0194 		0.049 		-0.0384
-v 0.0203 		0.048 		-0.038
-v -0.0127 		0.0013 		0.0202
-v 0.0197 		0.049 		-0.0379
-v -0.011 		0.0003 		0.0192
-v -0.0108 		0.0368 		-0.052
-v 0.0009 		-0.0542 		0.0961
-v 0.0205 		0.049 		-0.0362
-v -0.0092 		-0.0005 		0.0183
-v -0.0217 		0.0179 		0.0368
-v -0.0216 		0.0199 		0.0387
-v -0.0183 		0.029 		0.0479
-v -0.0193 		0.0273 		0.0462
-v -0.0201 		0.0256 		0.0444
-v -0.0208 		0.0237 		0.0426
-v -0.0213 		0.0218 		0.0407
-v 0.0199 		0.0427 		-0.0422
-v 0.0157 		-0.041 		0.0897
-v 0.0109 		0.0483 		-0.0071
-v 0.0109 		0.0483 		-0.0071
-v 0.0211 		0.043 		-0.0403
-v 0.0134 		0.0483 		-0.0099
-v 0.0156 		0.0484 		-0.0122
-v 0.0143 		-0.0453 		0.0819
-v 0.0157 		-0.0424 		0.0848
-v 0.014 		0.0478 		0.0108
-v 0 		-0.0554 		0.0935
-v 0.0048 		0.0477 		0.0146
-v 0.0207 		0.0489 		-0.0359
-v 0.0211 		0.0482 		-0.0359
-v -0.013 		0.0328 		-0.0515
-v 0.0173 		0.0158 		0.0094
-v -0.0134 		0.0326 		-0.0513
-v 0.0014 		-0.055 		0.0938
-v 0.0077 		0.0473 		0.0328
-v 0.0078 		0.047 		0.0336
-v -0.0153 		0.0345 		-0.0503
-v -0.0186 		0.0484 		-0.0122
-v 0.0079 		0.0471 		0.0337
-v -0.0139 		0.0483 		-0.0071
-v 0.0076 		0.0471 		0.0337
-v -0.016 		0.0483 		-0.0095
-v 0.0073 		0.0473 		0.0338
-v -0.008 		0.0482 		-0.0038
-v -0.008 		0.0482 		-0.0038
-v -0.0108 		0.0482 		-0.0054
-v 0.0075 		0.0473 		0.0338
-v 0.0213 		0.0489 		-0.0341
-v -0.0046 		0.0482 		-0.0032
-v -0.0015 		0.0482 		-0.0027
-v 0.0019 		0.0482 		-0.0033
-v -0.0171 		0.0309 		-0.0494
-v -0.0127 		0.0345 		0.0534
-v -0.0174 		0.0343 		-0.0491
-v -0.0015 		-0.0523 		0.1001
-v -0.0143 		0.0334 		0.0522
-v -0.0158 		0.0321 		0.0509
-v -0.0037 		-0.0515 		0.1009
-v -0.0171 		0.0306 		0.0495
-v 0.0012 		-0.0466 		0.1058
-v -0.0032 		-0.0518 		0.1005
-v -0.0092 		-0.0006 		0.0183
-v 0.0188 		0.0488 		-0.0311
-v -0.0073 		-0.0012 		0.0177
-v -0.0027 		-0.0521 		0.1003
-v -0.0073 		-0.0013 		0.0177
-v -0.0054 		-0.0018 		0.0173
-v -0.0021 		-0.0522 		0.1001
-v 0.0222 		0.0431 		-0.0384
-v -0.0054 		-0.0018 		0.0173
-v -0.0166 		0.0491 		-0.0415
-v -0.0035 		-0.0021 		0.017
-v 0.0048 		0.0473 		0.0345
-v -0.0035 		0.0365 		-0.0534
-v 0.0165 		-0.0394 		0.0878
-v 0.0008 		-0.0462 		0.1062
-v -0.0033 		0.0369 		-0.0534
-v 0.0061 		0.0472 		0.0381
-v 0.0231 		0.0432 		-0.0363
-v -0.0035 		-0.0021 		0.017
-v 0.0005 		-0.0021 		0.017
-v 0.0005 		-0.0021 		0.017
-v 0.0214 		0.0489 		-0.0338
-v 0.0218 		0.0483 		-0.0338
-v 0.0084 		-0.0529 		0.0842
-v 0.0103 		-0.051 		0.086
-v 0.0024 		-0.0018 		0.0173
-v 0.0024 		-0.0018 		0.0173
-v 0.0237 		0.0431 		-0.0342
-v 0.0043 		-0.0013 		0.0177
-v 0.0044 		-0.0012 		0.0177
-v 0.0004 		0.0369 		-0.0534
-v 0.0084 		-0.0522 		0.0904
-v 0.0007 		0.0365 		-0.0534
-v 0.0171 		0.0342 		0.0263
-v 0.0174 		0.0329 		0.0256
-v 0.0178 		0.0307 		0.0243
-v 0.0097 		-0.0503 		0.0922
-v 0.0222 		0.0482 		-0.0317
-v 0.0158 		0.0372 		0.028
-v 0.0167 		0.0351 		0.0268
-v 0.0218 		0.0489 		-0.0319
-v 0.016 		0.0373 		0.0281
-v 0.0169 		0.0352 		0.0269
-v 0.0219 		0.0488 		-0.0316
-v -0.0038 		0.0353 		-0.0535
-v -0.0038 		0.0355 		-0.0535
-v -0.0037 		0.036 		-0.0535
-v -0.0043 		0.0352 		-0.0535
-v -0.0041 		-0.0529 		0.0986
-v 0.0003 		-0.0458 		0.1065
-v -0.0003 		-0.0456 		0.1068
-v -0.0009 		-0.0454 		0.1069
-v 0.0242 		0.0378 		-0.0368
-v -0.0181 		0.0275 		0.0499
-v -0.0181 		0.0275 		0.0499
-v -0.0183 		0.0272 		0.0497
-v 0.025 		0.0376 		-0.0347
-v -0.0032 		-0.0494 		0.1035
-v -0.0208 		0.0307 		0.0243
-v 0.0175 		0.033 		0.0256
-v -0.021 		0.0307 		0.0243
-v 0.0148 		0.0395 		0.0293
-v 0.0149 		0.0393 		0.0292
-v 0.0094 		-0.0517 		0.0882
-v 0.0137 		0.041 		0.0302
-v 0.015 		0.0393 		0.0292
-v 0.0109 		-0.0497 		0.0903
-v 0.0139 		0.0412 		0.0303
-v -0.0031 		-0.0497 		0.1032
-v -0.003 		-0.0499 		0.1029
-v 0.0242 		0.043 		-0.0321
-v -0.0028 		0.0353 		-0.0536
-v -0.0021 		0.0353 		-0.0536
-v 0.0255 		0.0373 		-0.0325
-v -0.0042 		-0.051 		0.1013
-v 0.018 		0.0307 		0.0243
-v 0.0119 		-0.0474 		0.0925
-v 0.0019 		-0.0444 		0.1071
-v 0.0245 		0.0427 		-0.0299
-v 0.0258 		0.037 		-0.0304
-v -0.0015 		-0.0508 		0.102
-v 0.0116 		0.0439 		0.0318
-v 0.0124 		0.0428 		0.0312
-v 0.011 		0.0444 		0.0321
-v 0.0125 		0.0429 		0.0313
-v 0.0111 		0.0445 		0.0322
-v -0.0019 		0.0353 		-0.0536
-v -0.0018 		0.0354 		-0.0536
-v 0.0094 		0.0457 		0.0329
-v 0.0095 		0.0459 		0.033
-v -0.0014 		0.0354 		-0.0536
-v -0.0014 		0.0354 		-0.0536
-v -0.0013 		0.0354 		-0.0536
-v -0.0014 		0.0354 		-0.0536
-v 0.0253 		0.0396 		-0.028
-v -0.0028 		-0.0502 		0.1027
-v -0.0017 		0.0354 		-0.0536
-v -0.0026 		-0.0504 		0.1024
-v -0.0024 		-0.0506 		0.1023
-v -0.0021 		-0.0507 		0.1021
-v 0.0221 		0.0488 		-0.0297
-v 0.0221 		0.0488 		-0.0294
-v 0.0225 		0.0481 		-0.0295
-v -0.0018 		-0.0508 		0.1021
-v 0.0077 		0.0055 		0.0098
-v -0.0016 		0.0354 		-0.0536
-v -0.0181 		0.0279 		0.0493
-v -0.0015 		0.0354 		-0.0536
-v -0.0015 		0.0354 		-0.0536
-v -0.0183 		0.0275 		0.0494
-v 0.022 		0.0488 		-0.0276
-v 0.0226 		0.0478 		-0.0273
-v 0.0226 		0.0478 		-0.0273
-v -0.0191 		0.0255 		0.0487
-v -0.0191 		0.0255 		0.0487
-v -0.0193 		0.0251 		0.0484
-v -0.0191 		0.0261 		0.0481
-v -0.0191 		0.026 		0.048
-v -0.0193 		0.0254 		0.0481
-v 0.0194 		0.0487 		-0.0272
-v -0.02 		0.0234 		0.0473
-v 0.0194 		0.0487 		-0.0272
-v -0.0199 		0.0234 		0.0473
-v -0.0201 		0.023 		0.047
-v -0.02 		0.0239 		0.0467
-v -0.0199 		0.0239 		0.0468
-v -0.0201 		0.023 		0.047
-v -0.0009 		-0.0522 		0.1001
-v 0.0194 		0.0487 		-0.0272
-v -0.0003 		-0.0521 		0.1003
-v -0.0206 		0.0213 		0.046
-v -0.0207 		0.0211 		0.0459
-v 0.0003 		-0.0518 		0.1005
-v -0.0206 		0.0213 		0.046
-v 0.0008 		-0.0515 		0.1009
-v 0.019 		0.0488 		-0.0299
-v -0.0206 		0.0215 		0.0457
-v -0.0012 		0.0354 		-0.0536
-v 0.0119 		-0.0488 		0.0882
-v -0.0011 		0.0354 		-0.0536
-v -0.001 		0.0353 		-0.0536
-v 0.013 		-0.0464 		0.0906
-v -0.0212 		0.0284 		0.023
-v -0.0213 		0.0284 		0.023
-v -0.0126 		0.034 		0.0541
-v -0.0127 		0.0339 		0.054
-v -0.0126 		0.034 		0.0541
-v -0.0121 		0.0343 		0.0543
-v -0.0126 		0.034 		0.054
-v 0.0226 		0.0478 		-0.0273
-v 0.022 		0.0487 		-0.0272
-v -0.0008 		0.0353 		-0.0536
-v 0.0008 		0.036 		-0.0535
-v 0.0107 		-0.0483 		0.0942
-v -0.0001 		0.0353 		-0.0536
-v 0.0194 		0.0487 		-0.0272
-v -0.0142 		0.0326 		0.0532
-v 0.0009 		0.0355 		-0.0535
-v -0.0142 		0.0326 		0.0532
-v 0.001 		0.0353 		-0.0535
-v 0.0113 		-0.0461 		0.0964
-v -0.0143 		0.0325 		0.0531
-v 0.0194 		0.0487 		-0.0272
-v -0.0128 		0.0338 		0.054
-v 0.0196 		0.0502 		-0.0258
-v 0.0126 		-0.0451 		0.0949
-v -0.017 		0.0478 		0.0108
-v -0.0142 		0.0328 		0.053
-v 0.0196 		0.0487 		-0.0258
-v 0.0192 		0.0486 		-0.0227
-v -0.0143 		0.0326 		0.053
-v 0.0137 		-0.0438 		0.0932
-v 0.0196 		0.0485 		-0.0183
-v 0.0011 		-0.0529 		0.0986
-v 0.0198 		0.009 		-0.0305
-v 0.0019 		-0.0523 		0.0991
-v -0.0156 		0.0311 		0.0522
-v -0.0156 		0.031 		0.0522
-v -0.0158 		0.0309 		0.0521
-v 0.0031 		0.037 		-0.0531
-v 0.0197 		0.0092 		-0.0305
-v 0.0188 		0.0077 		-0.0306
-v 0.0191 		0.0082 		-0.0308
-v 0.0033 		0.036 		-0.0532
-v 0.0031 		0.035 		-0.0533
-v 0.0034 		0.035 		-0.0533
-v 0.0192 		0.022 		-0.0439
-v 0.0061 		0.0031 		0.0131
-v 0.0211 		0.0229 		-0.042
-v 0.0036 		0.035 		-0.0532
-v 0.0073 		0.0037 		0.0136
-v 0.0062 		0.0031 		0.0132
-v -0.0012 		-0.0508 		0.1021
-v -0.0009 		-0.0507 		0.1021
-v 0.0062 		0.0031 		0.0132
-v -0.0006 		-0.0506 		0.1023
-v 0.0195 		0.0197 		-0.0427
-v -0.0004 		-0.0504 		0.1024
-v -0.0001 		-0.0502 		0.1027
-v 0.0196 		0.0189 		-0.0423
-v 0 		-0.0499 		0.1029
-v 0.0002 		-0.0497 		0.1032
-v 0.0203 		0.0172 		-0.0405
-v 0.0002 		-0.0494 		0.1035
-v 0.0197 		0.0179 		-0.0418
-v -0.0227 		0.009 		-0.0305
-v -0.0078 		0.0477 		0.0146
-v 0.0079 		0.0041 		0.0138
-v -0.0224 		0.0087 		-0.0307
-v -0.0224 		0.0087 		-0.0307
-v 0.0079 		0.0041 		0.0138
-v 0.0079 		0.0041 		0.0138
-v -0.0221 		0.0082 		-0.0305
-v -0.0234 		0.0104 		-0.0306
-v -0.0226 		0.0091 		-0.0305
-v -0.0212 		0.0069 		-0.0309
-v 0.0084 		-0.0479 		0.0991
-v 0.0079 		0.0003 		0.0191
-v 0.0068 		-0.0002 		0.0186
-v 0.0062 		-0.0005 		0.0183
-v 0.0085 		-0.0508 		0.0941
-v 0.0195 		0.0157 		-0.0406
-v 0.0094 		-0.049 		0.0959
-v -0.0193 		0.0049 		-0.0308
-v 0.0211 		0.0163 		-0.0385
-v -0.0201 		0.0059 		-0.0307
-v 0.019 		0.0133 		-0.0393
-v -0.0198 		0.0055 		-0.031
-v 0.0099 		-0.0471 		0.0978
-v -0.0192 		0.005 		-0.0308
-v -0.0156 		0.0313 		0.0519
-v -0.0156 		0.0313 		0.0518
-v -0.0158 		0.0311 		0.0519
-v -0.016 		0.0021 		-0.031
-v -0.0175 		0.0034 		-0.0312
-v 0.0189 		0.0124 		-0.0388
-v 0.0188 		0.012 		-0.0386
-v -0.017 		0.0294 		0.0511
-v -0.0171 		0.0291 		0.051
-v -0.0169 		0.0293 		0.0511
-v -0.0155 		0.0015 		-0.0313
-v -0.0169 		0.0298 		0.0507
-v -0.017 		0.0297 		0.0506
-v -0.0178 		0.0395 		0.0293
-v -0.0171 		0.0294 		0.0507
-v -0.0188 		0.0372 		0.028
-v -0.0179 		0.0393 		0.0292
-v -0.018 		0.0393 		0.0292
-v -0.019 		0.0373 		0.0281
-v 0.0218 		0.0155 		-0.0365
-v 0.0092 		0.0063 		0.0103
-v -0.0201 		0.0342 		0.0263
-v -0.0197 		0.0351 		0.0268
-v -0.0203 		0.0329 		0.0256
-v -0.0205 		0.033 		0.0256
-v -0.0198 		0.0352 		0.0269
-v 0.0222 		0.0149 		-0.0344
-v 0.008 		-0.0182 		0.1054
-v 0.014 		0.0102 		0.0076
-v 0.0082 		-0.0159 		0.104
-v 0.0094 		0.0065 		0.0104
-v 0.0095 		0.0063 		0.0103
-v -0.0167 		0.041 		0.0302
-v 0.0191 		0.0109 		-0.0369
-v -0.0168 		0.0412 		0.0303
-v 0.0195 		0.0101 		-0.0348
-v 0.0123 		0.0095 		0.0121
-v 0.0109 		0.008 		0.0113
-v 0.0125 		0.0092 		0.012
-v 0.0111 		0.0077 		0.0111
-v 0.0197 		0.0095 		-0.0326
-v 0.0068 		-0.0254 		0.1085
-v 0.0072 		-0.023 		0.1077
-v -0.0107 		0.0473 		0.0328
-v -0.0106 		0.0471 		0.0337
-v -0.0108 		0.047 		0.0336
-v 0.0076 		-0.0206 		0.1066
-v -0.0109 		0.0471 		0.0337
-v -0.0105 		0.0473 		0.0338
-v -0.0216 		-0.0287 		0.0795
-v -0.0213 		-0.0307 		0.0776
-v -0.0213 		-0.0304 		0.0779
-v -0.0214 		-0.03 		0.0783
-v -0.0208 		-0.0326 		0.0757
-v -0.0103 		0.0473 		0.0338
-v -0.0201 		-0.0344 		0.0739
-v -0.0203 		-0.0339 		0.0744
-v -0.0205 		-0.0333 		0.075
-v -0.0193 		-0.0362 		0.0721
-v -0.0015 		-0.0432 		0.1083
-v -0.0183 		-0.0379 		0.0704
-v -0.0188 		-0.037 		0.0713
-v -0.0191 		-0.0366 		0.0717
-v -0.014 		0.0444 		0.0321
-v -0.0141 		0.0445 		0.0322
-v -0.0024 		-0.0433 		0.1082
-v -0.0073 		-0.0459 		0.0624
-v -0.0146 		0.0439 		0.0318
-v -0.0081 		-0.0456 		0.0627
-v -0.0086 		-0.0454 		0.0628
-v -0.0054 		-0.0464 		0.0619
-v -0.0035 		-0.0467 		0.0616
-v -0.0047 		-0.0465 		0.0618
-v -0.0051 		-0.0464 		0.0619
-v -0.0015 		-0.0468 		0.0615
-v 0.0005 		-0.0467 		0.0616
-v 0.0024 		-0.0464 		0.0619
-v 0.0022 		-0.0464 		0.0619
-v 0.0017 		-0.0465 		0.0618
-v 0.0044 		-0.0459 		0.0624
-v -0.0033 		-0.0435 		0.108
-v -0.0171 		-0.0395 		0.0688
-v -0.0158 		-0.0409 		0.0674
-v 0.008 		-0.0427 		0.1043
-v -0.0099 		-0.0013 		-0.0316
-v -0.0168 		-0.0398 		0.0685
-v -0.017 		-0.0396 		0.0687
-v -0.0109 		-0.001 		-0.0313
-v -0.0041 		-0.0439 		0.1076
-v -0.0143 		-0.0422 		0.0661
-v -0.0144 		-0.0421 		0.0662
-v -0.0146 		-0.0419 		0.0664
-v -0.0127 		-0.0434 		0.0649
-v -0.011 		-0.0444 		0.0639
-v -0.0114 		-0.0442 		0.0641
-v -0.0118 		-0.0439 		0.0644
-v -0.0092 		-0.0452 		0.0631
-v -0.0152 		0.0014 		-0.0311
-v -0.0136 		0.0006 		-0.0314
-v -0.0183 		-0.0157 		0.0926
-v 0.0012 		-0.051 		0.1013
-v -0.0193 		-0.0174 		0.0909
-v -0.0191 		-0.017 		0.0913
-v -0.0188 		-0.0165 		0.0918
-v -0.0201 		-0.0191 		0.0891
-v -0.0109 		-0.0008 		-0.0313
-v -0.0208 		-0.021 		0.0873
-v -0.0205 		-0.0202 		0.0881
-v -0.0039 		-0.0414 		0.1089
-v -0.0203 		-0.0197 		0.0886
-v -0.0213 		-0.0229 		0.0854
-v -0.0093 		-0.0016 		-0.0313
-v 0.0015 		-0.0505 		0.1018
-v -0.0216 		-0.0248 		0.0835
-v -0.0214 		-0.0236 		0.0847
-v -0.0213 		-0.0232 		0.0851
-v -0.0217 		-0.0268 		0.0815
-v -0.0127 		-0.0102 		0.0981
-v -0.0118 		-0.0097 		0.0986
-v 0.0018 		-0.05 		0.1023
-v -0.0143 		-0.0113 		0.0969
-v -0.0087 		-0.0019 		-0.0316
-v -0.0158 		-0.0127 		0.0956
-v -0.0146 		-0.0116 		0.0967
-v -0.0144 		-0.0114 		0.0968
-v -0.0171 		-0.0141 		0.0942
-v -0.017 		-0.014 		0.0943
-v -0.0168 		-0.0138 		0.0945
-v -0.0204 		-0.0336 		0.0747
-v -0.019 		-0.0368 		0.0715
-v -0.0124 		0.0457 		0.0329
-v -0.0125 		0.0459 		0.033
-v 0.0257 		0.0375 		-0.0282
-v 0.0257 		0.0376 		-0.0281
-v 0.0259 		0.0367 		-0.0282
-v -0.0214 		-0.0303 		0.078
-v 0.0261 		0.0338 		-0.0284
-v 0.0035 		-0.0548 		0.0922
-v -0.0014 		-0.0031 		-0.0315
-v -0.0084 		-0.0456 		0.0627
-v 0.0261 		0.0342 		-0.0285
-v -0.0063 		-0.0026 		-0.0314
-v 0.0258 		0.0367 		-0.0282
-v -0.005 		-0.0465 		0.0618
-v 0.0264 		0.0309 		-0.0288
-v -0.0026 		-0.0029 		-0.0317
-v -0.0015 		-0.003 		-0.0316
-v -0.0081 		-0.002 		-0.0314
-v -0.0074 		-0.0021 		-0.0317
-v 0.002 		-0.0465 		0.0618
-v -0.0062 		-0.0023 		-0.0314
-v -0.0015 		-0.003 		-0.0314
-v -0.0015 		-0.0031 		-0.0317
-v 0.0134 		0.0106 		0.0128
-v 0.0148 		0.0131 		0.0142
-v 0.0137 		0.0111 		0.0131
-v 0.0139 		0.011 		0.013
-v 0.015 		0.0129 		0.014
-v 0.0158 		0.015 		0.0153
-v 0.016 		0.0149 		0.0152
-v 0.0164 		0.0161 		0.0159
-v 0.0167 		0.0171 		0.0165
-v 0.0169 		0.017 		0.0164
-v 0.0034 		-0.0026 		-0.0314
-v -0.0169 		-0.0396 		0.0687
-v 0.005 		-0.0455 		0.1049
-v 0.0046 		-0.0021 		-0.0317
-v -0.0009 		-0.003 		-0.0317
-v -0.0006 		-0.0029 		-0.0317
-v -0.0145 		-0.0421 		0.0662
-v -0.0116 		-0.0441 		0.0642
-v -0.0015 		-0.041 		0.1093
-v -0.0014 		-0.003 		-0.0316
-v -0.0027 		-0.0411 		0.1092
-v 0.0033 		-0.0023 		-0.0314
-v -0.0014 		-0.003 		-0.0314
-v 0.0054 		-0.0478 		0.1025
-v 0.0238 		0.0301 		-0.0123
-v 0.0053 		-0.0466 		0.1037
-v -0.0204 		-0.02 		0.0883
-v -0.0214 		-0.0233 		0.085
-v 0.007 		-0.0471 		0.1018
-v 0.0215 		0.012 		-0.0304
-v 0.0222 		0.0132 		-0.0301
-v 0.0069 		-0.0456 		0.1032
-v -0.019 		-0.0168 		0.0915
-v 0.0227 		0.0139 		-0.0303
-v -0.0116 		-0.0095 		0.0988
-v 0.0065 		-0.0442 		0.1047
-v 0.0059 		-0.0428 		0.106
-v -0.0145 		-0.0115 		0.0968
-v -0.0169 		-0.014 		0.0943
-v 0.0246 		0.0192 		-0.0296
-v -0.0221 		0.022 		-0.0439
-v -0.0211 		-0.0341 		0.082
-v 0.0248 		0.0202 		-0.0297
-v 0.0249 		0.0206 		-0.0295
-v -0.0202 		-0.0374 		0.0787
-v 0.0072 		-0.0412 		0.1059
-v -0.0187 		-0.0405 		0.0756
-v -0.0078 		0.0473 		0.0345
-v 0.0245 		0.0193 		-0.0296
-v 0.0062 		-0.0397 		0.1073
-v -0.0015 		-0.0386 		0.1102
-v -0.0154 		0.0428 		0.0312
-v -0.0213 		-0.0322 		0.08
-v -0.0155 		0.0429 		0.0313
-v 0.005 		-0.0385 		0.1085
-v -0.003 		-0.0387 		0.1101
-v -0.0204 		-0.0355 		0.0767
-v -0.0044 		-0.0391 		0.1097
-v -0.0189 		-0.0387 		0.0735
-v 0.0231 		0.0152 		-0.03
-v 0.0235 		0.0164 		-0.03
-v 0.0074 		-0.0377 		0.1072
-v 0.0059 		-0.0363 		0.1086
-v -0.0091 		0.0472 		0.0381
-v -0.0097 		0.0472 		0.0362
-v -0.0083 		-0.0492 		0.0669
-v -0.0049 		-0.05 		0.066
-v 0.0255 		0.0221 		-0.0295
-v -0.0084 		-0.0474 		0.0648
-v 0.005 		-0.0416 		0.1072
-v -0.0223 		0.0208 		-0.0433
-v -0.005 		-0.0483 		0.0639
-v -0.024 		0.0229 		-0.042
-v -0.0225 		0.0189 		-0.0423
-v 0.0068 		-0.0341 		0.1085
-v -0.0232 		0.0172 		-0.0405
-v 0.005 		-0.0328 		0.1097
-v -0.0226 		0.0179 		-0.0418
-v 0.0077 		-0.0318 		0.1081
-v -0.0225 		0.0186 		-0.0421
-v 0.0056 		-0.0304 		0.1095
-v -0.0015 		-0.0503 		0.0657
-v 0.002 		-0.05 		0.066
-v 0.0011 		-0.0439 		0.1076
-v 0.002 		-0.0537 		0.0966
-v 0.0029 		-0.053 		0.0973
-v 0.0003 		-0.0435 		0.108
-v 0.002 		-0.0483 		0.0639
-v -0.0015 		-0.0486 		0.0636
-v 0.0028 		-0.0544 		0.0945
-v -0.0006 		-0.0433 		0.1082
-v 0.004 		-0.0535 		0.0953
-v -0.0224 		0.0165 		-0.041
-v -0.0224 		0.0157 		-0.0406
-v 0.0062 		-0.0279 		0.1091
-v -0.0221 		0.0143 		-0.0399
-v -0.024 		0.0163 		-0.0385
-v -0.0218 		0.0124 		-0.0388
-v -0.0215 		0.0116 		-0.0385
-v 0.0259 		0.0249 		-0.0292
-v 0.0261 		0.0276 		-0.0291
-v 0.0261 		0.0283 		-0.0289
-v 0.0256 		0.0238 		-0.0293
-v 0.0257 		0.0241 		-0.0294
-v 0.0258 		0.025 		-0.0292
-v -0.0217 		0.0121 		-0.0387
-v -0.0217 		0.012 		-0.0386
-v 0.0025 		-0.0517 		0.0998
-v -0.0247 		0.0155 		-0.0365
-v 0.018 		0.0221 		0.0194
-v 0.003 		-0.051 		0.1005
-v 0.0009 		-0.0414 		0.1089
-v -0.0003 		-0.0411 		0.1092
-v 0.0038 		-0.0522 		0.0981
-v -0.0167 		-0.0433 		0.0727
-v -0.0143 		-0.0457 		0.0703
-v 0.0045 		-0.0512 		0.0991
-v -0.0114 		-0.0477 		0.0684
-v -0.0251 		0.0149 		-0.0344
-v 0.002 		-0.0494 		0.1029
-v -0.0169 		-0.0415 		0.0707
-v -0.0144 		-0.044 		0.0682
-v 0.0034 		-0.0502 		0.1013
-v -0.0115 		-0.046 		0.0662
-v 0.0036 		-0.0493 		0.1022
-v 0.0181 		0.0238 		0.0203
-v 0.0183 		0.0237 		0.0203
-v 0.0182 		0.0284 		0.023
-v 0.0182 		0.0283 		0.0229
-v 0.0181 		0.0261 		0.0216
-v 0.0184 		0.0261 		0.0216
-v 0.0183 		0.0284 		0.023
-v 0.0222 		0.0221 		-0.0401
-v 0.0184 		-0.0307 		0.0854
-v -0.0204 		0.0096 		-0.0378
-v -0.022 		0.0109 		-0.0369
-v -0.0193 		0.0076 		-0.0371
-v 0.0242 		0.0267 		-0.0377
-v 0.0181 		-0.0273 		0.0888
-v -0.019 		0.006 		-0.0351
-v -0.0187 		0.0067 		-0.0368
-v 0.0172 		-0.0239 		0.0921
-v -0.0179 		-0.0438 		0.0798
-v -0.019 		0.0071 		-0.037
-v 0.0231 		0.0214 		-0.0381
-v 0.0186 		-0.0287 		0.0835
-v -0.0224 		0.0101 		-0.0348
-v 0.0183 		-0.0253 		0.0869
-v 0.0174 		-0.0219 		0.0903
-v 0.0173 		0.0193 		0.0177
-v 0.025 		0.0262 		-0.0356
-v -0.0192 		0.0053 		-0.033
-v 0.0175 		0.0192 		0.0177
-v 0.0178 		0.0215 		0.019
-v 0.018 		0.0214 		0.019
-v -0.0226 		0.0095 		-0.0326
-v 0.0259 		0.0315 		-0.033
-v -0.0184 		-0.0422 		0.0776
-v 0.0157 		-0.0208 		0.0952
-v 0.0137 		-0.018 		0.098
-v 0.0255 		0.0258 		-0.0335
-v -0.0202 		-0.0377 		0.0859
-v -0.0193 		-0.0409 		0.0827
-v -0.0224 		0.0087 		-0.0307
-v -0.0211 		0.0071 		-0.0309
-v -0.0207 		-0.0359 		0.0839
-v -0.0198 		-0.0392 		0.0807
-v -0.0187 		-0.0208 		0.0952
-v -0.0202 		-0.0239 		0.0921
-v -0.0211 		-0.0273 		0.0888
-v -0.0214 		-0.0307 		0.0854
-v -0.0178 		-0.0425 		0.0915
-v -0.0078 		0.0471 		0.0409
-v -0.0091 		0.0466 		0.0406
-v -0.0189 		-0.0188 		0.0934
-v -0.0109 		0.0456 		0.04
-v 0.0237 		0.0207 		-0.0361
-v -0.0204 		-0.0219 		0.0903
-v 0.0113 		-0.0156 		0.1005
-v -0.0213 		-0.0253 		0.0869
-v -0.0216 		-0.0287 		0.0835
-v 0.0242 		0.0201 		-0.034
-v -0.0171 		0.0049 		-0.0362
-v 0.0258 		0.0253 		-0.0313
-v 0.0245 		0.0196 		-0.0318
-v 0.0158 		0.0132 		0.0196
-v 0.016 		0.0137 		0.0199
-v 0.0161 		0.0138 		0.02
-v -0.0151 		0.0027 		-0.0354
-v -0.0151 		0.0026 		-0.0354
-v -0.0151 		0.0026 		-0.0354
-v -0.015 		0.0026 		-0.0354
-v 0.0162 		0.0137 		0.0199
-v -0.0114 		-0.0136 		0.1024
-v -0.0109 		-0.0005 		-0.0335
-v -0.0108 		-0.0001 		-0.0347
-v 0.0169 		0.0158 		0.0212
-v 0.0167 		0.0153 		0.0209
-v -0.0124 		0.0009 		-0.0348
-v 0.0014 		-0.0391 		0.1097
-v -0.0143 		-0.0156 		0.1005
-v -0.0123 		0.0008 		-0.0348
-v -0.0153 		0.0019 		-0.0332
-v 0.0169 		0.0159 		0.0213
-v 0 		-0.0387 		0.1101
-v 0.018 		0.0202 		0.0241
-v 0.018 		0.0203 		0.0241
-v -0.0167 		-0.018 		0.098
-v 0.0181 		0.0202 		0.0241
-v 0.0184 		0.0248 		0.027
-v -0.0115 		-0.0115 		0.1007
-v 0.0183 		0.0225 		0.0255
-v 0.0183 		0.0244 		0.0267
-v 0.0183 		0.0225 		0.0255
-v -0.0144 		-0.0135 		0.0987
-v 0.0184 		0.0225 		0.0255
-v -0.0169 		-0.016 		0.0962
-v 0.002 		-0.0488 		0.1035
-v 0.017 		0.0158 		0.0213
-v -0.0154 		0.0016 		-0.0313
-v 0.002 		-0.0482 		0.1041
-v -0.0193 		-0.028 		0.0956
-v -0.0187 		-0.041 		0.0897
-v 0.0037 		-0.0484 		0.1031
-v -0.0202 		-0.0312 		0.0924
-v -0.0179 		-0.0439 		0.0868
-v -0.0195 		-0.0394 		0.0878
-v -0.0204 		-0.0344 		0.0892
-v -0.0187 		-0.0424 		0.0848
-v -0.0198 		-0.026 		0.0939
-v -0.0207 		-0.0292 		0.0906
-v 0.0036 		-0.0475 		0.104
-v 0.0034 		-0.0466 		0.1049
-v -0.021 		-0.0326 		0.0873
-v -0.0015 		-0.0532 		0.0704
-v 0.0018 		-0.0529 		0.0707
-v -0.0148 		0.0012 		-0.0314
-v -0.0153 		0.0015 		-0.0313
-v -0.0048 		-0.0529 		0.0707
-v 0.0019 		-0.0516 		0.0683
-v -0.0008 		-0.0029 		-0.0317
-v -0.0015 		-0.0519 		0.068
-v -0.0178 		-0.0368 		0.0972
-v -0.0014 		-0.003 		-0.0317
-v -0.0015 		-0.003 		-0.0317
-v -0.0049 		-0.0516 		0.0683
-v -0.0087 		-0.0017 		-0.0316
-v 0.003 		-0.0458 		0.1057
-v -0.018 		-0.0396 		0.0943
-v 0.0025 		-0.0451 		0.1064
-v -0.0179 		-0.0321 		0.0986
-v -0.0187 		-0.035 		0.0957
-v 0.0045 		-0.0444 		0.1059
-v -0.019 		-0.038 		0.0927
-v -0.016 		-0.0465 		0.0771
-v 0.0038 		-0.0434 		0.1069
-v -0.0137 		-0.0488 		0.0748
-v -0.0288 		0.0367 		-0.0282
-v -0.0288 		0.0367 		-0.0282
-v -0.0288 		0.0366 		-0.0282
-v -0.0288 		0.0365 		-0.0282
-v -0.0288 		0.0368 		-0.0282
-v -0.0288 		0.0367 		-0.0282
-v -0.0187 		-0.03 		0.0971
-v -0.0294 		0.0309 		-0.0288
-v -0.0164 		-0.045 		0.0749
-v -0.0195 		-0.0331 		0.0941
-v -0.0198 		-0.0362 		0.091
-v -0.014 		-0.0474 		0.0725
-v 0.0035 		-0.0375 		0.1095
-v -0.0112 		-0.0493 		0.0706
-v -0.0092 		0.0465 		0.0408
-v -0.0066 		0.0478 		0.0105
-v -0.0066 		0.0478 		0.0105
-v -0.0065 		0.0478 		0.0104
-v 0.0253 		0.0222 		-0.0295
-v -0.0066 		0.0488 		0.0105
-v -0.0052 		0.0489 		0.009
-v -0.0075 		0.0478 		0.0124
-v -0.0074 		0.0478 		0.0122
-v -0.0075 		0.0487 		0.0125
-v -0.011 		-0.0507 		0.0729
-v -0.0052 		0.0479 		0.0089
-v 0.0185 		0.0248 		0.027
-v 0.0084 		-0.0136 		0.1024
-v 0.0262 		0.0312 		-0.0309
-v 0.0159 		-0.0188 		0.0934
-v 0.0175 		0.018 		0.0226
-v 0.0175 		0.018 		0.0227
-v 0.0177 		0.018 		0.0226
-v 0.0139 		-0.016 		0.0962
-v -0.0078 		0.0486 		0.0146
-v 0.0114 		-0.0135 		0.0987
-v -0.0075 		0.0485 		0.0167
-v -0.008 		-0.0521 		0.0715
-v 0.0086 		-0.0115 		0.1007
-v 0.0225 		0.0143 		-0.0322
-v -0.0082 		-0.0507 		0.0692
-v -0.0045 		0.0479 		0.0086
-v -0.0076 		0.0478 		0.0127
-v -0.0071 		0.0477 		0.0175
-v -0.0075 		0.0477 		0.0167
-v -0.0078 		0.0477 		0.015
-v -0.0034 		0.0489 		0.008
-v -0.0141 		-0.0501 		0.0838
-v -0.0015 		0.0489 		0.0077
-v 0.0175 		-0.0344 		0.0892
-v 0.0005 		0.0489 		0.008
-v -0.0121 		-0.0521 		0.0818
-v -0.0015 		0.0479 		0.0076
-v -0.0034 		0.0479 		0.008
-v 0.0172 		-0.0312 		0.0924
-v 0.0263 		0.0311 		-0.0288
-v 0.0263 		0.0308 		-0.0288
-v 0.0263 		0.0309 		-0.0288
-v 0.0005 		0.0479 		0.008
-v -0.0149 		-0.0491 		0.0816
-v 0.0163 		-0.028 		0.0956
-v -0.0127 		-0.0512 		0.0794
-v -0.0042 		0.0479 		0.0084
-v -0.0035 		0.0479 		0.008
-v -0.0034 		0.0479 		0.008
-v 0.0029 		-0.0426 		0.1077
-v -0.0015 		0.0479 		0.0081
-v 0.0005 		0.0479 		0.008
-v 0.002 		-0.0419 		0.1084
-v -0.0179 		-0.0251 		0.0985
-v -0.0184 		-0.0229 		0.0969
-v 0.0005 		0.0479 		0.008
-v 0.0015 		0.0479 		0.0086
-v 0.004 		-0.0406 		0.1082
-v 0.0028 		-0.0397 		0.1091
-v 0.009 		0.0049 		0.0143
-v 0.0095 		0.0053 		0.0145
-v -0.0158 		-0.0314 		0.1025
-v -0.017 		-0.034 		0.0999
-v -0.0155 		-0.0479 		0.0793
-v -0.0132 		-0.0501 		0.0771
-v 0.002 		0.0479 		0.0088
-v -0.0166 		-0.0293 		0.1013
-v 0.0008 		-0.0313 		0.1113
-v -0.0015 		-0.0311 		0.1115
-v 0.018 		-0.0326 		0.0873
-v -0.0288 		0.0249 		-0.0292
-v -0.0288 		0.025 		-0.0293
-v -0.0287 		0.0248 		-0.0292
-v -0.0098 		-0.0538 		0.0802
-v -0.0037 		-0.0313 		0.1113
-v 0.0177 		-0.0292 		0.0906
-v -0.0287 		0.0247 		-0.0292
-v -0.0071 		-0.055 		0.079
-v -0.0288 		0.0257 		-0.0291
-v 0.0168 		-0.026 		0.0939
-v -0.0288 		0.0249 		-0.0292
-v 0.0228 		0.0144 		-0.0302
-v 0.0226 		0.0139 		-0.0303
-v -0.0285 		0.0221 		-0.0295
-v 0.0226 		0.014 		-0.0303
-v 0.001 		-0.0287 		0.1112
-v 0.0096 		0.0053 		0.0146
-v 0.0121 		0.0077 		0.0161
-v -0.0015 		-0.0285 		0.1114
-v 0.0125 		0.0082 		0.0164
-v 0.0135 		0.0094 		0.0172
-v 0.0139 		0.0099 		0.0175
-v 0.0126 		0.0083 		0.0164
-v -0.004 		-0.0287 		0.1112
-v 0.0139 		0.01 		0.0175
-v 0.015 		-0.0396 		0.0943
-v 0.0127 		0.0082 		0.0164
-v 0.014 		0.0099 		0.0175
-v 0.0148 		-0.0368 		0.0972
-v 0.016 		-0.038 		0.0927
-v 0.0012 		-0.0261 		0.1109
-v 0.015 		0.0118 		0.0187
-v 0.0151 		0.0118 		0.0187
-v -0.0015 		-0.0259 		0.1112
-v 0.0151 		0.0118 		0.0187
-v -0.0015 		0.0486 		0.0146
-v -0.0042 		-0.0261 		0.1109
-v -0.011 		-0.0182 		0.1054
-v 0.0096 		0.0053 		0.0145
-v -0.0137 		-0.0201 		0.1035
-v 0.0111 		0.0066 		0.0154
-v 0.0106 		0.0062 		0.0151
-v 0.0112 		0.0067 		0.0154
-v -0.0275 		0.0192 		-0.0296
-v 0.0112 		0.0067 		0.0154
-v -0.016 		-0.0224 		0.1012
-v -0.0273 		0.0187 		-0.0298
-v -0.0276 		0.0198 		-0.0296
-v -0.0276 		0.0194 		-0.0298
-v -0.0275 		0.0192 		-0.0296
-v -0.0269 		0.0176 		-0.0298
-v 0.0157 		-0.035 		0.0957
-v 0.0086 		0.0007 		0.0195
-v 0.0096 		0.0013 		0.0202
-v 0.0112 		0.0025 		0.0213
-v 0.0127 		0.0038 		0.0226
-v 0.0185 		0.0247 		-0.0455
-v 0.014 		0.0052 		0.0241
-v 0.0151 		0.0068 		0.0257
-v 0.0168 		-0.0362 		0.091
-v 0.0162 		0.0085 		0.0273
-v 0.017 		0.0103 		0.0291
-v 0.0165 		-0.0331 		0.0941
-v 0.0177 		0.0121 		0.031
-v 0.0181 		0.014 		0.0329
-v 0.0184 		0.0159 		0.0348
-v 0.0061 		0.0466 		0.0406
-v 0.0049 		0.0471 		0.0409
-v 0.0185 		0.0244 		-0.0454
-v 0.0079 		0.0456 		0.04
-v 0.014 		-0.034 		0.0999
-v 0.0029 		-0.0319 		0.1107
-v 0.0128 		-0.0314 		0.1025
-v 0.0185 		0.0424 		-0.044
-v -0.0102 		-0.0529 		0.0777
-v 0.0034 		-0.0293 		0.1106
-v -0.0075 		-0.0542 		0.0764
-v 0.0149 		-0.0321 		0.0986
-v -0.0257 		0.0139 		-0.0303
-v -0.0045 		-0.055 		0.0757
-v 0.0136 		-0.0293 		0.1013
-v -0.0106 		-0.0519 		0.0753
-v -0.0112 		-0.0159 		0.104
-v -0.0077 		-0.0532 		0.0739
-v -0.014 		-0.0178 		0.1021
-v -0.0164 		-0.0202 		0.0997
-v 0.0022 		0.0489 		0.009
-v -0.0047 		-0.0541 		0.0731
-v 0.0022 		0.0479 		0.0089
-v 0.0023 		0.0479 		0.009
-v 0.0036 		0.0478 		0.0105
-v 0.0036 		0.0488 		0.0105
-v 0.0036 		0.0478 		0.0105
-v 0.0037 		0.0478 		0.0106
-v 0.0045 		0.0487 		0.0125
-v -0.0241 		0.0115 		-0.0303
-v 0.0048 		0.0486 		0.0146
-v -0.0121 		-0.0271 		0.1069
-v 0.0045 		0.0478 		0.0124
-v -0.017 		-0.0452 		0.0887
-v 0.0046 		0.0478 		0.0127
-v -0.0141 		-0.0291 		0.1048
-v -0.0158 		-0.0478 		0.0861
-v 0.0048 		0.0477 		0.015
-v 0.0046 		0.0477 		0.0159
-v -0.0127 		-0.0247 		0.1059
-v -0.0166 		-0.0466 		0.084
-v -0.0149 		-0.0269 		0.1038
-v 0.0038 		-0.0268 		0.1103
-v -0.0173 		-0.0453 		0.0819
-v -0.0251 		0.0221 		-0.0401
-v -0.0132 		-0.0224 		0.1048
-v -0.0155 		-0.0246 		0.1026
-v 0.0049 		0.0428 		0.0384
-v 0.0066 		0.0428 		0.0384
-v 0.0067 		0.0428 		0.0384
-v 0.0003 		-0.0363 		0.1107
-v -0.0173 		-0.0272 		0.1
-v 0.0062 		0.0465 		0.0408
-v 0.0079 		0.0455 		0.0402
-v -0.0015 		-0.0362 		0.1109
-v -0.026 		0.0214 		-0.0381
-v -0.0032 		-0.0363 		0.1107
-v -0.0271 		0.0267 		-0.0377
-v 0.0005 		-0.0338 		0.1111
-v -0.0015 		-0.0337 		0.1113
-v -0.0071 		-0.0242 		0.1097
-v -0.0279 		0.0262 		-0.0356
-v -0.0035 		-0.0338 		0.1111
-v -0.0098 		-0.0254 		0.1085
-v -0.0045 		-0.0209 		0.1097
-v 0.0183 		0.0268 		0.0282
-v -0.0075 		-0.0217 		0.1089
-v 0.0183 		0.0271 		0.0284
-v 0.0183 		0.0271 		0.0284
-v -0.0284 		0.0258 		-0.0335
-v 0.018 		0.0294 		0.0299
-v -0.0288 		0.0315 		-0.033
-v 0.0184 		0.0271 		0.0284
-v 0.0181 		0.0294 		0.0299
-v 0.018 		0.0294 		0.0299
-v 0.0157 		-0.03 		0.0971
-v 0.0175 		0.0316 		0.0313
-v 0.0175 		0.0316 		0.0313
-v 0.0161 		0.0358 		0.0339
-v 0.002 		-0.0368 		0.1103
-v 0.016 		0.0358 		0.034
-v 0.0043 		-0.0352 		0.1097
-v 0.0162 		0.0359 		0.034
-v -0.0102 		-0.023 		0.1077
-v 0.016 		0.0359 		0.034
-v 0.0025 		-0.0343 		0.1106
-v 0.0177 		0.0316 		0.0313
-v -0.0077 		-0.0192 		0.108
-v -0.0106 		-0.0206 		0.1066
-v -0.0062 		-0.0021 		-0.0336
-v -0.0062 		-0.0018 		-0.0344
-v 0.0169 		0.0338 		0.0327
-v 0.0169 		0.0338 		0.0327
-v -0.0086 		-0.0009 		-0.0346
-v 0.017 		0.0338 		0.0327
-v 0.0185 		0.049 		-0.0398
-v 0.0014 		-0.0235 		0.1104
-v 0.0034 		-0.0021 		-0.0336
-v 0.0033 		-0.0018 		-0.0344
-v -0.0015 		-0.0233 		0.1107
-v 0.0003 		-0.0021 		-0.0344
-v -0.0014 		-0.0026 		-0.0336
-v 0.0186 		0.0116 		-0.0385
-v -0.0014 		-0.0023 		-0.0344
-v 0.0111 		0.043 		0.0385
-v -0.0044 		-0.002 		-0.0344
-v -0.0014 		-0.0026 		-0.0336
-v -0.0014 		-0.0026 		-0.0336
-v -0.0014 		-0.0026 		-0.0336
-v 0.0095 		0.0444 		0.0393
-v 0.0149 		-0.0251 		0.0985
-v 0.013 		-0.0224 		0.1012
-v 0.0107 		-0.0201 		0.1035
-v 0.0151 		0.0378 		0.0352
-v 0.015 		0.0379 		0.0353
-v 0.0151 		0.0378 		0.0352
-v 0.0139 		0.0397 		0.0364
-v 0.0154 		-0.0229 		0.0969
-v 0.0134 		-0.0202 		0.0997
-v 0.011 		-0.0178 		0.1021
-v -0.0184 		0.0458 		-0.0454
-v 0.0151 		0.0379 		0.0353
-v 0.014 		0.0397 		0.0365
-v 0.0185 		0.0245 		-0.0455
-v 0.0045 		0.0485 		0.0167
-v 0.0139 		0.0397 		0.0365
-v 0.0112 		-0.0291 		0.1048
-v 0.0126 		0.0414 		0.0375
-v 0.0091 		-0.0271 		0.1069
-v -0.0179 		0.0491 		-0.0438
-v 0.0127 		0.0414 		0.0376
-v -0.0184 		0.0491 		-0.0435
-v 0.0112 		0.0428 		0.0384
-v -0.02 		0.0491 		-0.0417
-v -0.0193 		0.0491 		-0.0425
-v 0.0119 		-0.0269 		0.1038
-v 0.011 		0.0428 		0.0384
-v 0.0111 		0.0428 		0.0384
-v 0.0097 		-0.0247 		0.1059
-v 0.0088 		0.0428 		0.0385
-v 0.0125 		0.0414 		0.0376
-v 0.0126 		0.0414 		0.0375
-v 0.0096 		0.0444 		0.0394
-v 0.0112 		0.043 		0.0386
-v 0.0143 		-0.0272 		0.1
-v 0.0087 		0.0428 		0.0385
-v 0.0045 		0.0477 		0.0167
-v 0.0125 		-0.0246 		0.1026
-v 0.0041 		0.0477 		0.0175
-v -0.0052 		0.0483 		0.0202
-v 0.0103 		-0.0224 		0.1048
-v -0.0066 		0.0484 		0.0187
-v -0.0066 		0.0476 		0.0186
-v -0.0045 		0.0476 		0.0205
-v -0.0052 		0.0476 		0.0202
-v -0.0057 		0.0476 		0.0197
-v -0.0116 		0.0418 		-0.0507
-v -0.0135 		0.0429 		-0.0496
-v -0.0044 		-0.0235 		0.1104
-v 0.0184 		0.0199 		0.0387
-v -0.0121 		0.0454 		-0.0494
-v 0.0185 		0.0192 		0.0381
-v 0.0185 		0.0179 		0.0367
-v 0.0015 		-0.0209 		0.1097
-v 0.0182 		0.0213 		0.0401
-v 0.0181 		0.0218 		0.0406
-v 0.0178 		0.0232 		0.0421
-v 0.0177 		0.0237 		0.0425
-v -0.0015 		-0.0207 		0.11
-v 0.017 		0.0255 		0.0444
-v -0.0152 		0.044 		-0.0483
-v -0.0136 		0.0468 		-0.0481
-v 0.0163 		0.027 		0.0458
-v 0.0162 		0.0273 		0.0462
-v 0.0151 		0.029 		0.0478
-v 0.0153 		0.0287 		0.0476
-v -0.0266 		0.0207 		-0.0361
-v 0.014 		0.0306 		0.0494
-v 0.0128 		0.0319 		0.0507
-v 0.0127 		0.032 		0.0509
-v 0.0113 		0.0332 		0.0521
-v 0.0112 		0.0333 		0.0522
-v -0.0271 		0.0201 		-0.034
-v -0.0169 		0.0449 		-0.0469
-v 0.0096 		0.0345 		0.0533
-v 0.008 		0.0003 		0.0192
-v 0.0062 		-0.0005 		0.0183
-v 0.0042 		-0.0242 		0.1097
-v 0.0186 		0.016 		0.0348
-v 0.0097 		0.0013 		0.0202
-v 0.0113 		0.0025 		0.0213
-v 0.0045 		-0.0217 		0.1089
-v 0.0128 		0.0038 		0.0227
-v 0.0141 		0.0053 		0.0241
-v -0.0274 		0.0196 		-0.0318
-v 0.0153 		0.0068 		0.0257
-v 0.0048 		-0.0192 		0.108
-v 0.0163 		0.0085 		0.0274
-v 0.0171 		0.0103 		0.0291
-v -0.0287 		0.0253 		-0.0313
-v 0.0178 		0.0121 		0.031
-v 0.0183 		0.014 		0.0329
-v -0.0097 		0.0406 		-0.0517
-v 0.0186 		0.0199 		0.0387
-v -0.0137 		-0.0395 		0.103
-v 0.0183 		0.0218 		0.0407
-v 0.0178 		0.0237 		0.0426
-v 0.0005 		0.0476 		0.0211
-v -0.0015 		0.0476 		0.0215
-v -0.0282 		0.0222 		-0.0295
-v 0.0005 		0.0482 		0.0212
-v -0.0015 		0.0482 		0.0215
-v -0.0143 		-0.0417 		0.1009
-v 0.0171 		0.0256 		0.0444
-v -0.0034 		0.0482 		0.0212
-v -0.0145 		-0.0439 		0.0986
-v 0.0163 		0.0273 		0.0462
-v -0.0291 		0.0312 		-0.0309
-v 0.0153 		0.029 		0.0479
-v 0.0115 		-0.0439 		0.0986
-v 0.0113 		-0.0417 		0.1009
-v 0.0107 		-0.0395 		0.103
-v 0.0062 		-0.0006 		0.0183
-v 0.0128 		-0.0426 		0.0973
-v 0.0126 		-0.0401 		0.0998
-v -0.0056 		0.0379 		-0.053
-v -0.0254 		0.0143 		-0.0322
-v -0.0051 		0.0388 		-0.053
-v -0.0155 		-0.0401 		0.0998
-v -0.0045 		0.0395 		-0.0529
-v -0.0158 		-0.0426 		0.0973
-v 0.0036 		0.0484 		0.0187
-v 0.0022 		0.0483 		0.0202
-v -0.0167 		-0.0385 		0.0985
-v -0.0169 		-0.0412 		0.0959
-v 0.0016 		0.0476 		0.0205
-v -0.0034 		0.0476 		0.0211
-v -0.0034 		0.0476 		0.0211
-v 0.0022 		0.0476 		0.0202
-v 0.0036 		0.0476 		0.0186
-v 0.0036 		0.0476 		0.0186
-v 0.0032 		0.0476 		0.0191
-v -0.0288 		0.025 		-0.0293
-v -0.0287 		0.0246 		-0.0293
-v -0.0041 		0.0476 		0.0208
-v 0.0177 		0.0213 		0.046
-v 0.0171 		0.023 		0.047
-v 0.0176 		0.0213 		0.046
-v -0.0292 		0.0306 		-0.0288
-v 0.0177 		0.0211 		0.0458
-v -0.0077 		0.0393 		-0.0524
-v 0.0177 		0.0215 		0.0456
-v 0.0177 		0.0214 		0.0457
-v 0.014 		-0.0412 		0.0959
-v -0.0292 		0.0308 		-0.0288
-v 0.0171 		0.023 		0.047
-v -0.0288 		0.0365 		-0.0283
-v -0.0288 		0.0367 		-0.0283
-v -0.0069 		0.0405 		-0.0523
-v 0.0137 		-0.0385 		0.0985
-v -0.0292 		0.0309 		-0.0288
-v -0.0061 		0.0416 		-0.0522
-v 0.017 		0.0234 		0.0473
-v 0.017 		0.0234 		0.0473
-v 0.017 		0.0239 		0.0468
-v 0.0162 		0.0255 		0.0487
-v 0.0163 		0.0251 		0.0484
-v 0.0163 		0.0254 		0.0482
-v -0.0114 		-0.0357 		0.1069
-v -0.0127 		-0.0375 		0.1051
-v -0.0252 		0.0135 		-0.0303
-v 0.0161 		0.0255 		0.0487
-v -0.0255 		0.0139 		-0.0303
-v 0.0151 		0.0275 		0.0499
-v 0.0153 		0.0272 		0.0497
-v -0.0255 		0.014 		-0.0302
-v 0.0162 		0.0258 		0.048
-v 0.0162 		0.026 		0.048
-v 0.0153 		0.0275 		0.0494
-v -0.0104 		0.0438 		-0.0506
-v -0.009 		0.0456 		-0.0504
-v 0.0097 		-0.0375 		0.1051
-v 0.0151 		0.0275 		0.0499
-v 0.014 		0.0294 		0.0511
-v 0.0055 		-0.001 		-0.0345
-v 0.0084 		-0.0357 		0.1069
-v 0.0152 		0.0278 		0.0493
-v 0.0151 		0.028 		0.0493
-v -0.0075 		0.0473 		0.0323
-v 0.0119 		-0.0378 		0.1021
-v -0.0078 		0.0482 		0.0345
-v -0.0075 		0.0483 		0.0324
-v -0.0138 		-0.0355 		0.1044
-v -0.0149 		-0.0378 		0.1021
-v 0.0127 		0.0311 		0.0522
-v -0.0104 		0.0475 		-0.0492
-v -0.0149 		-0.0335 		0.1035
-v -0.016 		-0.0359 		0.1011
-v -0.0076 		0.0019 		-0.0036
-v -0.005 		0.0425 		-0.0522
-v 0.0046 		0.0019 		-0.0036
-v -0.0285 		0.0397 		-0.028
-v -0.0066 		0.0474 		0.0304
-v -0.0226 		0.049 		-0.0379
-v -0.0066 		0.0484 		0.0305
-v -0.0228 		0.049 		-0.0375
-v 0.0109 		-0.0355 		0.1044
-v -0.0075 		0.0473 		0.0326
-v -0.0068 		0.0473 		0.0326
-v -0.0045 		0.0473 		0.0326
-v -0.0076 		0.0473 		0.0327
-v -0.0114 		-0.0444 		0.1026
-v -0.0076 		0.0473 		0.0328
-v -0.024 		0.0482 		-0.0359
-v -0.0052 		0.0475 		0.0289
-v -0.0116 		-0.0462 		0.1009
-v -0.0236 		0.0489 		-0.0359
-v -0.0052 		0.0485 		0.0289
-v 0.0068 		0.0406 		-0.0517
-v -0.0075 		0.0437 		-0.0514
-v -0.0115 		-0.0394 		0.1056
-v -0.0062 		0.0448 		-0.0513
-v -0.0124 		-0.0412 		0.1037
-v -0.0047 		0.0457 		-0.0512
-v -0.0271 		0.043 		-0.0321
-v -0.0129 		-0.0431 		0.1018
-v -0.0274 		0.0427 		-0.0299
-v 0.0061 		0.0456 		-0.0504
-v -0.0073 		0.047 		-0.0503
-v -0.0131 		-0.0451 		0.0998
-v -0.0055 		0.0481 		-0.0502
-v 0.0075 		0.0438 		-0.0506
-v -0.0282 		0.0396 		-0.028
-v 0.0075 		0.0475 		-0.0492
-v -0.0253 		0.0221 		-0.0088
-v -0.0087 		0.0422 		-0.0515
-v 0.0058 		0.0422 		-0.0515
-v -0.011 		-0.0427 		0.1043
-v -0.0186 		0.0504 		-0.0394
-v -0.0201 		0.049 		-0.0362
-v -0.0077 		0.0473 		0.0338
-v -0.0077 		0.0473 		0.0338
-v -0.0077 		0.0473 		0.0338
-v -0.0203 		0.0489 		-0.0356
-v 0.0055 		0.0492 		-0.0491
-v 0.0053 		0.0493 		-0.0491
-v 0.0056 		0.0493 		-0.049
-v -0.008 		-0.0455 		0.1049
-v -0.0117 		0.0492 		-0.0479
-v 0.005 		0.0506 		-0.0478
-v -0.0275 		0.0424 		-0.0278
-v -0.0275 		0.0423 		-0.0277
-v -0.0275 		0.0424 		-0.0277
-v -0.0116 		0.0492 		-0.0479
-v -0.0275 		0.0424 		-0.0278
-v -0.0151 		0.0481 		-0.0467
-v -0.0275 		0.0425 		-0.0278
-v -0.0132 		0.0492 		-0.0471
-v -0.0117 		0.0492 		-0.0478
-v -0.0142 		0.0492 		-0.0466
-v 0.0084 		0.0492 		-0.0459
-v 0.005 		0.0492 		-0.0478
-v -0.0275 		0.0424 		-0.0277
-v -0.0117 		0.0492 		-0.0479
-v -0.0165 		0.0492 		-0.0451
-v -0.0165 		0.0492 		-0.0451
-v -0.0164 		0.0492 		-0.0451
-v -0.0148 		0.0492 		-0.0462
-v -0.0139 		0.0505 		-0.0445
-v 0.0087 		0.0418 		-0.0507
-v -0.0247 		0.0483 		-0.0338
-v -0.0237 		0.0489 		-0.0355
-v 0.0092 		0.0454 		-0.0494
-v 0.0106 		0.0429 		-0.0496
-v 0.013 		-0.0359 		0.1011
-v 0.0108 		0.0468 		-0.0481
-v 0.0119 		-0.0335 		0.1035
-v 0.0123 		0.044 		-0.0483
-v -0.0078 		0.0473 		0.0346
-v -0.0077 		0.0472 		0.0354
-v 0.0005 		0.0486 		0.0279
-v 0.014 		0.0449 		-0.0469
-v -0.0275 		0.0423 		-0.0278
-v -0.0034 		0.0475 		0.0279
-v -0.011 		0.0492 		-0.0461
-v -0.0139 		0.0492 		-0.0445
-v 0.0086 		-0.0462 		0.1009
-v 0.0084 		-0.0444 		0.1026
-v 0.0101 		-0.0451 		0.0998
-v 0.0088 		0.0492 		-0.0479
-v 0.0087 		0.0492 		-0.0479
-v 0.0099 		-0.0431 		0.1018
-v 0.0088 		0.0492 		-0.0478
-v 0.0113 		0.0492 		-0.0466
-v 0.0122 		0.0481 		-0.0467
-v 0.0094 		-0.0412 		0.1037
-v 0.0085 		-0.0394 		0.1056
-v 0.0135 		0.0492 		-0.0451
-v -0.0084 		0.0492 		-0.0491
-v 0.0136 		0.0492 		-0.0451
-v 0.0136 		0.0492 		-0.0451
-v -0.0082 		0.0493 		-0.0491
-v -0.0066 		0.0493 		-0.0494
-v 0.0109 		0.0505 		-0.0445
-v -0.0058 		0.0493 		-0.0496
-v -0.0048 		0.0493 		-0.0497
-v 0.0094 		-0.0335 		0.1064
-v 0.0109 		0.0492 		-0.0445
-v 0.0103 		-0.0313 		0.1057
-v -0.0099 		0.0493 		-0.0485
-v 0.0084 		-0.0294 		0.1076
-v -0.0084 		0.0493 		-0.049
-v -0.0083 		0.0493 		-0.0491
-v -0.008 		0.0506 		-0.0478
-v 0.0156 		0.0458 		-0.0454
-v -0.008 		0.0492 		-0.0478
-v 0.0155 		0.0491 		-0.0435
-v 0.0161 		0.0491 		-0.0428
-v 0.0171 		0.0491 		-0.0417
-v -0.0071 		0.0035 		0.0087
-v -0.0072 		0.0036 		0.0087
-v -0.0015 		0.0476 		0.0276
-v -0.0053 		0.0032 		0.0085
-v -0.0073 		0.0033 		0.0086
-v -0.0054 		0.0027 		0.0082
-v 0.0005 		0.0475 		0.0279
-v -0.0091 		0.0041 		0.009
-v -0.0034 		0.0486 		0.0279
-v 0.0122 		0.0315 		-0.0505
-v 0.0122 		0.0315 		-0.0505
-v -0.0014 		0.038 		-0.0533
-v -0.003 		0.0373 		-0.0534
-v 0.0122 		0.0315 		-0.0505
-v -0.0027 		0.0376 		-0.0533
-v -0.0015 		0.0026 		0.0081
-v -0.0034 		0.0029 		0.0083
-v 0.014 		0.0301 		-0.0495
-v -0.0015 		0.0486 		0.0276
-v -0.0023 		0.0378 		-0.0533
-v -0.0019 		0.0379 		-0.0533
-v 0.0157 		0.0284 		-0.0483
-v 0.0146 		0.0295 		-0.0491
-v 0.0023 		0.0032 		0.0085
-v 0.0004 		0.0029 		0.0083
-v 0.0024 		0.0027 		0.0082
-v 0.0005 		0.0024 		0.008
-v -0.0015 		0.0023 		0.008
-v 0.0041 		0.0035 		0.0087
-v 0.0042 		0.0036 		0.0087
-v 0.0043 		0.0033 		0.0086
-v -0.0034 		0.0024 		0.008
-v 0.0167 		0.0271 		-0.0474
-v 0.0172 		0.0265 		-0.0469
-v 0.0183 		0.0248 		-0.0457
-v -0.0039 		0.0473 		0.0326
-v -0.0028 		0.0473 		0.0325
-v -0.0021 		0.0473 		0.0325
-v -0.0014 		0.0473 		0.0326
-v -0.0009 		0.0473 		0.0325
-v -0.0015 		0.0473 		0.0326
-v -0.0002 		0.0473 		0.0325
-v -0.0014 		0.0409 		-0.0528
-v 0.0009 		0.0473 		0.0326
-v 0.002 		0.0473 		0.0326
-v -0.0039 		0.0401 		-0.0528
-v 0.0053 		0.0379 		-0.0525
-v -0.0031 		0.0405 		-0.0528
-v -0.0109 		0.0051 		0.0096
-v -0.0089 		0.0045 		0.0093
-v 0.0075 		0.0387 		-0.0518
-v 0.0036 		0.0474 		0.0304
-v 0.0036 		0.0484 		0.0305
-v 0.0045 		0.0483 		0.0324
-v -0.0023 		0.0408 		-0.0528
-v 0.0022 		0.0475 		0.0289
-v 0.0022 		0.0485 		0.0289
-v 0.0056 		0.0364 		-0.0527
-v 0.0045 		0.0473 		0.0323
-v 0.0057 		0.0349 		-0.0528
-v -0.001 		0.0379 		-0.0533
-v -0.0054 		0.0018 		0.0123
-v -0.0006 		0.0378 		-0.0533
-v -0.0002 		0.0376 		-0.0533
-v -0.0054 		0.0005 		0.0141
-v 0.0038 		0.0473 		0.0326
-v 0.0046 		0.0473 		0.0326
-v -0.0054 		0.0018 		0.0123
-v 0.0046 		0.0473 		0.0326
-v 0.0001 		0.0373 		-0.0534
-v 0.008 		0.0348 		-0.0521
-v 0.0046 		0.0473 		0.0327
-v 0.0046 		0.0473 		0.0328
-v 0.0074 		0.0341 		-0.0524
-v 0.008 		0.0339 		-0.0522
-v -0.0006 		0.0408 		-0.0528
-v 0.0002 		0.0405 		-0.0528
-v 0.001 		0.0401 		-0.0528
-v 0.0047 		0.0473 		0.0338
-v 0.0047 		0.0473 		0.0338
-v 0.0047 		0.0473 		0.0338
-v 0.0017 		0.0395 		-0.0529
-v 0.0047 		0.0473 		0.0338
-v 0.0048 		0.0473 		0.0346
-v 0.0048 		0.0473 		0.0346
-v -0.0015 		0.0482 		0.0345
-v -0.0014 		0.0437 		-0.0521
-v -0.0039 		0.0431 		-0.0521
-v -0.0027 		0.0435 		-0.0521
-v 0.0048 		0.0482 		0.0345
-v -0.0014 		0.0464 		-0.0512
-v 0.0047 		0.0472 		0.0354
-v -0.0031 		0.0462 		-0.0512
-v -0.0014 		0.049 		-0.0501
-v -0.0055 		0.0471 		0.0398
-v -0.0066 		0.0472 		0.0385
-v -0.0052 		0.0471 		0.0409
-v -0.0035 		0.0488 		-0.0501
-v -0.0072 		0.0471 		0.0409
-v -0.0053 		0.0471 		0.0412
-v -0.0078 		0.0471 		0.0412
-v -0.0072 		0.0471 		0.0412
-v -0.0014 		0.0493 		-0.05
-v -0.0073 		0.0471 		0.0416
-v -0.0036 		0.0493 		-0.0499
-v -0.0031 		0.0493 		-0.0499
-v -0.0066 		0.048 		0.0386
-v -0.0052 		0.0471 		0.0401
-v -0.0052 		0.0479 		0.0401
-v -0.0068 		0.0472 		0.0382
-v -0.0075 		0.0472 		0.0366
-v -0.0002 		0.0435 		-0.0521
-v -0.0075 		0.0481 		0.0367
-v -0.0075 		0.0472 		0.0366
-v 0.001 		0.0431 		-0.0521
-v -0.0045 		0.0471 		0.0405
-v 0.0002 		0.0462 		-0.0512
-v 0.0018 		0.0457 		-0.0512
-v -0.004 		0.0469 		0.0408
-v -0.004 		0.0469 		0.0408
-v -0.0035 		0.0469 		0.041
-v -0.0035 		0.0469 		0.041
-v 0.0006 		0.0488 		-0.0501
-v 0.0007 		0.0493 		-0.0499
-v -0.0011 		0.0493 		-0.05
-v -0.0015 		0.0469 		0.0408
-v -0.0032 		0.0469 		0.0408
-v 0.0022 		0.0388 		-0.053
-v -0.0033 		0.0469 		0.041
-v -0.0032 		0.0469 		0.041
-v 0.0027 		0.0379 		-0.053
-v -0.0015 		0.0469 		0.041
-v 0.0032 		0.0416 		-0.0522
-v 0.0003 		0.0469 		0.0408
-v 0.001 		0.0469 		0.0408
-v 0.0004 		0.0469 		0.0408
-v 0.0001 		0.0469 		0.041
-v 0.0004 		0.0469 		0.041
-v 0.0004 		0.0469 		0.041
-v 0.0005 		0.0469 		0.041
-v -0.0033 		0.0469 		0.0408
-v -0.0034 		0.0469 		0.0408
-v -0.0034 		0.0469 		0.041
-v -0.0033 		0.0469 		0.041
-v 0.001 		0.0469 		0.0408
-v 0.0005 		0.0469 		0.041
-v -0.0041 		0.0471 		0.0407
-v -0.0038 		0.0471 		0.0409
-v -0.0038 		0.0471 		0.0408
-v -0.0035 		0.0469 		0.041
-v -0.0034 		0.0471 		0.0412
-v 0.0005 		0.0479 		0.0411
-v 0.002 		0.0471 		0.0402
-v 0.0018 		0.0471 		0.0403
-v 0.0011 		0.0471 		0.0407
-v 0.0008 		0.0471 		0.0409
-v 0.0004 		0.0471 		0.0412
-v 0.0005 		0.0469 		0.0411
-v 0.0004 		0.047 		0.0411
-v 0.0001 		0.047 		0.0411
-v -0.0015 		0.0479 		0.0414
-v 0.0001 		0.047 		0.0411
-v -0.0001 		0.0471 		0.0412
-v -0.0001 		0.0471 		0.0412
-v -0.0001 		0.0471 		0.0412
-v -0.0002 		0.0471 		0.0412
-v -0.0015 		0.0471 		0.0414
-v -0.0033 		0.047 		0.0411
-v -0.0034 		0.0469 		0.0411
-v -0.0032 		0.047 		0.0411
-v -0.0031 		0.047 		0.0411
-v -0.0034 		0.0479 		0.0411
-v -0.0029 		0.0471 		0.0412
-v -0.0029 		0.0471 		0.0412
-v -0.0029 		0.0471 		0.0412
-v -0.0029 		0.0471 		0.0412
-v -0.0028 		0.0471 		0.0412
-v -0.0038 		0.0471 		0.0409
-v -0.0038 		0.0471 		0.0409
-v -0.0038 		0.0471 		0.0409
-v -0.0038 		0.0471 		0.0409
-v 0.0022 		0.0471 		0.0401
-v 0.0022 		0.0471 		0.0401
-v 0.0022 		0.0471 		0.0409
-v 0.0042 		0.0471 		0.0409
-v 0.0023 		0.0471 		0.0412
-v 0.0043 		0.0471 		0.0412
-v 0.0048 		0.0471 		0.0412
-v 0.0043 		0.0471 		0.0416
-v 0.0022 		0.0479 		0.0401
-v 0.0022 		0.0471 		0.0401
-v 0.0036 		0.0472 		0.0385
-v 0.0034 		0.0472 		0.0388
-v 0.0036 		0.048 		0.0386
-v 0.0045 		0.0481 		0.0367
-v 0.0045 		0.0472 		0.0366
-v 0.0044 		0.0472 		0.0368
-# 2330 vertices
-
-g group_0_10988977
-
-usemtl color_10988977
-s 0
-
-f 9 	11 	859
-f 2009 	1998 	13
-f 35 	36 	2009
-f 5 	315 	6
-f 18 	315 	5
-f 20 	23 	7
-f 20 	7 	8
-f 7 	23 	13
-f 25 	2009 	29
-f 2 	24 	30
-f 103 	28 	102
-f 28 	2009 	74
-f 2009 	13 	35
-f 10 	34 	12
-f 10 	32 	34
-f 37 	38 	33
-f 2204 	30 	85
-f 19 	39 	24
-f 30 	24 	89
-f 45 	52 	44
-f 339 	111 	2164
-f 47 	49 	46
-f 44 	52 	53
-f 51 	2165 	54
-f 52 	64 	63
-f 44 	53 	43
-f 63 	53 	52
-f 33 	58 	37
-f 27 	2310 	41
-f 2290 	2296 	17
-f 17 	16 	2290
-f 2319 	2290 	16
-f 822 	2319 	15
-f 58 	61 	37
-f 45 	1728 	52
-f 62 	39 	19
-f 2088 	65 	62
-f 38 	37 	60
-f 62 	57 	39
-f 63 	83 	53
-f 62 	65 	57
-f 55 	75 	67
-f 65 	69 	72
-f 47 	68 	2042
-f 48 	70 	50
-f 50 	73 	55
-f 50 	70 	73
-f 102 	28 	74
-f 57 	65 	72
-f 18 	25 	330
-f 2042 	49 	47
-f 29 	330 	25
-f 53 	77 	43
-f 72 	277 	265
-f 43 	77 	71
-f 80 	81 	82
-f 53 	83 	77
-f 87 	84 	108
-f 33 	66 	58
-f 90 	58 	66
-f 89 	24 	39
-f 95 	90 	66
-f 118 	91 	119
-f 92 	119 	91
-f 2143 	2144 	89
-f 30 	89 	2144
-f 75 	55 	73
-f 155 	2041 	154
-f 51 	54 	2198
-f 2041 	155 	66
-f 23 	36 	35
-f 23 	35 	13
-f 2165 	94 	54
-f 23 	96 	36
-f 74 	36 	96
-f 66 	158 	95
-f 2165 	98 	94
-f 28 	99 	29
-f 100 	99 	28
-f 94 	98 	343
-f 98 	97 	101
-f 100 	28 	103
-f 101 	343 	98
-f 10 	73 	70
-f 2160 	105 	104
-f 84 	87 	120
-f 105 	2160 	106
-f 942 	101 	107
-f 104 	107 	97
-f 99 	333 	29
-f 105 	107 	104
-f 101 	97 	107
-f 330 	29 	333
-f 100 	333 	99
-f 106 	107 	105
-f 84 	1 	108
-f 2159 	109 	110
-f 2160 	110 	106
-f 2159 	111 	109
-f 333 	100 	112
-f 112 	100 	96
-f 96 	103 	102
-f 96 	102 	74
-f 81 	118 	82
-f 107 	110 	348
-f 110 	109 	348
-f 306 	822 	80
-f 106 	110 	107
-f 103 	96 	100
-f 111 	348 	109
-f 113 	115 	116
-f 118 	81 	16
-f 117 	113 	116
-f 111 	339 	348
-f 87 	121 	120
-f 122 	115 	113
-f 122 	113 	117
-f 124 	2049 	123
-f 1727 	127 	123
-f 124 	123 	129
-f 130 	129 	123
-f 127 	130 	123
-f 1727 	255 	127
-f 131 	127 	255
-f 131 	132 	130
-f 131 	130 	127
-f 135 	86 	125
-f 86 	2257 	125
-f 126 	125 	2257
-f 2258 	2236 	126
-f 115 	340 	403
-f 126 	2239 	128
-f 115 	403 	116
-f 116 	403 	117
-f 129 	149 	124
-f 333 	112 	117
-f 217 	209 	129
-f 130 	217 	129
-f 132 	219 	130
-f 95 	133 	90
-f 58 	90 	61
-f 73 	10 	12
-f 117 	112 	122
-f 340 	115 	112
-f 73 	12 	75
-f 61 	60 	37
-f 61 	90 	133
-f 134 	133 	95
-f 122 	112 	115
-f 66 	155 	158
-f 145 	2049 	148
-f 137 	2049 	141
-f 316 	317 	6
-f 140 	143 	144
-f 140 	144 	141
-f 142 	70 	48
-f 332 	18 	331
-f 149 	150 	147
-f 148 	147 	150
-f 95 	160 	134
-f 147 	124 	149
-f 1232 	952 	153
-f 138 	151 	139
-f 150 	143 	145
-f 140 	145 	143
-f 139 	151 	159
-f 95 	158 	160
-f 145 	148 	150
-f 143 	183 	144
-f 157 	1900 	161
-f 139 	159 	142
-f 164 	1905 	167
-f 137 	144 	1066
-f 1907 	1908 	170
-f 165 	1907 	170
-f 141 	144 	137
-f 171 	1910 	174
-f 177 	1066 	175
-f 144 	175 	1066
-f 211 	199 	160
-f 356 	223 	188
-f 181 	1913 	180
-f 178 	1913 	181
-f 146 	134 	160
-f 151 	14 	159
-f 155 	185 	158
-f 154 	185 	155
-f 186 	144 	184
-f 183 	184 	144
-f 182 	1916 	190
-f 186 	175 	144
-f 185 	188 	158
-f 160 	158 	188
-f 159 	14 	26
-f 150 	200 	143
-f 183 	143 	191
-f 192 	136 	193
-f 149 	240 	150
-f 129 	213 	149
-f 184 	183 	195
-f 191 	197 	183
-f 195 	183 	197
-f 207 	129 	209
-f 1610 	1614 	93
-f 196 	210 	198
-f 93 	1614 	194
-f 176 	146 	160
-f 191 	143 	200
-f 213 	129 	207
-f 244 	240 	206
-f 220 	130 	219
-f 1089 	356 	188
-f 130 	218 	217
-f 199 	176 	160
-f 203 	149 	213
-f 2060 	56 	135
-f 209 	214 	207
-f 213 	207 	206
-f 203 	213 	206
-f 214 	206 	207
-f 218 	130 	220
-f 216 	160 	215
-f 220 	219 	226
-f 211 	160 	216
-f 202 	225 	205
-f 2060 	135 	224
-f 160 	188 	222
-f 215 	160 	222
-f 221 	225 	202
-f 209 	217 	214
-f 125 	224 	135
-f 225 	227 	205
-f 220 	226 	218
-f 226 	214 	218
-f 217 	218 	214
-f 206 	251 	244
-f 214 	252 	206
-f 205 	227 	208
-f 30 	2144 	88
-f 191 	200 	197
-f 197 	248 	195
-f 89 	39 	231
-f 175 	186 	233
-f 39 	57 	231
-f 221 	194 	234
-f 229 	2144 	230
-f 89 	231 	235
-f 175 	233 	177
-f 233 	577 	177
-f 221 	234 	225
-f 237 	238 	239
-f 184 	195 	186
-f 225 	236 	227
-f 195 	233 	186
-f 2143 	2147 	237
-f 235 	2147 	89
-f 241 	150 	240
-f 200 	150 	241
-f 242 	237 	239
-f 149 	203 	240
-f 225 	234 	236
-f 241 	240 	244
-f 203 	206 	240
-f 251 	249 	244
-f 239 	535 	242
-f 251 	206 	252
-f 243 	242 	535
-f 252 	214 	253
-f 226 	253 	214
-f 1656 	45 	236
-f 200 	244 	197
-f 200 	241 	244
-f 598 	577 	599
-f 599 	233 	247
-f 195 	247 	233
-f 248 	247 	195
-f 234 	1656 	236
-f 248 	197 	249
-f 244 	249 	197
-f 198 	210 	250
-f 2144 	859 	88
-f 253 	226 	398
-f 57 	72 	254
-f 198 	250 	201
-f 271 	131 	255
-f 254 	231 	57
-f 201 	250 	2035
-f 231 	258 	235
-f 255 	256 	257
-f 257 	276 	255
-f 1163 	1250 	256
-f 91 	120 	121
-f 91 	121 	92
-f 257 	256 	261
-f 239 	238 	246
-f 260 	2182 	256
-f 263 	246 	238
-f 245 	246 	263
-f 91 	21 	120
-f 246 	537 	239
-f 261 	279 	257
-f 231 	254 	258
-f 239 	537 	535
-f 264 	720 	259
-f 254 	72 	265
-f 254 	265 	266
-f 255 	270 	271
-f 205 	262 	457
-f 255 	267 	270
-f 246 	542 	537
-f 254 	266 	258
-f 262 	208 	264
-f 205 	208 	262
-f 208 	633 	264
-f 242 	2144 	237
-f 243 	2144 	242
-f 230 	2144 	232
-f 228 	2144 	229
-f 232 	2144 	243
-f 264 	633 	720
-f 268 	275 	270
-f 271 	270 	275
-f 270 	267 	268
-f 272 	2144 	273
-f 267 	255 	276
-f 277 	72 	69
-f 276 	257 	279
-f 69 	76 	277
-f 267 	276 	268
-f 279 	268 	276
-f 369 	366 	268
-f 275 	132 	271
-f 131 	271 	132
-f 278 	2144 	272
-f 269 	2144 	281
-f 281 	2144 	278
-f 273 	2144 	228
-f 268 	366 	275
-f 366 	367 	275
-f 283 	284 	280
-f 283 	280 	274
-f 279 	368 	268
-f 280 	284 	221
-f 201 	2035 	204
-f 261 	375 	279
-f 282 	288 	283
-f 368 	370 	268
-f 287 	288 	282
-f 288 	93 	283
-f 373 	368 	279
-f 283 	93 	284
-f 194 	221 	284
-f 93 	194 	284
-f 293 	2141 	298
-f 120 	41 	84
-f 298 	297 	299
-f 1 	84 	59
-f 1748 	1751 	287
-f 894 	2144 	269
-f 119 	82 	118
-f 302 	1920 	301
-f 193 	1918 	302
-f 299 	303 	293
-f 294 	293 	303
-f 293 	298 	299
-f 308 	309 	1964
-f 305 	1964 	309
-f 81 	80 	822
-f 299 	297 	318
-f 310 	1981 	313
-f 822 	15 	81
-f 17 	118 	16
-f 294 	303 	292
-f 15 	16 	81
-f 315 	316 	6
-f 314 	6 	317
-f 22 	21 	91
-f 299 	318 	303
-f 1751 	288 	287
-f 91 	118 	22
-f 17 	22 	118
-f 892 	2144 	894
-f 928 	927 	2198
-f 27 	120 	21
-f 2198 	318 	2195
-f 319 	2195 	318
-f 297 	319 	318
-f 41 	120 	27
-f 223 	222 	188
-f 59 	84 	41
-f 3 	324 	323
-f 326 	327 	2164
-f 3 	323 	1
-f 108 	1 	323
-f 328 	327 	326
-f 315 	18 	332
-f 330 	331 	18
-f 2164 	327 	339
-f 340 	79 	371
-f 304 	371 	79
-f 335 	334 	31
-f 334 	337 	31
-f 328 	951 	327
-f 152 	341 	153
-f 60 	335 	38
-f 54 	94 	343
-f 80 	82 	345
-f 344 	345 	82
-f 82 	119 	344
-f 119 	92 	342
-f 342 	344 	119
-f 156 	157 	152
-f 152 	157 	161
-f 943 	107 	348
-f 942 	107 	943
-f 346 	347 	87
-f 87 	347 	121
-f 87 	108 	346
-f 2159 	2164 	111
-f 949 	348 	951
-f 163 	162 	164
-f 163 	164 	167
-f 92 	121 	342
-f 347 	342 	121
-f 166 	165 	170
-f 348 	339 	951
-f 166 	350 	167
-f 327 	951 	339
-f 174 	169 	171
-f 1937 	952 	1117
-f 951 	328 	952
-f 1117 	952 	328
-f 306 	80 	374
-f 168 	171 	169
-f 353 	132 	363
-f 219 	132 	353
-f 275 	363 	132
-f 172 	178 	173
-f 365 	363 	275
-f 349 	161 	163
-f 295 	151 	138
-f 169 	351 	170
-f 369 	268 	370
-f 173 	354 	174
-f 181 	173 	178
-f 373 	279 	375
-f 382 	375 	261
-f 180 	179 	182
-f 180 	182 	190
-f 356 	1089 	357
-f 291 	358 	295
-f 382 	261 	384
-f 189 	360 	190
-f 291 	355 	358
-f 226 	219 	361
-f 353 	361 	219
-f 295 	358 	362
-f 358 	201 	362
-f 180 	359 	181
-f 365 	275 	367
-f 189 	187 	192
-f 192 	193 	302
-f 374 	371 	304
-f 374 	304 	306
-f 305 	309 	300
-f 301 	300 	309
-f 345 	374 	80
-f 337 	376 	31
-f 384 	261 	385
-f 310 	313 	307
-f 324 	377 	323
-f 324 	329 	377
-f 346 	108 	377
-f 323 	377 	108
-f 301 	372 	302
-f 368 	379 	370
-f 368 	373 	379
-f 308 	378 	309
-f 380 	377 	329
-f 375 	381 	373
-f 381 	379 	373
-f 308 	307 	313
-f 329 	78 	380
-f 336 	380 	78
-f 383 	313 	312
-f 314 	317 	311
-f 312 	311 	317
-f 403 	340 	371
-f 375 	382 	381
-f 316 	315 	332
-f 385 	387 	384
-f 387 	381 	384
-f 382 	384 	381
-f 317 	316 	386
-f 403 	371 	407
-f 389 	332 	331
-f 374 	409 	371
-f 388 	292 	387
-f 385 	388 	387
-f 333 	338 	330
-f 331 	330 	338
-f 303 	387 	292
-f 419 	418 	347
-f 423 	424 	346
-f 420 	423 	346
-f 390 	357 	1089
-f 425 	420 	346
-f 377 	425 	346
-f 362 	151 	295
-f 367 	366 	393
-f 429 	430 	380
-f 362 	14 	151
-f 370 	379 	369
-f 379 	393 	369
-f 366 	369 	393
-f 483 	393 	379
-f 381 	485 	379
-f 403 	404 	117
-f 392 	647 	617
-f 355 	196 	198
-f 303 	492 	387
-f 1393 	1230 	153
-f 1393 	153 	341
-f 355 	198 	358
-f 363 	361 	353
-f 363 	365 	361
-f 408 	409 	374
-f 409 	411 	371
-f 374 	345 	408
-f 367 	393 	365
-f 393 	361 	365
-f 413 	414 	344
-f 341 	152 	394
-f 398 	226 	361
-f 413 	344 	418
-f 342 	418 	344
-f 393 	399 	361
-f 322 	282 	320
-f 342 	347 	418
-f 287 	282 	322
-f 390 	1089 	395
-f 396 	287 	322
-f 428 	429 	380
-f 428 	380 	336
-f 320 	282 	321
-f 283 	274 	321
-f 201 	358 	198
-f 282 	283 	321
-f 204 	14 	362
-f 362 	201 	204
-f 490 	387 	492
-f 396 	322 	1945
-f 398 	361 	399
-f 396 	1748 	287
-f 404 	338 	117
-f 428 	336 	405
-f 296 	2133 	410
-f 285 	410 	2133
-f 336 	1070 	405
-f 407 	371 	411
-f 345 	412 	408
-f 221 	202 	280
-f 416 	345 	414
-f 412 	345 	416
-f 345 	344 	414
-f 410 	615 	1810
-f 2132 	286 	285
-f 419 	347 	424
-f 347 	346 	424
-f 422 	426 	415
-f 425 	377 	430
-f 377 	380 	430
-f 333 	117 	338
-f 422 	321 	426
-f 320 	321 	422
-f 400 	1750 	402
-f 274 	431 	426
-f 321 	274 	426
-f 423 	433 	424
-f 274 	280 	431
-f 430 	423 	425
-f 420 	425 	423
-f 406 	429 	405
-f 428 	405 	429
-f 477 	434 	438
-f 437 	441 	432
-f 432 	441 	435
-f 434 	452 	438
-f 436 	456 	439
-f 429 	440 	430
-f 431 	456 	436
-f 407 	411 	403
-f 404 	403 	411
-f 443 	445 	442
-f 478 	442 	445
-f 412 	416 	408
-f 409 	408 	416
-f 414 	448 	416
-f 418 	414 	413
-f 1983 	210 	444
-f 424 	418 	419
-f 409 	447 	411
-f 442 	432 	451
-f 443 	442 	451
-f 453 	437 	442
-f 432 	442 	437
-f 338 	404 	391
-f 450 	259 	507
-f 452 	434 	449
-f 438 	452 	455
-f 453 	442 	454
-f 438 	455 	444
-f 439 	457 	446
-f 455 	397 	444
-f 456 	457 	439
-f 1340 	464 	406
-f 262 	446 	457
-f 402 	397 	455
-f 450 	446 	262
-f 460 	462 	449
-f 463 	464 	459
-f 460 	1778 	462
-f 647 	392 	394
-f 462 	452 	449
-f 459 	464 	461
-f 462 	400 	452
-f 152 	161 	394
-f 433 	503 	424
-f 433 	463 	503
-f 440 	464 	463
-f 455 	452 	400
-f 440 	463 	430
-f 423 	430 	463
-f 433 	423 	463
-f 400 	402 	455
-f 406 	464 	429
-f 440 	429 	464
-f 83 	63 	465
-f 437 	453 	2015
-f 427 	435 	441
-f 2015 	427 	441
-f 469 	465 	1541
-f 441 	437 	2015
-f 460 	1775 	1778
-f 445 	443 	458
-f 443 	451 	458
-f 462 	1746 	400
-f 454 	2015 	453
-f 469 	471 	465
-f 474 	475 	473
-f 392 	617 	469
-f 469 	617 	471
-f 471 	466 	465
-f 401 	476 	470
-f 472 	479 	196
-f 472 	477 	479
-f 210 	196 	479
-f 475 	442 	480
-f 478 	480 	442
-f 442 	475 	454
-f 482 	454 	475
-f 474 	482 	475
-f 1545 	392 	469
-f 434 	477 	1777
-f 481 	629 	476
-f 477 	438 	479
-f 479 	438 	444
-f 399 	393 	483
-f 210 	479 	444
-f 483 	379 	485
-f 488 	381 	486
-f 387 	486 	381
-f 488 	485 	381
-f 387 	490 	486
-f 417 	2086 	376
-f 262 	264 	450
-f 498 	500 	467
-f 450 	264 	259
-f 431 	280 	456
-f 500 	468 	467
-f 280 	202 	456
-f 468 	503 	496
-f 500 	503 	468
-f 77 	497 	71
-f 456 	202 	457
-f 77 	501 	497
-f 71 	497 	484
-f 202 	205 	457
-f 501 	77 	83
-f 503 	463 	496
-f 800 	497 	501
-f 228 	229 	494
-f 505 	507 	499
-f 465 	466 	83
-f 520 	401 	506
-f 499 	507 	502
-f 501 	83 	466
-f 473 	508 	474
-f 230 	509 	229
-f 494 	229 	509
-f 480 	478 	458
-f 494 	509 	511
-f 494 	511 	506
-f 458 	478 	445
-f 513 	515 	510
-f 510 	515 	512
-f 454 	482 	1181
-f 474 	1181 	482
-f 520 	506 	511
-f 509 	514 	511
-f 511 	514 	521
-f 512 	986 	954
-f 544 	1504 	543
-f 512 	515 	986
-f 946 	515 	513
-f 518 	946 	513
-f 637 	48 	487
-f 432 	435 	516
-f 520 	476 	401
-f 487 	50 	489
-f 487 	48 	50
-f 520 	511 	521
-f 484 	790 	518
-f 491 	489 	55
-f 520 	481 	476
-f 481 	520 	521
-f 489 	50 	55
-f 491 	55 	67
-f 514 	522 	521
-f 491 	67 	493
-f 517 	522 	514
-f 521 	522 	680
-f 1122 	245 	1119
-f 522 	517 	525
-f 522 	525 	683
-f 439 	446 	504
-f 496 	463 	459
-f 504 	446 	505
-f 450 	507 	505
-f 447 	1601 	411
-f 446 	450 	505
-f 416 	498 	409
-f 448 	498 	416
-f 447 	409 	498
-f 498 	448 	500
-f 259 	765 	507
-f 503 	500 	418
-f 529 	528 	530
-f 418 	500 	414
-f 448 	414 	500
-f 418 	424 	503
-f 531 	436 	538
-f 531 	538 	536
-f 538 	436 	439
-f 527 	689 	525
-f 415 	426 	531
-f 531 	426 	436
-f 431 	436 	426
-f 12 	34 	534
-f 509 	230 	232
-f 243 	535 	232
-f 534 	532 	12
-f 534 	536 	532
-f 509 	232 	535
-f 514 	509 	535
-f 532 	536 	533
-f 533 	536 	557
-f 538 	557 	536
-f 535 	517 	514
-f 541 	1504 	529
-f 537 	517 	535
-f 538 	504 	557
-f 530 	540 	541
-f 530 	541 	529
-f 534 	34 	415
-f 528 	529 	1497
-f 543 	541 	540
-f 534 	531 	536
-f 544 	543 	540
-f 415 	531 	534
-f 542 	606 	537
-f 545 	530 	1188
-f 606 	517 	537
-f 538 	439 	504
-f 546 	530 	545
-f 608 	546 	545
-f 540 	530 	546
-f 516 	540 	546
-f 495 	1170 	555
-f 722 	723 	539
-f 552 	1171 	556
-f 596 	557 	547
-f 1066 	575 	983
-f 557 	558 	549
-f 557 	549 	547
-f 549 	499 	551
-f 552 	560 	554
-f 560 	559 	554
-f 558 	499 	549
-f 555 	554 	559
-f 552 	556 	560
-f 499 	502 	551
-f 1177 	564 	1178
-f 1178 	565 	563
-f 628 	550 	561
-f 550 	1802 	561
-f 568 	567 	571
-f 568 	571 	570
-f 566 	572 	523
-f 569 	571 	567
-f 569 	983 	575
-f 566 	954 	572
-f 1066 	177 	576
-f 523 	572 	524
-f 575 	577 	569
-f 574 	565 	570
-f 564 	570 	565
-f 564 	568 	570
-f 575 	1066 	576
-f 719 	512 	566
-f 577 	576 	177
-f 512 	954 	566
-f 233 	599 	577
-f 630 	573 	578
-f 576 	577 	575
-f 571 	569 	577
-f 579 	1397 	524
-f 577 	595 	571
-f 524 	526 	579
-f 598 	595 	577
-f 563 	574 	562
-f 574 	560 	562
-f 556 	562 	560
-f 563 	565 	574
-f 723 	724 	539
-f 574 	589 	560
-f 724 	725 	539
-f 570 	592 	574
-f 557 	504 	558
-f 725 	793 	539
-f 570 	593 	592
-f 558 	505 	499
-f 571 	594 	570
-f 504 	505 	558
-f 597 	594 	571
-f 621 	539 	798
-f 495 	555 	559
-f 580 	625 	582
-f 621 	632 	539
-f 587 	586 	559
-f 587 	559 	588
-f 560 	588 	559
-f 590 	560 	589
-f 632 	634 	539
-f 560 	590 	588
-f 67 	75 	591
-f 589 	574 	592
-f 593 	570 	594
-f 591 	583 	67
-f 597 	571 	595
-f 591 	596 	583
-f 591 	533 	596
-f 637 	487 	539
-f 583 	596 	584
-f 487 	489 	539
-f 584 	547 	585
-f 489 	491 	539
-f 491 	493 	539
-f 540 	516 	544
-f 601 	544 	516
-f 519 	601 	516
-f 493 	980 	539
-f 980 	991 	539
-f 991 	992 	539
-f 596 	547 	584
-f 475 	545 	1193
-f 992 	1018 	539
-f 1018 	1020 	539
-f 1020 	1021 	539
-f 581 	1145 	1151
-f 1021 	1022 	539
-f 475 	480 	545
-f 1022 	1026 	539
-f 1026 	1003 	539
-f 546 	451 	432
-f 1003 	1115 	539
-f 546 	432 	516
-f 1115 	1116 	539
-f 601 	1504 	544
-f 541 	543 	1504
-f 539 	1116 	1118
-f 603 	516 	435
-f 539 	1118 	1120
-f 539 	1120 	1121
-f 608 	605 	546
-f 604 	546 	605
-f 539 	1121 	1123
-f 1123 	1124 	539
-f 451 	546 	604
-f 606 	525 	517
-f 435 	427 	603
-f 605 	458 	604
-f 451 	604 	458
-f 605 	608 	458
-f 602 	613 	609
-f 1319 	603 	427
-f 475 	1193 	473
-f 608 	545 	480
-f 611 	1422 	610
-f 608 	480 	458
-f 473 	1193 	612
-f 473 	612 	508
-f 602 	1422 	611
-f 611 	613 	602
-f 508 	1181 	474
-f 547 	549 	585
-f 579 	526 	610
-f 610 	581 	611
-f 610 	526 	581
-f 542 	607 	606
-f 548 	607 	542
-f 607 	527 	606
-f 616 	865 	615
-f 797 	798 	539
-f 532 	591 	75
-f 606 	527 	525
-f 75 	12 	532
-f 532 	533 	591
-f 607 	548 	619
-f 533 	557 	596
-f 618 	471 	617
-f 580 	622 	625
-f 582 	628 	561
-f 625 	628 	582
-f 573 	630 	622
-f 634 	635 	539
-f 636 	539 	635
-f 539 	636 	637
-f 638 	481 	680
-f 626 	639 	627
-f 639 	626 	640
-f 481 	638 	629
-f 638 	1848 	629
-f 680 	643 	638
-f 641 	633 	208
-f 643 	654 	638
-f 629 	1849 	1846
-f 739 	890 	642
-f 642 	869 	616
-f 622 	631 	625
-f 630 	631 	622
-f 631 	646 	625
-f 645 	638 	654
-f 665 	635 	634
-f 647 	649 	617
-f 2163 	2015 	650
-f 650 	1027 	648
-f 650 	648 	620
-f 643 	657 	654
-f 617 	649 	618
-f 653 	624 	618
-f 932 	1849 	651
-f 651 	1849 	652
-f 654 	672 	645
-f 2163 	650 	620
-f 649 	653 	618
-f 208 	227 	641
-f 641 	640 	633
-f 641 	663 	640
-f 657 	643 	2018
-f 653 	658 	624
-f 621 	656 	659
-f 633 	640 	626
-f 621 	659 	632
-f 640 	661 	639
-f 677 	1481 	666
-f 632 	662 	634
-f 640 	663 	661
-f 632 	659 	662
-f 665 	634 	662
-f 667 	715 	600
-f 600 	668 	666
-f 227 	236 	670
-f 635 	669 	636
-f 670 	641 	227
-f 635 	665 	669
-f 670 	663 	641
-f 671 	636 	669
-f 631 	459 	646
-f 663 	43 	661
-f 663 	44 	43
-f 625 	646 	628
-f 678 	1481 	677
-f 646 	553 	628
-f 675 	2232 	674
-f 676 	2232 	675
-f 652 	1848 	672
-f 2018 	2054 	657
-f 670 	236 	45
-f 1479 	678 	679
-f 674 	1479 	679
-f 628 	553 	550
-f 666 	668 	682
-f 681 	682 	668
-f 481 	521 	680
-f 45 	44 	670
-f 677 	666 	682
-f 670 	44 	663
-f 1590 	467 	1182
-f 522 	683 	680
-f 468 	578 	467
-f 578 	468 	630
-f 643 	680 	683
-f 468 	496 	630
-f 716 	667 	1217
-f 655 	643 	683
-f 630 	496 	631
-f 686 	685 	688
-f 684 	513 	510
-f 631 	496 	459
-f 687 	688 	685
-f 461 	553 	646
-f 525 	689 	683
-f 646 	459 	461
-f 692 	684 	627
-f 495 	693 	1187
-f 691 	1187 	693
-f 655 	683 	689
-f 691 	695 	690
-f 695 	688 	690
-f 687 	690 	688
-f 639 	692 	627
-f 691 	693 	695
-f 527 	696 	689
-f 692 	513 	684
-f 693 	495 	695
-f 559 	695 	495
-f 699 	697 	698
-f 624 	658 	644
-f 689 	696 	2028
-f 697 	700 	701
-f 661 	702 	639
-f 703 	700 	697
-f 699 	703 	697
-f 639 	702 	692
-f 692 	518 	513
-f 702 	518 	692
-f 679 	678 	1577
-f 678 	677 	1577
-f 711 	707 	696
-f 71 	702 	661
-f 682 	1577 	677
-f 71 	661 	43
-f 700 	703 	956
-f 700 	694 	701
-f 702 	484 	518
-f 716 	717 	667
-f 484 	702 	71
-f 669 	139 	671
-f 655 	689 	2028
-f 636 	671 	637
-f 48 	637 	671
-f 828 	718 	830
-f 765 	259 	709
-f 259 	720 	709
-f 1233 	662 	659
-f 662 	1241 	665
-f 710 	706 	705
-f 665 	138 	669
-f 607 	711 	527
-f 619 	711 	607
-f 1577 	2234 	679
-f 711 	696 	527
-f 665 	1241 	138
-f 712 	710 	705
-f 679 	2234 	674
-f 713 	711 	619
-f 710 	714 	706
-f 668 	600 	715
-f 710 	684 	714
-f 669 	138 	139
-f 667 	717 	715
-f 623 	713 	619
-f 706 	714 	708
-f 48 	671 	142
-f 139 	142 	671
-f 713 	707 	711
-f 717 	716 	718
-f 2039 	707 	713
-f 714 	719 	708
-f 688 	718 	716
-f 688 	716 	686
-f 1290 	719 	566
-f 713 	623 	721
-f 720 	712 	709
-f 720 	626 	712
-f 1113 	1114 	620
-f 633 	626 	720
-f 1130 	1113 	648
-f 709 	712 	705
-f 1638 	1133 	648
-f 712 	626 	627
-f 712 	627 	710
-f 721 	2039 	713
-f 1113 	620 	648
-f 797 	539 	796
-f 627 	684 	710
-f 684 	510 	714
-f 714 	510 	719
-f 698 	704 	699
-f 512 	719 	510
-f 727 	909 	729
-f 703 	699 	956
-f 699 	704 	956
-f 962 	956 	704
-f 161 	349 	394
-f 394 	349 	647
-f 732 	1109 	734
-f 167 	647 	163
-f 350 	647 	167
-f 349 	163 	647
-f 350 	649 	647
-f 735 	1095 	736
-f 170 	649 	166
-f 351 	649 	170
-f 350 	166 	649
-f 649 	351 	653
-f 653 	354 	658
-f 174 	653 	169
-f 354 	653 	174
-f 351 	169 	653
-f 181 	658 	173
-f 354 	173 	658
-f 738 	742 	740
-f 729 	909 	739
-f 741 	742 	738
-f 2041 	721 	731
-f 658 	741 	644
-f 681 	715 	718
-f 717 	718 	715
-f 715 	681 	668
-f 644 	741 	738
-f 329 	1577 	78
-f 78 	682 	824
-f 718 	825 	681
-f 828 	825 	718
-f 688 	830 	718
-f 695 	832 	688
-f 559 	586 	695
-f 743 	746 	764
-f 2235 	2233 	675
-f 324 	3 	2237
-f 324 	2237 	329
-f 2234 	329 	2237
-f 747 	767 	748
-f 742 	1451 	740
-f 892 	898 	745
-f 898 	754 	745
-f 756 	884 	1095
-f 658 	359 	741
-f 359 	658 	181
-f 190 	741 	180
-f 360 	741 	190
-f 359 	180 	741
-f 682 	78 	1577
-f 681 	824 	682
-f 754 	747 	745
-f 752 	746 	743
-f 754 	767 	747
-f 752 	757 	746
-f 832 	695 	586
-f 750 	760 	751
-f 753 	756 	1095
-f 759 	760 	750
-f 760 	758 	751
-f 771 	746 	757
-f 751 	758 	749
-f 762 	743 	764
-f 732 	762 	764
-f 765 	759 	502
-f 761 	401 	470
-f 502 	507 	765
-f 764 	774 	1111
-f 741 	360 	742
-f 764 	1111 	732
-f 360 	189 	742
-f 761 	770 	754
-f 501 	466 	769
-f 754 	770 	767
-f 771 	757 	768
-f 770 	1885 	767
-f 775 	769 	466
-f 2259 	2260 	789
-f 746 	774 	764
-f 767 	1885 	1872
-f 466 	471 	775
-f 746 	771 	774
-f 770 	761 	470
-f 1715 	1716 	782
-f 769 	776 	772
-f 787 	777 	2317
-f 775 	776 	769
-f 1898 	770 	470
-f 773 	772 	779
-f 776 	779 	772
-f 768 	780 	771
-f 812 	787 	2268
-f 768 	778 	780
-f 777 	783 	2317
-f 771 	780 	784
-f 618 	775 	471
-f 1716 	2318 	782
-f 2320 	785 	2319
-f 618 	624 	775
-f 775 	624 	776
-f 777 	2319 	783
-f 771 	784 	774
-f 779 	776 	644
-f 624 	644 	776
-f 789 	2274 	788
-f 816 	725 	724
-f 790 	946 	518
-f 790 	792 	946
-f 539 	793 	794
-f 539 	794 	796
-f 790 	484 	795
-f 484 	497 	795
-f 795 	799 	790
-f 795 	801 	799
-f 790 	799 	792
-f 921 	793 	725
-f 851 	792 	799
-f 497 	800 	795
-f 800 	801 	795
-f 766 	760 	759
-f 765 	766 	759
-f 972 	796 	794
-f 760 	763 	758
-f 766 	763 	760
-f 763 	705 	706
-f 766 	705 	763
-f 774 	784 	1438
-f 709 	766 	765
-f 709 	705 	766
-f 778 	803 	780
-f 722 	1523 	1526
-f 800 	501 	769
-f 2317 	2268 	787
-f 723 	722 	1526
-f 769 	772 	800
-f 2276 	788 	2255
-f 660 	2255 	788
-f 800 	772 	801
-f 1526 	813 	723
-f 772 	773 	801
-f 2277 	2262 	788
-f 885 	773 	814
-f 812 	2273 	787
-f 777 	787 	2319
-f 780 	803 	1443
-f 723 	813 	724
-f 785 	2320 	782
-f 781 	791 	820
-f 2259 	789 	817
-f 2259 	817 	811
-f 781 	1965 	791
-f 789 	788 	2263
-f 817 	789 	2265
-f 791 	1965 	1940
-f 812 	811 	2270
-f 811 	817 	2265
-f 779 	819 	773
-f 780 	1443 	784
-f 773 	819 	814
-f 818 	844 	820
-f 822 	306 	2322
-f 821 	815 	814
-f 819 	821 	814
-f 1 	59 	2284
-f 16 	15 	2319
-f 41 	2306 	59
-f 821 	1648 	815
-f 968 	791 	969
-f 823 	803 	975
-f 820 	791 	968
-f 824 	681 	825
-f 803 	823 	1456
-f 829 	826 	827
-f 779 	738 	819
-f 644 	738 	779
-f 831 	688 	832
-f 738 	740 	819
-f 831 	830 	688
-f 819 	740 	821
-f 823 	1462 	1466
-f 834 	970 	826
-f 871 	599 	833
-f 823 	1466 	1456
-f 833 	247 	835
-f 248 	835 	247
-f 249 	837 	248
-f 835 	248 	837
-f 792 	851 	836
-f 837 	249 	838
-f 251 	838 	249
-f 839 	838 	251
-f 251 	252 	839
-f 829 	834 	826
-f 839 	252 	841
-f 252 	253 	841
-f 841 	253 	843
-f 398 	843 	253
-f 846 	843 	398
-f 398 	399 	846
-f 844 	834 	847
-f 829 	847 	834
-f 827 	854 	829
-f 844 	970 	834
-f 820 	844 	847
-f 848 	1737 	808
-f 808 	1737 	809
-f 809 	887 	849
-f 847 	781 	820
-f 836 	852 	840
-f 853 	829 	854
-f 1810 	862 	842
-f 749 	858 	805
-f 399 	483 	861
-f 399 	861 	846
-f 860 	853 	859
-f 483 	485 	864
-f 483 	864 	861
-f 863 	842 	862
-f 854 	859 	853
-f 758 	858 	749
-f 862 	865 	863
-f 486 	866 	488
-f 866 	864 	488
-f 485 	488 	864
-f 853 	867 	829
-f 858 	868 	805
-f 860 	744 	853
-f 930 	842 	863
-f 853 	747 	867
-f 492 	870 	490
-f 870 	866 	490
-f 486 	490 	866
-f 745 	747 	853
-f 871 	872 	598
-f 595 	598 	872
-f 829 	867 	847
-f 805 	868 	857
-f 847 	786 	781
-f 920 	586 	873
-f 865 	869 	863
-f 586 	587 	873
-f 588 	874 	587
-f 873 	587 	874
-f 588 	590 	874
-f 875 	874 	590
-f 875 	590 	589
-f 875 	589 	876
-f 592 	876 	589
-f 862 	615 	865
-f 851 	852 	836
-f 852 	879 	840
-f 867 	786 	847
-f 745 	853 	744
-f 840 	879 	845
-f 878 	768 	757
-f 880 	850 	887
-f 851 	799 	885
-f 801 	885 	799
-f 882 	768 	878
-f 880 	887 	881
-f 849 	887 	850
-f 881 	887 	883
-f 884 	883 	887
-f 887 	1095 	884
-f 747 	748 	867
-f 851 	886 	852
-f 867 	748 	786
-f 930 	882 	842
-f 827 	826 	854
-f 854 	826 	970
-f 818 	970 	844
-f 763 	888 	758
-f 891 	869 	890
-f 1635 	1644 	848
-f 887 	1749 	889
-f 889 	1752 	887
-f 1863 	896 	1861
-f 1861 	887 	1753
-f 887 	1861 	896
-f 859 	2144 	860
-f 958 	1433 	1330
-f 745 	744 	892
-f 869 	642 	890
-f 758 	888 	858
-f 888 	895 	858
-f 869 	891 	863
-f 897 	1011 	896
-f 896 	1011 	887
-f 898 	892 	894
-f 891 	940 	863
-f 900 	1012 	897
-f 896 	902 	897
-f 858 	895 	868
-f 904 	902 	896
-f 908 	900 	902
-f 897 	902 	900
-f 902 	904 	908
-f 813 	816 	724
-f 888 	763 	706
-f 592 	593 	876
-f 877 	876 	593
-f 593 	594 	877
-f 594 	597 	877
-f 872 	877 	597
-f 895 	888 	708
-f 894 	269 	898
-f 872 	597 	595
-f 272 	273 	913
-f 599 	871 	598
-f 706 	708 	888
-f 228 	494 	273
-f 247 	833 	599
-f 913 	278 	272
-f 78 	824 	336
-f 281 	915 	269
-f 898 	269 	915
-f 914 	336 	824
-f 917 	914 	825
-f 824 	825 	914
-f 281 	278 	915
-f 913 	915 	278
-f 830 	918 	828
-f 918 	917 	828
-f 825 	828 	917
-f 898 	761 	754
-f 831 	832 	920
-f 920 	918 	831
-f 830 	831 	918
-f 1553 	1555 	816
-f 915 	761 	898
-f 832 	586 	920
-f 913 	273 	494
-f 1203 	1204 	835
-f 1203 	835 	837
-f 945 	891 	909
-f 890 	909 	891
-f 1208 	1209 	838
-f 915 	913 	506
-f 1208 	838 	839
-f 494 	506 	913
-f 506 	401 	915
-f 923 	318 	925
-f 303 	318 	923
-f 915 	401 	761
-f 1219 	1221 	925
-f 925 	1221 	923
-f 924 	963 	728
-f 909 	727 	944
-f 890 	739 	909
-f 318 	927 	925
-f 318 	2198 	927
-f 744 	2144 	892
-f 860 	2144 	744
-f 728 	944 	727
-f 1223 	1219 	928
-f 927 	928 	1219
-f 925 	927 	1219
-f 2198 	931 	928
-f 863 	940 	930
-f 926 	929 	1022
-f 2198 	343 	931
-f 933 	931 	343
-f 882 	778 	768
-f 934 	2217 	904
-f 2217 	2218 	904
-f 2225 	939 	904
-f 885 	886 	851
-f 816 	921 	725
-f 886 	936 	852
-f 793 	937 	794
-f 908 	939 	900
-f 930 	778 	882
-f 852 	936 	879
-f 908 	904 	939
-f 773 	885 	801
-f 814 	886 	885
-f 1223 	928 	931
-f 933 	1225 	931
-f 1224 	1225 	933
-f 343 	941 	933
-f 886 	815 	936
-f 343 	101 	941
-f 814 	815 	886
-f 815 	1612 	936
-f 941 	101 	1224
-f 933 	941 	1224
-f 969 	791 	1940
-f 975 	803 	778
-f 944 	945 	909
-f 942 	1228 	101
-f 943 	1228 	942
-f 946 	947 	515
-f 348 	948 	943
-f 348 	949 	948
-f 947 	986 	515
-f 1230 	1231 	948
-f 950 	940 	891
-f 949 	1229 	948
-f 1229 	1230 	948
-f 945 	950 	891
-f 946 	792 	947
-f 792 	836 	947
-f 1005 	987 	887
-f 954 	959 	572
-f 960 	945 	963
-f 961 	962 	704
-f 944 	963 	945
-f 964 	965 	961
-f 962 	961 	965
-f 984 	985 	704
-f 960 	963 	966
-f 945 	960 	993
-f 951 	1232 	949
-f 1229 	949 	1232
-f 951 	952 	1232
-f 749 	805 	916
-f 994 	967 	968
-f 945 	993 	950
-f 968 	969 	994
-f 995 	994 	969
-f 1009 	995 	935
-f 969 	935 	995
-f 996 	950 	993
-f 1010 	1009 	938
-f 966 	1023 	960
-f 1025 	960 	1023
-f 970 	818 	820
-f 970 	994 	854
-f 864 	1245 	861
-f 1246 	1247 	866
-f 820 	968 	970
-f 870 	1249 	866
-f 923 	492 	303
-f 551 	971 	919
-f 967 	970 	968
-f 793 	921 	937
-f 492 	923 	1249
-f 937 	972 	794
-f 1089 	1578 	906
-f 906 	1626 	910
-f 870 	492 	1249
-f 922 	919 	971
-f 395 	1089 	899
-f 901 	903 	1089
-f 837 	1206 	1203
-f 1209 	1210 	838
-f 971 	750 	922
-f 899 	1089 	903
-f 1213 	1214 	841
-f 905 	1089 	906
-f 907 	1089 	905
-f 901 	1089 	907
-f 502 	971 	551
-f 841 	843 	1213
-f 973 	797 	796
-f 502 	759 	971
-f 1221 	1222 	923
-f 910 	1627 	911
-f 971 	759 	750
-f 1225 	1226 	931
-f 796 	972 	973
-f 911 	1630 	912
-f 912 	1634 	848
-f 1224 	101 	1227
-f 922 	750 	926
-f 101 	1228 	1227
-f 751 	929 	926
-f 750 	751 	926
-f 1234 	1213 	843
-f 929 	749 	916
-f 843 	846 	1238
-f 1235 	1238 	846
-f 185 	1166 	1089
-f 1243 	1244 	861
-f 1242 	1243 	861
-f 751 	749 	929
-f 1245 	1242 	861
-f 1174 	1175 	364
-f 963 	924 	966
-f 924 	1058 	966
-f 864 	866 	1248
-f 940 	975 	930
-f 866 	1249 	1246
-f 1635 	848 	1634
-f 1739 	809 	1738
-f 930 	975 	778
-f 977 	976 	978
-f 950 	979 	940
-f 137 	1065 	364
-f 975 	940 	979
-f 965 	982 	956
-f 957 	956 	982
-f 956 	962 	965
-f 961 	704 	985
-f 823 	975 	979
-f 704 	887 	984
-f 985 	984 	988
-f 988 	984 	990
-f 987 	990 	984
-f 969 	1940 	935
-f 987 	1005 	990
-f 967 	994 	970
-f 988 	964 	985
-f 961 	985 	964
-f 980 	493 	583
-f 583 	493 	67
-f 979 	950 	996
-f 583 	584 	991
-f 973 	974 	797
-f 583 	991 	980
-f 1829 	1830 	988
-f 584 	585 	991
-f 991 	585 	992
-f 797 	974 	798
-f 935 	938 	1009
-f 997 	992 	585
-f 798 	656 	621
-f 982 	998 	957
-f 958 	957 	998
-f 938 	2146 	1010
-f 798 	974 	656
-f 959 	954 	989
-f 986 	989 	954
-f 1009 	859 	995
-f 859 	854 	995
-f 1555 	921 	816
-f 989 	999 	959
-f 937 	921 	1000
-f 1840 	1831 	990
-f 1829 	988 	990
-f 919 	1020 	1018
-f 997 	919 	1018
-f 919 	922 	1020
-f 1806 	1807 	965
-f 997 	585 	549
-f 993 	960 	1001
-f 964 	988 	1828
-f 1025 	1001 	960
-f 549 	551 	997
-f 997 	551 	919
-f 993 	1002 	996
-f 993 	1001 	1002
-f 887 	1004 	1005
-f 987 	984 	887
-f 887 	1006 	1004
-f 1005 	1004 	1007
-f 1008 	1007 	1004
-f 1006 	1008 	1004
-f 1005 	1007 	990
-f 1006 	887 	1011
-f 1011 	897 	1012
-f 1001 	1025 	697
-f 1006 	1011 	1008
-f 1012 	1008 	1011
-f 697 	1025 	698
-f 1035 	698 	1025
-f 1016 	1015 	859
-f 1001 	697 	701
-f 1001 	701 	1017
-f 148 	2049 	147
-f 147 	2049 	124
-f 1023 	1024 	1025
-f 1030 	1031 	2154
-f 1029 	1032 	976
-f 1003 	1050 	1115
-f 978 	1278 	977
-f 1072 	1025 	1033
-f 1035 	1025 	1034
-f 1024 	1033 	1025
-f 992 	997 	1018
-f 1032 	1029 	873
-f 920 	873 	1029
-f 1037 	978 	1036
-f 976 	1036 	978
-f 1019 	1028 	859
-f 1031 	859 	1028
-f 1014 	1013 	859
-f 1030 	1014 	859
-f 1016 	859 	1013
-f 1031 	1030 	859
-f 1036 	1038 	1037
-f 1039 	1036 	1032
-f 976 	1032 	1036
-f 1040 	1036 	1039
-f 1014 	2145 	1013
-f 1040 	1041 	1036
-f 1255 	1256 	1038
-f 922 	1021 	1020
-f 2148 	1028 	1019
-f 1254 	1255 	1038
-f 922 	926 	1021
-f 1031 	2153 	2154
-f 1021 	926 	1022
-f 1040 	1039 	874
-f 873 	874 	1039
-f 1032 	873 	1039
-f 1026 	1022 	929
-f 2148 	2153 	1028
-f 1031 	1028 	2153
-f 1041 	1040 	874
-f 1045 	1038 	1043
-f 1036 	1043 	1038
-f 1043 	1053 	1046
-f 1043 	1046 	1045
-f 1047 	1043 	1048
-f 1048 	1043 	1041
-f 1036 	1041 	1043
-f 929 	916 	1026
-f 1010 	859 	1009
-f 994 	995 	854
-f 1053 	1043 	1049
-f 1047 	1049 	1043
-f 1044 	1042 	1033
-f 1026 	916 	1003
-f 1038 	1045 	1254
-f 2147 	2151 	237
-f 1045 	1046 	1254
-f 1257 	1254 	1046
-f 916 	1050 	1003
-f 1047 	1048 	875
-f 874 	875 	1048
-f 874 	1048 	1041
-f 1016 	2196 	1015
-f 875 	1049 	1047
-f 1051 	1044 	1033
-f 1053 	1054 	1056
-f 1060 	859 	1015
-f 1053 	1056 	1046
-f 1049 	1059 	1053
-f 1059 	1054 	1053
-f 2194 	1016 	1013
-f 1056 	1054 	1257
-f 1015 	2197 	1060
-f 1024 	1058 	1033
-f 1023 	1058 	1024
-f 944 	728 	963
-f 876 	1259 	1054
-f 1259 	1260 	1054
-f 1046 	1056 	1257
-f 986 	1061 	989
-f 1051 	1033 	1058
-f 1023 	966 	1058
-f 1060 	2203 	1062
-f 875 	876 	1059
-f 875 	1059 	1049
-f 947 	1061 	986
-f 1054 	1059 	876
-f 1061 	1064 	989
-f 1259 	876 	1263
-f 877 	1263 	876
-f 1065 	981 	364
-f 989 	1064 	999
-f 1067 	1068 	1069
-f 1017 	701 	694
-f 1070 	1067 	1069
-f 137 	1066 	1065
-f 1071 	1067 	1070
-f 1034 	704 	1035
-f 1068 	1067 	1071
-f 1035 	704 	698
-f 1069 	1068 	405
-f 1034 	1025 	1072
-f 567 	983 	569
-f 836 	1061 	947
-f 406 	405 	1068
-f 1064 	1061 	840
-f 1270 	1271 	1068
-f 1271 	406 	1068
-f 1033 	1073 	1072
-f 836 	840 	1061
-f 955 	1063 	953
-f 1062 	953 	1063
-f 336 	914 	1070
-f 955 	1074 	1063
-f 1074 	955 	1075
-f 914 	1071 	1070
-f 1074 	1075 	1077
-f 1270 	1068 	914
-f 914 	1068 	1071
-f 1080 	1077 	1075
-f 1100 	1084 	1099
-f 1079 	1099 	1084
-f 1080 	1082 	1077
-f 1079 	1084 	1081
-f 1033 	1085 	1073
-f 650 	2015 	1027
-f 1042 	1078 	1033
-f 1073 	730 	1072
-f 1034 	1072 	704
-f 955 	1102 	1075
-f 704 	1072 	730
-f 1091 	1092 	1073
-f 1088 	1083 	1076
-f 1091 	1073 	1085
-f 981 	1176 	364
-f 1078 	1085 	1033
-f 1065 	1066 	981
-f 983 	981 	1066
-f 1099 	1079 	1093
-f 1081 	1086 	1079
-f 1086 	1090 	1079
-f 1076 	959 	999
-f 1076 	999 	1088
-f 1090 	1093 	1079
-f 730 	1092 	1095
-f 730 	1073 	1092
-f 805 	1050 	916
-f 1081 	1084 	1270
-f 857 	1052 	1050
-f 1273 	1270 	1084
-f 737 	736 	1095
-f 805 	857 	1050
-f 737 	1095 	1092
-f 1081 	1270 	1086
-f 1052 	1096 	1055
-f 1270 	914 	1086
-f 1090 	1086 	917
-f 914 	917 	1086
-f 1052 	857 	1096
-f 917 	1093 	1090
-f 1096 	1098 	1055
-f 1010 	1019 	859
-f 1060 	1062 	859
-f 1062 	1063 	859
-f 1063 	1074 	859
-f 859 	1074 	1077
-f 859 	1077 	1082
-f 1099 	1101 	1100
-f 1055 	1098 	1057
-f 1075 	1102 	1106
-f 1027 	1173 	648
-f 1097 	1104 	1105
-f 1097 	1105 	1193
-f 1097 	1103 	1104
-f 1075 	1106 	1080
-f 1080 	1107 	1082
-f 1096 	857 	1390
-f 1390 	1391 	1096
-f 1080 	1106 	1107
-f 1108 	1107 	1106
-f 1103 	1336 	1181
-f 1119 	263 	1109
-f 2164 	620 	326
-f 1108 	1106 	1112
-f 1110 	620 	1114
-f 1114 	1113 	1117
-f 1109 	732 	1119
-f 1117 	328 	1110
-f 326 	1110 	328
-f 1117 	1110 	1114
-f 1107 	1108 	859
-f 1082 	1107 	859
-f 1112 	859 	1108
-f 9 	859 	1112
-f 732 	1111 	1119
-f 1122 	1119 	1111
-f 2207 	2208 	859
-f 539 	1124 	1126
-f 1126 	722 	539
-f 1127 	1122 	1125
-f 1111 	1125 	1122
-f 1130 	648 	1133
-f 1115 	1052 	1116
-f 1392 	973 	972
-f 973 	1396 	974
-f 999 	1094 	1088
-f 1131 	1128 	1132
-f 1117 	1113 	1134
-f 1130 	1134 	1113
-f 1064 	1094 	999
-f 1130 	1133 	1134
-f 1125 	1144 	1127
-f 1094 	1968 	1088
-f 1128 	1131 	1135
-f 1133 	1638 	1134
-f 1137 	1128 	1135
-f 1140 	1141 	1134
-f 845 	1094 	1064
-f 840 	845 	1064
-f 845 	1674 	1094
-f 1674 	1968 	1094
-f 1132 	1138 	1131
-f 1134 	1701 	1140
-f 611 	581 	1139
-f 1135 	1138 	255
-f 1131 	1138 	1135
-f 611 	1139 	613
-f 1117 	1134 	1141
-f 1141 	1142 	1117
-f 1159 	1401 	1158
-f 1127 	245 	1122
-f 1144 	245 	1127
-f 1149 	1401 	1144
-f 1135 	255 	1137
-f 1143 	526 	524
-f 524 	572 	1143
-f 526 	1143 	1145
-f 1153 	1154 	1099
-f 1153 	1099 	1093
-f 1144 	1125 	1149
-f 526 	1145 	581
-f 1146 	1148 	1150
-f 1164 	1160 	1155
-f 1152 	1148 	1146
-f 1050 	1052 	1115
-f 1154 	1155 	1099
-f 1116 	1055 	1118
-f 1052 	1055 	1116
-f 1156 	1146 	1157
-f 1084 	1100 	1273
-f 1100 	1101 	1273
-f 1275 	1276 	1101
-f 1125 	1147 	1149
-f 1156 	1152 	1146
-f 1158 	1149 	1147
-f 918 	1154 	1153
-f 1093 	917 	1153
-f 918 	1153 	917
-f 1055 	1057 	1118
-f 1148 	1138 	1150
-f 918 	1155 	1154
-f 1253 	1121 	1120
-f 1160 	1161 	1162
-f 1159 	1158 	1186
-f 1147 	1186 	1158
-f 1099 	1160 	1101
-f 1162 	1101 	1160
-f 1121 	1265 	1123
-f 1099 	1155 	1160
-f 1123 	1272 	1124
-f 1265 	1272 	1123
-f 1148 	255 	1138
-f 1126 	1124 	1425
-f 1272 	1425 	1124
-f 1145 	1143 	1076
-f 255 	1148 	1152
-f 1145 	1083 	1151
-f 1129 	1089 	1608
-f 1584 	1585 	1089
-f 1607 	1608 	1089
-f 1196 	1607 	1089
-f 1160 	1164 	1165
-f 1139 	581 	1151
-f 1029 	976 	1167
-f 1165 	1167 	1160
-f 1175 	1168 	364
-f 1169 	1166 	364
-f 185 	364 	1166
-f 1101 	1162 	1275
-f 1174 	364 	1176
-f 572 	959 	1143
-f 1169 	1168 	1171
-f 1169 	1171 	1170
-f 1279 	1280 	1161
-f 1278 	1279 	1161
-f 1177 	1176 	983
-f 981 	983 	1176
-f 959 	1076 	1143
-f 920 	1165 	1164
-f 1155 	918 	1164
-f 920 	1164 	918
-f 1178 	1171 	1168
-f 1076 	1083 	1145
-f 920 	1167 	1165
-f 1172 	1147 	1450
-f 1083 	1934 	1151
-f 1170 	1187 	1166
-f 1166 	1169 	1170
-f 1160 	976 	1161
-f 977 	1161 	976
-f 1168 	1169 	364
-f 983 	567 	1177
-f 1177 	1178 	1174
-f 1175 	1174 	1178
-f 1172 	1186 	1147
-f 1174 	1176 	1177
-f 1160 	1167 	976
-f 467 	1590 	498
-f 1252 	1278 	978
-f 447 	498 	1601
-f 1168 	1175 	1178
-f 404 	411 	1601
-f 1161 	977 	1278
-f 554 	1170 	552
-f 1029 	1167 	920
-f 1172 	1179 	1188
-f 1178 	563 	1171
-f 1027 	2015 	1173
-f 565 	1178 	564
-f 1172 	1188 	1186
-f 567 	568 	1177
-f 454 	1181 	1183
-f 454 	1183 	1173
-f 1190 	1192 	1183
-f 1183 	1184 	1173
-f 1184 	648 	1173
-f 1357 	1185 	1187
-f 1182 	578 	1180
-f 1185 	1089 	1166
-f 1187 	1185 	1166
-f 1639 	1638 	1184
-f 1184 	1638 	648
-f 1180 	578 	573
-f 1157 	1163 	1156
-f 1181 	1189 	1190
-f 1181 	1190 	1183
-f 467 	578 	1182
-f 1190 	1189 	1191
-f 1190 	1191 	1192
-f 1163 	255 	1156
-f 1189 	1181 	1306
-f 893 	1308 	1181
-f 1189 	1306 	1191
-f 1195 	1906 	1194
-f 1037 	1038 	1252
-f 1196 	1089 	1283
-f 1196 	1198 	1197
-f 1266 	1267 	872
-f 872 	1267 	877
-f 1266 	872 	1269
-f 871 	1269 	872
-f 871 	833 	1269
-f 1200 	1201 	1197
-f 1198 	1200 	1197
-f 1276 	1277 	1101
-f 833 	835 	1205
-f 1202 	833 	1205
-f 1204 	1205 	835
-f 1197 	1207 	1196
-f 1206 	837 	1210
-f 837 	838 	1210
-f 2027 	1196 	1207
-f 839 	1211 	1208
-f 1201 	1207 	1197
-f 1180 	573 	1199
-f 1215 	839 	1214
-f 1211 	839 	1215
-f 839 	841 	1214
-f 1198 	1196 	1283
-f 1220 	1216 	1089
-f 1216 	1283 	1089
-f 1284 	1283 	1217
-f 1249 	923 	1222
-f 1218 	659 	656
-f 1223 	931 	1226
-f 656 	1212 	1218
-f 1216 	1220 	1217
-f 1359 	1217 	1220
-f 1193 	1602 	1097
-f 1220 	1357 	1359
-f 2101 	613 	1139
-f 943 	948 	1231
-f 1228 	943 	1231
-f 1233 	659 	1218
-f 1283 	1284 	1198
-f 1370 	1201 	1200
-f 1234 	843 	1239
-f 1238 	1239 	843
-f 846 	861 	1244
-f 1235 	846 	1244
-f 1241 	662 	1233
-f 1057 	1120 	1118
-f 1248 	866 	1247
-f 1245 	864 	1248
-f 1240 	1250 	1251
-f 1240 	1251 	1500
-f 1120 	1057 	1253
-f 1258 	1250 	1240
-f 1256 	1252 	1038
-f 978 	1037 	1252
-f 1264 	1258 	1240
-f 1257 	1054 	1262
-f 1260 	1262 	1054
-f 1218 	1261 	1233
-f 1121 	1253 	1265
-f 1237 	1264 	1240
-f 1263 	877 	1268
-f 1267 	1268 	877
-f 1413 	1253 	1057
-f 833 	1202 	1269
-f 291 	1233 	1261
-f 1163 	1251 	1250
-f 1070 	1069 	405
-f 1273 	1101 	1277
-f 1280 	1275 	1161
-f 1162 	1161 	1275
-f 1188 	1179 	1193
-f 1202 	1205 	1269
-f 1193 	1179 	1602
-f 1206 	1210 	1203
-f 1204 	1203 	1210
-f 2013 	256 	1250
-f 1264 	2013 	1258
-f 1211 	1215 	1208
-f 1209 	1208 	1215
-f 1214 	1282 	1215
-f 1201 	1370 	1207
-f 1214 	1213 	1239
-f 1234 	1239 	1213
-f 1258 	2013 	1250
-f 1285 	1286 	1287
-f 1428 	1272 	1265
-f 1274 	2013 	1264
-f 1274 	1264 	1237
-f 1204 	1288 	1205
-f 1209 	1281 	1210
-f 895 	708 	1290
-f 1221 	1292 	1222
-f 1287 	1289 	1293
-f 1223 	1226 	1219
-f 1295 	1289 	1287
-f 1295 	1287 	1286
-f 1219 	1226 	1221
-f 1395 	1290 	523
-f 719 	1290 	708
-f 1225 	1296 	1226
-f 1299 	1291 	1298
-f 1291 	1294 	1298
-f 1285 	694 	1286
-f 1227 	1228 	1231
-f 1297 	1293 	1289
-f 1300 	1301 	1294
-f 1804 	1294 	1301
-f 1229 	1232 	1230
-f 153 	1230 	1232
-f 1330 	956 	957
-f 1303 	1300 	1294
-f 1294 	1291 	1304
-f 1303 	1294 	1304
-f 1225 	1224 	1227
-f 1184 	1183 	1192
-f 956 	1330 	694
-f 1313 	1311 	893
-f 1307 	1308 	893
-f 1306 	1181 	1308
-f 1289 	1295 	1330
-f 1216 	1217 	1283
-f 1307 	1310 	1308
-f 1308 	1310 	1309
-f 1307 	893 	1311
-f 1295 	1286 	1330
-f 1274 	1301 	1300
-f 1307 	1311 	1312
-f 1307 	1312 	1310
-f 1305 	1299 	1298
-f 2013 	1274 	1300
-f 1300 	1303 	2013
-f 1315 	1312 	1313
-f 1311 	1313 	1312
-f 291 	1241 	1233
-f 2149 	2013 	1304
-f 1303 	1304 	2013
-f 1230 	1302 	1231
-f 1241 	291 	295
-f 295 	138 	1241
-f 1317 	1239 	1238
-f 421 	1316 	1319
-f 516 	1319 	1316
-f 1235 	1244 	1238
-f 1245 	1248 	1242
-f 1243 	1242 	1248
-f 1320 	1321 	1291
-f 1316 	1291 	1321
-f 1327 	1328 	1316
-f 1323 	1248 	1247
-f 1249 	1222 	1246
-f 1247 	1246 	1222
-f 1200 	1198 	1284
-f 1291 	1325 	1320
-f 1299 	1325 	1291
-f 1212 	1324 	1326
-f 1243 	1322 	1244
-f 1291 	1316 	1328
-f 1328 	1304 	1291
-f 1278 	1252 	1279
-f 1316 	421 	1327
-f 1212 	1326 	1218
-f 1286 	694 	1330
-f 1262 	1255 	1257
-f 609 	1334 	1329
-f 1254 	1257 	1255
-f 1260 	1259 	1263
-f 1260 	1263 	1268
-f 1297 	1289 	1330
-f 1260 	1332 	1262
-f 2015 	421 	427
-f 694 	700 	956
-f 1267 	1266 	1269
-f 887 	704 	730
-f 1321 	1320 	1305
-f 1268 	1267 	1333
-f 1336 	1097 	1335
-f 1327 	2015 	1328
-f 1097 	1336 	1103
-f 609 	613 	1334
-f 1319 	427 	421
-f 1334 	1337 	1329
-f 1255 	1338 	1256
-f 600 	1200 	1284
-f 1329 	1337 	1331
-f 1277 	1271 	1273
-f 1341 	1318 	1331
-f 1335 	1339 	1336
-f 1336 	1339 	893
-f 1270 	1273 	1271
-f 1337 	1341 	1331
-f 1276 	1275 	1280
-f 1341 	1342 	1318
-f 1344 	1280 	1279
-f 1256 	1279 	1252
-f 1320 	1325 	1305
-f 1305 	1325 	1299
-f 613 	2101 	1334
-f 508 	1104 	1181
-f 2102 	1337 	1334
-f 406 	1271 	1340
-f 421 	2015 	1327
-f 1328 	2015 	1304
-f 1276 	1343 	1277
-f 245 	1346 	246
-f 1337 	1236 	1341
-f 2102 	1236 	1337
-f 1236 	1351 	1341
-f 1349 	1345 	1348
-f 1341 	1351 	1342
-f 1342 	1355 	1375
-f 1342 	1351 	1355
-f 1354 	1345 	1349
-f 1350 	1364 	1352
-f 1370 	2093 	1207
-f 1326 	1261 	1218
-f 1357 	1089 	1185
-f 1220 	1089 	1357
-f 1187 	1359 	1357
-f 1324 	1418 	1356
-f 1324 	1361 	1326
-f 1358 	1362 	1347
-f 1355 	1368 	1360
-f 1355 	1367 	1368
-f 1324 	1356 	1361
-f 1347 	1362 	1350
-f 1363 	1326 	1361
-f 1362 	1364 	1350
-f 1345 	1365 	1366
-f 1366 	1490 	1345
-f 1288 	1358 	1486
-f 1351 	2111 	1367
-f 1288 	1486 	1205
-f 686 	1217 	685
-f 1281 	1362 	1358
-f 1351 	1367 	1355
-f 686 	716 	1217
-f 1363 	1261 	1326
-f 1281 	1358 	1210
-f 1204 	1210 	1358
-f 1288 	1204 	1358
-f 1363 	355 	1261
-f 1282 	1362 	1215
-f 1209 	1215 	1362
-f 1281 	1209 	1362
-f 1362 	1282 	1364
-f 1481 	1369 	1370
-f 1239 	1364 	1214
-f 1282 	1214 	1364
-f 1345 	1354 	1365
-f 1369 	1478 	2229
-f 2229 	2243 	1369
-f 1369 	2244 	1370
-f 2111 	2000 	1367
-f 495 	1187 	1170
-f 1171 	552 	1170
-f 554 	555 	1170
-f 1374 	1371 	1423
-f 1374 	1377 	1371
-f 1346 	1376 	1378
-f 1378 	246 	1346
-f 1339 	1366 	1365
-f 1376 	1379 	1378
-f 1371 	1377 	1372
-f 1349 	1348 	1373
-f 1375 	1355 	1360
-f 1367 	1380 	1368
-f 1292 	1429 	1222
-f 1261 	355 	291
-f 1429 	1292 	1374
-f 1374 	1296 	1377
-f 1356 	1771 	1361
-f 1356 	1769 	1771
-f 1296 	1374 	1226
-f 1221 	1226 	1374
-f 1292 	1221 	1374
-f 1380 	1386 	1382
-f 1296 	1225 	1377
-f 1385 	1759 	1379
-f 472 	1363 	1361
-f 1388 	1547 	1387
-f 1363 	472 	196
-f 1290 	566 	523
-f 1381 	1759 	1383
-f 1363 	196 	355
-f 1387 	1394 	1393
-f 1372 	1394 	1387
-f 1389 	972 	937
-f 868 	1390 	857
-f 1389 	937 	1000
-f 1393 	1388 	1387
-f 1389 	1392 	972
-f 1390 	1397 	1391
-f 868 	895 	1395
-f 1388 	394 	392
-f 1393 	394 	1388
-f 1372 	1377 	1394
-f 1395 	1390 	868
-f 1313 	1314 	1315
-f 1396 	973 	1392
-f 974 	1396 	1212
-f 1395 	1397 	1390
-f 579 	1391 	1397
-f 1396 	1324 	1212
-f 1380 	1384 	1386
-f 1385 	1144 	1383
-f 1376 	1144 	1379
-f 1379 	1144 	1385
-f 245 	1144 	1346
-f 1309 	1191 	1306
-f 974 	1212 	656
-f 1381 	1398 	1399
-f 1306 	1308 	1309
-f 1398 	1144 	1399
-f 1384 	1400 	1386
-f 1415 	1459 	1373
-f 1383 	1398 	1381
-f 1354 	1349 	893
-f 1401 	1402 	1399
-f 1349 	1373 	893
-f 1399 	1402 	1381
-f 1339 	1365 	893
-f 1354 	893 	1365
-f 1401 	1403 	1402
-f 1502 	1503 	1315
-f 1770 	1381 	1402
-f 562 	556 	1171
-f 1407 	1405 	1406
-f 562 	1171 	563
-f 1666 	1691 	1192
-f 1405 	1408 	1409
-f 1192 	1191 	1666
-f 1407 	1410 	1405
-f 1670 	1669 	1309
-f 564 	1177 	568
-f 1410 	1408 	1405
-f 1373 	1409 	1408
-f 1408 	1330 	1373
-f 1670 	1309 	1310
-f 1290 	1395 	895
-f 1312 	1492 	1491
-f 1312 	1491 	1310
-f 1297 	1407 	1406
-f 1395 	523 	1397
-f 1315 	1458 	1502
-f 1397 	523 	524
-f 1057 	1098 	1413
-f 957 	958 	1330
-f 1441 	1414 	1412
-f 1404 	1441 	1412
-f 1419 	1413 	1098
-f 893 	1373 	1459
-f 1394 	1302 	1393
-f 1389 	1417 	1392
-f 1394 	1227 	1231
-f 1394 	1231 	1302
-f 1302 	1230 	1393
-f 341 	394 	1393
-f 1377 	1225 	1227
-f 1098 	1096 	1391
-f 1389 	1631 	1417
-f 1394 	1377 	1227
-f 1392 	1417 	1418
-f 1402 	1403 	1414
-f 1411 	1414 	1403
-f 1098 	1391 	1419
-f 1391 	579 	1419
-f 1416 	1413 	1422
-f 1419 	1422 	1413
-f 1416 	602 	1428
-f 1422 	602 	1416
-f 610 	1422 	1419
-f 1429 	1423 	1421
-f 1435 	1431 	1330
-f 579 	610 	1419
-f 1897 	1414 	1424
-f 1426 	1420 	1352
-f 1352 	1364 	1426
-f 1416 	1265 	1253
-f 1426 	1427 	1420
-f 1253 	1413 	1416
-f 1416 	1428 	1265
-f 1407 	1330 	1410
-f 1415 	1373 	1330
-f 1410 	1330 	1408
-f 1420 	1427 	1421
-f 1427 	1429 	1421
-f 1297 	1330 	1407
-f 1272 	1430 	1425
-f 1423 	1429 	1374
-f 1364 	1239 	1317
-f 1272 	1428 	1430
-f 667 	600 	1284
-f 667 	1284 	1217
-f 1432 	1460 	1415
-f 1359 	685 	1217
-f 1415 	1431 	1432
-f 1434 	1330 	1433
-f 1415 	1330 	1431
-f 1435 	1330 	1434
-f 1431 	1435 	1436
-f 1431 	1436 	1432
-f 1412 	1411 	1159
-f 1411 	1403 	1159
-f 1159 	1403 	1401
-f 1399 	1144 	1401
-f 1346 	1144 	1376
-f 1437 	1434 	1433
-f 1368 	1380 	1382
-f 1435 	1434 	1436
-f 1437 	1436 	1434
-f 1412 	1159 	1404
-f 1111 	774 	1438
-f 1317 	1426 	1364
-f 1322 	1427 	1426
-f 1404 	1440 	1441
-f 1440 	1442 	1441
-f 1438 	1125 	1111
-f 1439 	821 	740
-f 1411 	1412 	1414
-f 1322 	1426 	1244
-f 1238 	1244 	1426
-f 1317 	1238 	1426
-f 740 	1451 	1439
-f 1323 	1427 	1248
-f 1243 	1248 	1427
-f 1322 	1243 	1427
-f 1323 	1429 	1427
-f 1439 	1453 	1444
-f 1451 	1453 	1439
-f 1222 	1429 	1247
-f 1323 	1247 	1429
-f 1450 	784 	1443
-f 1449 	1452 	1442
-f 1433 	958 	1437
-f 1441 	1442 	1452
-f 1482 	1450 	1443
-f 1445 	1449 	1446
-f 1449 	1445 	1452
-f 784 	1450 	1438
-f 1424 	1414 	1441
-f 1438 	1147 	1125
-f 1453 	1454 	1444
-f 1147 	1438 	1450
-f 1314 	893 	1455
-f 1444 	1454 	1447
-f 1452 	1424 	1441
-f 1313 	893 	1314
-f 803 	1456 	1443
-f 1447 	1592 	1464
-f 1315 	1314 	1458
-f 1455 	1458 	1314
-f 1454 	1592 	1447
-f 1455 	893 	1459
-f 1415 	1460 	1459
-f 742 	192 	1451
-f 1455 	1459 	1460
-f 1455 	1460 	1458
-f 189 	192 	742
-f 1457 	1461 	1445
-f 372 	1451 	302
-f 192 	302 	1451
-f 1451 	372 	1453
-f 378 	1454 	1453
-f 1445 	1461 	1452
-f 1782 	1783 	1437
-f 378 	1453 	309
-f 301 	309 	1453
-f 372 	301 	1453
-f 378 	308 	1454
-f 1462 	823 	979
-f 979 	996 	1462
-f 1472 	1352 	1463
-f 1430 	1329 	1529
-f 1462 	1489 	1466
-f 1128 	1461 	1132
-f 1469 	1132 	1461
-f 1457 	1469 	1461
-f 1470 	1457 	1150
-f 1469 	1457 	1470
-f 1146 	1150 	1457
-f 602 	609 	1428
-f 1428 	609 	1430
-f 1128 	1136 	1461
-f 609 	1329 	1430
-f 1467 	1472 	1468
-f 1471 	1472 	1467
-f 1449 	1442 	1159
-f 1440 	1159 	1442
-f 1404 	1159 	1440
-f 1472 	1463 	1468
-f 1468 	1463 	1448
-f 1347 	1471 	1539
-f 1474 	1485 	1475
-f 1462 	1591 	1489
-f 687 	685 	1359
-f 690 	687 	1359
-f 1350 	1472 	1471
-f 1347 	1350 	1471
-f 1187 	691 	1359
-f 690 	1359 	691
-f 1350 	1352 	1472
-f 1347 	1539 	1476
-f 1479 	674 	1478
-f 1478 	674 	2232
-f 600 	666 	1481
-f 1481 	1200 	600
-f 1479 	1481 	678
-f 1480 	1483 	1473
-f 1465 	1833 	1464
-f 1443 	1456 	1482
-f 1509 	1502 	1458
-f 1511 	1594 	1460
-f 1450 	1482 	1172
-f 1473 	1483 	1474
-f 1511 	1460 	1432
-f 1383 	1144 	1398
-f 1483 	1485 	1474
-f 1485 	1486 	1475
-f 1466 	1487 	1456
-f 1333 	1267 	1485
-f 1492 	1312 	1493
-f 1485 	1269 	1486
-f 1482 	1456 	1487
-f 1475 	1486 	1476
-f 1497 	1495 	1159
-f 1515 	1518 	1436
-f 1482 	1179 	1172
-f 1476 	1358 	1347
-f 1486 	1358 	1476
-f 1488 	1496 	1445
-f 1482 	1487 	1179
-f 1338 	1522 	1256
-f 1480 	1332 	1483
-f 1511 	1432 	1512
-f 1517 	1512 	1432
-f 1446 	1488 	1445
-f 1332 	1480 	1262
-f 1255 	1262 	1480
-f 1338 	1255 	1480
-f 1490 	1466 	1489
-f 1333 	1483 	1268
-f 1260 	1268 	1483
-f 1332 	1260 	1483
-f 1333 	1485 	1483
-f 1312 	1315 	1503
-f 1487 	1466 	1490
-f 1494 	1488 	1159
-f 1446 	1449 	1159
-f 1269 	1485 	1267
-f 1494 	1495 	1496
-f 1495 	1497 	1496
-f 1492 	1498 	1491
-f 1396 	1392 	1418
-f 1488 	1494 	1496
-f 1269 	1205 	1486
-f 1498 	1492 	1493
-f 1503 	1493 	1312
-f 1324 	1396 	1418
-f 1504 	1508 	1497
-f 1507 	1508 	1504
-f 1496 	1497 	1508
-f 1507 	1501 	1500
-f 1507 	1500 	1508
-f 1516 	1520 	1499
-f 1417 	1510 	1418
-f 1499 	1520 	1506
-f 1594 	1593 	1460
-f 1510 	1417 	1505
-f 1496 	1457 	1445
-f 1506 	1513 	1733
-f 1517 	1432 	1519
-f 1518 	1519 	1432
-f 1418 	1510 	1356
-f 1496 	1508 	1457
-f 1511 	1512 	1514
-f 1633 	1734 	1473
-f 1516 	1499 	461
-f 461 	464 	1516
-f 1432 	1436 	1518
-f 1500 	1804 	1240
-f 1521 	1514 	1517
-f 1512 	1517 	1514
-f 1505 	1765 	1510
-f 1506 	1522 	1513
-f 1517 	1519 	1521
-f 1520 	1522 	1506
-f 1522 	1480 	1513
-f 1473 	1513 	1480
-f 1493 	1503 	1498
-f 1510 	1769 	1356
-f 1516 	464 	1340
-f 1524 	1498 	1503
-f 1523 	722 	1126
-f 1500 	1542 	1508
-f 1343 	1520 	1516
-f 1503 	1502 	1524
-f 1502 	1509 	1524
-f 1146 	1508 	1157
-f 1525 	1157 	1508
-f 1425 	1523 	1126
-f 1509 	1458 	1593
-f 1343 	1516 	1277
-f 1271 	1277 	1516
-f 1340 	1271 	1516
-f 1508 	1146 	1457
-f 1280 	1520 	1276
-f 1344 	1520 	1280
-f 1343 	1276 	1520
-f 1520 	1344 	1522
-f 1595 	1524 	1593
-f 1509 	1593 	1524
-f 1522 	1338 	1480
-f 1488 	1446 	1159
-f 1495 	1494 	1159
-f 1279 	1256 	1522
-f 1344 	1279 	1522
-f 1425 	1430 	1529
-f 1808 	1501 	601
-f 1504 	601 	1507
-f 1528 	1531 	1477
-f 1536 	1539 	1530
-f 1532 	1534 	1528
-f 1530 	1539 	1533
-f 1159 	1817 	1497
-f 1817 	528 	1497
-f 1999 	1820 	519
-f 1820 	1805 	601
-f 1405 	1489 	1591
-f 1528 	1534 	1531
-f 1405 	1591 	1406
-f 1489 	1345 	1490
-f 603 	1319 	516
-f 1535 	1536 	1527
-f 1523 	1425 	1529
-f 1316 	1321 	1812
-f 1523 	1537 	1526
-f 1535 	1475 	1536
-f 1529 	1537 	1523
-f 1527 	1536 	1530
-f 1298 	1823 	1550
-f 1537 	1538 	1526
-f 1467 	1468 	1532
-f 1532 	1468 	1534
-f 1526 	1538 	813
-f 1468 	1448 	1534
-f 1533 	1471 	1467
-f 1471 	1533 	1539
-f 1150 	1138 	1470
-f 1541 	64 	1540
-f 1540 	64 	1736
-f 1163 	1157 	1525
-f 1474 	1475 	1535
-f 1240 	1804 	1237
-f 1537 	1529 	1331
-f 1500 	1251 	1542
-f 64 	1541 	63
-f 1329 	1331 	1529
-f 1541 	465 	63
-f 1539 	1536 	1476
-f 1543 	1508 	1542
-f 1475 	1476 	1536
-f 1543 	1525 	1508
-f 1736 	1544 	1540
-f 1540 	1545 	1541
-f 1812 	1321 	1546
-f 1545 	1540 	1547
-f 1812 	1546 	1822
-f 1549 	1822 	1546
-f 1545 	469 	1541
-f 1550 	1823 	1549
-f 1294 	1823 	1298
-f 1552 	1804 	1301
-f 1237 	1804 	1552
-f 1553 	816 	813
-f 1551 	1547 	1544
-f 1538 	1553 	813
-f 1546 	1305 	1549
-f 1321 	1305 	1546
-f 1550 	1549 	1305
-f 1544 	1547 	1540
-f 1553 	1561 	1555
-f 1305 	1298 	1550
-f 1388 	1545 	1547
-f 1552 	1301 	1274
-f 1555 	1000 	921
-f 1388 	392 	1545
-f 1251 	1163 	1542
-f 1543 	1542 	1163
-f 1525 	1543 	1163
-f 1537 	1318 	1538
-f 1603 	1372 	1551
-f 1552 	1274 	1237
-f 1537 	1331 	1318
-f 1551 	1387 	1547
-f 1318 	1558 	1538
-f 1372 	1387 	1551
-f 1548 	1559 	1554
-f 1558 	1553 	1538
-f 1470 	1138 	1469
-f 1132 	1469 	1138
-f 1557 	1559 	1548
-f 1559 	1528 	1554
-f 1558 	1561 	1553
-f 1563 	1564 	1565
-f 1555 	1628 	1000
-f 1565 	1566 	1563
-f 1560 	1562 	1642
-f 1555 	1561 	1628
-f 1563 	1567 	1564
-f 1568 	1567 	1563
-f 1554 	1528 	1477
-f 1566 	1568 	1563
-f 1318 	1342 	1558
-f 1556 	1572 	1557
-f 1342 	1375 	1558
-f 1571 	1560 	1448
-f 1569 	1572 	1556
-f 1448 	1463 	1571
-f 1479 	1478 	1369
-f 1571 	1574 	1560
-f 1573 	1559 	1557
-f 1481 	1370 	1200
-f 1481 	1479 	1369
-f 1572 	1573 	1557
-f 1560 	1574 	1562
-f 1478 	2232 	2229
-f 1573 	1532 	1559
-f 1574 	1576 	1562
-f 2234 	2235 	674
-f 1420 	1571 	1352
-f 1463 	1352 	1571
-f 1559 	1532 	1528
-f 1571 	1421 	1574
-f 1571 	1420 	1421
-f 1421 	1423 	1574
-f 1579 	906 	1578
-f 1580 	906 	1579
-f 1588 	906 	1580
-f 1569 	1766 	1527
-f 1489 	1405 	1409
-f 1489 	1581 	1348
-f 1489 	1348 	1345
-f 1574 	1423 	1576
-f 1569 	1530 	1572
-f 1578 	1089 	1585
-f 1584 	1089 	1605
-f 1423 	1371 	1576
-f 1527 	1530 	1569
-f 1604 	906 	1588
-f 1589 	1521 	1518
-f 1834 	1590 	1182
-f 1589 	1518 	1515
-f 996 	1002 	1591
-f 1484 	1590 	1834
-f 137 	364 	1570
-f 1519 	1518 	1521
-f 1462 	996 	1591
-f 1458 	1460 	1593
-f 1592 	1596 	1465
-f 1592 	1465 	1464
-f 1562 	1576 	1587
-f 1465 	1598 	1484
-f 1596 	1598 	1465
-f 1001 	1287 	1002
-f 1598 	1601 	1484
-f 1293 	1002 	1287
-f 1484 	1601 	1590
-f 1601 	498 	1590
-f 1490 	1602 	1487
-f 1487 	1602 	1179
-f 1587 	1603 	1600
-f 1625 	906 	1604
-f 383 	1454 	313
-f 308 	313 	1454
-f 383 	1592 	1454
-f 1576 	1603 	1587
-f 1129 	1605 	1089
-f 1603 	1551 	1600
-f 386 	1592 	317
-f 312 	317 	1592
-f 383 	312 	1592
-f 1602 	1490 	1660
-f 1606 	1607 	1196
-f 1592 	386 	1596
-f 1600 	1551 	1544
-f 332 	1596 	316
-f 389 	1596 	332
-f 386 	316 	1596
-f 1596 	389 	1598
-f 1371 	1603 	1576
-f 1598 	391 	1601
-f 338 	1598 	331
-f 391 	1598 	338
-f 389 	331 	1598
-f 1372 	1603 	1371
-f 1373 	1348 	1581
-f 404 	1601 	391
-f 1619 	1406 	1591
-f 1610 	93 	288
-f 1581 	1489 	1409
-f 1285 	1001 	1017
-f 1287 	1001 	1285
-f 1610 	1624 	1614
-f 1622 	1624 	1610
-f 1002 	1293 	1618
-f 1591 	1002 	1618
-f 1618 	1620 	1591
-f 1619 	1591 	1620
-f 1654 	1658 	1617
-f 1626 	906 	1625
-f 1617 	1658 	1623
-f 1594 	1511 	1595
-f 1530 	1533 	1572
-f 1297 	1406 	1619
-f 1514 	1595 	1511
-f 1572 	1533 	1573
-f 1581 	1409 	1373
-f 1467 	1532 	1573
-f 1627 	910 	1626
-f 1629 	911 	1627
-f 1630 	911 	1629
-f 1533 	1467 	1573
-f 1000 	1631 	1389
-f 1594 	1595 	1593
-f 1000 	1628 	1631
-f 1787 	1876 	1589
-f 1527 	1766 	1632
-f 1634 	912 	1630
-f 1633 	1632 	1694
-f 1561 	1558 	1375
-f 1632 	1535 	1527
-f 1628 	1561 	1636
-f 1633 	1535 	1632
-f 1713 	1712 	1514
-f 1514 	1521 	1713
-f 1714 	1713 	1521
-f 1714 	1521 	1589
-f 1633 	1474 	1535
-f 1473 	1474 	1633
-f 1375 	1636 	1561
-f 1620 	1297 	1619
-f 1628 	1636 	1637
-f 1636 	1575 	1637
-f 1628 	1637 	1631
-f 1631 	1505 	1417
-f 1631 	1637 	1505
-f 1642 	1643 	1622
-f 1636 	1375 	1360
-f 1644 	1737 	848
-f 1575 	1636 	1360
-f 1622 	1643 	1624
-f 1557 	1548 	1641
-f 1758 	1448 	1560
-f 1564 	1570 	1565
-f 2016 	1570 	1564
-f 1565 	1570 	1566
-f 1560 	1642 	1758
-f 1564 	1567 	2016
-f 1642 	1562 	1643
-f 1568 	1566 	364
-f 1566 	1570 	364
-f 1562 	1587 	1643
-f 1646 	1667 	1647
-f 1664 	1667 	1646
-f 1649 	1650 	1651
-f 194 	1652 	234
-f 815 	1648 	1612
-f 1614 	1652 	194
-f 1612 	1654 	1617
-f 1651 	1655 	1649
-f 1648 	1654 	1612
-f 1649 	1657 	1650
-f 1620 	1618 	1297
-f 1659 	1649 	1655
-f 1652 	1656 	234
-f 1285 	1017 	694
-f 1659 	1657 	1649
-f 1654 	1447 	1658
-f 1297 	1618 	1293
-f 1490 	1366 	1660
-f 1656 	1728 	45
-f 1725 	1728 	1656
-f 1832 	1623 	1658
-f 1660 	1663 	1602
-f 1661 	1602 	1663
-f 1689 	1690 	1192
-f 821 	1439 	1648
-f 1439 	1444 	1648
-f 1665 	1639 	1184
-f 1690 	1665 	1184
-f 1646 	1720 	1664
-f 1691 	1689 	1192
-f 1648 	1444 	1654
-f 1191 	1668 	1666
-f 1191 	1309 	1669
-f 1669 	1671 	1191
-f 1671 	1668 	1191
-f 1444 	1447 	1654
-f 1658 	1447 	1464
-f 1667 	1672 	1647
-f 1670 	1310 	1673
-f 1681 	1310 	1491
-f 1670 	1676 	1669
-f 1675 	1669 	1676
-f 1671 	1669 	1675
-f 2049 	1655 	1662
-f 1670 	1673 	1676
-f 1647 	1672 	1653
-f 1674 	1677 	1968
-f 1653 	1672 	449
-f 1653 	449 	434
-f 1645 	1640 	1750
-f 1666 	1668 	1675
-f 1666 	1675 	1693
-f 1641 	1640 	1556
-f 1668 	1671 	1675
-f 1640 	1645 	1556
-f 1310 	1680 	1673
-f 1641 	1556 	1557
-f 1680 	1310 	1681
-f 1679 	1682 	1664
-f 1650 	1662 	1651
-f 1570 	1662 	1650
-f 1498 	1683 	1491
-f 1681 	1491 	1683
-f 1651 	1662 	1655
-f 1645 	1569 	1556
-f 1569 	1645 	1766
-f 1659 	2049 	1657
-f 1650 	1657 	1570
-f 1673 	1680 	1676
-f 1683 	1676 	1680
-f 1657 	2049 	1570
-f 1680 	1681 	1683
-f 1664 	1682 	1667
-f 1706 	1704 	1676
-f 1707 	1706 	1683
-f 1682 	1685 	1667
-f 1802 	550 	1686
-f 1687 	1134 	1638
-f 1687 	1638 	1639
-f 1655 	2049 	1659
-f 137 	1570 	2049
-f 1665 	1687 	1639
-f 1184 	1192 	1690
-f 1667 	1685 	1672
-f 1672 	460 	449
-f 1685 	460 	1672
-f 1691 	1666 	1693
-f 1693 	1675 	1703
-f 1704 	1703 	1675
-f 1688 	1734 	1694
-f 1733 	1734 	1688
-f 1675 	1676 	1704
-f 1682 	1679 	1814
-f 1692 	1696 	1697
-f 1692 	1697 	1909
-f 1678 	1674 	845
-f 1698 	1696 	1692
-f 1689 	1693 	1690
-f 1691 	1693 	1689
-f 1693 	1687 	1690
-f 1665 	1690 	1687
-f 845 	879 	1678
-f 1678 	1700 	1674
-f 1335 	1602 	1661
-f 1097 	1602 	1335
-f 1366 	1339 	1660
-f 1663 	1660 	1339
-f 1663 	1339 	1661
-f 1687 	1702 	1701
-f 1134 	1687 	1701
-f 1335 	1661 	1339
-f 1674 	1700 	1677
-f 1693 	1703 	1702
-f 1687 	1693 	1702
-f 730 	1095 	887
-f 735 	753 	1095
-f 1676 	1683 	1706
-f 1709 	1707 	1498
-f 1707 	1683 	1498
-f 1710 	1709 	1524
-f 1708 	1678 	879
-f 1699 	1692 	1695
-f 936 	1708 	879
-f 1699 	1698 	1692
-f 1498 	1524 	1709
-f 1708 	1711 	1678
-f 1524 	1595 	1710
-f 1712 	1710 	1595
-f 1595 	1514 	1712
-f 1678 	1711 	1700
-f 936 	1612 	1708
-f 785 	782 	2318
-f 732 	1705 	762
-f 1708 	1617 	1711
-f 1705 	732 	1717
-f 1612 	1617 	1708
-f 734 	1717 	732
-f 1873 	1685 	1682
-f 1617 	1623 	1711
-f 1718 	1715 	1763
-f 1718 	900 	1715
-f 1705 	1717 	1838
-f 939 	1715 	900
-f 1719 	1677 	1726
-f 1726 	1729 	1719
-f 1624 	1723 	1614
-f 1719 	1729 	1721
-f 1720 	1382 	1724
-f 1614 	1723 	1652
-f 1723 	1725 	1652
-f 1652 	1725 	1656
-f 1700 	1726 	1677
-f 1662 	1696 	2049
-f 1731 	550 	553
-f 1624 	1730 	1723
-f 1662 	1697 	1696
-f 1731 	1686 	550
-f 1624 	1643 	1730
-f 1731 	1733 	1686
-f 1730 	1732 	1723
-f 1730 	1600 	1732
-f 1686 	1733 	1688
-f 1738 	809 	1737
-f 1723 	1732 	1725
-f 1732 	1736 	1725
-f 887 	809 	1739
-f 1739 	1741 	887
-f 1600 	1544 	1732
-f 1734 	1633 	1694
-f 1698 	1699 	2049
-f 1741 	1742 	887
-f 1725 	1736 	1728
-f 1736 	64 	1728
-f 553 	1499 	1731
-f 1695 	1727 	1699
-f 1742 	1747 	887
-f 1728 	64 	52
-f 1727 	2049 	1699
-f 1696 	1698 	2049
-f 553 	461 	1499
-f 1587 	1730 	1643
-f 1499 	1506 	1731
-f 1128 	1744 	1136
-f 1587 	1600 	1730
-f 1731 	1506 	1733
-f 1128 	1137 	1744
-f 1734 	1733 	1513
-f 1736 	1732 	1544
-f 1513 	1473 	1734
-f 1749 	887 	1747
-f 1750 	400 	1746
-f 1748 	396 	1477
-f 1753 	887 	1752
-f 1746 	1756 	1750
-f 1610 	288 	1751
-f 1382 	1386 	1724
-f 1746 	1778 	1754
-f 1722 	757 	752
-f 1477 	1531 	1748
-f 1720 	1724 	1664
-f 878 	757 	1722
-f 1531 	1755 	1748
-f 1748 	1755 	1751
-f 1754 	1756 	1746
-f 1751 	1622 	1610
-f 1755 	1622 	1751
-f 1386 	1400 	1757
-f 1760 	1761 	1754
-f 1531 	1534 	1758
-f 1534 	1448 	1758
-f 1754 	1761 	1756
-f 1758 	1755 	1531
-f 1137 	255 	1744
-f 1136 	1744 	1727
-f 1755 	1758 	1622
-f 1642 	1622 	1758
-f 1756 	1645 	1750
-f 1757 	1724 	1386
-f 1757 	1679 	1724
-f 1378 	542 	246
-f 1763 	1764 	1718
-f 1764 	1860 	1718
-f 1378 	1379 	1759
-f 1724 	1679 	1664
-f 1385 	1383 	1759
-f 1902 	1757 	1400
-f 1716 	1715 	939
-f 548 	1378 	1759
-f 1763 	1715 	1762
-f 782 	1762 	1715
-f 1505 	1794 	1765
-f 1767 	1762 	2321
-f 1756 	1766 	1645
-f 782 	2321 	1762
-f 1761 	1766 	1756
-f 1764 	1763 	1767
-f 1764 	1767 	1768
-f 1769 	1510 	1765
-f 1762 	1767 	1763
-f 1765 	1774 	1769
-f 542 	1378 	548
-f 1765 	1773 	1774
-f 1688 	1694 	1760
-f 1760 	1694 	1761
-f 1381 	1770 	1759
-f 1761 	1632 	1766
-f 472 	1361 	1771
-f 1759 	1772 	548
-f 1694 	1632 	1761
-f 304 	79 	1767
-f 1770 	1772 	1759
-f 1767 	2321 	304
-f 1899 	1768 	79
-f 619 	548 	1772
-f 1768 	1767 	79
-f 1685 	1873 	1775
-f 1770 	1402 	1891
-f 998 	1437 	958
-f 1769 	1774 	1777
-f 1770 	1776 	1772
-f 1775 	460 	1685
-f 1891 	1776 	1770
-f 1769 	1777 	1771
-f 1771 	1777 	477
-f 1776 	623 	1772
-f 1746 	462 	1778
-f 1776 	1786 	623
-f 1771 	477 	472
-f 1780 	1515 	1436
-f 1772 	623 	619
-f 1436 	1437 	1780
-f 1783 	1780 	1437
-f 1782 	1437 	998
-f 1782 	998 	1785
-f 1792 	1789 	982
-f 1773 	1646 	1647
-f 1793 	965 	964
-f 1799 	1795 	964
-f 1773 	1647 	1774
-f 1806 	965 	1793
-f 1784 	1786 	1776
-f 1653 	1777 	1774
-f 1782 	1785 	1787
-f 1783 	1782 	1787
-f 1788 	1787 	1785
-f 1774 	1647 	1653
-f 998 	1789 	1785
-f 1791 	1792 	982
-f 998 	982 	1789
-f 1777 	1653 	434
-f 1700 	1790 	1726
-f 1791 	965 	1807
-f 982 	965 	1791
-f 1793 	964 	1795
-f 1794 	1505 	1637
-f 1711 	1790 	1700
-f 1637 	1575 	1794
-f 1799 	964 	1828
-f 1360 	1368 	1796
-f 1795 	1797 	1793
-f 1360 	1796 	1575
-f 1775 	1798 	1778
-f 1796 	1800 	1575
-f 1781 	1798 	1775
-f 1796 	1720 	1800
-f 1795 	1799 	1797
-f 1799 	1828 	1797
-f 1798 	1754 	1778
-f 1794 	1575 	1800
-f 743 	277 	752
-f 1794 	1773 	1765
-f 1883 	561 	1779
-f 1794 	1800 	1773
-f 1792 	1791 	1801
-f 1779 	1802 	1781
-f 1807 	1801 	1791
-f 1796 	1368 	1382
-f 561 	1802 	1779
-f 1785 	1789 	1788
-f 1801 	1788 	1792
-f 1789 	1792 	1788
-f 1796 	1382 	1720
-f 1781 	1803 	1798
-f 1880 	1879 	1788
-f 1800 	1646 	1773
-f 1800 	1720 	1646
-f 1881 	1880 	1788
-f 1802 	1803 	1781
-f 842 	290 	296
-f 1803 	1760 	1798
-f 1783 	1787 	1780
-f 1515 	1780 	1589
-f 1787 	1589 	1780
-f 1501 	1808 	1500
-f 1798 	1760 	1754
-f 1806 	1793 	1809
-f 1807 	1806 	1809
-f 1500 	1808 	1804
-f 1805 	1804 	1808
-f 1797 	1809 	1793
-f 842 	296 	1810
-f 1802 	1686 	1803
-f 1797 	1888 	1887
-f 1803 	1688 	1760
-f 1686 	1688 	1803
-f 1808 	601 	1805
-f 1507 	601 	1501
-f 1757 	1811 	1679
-f 1809 	1801 	1807
-f 869 	865 	616
-f 1787 	1874 	1876
-f 1881 	1788 	1801
-f 1815 	1813 	1812
-f 1815 	1812 	1816
-f 1811 	1814 	1679
-f 1104 	1103 	1181
-f 263 	734 	1109
-f 1818 	1820 	1815
-f 1809 	1797 	1887
-f 1159 	1186 	1817
-f 1818 	1815 	1816
-f 1820 	1818 	1816
-f 1820 	1816 	1804
-f 1821 	1816 	1822
-f 1822 	1816 	1812
-f 1821 	1823 	1816
-f 1623 	1790 	1711
-f 1816 	1823 	1804
-f 1623 	1825 	1790
-f 1821 	1822 	1823
-f 1805 	1820 	1804
-f 1316 	1812 	516
-f 1193 	545 	1188
-f 1824 	1819 	1008
-f 1823 	1294 	1804
-f 1718 	1824 	900
-f 1012 	900 	1824
-f 1828 	988 	1830
-f 1180 	1827 	1182
-f 1815 	1820 	1999
-f 601 	519 	1820
-f 1829 	990 	1831
-f 1832 	1825 	1623
-f 1822 	1549 	1823
-f 990 	1842 	1840
-f 1832 	1833 	1826
-f 1832 	1826 	1825
-f 1833 	1834 	1826
-f 1008 	1819 	1007
-f 1008 	1012 	1824
-f 1826 	1834 	1827
-f 470 	476 	1835
-f 1837 	1836 	1829
-f 1830 	1829 	1836
-f 1829 	1831 	1837
-f 1834 	1182 	1827
-f 1851 	1852 	1819
-f 266 	762 	1705
-f 1819 	1824 	1851
-f 1464 	1832 	1658
-f 2168 	1705 	1838
-f 1832 	1464 	1833
-f 734 	263 	1717
-f 1465 	1484 	1833
-f 1819 	1847 	1007
-f 1833 	1484 	1834
-f 1855 	1856 	1007
-f 76 	2129 	1722
-f 1856 	1842 	990
-f 476 	629 	1835
-f 2129 	289 	1722
-f 1831 	1840 	1837
-f 1722 	752 	76
-f 1841 	1843 	2123
-f 1844 	1835 	1846
-f 629 	1846 	1835
-f 1837 	1840 	1845
-f 1842 	1845 	1840
-f 1722 	289 	878
-f 1819 	1852 	1847
-f 1849 	629 	1848
-f 1721 	1729 	1850
-f 1729 	1862 	1850
-f 1854 	1851 	1824
-f 1850 	1841 	1721
-f 1841 	1853 	1843
-f 743 	762 	265
-f 638 	645 	1848
-f 1850 	1853 	1841
-f 1849 	932 	1846
-f 1849 	1848 	652
-f 645 	672 	1848
-f 752 	277 	76
-f 1853 	1195 	1843
-f 990 	1007 	1856
-f 265 	277 	743
-f 1195 	1853 	1199
-f 1007 	1847 	1855
-f 762 	266 	265
-f 1843 	1195 	1194
-f 1857 	1858 	1851
-f 1852 	1851 	1858
-f 1726 	1790 	1859
-f 1857 	1851 	1854
-f 1824 	1860 	1854
-f 1824 	1718 	1860
-f 289 	290 	878
-f 1859 	1729 	1726
-f 1854 	1860 	1768
-f 1857 	1854 	1768
-f 1764 	1768 	1860
-f 1729 	1859 	1862
-f 1825 	1859 	1790
-f 1825 	1826 	1859
-f 1858 	1847 	1852
-f 842 	882 	290
-f 1862 	1865 	1850
-f 1826 	1862 	1859
-f 290 	882 	878
-f 1855 	1845 	1856
-f 1867 	1196 	1870
-f 1606 	1196 	1867
-f 1959 	1868 	2022
-f 1856 	1845 	1842
-f 1855 	1847 	1845
-f 1858 	1845 	1847
-f 1850 	1865 	1853
-f 410 	1810 	296
-f 1870 	1196 	1869
-f 1196 	2022 	1869
-f 1810 	615 	862
-f 1865 	1199 	1853
-f 1894 	1893 	1845
-f 1105 	1104 	508
-f 1895 	1894 	1845
-f 1899 	1896 	1857
-f 1857 	1768 	1899
-f 1830 	1836 	1828
-f 1797 	1828 	1836
-f 1889 	1890 	1836
-f 1862 	1827 	1865
-f 1889 	1836 	1837
-f 1826 	1827 	1862
-f 1158 	1401 	1149
-f 1827 	1180 	1865
-f 1186 	528 	1817
-f 1895 	1845 	1858
-f 1872 	1871 	748
-f 1682 	1814 	1873
-f 748 	767 	1872
-f 1504 	1497 	529
-f 1872 	1875 	1871
-f 1589 	1876 	1877
-f 1879 	1874 	1787
-f 530 	528 	1186
-f 1787 	1788 	1879
-f 1881 	1801 	1882
-f 1188 	530 	1186
-f 1878 	1883 	1811
-f 1878 	582 	1883
-f 770 	1898 	1885
-f 1801 	1809 	1882
-f 1884 	1882 	1809
-f 1809 	1887 	1884
-f 1811 	1883 	1814
-f 1836 	1890 	1797
-f 1779 	1873 	1814
-f 1872 	1886 	1875
-f 1890 	1888 	1797
-f 1883 	1779 	1814
-f 1877 	1714 	1589
-f 1885 	1886 	1872
-f 1779 	1781 	1873
-f 1873 	1781 	1775
-f 1889 	1837 	1892
-f 1906 	580 	1878
-f 1402 	1414 	1891
-f 1893 	1892 	1837
-f 1837 	1845 	1893
-f 1895 	1858 	1896
-f 580 	582 	1878
-f 582 	561 	1883
-f 1858 	1857 	1896
-f 1414 	1897 	1891
-f 1901 	1141 	1900
-f 1141 	1140 	1900
-f 1901 	1142 	1141
-f 1194 	1902 	1400
-f 1897 	1784 	1891
-f 1701 	1900 	1140
-f 1714 	1877 	1903
-f 136 	1903 	1877
-f 1900 	1701 	1904
-f 1701 	1702 	1904
-f 1902 	1811 	1757
-f 1914 	1784 	1897
-f 1702 	1703 	1904
-f 1905 	1904 	1703
-f 1194 	1906 	1902
-f 1891 	1784 	1776
-f 1703 	1704 	1905
-f 1907 	1905 	1704
-f 1898 	470 	1835
-f 1704 	1706 	1907
-f 1908 	1907 	1706
-f 1706 	1707 	1908
-f 1902 	1878 	1811
-f 1424 	1941 	1909
-f 2080 	1898 	2079
-f 1835 	2079 	1898
-f 1906 	1878 	1902
-f 1910 	1908 	1707
-f 1195 	1199 	1911
-f 1910 	1709 	1912
-f 1707 	1709 	1910
-f 1897 	1424 	1909
-f 1911 	1906 	1195
-f 1909 	1914 	1897
-f 1709 	1710 	1912
-f 1913 	1912 	1710
-f 1911 	580 	1906
-f 573 	1911 	1199
-f 1710 	1712 	1913
-f 1915 	1913 	1712
-f 1911 	622 	580
-f 1712 	1713 	1915
-f 1916 	1915 	1713
-f 573 	622 	1911
-f 1713 	1714 	1916
-f 1903 	1916 	1714
-f 1692 	1909 	1941
-f 1877 	1876 	136
-f 1874 	1918 	1876
-f 136 	1876 	1918
-f 1917 	781 	786
-f 1909 	1958 	1914
-f 1880 	1920 	1879
-f 1920 	1918 	1879
-f 1874 	1879 	1918
-f 1882 	1921 	1881
-f 1921 	1920 	1881
-f 1880 	1881 	1920
-f 1923 	2175 	1922
-f 1928 	1921 	1884
-f 1882 	1884 	1921
-f 1919 	1943 	1927
-f 721 	623 	1786
-f 1928 	1887 	1931
-f 1884 	1887 	1928
-f 1931 	1887 	1888
-f 1784 	1932 	1786
-f 1931 	1890 	1933
-f 1888 	1890 	1931
-f 1890 	1889 	1933
-f 1180 	1199 	1865
-f 1914 	1932 	1784
-f 1933 	1889 	20
-f 1892 	20 	1889
-f 1892 	1893 	20
-f 731 	1786 	1932
-f 23 	20 	1893
-f 23 	1893 	1894
-f 23 	1895 	96
-f 1894 	1895 	23
-f 1895 	1896 	96
-f 112 	96 	1896
-f 1971 	731 	1932
-f 1969 	1975 	1932
-f 1896 	1899 	112
-f 79 	340 	1899
-f 721 	1786 	731
-f 112 	1899 	340
-f 1117 	1142 	1937
-f 786 	748 	1871
-f 1938 	1934 	1083
-f 1969 	1932 	1963
-f 1914 	1963 	1932
-f 1871 	1917 	786
-f 1083 	1088 	1938
-f 1938 	1939 	1934
-f 1901 	156 	1142
-f 1934 	1939 	1935
-f 1424 	1452 	1941
-f 1452 	1461 	1941
-f 2004 	1936 	1935
-f 1937 	153 	952
-f 1142 	156 	1937
-f 1461 	1985 	1941
-f 157 	1901 	1900
-f 1987 	1990 	1941
-f 1973 	1942 	1940
-f 1942 	1976 	1944
-f 1905 	164 	1904
-f 1973 	1976 	1942
-f 1907 	166 	1905
-f 1943 	1945 	1927
-f 168 	169 	1908
-f 1570 	1957 	1662
-f 171 	1908 	1910
-f 1912 	174 	1910
-f 1927 	1945 	1930
-f 1990 	1695 	1941
-f 1930 	322 	320
-f 1945 	322 	1930
-f 182 	1915 	1916
-f 187 	189 	1903
-f 1903 	136 	192
-f 1987 	1941 	1985
-f 1948 	1943 	2008
-f 152 	1937 	156
-f 153 	1937 	152
-f 1949 	1945 	1943
-f 1901 	157 	156
-f 163 	161 	1900
-f 162 	163 	1904
-f 1904 	163 	1900
-f 1922 	2199 	1950
-f 1904 	164 	162
-f 1948 	1949 	1943
-f 165 	166 	1907
-f 167 	1905 	166
-f 1949 	396 	1945
-f 169 	170 	1908
-f 1908 	171 	168
-f 172 	173 	1912
-f 173 	174 	1912
-f 1950 	2200 	1953
-f 1863 	1954 	896
-f 1477 	396 	1949
-f 172 	1912 	178
-f 1913 	178 	1912
-f 179 	180 	1915
-f 1915 	180 	1913
-f 1954 	1955 	896
-f 1955 	1956 	896
-f 179 	1915 	182
-f 189 	190 	1916
-f 1916 	1903 	189
-f 192 	187 	1903
-f 1956 	1953 	896
-f 2200 	896 	1953
-f 136 	1918 	193
-f 1957 	1914 	1958
-f 300 	301 	1920
-f 1920 	302 	1918
-f 1868 	1869 	2022
-f 1548 	1554 	1948
-f 1909 	1924 	1958
-f 300 	1920 	305
-f 1921 	305 	1920
-f 1960 	1977 	1961
-f 1960 	1961 	1962
-f 1964 	1960 	1962
-f 1957 	1963 	1914
-f 1966 	1960 	1967
-f 1960 	1964 	1967
-f 1977 	1960 	1970
-f 1966 	1970 	1960
-f 307 	308 	1964
-f 1921 	1964 	305
-f 1972 	731 	1971
-f 1088 	1968 	1938
-f 1964 	1962 	307
-f 1971 	1932 	1975
-f 1965 	1973 	1940
-f 1961 	307 	1962
-f 1938 	1974 	1939
-f 1921 	1966 	1967
-f 1921 	1967 	1964
-f 1938 	1968 	1974
-f 1975 	1969 	1570
-f 1921 	1928 	1966
-f 1970 	1966 	1928
-f 1977 	1978 	1961
-f 1958 	1662 	1957
-f 1924 	1662 	1958
-f 1978 	1977 	1981
-f 1980 	1981 	1977
-f 2089 	1974 	1719
-f 1970 	1979 	1977
-f 1957 	1570 	1963
-f 1969 	1963 	1570
-f 1948 	1554 	1949
-f 1986 	1981 	1980
-f 1554 	1477 	1949
-f 1975 	1570 	1971
-f 2016 	1972 	1570
-f 1979 	1982 	1977
-f 1982 	1980 	1977
-f 1991 	1980 	1982
-f 1992 	1980 	1991
-f 1992 	1993 	1980
-f 1961 	310 	307
-f 1917 	1965 	781
-f 1971 	1570 	1972
-f 1978 	1981 	310
-f 1928 	1979 	1970
-f 1692 	1941 	1695
-f 1924 	1909 	1697
-f 1961 	1978 	310
-f 2007 	2008 	1984
-f 1928 	1931 	1979
-f 1982 	1979 	1931
-f 1985 	1461 	1136
-f 2008 	1919 	1984
-f 1980 	1988 	1989
-f 1986 	1980 	1989
-f 1988 	1980 	1993
-f 1988 	1993 	2001
-f 313 	1981 	312
-f 1677 	1974 	1968
-f 1989 	311 	1986
-f 1981 	1986 	311
-f 311 	312 	1981
-f 1193 	1105 	612
-f 1931 	1933 	1992
-f 1931 	1992 	1991
-f 1931 	1991 	1982
-f 1677 	1719 	1974
-f 1993 	1992 	1933
-f 1951 	2170 	1923
-f 1988 	1997 	1989
-f 612 	1105 	508
-f 2022 	2023 	1959
-f 2025 	2022 	1196
-f 893 	1181 	1336
-f 2027 	2025 	1196
-f 1813 	1999 	1812
-f 2027 	1207 	2055
-f 1353 	2057 	1207
-f 1999 	519 	516
-f 516 	1812 	1999
-f 1998 	6 	1988
-f 5 	6 	1998
-f 1988 	6 	1997
-f 1380 	1367 	2000
-f 2002 	1988 	2001
-f 8 	7 	1998
-f 1813 	1815 	1999
-f 1998 	1988 	8
-f 2002 	8 	1988
-f 7 	13 	1998
-f 1983 	397 	2007
-f 6 	314 	1997
-f 1997 	314 	1989
-f 1983 	2007 	1984
-f 311 	1989 	314
-f 1990 	1987 	1727
-f 1987 	1985 	1727
-f 1985 	1136 	1727
-f 1933 	2002 	2001
-f 1933 	2001 	1993
-f 2011 	2007 	397
-f 1933 	20 	2002
-f 8 	2002 	20
-f 25 	18 	2009
-f 5 	1998 	18
-f 28 	29 	2009
-f 2008 	1943 	1919
-f 1924 	1697 	1662
-f 2010 	1994 	1875
-f 36 	74 	2009
-f 1994 	2010 	1995
-f 2009 	18 	1998
-f 1727 	1695 	1990
-f 402 	2011 	397
-f 2011 	2012 	2007
-f 2011 	1641 	2012
-f 2012 	2008 	2007
-f 2012 	1948 	2008
-f 1152 	1156 	255
-f 1944 	1976 	2014
-f 2149 	1304 	2015
-f 1640 	402 	1750
-f 1640 	2011 	402
-f 643 	655 	2018
-f 2020 	2054 	2018
-f 2011 	1640 	1641
-f 1641 	1548 	2012
-f 2012 	1548 	1948
-f 1939 	2004 	1935
-f 2020 	655 	2028
-f 210 	1983 	250
-f 1936 	2004 	2021
-f 2169 	1951 	2024
-f 2023 	2024 	1952
-f 1952 	1959 	2023
-f 2018 	655 	2020
-f 1984 	250 	1983
-f 444 	397 	1983
-f 32 	2026 	2030
-f 2020 	2028 	2031
-f 2085 	2028 	696
-f 42 	2033 	40
-f 2040 	2044 	2026
-f 696 	707 	2085
-f 2026 	2044 	2030
-f 32 	2030 	34
-f 2028 	2086 	2031
-f 2030 	415 	34
-f 250 	1984 	2035
-f 707 	2039 	33
-f 2034 	2043 	2036
-f 204 	2035 	2037
-f 2014 	1976 	2036
-f 2031 	2086 	417
-f 2014 	2038 	2221
-f 2036 	2038 	2014
-f 2039 	721 	2041
-f 2043 	2034 	1995
-f 2040 	2037 	1927
-f 2042 	2046 	49
-f 2036 	2045 	2038
-f 2030 	422 	415
-f 2043 	2045 	2036
-f 2044 	422 	2030
-f 2051 	49 	2046
-f 2097 	731 	2047
-f 1984 	1919 	2035
-f 2035 	1919 	2037
-f 2116 	2117 	2043
-f 1919 	1927 	2037
-f 2042 	68 	2048
-f 2117 	2119 	2043
-f 1567 	1568 	364
-f 2046 	2042 	2087
-f 2048 	2087 	2042
-f 2040 	1930 	2044
-f 1917 	2050 	1965
-f 1927 	1930 	2040
-f 731 	1972 	2047
-f 2044 	1930 	320
-f 2044 	320 	422
-f 1965 	2050 	1973
-f 2047 	1972 	2016
-f 2034 	1973 	2050
-f 2050 	1917 	1994
-f 1995 	2034 	2050
-f 14 	204 	2052
-f 1994 	1995 	2050
-f 42 	2051 	2033
-f 1973 	2034 	1976
-f 14 	2052 	26
-f 2034 	2036 	1976
-f 26 	2052 	2026
-f 2054 	673 	657
-f 2055 	1207 	2056
-f 672 	654 	673
-f 654 	657 	673
-f 2084 	2033 	2051
-f 1207 	2057 	2056
-f 2031 	2058 	2020
-f 2054 	2020 	2058
-f 26 	2026 	32
-f 2059 	68 	56
-f 2052 	204 	2037
-f 56 	2060 	2059
-f 2059 	2048 	68
-f 2060 	2061 	2059
-f 2037 	2040 	2052
-f 2052 	2040 	2026
-f 2104 	2048 	2059
-f 1917 	1871 	1994
-f 1744 	255 	1727
-f 2104 	2059 	2105
-f 2061 	2105 	2059
-f 2062 	70 	142
-f 1871 	1875 	1994
-f 142 	159 	2062
-f 1875 	1886 	2063
-f 2065 	2066 	2067
-f 10 	70 	2062
-f 26 	2062 	159
-f 2062 	32 	10
-f 2062 	26 	32
-f 2067 	2069 	2065
-f 2070 	1886 	1885
-f 1885 	1898 	2070
-f 2077 	2067 	2066
-f 2063 	1886 	2073
-f 2072 	2073 	1886
-f 2072 	1886 	2074
-f 2070 	2074 	1886
-f 2063 	2078 	2068
-f 2073 	2078 	2063
-f 2075 	2105 	2076
-f 2105 	2061 	2076
-f 2060 	2076 	2061
-f 2079 	1835 	1844
-f 224 	2076 	2060
-f 1844 	932 	2079
-f 2066 	2065 	2016
-f 2069 	2016 	2065
-f 1898 	2080 	2081
-f 1898 	2081 	2070
-f 2070 	2082 	2074
-f 2081 	2082 	2070
-f 2077 	2066 	364
-f 4 	2077 	364
-f 62 	19 	2084
-f 2051 	2046 	2084
-f 19 	2033 	2084
-f 31 	2086 	2085
-f 2028 	2085 	2086
-f 2084 	2046 	2088
-f 2085 	707 	33
-f 2085 	33 	38
-f 1936 	2021 	1996
-f 2046 	2087 	2088
-f 2085 	38 	31
-f 2084 	2088 	62
-f 2121 	2000 	1996
-f 2092 	2088 	2087
-f 33 	2039 	66
-f 2088 	2092 	65
-f 2121 	1384 	2000
-f 2000 	1384 	1380
-f 1974 	2089 	1939
-f 38 	335 	31
-f 31 	376 	2086
-f 2090 	2087 	2048
-f 1939 	2089 	2004
-f 2041 	66 	2039
-f 2004 	2091 	2021
-f 2090 	2092 	2087
-f 2089 	2091 	2004
-f 1353 	1207 	2093
-f 731 	2097 	2041
-f 2097 	2069 	2041
-f 2067 	2071 	2041
-f 2090 	2096 	2092
-f 1719 	1721 	2089
-f 2067 	2041 	2069
-f 2092 	69 	65
-f 2089 	1721 	2091
-f 154 	2041 	2071
-f 2047 	2016 	2097
-f 2069 	2097 	2016
-f 2096 	69 	2092
-f 154 	2071 	185
-f 1721 	1841 	2091
-f 364 	2066 	2016
-f 2016 	1567 	364
-f 140 	141 	2049
-f 145 	140 	2049
-f 2096 	76 	69
-f 1727 	123 	2049
-f 1334 	2101 	2102
-f 2072 	2099 	2073
-f 2074 	2100 	2072
-f 2101 	1139 	2103
-f 1846 	932 	1844
-f 2078 	2073 	2099
-f 2099 	2072 	2100
-f 2074 	2082 	2100
-f 2082 	2081 	2100
-f 2080 	932 	2081
-f 2079 	932 	2080
-f 1139 	1151 	2103
-f 2090 	2048 	2104
-f 2100 	2081 	932
-f 2103 	2106 	2101
-f 1934 	2103 	1151
-f 2058 	2031 	417
-f 2103 	1935 	2106
-f 2105 	2107 	2104
-f 1934 	1935 	2103
-f 2107 	2108 	2109
-f 2107 	2109 	2104
-f 2101 	2106 	2102
-f 2102 	2110 	1236
-f 2105 	2075 	2107
-f 2106 	2110 	2102
-f 2104 	2109 	2090
-f 2111 	1351 	1236
-f 2109 	2096 	2090
-f 1236 	2110 	2111
-f 2108 	2112 	2109
-f 1995 	2113 	2043
-f 2114 	2129 	2112
-f 1995 	2010 	2113
-f 2113 	2116 	2043
-f 2110 	2106 	1936
-f 2113 	2127 	2116
-f 1935 	1936 	2106
-f 2126 	2127 	2113
-f 188 	185 	1089
-f 2116 	2127 	2130
-f 1936 	1996 	2110
-f 2067 	4 	2071
-f 2110 	1996 	2111
-f 2045 	2043 	2119
-f 2067 	2077 	4
-f 2111 	1996 	2000
-f 2119 	2120 	2045
-f 2021 	2121 	1996
-f 2071 	4 	185
-f 4 	364 	185
-f 2091 	2123 	2021
-f 1875 	2063 	2010
-f 2124 	2010 	2068
-f 2063 	2068 	2010
-f 2021 	2123 	2121
-f 2115 	2114 	286
-f 2115 	286 	2131
-f 2112 	286 	2114
-f 2121 	2125 	1384
-f 2126 	2010 	2124
-f 2113 	2010 	2126
-f 2123 	2125 	2121
-f 2125 	1400 	1384
-f 2132 	2131 	286
-f 286 	2112 	2122
-f 2108 	2122 	2112
-f 2107 	2075 	2108
-f 2091 	1841 	2123
-f 2122 	2108 	2075
-f 1843 	2125 	2123
-f 1843 	1194 	2125
-f 2125 	1194 	1400
-f 2109 	2129 	2096
-f 2109 	2112 	2129
-f 2134 	2135 	2013
-f 2129 	76 	2096
-f 2119 	128 	2120
-f 2149 	2150 	2013
-f 2115 	2131 	289
-f 2119 	2117 	128
-f 2130 	128 	2117
-f 2117 	2116 	2130
-f 2127 	2126 	2130
-f 2124 	2130 	2126
-f 2124 	2068 	2099
-f 2078 	2099 	2068
-f 2130 	2124 	2099
-f 454 	1173 	2015
-f 289 	2129 	2115
-f 2114 	2115 	2129
-f 2135 	2183 	2013
-f 2134 	2013 	2137
-f 2132 	2133 	290
-f 2133 	296 	290
-f 2139 	2138 	2134
-f 2135 	2134 	2138
-f 290 	289 	2132
-f 2131 	2132 	289
-f 2134 	2137 	2139
-f 2137 	2150 	2139
-f 2132 	285 	2133
-f 2151 	2156 	237
-f 2141 	2135 	2138
-f 2143 	237 	2144
-f 263 	1119 	245
-f 2194 	1013 	2145
-f 1019 	1010 	2146
-f 2143 	89 	2147
-f 2146 	2148 	1019
-f 235 	2151 	2147
-f 2137 	2013 	2150
-f 2155 	2156 	258
-f 235 	258 	2156
-f 2158 	2015 	2157
-f 2149 	2015 	2158
-f 2154 	2145 	1030
-f 2158 	2157 	2159
-f 2158 	2159 	2160
-f 2156 	2151 	235
-f 2155 	258 	2166
-f 1014 	1030 	2145
-f 2161 	2149 	2160
-f 2158 	2160 	2149
-f 2015 	2162 	2157
-f 2015 	2163 	2162
-f 620 	2164 	2163
-f 2164 	2159 	2162
-f 2157 	2162 	2159
-f 938 	935 	1942
-f 2162 	2163 	2164
-f 85 	88 	859
-f 238 	237 	2156
-f 263 	238 	2156
-f 2166 	263 	2155
-f 1942 	935 	1940
-f 2156 	2155 	263
-f 1942 	1944 	938
-f 2161 	2165 	2149
-f 2150 	2149 	2165
-f 1944 	2146 	938
-f 2167 	2166 	266
-f 258 	266 	2166
-f 2168 	2167 	266
-f 2171 	1923 	2170
-f 2174 	1923 	2171
-f 2170 	1951 	2169
-f 266 	1705 	2168
-f 2139 	2150 	2165
-f 2173 	1923 	2172
-f 2172 	1923 	2174
-f 2145 	2154 	2176
-f 2166 	2167 	263
-f 2167 	2168 	263
-f 2168 	1838 	263
-f 1838 	1717 	263
-f 2161 	97 	98
-f 2161 	98 	2165
-f 2177 	1922 	2175
-f 2178 	1922 	2177
-f 2175 	1923 	2173
-f 104 	97 	2161
-f 2161 	2160 	104
-f 1944 	2179 	2146
-f 1944 	2014 	2179
-f 1163 	256 	255
-f 2146 	2179 	2148
-f 2183 	260 	2013
-f 2181 	2153 	2148
-f 261 	256 	2182
-f 260 	256 	2013
-f 1952 	2024 	1951
-f 2183 	2135 	2141
-f 40 	2033 	2184
-f 2033 	19 	2184
-f 2181 	2148 	2179
-f 2141 	2182 	2183
-f 260 	2183 	2182
-f 261 	2182 	385
-f 388 	385 	2182
-f 2153 	2181 	2188
-f 292 	2182 	294
-f 2184 	2180 	40
-f 2180 	2184 	2
-f 294 	2141 	293
-f 2141 	294 	2182
-f 2153 	2188 	2154
-f 2182 	292 	388
-f 2188 	2176 	2154
-f 319 	297 	2138
-f 2138 	298 	2141
-f 297 	298 	2138
-f 2176 	2245 	2209
-f 2139 	2195 	2138
-f 2184 	19 	24
-f 1102 	2180 	2191
-f 2014 	2221 	2179
-f 2191 	2180 	2
-f 2221 	2181 	2179
-f 1102 	2191 	1106
-f 2193 	1106 	2191
-f 319 	2138 	2195
-f 2188 	2220 	2176
-f 2199 	1922 	2178
-f 2197 	1015 	2196
-f 1112 	1106 	2193
-f 2203 	1060 	2197
-f 2200 	1950 	2199
-f 1112 	2193 	9
-f 896 	2200 	2202
-f 2202 	2205 	896
-f 2195 	2139 	2201
-f 2194 	2196 	1016
-f 54 	343 	2198
-f 953 	1062 	2203
-f 2195 	2201 	2198
-f 2201 	51 	2198
-f 2201 	2139 	51
-f 2191 	2204 	2193
-f 2145 	2209 	2194
-f 2139 	2165 	51
-f 2206 	896 	2205
-f 2191 	2 	2204
-f 2207 	11 	2204
-f 2208 	2207 	2204
-f 2193 	2204 	11
-f 30 	2204 	2
-f 2197 	2215 	2203
-f 1110 	326 	620
-f 2208 	2204 	85
-f 88 	85 	30
-f 2160 	2159 	110
-f 2207 	859 	11
-f 85 	859 	2208
-f 2212 	904 	2206
-f 2213 	904 	2212
-f 2193 	11 	9
-f 896 	2206 	904
-f 2213 	2214 	904
-f 2184 	24 	2
-f 2145 	2176 	2209
-f 2194 	2210 	2196
-f 2194 	2209 	2210
-f 2210 	2211 	2196
-f 2196 	2211 	2197
-f 2214 	2216 	904
-f 2211 	2215 	2197
-f 2216 	934 	904
-f 2248 	2210 	2209
-f 2218 	2225 	904
-f 2215 	2211 	2266
-f 2266 	42 	2215
-f 2181 	2222 	2188
-f 2222 	2181 	2221
-f 2220 	2188 	2222
-f 664 	2230 	676
-f 2038 	2226 	2221
-f 2221 	2226 	2222
-f 2222 	2224 	2220
-f 676 	675 	2233
-f 2226 	2224 	2222
-f 660 	2230 	664
-f 2232 	676 	2230
-f 664 	2233 	660
-f 2038 	2045 	2231
-f 2228 	2229 	2232
-f 2231 	2226 	2038
-f 2227 	2224 	2226
-f 2231 	2227 	2226
-f 675 	674 	2235
-f 1577 	329 	2234
-f 2237 	2235 	2234
-f 664 	676 	2233
-f 2258 	2227 	2236
-f 2238 	2231 	2120
-f 2045 	2120 	2231
-f 2237 	2233 	2235
-f 2238 	2239 	2231
-f 2228 	2232 	2241
-f 2236 	2227 	2239
-f 2231 	2239 	2227
-f 2232 	2230 	2241
-f 2239 	126 	2236
-f 2238 	128 	2239
-f 2120 	128 	2238
-f 2244 	1369 	2243
-f 2244 	2247 	1370
-f 2094 	1370 	2247
-f 2220 	2245 	2176
-f 2093 	1370 	2094
-f 2245 	2248 	2209
-f 2245 	2251 	2248
-f 2241 	2230 	2249
-f 2210 	2248 	46
-f 2224 	2250 	2220
-f 2220 	2250 	2245
-f 2250 	2251 	2245
-f 2251 	47 	2248
-f 2253 	2230 	2252
-f 2255 	660 	2233
-f 2254 	2255 	2233
-f 2248 	47 	46
-f 2227 	2256 	2224
-f 2224 	2256 	2250
-f 2250 	56 	2251
-f 2256 	56 	2250
-f 56 	68 	2251
-f 811 	2267 	2259
-f 2251 	68 	47
-f 2269 	2267 	812
-f 2257 	2256 	2258
-f 2227 	2258 	2256
-f 2263 	788 	2262
-f 2257 	86 	2256
-f 86 	135 	56
-f 2256 	86 	56
-f 2265 	789 	2263
-f 2258 	126 	2257
-f 2265 	2270 	811
-f 2211 	2210 	46
-f 2203 	2261 	953
-f 2277 	788 	2276
-f 2261 	2203 	2215
-f 2264 	953 	2261
-f 953 	2264 	955
-f 2264 	1102 	955
-f 46 	2266 	2211
-f 811 	812 	2267
-f 2269 	812 	2268
-f 2266 	2051 	42
-f 2270 	2271 	812
-f 49 	2051 	2266
-f 812 	2271 	2272
-f 2273 	812 	2272
-f 2215 	42 	2261
-f 2261 	40 	2264
-f 42 	40 	2261
-f 2264 	2180 	1102
-f 2264 	40 	2180
-f 2266 	46 	49
-f 2252 	788 	2275
-f 2275 	788 	2274
-f 2260 	2274 	789
-f 2273 	2279 	2319
-f 2311 	2230 	2281
-f 2253 	2281 	2230
-f 2230 	660 	2252
-f 788 	2252 	660
-f 2311 	2312 	2230
-f 2314 	2282 	2230
-f 2280 	2249 	2230
-f 2282 	2280 	2230
-f 2302 	2283 	2233
-f 2284 	2302 	2233
-f 2301 	2302 	2284
-f 2237 	3 	2233
-f 2307 	41 	2308
-f 2233 	3 	2284
-f 1 	2284 	3
-f 2288 	2317 	2287
-f 2317 	2289 	2278
-f 2278 	2268 	2317
-f 2289 	2317 	2288
-f 2290 	2319 	2291
-f 2298 	2299 	22
-f 2297 	2298 	22
-f 2292 	2293 	2290
-f 2293 	2295 	2290
-f 2292 	2290 	2291
-f 2296 	2290 	2295
-f 2299 	2300 	22
-f 21 	22 	2300
-f 27 	21 	2300
-f 2310 	27 	2300
-f 2303 	2301 	2284
-f 2284 	2304 	2303
-f 2309 	41 	2310
-f 2284 	2306 	2304
-f 2284 	59 	2306
-f 2306 	41 	2307
-f 2308 	41 	2309
-f 2312 	2313 	2230
-f 2314 	2230 	2313
-f 2283 	2254 	2233
-f 2319 	787 	2273
-f 783 	785 	2318
-f 2321 	782 	2320
-f 2316 	2318 	2315
-f 2324 	2317 	2316
-f 783 	2318 	2317
-f 2318 	2316 	2317
-f 939 	2325 	1716
-f 2286 	2317 	2324
-f 2318 	1716 	2326
-f 783 	2319 	785
-f 2279 	2291 	2319
-f 2319 	822 	2320
-f 2321 	2322 	304
-f 2321 	2320 	2322
-f 306 	304 	2322
-f 22 	17 	2296
-f 2322 	2320 	822
-f 2296 	2297 	22
-f 2287 	2317 	2286
-f 2315 	2318 	2326
-f 2326 	1716 	2325
-f 2329 	2330 	939
-f 939 	2225 	2329
-f 2325 	939 	2330
-# 4289 faces
-
-g group_0_14541540
-
-usemtl color_14541540
-s 0
-
-f 125 	126 	114
-f 128 	114 	126
-f 134 	146 	212
-f 212 	325 	133
-f 146 	176 	212
-f 199 	212 	176
-f 133 	134 	212
-f 199 	211 	212
-f 215 	212 	216
-f 224 	125 	2064
-f 216 	212 	211
-f 352 	212 	222
-f 215 	222 	212
-f 2076 	224 	2064
-f 352 	222 	223
-f 114 	2064 	125
-f 285 	286 	614
-f 337 	334 	325
-f 335 	325 	334
-f 61 	133 	325
-f 60 	61 	325
-f 335 	60 	325
-f 223 	356 	352
-f 357 	352 	356
-f 325 	376 	337
-f 357 	390 	352
-f 395 	352 	390
-f 376 	325 	417
-f 615 	410 	614
-f 410 	285 	614
-f 614 	726 	615
-f 672 	2053 	652
-f 672 	673 	2053
-f 727 	726 	728
-f 727 	729 	726
-f 755 	2053 	325
-f 735 	736 	733
-f 736 	737 	733
-f 352 	395 	804
-f 726 	729 	739
-f 735 	733 	753
-f 726 	739 	642
-f 616 	615 	726
-f 642 	616 	726
-f 804 	807 	755
-f 325 	212 	755
-f 726 	755 	1087
-f 2118 	2064 	755
-f 755 	733 	1087
-f 2083 	2053 	755
-f 2128 	2083 	755
-f 614 	2118 	755
-f 726 	614 	755
-f 755 	212 	352
-f 856 	733 	755
-f 753 	733 	756
-f 856 	756 	733
-f 352 	804 	755
-f 755 	807 	806
-f 810 	755 	806
-f 755 	802 	855
-f 849 	855 	802
-f 755 	810 	802
-f 912 	802 	810
-f 808 	809 	802
-f 848 	808 	802
-f 809 	849 	802
-f 855 	849 	850
-f 855 	856 	755
-f 856 	855 	883
-f 884 	856 	883
-f 756 	856 	884
-f 810 	806 	910
-f 911 	810 	910
-f 911 	912 	810
-f 881 	855 	880
-f 850 	880 	855
-f 881 	883 	855
-f 804 	395 	899
-f 901 	807 	903
-f 899 	903 	804
-f 807 	804 	903
-f 905 	906 	806
-f 905 	806 	907
-f 807 	907 	806
-f 901 	907 	807
-f 906 	910 	806
-f 802 	912 	848
-f 924 	728 	726
-f 726 	1058 	924
-f 726 	1087 	1058
-f 1091 	1085 	1087
-f 1085 	1078 	1087
-f 1044 	1051 	1087
-f 1051 	1058 	1087
-f 1042 	1044 	1087
-f 737 	1092 	733
-f 1078 	1042 	1087
-f 1087 	1092 	1091
-f 1087 	733 	1092
-f 114 	2128 	755
-f 1578 	1582 	1579
-f 1582 	1583 	1580
-f 1582 	1580 	1579
-f 1578 	1585 	1582
-f 1582 	1585 	1586
-f 1584 	1586 	1585
-f 1583 	1588 	1580
-f 1607 	1606 	1599
-f 1599 	1608 	1607
-f 1586 	1605 	1597
-f 1604 	1588 	1583
-f 1605 	1129 	1597
-f 1867 	1866 	1606
-f 1129 	1608 	1597
-f 1599 	1597 	1608
-f 1584 	1605 	1586
-f 1616 	1609 	1611
-f 1616 	1611 	1615
-f 1625 	1583 	1626
-f 1616 	1627 	1626
-f 1629 	1627 	1615
-f 1616 	1615 	1627
-f 1629 	1615 	1630
-f 1621 	1630 	1615
-f 1615 	1611 	1613
-f 1615 	1613 	1621
-f 1635 	1634 	1735
-f 1621 	1735 	1634
-f 1616 	1583 	1609
-f 1625 	1604 	1583
-f 1616 	1626 	1583
-f 1634 	1630 	1621
-f 1684 	1586 	1597
-f 1597 	1599 	1684
-f 1582 	1586 	1684
-f 1684 	1609 	1583
-f 1582 	1684 	1583
-f 1684 	1611 	1609
-f 1611 	1684 	1613
-f 1684 	1740 	1735
-f 1684 	1735 	1613
-f 1684 	1743 	1740
-f 1745 	1743 	1684
-f 1947 	1946 	1684
-f 1866 	1684 	1599
-f 1613 	1735 	1621
-f 1740 	1739 	1738
-f 1740 	1738 	1735
-f 1737 	1735 	1738
-f 1743 	1742 	1740
-f 1742 	1741 	1740
-f 1739 	1740 	1741
-f 1644 	1635 	1735
-f 1735 	1737 	1644
-f 1745 	1749 	1743
-f 1743 	1747 	1742
-f 1747 	1743 	1749
-f 1745 	889 	1749
-f 1753 	1752 	1839
-f 1752 	889 	1745
-f 1752 	1745 	1839
-f 1946 	1839 	1684
-f 1839 	1745 	1684
-f 1864 	1684 	1866
-f 1753 	1839 	1861
-f 1839 	1946 	1863
-f 1839 	1863 	1861
-f 1599 	1606 	1866
-f 1868 	1864 	1869
-f 1864 	1866 	1870
-f 1864 	1870 	1869
-f 1867 	1870 	1866
-f 1922 	1925 	1923
-f 1926 	1923 	1925
-f 1864 	1929 	1684
-f 1952 	1951 	1929
-f 1947 	1684 	1925
-f 1926 	1925 	1684
-f 1926 	1684 	1929
-f 1925 	1950 	1947
-f 1863 	1946 	1954
-f 1947 	1956 	1946
-f 1950 	1925 	1922
-f 1923 	1929 	1951
-f 1926 	1929 	1923
-f 1953 	1947 	1950
-f 1955 	1954 	1946
-f 1955 	1946 	1956
-f 1947 	1953 	1956
-f 1864 	1959 	1929
-f 1952 	1929 	1959
-f 1868 	1959 	1864
-f 2005 	2006 	2003
-f 2003 	2019 	2017
-f 2019 	2003 	2006
-f 2024 	2023 	2017
-f 2003 	2017 	2023
-f 2022 	2003 	2023
-f 2027 	2005 	2025
-f 2025 	2005 	2022
-f 2017 	2032 	2029
-f 2017 	2019 	2032
-f 673 	2054 	2053
-f 2055 	2005 	2027
-f 2057 	2005 	2056
-f 2056 	2005 	2055
-f 1353 	2005 	2057
-f 755 	2064 	114
-f 2076 	2064 	2075
-f 2118 	2075 	2064
-f 2003 	2022 	2005
-f 2006 	2219 	2019
-f 2006 	2005 	2219
-f 2005 	1353 	2093
-f 2170 	2169 	2029
-f 2171 	2170 	2098
-f 2029 	2098 	2170
-f 2128 	2099 	2083
-f 2083 	2100 	932
-f 2100 	2083 	2099
-f 651 	652 	2053
-f 2054 	2058 	325
-f 325 	2053 	2054
-f 417 	325 	2058
-f 932 	2053 	2083
-f 932 	651 	2053
-f 2122 	2075 	2118
-f 614 	286 	2118
-f 114 	128 	2128
-f 2122 	2118 	286
-f 2130 	2099 	2128
-f 2130 	2128 	128
-f 2098 	2136 	2171
-f 2140 	2189 	2175
-f 2142 	2098 	2032
-f 2029 	2032 	2098
-f 2098 	2152 	2136
-f 2095 	2140 	2136
-f 2152 	2095 	2136
-f 2152 	2098 	2142
-f 2169 	2024 	2017
-f 2017 	2029 	2169
-f 2136 	2174 	2171
-f 2172 	2136 	2173
-f 2140 	2173 	2136
-f 2174 	2136 	2172
-f 2140 	2175 	2173
-f 2185 	2178 	2177
-f 2219 	2032 	2019
-f 2186 	2187 	2185
-f 2186 	2185 	2189
-f 2185 	2177 	2189
-f 2190 	2186 	2189
-f 2185 	2187 	2192
-f 2190 	2095 	2219
-f 2219 	2186 	2190
-f 2192 	2200 	2199
-f 2185 	2192 	2199
-f 2178 	2185 	2199
-f 2192 	2223 	2200
-f 2202 	2200 	2223
-f 2175 	2189 	2177
-f 2190 	2140 	2095
-f 2189 	2140 	2190
-f 2206 	2205 	2223
-f 2205 	2202 	2223
-f 2212 	2206 	2223
-f 2213 	2212 	2223
-f 2214 	2213 	2223
-f 2219 	2142 	2032
-f 2219 	2095 	2152
-f 2219 	2152 	2142
-f 2219 	2223 	2187
-f 2240 	2242 	2219
-f 2187 	2186 	2219
-f 2327 	2328 	2219
-f 2219 	2328 	2223
-f 2219 	2285 	2323
-f 2294 	2285 	2219
-f 2219 	2305 	2294
-f 2223 	2192 	2187
-f 2216 	2214 	2223
-f 934 	2216 	2223
-f 2217 	2328 	2218
-f 934 	2223 	2217
-f 2328 	2217 	2223
-f 2228 	2240 	2229
-f 2228 	2241 	2242
-f 2228 	2242 	2240
-f 2246 	2244 	2243
-f 2247 	2244 	2246
-f 2240 	2246 	2243
-f 2240 	2243 	2229
-f 2246 	2005 	2093
-f 2241 	2249 	2242
-f 2247 	2246 	2094
-f 2093 	2094 	2246
-f 2219 	2005 	2246
-f 2254 	2281 	2255
-f 2262 	2277 	2274
-f 2259 	2265 	2263
-f 2272 	2271 	2269
-f 2267 	2270 	2259
-f 2269 	2271 	2267
-f 2271 	2270 	2267
-f 2259 	2270 	2265
-f 2272 	2269 	2273
-f 2268 	2273 	2269
-f 2260 	2259 	2263
-f 2260 	2262 	2274
-f 2263 	2262 	2260
-f 2275 	2274 	2277
-f 2275 	2277 	2276
-f 2276 	2255 	2275
-f 2252 	2275 	2255
-f 2285 	2291 	2289
-f 2268 	2278 	2273
-f 2249 	2280 	2242
-f 2252 	2255 	2253
-f 2280 	2282 	2242
-f 2253 	2255 	2281
-f 2283 	2281 	2254
-f 2286 	2323 	2287
-f 2288 	2287 	2285
-f 2279 	2289 	2291
-f 2278 	2289 	2273
-f 2288 	2285 	2289
-f 2273 	2289 	2279
-f 2293 	2285 	2294
-f 2293 	2292 	2285
-f 2291 	2285 	2292
-f 2293 	2294 	2295
-f 2295 	2294 	2296
-f 2296 	2294 	2297
-f 2297 	2294 	2298
-f 2298 	2294 	2299
-f 2294 	2300 	2299
-f 2304 	2294 	2305
-f 2302 	2301 	2305
-f 2301 	2303 	2305
-f 2303 	2304 	2305
-f 2304 	2306 	2294
-f 2306 	2307 	2294
-f 2307 	2308 	2294
-f 2309 	2310 	2294
-f 2308 	2309 	2294
-f 2310 	2300 	2294
-f 2305 	2311 	2302
-f 2281 	2283 	2311
-f 2312 	2311 	2305
-f 2313 	2312 	2305
-f 2305 	2242 	2282
-f 2305 	2282 	2314
-f 2314 	2313 	2305
-f 2283 	2302 	2311
-f 2219 	2242 	2305
-f 2219 	2246 	2240
-f 2219 	2323 	2327
-f 2315 	2323 	2316
-f 2324 	2316 	2323
-f 2324 	2323 	2286
-f 2285 	2287 	2323
-f 2323 	2315 	2326
-f 2325 	2327 	2326
-f 2326 	2327 	2323
-f 2330 	2328 	2327
-f 2327 	2325 	2330
-f 2218 	2328 	2225
-f 2329 	2225 	2328
-f 2328 	2330 	2329
-# 371 faces
-
- #end of obj_0
-

BIN
examples/models/utf8/James_Body_Lores.jpg


BIN
examples/models/utf8/James_EyeLashBotTran.png


BIN
examples/models/utf8/James_EyeLashTopTran.png


BIN
examples/models/utf8/James_Eye_Green.jpg


BIN
examples/models/utf8/James_Eye_Inner_Green.jpg


BIN
examples/models/utf8/James_Face_Color_Hair_Lores.jpg


BIN
examples/models/utf8/James_Mouth_Gum_Lores.jpg


BIN
examples/models/utf8/James_Tongue_Lores.jpg


BIN
examples/models/utf8/MCasShoe1TEX_Lores.jpg


BIN
examples/models/utf8/MJeans1TEX_Lores.jpg


BIN
examples/models/utf8/MTshirt3TEX_Lores.jpg


BIN
examples/models/utf8/Nail_Hand_01_Lores.jpg


+ 0 - 21
examples/models/utf8/WaltHi.js

@@ -1,21 +0,0 @@
-{
-  "materials": {
-    "lambert4sg": { "Kd": [204, 204, 204] }
-  },
-  "decodeParams": {
-    "decodeOffsets": [-5863,24,-6527,0,0,-511,-511,-511],
-    "decodeScales": [0.004800,0.004800,0.004800,0.000978,0.000978,0.001957,0.001957,0.001957]
-  },
-  "urls": {
-    "WaltHi.utf8": [
-      { "material": "lambert4sg",
-        "attribRange": [0, 55294],
-        "codeRange": [442352, 216890, 108427]
-      },
-      { "material": "lambert4sg",
-        "attribRange": [659242, 31285],
-        "codeRange": [909522, 121073, 60507]
-      }
-    ]
-  }
-}

BIN
examples/models/utf8/WaltHi.utf8


+ 0 - 107
examples/models/utf8/ben.js

@@ -1,107 +0,0 @@
-{
-  "materials": {
-    "gums": { "map_Kd": "James_Mouth_Gum_Lores.jpg" },
-    "tongue": { "map_Kd": "James_Tongue_Lores.jpg" },
-    "teethbottom": { "Kd": [251, 248, 248] },
-    "teethtop": { "Kd": [251, 248, 248] },
-    "topeyelashes": { "Kd": [66, 52, 42], "map_Kd": "James_EyeLashTopTran.png", "d": 0.999 },
-    "bottomeyelashes": { "Kd": [66, 52, 42], "map_Kd": "James_EyeLashBotTran.png", "d": 0.999 },
-    "head": { "map_Kd": "James_Face_Color_Hair_Lores.jpg", "Ks": [25,25,25], "Ns": 70 },
-    "eyetrans": { "Kd": [0, 0, 0] },
-    "pupil": { "Kd": [1, 1, 1] },
-    "iris": { "map_Kd": "James_Eye_Inner_Green.jpg" },
-    "eyeball": { "map_Kd": "James_Eye_Green.jpg" },
-    "pants": { "map_Kd": "MJeans1TEX_Lores.jpg", "Ks": [30,30,30], "Ns": 20 },
-    "tshirt3": { "map_Kd": "MTshirt3TEX_Lores.jpg", "Ks": [30,30,30], "Ns": 20 },
-    "skinbody": { "map_Kd": "James_Body_Lores.jpg", "Ks": [25,25,25], "Ns": 70 },
-    "fingernails": { "map_Kd": "Nail_Hand_01_Lores.jpg" },
-    "soleshoe": { "map_Kd": "MCasShoe1TEX_Lores.jpg" },
-    "sole": { "map_Kd": "MCasShoe1TEX_Lores.jpg" },
-    "laces": { "map_Kd": "MCasShoe1TEX_Lores.jpg" },
-    "bow": { "map_Kd": "MCasShoe1TEX_Lores.jpg" }
-  },
-  "decodeParams": {
-    "decodeOffsets": [-2533,-149,-6225,0,0,-511,-511,-511],
-    "decodeScales": [0.000043,0.000043,0.000043,0.000978,0.000978,0.001957,0.001957,0.001957]
-  },
-  "urls": {
-    "ben.utf8": [
-      { "material": "bottomeyelashes",
-        "attribRange": [0, 130],
-        "codeRange": [1040, 388, 192]
-      },
-      { "material": "bow",
-        "attribRange": [1428, 1848],
-        "codeRange": [16212, 6457, 3224]
-      },
-      { "material": "eyeball",
-        "attribRange": [22669, 3834],
-        "codeRange": [53341, 14697, 7284]
-      },
-      { "material": "eyetrans",
-        "attribRange": [68038, 5248],
-        "codeRange": [110022, 20180, 9964]
-      },
-      { "material": "fingernails",
-        "attribRange": [130202, 1023],
-        "codeRange": [138386, 2669, 1228]
-      },
-      { "material": "gums",
-        "attribRange": [141055, 1446],
-        "codeRange": [152623, 5270, 2624]
-      },
-      { "material": "head",
-        "attribRange": [157893, 2219],
-        "codeRange": [175645, 8353, 4168]
-      },
-      { "material": "iris",
-        "attribRange": [183998, 902],
-        "codeRange": [191214, 3332, 1664]
-      },
-      { "material": "laces",
-        "attribRange": [194546, 1016],
-        "codeRange": [202674, 3590, 1792]
-      },
-      { "material": "pants",
-        "attribRange": [206264, 8200],
-        "codeRange": [271864, 30625, 15293]
-      },
-      { "material": "pupil",
-        "attribRange": [302489, 148],
-        "codeRange": [303673, 581, 288]
-      },
-      { "material": "skinbody",
-        "attribRange": [304254, 4990],
-        "codeRange": [344174, 15770, 7830]
-      },
-      { "material": "sole",
-        "attribRange": [359944, 2588],
-        "codeRange": [380648, 9345, 4668]
-      },
-      { "material": "soleshoe",
-        "attribRange": [389993, 3164],
-        "codeRange": [415305, 10721, 5352]
-      },
-      { "material": "teethbottom",
-        "attribRange": [426026, 1235],
-        "codeRange": [435906, 3513, 1656]
-      },
-      { "material": "teethtop",
-        "attribRange": [439419, 1666],
-        "codeRange": [452747, 3937, 1816]
-      },
-      { "material": "tongue",
-        "attribRange": [456684, 845],
-        "codeRange": [463444, 3162, 1578]
-      },
-      { "material": "topeyelashes",
-        "attribRange": [466606, 130],
-        "codeRange": [467646, 388, 192]
-      },
-      { "material": "tshirt3",
-        "attribRange": [468034, 4283],
-        "codeRange": [502298, 14470, 7216]
-      }
-    ]
-  }
-}

BIN
examples/models/utf8/ben.utf8


+ 0 - 107
examples/models/utf8/ben_dds.js

@@ -1,107 +0,0 @@
-{
-  "materials": {
-    "gums": { "map_Kd": "dds/James_Mouth_Gum_Lores.dds" },
-    "tongue": { "map_Kd": "dds/James_Tongue_Lores.dds" },
-    "teethbottom": { "Kd": [251, 248, 248] },
-    "teethtop": { "Kd": [251, 248, 248] },
-    "topeyelashes": { "Kd": [66, 52, 42], "map_Kd": "dds/James_EyeLashTopTran.dds", "d": 0.999 },
-    "bottomeyelashes": { "Kd": [66, 52, 42], "map_Kd": "dds/James_EyeLashBotTran.dds", "d": 0.999 },
-    "head": { "map_Kd": "dds/James_Face_Color_Hair_Lores.dds", "Ks": [25,25,25], "Ns": 70 },
-    "eyetrans": { "Kd": [0, 0, 0] },
-    "pupil": { "Kd": [1, 1, 1] },
-    "iris": { "map_Kd": "dds/James_Eye_Inner_Green.dds" },
-    "eyeball": { "map_Kd": "dds/James_Eye_Green.dds" },
-    "pants": { "map_Kd": "dds/MJeans1TEX_Lores.dds", "Ks": [30,30,30], "Ns": 20 },
-    "tshirt3": { "map_Kd": "dds/MTshirt3TEX_Lores.dds", "Ks": [30,30,30], "Ns": 20 },
-    "skinbody": { "map_Kd": "dds/James_Body_Lores.dds", "Ks": [25,25,25], "Ns": 70 },
-    "fingernails": { "map_Kd": "dds/Nail_Hand_01_Lores.dds" },
-    "soleshoe": { "map_Kd": "dds/MCasShoe1TEX_Lores.dds" },
-    "sole": { "map_Kd": "dds/MCasShoe1TEX_Lores.dds" },
-    "laces": { "map_Kd": "dds/MCasShoe1TEX_Lores.dds" },
-    "bow": { "map_Kd": "dds/MCasShoe1TEX_Lores.dds" }
-  },
-  "decodeParams": {
-    "decodeOffsets": [-2533,-149,-6225,0,0,-511,-511,-511],
-    "decodeScales": [0.000043,0.000043,0.000043,0.000978,0.000978,0.001957,0.001957,0.001957]
-  },
-  "urls": {
-    "ben.utf8": [
-      { "material": "bottomeyelashes",
-        "attribRange": [0, 130],
-        "codeRange": [1040, 388, 192]
-      },
-      { "material": "bow",
-        "attribRange": [1428, 1848],
-        "codeRange": [16212, 6457, 3224]
-      },
-      { "material": "eyeball",
-        "attribRange": [22669, 3834],
-        "codeRange": [53341, 14697, 7284]
-      },
-      { "material": "eyetrans",
-        "attribRange": [68038, 5248],
-        "codeRange": [110022, 20180, 9964]
-      },
-      { "material": "fingernails",
-        "attribRange": [130202, 1023],
-        "codeRange": [138386, 2669, 1228]
-      },
-      { "material": "gums",
-        "attribRange": [141055, 1446],
-        "codeRange": [152623, 5270, 2624]
-      },
-      { "material": "head",
-        "attribRange": [157893, 2219],
-        "codeRange": [175645, 8353, 4168]
-      },
-      { "material": "iris",
-        "attribRange": [183998, 902],
-        "codeRange": [191214, 3332, 1664]
-      },
-      { "material": "laces",
-        "attribRange": [194546, 1016],
-        "codeRange": [202674, 3590, 1792]
-      },
-      { "material": "pants",
-        "attribRange": [206264, 8200],
-        "codeRange": [271864, 30625, 15293]
-      },
-      { "material": "pupil",
-        "attribRange": [302489, 148],
-        "codeRange": [303673, 581, 288]
-      },
-      { "material": "skinbody",
-        "attribRange": [304254, 4990],
-        "codeRange": [344174, 15770, 7830]
-      },
-      { "material": "sole",
-        "attribRange": [359944, 2588],
-        "codeRange": [380648, 9345, 4668]
-      },
-      { "material": "soleshoe",
-        "attribRange": [389993, 3164],
-        "codeRange": [415305, 10721, 5352]
-      },
-      { "material": "teethbottom",
-        "attribRange": [426026, 1235],
-        "codeRange": [435906, 3513, 1656]
-      },
-      { "material": "teethtop",
-        "attribRange": [439419, 1666],
-        "codeRange": [452747, 3937, 1816]
-      },
-      { "material": "tongue",
-        "attribRange": [456684, 845],
-        "codeRange": [463444, 3162, 1578]
-      },
-      { "material": "topeyelashes",
-        "attribRange": [466606, 130],
-        "codeRange": [467646, 388, 192]
-      },
-      { "material": "tshirt3",
-        "attribRange": [468034, 4283],
-        "codeRange": [502298, 14470, 7216]
-      }
-    ]
-  }
-}

BIN
examples/models/utf8/dds/James_Body_Lores.dds


BIN
examples/models/utf8/dds/James_EyeLashBotTran.dds


BIN
examples/models/utf8/dds/James_EyeLashTopTran.dds


BIN
examples/models/utf8/dds/James_Eye_Green.dds


BIN
examples/models/utf8/dds/James_Eye_Inner_Green.dds


BIN
examples/models/utf8/dds/James_Face_Color_Hair_Lores.dds


BIN
examples/models/utf8/dds/James_Mouth_Gum_Lores.dds


BIN
examples/models/utf8/dds/James_Tongue_Lores.dds


BIN
examples/models/utf8/dds/MCasShoe1TEX_Lores.dds


BIN
examples/models/utf8/dds/MJeans1TEX_Lores.dds


BIN
examples/models/utf8/dds/MTshirt3TEX_Lores.dds


BIN
examples/models/utf8/dds/Nail_Hand_01_Lores.dds


BIN
examples/models/utf8/hand.jpg


+ 0 - 27
examples/models/utf8/hand.js

@@ -1,27 +0,0 @@
-{
-  "materials": {
-    "preview": { "Kd": [184, 136, 234] },
-    "nails": { "Kd": [251, 238, 209], "map_Kd": "hand.jpg", "Ks": [30,30,30], "Ns": 100 },
-    "skin": { "Kd": [207, 181, 161],  "map_Kd": "hand.jpg", "Ks": [30,30,30], "Ns": 30 }
-  },
-  "decodeParams": {
-    "decodeOffsets": [-7473,-239,-8362,0,0,-511,-511,-511],
-    "decodeScales": [0.000050,0.000050,0.000050,0.000978,0.000978,0.001957,0.001957,0.001957]
-  },
-  "urls": {
-    "hand.utf8": [
-      { "material": "nails",
-        "attribRange": [0, 261],
-        "codeRange": [2088, 817, 404]
-      },
-      { "material": "preview",
-        "attribRange": [2905, 688],
-        "codeRange": [8409, 2570, 1280]
-      },
-      { "material": "skin",
-        "attribRange": [10979, 8899],
-        "codeRange": [82171, 31026, 15451]
-      }
-    ]
-  }
-}

BIN
examples/models/utf8/hand.utf8


+ 2 - 4
examples/webaudio_orientation.html

@@ -123,7 +123,7 @@
 
 
 		//
 		//
 
 
-		light = new THREE.HemisphereLight( 0xffffff, 0x444444 );
+		var light = new THREE.HemisphereLight( 0xffffff, 0x444444 );
 		light.position.set( 0, 200, 0 );
 		light.position.set( 0, 200, 0 );
 		scene.add( light );
 		scene.add( light );
 
 
@@ -150,8 +150,6 @@
 
 
 		//
 		//
 
 
-		var audioLoader = new THREE.AudioLoader();
-
 		var listener = new THREE.AudioListener();
 		var listener = new THREE.AudioListener();
 		camera.add( listener );
 		camera.add( listener );
 
 
@@ -172,7 +170,7 @@
 		var gltfLoader = new THREE.GLTFLoader();
 		var gltfLoader = new THREE.GLTFLoader();
 		gltfLoader.load( 'models/gltf/BoomBox/glTF-Binary/BoomBox.glb', function( gltf ) {
 		gltfLoader.load( 'models/gltf/BoomBox/glTF-Binary/BoomBox.glb', function( gltf ) {
 
 
-			boomBox =  gltf.scene;
+			var boomBox =  gltf.scene;
 			boomBox.position.set( 0, 0.2, 0 );
 			boomBox.position.set( 0, 0.2, 0 );
 			boomBox.scale.set( 20, 20, 20 );
 			boomBox.scale.set( 20, 20, 20 );
 
 

+ 0 - 2
examples/webgl_buffergeometry_instancing_lambert.html

@@ -268,8 +268,6 @@
 			var colors = new Float32Array( INSTANCES * 3 ); // rgb
 			var colors = new Float32Array( INSTANCES * 3 ); // rgb
 			var scales = new Float32Array( INSTANCES * 1 ); // s
 			var scales = new Float32Array( INSTANCES * 1 ); // s
 
 
-			var color = new THREE.Color();
-
 			for ( var i = 0, l = INSTANCES; i < l; i ++ ) {
 			for ( var i = 0, l = INSTANCES; i < l; i ++ ) {
 
 
 				var index = 3 * i;
 				var index = 3 * i;

+ 0 - 232
examples/webgl_loader_utf8.html

@@ -1,232 +0,0 @@
-<!DOCTYPE html>
-<html lang="en">
-	<head>
-		<title>three.js webgl - loader - UTF8</title>
-		<meta charset="utf-8">
-		<meta name="viewport" content="width=device-width, user-scalable=no, minimum-scale=1.0, maximum-scale=1.0">
-		<style>
-			body {
-				font-family: Monospace;
-				background-color: #000;
-				color: #fff;
-				margin: 0px;
-				overflow: hidden;
-			}
-			#info {
-				color: #fff;
-				position: absolute;
-				top: 10px;
-				width: 100%;
-				text-align: center;
-				z-index: 100;
-				display:block;
-			}
-			#info a, .button { color: #f00; font-weight: bold; text-decoration: underline; cursor: pointer }
-		</style>
-	</head>
-
-	<body>
-		<div id="info">
-		<a href="http://threejs.org" target="_blank" rel="noopener">three.js</a> -
-		<a href="http://code.google.com/p/webgl-loader/" target="_blank" rel="noopener">UTF8 format</a> loader test -
-		models from <a href="http://www.sci.utah.edu/~wald/animrep/" target="_blank" rel="noopener">The Utah 3D Animation Repository</a>
-		</div>
-
-		<script src="../build/three.js"></script>
-
-		<script src="js/loaders/UTF8Loader.js"></script>
-		<script src="js/loaders/MTLLoader.js"></script>
-		<script src="js/loaders/DDSLoader.js"></script>
-
-		<script src="js/Detector.js"></script>
-		<script src="js/libs/stats.min.js"></script>
-
-		<script>
-
-			var SCREEN_WIDTH = window.innerWidth;
-			var SCREEN_HEIGHT = window.innerHeight;
-
-			var FLOOR = -150;
-
-			var container, stats;
-
-			var camera, scene, renderer;
-
-			var mesh, zmesh, geometry;
-
-			var mouseX = 0, mouseY = 0;
-
-			var windowHalfX = window.innerWidth / 2;
-			var windowHalfY = window.innerHeight / 2;
-
-			document.addEventListener('mousemove', onDocumentMouseMove, false);
-
-			init();
-			animate();
-
-
-			function init() {
-
-				container = document.createElement( 'div' );
-				document.body.appendChild( container );
-
-				camera = new THREE.PerspectiveCamera( 20, SCREEN_WIDTH / SCREEN_HEIGHT, 1, 2000 );
-				camera.position.z = 800;
-
-				scene = new THREE.Scene();
-				scene.background = new THREE.Color( 0x000000 );
-				scene.fog = new THREE.Fog( 0x000000, 800, 2000 );
-
-				var path = "textures/cube/SwedishRoyalCastle/";
-				var format = '.jpg';
-				var urls = [
-					path + 'px' + format, path + 'nx' + format,
-					path + 'py' + format, path + 'ny' + format,
-					path + 'pz' + format, path + 'nz' + format
-				];
-
-				reflectionCube = new THREE.CubeTextureLoader().load( urls );
-
-				// LIGHTS
-
-				var ambient = new THREE.AmbientLight( 0x222222 );
-				scene.add( ambient );
-
-				var directionalLight = new THREE.DirectionalLight( 0xffffff, 1.1 );
-				directionalLight.position.set( 0, 20, 300 );
-				scene.add( directionalLight );
-
-				directionalLight.castShadow = true;
-
-				directionalLight.shadow.mapSize.width = 2048;
-				directionalLight.shadow.mapSize.height = 2048;
-
-				var d = 150;
-
-				directionalLight.shadow.camera.left = -d * 1.2;
-				directionalLight.shadow.camera.right = d * 1.2;
-				directionalLight.shadow.camera.top = d;
-				directionalLight.shadow.camera.bottom = -d;
-
-				directionalLight.shadow.camera.near = 200;
-				directionalLight.shadow.camera.far = 500;
-
-
-				// RENDERER
-
-				renderer = new THREE.WebGLRenderer( { antialias: true } );
-				renderer.setPixelRatio( window.devicePixelRatio );
-				renderer.setSize( SCREEN_WIDTH, SCREEN_HEIGHT );
-				renderer.domElement.style.position = "relative";
-				container.appendChild( renderer.domElement );
-
-				//
-
-				renderer.gammaInput = true;
-				renderer.gammaOutput = true;
-
-				renderer.shadowMap.enabled = true;
-				renderer.shadowMap.type = THREE.PCFShadowMap;
-
-				// STATS
-
-				stats = new Stats();
-				container.appendChild( stats.dom );
-
-				var start = Date.now();
-
-				THREE.Loader.Handlers.add( /\.dds$/i, new THREE.DDSLoader() );
-
-				var loader = new THREE.UTF8Loader();
-
-				loader.load( "models/utf8/hand.js", function ( object ) {
-
-					var end = Date.now();
-					console.log( "hand", end - start, "ms" );
-
-					var s = 350;
-					object.scale.set( s, s, s );
-					object.position.x = 125;
-					object.position.y = -125;
-					scene.add( object );
-
-					object.traverse( function( node ) {
-
-						node.castShadow = true;
-						node.receiveShadow = true;
-
-					} );
-
-				}, { normalizeRGB: true } );
-
-				loader.load( "models/utf8/ben_dds.js", function ( object ) {
-
-					var end = Date.now();
-					console.log( "ben", end - start, "ms" );
-
-					var s = 350;
-					object.scale.set( s, s, s );
-					object.position.x = -125;
-					object.position.y = -125;
-					scene.add( object );
-
-					object.traverse( function( node ) {
-
-						node.castShadow = true;
-						node.receiveShadow = true;
-
-					} );
-
-				}, { normalizeRGB: true } );
-
-				//
-
-				window.addEventListener( 'resize', onWindowResize, false );
-
-			}
-
-			function onWindowResize() {
-
-				windowHalfX = window.innerWidth / 2;
-				windowHalfY = window.innerHeight / 2;
-
-				camera.aspect = window.innerWidth / window.innerHeight;
-				camera.updateProjectionMatrix();
-
-				renderer.setSize( window.innerWidth, window.innerHeight );
-
-			}
-
-			function onDocumentMouseMove( event ) {
-
-				mouseX = ( event.clientX - windowHalfX );
-				mouseY = ( event.clientY - windowHalfY );
-
-			}
-
-			//
-
-			function animate() {
-
-				requestAnimationFrame( animate );
-
-				render();
-				stats.update();
-
-			}
-
-			function render() {
-
-				camera.position.x += ( mouseX - camera.position.x ) * .05;
-				camera.position.y += ( - mouseY - camera.position.y ) * .05;
-
-				camera.lookAt( scene.position );
-
-				renderer.render( scene, camera );
-
-			}
-
-		</script>
-
-	</body>
-</html>

+ 3 - 3
examples/webgl_tiled_forward.html

@@ -52,7 +52,7 @@
 
 
 		var RADIUS = 75;
 		var RADIUS = 75;
 
 
-		THREE.ShaderChunk[ 'lights_pars_maps' ] += [
+		THREE.ShaderChunk[ 'lights_pars_begin' ] += [
 			'#if defined TILED_FORWARD',
 			'#if defined TILED_FORWARD',
 			'uniform vec4 tileData;',
 			'uniform vec4 tileData;',
 			'uniform sampler2D tileTexture;',
 			'uniform sampler2D tileTexture;',
@@ -60,7 +60,7 @@
 			'#endif'
 			'#endif'
 		].join( '\n' );
 		].join( '\n' );
 
 
-		THREE.ShaderChunk[ 'lights_fragment_maps' ] += [
+		THREE.ShaderChunk[ 'lights_fragment_end' ] += [
 			'',
 			'',
 			'#if defined TILED_FORWARD',
 			'#if defined TILED_FORWARD',
 			'vec2 tUv = floor(gl_FragCoord.xy / tileData.xy * 32.) / 32. + tileData.zw;',
 			'vec2 tUv = floor(gl_FragCoord.xy / tileData.xy * 32.) / 32. + tileData.zw;',
@@ -383,7 +383,7 @@
 			init( geometry );
 			init( geometry );
 			resize();
 			resize();
 
 
-			renderer.animate( function ( time ) {
+			renderer.setAnimationLoop( function ( time ) {
 
 
 				update( time / 1000 );
 				update( time / 1000 );
 				stats.begin();
 				stats.begin();

+ 25 - 21
examples/webvr_daydream.html → examples/webvr_ballshooter.html

@@ -1,7 +1,7 @@
 <!DOCTYPE html>
 <!DOCTYPE html>
 <html lang="en">
 <html lang="en">
 	<head>
 	<head>
-		<title>three.js webvr - daydream</title>
+		<title>three.js webvr - ball shooter</title>
 		<meta charset="utf-8">
 		<meta charset="utf-8">
 		<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no">
 		<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no">
 		<!-- Origin Trial Token, feature = WebVR (For Chrome M62+), origin = https://threejs.org, expires = 2018-07-25 -->
 		<!-- Origin Trial Token, feature = WebVR (For Chrome M62+), origin = https://threejs.org, expires = 2018-07-25 -->
@@ -19,24 +19,20 @@
 				overflow: hidden;
 				overflow: hidden;
 			}
 			}
 			a {
 			a {
-				color: #f00;
+				color: #48f;
 			}
 			}
 		</style>
 		</style>
 	</head>
 	</head>
 	<body>
 	<body>
 
 
 		<script src="../build/three.js"></script>
 		<script src="../build/three.js"></script>
-
-		<script src="js/vr/DaydreamController.js"></script>
 		<script src="js/vr/WebVR.js"></script>
 		<script src="js/vr/WebVR.js"></script>
 
 
 		<script>
 		<script>
 
 
-			var clock = new THREE.Clock();
-
 			var container;
 			var container;
 			var camera, scene, renderer;
 			var camera, scene, renderer;
-			var controller;
+			var controller, isSelecting = false;
 
 
 			var room;
 			var room;
 
 
@@ -57,7 +53,7 @@
 				info.style.top = '10px';
 				info.style.top = '10px';
 				info.style.width = '100%';
 				info.style.width = '100%';
 				info.style.textAlign = 'center';
 				info.style.textAlign = 'center';
-				info.innerHTML = '<a href="https://threejs.org" target="_blank" rel="noopener">three.js</a> webvr - daydream';
+				info.innerHTML = '<a href="https://threejs.org" target="_blank" rel="noopener">three.js</a> webvr - ball shooter';
 				container.appendChild( info );
 				container.appendChild( info );
 
 
 				scene = new THREE.Scene();
 				scene = new THREE.Scene();
@@ -111,14 +107,24 @@
 
 
 				//
 				//
 
 
-				controller = new THREE.DaydreamController();
-				controller.position.set( 0.3, 0.75, 0 );
+				controller = renderer.vr.getController( 0 );
+				controller.addEventListener( 'selectstart', function () {
+
+					isSelecting = true;
+
+				} );
+				controller.addEventListener( 'selectend', function () {
+
+					isSelecting = false;
+
+				} );
 				scene.add( controller );
 				scene.add( controller );
 
 
 				//
 				//
 
 
-				var controllerHelper = new THREE.Line( new THREE.BufferGeometry(), new THREE.LineBasicMaterial( { linewidth: 2 } ) );
-				controllerHelper.geometry.addAttribute( 'position', new THREE.Float32BufferAttribute( [ 0, 0, 0, 0, 0, - 10 ], 3 ) );
+				var controllerHelper = new THREE.Line( new THREE.BufferGeometry(), new THREE.LineBasicMaterial( { vertexColors: true, linewidth: 2, blending: THREE.AdditiveBlending } ) );
+				controllerHelper.geometry.addAttribute( 'position', new THREE.Float32BufferAttribute( [ 0, 0, 0, 0, 0, - 1 ], 3 ) );
+				controllerHelper.geometry.addAttribute( 'color', new THREE.Float32BufferAttribute( [ 0.5, 0.5, 0.5, 0, 0, 0 ], 3 ) );
 				controller.add( controllerHelper );
 				controller.add( controllerHelper );
 
 
 				//
 				//
@@ -146,11 +152,7 @@
 
 
 			function render() {
 			function render() {
 
 
-				var delta = clock.getDelta() * 60;
-
-				controller.update();
-
-				if ( controller.getTouchpadState() === true ) {
+				if ( isSelecting ) {
 
 
 					var cube = room.children[ 0 ];
 					var cube = room.children[ 0 ];
 					room.remove( cube );
 					room.remove( cube );
@@ -204,18 +206,20 @@
 
 
 						normal.copy( cube.position ).sub( cube2.position );
 						normal.copy( cube.position ).sub( cube2.position );
 
 
-						if ( normal.length() < 2 * radius ) {
+						var distance = normal.length();
+
+						if ( distance < 2 * radius ) {
+
+							normal.multiplyScalar( 0.5 * distance - radius );
 
 
-							normal.multiplyScalar( 0.5 * normal.length() - radius );
 							cube.position.sub( normal );
 							cube.position.sub( normal );
 							cube2.position.add( normal );
 							cube2.position.add( normal );
 
 
 							normal.normalize();
 							normal.normalize();
 
 
 							relativeVelocity.copy( cube.userData.velocity ).sub( cube2.userData.velocity );
 							relativeVelocity.copy( cube.userData.velocity ).sub( cube2.userData.velocity );
-							var dot = relativeVelocity.dot( normal );
 
 
-							normal = normal.multiplyScalar( dot );
+							normal = normal.multiplyScalar( relativeVelocity.dot( normal ) );
 
 
 							cube.userData.velocity.sub( normal );
 							cube.userData.velocity.sub( normal );
 							cube2.userData.velocity.add( normal );
 							cube2.userData.velocity.add( normal );

+ 0 - 262
examples/webvr_gearvr.html

@@ -1,262 +0,0 @@
-<!DOCTYPE html>
-<html lang="en">
-	<head>
-		<title>three.js webvr - gear vr</title>
-		<meta charset="utf-8">
-		<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no">
-		<!-- Origin Trial Token, feature = WebVR (For Chrome M62+), origin = https://threejs.org, expires = 2018-07-25 -->
-		<meta http-equiv="origin-trial" data-feature="WebVR (For Chrome M62+)" data-expires="2018-07-25" content="AtW06hJFoVWUJTZf5gqymMIlrR60JJi5MsSe44qsHjrCmzDUNmvaTtAVg+K9O9jFpjJtn/W9jvG//hHHaq5HcQoAAABQeyJvcmlnaW4iOiJodHRwczovL3RocmVlanMub3JnOjQ0MyIsImZlYXR1cmUiOiJXZWJWUjEuMU02MiIsImV4cGlyeSI6MTUzMjUyNjI5OH0=">
-		<!-- Origin Trial Token, feature = WebXR Device API, origin = https://threejs.org, expires = 2018-07-21 -->
-		<meta http-equiv="origin-trial" data-feature="WebXR Device API" data-expires="2018-07-21" content="Anlf1R/bCOUxOEgGI/9TWuzHHNxBMfZSTUMDCN7cLwDj2gpLwgA1K0DPwOzO/O0Jwaur5bsHo7k9KXx+6g+82wIAAABQeyJvcmlnaW4iOiJodHRwczovL3RocmVlanMub3JnOjQ0MyIsImZlYXR1cmUiOiJXZWJYUkRldmljZSIsImV4cGlyeSI6MTUzMjE2NjIyNX0=">
-		<!-- Origin Trial Token, feature = WebXR Gamepad Support, origin = https://threejs.org, expires = 2018-07-21 -->
-		<meta http-equiv="origin-trial" data-feature="WebXR Gamepad Support" data-expires="2018-07-21" content="ArDsXbwATKHPmvQiPlEIWNCt4DlEjB7bLj9vOgoNmL8r38U+wQNYZyUvjQIqqzgACciUUuAnxluTIL7nNkI89gcAAABYeyJvcmlnaW4iOiJodHRwczovL3RocmVlanMub3JnOjQ0MyIsImZlYXR1cmUiOiJXZWJYUkdhbWVwYWRTdXBwb3J0IiwiZXhwaXJ5IjoxNTMyMTY2MjI1fQ==">
-		<style>
-			body {
-				font-family: Monospace;
-				background-color: #101010;
-				color: #fff;
-				margin: 0px;
-				overflow: hidden;
-			}
-			a {
-				color: #f00;
-			}
-		</style>
-	</head>
-	<body>
-
-		<script src="../build/three.js"></script>
-
-		<script src="js/loaders/MTLLoader.js"></script>
-		<script src="js/loaders/OBJLoader.js"></script>
-
-		<script src="js/vr/GearVRController.js"></script>
-		<script src="js/vr/WebVR.js"></script>
-
-		<script>
-
-			var clock = new THREE.Clock();
-
-			var container;
-			var camera, scene, renderer;
-			var controller;
-
-			var room;
-
-			var radius = 0.08;
-			var normal = new THREE.Vector3();
-			var relativeVelocity = new THREE.Vector3();
-
-			init();
-			animate();
-
-			function init() {
-
-				container = document.createElement( 'div' );
-				document.body.appendChild( container );
-
-				var info = document.createElement( 'div' );
-				info.style.position = 'absolute';
-				info.style.top = '10px';
-				info.style.width = '100%';
-				info.style.textAlign = 'center';
-				info.innerHTML = '<a href="http://threejs.org" target="_blank" rel="noopener">three.js</a> webgl - gear vr';
-				container.appendChild( info );
-
-				scene = new THREE.Scene();
-				scene.background = new THREE.Color( 0x505050 );
-
-				camera = new THREE.PerspectiveCamera( 70, window.innerWidth / window.innerHeight, 0.1, 10 );
-
-				room = new THREE.Mesh(
-					new THREE.BoxBufferGeometry( 6, 6, 6, 8, 8, 8 ),
-					new THREE.MeshBasicMaterial( { color: 0x404040, wireframe: true } )
-				);
-				room.position.y = 3;
-				scene.add( room );
-
-				scene.add( new THREE.HemisphereLight( 0x606060, 0x404040 ) );
-
-				var light = new THREE.DirectionalLight( 0xffffff );
-				light.position.set( 1, 1, 1 ).normalize();
-				scene.add( light );
-
-				var geometry = new THREE.IcosahedronBufferGeometry( radius, 2 );
-
-				for ( var i = 0; i < 200; i ++ ) {
-
-					var object = new THREE.Mesh(
-						geometry,
-						new THREE.MeshLambertMaterial( { color: Math.random() * 0xffffff } )
-					);
-
-					object.position.x = Math.random() * 4 - 2;
-					object.position.y = Math.random() * 4 - 2;
-					object.position.z = Math.random() * 4 - 2;
-
-					object.userData.velocity = new THREE.Vector3();
-					object.userData.velocity.x = Math.random() * 0.01 - 0.005;
-					object.userData.velocity.y = Math.random() * 0.01 - 0.005;
-					object.userData.velocity.z = Math.random() * 0.01 - 0.005;
-
-					room.add( object );
-
-				}
-
-				renderer = new THREE.WebGLRenderer( { antialias: true } );
-				renderer.setPixelRatio( window.devicePixelRatio );
-				renderer.setSize( window.innerWidth, window.innerHeight );
-				renderer.vr.enabled = true;
-				container.appendChild( renderer.domElement );
-
-				document.body.appendChild( WEBVR.createButton( renderer ) );
-
-				controller = new THREE.GearVRController();
-				controller.position.set( 0.25, 0.75, 0 );
-				scene.add( controller );
-
-				var skyBox = {
-					front: 'textures/cube/Bridge2/posz.jpg',
-					back: 'textures/cube/Bridge2/negz.jpg',
-					left: 'textures/cube/Bridge2/posx.jpg',
-					right: 'textures/cube/Bridge2/negx.jpg',
-					up: 'textures/cube/Bridge2/posy.jpg',
-					down: 'textures/cube/Bridge2/negy.jpg'
-				};
-
-				if ( 'SamsungChangeSky' in window ) {
-
-					window.SamsungChangeSky( skyBox );
-
-				}
-
-				var MTL = new THREE.MTLLoader();
-
-				MTL.setPath( 'models/obj/gear_vr_controller/' );
-				MTL.load( 'gear_vr_controller.mtl', function ( materials ) {
-
-					materials.preload();
-
-					var OBJ = new THREE.OBJLoader();
-					OBJ.setMaterials( materials );
-					OBJ.setPath( 'models/obj/gear_vr_controller/' );
-
-					OBJ.load( 'gear_vr_controller.obj', function ( obj ) {
-
-						obj.translateZ( - 0.03 );
-						controller.add( obj );
-
-					} );
-
-				} );
-
-				window.addEventListener( 'resize', onWindowResize, false );
-
-			}
-
-			function onWindowResize() {
-
-				camera.aspect = window.innerWidth / window.innerHeight;
-				camera.updateProjectionMatrix();
-
-				renderer.setSize( window.innerWidth, window.innerHeight );
-
-			}
-
-			function animate() {
-
-				renderer.setAnimationLoop( render );
-
-			}
-
-			function render() {
-
-				var delta = clock.getDelta() * 60;
-
-				controller.update();
-
-				if ( controller.getTouchpadState() === true ) {
-
-					var cube = room.children[ 0 ];
-					room.remove( cube );
-
-					cube.position.copy( controller.position ).sub( room.position );
-					cube.userData.velocity.x = ( Math.random() - 0.5 ) * 0.02;
-					cube.userData.velocity.y = ( Math.random() - 0.5 ) * 0.02;
-					cube.userData.velocity.z = ( Math.random() * 0.02 - 0.1 );
-					cube.userData.velocity.applyQuaternion( controller.quaternion );
-					room.add( cube );
-
-				}
-
-				// keep cubes inside room
-
-				var range = 3 - radius;
-
-				for ( var i = 0; i < room.children.length; i ++ ) {
-
-					var cube = room.children[ i ];
-
-					cube.position.add( cube.userData.velocity );
-
-					if ( cube.position.x < - range || cube.position.x > range ) {
-
-						cube.position.x = THREE.Math.clamp( cube.position.x, - range, range );
-						cube.userData.velocity.x = - cube.userData.velocity.x;
-
-					}
-
-					if ( cube.position.y < - range || cube.position.y > range ) {
-
-						cube.position.y = Math.max( cube.position.y, - range );
-
-						cube.userData.velocity.x *= 0.9;
-						cube.userData.velocity.y = - cube.userData.velocity.y * 0.8;
-						cube.userData.velocity.z *= 0.9;
-
-					}
-
-					if ( cube.position.z < - range || cube.position.z > range ) {
-
-						cube.position.z = THREE.Math.clamp( cube.position.z, - range, range );
-						cube.userData.velocity.z = - cube.userData.velocity.z;
-
-					}
-
-					for ( var j = i + 1; j < room.children.length; j ++ ) {
-
-						var cube2 = room.children[ j ];
-
-						normal.copy( cube.position ).sub( cube2.position );
-
-						if ( normal.length() < 2 * radius ) {
-
-							normal.multiplyScalar( 0.5 * normal.length() - radius );
-							cube.position.sub( normal );
-							cube2.position.add( normal );
-
-							normal.normalize();
-
-							relativeVelocity.copy( cube.userData.velocity ).sub( cube2.userData.velocity );
-							var dot = relativeVelocity.dot( normal );
-
-							normal = normal.multiplyScalar( dot );
-
-							cube.userData.velocity.sub( normal );
-							cube2.userData.velocity.add( normal );
-
-						}
-
-					}
-
-					cube.userData.velocity.y -= 0.00098;
-
-				}
-
-				renderer.render( scene, camera );
-
-			}
-
-		</script>
-	</body>
-</html>

+ 36 - 22
examples/webvr_lorenzattractor.html

@@ -25,10 +25,10 @@
 
 
 		<script>
 		<script>
 
 
-			var camera, scene, renderer, x, y, z, c, geometry;
+			var camera, scene, renderer, x, y, z, c;
 
 
-			var scale = .015; // for reducing overall displayed size
-			var multiplier = 5; // integer, increase for faster visualization
+			var scale = .02; // for reducing overall displayed size
+			var speed = 5; // integer, increase for faster visualization
 
 
 			var steps = 100000;
 			var steps = 100000;
 			var current = 1;
 			var current = 1;
@@ -43,7 +43,9 @@
 			init();
 			init();
 			animate();
 			animate();
 
 
-			function move() {
+			function draw() {
+
+				var geometry = attractor.geometry;
 
 
 				geometry.attributes.position.array.copyWithin( 3 );
 				geometry.attributes.position.array.copyWithin( 3 );
 				geometry.attributes.color.array.copyWithin( 3 );
 				geometry.attributes.color.array.copyWithin( 3 );
@@ -80,10 +82,8 @@
 			function init() {
 			function init() {
 
 
 				scene = new THREE.Scene();
 				scene = new THREE.Scene();
-				scene.position.set( 0, 1.5, - 1 );
 
 
-				camera = new THREE.PerspectiveCamera( 50, window.innerWidth / window.innerHeight, 0.1, 2 );
-				camera.lookAt( 0, 1.5, - 1 );
+				camera = new THREE.PerspectiveCamera( 50, window.innerWidth / window.innerHeight, 0.1, 10 );
 
 
 				//
 				//
 
 
@@ -93,37 +93,56 @@
 
 
 				c = new THREE.Color();
 				c = new THREE.Color();
 
 
-				geometry = new THREE.BufferGeometry();
+				var geometry = new THREE.BufferGeometry();
 
 
 				var positions = new Float32Array( 3 * shown );
 				var positions = new Float32Array( 3 * shown );
+
 				for ( var i = 0; i < positions.length; i += 3 ) {
 				for ( var i = 0; i < positions.length; i += 3 ) {
 
 
 					positions.set( [ scale * x, scale * y, scale * z ], i );
 					positions.set( [ scale * x, scale * y, scale * z ], i );
 
 
 				}
 				}
+
 				geometry.addAttribute( 'position', new THREE.BufferAttribute( positions, 3 ) );
 				geometry.addAttribute( 'position', new THREE.BufferAttribute( positions, 3 ) );
 
 
 				var colors = new Float32Array( 3 * shown );
 				var colors = new Float32Array( 3 * shown );
+
 				for ( var i = 0; i < positions.length; i += 3 ) {
 				for ( var i = 0; i < positions.length; i += 3 ) {
 
 
 					colors.set( [ 1, 0, 0 ], i );
 					colors.set( [ 1, 0, 0 ], i );
 
 
 				}
 				}
+
 				geometry.addAttribute( 'color', new THREE.BufferAttribute( colors, 3 ) );
 				geometry.addAttribute( 'color', new THREE.BufferAttribute( colors, 3 ) );
 
 
 				var material = new THREE.LineBasicMaterial( { vertexColors: THREE.VertexColors } );
 				var material = new THREE.LineBasicMaterial( { vertexColors: THREE.VertexColors } );
 
 
-				var line = new THREE.Line( geometry, material );
-				line.frustumCulled = false; // critical to avoid blackouts!
-				scene.add( line );
+				attractor = new THREE.Line( geometry, material );
+				attractor.position.set( 0, 1.5, - 2 );
+				attractor.frustumCulled = false; // critical to avoid blackouts!
+				scene.add( attractor );
+
+				//
+
+				var light = new THREE.PointLight( 0xffffff, 1 );
+				light.color = c;
+				light.distance = 2;
+				attractor.add( light );
+
+				// scene.add( new THREE.PointLightHelper( light ))
+
+				var ground = new THREE.Mesh(
+					new THREE.PlaneBufferGeometry( 10, 10 ),
+					new THREE.MeshPhongMaterial()
+				);
+				ground.geometry.rotateX( - 90 * Math.PI / 180 );
+				scene.add( ground );
 
 
 				//
 				//
 
 
 				renderer = new THREE.WebGLRenderer( { antialias: true } );
 				renderer = new THREE.WebGLRenderer( { antialias: true } );
-				renderer.autoClear = false;
 				renderer.setPixelRatio( window.devicePixelRatio );
 				renderer.setPixelRatio( window.devicePixelRatio );
 				renderer.setSize( window.innerWidth, window.innerHeight );
 				renderer.setSize( window.innerWidth, window.innerHeight );
-				renderer.shadowMap.enabled = true;
 				renderer.vr.enabled = true;
 				renderer.vr.enabled = true;
 				document.body.appendChild( renderer.domElement );
 				document.body.appendChild( renderer.domElement );
 
 
@@ -152,16 +171,11 @@
 
 
 			function render() {
 			function render() {
 
 
-				scene.rotation.z += .001;
-
-				for ( var i = 0; i < multiplier; i ++ ) {
-
-					move();
-
-				}
+				for ( var i = 0; i < speed; i ++ ) draw();
 
 
-				geometry.attributes.position.needsUpdate = true;
-				geometry.attributes.color.needsUpdate = true;
+				attractor.geometry.attributes.position.needsUpdate = true;
+				attractor.geometry.attributes.color.needsUpdate = true;
+				attractor.rotation.z += .001;
 
 
 				renderer.render( scene, camera );
 				renderer.render( scene, camera );
 
 

+ 0 - 263
examples/webvr_oculusgo.html

@@ -1,263 +0,0 @@
-<!DOCTYPE html>
-<html lang="en">
-	<head>
-		<title>three.js webvr - oculus go</title>
-		<meta charset="utf-8">
-		<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no">
-		<!-- Origin Trial Token, feature = WebVR (For Chrome M62+), origin = https://threejs.org, expires = 2018-07-25 -->
-		<meta http-equiv="origin-trial" data-feature="WebVR (For Chrome M62+)" data-expires="2018-07-25" content="AtW06hJFoVWUJTZf5gqymMIlrR60JJi5MsSe44qsHjrCmzDUNmvaTtAVg+K9O9jFpjJtn/W9jvG//hHHaq5HcQoAAABQeyJvcmlnaW4iOiJodHRwczovL3RocmVlanMub3JnOjQ0MyIsImZlYXR1cmUiOiJXZWJWUjEuMU02MiIsImV4cGlyeSI6MTUzMjUyNjI5OH0=">
-		<!-- Origin Trial Token, feature = WebXR Device API, origin = https://threejs.org, expires = 2018-07-21 -->
-		<meta http-equiv="origin-trial" data-feature="WebXR Device API" data-expires="2018-07-21" content="Anlf1R/bCOUxOEgGI/9TWuzHHNxBMfZSTUMDCN7cLwDj2gpLwgA1K0DPwOzO/O0Jwaur5bsHo7k9KXx+6g+82wIAAABQeyJvcmlnaW4iOiJodHRwczovL3RocmVlanMub3JnOjQ0MyIsImZlYXR1cmUiOiJXZWJYUkRldmljZSIsImV4cGlyeSI6MTUzMjE2NjIyNX0=">
-		<!-- Origin Trial Token, feature = WebXR Gamepad Support, origin = https://threejs.org, expires = 2018-07-21 -->
-		<meta http-equiv="origin-trial" data-feature="WebXR Gamepad Support" data-expires="2018-07-21" content="ArDsXbwATKHPmvQiPlEIWNCt4DlEjB7bLj9vOgoNmL8r38U+wQNYZyUvjQIqqzgACciUUuAnxluTIL7nNkI89gcAAABYeyJvcmlnaW4iOiJodHRwczovL3RocmVlanMub3JnOjQ0MyIsImZlYXR1cmUiOiJXZWJYUkdhbWVwYWRTdXBwb3J0IiwiZXhwaXJ5IjoxNTMyMTY2MjI1fQ==">
-		<style>
-			body {
-				font-family: Monospace;
-				background-color: #101010;
-				color: #fff;
-				margin: 0px;
-				overflow: hidden;
-			}
-			a {
-				color: #f00;
-			}
-		</style>
-	</head>
-	<body>
-
-		<script src="../build/three.js"></script>
-
-		<script src="js/loaders/MTLLoader.js"></script>
-		<script src="js/loaders/OBJLoader.js"></script>
-
-		<script src="js/vr/GearVRController.js"></script>
-		<script src="js/vr/WebVR.js"></script>
-
-		<script>
-
-			var clock = new THREE.Clock();
-
-			var container;
-			var camera, scene, renderer;
-			var controller;
-
-			var room;
-
-			var radius = 0.08;
-			var normal = new THREE.Vector3();
-			var relativeVelocity = new THREE.Vector3();
-
-			init();
-			animate();
-
-			function init() {
-
-				container = document.createElement( 'div' );
-				document.body.appendChild( container );
-
-				var info = document.createElement( 'div' );
-				info.style.position = 'absolute';
-				info.style.top = '10px';
-				info.style.width = '100%';
-				info.style.textAlign = 'center';
-				info.innerHTML = '<a href="http://threejs.org" target="_blank" rel="noopener">three.js</a> webvr - oculus go';
-				container.appendChild( info );
-
-				scene = new THREE.Scene();
-				scene.background = new THREE.Color( 0x505050 );
-
-				camera = new THREE.PerspectiveCamera( 70, window.innerWidth / window.innerHeight, 0.1, 10 );
-
-				room = new THREE.Mesh(
-					new THREE.BoxBufferGeometry( 6, 6, 6, 8, 8, 8 ),
-					new THREE.MeshBasicMaterial( { color: 0x404040, wireframe: true } )
-				);
-				room.position.y = 3;
-				scene.add( room );
-
-				scene.add( new THREE.HemisphereLight( 0x606060, 0x404040 ) );
-
-				var light = new THREE.DirectionalLight( 0xffffff );
-				light.position.set( 1, 1, 1 ).normalize();
-				scene.add( light );
-
-				var geometry = new THREE.IcosahedronBufferGeometry( radius, 2 );
-
-				for ( var i = 0; i < 200; i ++ ) {
-
-					var object = new THREE.Mesh(
-						geometry,
-						new THREE.MeshLambertMaterial( { color: Math.random() * 0xffffff } )
-					);
-
-					object.position.x = Math.random() * 4 - 2;
-					object.position.y = Math.random() * 4 - 2;
-					object.position.z = Math.random() * 4 - 2;
-
-					object.userData.velocity = new THREE.Vector3();
-					object.userData.velocity.x = Math.random() * 0.01 - 0.005;
-					object.userData.velocity.y = Math.random() * 0.01 - 0.005;
-					object.userData.velocity.z = Math.random() * 0.01 - 0.005;
-
-					room.add( object );
-
-				}
-
-				renderer = new THREE.WebGLRenderer( { antialias: true } );
-				renderer.setPixelRatio( window.devicePixelRatio );
-				renderer.setSize( window.innerWidth, window.innerHeight );
-				renderer.vr.enabled = true;
-				container.appendChild( renderer.domElement );
-
-				document.body.appendChild( WEBVR.createButton( renderer ) );
-
-				controller = new THREE.GearVRController();
-				controller.position.set( 0.35, 1.1, -0.3 );
-
-				scene.add( controller );
-
-				var skyBox = {
-					front: 'textures/cube/Bridge2/posz.jpg',
-					back: 'textures/cube/Bridge2/negz.jpg',
-					left: 'textures/cube/Bridge2/posx.jpg',
-					right: 'textures/cube/Bridge2/negx.jpg',
-					up: 'textures/cube/Bridge2/posy.jpg',
-					down: 'textures/cube/Bridge2/negy.jpg'
-				};
-
-				if ( 'SamsungChangeSky' in window ) {
-
-					window.SamsungChangeSky( skyBox );
-
-				}
-
-				var MTL = new THREE.MTLLoader();
-
-				MTL.setPath( 'models/obj/oculus_go_controller/' );
-				MTL.load( 'oculus_go_controller.mtl', function ( materials ) {
-
-					materials.preload();
-
-					var OBJ = new THREE.OBJLoader();
-					OBJ.setMaterials( materials );
-					OBJ.setPath( 'models/obj/oculus_go_controller/' );
-
-					OBJ.load( 'oculus_go_controller.obj', function ( obj ) {
-	
-						obj.translateZ( - 0.03 );
-						controller.add( obj );
-
-					} );
-
-				} );
-
-				window.addEventListener( 'resize', onWindowResize, false );
-
-			}
-
-			function onWindowResize() {
-
-				camera.aspect = window.innerWidth / window.innerHeight;
-				camera.updateProjectionMatrix();
-
-				renderer.setSize( window.innerWidth, window.innerHeight );
-
-			}
-
-			function animate() {
-
-				renderer.setAnimationLoop( render );
-
-			}
-
-			function render() {
-
-				var delta = clock.getDelta() * 60;
-
-				controller.update();
-
-				if ( controller.getTouchpadState() === true ) {
-
-					var cube = room.children[ 0 ];
-					room.remove( cube );
-
-					cube.position.copy( controller.position ).sub( room.position );
-					cube.userData.velocity.x = ( Math.random() - 0.5 ) * 0.02;
-					cube.userData.velocity.y = ( Math.random() - 0.5 ) * 0.02;
-					cube.userData.velocity.z = ( Math.random() * 0.02 - 0.1 );
-					cube.userData.velocity.applyQuaternion( controller.quaternion );
-					room.add( cube );
-
-				}
-
-				// keep cubes inside room
-
-				var range = 3 - radius;
-
-				for ( var i = 0; i < room.children.length; i ++ ) {
-
-					var cube = room.children[ i ];
-
-					cube.position.add( cube.userData.velocity );
-
-					if ( cube.position.x < - range || cube.position.x > range ) {
-
-						cube.position.x = THREE.Math.clamp( cube.position.x, - range, range );
-						cube.userData.velocity.x = - cube.userData.velocity.x;
-
-					}
-
-					if ( cube.position.y < - range || cube.position.y > range ) {
-
-						cube.position.y = Math.max( cube.position.y, - range );
-
-						cube.userData.velocity.x *= 0.9;
-						cube.userData.velocity.y = - cube.userData.velocity.y * 0.8;
-						cube.userData.velocity.z *= 0.9;
-
-					}
-
-					if ( cube.position.z < - range || cube.position.z > range ) {
-
-						cube.position.z = THREE.Math.clamp( cube.position.z, - range, range );
-						cube.userData.velocity.z = - cube.userData.velocity.z;
-
-					}
-
-					for ( var j = i + 1; j < room.children.length; j ++ ) {
-
-						var cube2 = room.children[ j ];
-
-						normal.copy( cube.position ).sub( cube2.position );
-
-						if ( normal.length() < 2 * radius ) {
-
-							normal.multiplyScalar( 0.5 * normal.length() - radius );
-							cube.position.sub( normal );
-							cube2.position.add( normal );
-
-							normal.normalize();
-
-							relativeVelocity.copy( cube.userData.velocity ).sub( cube2.userData.velocity );
-							var dot = relativeVelocity.dot( normal );
-
-							normal = normal.multiplyScalar( dot );
-
-							cube.userData.velocity.sub( normal );
-							cube2.userData.velocity.add( normal );
-
-						}
-
-					}
-
-					cube.userData.velocity.y -= 0.00098;
-
-				}
-
-				renderer.render( scene, camera );
-
-			}
-
-		</script>
-	</body>
-</html>

+ 6 - 0
src/audio/AudioListener.js

@@ -43,6 +43,8 @@ AudioListener.prototype = Object.assign( Object.create( Object3D.prototype ), {
 
 
 		}
 		}
 
 
+		return this;
+
 	},
 	},
 
 
 	getFilter: function () {
 	getFilter: function () {
@@ -68,6 +70,8 @@ AudioListener.prototype = Object.assign( Object.create( Object3D.prototype ), {
 		this.gain.connect( this.filter );
 		this.gain.connect( this.filter );
 		this.filter.connect( this.context.destination );
 		this.filter.connect( this.context.destination );
 
 
+		return this;
+
 	},
 	},
 
 
 	getMasterVolume: function () {
 	getMasterVolume: function () {
@@ -80,6 +84,8 @@ AudioListener.prototype = Object.assign( Object.create( Object3D.prototype ), {
 
 
 		this.gain.gain.setTargetAtTime( value, this.context.currentTime, 0.01 );
 		this.gain.gain.setTargetAtTime( value, this.context.currentTime, 0.01 );
 
 
+		return this;
+
 	},
 	},
 
 
 	updateMatrixWorld: ( function () {
 	updateMatrixWorld: ( function () {

+ 8 - 0
src/audio/PositionalAudio.js

@@ -36,6 +36,8 @@ PositionalAudio.prototype = Object.assign( Object.create( Audio.prototype ), {
 
 
 		this.panner.refDistance = value;
 		this.panner.refDistance = value;
 
 
+		return this;
+
 	},
 	},
 
 
 	getRolloffFactor: function () {
 	getRolloffFactor: function () {
@@ -48,6 +50,8 @@ PositionalAudio.prototype = Object.assign( Object.create( Audio.prototype ), {
 
 
 		this.panner.rolloffFactor = value;
 		this.panner.rolloffFactor = value;
 
 
+		return this;
+
 	},
 	},
 
 
 	getDistanceModel: function () {
 	getDistanceModel: function () {
@@ -60,6 +64,8 @@ PositionalAudio.prototype = Object.assign( Object.create( Audio.prototype ), {
 
 
 		this.panner.distanceModel = value;
 		this.panner.distanceModel = value;
 
 
+		return this;
+
 	},
 	},
 
 
 	getMaxDistance: function () {
 	getMaxDistance: function () {
@@ -72,6 +78,8 @@ PositionalAudio.prototype = Object.assign( Object.create( Audio.prototype ), {
 
 
 		this.panner.maxDistance = value;
 		this.panner.maxDistance = value;
 
 
+		return this;
+
 	},
 	},
 
 
 	updateMatrixWorld: ( function () {
 	updateMatrixWorld: ( function () {

+ 1 - 1
src/loaders/CubeTextureLoader.js

@@ -15,7 +15,7 @@ function CubeTextureLoader( manager ) {
 
 
 Object.assign( CubeTextureLoader.prototype, {
 Object.assign( CubeTextureLoader.prototype, {
 
 
-	crossOrigin: 'Anonymous',
+	crossOrigin: 'anonymous',
 
 
 	load: function ( urls, onLoad, onProgress, onError ) {
 	load: function ( urls, onLoad, onProgress, onError ) {
 
 

+ 1 - 1
src/loaders/ImageLoader.js

@@ -14,7 +14,7 @@ function ImageLoader( manager ) {
 
 
 Object.assign( ImageLoader.prototype, {
 Object.assign( ImageLoader.prototype, {
 
 
-	crossOrigin: 'Anonymous',
+	crossOrigin: 'anonymous',
 
 
 	load: function ( url, onLoad, onProgress, onError ) {
 	load: function ( url, onLoad, onProgress, onError ) {
 
 

+ 10 - 0
src/loaders/JSONLoader.js

@@ -32,6 +32,8 @@ function JSONLoader( manager ) {
 
 
 Object.assign( JSONLoader.prototype, {
 Object.assign( JSONLoader.prototype, {
 
 
+	crossOrigin: 'anonymous',
+
 	load: function ( url, onLoad, onProgress, onError ) {
 	load: function ( url, onLoad, onProgress, onError ) {
 
 
 		var scope = this;
 		var scope = this;
@@ -69,9 +71,17 @@ Object.assign( JSONLoader.prototype, {
 
 
 	},
 	},
 
 
+	setCrossOrigin: function ( value ) {
+
+		this.crossOrigin = value;
+		return this;
+
+	},
+
 	setTexturePath: function ( value ) {
 	setTexturePath: function ( value ) {
 
 
 		this.texturePath = value;
 		this.texturePath = value;
+		return this;
 
 
 	},
 	},
 
 

+ 1 - 1
src/loaders/Loader.js

@@ -61,7 +61,7 @@ Loader.Handlers = {
 
 
 Object.assign( Loader.prototype, {
 Object.assign( Loader.prototype, {
 
 
-	crossOrigin: undefined,
+	crossOrigin: 'anonymous',
 
 
 	onLoadStart: function () {},
 	onLoadStart: function () {},
 
 

+ 42 - 4
src/loaders/ObjectLoader.js

@@ -42,6 +42,7 @@ import { RectAreaLight } from '../lights/RectAreaLight.js';
 import { OrthographicCamera } from '../cameras/OrthographicCamera.js';
 import { OrthographicCamera } from '../cameras/OrthographicCamera.js';
 import { PerspectiveCamera } from '../cameras/PerspectiveCamera.js';
 import { PerspectiveCamera } from '../cameras/PerspectiveCamera.js';
 import { Scene } from '../scenes/Scene.js';
 import { Scene } from '../scenes/Scene.js';
+import { CubeTexture } from '../textures/CubeTexture.js';
 import { Texture } from '../textures/Texture.js';
 import { Texture } from '../textures/Texture.js';
 import { ImageLoader } from './ImageLoader.js';
 import { ImageLoader } from './ImageLoader.js';
 import { LoadingManager, DefaultLoadingManager } from './LoadingManager.js';
 import { LoadingManager, DefaultLoadingManager } from './LoadingManager.js';
@@ -66,6 +67,8 @@ function ObjectLoader( manager ) {
 
 
 Object.assign( ObjectLoader.prototype, {
 Object.assign( ObjectLoader.prototype, {
 
 
+	crossOrigin: 'anonymous',
+
 	load: function ( url, onLoad, onProgress, onError ) {
 	load: function ( url, onLoad, onProgress, onError ) {
 
 
 		if ( this.texturePath === '' ) {
 		if ( this.texturePath === '' ) {
@@ -532,12 +535,36 @@ Object.assign( ObjectLoader.prototype, {
 			var loader = new ImageLoader( manager );
 			var loader = new ImageLoader( manager );
 			loader.setCrossOrigin( this.crossOrigin );
 			loader.setCrossOrigin( this.crossOrigin );
 
 
-			for ( var i = 0, l = json.length; i < l; i ++ ) {
+			for ( var i = 0, il = json.length; i < il; i ++ ) {
 
 
 				var image = json[ i ];
 				var image = json[ i ];
-				var path = /^(\/\/)|([a-z]+:(\/\/)?)/i.test( image.url ) ? image.url : scope.texturePath + image.url;
+				var url = image.url;
+
+				if ( Array.isArray( url ) ) {
+
+					// load array of images e.g CubeTexture
+
+					images[ image.uuid ] = [];
+
+					for ( var j = 0, jl = url.length; j < jl; j ++ ) {
+
+						var currentUrl = url[ j ];
+
+						var path = /^(\/\/)|([a-z]+:(\/\/)?)/i.test( currentUrl ) ? currentUrl : scope.texturePath + currentUrl;
+
+						images[ image.uuid ].push( loadImage( path ) );
+
+					}
+
+				} else {
 
 
-				images[ image.uuid ] = loadImage( path );
+					// load single image
+
+					var path = /^(\/\/)|([a-z]+:(\/\/)?)/i.test( image.url ) ? image.url : scope.texturePath + image.url;
+
+					images[ image.uuid ] = loadImage( path );
+
+				}
 
 
 			}
 			}
 
 
@@ -579,7 +606,18 @@ Object.assign( ObjectLoader.prototype, {
 
 
 				}
 				}
 
 
-				var texture = new Texture( images[ data.image ] );
+				var texture;
+
+				if ( Array.isArray( images[ data.image ] ) ) {
+
+					texture = new CubeTexture( images[ data.image ] );
+
+				} else {
+
+					texture = new Texture( images[ data.image ] );
+
+				}
+
 				texture.needsUpdate = true;
 				texture.needsUpdate = true;
 
 
 				texture.uuid = data.uuid;
 				texture.uuid = data.uuid;

+ 1 - 1
src/loaders/TextureLoader.js

@@ -16,7 +16,7 @@ function TextureLoader( manager ) {
 
 
 Object.assign( TextureLoader.prototype, {
 Object.assign( TextureLoader.prototype, {
 
 
-	crossOrigin: 'Anonymous',
+	crossOrigin: 'anonymous',
 
 
 	load: function ( url, onLoad, onProgress, onError ) {
 	load: function ( url, onLoad, onProgress, onError ) {
 
 

+ 56 - 0
src/math/Color.js

@@ -329,6 +329,62 @@ Object.assign( Color.prototype, {
 
 
 	},
 	},
 
 
+	copySRGBToLinear: function () {
+
+		function SRGBToLinear( c ) {
+
+			return ( c < 0.04045 ) ? c * 0.0773993808 : Math.pow( c * 0.9478672986 + 0.0521327014, 2.4 );
+
+		}
+
+		return function copySRGBToLinear( color ) {
+
+			this.r = SRGBToLinear( color.r );
+			this.g = SRGBToLinear( color.g );
+			this.b = SRGBToLinear( color.b );
+
+			return this;
+
+		};
+
+	}(),
+
+	copyLinearToSRGB: function () {
+
+		function LinearToSRGB( c ) {
+
+			return ( c < 0.0031308 ) ? c * 12.92 : 1.055 * ( Math.pow( c, 0.41666 ) ) - 0.055;
+
+		}
+
+		return function copyLinearToSRGB( color ) {
+
+			this.r = LinearToSRGB( color.r );
+			this.g = LinearToSRGB( color.g );
+			this.b = LinearToSRGB( color.b );
+
+			return this;
+
+		};
+
+	}(),
+
+	convertSRGBToLinear: function () {
+
+		this.copySRGBToLinear( this );
+
+		return this;
+
+	},
+
+	convertLinearToSRGB: function () {
+
+		this.copyLinearToSRGB( this );
+
+		return this;
+
+	},
+
 	getHex: function () {
 	getHex: function () {
 
 
 		return ( this.r * 255 ) << 16 ^ ( this.g * 255 ) << 8 ^ ( this.b * 255 ) << 0;
 		return ( this.r * 255 ) << 16 ^ ( this.g * 255 ) << 8 ^ ( this.b * 255 ) << 0;

+ 9 - 7
src/math/Quaternion.js

@@ -533,19 +533,21 @@ Object.assign( Quaternion.prototype, {
 
 
 		}
 		}
 
 
-		var sinHalfTheta = Math.sqrt( 1.0 - cosHalfTheta * cosHalfTheta );
+		var sqrSinHalfTheta = 1.0 - cosHalfTheta * cosHalfTheta;
 
 
-		if ( Math.abs( sinHalfTheta ) < 0.001 ) {
+		if ( sqrSinHalfTheta <= Number.EPSILON ) {
 
 
-			this._w = 0.5 * ( w + this._w );
-			this._x = 0.5 * ( x + this._x );
-			this._y = 0.5 * ( y + this._y );
-			this._z = 0.5 * ( z + this._z );
+			var s = 1 - t;
+			this._w = s * w + t * this._w;
+			this._x = s * x + t * this._x;
+			this._y = s * y + t * this._y;
+			this._z = s * z + t * this._z;
 
 
-			return this;
+			return this.normalize();
 
 
 		}
 		}
 
 
+		var sinHalfTheta = Math.sqrt( sqrSinHalfTheta );
 		var halfTheta = Math.atan2( sinHalfTheta, cosHalfTheta );
 		var halfTheta = Math.atan2( sinHalfTheta, cosHalfTheta );
 		var ratioA = Math.sin( ( 1 - t ) * halfTheta ) / sinHalfTheta,
 		var ratioA = Math.sin( ( 1 - t ) * halfTheta ) / sinHalfTheta,
 			ratioB = Math.sin( t * halfTheta ) / sinHalfTheta;
 			ratioB = Math.sin( t * halfTheta ) / sinHalfTheta;

+ 95 - 19
src/objects/Mesh.js

@@ -190,13 +190,13 @@ Mesh.prototype = Object.assign( Object.create( Object3D.prototype ), {
 
 
 		}
 		}
 
 
-		function checkBufferGeometryIntersection( object, raycaster, ray, position, uv, a, b, c ) {
+		function checkBufferGeometryIntersection( object, material, raycaster, ray, position, uv, a, b, c ) {
 
 
 			vA.fromBufferAttribute( position, a );
 			vA.fromBufferAttribute( position, a );
 			vB.fromBufferAttribute( position, b );
 			vB.fromBufferAttribute( position, b );
 			vC.fromBufferAttribute( position, c );
 			vC.fromBufferAttribute( position, c );
 
 
-			var intersection = checkIntersection( object, object.material, raycaster, ray, vA, vB, vC, intersectionPoint );
+			var intersection = checkIntersection( object, material, raycaster, ray, vA, vB, vC, intersectionPoint );
 
 
 			if ( intersection ) {
 			if ( intersection ) {
 
 
@@ -259,24 +259,64 @@ Mesh.prototype = Object.assign( Object.create( Object3D.prototype ), {
 				var index = geometry.index;
 				var index = geometry.index;
 				var position = geometry.attributes.position;
 				var position = geometry.attributes.position;
 				var uv = geometry.attributes.uv;
 				var uv = geometry.attributes.uv;
-				var i, l;
+				var groups = geometry.groups;
+				var drawRange = geometry.drawRange;
+				var i, j, il, jl;
+				var group, groupMaterial;
+				var start, end;
 
 
 				if ( index !== null ) {
 				if ( index !== null ) {
 
 
 					// indexed buffer geometry
 					// indexed buffer geometry
 
 
-					for ( i = 0, l = index.count; i < l; i += 3 ) {
+					if ( Array.isArray( material ) ) {
 
 
-						a = index.getX( i );
-						b = index.getX( i + 1 );
-						c = index.getX( i + 2 );
+						for ( i = 0, il = groups.length; i < il; i ++ ) {
 
 
-						intersection = checkBufferGeometryIntersection( this, raycaster, ray, position, uv, a, b, c );
+							group = groups[ i ];
+							groupMaterial = material[ group.materialIndex ];
 
 
-						if ( intersection ) {
+							start = Math.max( group.start, drawRange.start );
+							end = Math.min( ( group.start + group.count ), ( drawRange.start + drawRange.count ) );
 
 
-							intersection.faceIndex = Math.floor( i / 3 ); // triangle number in indexed buffer semantics
-							intersects.push( intersection );
+							for ( j = start, jl = end; j < jl; j += 3 ) {
+
+								a = index.getX( i );
+								b = index.getX( i + 1 );
+								c = index.getX( i + 2 );
+
+								intersection = checkBufferGeometryIntersection( this, groupMaterial, raycaster, ray, position, uv, a, b, c );
+
+								if ( intersection ) {
+
+									intersection.faceIndex = Math.floor( i / 3 ); // triangle number in indexed buffer semantics
+									intersects.push( intersection );
+
+								}
+
+							}
+
+						}
+
+					} else {
+
+						start = Math.max( 0, drawRange.start );
+						end = Math.min( index.count, ( drawRange.start + drawRange.count ) );
+
+						for ( i = start, il = end; i < il; i += 3 ) {
+
+							a = index.getX( i );
+							b = index.getX( i + 1 );
+							c = index.getX( i + 2 );
+
+							intersection = checkBufferGeometryIntersection( this, material, raycaster, ray, position, uv, a, b, c );
+
+							if ( intersection ) {
+
+								intersection.faceIndex = Math.floor( i / 3 ); // triangle number in indexed buffer semantics
+								intersects.push( intersection );
+
+							}
 
 
 						}
 						}
 
 
@@ -286,18 +326,54 @@ Mesh.prototype = Object.assign( Object.create( Object3D.prototype ), {
 
 
 					// non-indexed buffer geometry
 					// non-indexed buffer geometry
 
 
-					for ( i = 0, l = position.count; i < l; i += 3 ) {
+					if ( Array.isArray( material ) ) {
+
+						for ( i = 0, il = groups.length; i < il; i ++ ) {
+
+							group = groups[ i ];
+							groupMaterial = material[ group.materialIndex ];
+
+							start = Math.max( group.start, drawRange.start );
+							end = Math.min( ( group.start + group.count ), ( drawRange.start + drawRange.count ) );
+
+							for ( j = start, jl = end; j < jl; j += 3 ) {
+
+								a = j;
+								b = j + 1;
+								c = j + 2;
+
+								intersection = checkBufferGeometryIntersection( this, groupMaterial, raycaster, ray, position, uv, a, b, c );
+
+								if ( intersection ) {
+
+									intersection.faceIndex = Math.floor( i / 3 ); // triangle number in non-indexed buffer semantics
+									intersects.push( intersection );
+
+								}
+
+							}
+
+						}
+
+					} else {
+
+						start = Math.max( 0, drawRange.start );
+						end = Math.min( position.count, ( drawRange.start + drawRange.count ) );
+
+						for ( i = start, il = end; i < il; i += 3 ) {
+
+							a = i;
+							b = i + 1;
+							c = i + 2;
 
 
-						a = i;
-						b = i + 1;
-						c = i + 2;
+							intersection = checkBufferGeometryIntersection( this, material, raycaster, ray, position, uv, a, b, c );
 
 
-						intersection = checkBufferGeometryIntersection( this, raycaster, ray, position, uv, a, b, c );
+							if ( intersection ) {
 
 
-						if ( intersection ) {
+								intersection.faceIndex = Math.floor( i / 3 ); // triangle number in non-indexed buffer semantics
+								intersects.push( intersection );
 
 
-							intersection.faceIndex = Math.floor( i / 3 ); // triangle number in non-indexed buffer semantics
-							intersects.push( intersection );
+							}
 
 
 						}
 						}
 
 

+ 4 - 2
src/renderers/WebGLRenderer.js

@@ -2214,11 +2214,13 @@ function WebGLRenderer( parameters ) {
 
 
 	function refreshUniformsPhysical( uniforms, material ) {
 	function refreshUniformsPhysical( uniforms, material ) {
 
 
+		refreshUniformsStandard( uniforms, material );
+
+		uniforms.reflectivity.value = material.reflectivity; // also part of uniforms common
+
 		uniforms.clearCoat.value = material.clearCoat;
 		uniforms.clearCoat.value = material.clearCoat;
 		uniforms.clearCoatRoughness.value = material.clearCoatRoughness;
 		uniforms.clearCoatRoughness.value = material.clearCoatRoughness;
 
 
-		refreshUniformsStandard( uniforms, material );
-
 	}
 	}
 
 
 	function refreshUniformsDepth( uniforms, material ) {
 	function refreshUniformsDepth( uniforms, material ) {

+ 112 - 1
src/renderers/webvr/WebVRManager.js

@@ -2,6 +2,7 @@
  * @author mrdoob / http://mrdoob.com/
  * @author mrdoob / http://mrdoob.com/
  */
  */
 
 
+import { Group } from '../../objects/Group.js';
 import { Matrix4 } from '../../math/Matrix4.js';
 import { Matrix4 } from '../../math/Matrix4.js';
 import { Vector3 } from '../../math/Vector3.js';
 import { Vector3 } from '../../math/Vector3.js';
 import { Vector4 } from '../../math/Vector4.js';
 import { Vector4 } from '../../math/Vector4.js';
@@ -19,6 +20,7 @@ function WebVRManager( renderer ) {
 
 
 	var poseTarget = null;
 	var poseTarget = null;
 
 
+	var controllers = [];
 	var standingMatrix = new Matrix4();
 	var standingMatrix = new Matrix4();
 	var standingMatrixInverse = new Matrix4();
 	var standingMatrixInverse = new Matrix4();
 
 
@@ -82,9 +84,111 @@ function WebVRManager( renderer ) {
 
 
 	//
 	//
 
 
+	var isTriggerPressed = false;
+
+	function findGamepad( id ) {
+
+		var gamepads = navigator.getGamepads && navigator.getGamepads();
+
+		for ( var i = 0, j = 0, l = gamepads.length; i < l; i ++ ) {
+
+			var gamepad = gamepads[ i ];
+
+			if ( gamepad && ( gamepad.id === 'Daydream Controller' ||
+				gamepad.id === 'Gear VR Controller' || gamepad.id === 'Oculus Go Controller' ||
+				gamepad.id === 'OpenVR Gamepad' || gamepad.id.startsWith( 'Oculus Touch' ) ||
+				gamepad.id.startsWith( 'Spatial Controller' ) ) ) {
+
+				if ( j === id ) return gamepad;
+
+				j ++;
+
+			}
+
+		}
+
+	}
+
+	function updateControllers() {
+
+		for ( var i = 0; i < controllers.length; i ++ ) {
+
+			var controller = controllers[ i ];
+
+			var gamepad = findGamepad( i );
+
+			if ( gamepad !== undefined && gamepad.pose !== undefined ) {
+
+				if ( gamepad.pose === null ) return;
+
+				//  Pose
+
+				var pose = gamepad.pose;
+
+				if ( pose.hasPosition === false ) controller.position.set( 0.2, - 0.6, - 0.05 );
+
+				if ( pose.position !== null ) controller.position.fromArray( pose.position );
+				if ( pose.orientation !== null ) controller.quaternion.fromArray( pose.orientation );
+				controller.matrix.compose( controller.position, controller.quaternion, controller.scale );
+				controller.matrix.premultiply( standingMatrix );
+				controller.matrix.decompose( controller.position, controller.quaternion, controller.scale );
+				controller.matrixWorldNeedsUpdate = true;
+				controller.visible = true;
+
+				//  Trigger
+
+				var buttonId = gamepad.id === 'Daydream Controller' ? 0 : 1;
+
+				if ( isTriggerPressed !== gamepad.buttons[ buttonId ].pressed ) {
+
+					isTriggerPressed = gamepad.buttons[ buttonId ].pressed;
+
+					if ( isTriggerPressed ) {
+
+						controller.dispatchEvent( { type: 'selectstart' } );
+
+					} else {
+
+						controller.dispatchEvent( { type: 'selectend' } );
+						controller.dispatchEvent( { type: 'select' } );
+
+					}
+
+				}
+
+			} else {
+
+				controller.visible = false;
+
+			}
+
+		}
+
+	}
+
+	//
+
 	this.enabled = false;
 	this.enabled = false;
 	this.userHeight = 1.6;
 	this.userHeight = 1.6;
 
 
+	this.getController = function ( id ) {
+
+		var controller = controllers[ id ];
+
+		if ( controller === undefined ) {
+
+			controller = new Group();
+			controller.matrixAutoUpdate = false;
+			controller.visible = false;
+
+			controllers[ id ] = controller;
+
+		}
+
+		return controller;
+
+	};
+
 	this.getDevice = function () {
 	this.getDevice = function () {
 
 
 		return device;
 		return device;
@@ -107,7 +211,12 @@ function WebVRManager( renderer ) {
 
 
 	this.getCamera = function ( camera ) {
 	this.getCamera = function ( camera ) {
 
 
-		if ( device === null ) return camera;
+		if ( device === null ) {
+
+			camera.position.set( 0, scope.userHeight, 0 );
+			return camera;
+
+		}
 
 
 		device.depthNear = camera.near;
 		device.depthNear = camera.near;
 		device.depthFar = camera.far;
 		device.depthFar = camera.far;
@@ -223,6 +332,8 @@ function WebVRManager( renderer ) {
 
 
 		}
 		}
 
 
+		updateControllers();
+
 		return cameraVR;
 		return cameraVR;
 
 
 	};
 	};

+ 99 - 21
src/renderers/webvr/WebXRManager.js

@@ -2,6 +2,7 @@
  * @author mrdoob / http://mrdoob.com/
  * @author mrdoob / http://mrdoob.com/
  */
  */
 
 
+import { Group } from '../../objects/Group.js';
 import { Vector4 } from '../../math/Vector4.js';
 import { Vector4 } from '../../math/Vector4.js';
 import { ArrayCamera } from '../../cameras/ArrayCamera.js';
 import { ArrayCamera } from '../../cameras/ArrayCamera.js';
 import { PerspectiveCamera } from '../../cameras/PerspectiveCamera.js';
 import { PerspectiveCamera } from '../../cameras/PerspectiveCamera.js';
@@ -18,10 +19,14 @@ function WebXRManager( renderer ) {
 
 
 	var pose = null;
 	var pose = null;
 
 
+	var controllers = [];
+	var inputSources = [];
+
 	function isPresenting() {
 	function isPresenting() {
 
 
 		return session !== null && frameOfRef !== null;
 		return session !== null && frameOfRef !== null;
 
 
+
 	}
 	}
 
 
 	//
 	//
@@ -42,6 +47,24 @@ function WebXRManager( renderer ) {
 
 
 	this.enabled = false;
 	this.enabled = false;
 
 
+	this.getController = function ( id ) {
+
+		var controller = controllers[ id ];
+
+		if ( controller === undefined ) {
+
+			controller = new Group();
+			controller.matrixAutoUpdate = false;
+			controller.visible = false;
+
+			controllers[ id ] = controller;
+
+		}
+
+		return controller;
+
+	};
+
 	this.getDevice = function () {
 	this.getDevice = function () {
 
 
 		return device;
 		return device;
@@ -58,18 +81,30 @@ function WebXRManager( renderer ) {
 
 
 	//
 	//
 
 
+	function onSessionEvent( event ) {
+
+		var controller = controllers[ inputSources.indexOf( event.inputSource ) ];
+		if ( controller ) controller.dispatchEvent( { type: event.type } );
+
+	}
+
+	function onSessionEnd() {
+
+		renderer.setFramebuffer( null );
+		animation.stop();
+
+	}
+
 	this.setSession = function ( value, options ) {
 	this.setSession = function ( value, options ) {
 
 
 		session = value;
 		session = value;
 
 
 		if ( session !== null ) {
 		if ( session !== null ) {
 
 
-			session.addEventListener( 'end', function () {
-
-				renderer.setFramebuffer( null );
-				animation.stop();
-
-			} );
+			session.addEventListener( 'select', onSessionEvent );
+			session.addEventListener( 'selectstart', onSessionEvent );
+			session.addEventListener( 'selectend', onSessionEvent );
+			session.addEventListener( 'end', onSessionEnd );
 
 
 			session.baseLayer = new XRWebGLLayer( session, gl );
 			session.baseLayer = new XRWebGLLayer( session, gl );
 			session.requestFrameOfReference( options.frameOfReferenceType ).then( function ( value ) {
 			session.requestFrameOfReference( options.frameOfReferenceType ).then( function ( value ) {
@@ -83,6 +118,17 @@ function WebXRManager( renderer ) {
 
 
 			} );
 			} );
 
 
+			//
+
+			inputSources = session.getInputSources();
+
+			session.addEventListener( 'inputsourceschange', function () {
+
+				inputSources = session.getInputSources();
+				console.log( inputSources );
+
+			} );
+
 		}
 		}
 
 
 	};
 	};
@@ -150,33 +196,65 @@ function WebXRManager( renderer ) {
 
 
 		pose = frame.getDevicePose( frameOfRef );
 		pose = frame.getDevicePose( frameOfRef );
 
 
-		var layer = session.baseLayer;
-		var views = frame.views;
+		if ( pose !== null ) {
 
 
-		for ( var i = 0; i < views.length; i ++ ) {
+			var layer = session.baseLayer;
+			var views = frame.views;
 
 
-			var view = views[ i ];
-			var viewport = layer.getViewport( view );
-			var viewMatrix = pose.getViewMatrix( view );
+			for ( var i = 0; i < views.length; i ++ ) {
 
 
-			var camera = cameraVR.cameras[ i ];
-			camera.matrix.fromArray( viewMatrix ).getInverse( camera.matrix );
-			camera.projectionMatrix.fromArray( view.projectionMatrix );
-			camera.viewport.set( viewport.x, viewport.y, viewport.width, viewport.height );
+				var view = views[ i ];
+				var viewport = layer.getViewport( view );
+				var viewMatrix = pose.getViewMatrix( view );
 
 
-			if ( i === 0 ) {
+				var camera = cameraVR.cameras[ i ];
+				camera.matrix.fromArray( viewMatrix ).getInverse( camera.matrix );
+				camera.projectionMatrix.fromArray( view.projectionMatrix );
+				camera.viewport.set( viewport.x, viewport.y, viewport.width, viewport.height );
 
 
-				cameraVR.matrix.copy( camera.matrix );
+				if ( i === 0 ) {
 
 
-				// HACK (mrdoob)
-				// https://github.com/w3c/webvr/issues/203
+					cameraVR.matrix.copy( camera.matrix );
 
 
-				cameraVR.projectionMatrix.copy( camera.projectionMatrix );
+					// HACK (mrdoob)
+					// https://github.com/w3c/webvr/issues/203
+
+					cameraVR.projectionMatrix.copy( camera.projectionMatrix );
+
+				}
 
 
 			}
 			}
 
 
 		}
 		}
 
 
+		//
+
+		for ( var i = 0; i < controllers.length; i ++ ) {
+
+			var controller = controllers[ i ];
+
+			var inputSource = inputSources[ i ];
+
+			if ( inputSource ) {
+
+				var inputPose = frame.getInputPose( inputSource, frameOfRef );
+
+				if ( inputPose !== null ) {
+
+					controller.matrix.elements = inputPose.pointerMatrix;
+					controller.matrix.decompose( controller.position, controller.rotation, controller.scale );
+					controller.visible = true;
+
+					continue;
+
+				}
+
+			}
+
+			controller.visible = false;
+
+		}
+
 		if ( onAnimationFrameCallback ) onAnimationFrameCallback( time );
 		if ( onAnimationFrameCallback ) onAnimationFrameCallback( time );
 
 
 	}
 	}

Some files were not shown because too many files changed in this diff