!function(e,t){"function"==typeof define&&define.amd?define(t):"object"==typeof exports?module.exports=t():e.ScrollMagic=t()}(this,function(){"use strict";var e=function(){};e.version="2.0.5",window.addEventListener("mousewheel",function(){});var t="data-scrollmagic-pin-spacer";e.Controller=function(r){var o,s,a="ScrollMagic.Controller",l="FORWARD",c="REVERSE",u="PAUSED",f=n.defaults,d=this,h=i.extend({},f,r),g=[],p=!1,v=0,m=u,w=!0,y=0,S=!0,b=function(){for(var e in h)f.hasOwnProperty(e)||delete h[e];if(h.container=i.get.elements(h.container)[0],!h.container)throw a+" init failed.";w=h.container===window||h.container===document.body||!document.body.contains(h.container),w&&(h.container=window),y=z(),h.container.addEventListener("resize",T),h.container.addEventListener("scroll",T),h.refreshInterval=parseInt(h.refreshInterval)||f.refreshInterval,E()},E=function(){h.refreshInterval>0&&(s=window.setTimeout(A,h.refreshInterval))},x=function(){return h.vertical?i.get.scrollTop(h.container):i.get.scrollLeft(h.container)},z=function(){return h.vertical?i.get.height(h.container):i.get.width(h.container)},C=this._setScrollPos=function(e){h.vertical?w?window.scrollTo(i.get.scrollLeft(),e):h.container.scrollTop=e:w?window.scrollTo(e,i.get.scrollTop()):h.container.scrollLeft=e},F=function(){if(S&&p){var e=i.type.Array(p)?p:g.slice(0);p=!1;var t=v;v=d.scrollPos();var n=v-t;0!==n&&(m=n>0?l:c),m===c&&e.reverse(),e.forEach(function(e){e.update(!0)})}},L=function(){o=i.rAF(F)},T=function(e){"resize"==e.type&&(y=z(),m=u),p!==!0&&(p=!0,L())},A=function(){if(!w&&y!=z()){var e;try{e=new Event("resize",{bubbles:!1,cancelable:!1})}catch(t){e=document.createEvent("Event"),e.initEvent("resize",!1,!1)}h.container.dispatchEvent(e)}g.forEach(function(e){e.refresh()}),E()};this._options=h;var O=function(e){if(e.length<=1)return e;var t=e.slice(0);return t.sort(function(e,t){return e.scrollOffset()>t.scrollOffset()?1:-1}),t};return this.addScene=function(t){if(i.type.Array(t))t.forEach(function(e){d.addScene(e)});else if(t instanceof e.Scene)if(t.controller()!==d)t.addTo(d);else if(g.indexOf(t)<0){g.push(t),g=O(g),t.on("shift.controller_sort",function(){g=O(g)});for(var n in h.globalSceneOptions)t[n]&&t[n].call(t,h.globalSceneOptions[n])}return d},this.removeScene=function(e){if(i.type.Array(e))e.forEach(function(e){d.removeScene(e)});else{var t=g.indexOf(e);t>-1&&(e.off("shift.controller_sort"),g.splice(t,1),e.remove())}return d},this.updateScene=function(t,n){return i.type.Array(t)?t.forEach(function(e){d.updateScene(e,n)}):n?t.update(!0):p!==!0&&t instanceof e.Scene&&(p=p||[],-1==p.indexOf(t)&&p.push(t),p=O(p),L()),d},this.update=function(e){return T({type:"resize"}),e&&F(),d},this.scrollTo=function(n,r){if(i.type.Number(n))C.call(h.container,n,r);else if(n instanceof e.Scene)n.controller()===d&&d.scrollTo(n.scrollOffset(),r);else if(i.type.Function(n))C=n;else{var o=i.get.elements(n)[0];if(o){for(;o.parentNode.hasAttribute(t);)o=o.parentNode;var s=h.vertical?"top":"left",a=i.get.offset(h.container),l=i.get.offset(o);w||(a[s]-=d.scrollPos()),d.scrollTo(l[s]-a[s],r)}}return d},this.scrollPos=function(e){return arguments.length?(i.type.Function(e)&&(x=e),d):x.call(d)},this.info=function(e){var t={size:y,vertical:h.vertical,scrollPos:v,scrollDirection:m,container:h.container,isDocument:w};return arguments.length?void 0!==t[e]?t[e]:void 0:t},this.loglevel=function(){return d},this.enabled=function(e){return arguments.length?(S!=e&&(S=!!e,d.updateScene(g,!0)),d):S},this.destroy=function(e){window.clearTimeout(s);for(var t=g.length;t--;)g[t].destroy(e);return h.container.removeEventListener("resize",T),h.container.removeEventListener("scroll",T),i.cAF(o),null},b(),d};var n={defaults:{container:window,vertical:!0,globalSceneOptions:{},loglevel:2,refreshInterval:100}};e.Controller.addOption=function(e,t){n.defaults[e]=t},e.Controller.extend=function(t){var n=this;e.Controller=function(){return n.apply(this,arguments),this.$super=i.extend({},this),t.apply(this,arguments)||this},i.extend(e.Controller,n),e.Controller.prototype=n.prototype,e.Controller.prototype.constructor=e.Controller},e.Scene=function(n){var o,s,a="BEFORE",l="DURING",c="AFTER",u=r.defaults,f=this,d=i.extend({},u,n),h=a,g=0,p={start:0,end:0},v=0,m=!0,w=function(){for(var e in d)u.hasOwnProperty(e)||delete d[e];for(var t in u)L(t);C()},y={};this.on=function(e,t){return i.type.Function(t)&&(e=e.trim().split(" "),e.forEach(function(e){var n=e.split("."),r=n[0],i=n[1];"*"!=r&&(y[r]||(y[r]=[]),y[r].push({namespace:i||"",callback:t}))})),f},this.off=function(e,t){return e?(e=e.trim().split(" "),e.forEach(function(e){var n=e.split("."),r=n[0],i=n[1]||"",o="*"===r?Object.keys(y):[r];o.forEach(function(e){for(var n=y[e]||[],r=n.length;r--;){var o=n[r];!o||i!==o.namespace&&"*"!==i||t&&t!=o.callback||n.splice(r,1)}n.length||delete y[e]})}),f):f},this.trigger=function(t,n){if(t){var r=t.trim().split("."),i=r[0],o=r[1],s=y[i];s&&s.forEach(function(t){o&&o!==t.namespace||t.callback.call(f,new e.Event(i,t.namespace,f,n))})}return f},f.on("change.internal",function(e){"loglevel"!==e.what&&"tweenChanges"!==e.what&&("triggerElement"===e.what?E():"reverse"===e.what&&f.update())}).on("shift.internal",function(){S(),f.update()}),this.addTo=function(t){return t instanceof e.Controller&&s!=t&&(s&&s.removeScene(f),s=t,C(),b(!0),E(!0),S(),s.info("container").addEventListener("resize",x),t.addScene(f),f.trigger("add",{controller:s}),f.update()),f},this.enabled=function(e){return arguments.length?(m!=e&&(m=!!e,f.update(!0)),f):m},this.remove=function(){if(s){s.info("container").removeEventListener("resize",x);var e=s;s=void 0,e.removeScene(f),f.trigger("remove")}return f},this.destroy=function(e){return f.trigger("destroy",{reset:e}),f.remove(),f.off("*.*"),null},this.update=function(e){if(s)if(e)if(s.enabled()&&m){var t,n=s.info("scrollPos");t=d.duration>0?(n-p.start)/(p.end-p.start):n>=p.start?1:0,f.trigger("update",{startPos:p.start,endPos:p.end,scrollPos:n}),f.progress(t)}else T&&h===l&&O(!0);else s.updateScene(f,!1);return f},this.refresh=function(){return b(),E(),f},this.progress=function(e){if(arguments.length){var t=!1,n=h,r=s?s.info("scrollDirection"):"PAUSED",i=d.reverse||e>=g;if(0===d.duration?(t=g!=e,g=1>e&&i?0:1,h=0===g?a:l):0>e&&h!==a&&i?(g=0,h=a,t=!0):e>=0&&1>e&&i?(g=e,h=l,t=!0):e>=1&&h!==c?(g=1,h=c,t=!0):h!==l||i||O(),t){var o={progress:g,state:h,scrollDirection:r},u=h!=n,p=function(e){f.trigger(e,o)};u&&n!==l&&(p("enter"),p(n===a?"start":"end")),p("progress"),u&&h!==l&&(p(h===a?"start":"end"),p("leave"))}return f}return g};var S=function(){p={start:v+d.offset},s&&d.triggerElement&&(p.start-=s.info("size")*d.triggerHook),p.end=p.start+d.duration},b=function(e){if(o){var t="duration";F(t,o.call(f))&&!e&&(f.trigger("change",{what:t,newval:d[t]}),f.trigger("shift",{reason:t}))}},E=function(e){var n=0,r=d.triggerElement;if(s&&r){for(var o=s.info(),a=i.get.offset(o.container),l=o.vertical?"top":"left";r.parentNode.hasAttribute(t);)r=r.parentNode;var c=i.get.offset(r);o.isDocument||(a[l]-=s.scrollPos()),n=c[l]-a[l]}var u=n!=v;v=n,u&&!e&&f.trigger("shift",{reason:"triggerElementPosition"})},x=function(){d.triggerHook>0&&f.trigger("shift",{reason:"containerResize"})},z=i.extend(r.validate,{duration:function(e){if(i.type.String(e)&&e.match(/^(\.|\d)*\d+%$/)){var t=parseFloat(e)/100;e=function(){return s?s.info("size")*t:0}}if(i.type.Function(e)){o=e;try{e=parseFloat(o())}catch(t){e=-1}}if(e=parseFloat(e),!i.type.Number(e)||0>e)throw o?(o=void 0,0):0;return e}}),C=function(e){e=arguments.length?[e]:Object.keys(z),e.forEach(function(e){var t;if(z[e])try{t=z[e](d[e])}catch(n){t=u[e]}finally{d[e]=t}})},F=function(e,t){var n=!1,r=d[e];return d[e]!=t&&(d[e]=t,C(e),n=r!=d[e]),n},L=function(e){f[e]||(f[e]=function(t){return arguments.length?("duration"===e&&(o=void 0),F(e,t)&&(f.trigger("change",{what:e,newval:d[e]}),r.shifts.indexOf(e)>-1&&f.trigger("shift",{reason:e})),f):d[e]})};this.controller=function(){return s},this.state=function(){return h},this.scrollOffset=function(){return p.start},this.triggerPosition=function(){var e=d.offset;return s&&(e+=d.triggerElement?v:s.info("size")*f.triggerHook()),e};var T,A;f.on("shift.internal",function(e){var t="duration"===e.reason;(h===c&&t||h===l&&0===d.duration)&&O(),t&&_()}).on("progress.internal",function(){O()}).on("add.internal",function(){_()}).on("destroy.internal",function(e){f.removePin(e.reset)});var O=function(e){if(T&&s){var t=s.info(),n=A.spacer.firstChild;if(e||h!==l){var r={position:A.inFlow?"relative":"absolute",top:0,left:0},o=i.css(n,"position")!=r.position;A.pushFollowers?d.duration>0&&(h===c&&0===parseFloat(i.css(A.spacer,"padding-top"))?o=!0:h===a&&0===parseFloat(i.css(A.spacer,"padding-bottom"))&&(o=!0)):r[t.vertical?"top":"left"]=d.duration*g,i.css(n,r),o&&_()}else{"fixed"!=i.css(n,"position")&&(i.css(n,{position:"fixed"}),_());var u=i.get.offset(A.spacer,!0),f=d.reverse||0===d.duration?t.scrollPos-p.start:Math.round(g*d.duration*10)/10;u[t.vertical?"top":"left"]+=f,i.css(A.spacer.firstChild,{top:u.top,left:u.left})}}},_=function(){if(T&&s&&A.inFlow){var e=h===l,t=s.info("vertical"),n=A.spacer.firstChild,r=i.isMarginCollapseType(i.css(A.spacer,"display")),o={};A.relSize.width||A.relSize.autoFullWidth?e?i.css(T,{width:i.get.width(A.spacer)}):i.css(T,{width:"100%"}):(o["min-width"]=i.get.width(t?T:n,!0,!0),o.width=e?o["min-width"]:"auto"),A.relSize.height?e?i.css(T,{height:i.get.height(A.spacer)-(A.pushFollowers?d.duration:0)}):i.css(T,{height:"100%"}):(o["min-height"]=i.get.height(t?n:T,!0,!r),o.height=e?o["min-height"]:"auto"),A.pushFollowers&&(o["padding"+(t?"Top":"Left")]=d.duration*g,o["padding"+(t?"Bottom":"Right")]=d.duration*(1-g)),i.css(A.spacer,o)}},N=function(){s&&T&&h===l&&!s.info("isDocument")&&O()},P=function(){s&&T&&h===l&&((A.relSize.width||A.relSize.autoFullWidth)&&i.get.width(window)!=i.get.width(A.spacer.parentNode)||A.relSize.height&&i.get.height(window)!=i.get.height(A.spacer.parentNode))&&_()},D=function(e){s&&T&&h===l&&!s.info("isDocument")&&(e.preventDefault(),s._setScrollPos(s.info("scrollPos")-((e.wheelDelta||e[s.info("vertical")?"wheelDeltaY":"wheelDeltaX"])/3||30*-e.detail)))};this.setPin=function(e,n){var r={pushFollowers:!0,spacerClass:"scrollmagic-pin-spacer"};if(n=i.extend({},r,n),e=i.get.elements(e)[0],!e)return f;if("fixed"===i.css(e,"position"))return f;if(T){if(T===e)return f;f.removePin()}T=e;var o=T.parentNode.style.display,s=["top","left","bottom","right","margin","marginLeft","marginRight","marginTop","marginBottom"];T.parentNode.style.display="none";var a="absolute"!=i.css(T,"position"),l=i.css(T,s.concat(["display"])),c=i.css(T,["width","height"]);T.parentNode.style.display=o,!a&&n.pushFollowers&&(n.pushFollowers=!1);var u=T.parentNode.insertBefore(document.createElement("div"),T),d=i.extend(l,{position:a?"relative":"absolute",boxSizing:"content-box",mozBoxSizing:"content-box",webkitBoxSizing:"content-box"});if(a||i.extend(d,i.css(T,["width","height"])),i.css(u,d),u.setAttribute(t,""),i.addClass(u,n.spacerClass),A={spacer:u,relSize:{width:"%"===c.width.slice(-1),height:"%"===c.height.slice(-1),autoFullWidth:"auto"===c.width&&a&&i.isMarginCollapseType(l.display)},pushFollowers:n.pushFollowers,inFlow:a},!T.___origStyle){T.___origStyle={};var h=T.style,g=s.concat(["width","height","position","boxSizing","mozBoxSizing","webkitBoxSizing"]);g.forEach(function(e){T.___origStyle[e]=h[e]||""})}return A.relSize.width&&i.css(u,{width:c.width}),A.relSize.height&&i.css(u,{height:c.height}),u.appendChild(T),i.css(T,{position:a?"relative":"absolute",margin:"auto",top:"auto",left:"auto",bottom:"auto",right:"auto"}),(A.relSize.width||A.relSize.autoFullWidth)&&i.css(T,{boxSizing:"border-box",mozBoxSizing:"border-box",webkitBoxSizing:"border-box"}),window.addEventListener("scroll",N),window.addEventListener("resize",N),window.addEventListener("resize",P),T.addEventListener("mousewheel",D),T.addEventListener("DOMMouseScroll",D),O(),f},this.removePin=function(e){if(T){if(h===l&&O(!0),e||!s){var n=A.spacer.firstChild;if(n.hasAttribute(t)){var r=A.spacer.style,o=["margin","marginLeft","marginRight","marginTop","marginBottom"];margins={},o.forEach(function(e){margins[e]=r[e]||""}),i.css(n,margins)}A.spacer.parentNode.insertBefore(n,A.spacer),A.spacer.parentNode.removeChild(A.spacer),T.parentNode.hasAttribute(t)||(i.css(T,T.___origStyle),delete T.___origStyle)}window.removeEventListener("scroll",N),window.removeEventListener("resize",N),window.removeEventListener("resize",P),T.removeEventListener("mousewheel",D),T.removeEventListener("DOMMouseScroll",D),T=void 0}return f};var R,k=[];return f.on("destroy.internal",function(e){f.removeClassToggle(e.reset)}),this.setClassToggle=function(e,t){var n=i.get.elements(e);return 0!==n.length&&i.type.String(t)?(k.length>0&&f.removeClassToggle(),R=t,k=n,f.on("enter.internal_class leave.internal_class",function(e){var t="enter"===e.type?i.addClass:i.removeClass;k.forEach(function(e){t(e,R)})}),f):f},this.removeClassToggle=function(e){return e&&k.forEach(function(e){i.removeClass(e,R)}),f.off("start.internal_class end.internal_class"),R=void 0,k=[],f},w(),f};var r={defaults:{duration:0,offset:0,triggerElement:void 0,triggerHook:.5,reverse:!0,loglevel:2},validate:{offset:function(e){if(e=parseFloat(e),!i.type.Number(e))throw 0;return e},triggerElement:function(e){if(e=e||void 0){var t=i.get.elements(e)[0];if(!t)throw 0;e=t}return e},triggerHook:function(e){var t={onCenter:.5,onEnter:1,onLeave:0};if(i.type.Number(e))e=Math.max(0,Math.min(parseFloat(e),1));else{if(!(e in t))throw 0;e=t[e]}return e},reverse:function(e){return!!e}},shifts:["duration","offset","triggerHook"]};e.Scene.addOption=function(e,t,n,i){e in r.defaults||(r.defaults[e]=t,r.validate[e]=n,i&&r.shifts.push(e))},e.Scene.extend=function(t){var n=this;e.Scene=function(){return n.apply(this,arguments),this.$super=i.extend({},this),t.apply(this,arguments)||this},i.extend(e.Scene,n),e.Scene.prototype=n.prototype,e.Scene.prototype.constructor=e.Scene},e.Event=function(e,t,n,r){r=r||{};for(var i in r)this[i]=r[i];return this.type=e,this.target=this.currentTarget=n,this.namespace=t||"",this.timeStamp=this.timestamp=Date.now(),this};var i=e._util=function(e){var t,n={},r=function(e){return parseFloat(e)||0},i=function(t){return t.currentStyle?t.currentStyle:e.getComputedStyle(t)},o=function(t,n,o,s){if(n=n===document?e:n,n===e)s=!1;else if(!f.DomElement(n))return 0;t=t.charAt(0).toUpperCase()+t.substr(1).toLowerCase();var a=(o?n["offset"+t]||n["outer"+t]:n["client"+t]||n["inner"+t])||0;if(o&&s){var l=i(n);a+="Height"===t?r(l.marginTop)+r(l.marginBottom):r(l.marginLeft)+r(l.marginRight)}return a},s=function(e){return e.replace(/^[^a-z]+([a-z])/g,"$1").replace(/-([a-z])/g,function(e){return e[1].toUpperCase()})};n.extend=function(e){for(e=e||{},t=1;t<arguments.length;t++)if(arguments[t])for(var n in arguments[t])arguments[t].hasOwnProperty(n)&&(e[n]=arguments[t][n]);return e},n.isMarginCollapseType=function(e){return["block","flex","list-item","table","-webkit-box"].indexOf(e)>-1};var a=0,l=["ms","moz","webkit","o"],c=e.requestAnimationFrame,u=e.cancelAnimationFrame;for(t=0;!c&&t<l.length;++t)c=e[l[t]+"RequestAnimationFrame"],u=e[l[t]+"CancelAnimationFrame"]||e[l[t]+"CancelRequestAnimationFrame"];c||(c=function(t){var n=(new Date).getTime(),r=Math.max(0,16-(n-a)),i=e.setTimeout(function(){t(n+r)},r);return a=n+r,i}),u||(u=function(t){e.clearTimeout(t)}),n.rAF=c.bind(e),n.cAF=u.bind(e);var f=n.type=function(e){return Object.prototype.toString.call(e).replace(/^\[object (.+)\]$/,"$1").toLowerCase()};f.String=function(e){return"string"===f(e)},f.Function=function(e){return"function"===f(e)},f.Array=function(e){return Array.isArray(e)},f.Number=function(e){return!f.Array(e)&&e-parseFloat(e)+1>=0},f.DomElement=function(e){return"object"==typeof HTMLElement?e instanceof HTMLElement:e&&"object"==typeof e&&null!==e&&1===e.nodeType&&"string"==typeof e.nodeName};var d=n.get={};return d.elements=function(t){var n=[];if(f.String(t))try{t=document.querySelectorAll(t)}catch(e){return n}if("nodelist"===f(t)||f.Array(t))for(var r=0,i=n.length=t.length;i>r;r++){var o=t[r];n[r]=f.DomElement(o)?o:d.elements(o)}else(f.DomElement(t)||t===document||t===e)&&(n=[t]);return n},d.scrollTop=function(t){return t&&"number"==typeof t.scrollTop?t.scrollTop:e.pageYOffset||0},d.scrollLeft=function(t){return t&&"number"==typeof t.scrollLeft?t.scrollLeft:e.pageXOffset||0},d.width=function(e,t,n){return o("width",e,t,n)},d.height=function(e,t,n){return o("height",e,t,n)},d.offset=function(e,t){var n={top:0,left:0};if(e&&e.getBoundingClientRect){var r=e.getBoundingClientRect();n.top=r.top,n.left=r.left,t||(n.top+=d.scrollTop(),n.left+=d.scrollLeft())}return n},n.addClass=function(e,t){t&&(e.classList?e.classList.add(t):e.className+=" "+t)},n.removeClass=function(e,t){t&&(e.classList?e.classList.remove(t):e.className=e.className.replace(RegExp("(^|\\b)"+t.split(" ").join("|")+"(\\b|$)","gi")," "))},n.css=function(e,t){if(f.String(t))return i(e)[s(t)];if(f.Array(t)){var n={},r=i(e);return t.forEach(function(e){n[e]=r[s(e)]}),n}for(var o in t){var a=t[o];a==parseFloat(a)&&(a+="px"),e.style[s(o)]=a}},n}(window||{});return e});
!function(e,r){"function"==typeof define&&define.amd?define(["ScrollMagic"],r):r("object"==typeof exports?require("scrollmagic"):e.ScrollMagic||e.jQuery&&e.jQuery.ScrollMagic)}(this,function(e){"use strict";var r="0.85em",t="9999",i=15,o=e._util,n=0;e.Scene.extend(function(){var e,r=this;r.addIndicators=function(t){if(!e){var i={name:"",indent:0,parent:void 0,colorStart:"green",colorEnd:"red",colorTrigger:"blue"};t=o.extend({},i,t),n++,e=new s(r,t),r.on("add.plugin_addIndicators",e.add),r.on("remove.plugin_addIndicators",e.remove),r.on("destroy.plugin_addIndicators",r.removeIndicators),r.controller()&&e.add()}return r},r.removeIndicators=function(){return e&&(e.remove(),this.off("*.plugin_addIndicators"),e=void 0),r}}),e.Controller.addOption("addIndicators",!1),e.Controller.extend(function(){var r=this,t=r.info(),n=t.container,s=t.isDocument,d=t.vertical,a={groups:[]};this._indicators=a;var g=function(){a.updateBoundsPositions()},p=function(){a.updateTriggerGroupPositions()};return n.addEventListener("resize",p),s||(window.addEventListener("resize",p),window.addEventListener("scroll",p)),n.addEventListener("resize",g),n.addEventListener("scroll",g),this._indicators.updateBoundsPositions=function(e){for(var r,t,s,g=e?[o.extend({},e.triggerGroup,{members:[e]})]:a.groups,p=g.length,u={},c=d?"left":"top",l=d?"width":"height",f=d?o.get.scrollLeft(n)+o.get.width(n)-i:o.get.scrollTop(n)+o.get.height(n)-i;p--;)for(s=g[p],r=s.members.length,t=o.get[l](s.element.firstChild);r--;)u[c]=f-t,o.css(s.members[r].bounds,u)},this._indicators.updateTriggerGroupPositions=function(e){for(var t,g,p,u,c,l=e?[e]:a.groups,f=l.length,m=s?document.body:n,h=s?{top:0,left:0}:o.get.offset(m,!0),v=d?o.get.width(n)-i:o.get.height(n)-i,b=d?"width":"height",G=d?"Y":"X";f--;)t=l[f],g=t.element,p=t.triggerHook*r.info("size"),u=o.get[b](g.firstChild.firstChild),c=p>u?"translate"+G+"(-100%)":"",o.css(g,{top:h.top+(d?p:v-t.members[0].options.indent),left:h.left+(d?v-t.members[0].options.indent:p)}),o.css(g.firstChild.firstChild,{"-ms-transform":c,"-webkit-transform":c,transform:c})},this._indicators.updateTriggerGroupLabel=function(e){var r="trigger"+(e.members.length>1?"":" "+e.members[0].options.name),t=e.element.firstChild.firstChild,i=t.textContent!==r;i&&(t.textContent=r,d&&a.updateBoundsPositions())},this.addScene=function(t){this._options.addIndicators&&t instanceof e.Scene&&t.controller()===r&&t.addIndicators(),this.$super.addScene.apply(this,arguments)},this.destroy=function(){n.removeEventListener("resize",p),s||(window.removeEventListener("resize",p),window.removeEventListener("scroll",p)),n.removeEventListener("resize",g),n.removeEventListener("scroll",g),this.$super.destroy.apply(this,arguments)},r});var s=function(e,r){var t,i,s=this,a=d.bounds(),g=d.start(r.colorStart),p=d.end(r.colorEnd),u=r.parent&&o.get.elements(r.parent)[0];r.name=r.name||n,g.firstChild.textContent+=" "+r.name,p.textContent+=" "+r.name,a.appendChild(g),a.appendChild(p),s.options=r,s.bounds=a,s.triggerGroup=void 0,this.add=function(){i=e.controller(),t=i.info("vertical");var r=i.info("isDocument");u||(u=r?document.body:i.info("container")),r||"static"!==o.css(u,"position")||o.css(u,{position:"relative"}),e.on("change.plugin_addIndicators",l),e.on("shift.plugin_addIndicators",c),G(),h(),setTimeout(function(){i._indicators.updateBoundsPositions(s)},0)},this.remove=function(){if(s.triggerGroup){if(e.off("change.plugin_addIndicators",l),e.off("shift.plugin_addIndicators",c),s.triggerGroup.members.length>1){var r=s.triggerGroup;r.members.splice(r.members.indexOf(s),1),i._indicators.updateTriggerGroupLabel(r),i._indicators.updateTriggerGroupPositions(r),s.triggerGroup=void 0}else b();m()}};var c=function(){h()},l=function(e){"triggerHook"===e.what&&G()},f=function(){var e=i.info("vertical");o.css(g.firstChild,{"border-bottom-width":e?1:0,"border-right-width":e?0:1,bottom:e?-1:r.indent,right:e?r.indent:-1,padding:e?"0 8px":"2px 4px"}),o.css(p,{"border-top-width":e?1:0,"border-left-width":e?0:1,top:e?"100%":"",right:e?r.indent:"",bottom:e?"":r.indent,left:e?"":"100%",padding:e?"0 8px":"2px 4px"}),u.appendChild(a)},m=function(){a.parentNode.removeChild(a)},h=function(){a.parentNode!==u&&f();var r={};r[t?"top":"left"]=e.triggerPosition(),r[t?"height":"width"]=e.duration(),o.css(a,r),o.css(p,{display:e.duration()>0?"":"none"})},v=function(){var n=d.trigger(r.colorTrigger),a={};a[t?"right":"bottom"]=0,a[t?"border-top-width":"border-left-width"]=1,o.css(n.firstChild,a),o.css(n.firstChild.firstChild,{padding:t?"0 8px 3px 8px":"3px 4px"}),document.body.appendChild(n);var g={triggerHook:e.triggerHook(),element:n,members:[s]};i._indicators.groups.push(g),s.triggerGroup=g,i._indicators.updateTriggerGroupLabel(g),i._indicators.updateTriggerGroupPositions(g)},b=function(){i._indicators.groups.splice(i._indicators.groups.indexOf(s.triggerGroup),1),s.triggerGroup.element.parentNode.removeChild(s.triggerGroup.element),s.triggerGroup=void 0},G=function(){var r=e.triggerHook(),t=1e-4;if(!(s.triggerGroup&&Math.abs(s.triggerGroup.triggerHook-r)<t)){for(var o,n=i._indicators.groups,d=n.length;d--;)if(o=n[d],Math.abs(o.triggerHook-r)<t)return s.triggerGroup&&(1===s.triggerGroup.members.length?b():(s.triggerGroup.members.splice(s.triggerGroup.members.indexOf(s),1),i._indicators.updateTriggerGroupLabel(s.triggerGroup),i._indicators.updateTriggerGroupPositions(s.triggerGroup))),o.members.push(s),s.triggerGroup=o,void i._indicators.updateTriggerGroupLabel(o);if(s.triggerGroup){if(1===s.triggerGroup.members.length)return s.triggerGroup.triggerHook=r,void i._indicators.updateTriggerGroupPositions(s.triggerGroup);s.triggerGroup.members.splice(s.triggerGroup.members.indexOf(s),1),i._indicators.updateTriggerGroupLabel(s.triggerGroup),i._indicators.updateTriggerGroupPositions(s.triggerGroup),s.triggerGroup=void 0}v()}}},d={start:function(e){var r=document.createElement("div");r.textContent="start",o.css(r,{position:"absolute",overflow:"visible","border-width":0,"border-style":"solid",color:e,"border-color":e});var t=document.createElement("div");return o.css(t,{position:"absolute",overflow:"visible",width:0,height:0}),t.appendChild(r),t},end:function(e){var r=document.createElement("div");return r.textContent="end",o.css(r,{position:"absolute",overflow:"visible","border-width":0,"border-style":"solid",color:e,"border-color":e}),r},bounds:function(){var e=document.createElement("div");return o.css(e,{position:"absolute",overflow:"visible","white-space":"nowrap","pointer-events":"none","font-size":r}),e.style.zIndex=t,e},trigger:function(e){var i=document.createElement("div");i.textContent="trigger",o.css(i,{position:"relative"});var n=document.createElement("div");o.css(n,{position:"absolute",overflow:"visible","border-width":0,"border-style":"solid",color:e,"border-color":e}),n.appendChild(i);var s=document.createElement("div");return o.css(s,{position:"fixed",overflow:"visible","white-space":"nowrap","pointer-events":"none","font-size":r}),s.style.zIndex=t,s.appendChild(n),s}}});
!function(e,n){"function"==typeof define&&define.amd?define(["ScrollMagic","TweenMax","TimelineMax"],n):"object"==typeof exports?(require("gsap"),n(require("scrollmagic"),TweenMax,TimelineMax)):n(e.ScrollMagic||e.jQuery&&e.jQuery.ScrollMagic,e.TweenMax||e.TweenLite,e.TimelineMax||e.TimelineLite)}(this,function(e,n,r){"use strict";e.Scene.addOption("tweenChanges",!1,function(e){return!!e}),e.Scene.extend(function(){var e,t=this;t.on("progress.plugin_gsap",function(){i()}),t.on("destroy.plugin_gsap",function(e){t.removeTween(e.reset)});var i=function(){if(e){var n=t.progress(),r=t.state();e.repeat&&-1===e.repeat()?"DURING"===r&&e.paused()?e.play():"DURING"===r||e.paused()||e.pause():n!=e.progress()&&(0===t.duration()?n>0?e.play():e.reverse():t.tweenChanges()&&e.tweenTo?e.tweenTo(n*e.duration()):e.progress(n).pause())}};t.setTween=function(o,a,s){var u;arguments.length>1&&(arguments.length<3&&(s=a,a=1),o=n.to(o,a,s));try{u=r?new r({smoothChildTiming:!0}).add(o):o,u.pause()}catch(e){return t}return e&&t.removeTween(),e=u,o.repeat&&-1===o.repeat()&&(e.repeat(-1),e.yoyo(o.yoyo())),i(),t},t.removeTween=function(n){return e&&(n&&e.progress(0).pause(),e.kill(),e=void 0),t}})});
!function(t,e){"object"==typeof module&&module.exports?module.exports=e():t.EvEmitter=e()}("undefined"!=typeof window?window:this,(function(){function t(){}let e=t.prototype;return e.on=function(t,e){if(!t||!e)return this;let i=this._events=this._events||{},s=i[t]=i[t]||[];return s.includes(e)||s.push(e),this},e.once=function(t,e){if(!t||!e)return this;this.on(t,e);let i=this._onceEvents=this._onceEvents||{};return(i[t]=i[t]||{})[e]=!0,this},e.off=function(t,e){let i=this._events&&this._events[t];if(!i||!i.length)return this;let s=i.indexOf(e);return-1!=s&&i.splice(s,1),this},e.emitEvent=function(t,e){let i=this._events&&this._events[t];if(!i||!i.length)return this;i=i.slice(0),e=e||[];let s=this._onceEvents&&this._onceEvents[t];for(let n of i){s&&s[n]&&(this.off(t,n),delete s[n]),n.apply(this,e)}return this},e.allOff=function(){return delete this._events,delete this._onceEvents,this},t})),
function(t,e){"object"==typeof module&&module.exports?module.exports=e(t,require("ev-emitter")):t.imagesLoaded=e(t,t.EvEmitter)}("undefined"!=typeof window?window:this,(function(t,e){let i=t.jQuery,s=t.console;function n(t,e,o){if(!(this instanceof n))return new n(t,e,o);let r=t;var h;("string"==typeof t&&(r=document.querySelectorAll(t)),r)?(this.elements=(h=r,Array.isArray(h)?h:"object"==typeof h&&"number"==typeof h.length?[...h]:[h]),this.options={},"function"==typeof e?o=e:Object.assign(this.options,e),o&&this.on("always",o),this.getImages(),i&&(this.jqDeferred=new i.Deferred),setTimeout(this.check.bind(this))):s.error(`Bad element for imagesLoaded ${r||t}`)}n.prototype=Object.create(e.prototype),n.prototype.getImages=function(){this.images=[],this.elements.forEach(this.addElementImages,this)};const o=[1,9,11];n.prototype.addElementImages=function(t){"IMG"===t.nodeName&&this.addImage(t),!0===this.options.background&&this.addElementBackgroundImages(t);let{nodeType:e}=t;if(!e||!o.includes(e))return;let i=t.querySelectorAll("img");for(let t of i)this.addImage(t);if("string"==typeof this.options.background){let e=t.querySelectorAll(this.options.background);for(let t of e)this.addElementBackgroundImages(t)}};const r=/url\((['"])?(.*?)\1\)/gi;function h(t){this.img=t}function d(t,e){this.url=t,this.element=e,this.img=new Image}return n.prototype.addElementBackgroundImages=function(t){let e=getComputedStyle(t);if(!e)return;let i=r.exec(e.backgroundImage);for(;null!==i;){let s=i&&i[2];s&&this.addBackground(s,t),i=r.exec(e.backgroundImage)}},n.prototype.addImage=function(t){let e=new h(t);this.images.push(e)},n.prototype.addBackground=function(t,e){let i=new d(t,e);this.images.push(i)},n.prototype.check=function(){if(this.progressedCount=0,this.hasAnyBroken=!1,!this.images.length)return void this.complete();let t=(t,e,i)=>{setTimeout((()=>{this.progress(t,e,i)}))};this.images.forEach((function(e){e.once("progress",t),e.check()}))},n.prototype.progress=function(t,e,i){this.progressedCount++,this.hasAnyBroken=this.hasAnyBroken||!t.isLoaded,this.emitEvent("progress",[this,t,e]),this.jqDeferred&&this.jqDeferred.notify&&this.jqDeferred.notify(this,t),this.progressedCount===this.images.length&&this.complete(),this.options.debug&&s&&s.log(`progress: ${i}`,t,e)},n.prototype.complete=function(){let t=this.hasAnyBroken?"fail":"done";if(this.isComplete=!0,this.emitEvent(t,[this]),this.emitEvent("always",[this]),this.jqDeferred){let t=this.hasAnyBroken?"reject":"resolve";this.jqDeferred[t](this)}},h.prototype=Object.create(e.prototype),h.prototype.check=function(){this.getIsImageComplete()?this.confirm(0!==this.img.naturalWidth,"naturalWidth"):(this.proxyImage=new Image,this.img.crossOrigin&&(this.proxyImage.crossOrigin=this.img.crossOrigin),this.proxyImage.addEventListener("load",this),this.proxyImage.addEventListener("error",this),this.img.addEventListener("load",this),this.img.addEventListener("error",this),this.proxyImage.src=this.img.currentSrc||this.img.src)},h.prototype.getIsImageComplete=function(){return this.img.complete&&this.img.naturalWidth},h.prototype.confirm=function(t,e){this.isLoaded=t;let{parentNode:i}=this.img,s="PICTURE"===i.nodeName?i:this.img;this.emitEvent("progress",[this,s,e])},h.prototype.handleEvent=function(t){let e="on"+t.type;this[e]&&this[e](t)},h.prototype.onload=function(){this.confirm(!0,"onload"),this.unbindEvents()},h.prototype.onerror=function(){this.confirm(!1,"onerror"),this.unbindEvents()},h.prototype.unbindEvents=function(){this.proxyImage.removeEventListener("load",this),this.proxyImage.removeEventListener("error",this),this.img.removeEventListener("load",this),this.img.removeEventListener("error",this)},d.prototype=Object.create(h.prototype),d.prototype.check=function(){this.img.addEventListener("load",this),this.img.addEventListener("error",this),this.img.src=this.url,this.getIsImageComplete()&&(this.confirm(0!==this.img.naturalWidth,"naturalWidth"),this.unbindEvents())},d.prototype.unbindEvents=function(){this.img.removeEventListener("load",this),this.img.removeEventListener("error",this)},d.prototype.confirm=function(t,e){this.isLoaded=t,this.emitEvent("progress",[this,this.element,e])},n.makeJQueryPlugin=function(e){(e=e||t.jQuery)&&(i=e,i.fn.imagesLoaded=function(t,e){return new n(this,t,e).jqDeferred.promise(i(this))})},n.makeJQueryPlugin(),n}));
var _gsScope=(typeof(module)!=="undefined"&&module.exports&&typeof(global)!=="undefined") ? global:this||window;
(_gsScope._gsQueue||(_gsScope._gsQueue=[])).push(function(){
"use strict";
var _DEG2RAD=Math.PI / 180,
_RAD2DEG=180 / Math.PI,
_svgPathExp=/[achlmqstvz]|(-?\d*\.?\d*(?:e[\-+]?\d+)?)[0-9]/ig,
_numbersExp=/(?:(-|-=|\+=)?\d*\.?\d*(?:e[\-+]?\d+)?)[0-9]/ig,
_selectorExp=/(^[#\.]|[a-y][a-z])/gi,
_commands=/[achlmqstvz]/ig,
_scientific=/[\+\-]?\d*\.?\d+e[\+\-]?\d+/ig,
TweenLite=_gsScope._gsDefine.globals.TweenLite,
_log=function(message){
if(_gsScope.console){
console.log(message);
}},
_normalizedArcToBeziers=function(angleStart, angleExtent){
var segments=Math.ceil(Math.abs(angleExtent) / 90),
l=0,
a=[],
angleIncrement, controlLength, angle, dx, dy, i;
angleStart *=_DEG2RAD;
angleExtent *=_DEG2RAD;
angleIncrement=angleExtent / segments;
controlLength=4 / 3 * Math.sin(angleIncrement / 2) / (1 + Math.cos(angleIncrement / 2));
for (i=0; i < segments; i++){
angle=angleStart + i * angleIncrement;
dx=Math.cos(angle);
dy=Math.sin(angle);
a[l++]=dx - controlLength * dy;
a[l++]=dy + controlLength * dx;
angle +=angleIncrement;
dx=Math.cos(angle);
dy=Math.sin(angle);
a[l++]=dx + controlLength * dy;
a[l++]=dy - controlLength * dx;
a[l++]=dx;
a[l++]=dy;
}
return a;
},
_arcToBeziers=function(lastX, lastY, rx, ry, angle, largeArcFlag, sweepFlag, x, y){
if(lastX===x&&lastY===y){
return;
}
rx=Math.abs(rx);
ry=Math.abs(ry);
var angleRad=(angle % 360) * _DEG2RAD,
cosAngle=Math.cos(angleRad),
sinAngle=Math.sin(angleRad),
dx2=(lastX - x) / 2,
dy2=(lastY - y) / 2,
x1=(cosAngle * dx2 + sinAngle * dy2),
y1=(-sinAngle * dx2 + cosAngle * dy2),
rx_sq=rx * rx,
ry_sq=ry * ry,
x1_sq=x1 * x1,
y1_sq=y1 * y1,
radiiCheck=x1_sq / rx_sq + y1_sq / ry_sq;
if(radiiCheck > 1){
rx=Math.sqrt(radiiCheck) * rx;
ry=Math.sqrt(radiiCheck) * ry;
rx_sq=rx * rx;
ry_sq=ry * ry;
}
var sign=(largeArcFlag===sweepFlag) ? -1:1,
sq=((rx_sq * ry_sq) - (rx_sq * y1_sq) - (ry_sq * x1_sq)) / ((rx_sq * y1_sq) + (ry_sq * x1_sq));
if(sq < 0){
sq=0;
}
var coef=(sign * Math.sqrt(sq)),
cx1=coef * ((rx * y1) / ry),
cy1=coef * -((ry * x1) / rx),
sx2=(lastX + x) / 2,
sy2=(lastY + y) / 2,
cx=sx2 + (cosAngle * cx1 - sinAngle * cy1),
cy=sy2 + (sinAngle * cx1 + cosAngle * cy1),
ux=(x1 - cx1) / rx,
uy=(y1 - cy1) / ry,
vx=(-x1 - cx1) / rx,
vy=(-y1 - cy1) / ry,
n=Math.sqrt((ux * ux) + (uy * uy)),
p=ux;
sign=(uy < 0) ? -1:1;
var angleStart=(sign * Math.acos(p / n)) * _RAD2DEG;
n=Math.sqrt((ux * ux + uy * uy) * (vx * vx + vy * vy));
p=ux * vx + uy * vy;
sign=(ux * vy - uy * vx < 0) ? -1:1;
var angleExtent=(sign * Math.acos(p / n)) * _RAD2DEG;
if(!sweepFlag&&angleExtent > 0){
angleExtent -=360;
}else if(sweepFlag&&angleExtent < 0){
angleExtent +=360;
}
angleExtent %=360;
angleStart %=360;
var bezierPoints=_normalizedArcToBeziers(angleStart, angleExtent),
a=cosAngle * rx,
b=sinAngle * rx,
c=sinAngle * -ry,
d=cosAngle * ry,
l=bezierPoints.length - 2,
i, px, py;
for (i=0; i < l; i +=2){
px=bezierPoints[i];
py=bezierPoints[i+1];
bezierPoints[i]=px * a + py * c + cx;
bezierPoints[i+1]=px * b + py * d + cy;
}
bezierPoints[bezierPoints.length-2]=x;
bezierPoints[bezierPoints.length-1]=y;
return bezierPoints;
},
_pathDataToBezier=function(d){
var a=(d + "").replace(_scientific, function(m){ var n=+m; return (n < 0.0001&&n > -0.0001) ? 0:n; }).match(_svgPathExp)||[],
path=[],
relativeX=0,
relativeY=0,
elements=a.length,
l=2,
points=0,
i, j, x, y, command, isRelative, segment, startX, startY, difX, difY, beziers, prevCommand;
if(!d||!isNaN(a[0])||isNaN(a[1])){
_log("ERROR: malformed path data: " + d);
return path;
}
for (i=0; i < elements; i++){
prevCommand=command;
if(isNaN(a[i])){
command=a[i].toUpperCase();
isRelative=(command!==a[i]);
}else{
i--;
}
x=+a[i+1];
y=+a[i+2];
if(isRelative){
x +=relativeX;
y +=relativeY;
}
if(i===0){
startX=x;
startY=y;
}
if(command==="M"){
if(segment&&segment.length < 8){
path.length-=1;
l=0;
}
relativeX=startX=x;
relativeY=startY=y;
segment=[x, y];
points +=l;
l=2;
path.push(segment);
i +=2;
command="L";
}else if(command==="C"){
if(!segment){
segment=[0, 0];
}
segment[l++]=x;
segment[l++]=y;
if(!isRelative){
relativeX=relativeY=0;
}
segment[l++]=relativeX + a[i + 3] * 1;
segment[l++]=relativeY + a[i + 4] * 1;
segment[l++]=relativeX=relativeX + a[i + 5] * 1;
segment[l++]=relativeY=relativeY + a[i + 6] * 1;
i +=6;
}else if(command==="S"){
if(prevCommand==="C"||prevCommand==="S"){
difX=relativeX - segment[l - 4];
difY=relativeY - segment[l - 3];
segment[l++]=relativeX + difX;
segment[l++]=relativeY + difY;
}else{
segment[l++]=relativeX;
segment[l++]=relativeY;
}
segment[l++]=x;
segment[l++]=y;
if(!isRelative){
relativeX=relativeY=0;
}
segment[l++]=relativeX=relativeX + a[i + 3] * 1;
segment[l++]=relativeY=relativeY + a[i + 4] * 1;
i +=4;
}else if(command==="Q"){
difX=x - relativeX;
difY=y - relativeY;
segment[l++]=relativeX + difX * 2 / 3;
segment[l++]=relativeY + difY * 2 / 3;
if(!isRelative){
relativeX=relativeY=0;
}
relativeX=relativeX + a[i + 3] * 1;
relativeY=relativeY + a[i + 4] * 1;
difX=x - relativeX;
difY=y - relativeY;
segment[l++]=relativeX + difX * 2 / 3;
segment[l++]=relativeY + difY * 2 / 3;
segment[l++]=relativeX;
segment[l++]=relativeY;
i +=4;
}else if(command==="T"){
difX=relativeX - segment[l-4];
difY=relativeY - segment[l-3];
segment[l++]=relativeX + difX;
segment[l++]=relativeY + difY;
difX=(relativeX + difX * 1.5) - x;
difY=(relativeY + difY * 1.5) - y;
segment[l++]=x + difX * 2 / 3;
segment[l++]=y + difY * 2 / 3;
segment[l++]=relativeX=x;
segment[l++]=relativeY=y;
i +=2;
}else if(command==="H"){
y=relativeY;
segment[l++]=relativeX + (x - relativeX) / 3;
segment[l++]=relativeY + (y - relativeY) / 3;
segment[l++]=relativeX + (x - relativeX) * 2 / 3;
segment[l++]=relativeY + (y - relativeY) * 2 / 3;
segment[l++]=relativeX=x;
segment[l++]=y;
i +=1;
}else if(command==="V"){
y=x;
x=relativeX;
if(isRelative){
y +=relativeY - relativeX;
}
segment[l++]=x;
segment[l++]=relativeY + (y - relativeY) / 3;
segment[l++]=x;
segment[l++]=relativeY + (y - relativeY) * 2 / 3;
segment[l++]=x;
segment[l++]=relativeY=y;
i +=1;
}else if(command==="L"||command==="Z"){
if(command==="Z"){
x=startX;
y=startY;
segment.closed=true;
}
if(command==="L"||Math.abs(relativeX - x) > 0.5||Math.abs(relativeY - y) > 0.5){
segment[l++]=relativeX + (x - relativeX) / 3;
segment[l++]=relativeY + (y - relativeY) / 3;
segment[l++]=relativeX + (x - relativeX) * 2 / 3;
segment[l++]=relativeY + (y - relativeY) * 2 / 3;
segment[l++]=x;
segment[l++]=y;
if(command==="L"){
i +=2;
}}
relativeX=x;
relativeY=y;
}else if(command==="A"){
beziers=_arcToBeziers(relativeX, relativeY, a[i+1]*1, a[i+2]*1, a[i+3]*1, a[i+4]*1, a[i+5]*1, (isRelative ? relativeX:0) + a[i+6]*1, (isRelative ? relativeY:0) + a[i+7]*1);
if(beziers){
for (j=0; j < beziers.length; j++){
segment[l++]=beziers[j];
}}
relativeX=segment[l-2];
relativeY=segment[l-1];
i +=7;
}else{
_log("Error: malformed path data: " + d);
}}
path.totalPoints=points + l;
return path;
},
_subdivideBezier=function(bezier, quantity){
var tally=0,
max=0.999999,
l=bezier.length,
newPointsPerSegment=quantity / ((l - 2) / 6),
ax, ay, cp1x, cp1y, cp2x, cp2y, bx, by,
x1, y1, x2, y2, i, t;
for (i=2; i < l; i +=6){
tally +=newPointsPerSegment;
while (tally > max){
ax=bezier[i-2];
ay=bezier[i-1];
cp1x=bezier[i];
cp1y=bezier[i+1];
cp2x=bezier[i+2];
cp2y=bezier[i+3];
bx=bezier[i+4];
by=bezier[i+5];
t=1 / (Math.floor(tally) + 1);
x1=ax + (cp1x - ax) * t;
x2=cp1x + (cp2x - cp1x) * t;
x1 +=(x2 - x1) * t;
x2 +=((cp2x + (bx - cp2x) * t) - x2) * t;
y1=ay + (cp1y - ay) * t;
y2=cp1y + (cp2y - cp1y) * t;
y1 +=(y2 - y1) * t;
y2 +=((cp2y + (by - cp2y) * t) - y2) * t;
bezier.splice(i, 4,
ax + (cp1x - ax) * t,
ay + (cp1y - ay) * t,
x1,
y1,
x1 + (x2 - x1) * t,
y1 + (y2 - y1) * t,
x2,
y2,
cp2x + (bx - cp2x) * t,
cp2y + (by - cp2y) * t
);
i +=6;
l +=6;
tally--;
}}
return bezier;
},
_bezierToPathData=function(beziers){
var data="",
l=beziers.length,
rnd=100,
sl, s, i, segment;
for (s=0; s < l; s++){
segment=beziers[s];
data +="M" + segment[0] + "," + segment[1] + " C";
sl=segment.length;
for (i=2; i < sl; i++){
data +=(((segment[i++] * rnd) | 0) / rnd) + "," + (((segment[i++] * rnd) | 0) / rnd) + " " + (((segment[i++] * rnd) | 0) / rnd) + "," + (((segment[i++] * rnd) | 0) / rnd) + " " + (((segment[i++] * rnd) | 0) / rnd) + "," + (((segment[i] * rnd) | 0) / rnd) + " ";
}
if(segment.closed){
data +="z";
}}
return data;
},
_reverseBezier=function(bezier){
var a=[],
i=bezier.length - 1,
l=0;
while (--i > -1){
a[l++]=bezier[i];
a[l++]=bezier[i+1];
i--;
}
for (i=0; i < l; i++){
bezier[i]=a[i];
}
bezier.reversed=bezier.reversed ? false:true;
},
_getAverageXY=function(bezier){
var l=bezier.length,
x=0,
y=0,
i;
for (i=0; i < l; i++){
x +=bezier[i++];
y +=bezier[i];
}
return [x / (l / 2), y / (l / 2)];
},
_getSize=function(bezier){
var l=bezier.length,
xMax=bezier[0],
xMin=xMax,
yMax=bezier[1],
yMin=yMax,
x, y, i;
for (i=6; i < l; i+=6){
x=bezier[i];
y=bezier[i+1];
if(x > xMax){
xMax=x;
}else if(x < xMin){
xMin=x;
}
if(y > yMax){
yMax=y;
}else if(y < yMin){
yMin=y;
}}
bezier.centerX=(xMax + xMin) / 2;
bezier.centerY=(yMax + yMin) / 2;
return (bezier.size=(xMax - xMin) * (yMax - yMin));
},
_getTotalSize=function(bezier){
var segment=bezier.length,
xMax=bezier[0][0],
xMin=xMax,
yMax=bezier[0][1],
yMin=yMax,
l, x, y, i, b;
while (--segment > -1){
b=bezier[segment];
l=b.length;
for (i=6; i < l; i+=6){
x=b[i];
y=b[i+1];
if(x > xMax){
xMax=x;
}else if(x < xMin){
xMin=x;
}
if(y > yMax){
yMax=y;
}else if(y < yMin){
yMin=y;
}}
}
bezier.centerX=(xMax + xMin) / 2;
bezier.centerY=(yMax + yMin) / 2;
return (bezier.size=(xMax - xMin) * (yMax - yMin));
},
_sortByComplexity=function(a, b){
return b.length - a.length;
},
_sortBySize=function(a, b){
var sizeA=a.size||_getSize(a),
sizeB=b.size||_getSize(b);
return (Math.abs(sizeB - sizeA) < (sizeA + sizeB) / 20) ? (b.centerX - a.centerX)||(b.centerY - a.centerY):sizeB - sizeA;
},
_offsetBezier=function(bezier, shapeIndex){
var a=bezier.slice(0),
l=bezier.length,
wrap=l - 2,
i, index;
shapeIndex=shapeIndex | 0;
for (i=0; i < l; i++){
index=(i + shapeIndex) % wrap;
bezier[i++]=a[index];
bezier[i]=a[index+1];
}},
_getTotalMovement=function(sb, eb, shapeIndex, offsetX, offsetY){
var l=sb.length,
d=0,
wrap=l - 2,
index, i, x, y;
shapeIndex *=6;
for (i=0; i < l; i +=6){
index=(i + shapeIndex) % wrap;
y=sb[index] - (eb[i] - offsetX);
x=sb[index+1] - (eb[i+1] - offsetY);
d +=Math.sqrt(x * x + y * y);
}
return d;
},
_getClosestShapeIndex=function(sb, eb, checkReverse){
var l=sb.length,
sCenter=_getAverageXY(sb),
eCenter=_getAverageXY(eb),
offsetX=eCenter[0] - sCenter[0],
offsetY=eCenter[1] - sCenter[1],
min=_getTotalMovement(sb, eb, 0, offsetX, offsetY),
minIndex=0,
copy, d, i;
for (i=6; i < l; i +=6){
d=_getTotalMovement(sb, eb, i / 6, offsetX, offsetY);
if(d < min){
min=d;
minIndex=i;
}}
if(checkReverse){
copy=sb.slice(0);
_reverseBezier(copy);
for (i=6; i < l; i +=6){
d=_getTotalMovement(copy, eb, i / 6, offsetX, offsetY);
if(d < min){
min=d;
minIndex=-i;
}}
}
return minIndex / 6;
},
_getClosestAnchor=function(bezier, x, y){
var j=bezier.length,
closestDistance=99999999999,
closestX=0,
closestY=0,
b, dx, dy, d, i, l;
while (--j > -1){
b=bezier[j];
l=b.length;
for (i=0; i < l; i +=6){
dx=b[i] - x;
dy=b[i+1] - y;
d=Math.sqrt(dx * dx + dy * dy);
if(d < closestDistance){
closestDistance=d;
closestX=b[i];
closestY=b[i+1];
}}
}
return [closestX, closestY];
},
_getClosestSegment=function(bezier, pool, startIndex, sortRatio, offsetX, offsetY){
var l=pool.length,
index=0,
minSize=Math.min(bezier.size||_getSize(bezier), pool[startIndex].size||_getSize(pool[startIndex])) * sortRatio,
min=999999999999,
cx=bezier.centerX + offsetX,
cy=bezier.centerY + offsetY,
size, i, dx, dy, d;
for (i=startIndex; i < l; i++){
size=pool[i].size||_getSize(pool[i]);
if(size < minSize){
break;
}
dx=pool[i].centerX - cx;
dy=pool[i].centerY - cy;
d=Math.sqrt(dx * dx + dy * dy);
if(d < min){
index=i;
min=d;
}}
d=pool[index];
pool.splice(index, 1);
return d;
},
_equalizeSegmentQuantity=function(start, end, shapeIndex, map){
var dif=end.length - start.length,
longer=dif > 0 ? end:start,
shorter=dif > 0 ? start:end,
added=0,
sortMethod=(map==="complexity") ? _sortByComplexity:_sortBySize,
sortRatio=(map==="position") ? 0:(typeof(map)==="number") ? map:0.8,
i=shorter.length,
shapeIndices=(typeof(shapeIndex)==="object"&&shapeIndex.push) ? shapeIndex.slice(0):[shapeIndex],
reverse=(shapeIndices[0]==="reverse"||shapeIndices[0] < 0),
log=(shapeIndex==="log"),
eb, sb, b, x, y, offsetX, offsetY;
if(!shorter[0]){
return;
}
if(longer.length > 1){
start.sort(sortMethod);
end.sort(sortMethod);
offsetX=longer.size||_getTotalSize(longer);
offsetX=shorter.size||_getTotalSize(shorter);
offsetX=longer.centerX - shorter.centerX;
offsetY=longer.centerY - shorter.centerY;
if(sortMethod===_sortBySize){
for (i=0; i < shorter.length; i++){
longer.splice(i, 0, _getClosestSegment(shorter[i], longer, i, sortRatio, offsetX, offsetY));
}}
}
if(dif){
if(dif < 0){
dif=-dif;
}
if(longer[0].length > shorter[0].length){
_subdivideBezier(shorter[0], ((longer[0].length - shorter[0].length)/6) | 0);
}
i=shorter.length;
while (added < dif){
x=longer[i].size||_getSize(longer[i]);
b=_getClosestAnchor(shorter, longer[i].centerX, longer[i].centerY);
x=b[0];
y=b[1];
shorter[i++]=[x, y, x, y, x, y, x, y];
shorter.totalPoints +=8;
added++;
}}
for (i=0; i < start.length; i++){
eb=end[i];
sb=start[i];
dif=eb.length - sb.length;
if(dif < 0){
_subdivideBezier(eb, (-dif/6) | 0);
}else if(dif > 0){
_subdivideBezier(sb, (dif/6) | 0);
}
if(reverse&&!sb.reversed){
_reverseBezier(sb);
}
shapeIndex=(shapeIndices[i]||shapeIndices[i]===0) ? shapeIndices[i]:"auto";
if(shapeIndex){
if(sb.closed||(Math.abs(sb[0] - sb[sb.length - 2]) < 0.5&&Math.abs(sb[1] - sb[sb.length - 1]) < 0.5)){
if(shapeIndex==="auto"||shapeIndex==="log"){
shapeIndices[i]=shapeIndex=_getClosestShapeIndex(sb, eb, i===0);
if(shapeIndex < 0){
reverse=true;
_reverseBezier(sb);
shapeIndex=-shapeIndex;
}
_offsetBezier(sb, shapeIndex * 6);
}else if(shapeIndex!=="reverse"){
if(i&&shapeIndex < 0){
_reverseBezier(sb);
}
_offsetBezier(sb, (shapeIndex < 0 ? -shapeIndex:shapeIndex) * 6);
}}else if(!reverse&&(shapeIndex==="auto"&&(Math.abs(eb[0] - sb[0]) + Math.abs(eb[1] - sb[1]) + Math.abs(eb[eb.length - 2] - sb[sb.length - 2]) + Math.abs(eb[eb.length - 1] - sb[sb.length - 1]) > Math.abs(eb[0] - sb[sb.length - 2]) + Math.abs(eb[1] - sb[sb.length - 1]) + Math.abs(eb[eb.length - 2] - sb[0]) + Math.abs(eb[eb.length - 1] - sb[1]))||(shapeIndex % 2))){
_reverseBezier(sb);
shapeIndices[i]=-1;
reverse=true;
}else if(shapeIndex==="auto"){
shapeIndices[i]=0;
}else if(shapeIndex==="reverse"){
shapeIndices[i]=-1;
}
if(sb.closed!==eb.closed){
sb.closed=eb.closed=false;
}}
}
if(log){
_log("shapeIndex:[" + shapeIndices.join(",") + "]");
}
return shapeIndices;
},
_pathFilter=function(a, shapeIndex, map, precompile){
var start=_pathDataToBezier(a[0]),
end=_pathDataToBezier(a[1]);
if(!_equalizeSegmentQuantity(start, end, (shapeIndex||shapeIndex===0) ? shapeIndex:"auto", map)){
return;
}
a[0]=_bezierToPathData(start);
a[1]=_bezierToPathData(end);
if(precompile==="log"||precompile===true){
_log('precompile:["' + a[0] + '","' + a[1] + '"]');
}},
_buildPathFilter=function(shapeIndex, map, precompile){
return (map||precompile||shapeIndex||shapeIndex===0) ? function(a){
_pathFilter(a, shapeIndex, map, precompile);
}:_pathFilter;
},
_offsetPoints=function(text, offset){
if(!offset){
return text;
}
var a=text.match(_numbersExp)||[],
l=a.length,
s="",
inc, i, j;
if(offset==="reverse"){
i=l-1;
inc=-2;
}else{
i=(((parseInt(offset, 10)||0) * 2 + 1) + l * 100) % l;
inc=2;
}
for (j=0; j < l; j +=2){
s +=a[i-1] + "," + a[i] + " ";
i=(i + inc) % l;
}
return s;
},
_equalizePointQuantity=function(a, quantity){
var tally=0,
x=parseFloat(a[0]),
y=parseFloat(a[1]),
s=x + "," + y + " ",
max=0.999999,
newPointsPerSegment, i, l, j, factor, nextX, nextY;
l=a.length;
newPointsPerSegment=quantity * 0.5 / (l * 0.5 - 1);
for (i=0; i < l-2; i +=2){
tally +=newPointsPerSegment;
nextX=parseFloat(a[i+2]);
nextY=parseFloat(a[i+3]);
if(tally > max){
factor=1 / (Math.floor(tally) + 1);
j=1;
while (tally > max){
s +=(x + (nextX - x) * factor * j).toFixed(2) + "," + (y + (nextY - y) * factor * j).toFixed(2) + " ";
tally--;
j++;
}}
s +=nextX + "," + nextY + " ";
x=nextX;
y=nextY;
}
return s;
},
_pointsFilter=function(a){
var startNums=a[0].match(_numbersExp)||[],
endNums=a[1].match(_numbersExp)||[],
dif=endNums.length - startNums.length;
if(dif > 0){
a[0]=_equalizePointQuantity(startNums, dif);
}else{
a[1]=_equalizePointQuantity(endNums, -dif);
}},
_buildPointsFilter=function(shapeIndex){
return !isNaN(shapeIndex) ? function(a){
_pointsFilter(a);
a[1]=_offsetPoints(a[1], parseInt(shapeIndex, 10));
}:_pointsFilter;
},
_createPath=function(e, ignore){
var path=_gsScope.document.createElementNS("http://www.w3.org/2000/svg", "path"),
attr=Array.prototype.slice.call(e.attributes),
i=attr.length,
name;
ignore="," + ignore + ",";
while (--i > -1){
name=attr[i].nodeName.toLowerCase();
if(ignore.indexOf("," + name + ",")===-1){
path.setAttributeNS(null, name, attr[i].nodeValue);
}}
return path;
},
_convertToPath=function(e, swap){
var type=e.tagName.toLowerCase(),
circ=0.552284749831,
data, x, y, r, ry, path, rcirc, rycirc, points, w, h, x2, x3, x4, x5, x6, y2, y3, y4, y5, y6;
if(type==="path"||!e.getBBox){
return e;
}
path=_createPath(e, "x,y,width,height,cx,cy,rx,ry,r,x1,x2,y1,y2,points");
if(type==="rect"){
r=+e.getAttribute("rx")||0;
ry=+e.getAttribute("ry")||0;
x=+e.getAttribute("x")||0;
y=+e.getAttribute("y")||0;
w=(+e.getAttribute("width")||0) - r * 2;
h=(+e.getAttribute("height")||0) - ry * 2;
if(r||ry){
x2=x + r * (1 - circ);
x3=x + r;
x4=x3 + w;
x5=x4 + r * circ;
x6=x4 + r;
y2=y + ry * (1 - circ);
y3=y + ry;
y4=y3 + h;
y5=y4 + ry * circ;
y6=y4 + ry;
data="M" + x6 + "," + y3 + " V" + y4 + " C" + [x6, y5, x5, y6, x4, y6, x4 - (x4 - x3) / 3, y6, x3 + (x4 - x3) / 3, y6, x3, y6, x2, y6, x, y5, x, y4, x, y4 - (y4 - y3) / 3, x, y3 + (y4 - y3) / 3, x, y3, x, y2, x2, y, x3, y, x3 + (x4 - x3) / 3, y, x4 - (x4 - x3) / 3, y, x4, y, x5, y, x6, y2, x6, y3].join(",") + "z";
}else{
data="M" + (x + w) + "," + y + " v" + h + " h" + (-w) + " v" + (-h) + " h" + w + "z";
}}else if(type==="circle"||type==="ellipse"){
if(type==="circle"){
r=ry=+e.getAttribute("r")||0;
rycirc=r * circ;
}else{
r=+e.getAttribute("rx")||0;
ry=+e.getAttribute("ry")||0;
rycirc=ry * circ;
}
x=+e.getAttribute("cx")||0;
y=+e.getAttribute("cy")||0;
rcirc=r * circ;
data="M" + (x+r) + "," + y + " C" + [x+r, y + rycirc, x + rcirc, y + ry, x, y + ry, x - rcirc, y + ry, x - r, y + rycirc, x - r, y, x - r, y - rycirc, x - rcirc, y - ry, x, y - ry, x + rcirc, y - ry, x + r, y - rycirc, x + r, y].join(",") + "z";
}else if(type==="line"){
data="M" + (e.getAttribute("x1")||0) + "," + (e.getAttribute("y1")||0) + " L" + (e.getAttribute("x2")||0) + "," + (e.getAttribute("y2")||0);
}else if(type==="polyline"||type==="polygon"){
points=(e.getAttribute("points") + "").match(_numbersExp)||[];
x=points.shift();
y=points.shift();
data="M" + x + "," + y + " L" + points.join(",");
if(type==="polygon"){
data +="," + x + "," + y + "z";
}}
path.setAttribute("d", data);
if(swap&&e.parentNode){
e.parentNode.insertBefore(path, e);
e.parentNode.removeChild(e);
}
return path;
},
_parseShape=function(shape, forcePath, target){
var isString=typeof(shape)==="string",
e, type;
if(!isString||_selectorExp.test(shape)||(shape.match(_numbersExp)||[]).length < 3){
e=isString ? TweenLite.selector(shape):(shape&&shape[0]) ? shape:[shape];
if(e&&e[0]){
e=e[0];
type=e.nodeName.toUpperCase();
if(forcePath&&type!=="PATH"){
e=_convertToPath(e, false);
type="PATH";
}
shape=e.getAttribute(type==="PATH" ? "d":"points")||"";
if(e===target){
shape=e.getAttributeNS(null, "data-original")||shape;
}}else{
_log("WARNING: invalid morph to: " + shape);
shape=false;
}}
return shape;
},
_morphMessage="Use MorphSVGPlugin.convertToPath(elementOrSelectorText) to convert to a path before morphing.",
MorphSVGPlugin=_gsScope._gsDefine.plugin({
propName: "morphSVG",
API: 2,
global: true,
version: "0.8.10",
init: function(target, value, tween, index){
var type, p, pt, shape, isPoly;
if(typeof(target.setAttribute)!=="function"){
return false;
}
if(typeof(value)==="function"){
value=value(index, target);
}
type=target.nodeName.toUpperCase();
isPoly=(type==="POLYLINE"||type==="POLYGON");
if(type!=="PATH"&&!isPoly){
_log("WARNING: cannot morph a <" + type + "> SVG element. " + _morphMessage);
return false;
}
p=(type==="PATH") ? "d":"points";
if(typeof(value)==="string"||value.getBBox||value[0]){
value={shape:value};}
shape=_parseShape(value.shape||value.d||value.points||"", (p==="d"), target);
if(isPoly&&_commands.test(shape)){
_log("WARNING: a <" + type + "> cannot accept path data. " + _morphMessage);
return false;
}
if(shape){
this._target=target;
if(!target.getAttributeNS(null, "data-original")){
target.setAttributeNS(null, "data-original", target.getAttribute(p));
}
pt=this._addTween(target, "setAttribute", target.getAttribute(p) + "", shape + "", "morphSVG", false, p, (typeof(value.precompile)==="object") ? function(a){a[0]=value.precompile[0]; a[1]=value.precompile[1];}:(p==="d") ? _buildPathFilter(value.shapeIndex, value.map||MorphSVGPlugin.defaultMap, value.precompile):_buildPointsFilter(value.shapeIndex));
if(pt){
this._overwriteProps.push("morphSVG");
pt.end=shape;
pt.endProp=p;
}}
return true;
},
set: function(ratio){
var pt;
this._super.setRatio.call(this, ratio);
if(ratio===1){
pt=this._firstPT;
while (pt){
if(pt.end){
this._target.setAttribute(pt.endProp, pt.end);
}
pt=pt._next;
}}
}});
MorphSVGPlugin.pathFilter=_pathFilter;
MorphSVGPlugin.pointsFilter=_pointsFilter;
MorphSVGPlugin.subdivideRawBezier=_subdivideBezier;
MorphSVGPlugin.defaultMap="size";
MorphSVGPlugin.pathDataToRawBezier=function(data){
return _pathDataToBezier(_parseShape(data, true));
};
MorphSVGPlugin.equalizeSegmentQuantity=_equalizeSegmentQuantity;
MorphSVGPlugin.convertToPath=function(targets, swap){
if(typeof(targets)==="string"){
targets=TweenLite.selector(targets);
}
var a=(!targets||targets.length===0) ? []:(targets.length&&targets[0]&&targets[0].nodeType) ? Array.prototype.slice.call(targets, 0):[targets],
i=a.length;
while (--i > -1){
a[i]=_convertToPath(a[i], (swap!==false));
}
return a;
};
MorphSVGPlugin.pathDataToBezier=function(data, vars){
var bezier=_pathDataToBezier(_parseShape(data, true))[0]||[],
prefix=0,
a, i, l, matrix, offsetX, offsetY, bbox, e;
vars=vars||{};
e=vars.align||vars.relative;
matrix=vars.matrix||[1,0,0,1,0,0];
offsetX=vars.offsetX||0;
offsetY=vars.offsetY||0;
if(e==="relative"||e===true){
offsetX -=bezier[0] * matrix[0] + bezier[1] * matrix[2];
offsetY -=bezier[0] * matrix[1] + bezier[1] * matrix[3];
prefix="+=";
}else{
offsetX +=matrix[4];
offsetY +=matrix[5];
if(e){
e=(typeof(e)==="string") ? TweenLite.selector(e):(e&&e[0]) ? e:[e];
if(e&&e[0]){
bbox=e[0].getBBox()||{x:0, y:0};
offsetX -=bbox.x;
offsetY -=bbox.y;
}}
}
a=[];
l=bezier.length;
if(matrix&&matrix.join(",")!=="1,0,0,1,0,0"){
for (i=0; i < l; i+=2){
a.push({x:prefix + (bezier[i] * matrix[0] + bezier[i+1] * matrix[2] + offsetX), y:prefix + (bezier[i] * matrix[1] + bezier[i+1] * matrix[3] + offsetY)});
}}else{
for (i=0; i < l; i+=2){
a.push({x:prefix + (bezier[i] + offsetX), y:prefix + (bezier[i+1] + offsetY)});
}}
return a;
};});if(_gsScope._gsDefine){ _gsScope._gsQueue.pop()(); }
(function(name){
"use strict";
var getGlobal=function(){
return (_gsScope.GreenSockGlobals||_gsScope)[name];
};
if(typeof(define)==="function"&&define.amd){
define(["TweenLite"], getGlobal);
}else if(typeof(module)!=="undefined"&&module.exports){
require("../TweenLite.js");
module.exports=getGlobal();
}}("MorphSVGPlugin"));