| 
					
				 | 
			
			
				@@ -209,6 +209,94 @@ var Reveal = (function(){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	/** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * Loads the dependencies of reveal.js. Dependencies are 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * defined via the configuration option 'dependencies' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * and will be loaded prior to starting/binding reveal.js. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * Some dependencies may have an 'async' flag, if so they 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * will load after reveal.js has been started up. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	function load() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		var scripts = [], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			scriptsAsync = []; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		for( var i = 0, len = config.dependencies.length; i < len; i++ ) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			var s = config.dependencies[i]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			// Load if there's no condition or the condition is truthy 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			if( !s.condition || s.condition() ) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				if( s.async ) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					scriptsAsync.push( s.src ); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					scripts.push( s.src ); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				// Extension may contain callback functions 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				if( typeof s.callback === 'function' ) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					head.ready( s.src.match( /([\w\d_\-]*)\.?js$|[^\\\/]*$/i )[0], s.callback ); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		// Called once synchronous scripts finish loading 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		function proceed() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			if( scriptsAsync.length ) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				// Load asynchronous scripts 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				head.js.apply( null, scriptsAsync ); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			start(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		if( scripts.length ) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			head.ready( proceed ); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			// Load synchronous scripts 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			head.js.apply( null, scripts ); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			proceed(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	/** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * Starts up reveal.js by binding input events and navigating 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * to the current URL deeplink if there is one. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	function start() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		// Make sure we've got all the DOM elements we need 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		setupDOM(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		// Decorate the slide DOM elements with state classes (past/future) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		setupSlides(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		// Updates the presentation to match the current configuration values 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		configure(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		// Read the initial hash 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		readURL(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		// Notify listeners that the presentation is ready but use a 1ms 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		// timeout to ensure it's not fired synchronously after #initialize() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		setTimeout( function() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			// Enable transitions now that we're loaded 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			dom.slides.classList.remove( 'no-transition' ); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			loaded = true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			dispatchEvent( 'ready', { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				'indexh': indexh, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				'indexv': indexv, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				'currentSlide': currentSlide 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			} ); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		}, 1 ); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	/** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	 * Iterates through and decorates slides DOM elements with 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	 * appropriate classes. 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -383,107 +471,6 @@ var Reveal = (function(){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	/** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	 * Hides the address bar if we're on a mobile device. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	 */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	function hideAddressBar() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		if( /iphone|ipod|android/gi.test( navigator.userAgent ) && !/crios/gi.test( navigator.userAgent ) ) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			// Events that should trigger the address bar to hide 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			window.addEventListener( 'load', removeAddressBar, false ); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			window.addEventListener( 'orientationchange', removeAddressBar, false ); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	/** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	 * Loads the dependencies of reveal.js. Dependencies are 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	 * defined via the configuration option 'dependencies' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	 * and will be loaded prior to starting/binding reveal.js. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	 * Some dependencies may have an 'async' flag, if so they 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	 * will load after reveal.js has been started up. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	 */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	function load() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		var scripts = [], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			scriptsAsync = []; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		for( var i = 0, len = config.dependencies.length; i < len; i++ ) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			var s = config.dependencies[i]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			// Load if there's no condition or the condition is truthy 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			if( !s.condition || s.condition() ) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				if( s.async ) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-					scriptsAsync.push( s.src ); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-					scripts.push( s.src ); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				// Extension may contain callback functions 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				if( typeof s.callback === 'function' ) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-					head.ready( s.src.match( /([\w\d_\-]*)\.?js$|[^\\\/]*$/i )[0], s.callback ); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		// Called once synchronous scripts finish loading 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		function proceed() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			if( scriptsAsync.length ) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				// Load asynchronous scripts 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				head.js.apply( null, scriptsAsync ); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			start(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		if( scripts.length ) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			head.ready( proceed ); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			// Load synchronous scripts 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			head.js.apply( null, scripts ); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			proceed(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	/** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	 * Starts up reveal.js by binding input events and navigating 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	 * to the current URL deeplink if there is one. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	 */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	function start() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		// Make sure we've got all the DOM elements we need 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		setupDOM(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		// Decorate the slide DOM elements with state classes (past/future) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		setupSlides(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		// Updates the presentation to match the current configuration values 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		configure(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		// Read the initial hash 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		readURL(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		// Notify listeners that the presentation is ready but use a 1ms 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		// timeout to ensure it's not fired synchronously after #initialize() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		setTimeout( function() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			// Enable transitions now that we're loaded 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			dom.slides.classList.remove( 'no-transition' ); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			loaded = true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			dispatchEvent( 'ready', { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				'indexh': indexh, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				'indexv': indexv, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				'currentSlide': currentSlide 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			} ); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		}, 1 ); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	/** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	 * Applies the configuration settings from the config 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	 * object. May be called multiple times. 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -744,6 +731,19 @@ var Reveal = (function(){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	/** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * Hides the address bar if we're on a mobile device. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	function hideAddressBar() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		if( /iphone|ipod|android/gi.test( navigator.userAgent ) && !/crios/gi.test( navigator.userAgent ) ) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			// Events that should trigger the address bar to hide 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			window.addEventListener( 'load', removeAddressBar, false ); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			window.addEventListener( 'orientationchange', removeAddressBar, false ); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	/** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	 * Causes the address bar to hide on mobile devices, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	 * more vertical space ftw. 
			 |