allow multiple control elements, document usage of global controls (#184, #204)

This commit is contained in:
Hakim El Hattab 2012-11-10 11:40:19 -05:00
parent df4e1fd346
commit c79376dab2
11 changed files with 231 additions and 182 deletions

View file

@ -186,6 +186,19 @@ It's easy to link between slides. The first example below targets the index of a
<a href="#/2/2">Link</a>
<a href="#/some-slide">Link</a>
```
You can also add relative navigation links, similar to the built in reveal.js controls, by appending one of the following classes on any element. Note that each element is automatically given an ```enabled``` class when its a valid navigation route based on the current slide.
```html
<a href="#" class="navigate-left">
<a href="#" class="navigate-right">
<a href="#" class="navigate-up">
<a href="#" class="navigate-down">
<a href="#" class="navigate-prev"> <!-- Previous vertical slide or horizontal slide -->
<a href="#" class="navigate-next"> <!-- Next vertical or horizontal slide -->
```
### Fullscreen mode
Just press »F« on your keyboard to show your presentation in fullscreen mode. Press the »ESC« key to exit fullscreen mode.

View file

@ -346,14 +346,14 @@ body {
margin-top: 1px;
}
.reveal .controls div.left {
.reveal .controls div.navigate-left {
top: 42px;
border-right-width: 22px;
border-right-color: #eee;
}
.reveal .controls div.right {
.reveal .controls div.navigate-right {
left: 74px;
top: 42px;
@ -361,14 +361,14 @@ body {
border-left-color: #eee;
}
.reveal .controls div.up {
.reveal .controls div.navigate-up {
left: 42px;
border-bottom-width: 22px;
border-bottom-color: #eee;
}
.reveal .controls div.down {
.reveal .controls div.navigate-down {
left: 42px;
top: 74px;

View file

@ -110,39 +110,39 @@ body {
/*********************************************
* NAVIGATION CONTROLS
*********************************************/
.reveal .controls div.left,
.reveal .controls div.left.enabled {
.reveal .controls div.navigate-left,
.reveal .controls div.navigate-left.enabled {
border-right-color: #8b743d;
}
.reveal .controls div.right,
.reveal .controls div.right.enabled {
.reveal .controls div.navigate-right,
.reveal .controls div.navigate-right.enabled {
border-left-color: #8b743d;
}
.reveal .controls div.up,
.reveal .controls div.up.enabled {
.reveal .controls div.navigate-up,
.reveal .controls div.navigate-up.enabled {
border-bottom-color: #8b743d;
}
.reveal .controls div.down,
.reveal .controls div.down.enabled {
.reveal .controls div.navigate-down,
.reveal .controls div.navigate-down.enabled {
border-top-color: #8b743d;
}
.reveal .controls div.left.enabled:hover {
.reveal .controls div.navigate-left.enabled:hover {
border-right-color: #c0a86e;
}
.reveal .controls div.right.enabled:hover {
.reveal .controls div.navigate-right.enabled:hover {
border-left-color: #c0a86e;
}
.reveal .controls div.up.enabled:hover {
.reveal .controls div.navigate-up.enabled:hover {
border-bottom-color: #c0a86e;
}
.reveal .controls div.down.enabled:hover {
.reveal .controls div.navigate-down.enabled:hover {
border-top-color: #c0a86e;
}

View file

@ -110,39 +110,39 @@ body {
/*********************************************
* NAVIGATION CONTROLS
*********************************************/
.reveal .controls div.left,
.reveal .controls div.left.enabled {
.reveal .controls div.navigate-left,
.reveal .controls div.navigate-left.enabled {
border-right-color: #13daec;
}
.reveal .controls div.right,
.reveal .controls div.right.enabled {
.reveal .controls div.navigate-right,
.reveal .controls div.navigate-right.enabled {
border-left-color: #13daec;
}
.reveal .controls div.up,
.reveal .controls div.up.enabled {
.reveal .controls div.navigate-up,
.reveal .controls div.navigate-up.enabled {
border-bottom-color: #13daec;
}
.reveal .controls div.down,
.reveal .controls div.down.enabled {
.reveal .controls div.navigate-down,
.reveal .controls div.navigate-down.enabled {
border-top-color: #13daec;
}
.reveal .controls div.left.enabled:hover {
.reveal .controls div.navigate-left.enabled:hover {
border-right-color: #71e9f4;
}
.reveal .controls div.right.enabled:hover {
.reveal .controls div.navigate-right.enabled:hover {
border-left-color: #71e9f4;
}
.reveal .controls div.up.enabled:hover {
.reveal .controls div.navigate-up.enabled:hover {
border-bottom-color: #71e9f4;
}
.reveal .controls div.down.enabled:hover {
.reveal .controls div.navigate-down.enabled:hover {
border-top-color: #71e9f4;
}

View file

@ -97,39 +97,39 @@ body {
/*********************************************
* NAVIGATION CONTROLS
*********************************************/
.reveal .controls div.left,
.reveal .controls div.left.enabled {
.reveal .controls div.navigate-left,
.reveal .controls div.navigate-left.enabled {
border-right-color: #51483d;
}
.reveal .controls div.right,
.reveal .controls div.right.enabled {
.reveal .controls div.navigate-right,
.reveal .controls div.navigate-right.enabled {
border-left-color: #51483d;
}
.reveal .controls div.up,
.reveal .controls div.up.enabled {
.reveal .controls div.navigate-up,
.reveal .controls div.navigate-up.enabled {
border-bottom-color: #51483d;
}
.reveal .controls div.down,
.reveal .controls div.down.enabled {
.reveal .controls div.navigate-down,
.reveal .controls div.navigate-down.enabled {
border-top-color: #51483d;
}
.reveal .controls div.left.enabled:hover {
.reveal .controls div.navigate-left.enabled:hover {
border-right-color: #8b7c69;
}
.reveal .controls div.right.enabled:hover {
.reveal .controls div.navigate-right.enabled:hover {
border-left-color: #8b7c69;
}
.reveal .controls div.up.enabled:hover {
.reveal .controls div.navigate-up.enabled:hover {
border-bottom-color: #8b7c69;
}
.reveal .controls div.down.enabled:hover {
.reveal .controls div.navigate-down.enabled:hover {
border-top-color: #8b7c69;
}

View file

@ -99,39 +99,39 @@ body {
/*********************************************
* NAVIGATION CONTROLS
*********************************************/
.reveal .controls div.left,
.reveal .controls div.left.enabled {
.reveal .controls div.navigate-left,
.reveal .controls div.navigate-left.enabled {
border-right-color: darkblue;
}
.reveal .controls div.right,
.reveal .controls div.right.enabled {
.reveal .controls div.navigate-right,
.reveal .controls div.navigate-right.enabled {
border-left-color: darkblue;
}
.reveal .controls div.up,
.reveal .controls div.up.enabled {
.reveal .controls div.navigate-up,
.reveal .controls div.navigate-up.enabled {
border-bottom-color: darkblue;
}
.reveal .controls div.down,
.reveal .controls div.down.enabled {
.reveal .controls div.navigate-down,
.reveal .controls div.navigate-down.enabled {
border-top-color: darkblue;
}
.reveal .controls div.left.enabled:hover {
.reveal .controls div.navigate-left.enabled:hover {
border-right-color: #0000f1;
}
.reveal .controls div.right.enabled:hover {
.reveal .controls div.navigate-right.enabled:hover {
border-left-color: #0000f1;
}
.reveal .controls div.up.enabled:hover {
.reveal .controls div.navigate-up.enabled:hover {
border-bottom-color: #0000f1;
}
.reveal .controls div.down.enabled:hover {
.reveal .controls div.navigate-down.enabled:hover {
border-top-color: #0000f1;
}

View file

@ -103,39 +103,39 @@ body {
/*********************************************
* NAVIGATION CONTROLS
*********************************************/
.reveal .controls div.left,
.reveal .controls div.left.enabled {
.reveal .controls div.navigate-left,
.reveal .controls div.navigate-left.enabled {
border-right-color: #3b759e;
}
.reveal .controls div.right,
.reveal .controls div.right.enabled {
.reveal .controls div.navigate-right,
.reveal .controls div.navigate-right.enabled {
border-left-color: #3b759e;
}
.reveal .controls div.up,
.reveal .controls div.up.enabled {
.reveal .controls div.navigate-up,
.reveal .controls div.navigate-up.enabled {
border-bottom-color: #3b759e;
}
.reveal .controls div.down,
.reveal .controls div.down.enabled {
.reveal .controls div.navigate-down,
.reveal .controls div.navigate-down.enabled {
border-top-color: #3b759e;
}
.reveal .controls div.left.enabled:hover {
.reveal .controls div.navigate-left.enabled:hover {
border-right-color: #74a7cb;
}
.reveal .controls div.right.enabled:hover {
.reveal .controls div.navigate-right.enabled:hover {
border-left-color: #74a7cb;
}
.reveal .controls div.up.enabled:hover {
.reveal .controls div.navigate-up.enabled:hover {
border-bottom-color: #74a7cb;
}
.reveal .controls div.down.enabled:hover {
.reveal .controls div.navigate-down.enabled:hover {
border-top-color: #74a7cb;
}

View file

@ -106,39 +106,39 @@ body {
* NAVIGATION CONTROLS
*********************************************/
.reveal .controls div.left,
.reveal .controls div.left.enabled {
.reveal .controls div.navigate-left,
.reveal .controls div.navigate-left.enabled {
border-right-color: $linkColor;
}
.reveal .controls div.right,
.reveal .controls div.right.enabled {
.reveal .controls div.navigate-right,
.reveal .controls div.navigate-right.enabled {
border-left-color: $linkColor;
}
.reveal .controls div.up,
.reveal .controls div.up.enabled {
.reveal .controls div.navigate-up,
.reveal .controls div.navigate-up.enabled {
border-bottom-color: $linkColor;
}
.reveal .controls div.down,
.reveal .controls div.down.enabled {
.reveal .controls div.navigate-down,
.reveal .controls div.navigate-down.enabled {
border-top-color: $linkColor;
}
.reveal .controls div.left.enabled:hover {
.reveal .controls div.navigate-left.enabled:hover {
border-right-color: $linkColorHover;
}
.reveal .controls div.right.enabled:hover {
.reveal .controls div.navigate-right.enabled:hover {
border-left-color: $linkColorHover;
}
.reveal .controls div.up.enabled:hover {
.reveal .controls div.navigate-up.enabled:hover {
border-bottom-color: $linkColorHover;
}
.reveal .controls div.down.enabled:hover {
.reveal .controls div.navigate-down.enabled:hover {
border-top-color: $linkColorHover;
}

View file

@ -61,9 +61,9 @@
<h2>Vertical Slides</h2>
<p>
Slides can be nested inside of other slides,
try pressing <a href="#/2/1">down</a>.
try pressing <a href="#" class="navigate-down">down</a>.
</p>
<a href="#/2/1" class="image">
<a href="#" class="image navigate-down">
<img width="178" height="238" src="https://s3.amazonaws.com/hakim-static/reveal-js/arrow.png" alt="Down arrow">
</a>
</section>
@ -181,20 +181,20 @@
will be added as a class to the document element when the slide is open. This lets you
apply broader style changes, like switching the background.
</p>
<a href="#/7/1" class="image">
<a href="#" class="image navigate-down">
<img width="178" height="238" src="https://s3.amazonaws.com/hakim-static/reveal-js/arrow.png" alt="Down arrow">
</a>
</section>
<section data-state="blackout">
<h2>"blackout"</h2>
<a href="#/7/2" class="image">
<a href="#" class="image navigate-down">
<img width="178" height="238" src="https://s3.amazonaws.com/hakim-static/reveal-js/arrow.png" alt="Down arrow">
</a>
</section>
<section data-state="soothe">
<h2>"soothe"</h2>
<a href="#/7/0" class="image">
<img width="178" height="238" src="https://s3.amazonaws.com/hakim-static/reveal-js/arrow.png" alt="Up arrow" style="-webkit-transform: rotate(180deg);">
<a href="#" class="image navigate-next">
<img width="178" height="238" src="https://s3.amazonaws.com/hakim-static/reveal-js/arrow.png" alt="Up arrow" style="-webkit-transform: rotate(-90deg);">
</a>
</section>
</section>
@ -340,7 +340,7 @@ function linkify( selector ) {
</div>
<script src="lib/js/head.min.js"></script>
<script src="js/reveal.min.js"></script>
<script src="js/reveal.js"></script>
<script>

View file

@ -153,10 +153,10 @@ var Reveal = (function(){
if( !dom.wrapper.querySelector( '.controls' ) && config.controls ) {
var controlsElement = document.createElement( 'aside' );
controlsElement.classList.add( 'controls' );
controlsElement.innerHTML = '<div class="left"></div>' +
'<div class="right"></div>' +
'<div class="up"></div>' +
'<div class="down"></div>';
controlsElement.innerHTML = '<div class="navigate-left"></div>' +
'<div class="navigate-right"></div>' +
'<div class="navigate-up"></div>' +
'<div class="navigate-down"></div>';
dom.wrapper.appendChild( controlsElement );
}
@ -180,10 +180,14 @@ var Reveal = (function(){
if ( config.controls ) {
dom.controls = document.querySelector( '.reveal .controls' );
dom.controlsLeft = document.querySelector( '.reveal .controls .left' );
dom.controlsRight = document.querySelector( '.reveal .controls .right' );
dom.controlsUp = document.querySelector( '.reveal .controls .up' );
dom.controlsDown = document.querySelector( '.reveal .controls .down' );
// There can be multiple instances of controls throughout the page
dom.controlsLeft = toArray( document.querySelectorAll( '.navigate-left' ) );
dom.controlsRight = toArray( document.querySelectorAll( '.navigate-right' ) );
dom.controlsUp = toArray( document.querySelectorAll( '.navigate-up' ) );
dom.controlsDown = toArray( document.querySelectorAll( '.navigate-down' ) );
dom.controlsPrev = toArray( document.querySelectorAll( '.navigate-prev' ) );
dom.controlsNext = toArray( document.querySelectorAll( '.navigate-next' ) );
}
}
@ -354,10 +358,12 @@ var Reveal = (function(){
}
if ( config.controls && dom.controls ) {
dom.controlsLeft.addEventListener( 'click', preventAndForward( navigateLeft ), false );
dom.controlsRight.addEventListener( 'click', preventAndForward( navigateRight ), false );
dom.controlsUp.addEventListener( 'click', preventAndForward( navigateUp ), false );
dom.controlsDown.addEventListener( 'click', preventAndForward( navigateDown ), false );
dom.controlsLeft.forEach( function( el ) { el.addEventListener( 'click', preventAndForward( navigateLeft ), false ); } );
dom.controlsRight.forEach( function( el ) { el.addEventListener( 'click', preventAndForward( navigateRight ), false ); } );
dom.controlsUp.forEach( function( el ) { el.addEventListener( 'click', preventAndForward( navigateUp ), false ); } );
dom.controlsDown.forEach( function( el ) { el.addEventListener( 'click', preventAndForward( navigateDown ), false ); } );
dom.controlsPrev.forEach( function( el ) { el.addEventListener( 'click', preventAndForward( navigatePrev ), false ); } );
dom.controlsNext.forEach( function( el ) { el.addEventListener( 'click', preventAndForward( navigateNext ), false ); } );
}
}
@ -377,10 +383,12 @@ var Reveal = (function(){
}
if ( config.controls && dom.controls ) {
dom.controlsLeft.removeEventListener( 'click', preventAndForward( navigateLeft ), false );
dom.controlsRight.removeEventListener( 'click', preventAndForward( navigateRight ), false );
dom.controlsUp.removeEventListener( 'click', preventAndForward( navigateUp ), false );
dom.controlsDown.removeEventListener( 'click', preventAndForward( navigateDown ), false );
dom.controlsLeft.forEach( function( el ) { el.removeEventListener( 'click', preventAndForward( navigateLeft ), false ); } );
dom.controlsRight.forEach( function( el ) { el.removeEventListener( 'click', preventAndForward( navigateRight ), false ); } );
dom.controlsUp.forEach( function( el ) { el.removeEventListener( 'click', preventAndForward( navigateUp ), false ); } );
dom.controlsDown.forEach( function( el ) { el.removeEventListener( 'click', preventAndForward( navigateDown ), false ); } );
dom.controlsPrev.forEach( function( el ) { el.removeEventListener( 'click', preventAndForward( navigatePrev ), false ); } );
dom.controlsNext.forEach( function( el ) { el.removeEventListener( 'click', preventAndForward( navigateNext ), false ); } );
}
}
@ -394,6 +402,19 @@ var Reveal = (function(){
}
}
/**
* Converts the target object to an array.
*/
function toArray( o ) {
return Array.prototype.slice.call( o );
}
function each( targets, method, args ) {
targets.forEach( function( el ) {
el[method].apply( el, args );
} );
}
/**
* Measures the distance in pixels between point a
* and point b.
@ -865,15 +886,23 @@ var Reveal = (function(){
var routes = availableRoutes();
// Remove the 'enabled' class from all directions
[ dom.controlsLeft, dom.controlsRight, dom.controlsUp, dom.controlsDown ].forEach( function( node ) {
dom.controlsLeft.concat( dom.controlsRight )
.concat( dom.controlsUp )
.concat( dom.controlsDown )
.concat( dom.controlsPrev )
.concat( dom.controlsNext ).forEach( function( node ) {
node.classList.remove( 'enabled' );
} );
// Add the 'enabled' class to the available routes
if( routes.left ) dom.controlsLeft.classList.add( 'enabled' );
if( routes.right ) dom.controlsRight.classList.add( 'enabled' );
if( routes.up ) dom.controlsUp.classList.add( 'enabled' );
if( routes.down ) dom.controlsDown.classList.add( 'enabled' );
if( routes.left ) dom.controlsLeft.forEach( function( el ) { el.classList.add( 'enabled' ); } );
if( routes.right ) dom.controlsRight.forEach( function( el ) { el.classList.add( 'enabled' ); } );
if( routes.up ) dom.controlsUp.forEach( function( el ) { el.classList.add( 'enabled' ); } );
if( routes.down ) dom.controlsDown.forEach( function( el ) { el.classList.add( 'enabled' ); } );
// Prev/next buttons
if( routes.left || routes.up ) dom.controlsPrev.forEach( function( el ) { el.classList.add( 'enabled' ); } );
if( routes.right || routes.down ) dom.controlsNext.forEach( function( el ) { el.classList.add( 'enabled' ); } );
}
}

163
js/reveal.min.js vendored
View file

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