count vertical slides towards the progress bar (closes #150)

This commit is contained in:
Hakim El Hattab 2012-11-10 13:59:51 -05:00
parent 64ebbf80fb
commit fa3d0c899c
2 changed files with 143 additions and 103 deletions

View file

@ -1,5 +1,5 @@
/*!
* reveal.js 2.2 r39
* reveal.js 2.2 r40
* http://lab.hakim.se/reveal-js
* MIT licensed
*
@ -9,7 +9,8 @@ var Reveal = (function(){
'use strict';
var HORIZONTAL_SLIDES_SELECTOR = '.reveal .slides>section',
var SLIDES_SELECTOR = '.reveal .slides section',
HORIZONTAL_SLIDES_SELECTOR = '.reveal .slides>section',
VERTICAL_SLIDES_SELECTOR = '.reveal .slides>section.present>section',
// Configurations defaults, can be overridden at initialization time
@ -469,7 +470,7 @@ var Reveal = (function(){
*/
function linkify() {
if( supports3DTransforms && !( 'msPerspective' in document.body.style ) ) {
var nodes = document.querySelectorAll( '.reveal .slides section a:not(.image)' );
var nodes = document.querySelectorAll( SLIDES_SELECTOR + ' a:not(.image)' );
for( var i = 0, len = nodes.length; i < len; i++ ) {
var node = nodes[i];
@ -491,7 +492,7 @@ var Reveal = (function(){
if( config.center ) {
// Select all slides, vertical and horizontal
var slides = Array.prototype.slice.call( document.querySelectorAll( '.reveal .slides section' ) );
var slides = toArray( document.querySelectorAll( SLIDES_SELECTOR ) );
// Determine the minimum top offset for slides
var minTop = -dom.wrapper.offsetHeight / 2;
@ -583,7 +584,7 @@ var Reveal = (function(){
dom.wrapper.classList.remove( 'overview' );
// Select all slides
var slides = Array.prototype.slice.call( document.querySelectorAll( '.reveal .slides section' ) );
var slides = toArray( document.querySelectorAll( SLIDES_SELECTOR ) );
for( var i = 0, len = slides.length; i < len; i++ ) {
var element = slides[i];
@ -732,18 +733,11 @@ var Reveal = (function(){
document.documentElement.classList.remove( stateBefore.pop() );
}
// Update progress if enabled
if( config.progress && dom.progress ) {
dom.progressbar.style.width = ( indexh / ( document.querySelectorAll( HORIZONTAL_SLIDES_SELECTOR ).length - 1 ) ) * window.innerWidth + 'px';
}
// If the overview is active, re-activate it to update positions
if( isOverviewActive() ) {
activateOverview();
}
updateControls();
// Update the URL hash after a delay since updating it mid-transition
// is likely to cause visual lag
clearTimeout( writeURLTimeout );
@ -780,6 +774,9 @@ var Reveal = (function(){
if( previousSlide ) {
previousSlide.classList.remove( 'present' );
}
updateControls();
updateProgress();
}
/**
@ -798,7 +795,7 @@ var Reveal = (function(){
function updateSlides( selector, index ) {
// Select all slides and convert the NodeList result to
// an array
var slides = Array.prototype.slice.call( document.querySelectorAll( selector ) ),
var slides = toArray( document.querySelectorAll( selector ) ),
slidesLength = slides.length;
if( slidesLength ) {
@ -878,7 +875,48 @@ var Reveal = (function(){
}
/**
* Updates the state and link pointers of the controls.
* Updates the progress bar to reflect the current slide.
*/
function updateProgress() {
// Update progress if enabled
if( config.progress && dom.progress ) {
var horizontalSlides = toArray( document.querySelectorAll( HORIZONTAL_SLIDES_SELECTOR ) );
// The number of past and total slides
var totalCount = document.querySelectorAll( SLIDES_SELECTOR + ':not(.stack)' ).length;
var pastCount = 0;
// Step through all slides and count the past ones
mainLoop: for( var i = 0; i < horizontalSlides.length; i++ ) {
var horizontalSlide = horizontalSlides[i];
var verticalSlides = toArray( horizontalSlide.querySelectorAll( 'section' ) );
for( var j = 0; j < verticalSlides.length; j++ ) {
// Stop as soon as we arrive at the present
if( verticalSlides[j].classList.contains( 'present' ) ) break mainLoop;
pastCount++
}
// Stop as soon as we arrive at the present
if( horizontalSlide.classList.contains( 'present' ) ) break;
// Don't count the wrapping section for vertical slides
if( horizontalSlide.classList.contains( 'stack' ) === false ) pastCount++;
}
dom.progressbar.style.width = ( pastCount / ( totalCount - 1 ) ) * window.innerWidth + 'px';
}
}
/**
* Updates the state of all control/navigation arrows.
*/
function updateControls() {
if ( config.controls && dom.controls ) {
@ -1002,14 +1040,14 @@ var Reveal = (function(){
var slideh = isVertical ? slide.parentNode : slide;
// Select all horizontal slides
var horizontalSlides = Array.prototype.slice.call( document.querySelectorAll( HORIZONTAL_SLIDES_SELECTOR ) );
var horizontalSlides = toArray( document.querySelectorAll( HORIZONTAL_SLIDES_SELECTOR ) );
// Now that we know which the horizontal slide is, get its index
h = Math.max( horizontalSlides.indexOf( slideh ), 0 );
// If this is a vertical slide, grab the vertical index
if( isVertical ) {
v = Math.max( Array.prototype.slice.call( slide.parentNode.children ).indexOf( slide ), 0 );
v = Math.max( toArray( slide.parentNode.children ).indexOf( slide ), 0 );
}
}
@ -1356,7 +1394,7 @@ var Reveal = (function(){
* ( clickX / presentationWidth ) * numberOfSlides
*/
function onProgressClick( event ) {
var slidesTotal = Array.prototype.slice.call( document.querySelectorAll( HORIZONTAL_SLIDES_SELECTOR ) ).length;
var slidesTotal = toArray( document.querySelectorAll( HORIZONTAL_SLIDES_SELECTOR ) ).length;
var slideIndex = Math.floor( ( event.clientX / dom.wrapper.offsetWidth ) * slidesTotal );
slide( slideIndex );

174
js/reveal.min.js vendored
View file

@ -1,93 +1,95 @@
/*!
* reveal.js 2.2 r39
* reveal.js 2.2 r40
* http://lab.hakim.se/reveal-js
* MIT licensed
*
* Copyright (C) 2011-2012 Hakim El Hattab, http://hakim.se
*/
var Reveal=(function(){var m=".reveal .slides>section",b=".reveal .slides>section.present>section",U={controls:true,progress:true,history:false,keyboard:true,overview:true,center:false,loop:false,autoSlide:0,mouseWheel:true,rollingLinks:true,theme:null,transition:"default",dependencies:[]},ab=U.autoSlide,n=0,e=0,z,I,ao=[],f={},W="WebkitPerspective" in document.body.style||"MozPerspective" in document.body.style||"msPerspective" in document.body.style||"OPerspective" in document.body.style||"perspective" in document.body.style,o="WebkitTransform" in document.body.style||"MozTransform" in document.body.style||"msTransform" in document.body.style||"OTransform" in document.body.style||"transform" in document.body.style,A=0,l=0,E=0,ag={startX:0,startY:0,startSpan:0,startCount:0,handled:false,threshold:80};
function j(ap){if((!o&&!W)){document.body.setAttribute("class","no-transforms");return;}u(U,ap);d();Y();}function R(){f.theme=document.querySelector("#theme");
f.wrapper=document.querySelector(".reveal");if(!f.wrapper.querySelector(".progress")&&U.progress){var at=document.createElement("div");at.classList.add("progress");
at.innerHTML="<span></span>";f.wrapper.appendChild(at);}if(!f.wrapper.querySelector(".controls")&&U.controls){var ar=document.createElement("aside");ar.classList.add("controls");
ar.innerHTML='<div class="navigate-left"></div><div class="navigate-right"></div><div class="navigate-up"></div><div class="navigate-down"></div>';f.wrapper.appendChild(ar);
}if(!f.wrapper.querySelector(".state-background")){var aq=document.createElement("div");aq.classList.add("state-background");f.wrapper.appendChild(aq);
}if(!f.wrapper.querySelector(".pause-overlay")){var ap=document.createElement("div");ap.classList.add("pause-overlay");f.wrapper.appendChild(ap);}f.progress=document.querySelector(".reveal .progress");
f.progressbar=document.querySelector(".reveal .progress span");if(U.controls){f.controls=document.querySelector(".reveal .controls");f.controlsLeft=H(document.querySelectorAll(".navigate-left"));
f.controlsRight=H(document.querySelectorAll(".navigate-right"));f.controlsUp=H(document.querySelectorAll(".navigate-up"));f.controlsDown=H(document.querySelectorAll(".navigate-down"));
f.controlsPrev=H(document.querySelectorAll(".navigate-prev"));f.controlsNext=H(document.querySelectorAll(".navigate-next"));}}function d(){if(navigator.userAgent.match(/(iphone|ipod|android)/i)){document.documentElement.style.overflow="scroll";
document.body.style.height="120%";window.addEventListener("load",ah,false);window.addEventListener("orientationchange",ah,false);}}function Y(){var aq=[],av=[];
for(var ar=0,ap=U.dependencies.length;ar<ap;ar++){var at=U.dependencies[ar];if(!at.condition||at.condition()){if(at.async){av.push(at.src);}else{aq.push(at.src);
}if(typeof at.callback==="function"){head.ready(at.src.match(/([\w\d_\-]*)\.?[^\\\/]*$/i)[0],at.callback);}}}function au(){if(av.length){head.js.apply(null,av);
}J();}if(aq.length){head.ready(au);head.js.apply(null,aq);}else{au();}}function J(){R();F();M();S();L();Q();setTimeout(function(){s("ready",{indexh:n,indexv:e,currentSlide:I});
},1);}function M(){if(W===false){U.transition="linear";}if(U.controls&&f.controls){f.controls.style.display="block";}if(U.progress&&f.progress){f.progress.style.display="block";
}if(U.transition!=="default"){f.wrapper.classList.add(U.transition);}if(U.center){f.wrapper.classList.add("center");}if(U.mouseWheel){document.addEventListener("DOMMouseScroll",p,false);
document.addEventListener("mousewheel",p,false);}if(U.rollingLinks){P();}if(U.theme&&f.theme){var ar=f.theme.getAttribute("href");var ap=/[^\/]*?(?=\.css)/;
var aq=ar.match(ap)[0];if(U.theme!==aq){ar=ar.replace(ap,U.theme);f.theme.setAttribute("href",ar);}}}function F(){document.addEventListener("touchstart",B,false);
document.addEventListener("touchmove",aj,false);document.addEventListener("touchend",Z,false);window.addEventListener("hashchange",x,false);window.addEventListener("resize",g,false);
if(U.keyboard){document.addEventListener("keydown",al,false);}if(U.progress&&f.progress){f.progress.addEventListener("click",r(am),false);}if(U.controls&&f.controls){f.controlsLeft.forEach(function(ap){ap.addEventListener("click",r(C),false);
});f.controlsRight.forEach(function(ap){ap.addEventListener("click",r(k),false);});f.controlsUp.forEach(function(ap){ap.addEventListener("click",r(v),false);
});f.controlsDown.forEach(function(ap){ap.addEventListener("click",r(G),false);});f.controlsPrev.forEach(function(ap){ap.addEventListener("click",r(ac),false);
});f.controlsNext.forEach(function(ap){ap.addEventListener("click",r(y),false);});}}function X(){document.removeEventListener("keydown",al,false);document.removeEventListener("touchstart",B,false);
document.removeEventListener("touchmove",aj,false);document.removeEventListener("touchend",Z,false);window.removeEventListener("hashchange",x,false);window.removeEventListener("resize",g,false);
if(U.progress&&f.progress){f.progress.removeEventListener("click",r(am),false);}if(U.controls&&f.controls){f.controlsLeft.forEach(function(ap){ap.removeEventListener("click",r(C),false);
});f.controlsRight.forEach(function(ap){ap.removeEventListener("click",r(k),false);});f.controlsUp.forEach(function(ap){ap.removeEventListener("click",r(v),false);
});f.controlsDown.forEach(function(ap){ap.removeEventListener("click",r(G),false);});f.controlsPrev.forEach(function(ap){ap.removeEventListener("click",r(ac),false);
});f.controlsNext.forEach(function(ap){ap.removeEventListener("click",r(y),false);});}}function u(aq,ap){for(var ar in ap){aq[ar]=ap[ar];}}function H(ap){return Array.prototype.slice.call(ap);
}function ae(ap,ar,aq){ap.forEach(function(at){at[ar].apply(at,aq);});}function V(ar,ap){var at=ar.x-ap.x,aq=ar.y-ap.y;return Math.sqrt(at*at+aq*aq);}function r(ap){return function(aq){aq.preventDefault();
ap.call(null,aq);};}function ah(){setTimeout(function(){window.scrollTo(0,1);},0);}function s(aq,ap){var ar=document.createEvent("HTMLEvents",1,2);ar.initEvent(aq,true,true);
u(ar,ap);f.wrapper.dispatchEvent(ar);}function P(){if(W&&!("msPerspective" in document.body.style)){var aq=document.querySelectorAll(".reveal .slides section a:not(.image)");
for(var ar=0,ap=aq.length;ar<ap;ar++){var at=aq[ar];if(at.textContent&&!at.querySelector("img")&&(!at.className||!at.classList.contains(at,"roll"))){at.classList.add("roll");
at.innerHTML='<span data-title="'+at.text+'">'+at.innerHTML+"</span>";}}}}function S(){if(U.center){var at=Array.prototype.slice.call(document.querySelectorAll(".reveal .slides section"));
var au=-f.wrapper.offsetHeight/2;for(var ar=0,aq=at.length;ar<aq;ar++){var ap=at[ar];if(ap.classList.contains("stack")){ap.style.top=0;}else{ap.style.top=Math.max(-(ap.offsetHeight/2)-20,au)+"px";
}}}}function K(){if(U.overview){f.wrapper.classList.add("overview");var ap=document.querySelectorAll(m);for(var av=0,at=ap.length;av<at;av++){var ar=ap[av],az="translateZ(-2500px) translate("+((av-n)*105)+"%, 0%)";
ar.setAttribute("data-index-h",av);ar.style.display="block";ar.style.WebkitTransform=az;ar.style.MozTransform=az;ar.style.msTransform=az;ar.style.OTransform=az;
ar.style.transform=az;if(!ar.classList.contains("stack")){ar.addEventListener("click",D,true);}var ay=ar.querySelectorAll("section");for(var au=0,aq=ay.length;
au<aq;au++){var ax=ay[au],aw="translate(0%, "+((au-(av===n?e:0))*105)+"%)";ax.setAttribute("data-index-h",av);ax.setAttribute("data-index-v",au);ax.style.display="block";
ax.style.WebkitTransform=aw;ax.style.MozTransform=aw;ax.style.msTransform=aw;ax.style.OTransform=aw;ax.style.transform=aw;ax.addEventListener("click",D,true);
}}}}function ai(){if(U.overview){f.wrapper.classList.remove("overview");var at=Array.prototype.slice.call(document.querySelectorAll(".reveal .slides section"));
for(var ar=0,ap=at.length;ar<ap;ar++){var aq=at[ar];aq.style.WebkitTransform="";aq.style.MozTransform="";aq.style.msTransform="";aq.style.OTransform="";
aq.style.transform="";aq.removeEventListener("click",D);}a();}}function aa(ap){if(typeof ap==="boolean"){ap?K():ai();}else{N()?ai():K();}}function N(){return f.wrapper.classList.contains("overview");
}function af(){var ap=document.body;var aq=ap.requestFullScreen||ap.webkitRequestFullScreen||ap.mozRequestFullScreen||ap.msRequestFullScreen;if(aq){aq.apply(ap);
}}function c(){f.wrapper.classList.add("paused");}function q(){f.wrapper.classList.remove("paused");}function ad(){if(ak()){q();}else{c();}}function ak(){return f.wrapper.classList.contains("paused");
}function a(aw,aA){z=I;var at=ao.concat();ao.length=0;var az=n,aq=e;n=an(m,aw===undefined?n:aw);e=an(b,aA===undefined?e:aA);S();stateLoop:for(var au=0,ax=ao.length;
au<ax;au++){for(var ar=0;ar<at.length;ar++){if(at[ar]===ao[au]){at.splice(ar,1);continue stateLoop;}}document.documentElement.classList.add(ao[au]);s(ao[au]);
}while(at.length){document.documentElement.classList.remove(at.pop());}if(U.progress&&f.progress){f.progressbar.style.width=(n/(document.querySelectorAll(m).length-1))*window.innerWidth+"px";
}if(N()){K();}t();clearTimeout(E);E=setTimeout(i,1500);var ap=document.querySelectorAll(m);var ay=ap[n],av=ay.querySelectorAll("section");I=av[e]||ay;if(n!==az||e!==aq){s("slidechanged",{indexh:n,indexv:e,previousSlide:z,currentSlide:I});
}else{z=null;}if(z){z.classList.remove("present");}}function an(at,ay){var aq=Array.prototype.slice.call(document.querySelectorAll(at)),ax=aq.length;if(ax){if(U.loop){ay%=ax;
if(ay<0){ay=ax+ay;}}ay=Math.max(Math.min(ay,ax-1),0);for(var av=0;av<ax;av++){var aw=aq[av];if(N()===false){var ap=Math.abs((ay-av)%(ax-3))||0;aw.style.display=ap>3?"none":"block";
}aq[av].classList.remove("past");aq[av].classList.remove("present");aq[av].classList.remove("future");if(av<ay){aq[av].classList.add("past");}else{if(av>ay){aq[av].classList.add("future");
}}if(aw.querySelector("section")){aq[av].classList.add("stack");}}aq[ay].classList.add("present");var ar=aq[ay].getAttribute("data-state");if(ar){ao=ao.concat(ar.split(" "));
}var au=aq[ay].getAttribute("data-autoslide");if(au){ab=parseInt(au);}else{ab=U.autoSlide;}}else{ay=0;}return ay;}function t(){if(U.controls&&f.controls){var ap=h();
f.controlsLeft.concat(f.controlsRight).concat(f.controlsUp).concat(f.controlsDown).concat(f.controlsPrev).concat(f.controlsNext).forEach(function(aq){aq.classList.remove("enabled");
});if(ap.left){f.controlsLeft.forEach(function(aq){aq.classList.add("enabled");});}if(ap.right){f.controlsRight.forEach(function(aq){aq.classList.add("enabled");
});}if(ap.up){f.controlsUp.forEach(function(aq){aq.classList.add("enabled");});}if(ap.down){f.controlsDown.forEach(function(aq){aq.classList.add("enabled");
});}if(ap.left||ap.up){f.controlsPrev.forEach(function(aq){aq.classList.add("enabled");});}if(ap.right||ap.down){f.controlsNext.forEach(function(aq){aq.classList.add("enabled");
});}}}function h(){var ap=document.querySelectorAll(m),aq=document.querySelectorAll(b);return{left:n>0,right:n<ap.length-1,up:e>0,down:e<aq.length-1};}function L(){var av=window.location.hash;
var au=av.slice(2).split("/"),aq=av.replace(/#|\//gi,"");if(isNaN(parseInt(au[0],10))&&aq.length){var ar=document.querySelector("#"+aq);if(ar){var aw=Reveal.getIndices(ar);
a(aw.h,aw.v);}else{a(n,e);}}else{var at=parseInt(au[0],10)||0,ap=parseInt(au[1],10)||0;a(at,ap);}}function i(){if(U.history){var ap="/";if(I&&typeof I.getAttribute("id")==="string"){ap="/"+I.getAttribute("id");
}else{if(n>0||e>0){ap+=n;}if(e>0){ap+="/"+e;}}window.location.hash=ap;}}function O(ap){var au=n,ar=e;if(ap){var av=!!ap.parentNode.nodeName.match(/section/gi);
var at=av?ap.parentNode:ap;var aq=Array.prototype.slice.call(document.querySelectorAll(m));au=Math.max(aq.indexOf(at),0);if(av){ar=Math.max(Array.prototype.slice.call(ap.parentNode.children).indexOf(ap),0);
}}return{h:au,v:ar};}function w(){if(document.querySelector(b+".present")){var aq=document.querySelectorAll(b+".present .fragment:not(.visible)");if(aq.length){aq[0].classList.add("visible");
s("fragmentshown",{fragment:aq[0]});return true;}}else{var ap=document.querySelectorAll(m+".present .fragment:not(.visible)");if(ap.length){ap[0].classList.add("visible");
s("fragmentshown",{fragment:ap[0]});return true;}}return false;}function T(){if(document.querySelector(b+".present")){var aq=document.querySelectorAll(b+".present .fragment.visible");
if(aq.length){aq[aq.length-1].classList.remove("visible");s("fragmenthidden",{fragment:aq[aq.length-1]});return true;}}else{var ap=document.querySelectorAll(m+".present .fragment.visible");
if(ap.length){ap[ap.length-1].classList.remove("visible");s("fragmenthidden",{fragment:ap[ap.length-1]});return true;}}return false;}function Q(){clearTimeout(l);
if(ab){l=setTimeout(y,ab);}}function C(){if(h().left&&(N()||T()===false)){a(n-1,0);}}function k(){if(h().right&&(N()||w()===false)){a(n+1,0);}}function v(){if(h().up&&(N()||T()===false)){a(n,e-1);
}}function G(){if(h().down&&(N()||w()===false)){a(n,e+1);}}function ac(){if(T()===false){if(h().up){v();}else{var ap=document.querySelector(".reveal .slides>section.past:nth-child("+n+")");
if(ap){e=(ap.querySelectorAll("section").length+1)||0;n--;a();}}}}function y(){if(w()===false){h().down?G():k();}Q();}function al(ar){var aq=document.activeElement;
var at=!!(document.activeElement&&(document.activeElement.type||document.activeElement.href||document.activeElement.contentEditable!=="inherit"));if(at||ar.shiftKey||ar.altKey||ar.ctrlKey||ar.metaKey){return;
}var ap=true;switch(ar.keyCode){case 80:case 33:ac();break;case 78:case 34:y();break;case 72:case 37:C();break;case 76:case 39:k();break;case 75:case 38:v();
break;case 74:case 40:G();break;case 36:a(0);break;case 35:a(Number.MAX_VALUE);break;case 32:N()?ai():y();break;case 13:N()?ai():ap=false;break;case 66:case 190:ad();
break;case 70:af();break;default:ap=false;}if(ap){ar.preventDefault();}else{if(ar.keyCode===27&&W){aa();ar.preventDefault();}}Q();}function B(ap){ag.startX=ap.touches[0].clientX;
ag.startY=ap.touches[0].clientY;ag.startCount=ap.touches.length;if(ap.touches.length===2&&U.overview){ag.startSpan=V({x:ap.touches[1].clientX,y:ap.touches[1].clientY},{x:ag.startX,y:ag.startY});
}}function aj(av){if(!ag.handled){var at=av.touches[0].clientX;var ar=av.touches[0].clientY;if(av.touches.length===2&&ag.startCount===2&&U.overview){var au=V({x:av.touches[1].clientX,y:av.touches[1].clientY},{x:ag.startX,y:ag.startY});
if(Math.abs(ag.startSpan-au)>ag.threshold){ag.handled=true;if(au<ag.startSpan){K();}else{ai();}}av.preventDefault();}else{if(av.touches.length===1&&ag.startCount!==2){var aq=at-ag.startX,ap=ar-ag.startY;
if(aq>ag.threshold&&Math.abs(aq)>Math.abs(ap)){ag.handled=true;C();}else{if(aq<-ag.threshold&&Math.abs(aq)>Math.abs(ap)){ag.handled=true;k();}else{if(ap>ag.threshold){ag.handled=true;
v();}else{if(ap<-ag.threshold){ag.handled=true;G();}}}}av.preventDefault();}}}else{if(navigator.userAgent.match(/android/gi)){av.preventDefault();}}}function Z(ap){ag.handled=false;
}function p(ap){clearTimeout(A);A=setTimeout(function(){var aq=ap.detail||-ap.wheelDelta;if(aq>0){y();}else{ac();}},100);}function am(aq){var ap=Array.prototype.slice.call(document.querySelectorAll(m)).length;
var ar=Math.floor((aq.clientX/f.wrapper.offsetWidth)*ap);a(ar);}function x(ap){L();}function g(ap){S();}function D(ap){if(N()){ap.preventDefault();ai();
n=this.getAttribute("data-index-h");e=this.getAttribute("data-index-v");a();}}return{initialize:j,slide:a,left:C,right:k,up:v,down:G,prev:ac,next:y,prevFragment:T,nextFragment:w,navigateTo:a,navigateLeft:C,navigateRight:k,navigateUp:v,navigateDown:G,navigatePrev:ac,navigateNext:y,toggleOverview:aa,addEventListeners:F,removeEventListeners:X,getIndices:O,getPreviousSlide:function(){return z;
},getCurrentSlide:function(){return I;},getQueryHash:function(){var ap={};location.search.replace(/[A-Z0-9]+?=(\w*)/gi,function(aq){ap[aq.split("=").shift()]=aq.split("=").pop();
});return ap;},addEventListener:function(aq,ar,ap){if("addEventListener" in window){(f.wrapper||document.querySelector(".reveal")).addEventListener(aq,ar,ap);
}},removeEventListener:function(aq,ar,ap){if("addEventListener" in window){(f.wrapper||document.querySelector(".reveal")).removeEventListener(aq,ar,ap);
var Reveal=(function(){var ap=".reveal .slides section",m=".reveal .slides>section",b=".reveal .slides>section.present>section",V={controls:true,progress:true,history:false,keyboard:true,overview:true,center:false,loop:false,autoSlide:0,mouseWheel:true,rollingLinks:true,theme:null,transition:"default",dependencies:[]},ac=V.autoSlide,n=0,e=0,A,J,aq=[],f={},X="WebkitPerspective" in document.body.style||"MozPerspective" in document.body.style||"msPerspective" in document.body.style||"OPerspective" in document.body.style||"perspective" in document.body.style,p="WebkitTransform" in document.body.style||"MozTransform" in document.body.style||"msTransform" in document.body.style||"OTransform" in document.body.style||"transform" in document.body.style,B=0,l=0,F=0,ah={startX:0,startY:0,startSpan:0,startCount:0,handled:false,threshold:80};
function j(ar){if((!p&&!X)){document.body.setAttribute("class","no-transforms");return;}v(V,ar);d();Z();}function S(){f.theme=document.querySelector("#theme");
f.wrapper=document.querySelector(".reveal");if(!f.wrapper.querySelector(".progress")&&V.progress){var av=document.createElement("div");av.classList.add("progress");
av.innerHTML="<span></span>";f.wrapper.appendChild(av);}if(!f.wrapper.querySelector(".controls")&&V.controls){var au=document.createElement("aside");au.classList.add("controls");
au.innerHTML='<div class="navigate-left"></div><div class="navigate-right"></div><div class="navigate-up"></div><div class="navigate-down"></div>';f.wrapper.appendChild(au);
}if(!f.wrapper.querySelector(".state-background")){var at=document.createElement("div");at.classList.add("state-background");f.wrapper.appendChild(at);
}if(!f.wrapper.querySelector(".pause-overlay")){var ar=document.createElement("div");ar.classList.add("pause-overlay");f.wrapper.appendChild(ar);}f.progress=document.querySelector(".reveal .progress");
f.progressbar=document.querySelector(".reveal .progress span");if(V.controls){f.controls=document.querySelector(".reveal .controls");f.controlsLeft=I(document.querySelectorAll(".navigate-left"));
f.controlsRight=I(document.querySelectorAll(".navigate-right"));f.controlsUp=I(document.querySelectorAll(".navigate-up"));f.controlsDown=I(document.querySelectorAll(".navigate-down"));
f.controlsPrev=I(document.querySelectorAll(".navigate-prev"));f.controlsNext=I(document.querySelectorAll(".navigate-next"));}}function d(){if(navigator.userAgent.match(/(iphone|ipod|android)/i)){document.documentElement.style.overflow="scroll";
document.body.style.height="120%";window.addEventListener("load",ai,false);window.addEventListener("orientationchange",ai,false);}}function Z(){var at=[],ax=[];
for(var au=0,ar=V.dependencies.length;au<ar;au++){var av=V.dependencies[au];if(!av.condition||av.condition()){if(av.async){ax.push(av.src);}else{at.push(av.src);
}if(typeof av.callback==="function"){head.ready(av.src.match(/([\w\d_\-]*)\.?[^\\\/]*$/i)[0],av.callback);}}}function aw(){if(ax.length){head.js.apply(null,ax);
}K();}if(at.length){head.ready(aw);head.js.apply(null,at);}else{aw();}}function K(){S();G();N();T();M();R();setTimeout(function(){t("ready",{indexh:n,indexv:e,currentSlide:J});
},1);}function N(){if(X===false){V.transition="linear";}if(V.controls&&f.controls){f.controls.style.display="block";}if(V.progress&&f.progress){f.progress.style.display="block";
}if(V.transition!=="default"){f.wrapper.classList.add(V.transition);}if(V.center){f.wrapper.classList.add("center");}if(V.mouseWheel){document.addEventListener("DOMMouseScroll",q,false);
document.addEventListener("mousewheel",q,false);}if(V.rollingLinks){Q();}if(V.theme&&f.theme){var au=f.theme.getAttribute("href");var ar=/[^\/]*?(?=\.css)/;
var at=au.match(ar)[0];if(V.theme!==at){au=au.replace(ar,V.theme);f.theme.setAttribute("href",au);}}}function G(){document.addEventListener("touchstart",C,false);
document.addEventListener("touchmove",ak,false);document.addEventListener("touchend",aa,false);window.addEventListener("hashchange",y,false);window.addEventListener("resize",g,false);
if(V.keyboard){document.addEventListener("keydown",am,false);}if(V.progress&&f.progress){f.progress.addEventListener("click",s(an),false);}if(V.controls&&f.controls){f.controlsLeft.forEach(function(ar){ar.addEventListener("click",s(D),false);
});f.controlsRight.forEach(function(ar){ar.addEventListener("click",s(k),false);});f.controlsUp.forEach(function(ar){ar.addEventListener("click",s(w),false);
});f.controlsDown.forEach(function(ar){ar.addEventListener("click",s(H),false);});f.controlsPrev.forEach(function(ar){ar.addEventListener("click",s(ad),false);
});f.controlsNext.forEach(function(ar){ar.addEventListener("click",s(z),false);});}}function Y(){document.removeEventListener("keydown",am,false);document.removeEventListener("touchstart",C,false);
document.removeEventListener("touchmove",ak,false);document.removeEventListener("touchend",aa,false);window.removeEventListener("hashchange",y,false);window.removeEventListener("resize",g,false);
if(V.progress&&f.progress){f.progress.removeEventListener("click",s(an),false);}if(V.controls&&f.controls){f.controlsLeft.forEach(function(ar){ar.removeEventListener("click",s(D),false);
});f.controlsRight.forEach(function(ar){ar.removeEventListener("click",s(k),false);});f.controlsUp.forEach(function(ar){ar.removeEventListener("click",s(w),false);
});f.controlsDown.forEach(function(ar){ar.removeEventListener("click",s(H),false);});f.controlsPrev.forEach(function(ar){ar.removeEventListener("click",s(ad),false);
});f.controlsNext.forEach(function(ar){ar.removeEventListener("click",s(z),false);});}}function v(at,ar){for(var au in ar){at[au]=ar[au];}}function I(ar){return Array.prototype.slice.call(ar);
}function af(ar,au,at){ar.forEach(function(av){av[au].apply(av,at);});}function W(au,ar){var av=au.x-ar.x,at=au.y-ar.y;return Math.sqrt(av*av+at*at);}function s(ar){return function(at){at.preventDefault();
ar.call(null,at);};}function ai(){setTimeout(function(){window.scrollTo(0,1);},0);}function t(at,ar){var au=document.createEvent("HTMLEvents",1,2);au.initEvent(at,true,true);
v(au,ar);f.wrapper.dispatchEvent(au);}function Q(){if(X&&!("msPerspective" in document.body.style)){var at=document.querySelectorAll(ap+" a:not(.image)");
for(var au=0,ar=at.length;au<ar;au++){var av=at[au];if(av.textContent&&!av.querySelector("img")&&(!av.className||!av.classList.contains(av,"roll"))){av.classList.add("roll");
av.innerHTML='<span data-title="'+av.text+'">'+av.innerHTML+"</span>";}}}}function T(){if(V.center){var av=I(document.querySelectorAll(ap));var aw=-f.wrapper.offsetHeight/2;
for(var au=0,at=av.length;au<at;au++){var ar=av[au];if(ar.classList.contains("stack")){ar.style.top=0;}else{ar.style.top=Math.max(-(ar.offsetHeight/2)-20,aw)+"px";
}}}}function L(){if(V.overview){f.wrapper.classList.add("overview");var ar=document.querySelectorAll(m);for(var ax=0,av=ar.length;ax<av;ax++){var au=ar[ax],aB="translateZ(-2500px) translate("+((ax-n)*105)+"%, 0%)";
au.setAttribute("data-index-h",ax);au.style.display="block";au.style.WebkitTransform=aB;au.style.MozTransform=aB;au.style.msTransform=aB;au.style.OTransform=aB;
au.style.transform=aB;if(!au.classList.contains("stack")){au.addEventListener("click",E,true);}var aA=au.querySelectorAll("section");for(var aw=0,at=aA.length;
aw<at;aw++){var az=aA[aw],ay="translate(0%, "+((aw-(ax===n?e:0))*105)+"%)";az.setAttribute("data-index-h",ax);az.setAttribute("data-index-v",aw);az.style.display="block";
az.style.WebkitTransform=ay;az.style.MozTransform=ay;az.style.msTransform=ay;az.style.OTransform=ay;az.style.transform=ay;az.addEventListener("click",E,true);
}}}}function aj(){if(V.overview){f.wrapper.classList.remove("overview");var av=I(document.querySelectorAll(ap));for(var au=0,ar=av.length;au<ar;au++){var at=av[au];
at.style.WebkitTransform="";at.style.MozTransform="";at.style.msTransform="";at.style.OTransform="";at.style.transform="";at.removeEventListener("click",E);
}a();}}function ab(ar){if(typeof ar==="boolean"){ar?L():aj();}else{O()?aj():L();}}function O(){return f.wrapper.classList.contains("overview");}function ag(){var ar=document.body;
var at=ar.requestFullScreen||ar.webkitRequestFullScreen||ar.mozRequestFullScreen||ar.msRequestFullScreen;if(at){at.apply(ar);}}function c(){f.wrapper.classList.add("paused");
}function r(){f.wrapper.classList.remove("paused");}function ae(){if(al()){r();}else{c();}}function al(){return f.wrapper.classList.contains("paused");
}function a(ay,aC){A=J;var av=aq.concat();aq.length=0;var aB=n,at=e;n=ao(m,ay===undefined?n:ay);e=ao(b,aC===undefined?e:aC);T();stateLoop:for(var aw=0,az=aq.length;
aw<az;aw++){for(var au=0;au<av.length;au++){if(av[au]===aq[aw]){av.splice(au,1);continue stateLoop;}}document.documentElement.classList.add(aq[aw]);t(aq[aw]);
}while(av.length){document.documentElement.classList.remove(av.pop());}if(O()){L();}clearTimeout(F);F=setTimeout(i,1500);var ar=document.querySelectorAll(m);
var aA=ar[n],ax=aA.querySelectorAll("section");J=ax[e]||aA;if(n!==aB||e!==at){t("slidechanged",{indexh:n,indexv:e,previousSlide:A,currentSlide:J});}else{A=null;
}if(A){A.classList.remove("present");}u();o();}function ao(av,aA){var at=I(document.querySelectorAll(av)),az=at.length;if(az){if(V.loop){aA%=az;if(aA<0){aA=az+aA;
}}aA=Math.max(Math.min(aA,az-1),0);for(var ax=0;ax<az;ax++){var ay=at[ax];if(O()===false){var ar=Math.abs((aA-ax)%(az-3))||0;ay.style.display=ar>3?"none":"block";
}at[ax].classList.remove("past");at[ax].classList.remove("present");at[ax].classList.remove("future");if(ax<aA){at[ax].classList.add("past");}else{if(ax>aA){at[ax].classList.add("future");
}}if(ay.querySelector("section")){at[ax].classList.add("stack");}}at[aA].classList.add("present");var au=at[aA].getAttribute("data-state");if(au){aq=aq.concat(au.split(" "));
}var aw=at[aA].getAttribute("data-autoslide");if(aw){ac=parseInt(aw);}else{ac=V.autoSlide;}}else{aA=0;}return aA;}function o(){if(V.progress&&f.progress){var au=I(document.querySelectorAll(m));
var at=document.querySelectorAll(ap+":not(.stack)").length;var ar=0;mainLoop:for(var aw=0;aw<au.length;aw++){var ax=au[aw];var ay=I(ax.querySelectorAll("section"));
for(var av=0;av<ay.length;av++){if(ay[av].classList.contains("present")){break mainLoop;}ar++;}if(ax.classList.contains("present")){break;}if(ax.classList.contains("stack")===false){ar++;
}}f.progressbar.style.width=(ar/(at-1))*window.innerWidth+"px";}}function u(){if(V.controls&&f.controls){var ar=h();f.controlsLeft.concat(f.controlsRight).concat(f.controlsUp).concat(f.controlsDown).concat(f.controlsPrev).concat(f.controlsNext).forEach(function(at){at.classList.remove("enabled");
});if(ar.left){f.controlsLeft.forEach(function(at){at.classList.add("enabled");});}if(ar.right){f.controlsRight.forEach(function(at){at.classList.add("enabled");
});}if(ar.up){f.controlsUp.forEach(function(at){at.classList.add("enabled");});}if(ar.down){f.controlsDown.forEach(function(at){at.classList.add("enabled");
});}if(ar.left||ar.up){f.controlsPrev.forEach(function(at){at.classList.add("enabled");});}if(ar.right||ar.down){f.controlsNext.forEach(function(at){at.classList.add("enabled");
});}}}function h(){var ar=document.querySelectorAll(m),at=document.querySelectorAll(b);return{left:n>0,right:n<ar.length-1,up:e>0,down:e<at.length-1};}function M(){var ax=window.location.hash;
var aw=ax.slice(2).split("/"),at=ax.replace(/#|\//gi,"");if(isNaN(parseInt(aw[0],10))&&at.length){var au=document.querySelector("#"+at);if(au){var ay=Reveal.getIndices(au);
a(ay.h,ay.v);}else{a(n,e);}}else{var av=parseInt(aw[0],10)||0,ar=parseInt(aw[1],10)||0;a(av,ar);}}function i(){if(V.history){var ar="/";if(J&&typeof J.getAttribute("id")==="string"){ar="/"+J.getAttribute("id");
}else{if(n>0||e>0){ar+=n;}if(e>0){ar+="/"+e;}}window.location.hash=ar;}}function P(ar){var aw=n,au=e;if(ar){var ax=!!ar.parentNode.nodeName.match(/section/gi);
var av=ax?ar.parentNode:ar;var at=I(document.querySelectorAll(m));aw=Math.max(at.indexOf(av),0);if(ax){au=Math.max(I(ar.parentNode.children).indexOf(ar),0);
}}return{h:aw,v:au};}function x(){if(document.querySelector(b+".present")){var at=document.querySelectorAll(b+".present .fragment:not(.visible)");if(at.length){at[0].classList.add("visible");
t("fragmentshown",{fragment:at[0]});return true;}}else{var ar=document.querySelectorAll(m+".present .fragment:not(.visible)");if(ar.length){ar[0].classList.add("visible");
t("fragmentshown",{fragment:ar[0]});return true;}}return false;}function U(){if(document.querySelector(b+".present")){var at=document.querySelectorAll(b+".present .fragment.visible");
if(at.length){at[at.length-1].classList.remove("visible");t("fragmenthidden",{fragment:at[at.length-1]});return true;}}else{var ar=document.querySelectorAll(m+".present .fragment.visible");
if(ar.length){ar[ar.length-1].classList.remove("visible");t("fragmenthidden",{fragment:ar[ar.length-1]});return true;}}return false;}function R(){clearTimeout(l);
if(ac){l=setTimeout(z,ac);}}function D(){if(h().left&&(O()||U()===false)){a(n-1,0);}}function k(){if(h().right&&(O()||x()===false)){a(n+1,0);}}function w(){if(h().up&&(O()||U()===false)){a(n,e-1);
}}function H(){if(h().down&&(O()||x()===false)){a(n,e+1);}}function ad(){if(U()===false){if(h().up){w();}else{var ar=document.querySelector(".reveal .slides>section.past:nth-child("+n+")");
if(ar){e=(ar.querySelectorAll("section").length+1)||0;n--;a();}}}}function z(){if(x()===false){h().down?H():k();}R();}function am(au){var at=document.activeElement;
var av=!!(document.activeElement&&(document.activeElement.type||document.activeElement.href||document.activeElement.contentEditable!=="inherit"));if(av||au.shiftKey||au.altKey||au.ctrlKey||au.metaKey){return;
}var ar=true;switch(au.keyCode){case 80:case 33:ad();break;case 78:case 34:z();break;case 72:case 37:D();break;case 76:case 39:k();break;case 75:case 38:w();
break;case 74:case 40:H();break;case 36:a(0);break;case 35:a(Number.MAX_VALUE);break;case 32:O()?aj():z();break;case 13:O()?aj():ar=false;break;case 66:case 190:ae();
break;case 70:ag();break;default:ar=false;}if(ar){au.preventDefault();}else{if(au.keyCode===27&&X){ab();au.preventDefault();}}R();}function C(ar){ah.startX=ar.touches[0].clientX;
ah.startY=ar.touches[0].clientY;ah.startCount=ar.touches.length;if(ar.touches.length===2&&V.overview){ah.startSpan=W({x:ar.touches[1].clientX,y:ar.touches[1].clientY},{x:ah.startX,y:ah.startY});
}}function ak(ax){if(!ah.handled){var av=ax.touches[0].clientX;var au=ax.touches[0].clientY;if(ax.touches.length===2&&ah.startCount===2&&V.overview){var aw=W({x:ax.touches[1].clientX,y:ax.touches[1].clientY},{x:ah.startX,y:ah.startY});
if(Math.abs(ah.startSpan-aw)>ah.threshold){ah.handled=true;if(aw<ah.startSpan){L();}else{aj();}}ax.preventDefault();}else{if(ax.touches.length===1&&ah.startCount!==2){var at=av-ah.startX,ar=au-ah.startY;
if(at>ah.threshold&&Math.abs(at)>Math.abs(ar)){ah.handled=true;D();}else{if(at<-ah.threshold&&Math.abs(at)>Math.abs(ar)){ah.handled=true;k();}else{if(ar>ah.threshold){ah.handled=true;
w();}else{if(ar<-ah.threshold){ah.handled=true;H();}}}}ax.preventDefault();}}}else{if(navigator.userAgent.match(/android/gi)){ax.preventDefault();}}}function aa(ar){ah.handled=false;
}function q(ar){clearTimeout(B);B=setTimeout(function(){var at=ar.detail||-ar.wheelDelta;if(at>0){z();}else{ad();}},100);}function an(at){var ar=I(document.querySelectorAll(m)).length;
var au=Math.floor((at.clientX/f.wrapper.offsetWidth)*ar);a(au);}function y(ar){M();}function g(ar){T();}function E(ar){if(O()){ar.preventDefault();aj();
n=this.getAttribute("data-index-h");e=this.getAttribute("data-index-v");a();}}return{initialize:j,slide:a,left:D,right:k,up:w,down:H,prev:ad,next:z,prevFragment:U,nextFragment:x,navigateTo:a,navigateLeft:D,navigateRight:k,navigateUp:w,navigateDown:H,navigatePrev:ad,navigateNext:z,toggleOverview:ab,addEventListeners:G,removeEventListeners:Y,getIndices:P,getPreviousSlide:function(){return A;
},getCurrentSlide:function(){return J;},getQueryHash:function(){var ar={};location.search.replace(/[A-Z0-9]+?=(\w*)/gi,function(at){ar[at.split("=").shift()]=at.split("=").pop();
});return ar;},addEventListener:function(at,au,ar){if("addEventListener" in window){(f.wrapper||document.querySelector(".reveal")).addEventListener(at,au,ar);
}},removeEventListener:function(at,au,ar){if("addEventListener" in window){(f.wrapper||document.querySelector(".reveal")).removeEventListener(at,au,ar);
}}};})();