vendor: 15,068 bytes, line 1
1var tns=function(){var t=window,Ai=t.requestAnimationFrame||t.webkitRequestAnimationFrame||t.mozRequestAnimationFrame||t.msRequestAnimationFrame||function(t){return setTimeout(t,16)},e=window,Ni=e.cancelAnimationFrame||e.mozCancelAnimationFrame||function(t){clearTimeout(t)};function Li(){for(var t,e,n,i=arguments[0]||{},a=1,r=arguments.length;a<r;a++)if(null!==(t=arguments[a]))for(e in t)i!==(n=t[e])&&void 0!==n&&(i[e]=n);return i}function Bi(t){return 0<=["true","false"].indexOf(t)?JSON.parse(t):t}function Si(t,e,n,i){if(i)try{t.setItem(e,n)}catch(t){}return n}function Hi(){var t=document,e=t.body;return e||((e=t.createElement("body")).fake=!0),e}var n=document.documentElement;function Oi(t){var e="";return t.fake&&(e=n.style.overflow,t.style.background="",t.style.overflow=n.style.overflow="hidden",n.appendChild(t)),e}function Di(t,e){t.fake&&(t.remove(),n.style.overflow=e,n.offsetHeight)}function ki(t,e,n,i){"insertRule"in t?t.insertRule(e+"{"+n+"}",i):t.addRule(e,n,i)}function Ri(t){return("insertRule"in t?t.cssRules:t.rules).length}function Ii(t,e,n){for(var i=0,a=t.length;i<a;i++)e.call(n,t[i],i)}var i="classList"in document.createElement("_"),Pi=i?function(t,e){return t.classList.contains(e)}:function(t,e){return 0<=t.className.indexOf(e)},zi=i?function(t,e){Pi(t,e)||t.classList.add(e)}:function(t,e){Pi(t,e)||(t.className+=" "+e)},Wi=i?function(t,e){Pi(t,e)&&t.classList.remove(e)}:function(t,e){Pi(t,e)&&(t.className=t.className.replace(e,""))};function qi(t,e){return t.hasAttribute(e)}function Fi(t,e){return t.getAttribute(e)}function r(t){return void 0!==t.item}function ji(t,e){if(t=r(t)||t instanceof Array?t:[t],"[object Object]"===Object.prototype.toString.call(e))for(var n=t.length;n--;)for(var i in e)t[n].setAttribute(i,e[i])}function Vi(t,e){t=r(t)||t instanceof Array?t:[t];for(var n=(e=e instanceof Array?e:[e]).length,i=t.length;i--;)for(var a=n;a--;)t[i].removeAttribute(e[a])}function Gi(t){for(var e=[],n=0,i=t.length;n<i;n++)e.push(t[n]);return e}function Qi(t,e){"none"!==t.style.display&&(t.style.display="none")}function Xi(t,e){"none"===t.style.display&&(t.style.display="")}function Yi(t){return"none"!==window.getComputedStyle(t).display}function Ki(e){if("string"==typeof e){var n=[e],i=e.charAt(0).toUpperCase()+e.substr(1);["Webkit","Moz","ms","O"].forEach(function(t){"ms"===t&&"transform"!==e||n.push(t+i)}),e=n}for(var t=document.createElement("fakeelement"),a=(e.length,0);a<e.length;a++){var r=e[a];if(void 0!==t.style[r])return r}return!1}function Ji(t,e){var n=!1;return/^Webkit/.test(t)?n="webkit"+e+"End":/^O/.test(t)?n="o"+e+"End":t&&(n=e.toLowerCase()+"end"),n}var a=!1;try{var o=Object.defineProperty({},"passive",{get:function(){a=!0}});window.addEventListener("test",null,o)}catch(t){}var u=!!a&&{passive:!0};function Ui(t,e,n){for(var i in e){var a=0<=["touchstart","touchmove"].indexOf(i)&&!n&&u;t.addEventListener(i,e[i],a)}}function _i(t,e){for(var n in e){var i=0<=["touchstart","touchmove"].indexOf(n)&&u;t.removeEventListener(n,e[n],i)}}function Zi(){return{topics:{},on:function(t,e){this.topics[t]=this.topics[t]||[],this.topics[t].push(e)},off:function(t,e){if(this.topics[t])for(var n=0;n<this.topics[t].length;n++)if(this.topics[t][n]===e){this.topics[t].splice(n,1);break}},emit:function(e,n){n.type=e,this.topics[e]&&this.topics[e].forEach(function(t){t(n,e)})}}}Object.keys||(Object.keys=function(t){var e=[];for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&e.push(n);return e}),"remove"in Element.prototype||(Element.prototype.remove=function(){this.parentNode&&this.parentNode.removeChild(this)});var $i=function(H){H=Li({container:".slider",mode:"carousel",axis:"horizontal",items:1,gutter:0,edgePadding:0,fixedWidth:!1,autoWidth:!1,viewportMax:!1,slideBy:1,center:!1,controls:!0,controlsPosition:"top",controlsText:["prev","next"],controlsContainer:!1,prevButton:!1,nextButton:!1,nav:!0,navPosition:"top",navContainer:!1,navAsThumbnails:!1,arrowKeys:!1,speed:300,autoplay:!1,autoplayPosition:"top",autoplayTimeout:5e3,autoplayDirection:"forward",autoplayText:["start","stop"],autoplayHoverPause:!1,autoplayButton:!1,autoplayButtonOutput:!0,autoplayResetOnVisibility:!0,animateIn:"tns-fadeIn",animateOut:"tns-fadeOut",animateNormal:"tns-normal",animateDelay:!1,loop:!0,rewind:!1,autoHeight:!1,responsive:!1,lazyload:!1,lazyloadSelector:".tns-lazy-img",touch:!0,mouseDrag:!1,swipeAngle:15,nested:!1,preventActionWhenRunning:!1,preventScrollOnTouch:!1,freezable:!0,onInit:!1,useLocalStorage:!0,nonce:!1},H||{});var O=document,m=window,a={ENTER:13,SPACE:32,LEFT:37,RIGHT:39},e={},n=H.useLocalStorage;if(n){var t=navigator.userAgent,i=new Date;try{(e=m.localStorage)?(e.setItem(i,i),n=e.getItem(i)==i,e.removeItem(i)):n=!1,n||(e={})}catch(t){n=!1}n&&(e.tnsApp&&e.tnsApp!==t&&["tC","tPL","tMQ","tTf","t3D","tTDu","tTDe","tADu","tADe","tTE","tAE"].forEach(function(t){e.removeItem(t)}),localStorage.tnsApp=t)}var y=e.tC?Bi(e.tC):Si(e,"tC",function(){var t=document,e=Hi(),n=Oi(e),i=t.createElement("div"),a=!1;e.appendChild(i);try{for(var r,o="(10px * 10)",u=["calc"+o,"-moz-calc"+o,"-webkit-calc"+o],l=0;l<3;l++)if(r=u[l],i.style.width=r,100===i.offsetWidth){a=r.replace(o,"");break}}catch(t){}return e.fake?Di(e,n):i.remove(),a}(),n),g=e.tPL?Bi(e.tPL):Si(e,"tPL",function(){var t,e=document,n=Hi(),i=Oi(n),a=e.createElement("div"),r=e.createElement("div"),o="";a.className="tns-t-subp2",r.className="tns-t-ct";for(var u=0;u<70;u++)o+="<div></div>";return r.innerHTML=o,a.appendChild(r),n.appendChild(a),t=Math.abs(a.getBoundingClientRect().left-r.children[67].getBoundingClientRect().left)<2,n.fake?Di(n,i):a.remove(),t}(),n),D=e.tMQ?Bi(e.tMQ):Si(e,"tMQ",function(){if(window.matchMedia||window.msMatchMedia)return!0;var t,e=document,n=Hi(),i=Oi(n),a=e.createElement("div"),r=e.createElement("style"),o="@media all and (min-width:1px){.tns-mq-test{position:absolute}}";return r.type="text/css",a.className="tns-mq-test",n.appendChild(r),n.appendChild(a),r.styleSheet?r.styleSheet.cssText=o:r.appendChild(e.createTextNode(o)),t=window.getComputedStyle?window.getComputedStyle(a).position:a.currentStyle.position,n.fake?Di(n,i):a.remove(),"absolute"===t}(),n),r=e.tTf?Bi(e.tTf):Si(e,"tTf",Ki("transform"),n),o=e.t3D?Bi(e.t3D):Si(e,"t3D",function(t){if(!t)return!1;if(!window.getComputedStyle)return!1;var e,n=document,i=Hi(),a=Oi(i),r=n.createElement("p"),o=9<t.length?"-"+t.slice(0,-9).toLowerCase()+"-":"";return o+="transform",i.insertBefore(r,null),r.style[t]="translate3d(1px,1px,1px)",e=window.getComputedStyle(r).getPropertyValue(o),i.fake?Di(i,a):r.remove(),void 0!==e&&0<e.length&&"none"!==e}(r),n),x=e.tTDu?Bi(e.tTDu):Si(e,"tTDu",Ki("transitionDuration"),n),u=e.tTDe?Bi(e.tTDe):Si(e,"tTDe",Ki("transitionDelay"),n),b=e.tADu?Bi(e.tADu):Si(e,"tADu",Ki("animationDuration"),n),l=e.tADe?Bi(e.tADe):Si(e,"tADe",Ki("animationDelay"),n),s=e.tTE?Bi(e.tTE):Si(e,"tTE",Ji(x,"Transition"),n),c=e.tAE?Bi(e.tAE):Si(e,"tAE",Ji(b,"Animation"),n),f=m.console&&"function"==typeof m.console.warn,d=["container","controlsContainer","prevButton","nextButton","navContainer","autoplayButton"],v={};if(d.forEach(function(t){if("string"==typeof H[t]){var e=H[t],n=O.querySelector(e);if(v[t]=e,!n||!n.nodeName)return void(f&&console.warn("Can't find",H[t]));H[t]=n}}),!(H.container.children.length<1)){var k=H.responsive,R=H.nested,I="carousel"===H.mode;if(k){0 in k&&(H=Li(H,k[0]),delete k[0]);var p={};for(var h in k){var w=k[h];w="number"==typeof w?{items:w}:w,p[h]=w}k=p,p=null}if(I||function t(e){for(var n in e)I||("slideBy"===n&&(e[n]="page"),"edgePadding"===n&&(e[n]=!1),"autoHeight"===n&&(e[n]=!1)),"responsive"===n&&t(e[n])}(H),!I){H.axis="horizontal",H.slideBy="page",H.edgePadding=!1;var P=H.animateIn,z=H.animateOut,C=H.animateDelay,W=H.animateNormal}var M,q,F="horizontal"===H.axis,T=O.createElement("div"),j=O.createElement("div"),V=H.container,E=V.parentNode,A=V.outerHTML,G=V.children,Q=G.length,X=rn(),Y=!1;k&&En(),I&&(V.className+=" tns-vpfix");var N,L,B,S,K,J,U,_,Z,$=H.autoWidth,tt=sn("fixedWidth"),et=sn("edgePadding"),nt=sn("gutter"),it=un(),at=sn("center"),rt=$?1:Math.floor(sn("items")),ot=sn("slideBy"),ut=H.viewportMax||H.fixedWidthViewportWidth,lt=sn("arrowKeys"),st=sn("speed"),ct=H.rewind,ft=!ct&&H.loop,dt=sn("autoHeight"),vt=sn("controls"),pt=sn("controlsText"),ht=sn("nav"),mt=sn("touch"),yt=sn("mouseDrag"),gt=sn("autoplay"),xt=sn("autoplayTimeout"),bt=sn("autoplayText"),wt=sn("autoplayHoverPause"),Ct=sn("autoplayResetOnVisibility"),Mt=(U=null,_=sn("nonce"),Z=document.createElement("style"),U&&Z.setAttribute("media",U),_&&Z.setAttribute("nonce",_),document.querySelector("head").appendChild(Z),Z.sheet?Z.sheet:Z.styleSheet),Tt=H.lazyload,Et=H.lazyloadSelector,At=[],Nt=ft?(K=function(){{if($||tt&&!ut)return Q-1;var t=tt?"fixedWidth":"items",e=[];if((tt||H[t]<Q)&&e.push(H[t]),k)for(var n in k){var i=k[n][t];i&&(tt||i<Q)&&e.push(i)}return e.length||e.push(0),Math.ceil(tt?ut/Math.min.apply(null,e):Math.max.apply(null,e))}}(),J=I?Math.ceil((5*K-Q)/2):4*K-Q,J=Math.max(K,J),ln("edgePadding")?J+1:J):0,Lt=I?Q+2*Nt:Q+Nt,Bt=!(!tt&&!$||ft),St=tt?_n():null,Ht=!I||!ft,Ot=F?"left":"top",Dt="",kt="",Rt=tt?function(){return at&&!ft?Q-1:Math.ceil(-St/(tt+nt))}:$?function(){for(var t=0;t<Lt;t++)if(N[t]>=-St)return t}:function(){return at&&I&&!ft?Q-1:ft||I?Math.max(0,Lt-Math.ceil(rt)):Lt-1},It=en(sn("startIndex")),Pt=It,zt=(tn(),0),Wt=$?null:Rt(),qt=H.preventActionWhenRunning,Ft=H.swipeAngle,jt=!Ft||"?",Vt=!1,Gt=H.onInit,Qt=new Zi,Xt=" tns-slider tns-"+H.mode,Yt=V.id||(S=window.tnsId,window.tnsId=S?S+1:1,"tns"+window.tnsId),Kt=sn("disable"),Jt=!1,Ut=H.freezable,_t=!(!Ut||$)&&Tn(),Zt=!1,$t={click:oi,keydown:function(t){t=pi(t);var e=[a.LEFT,a.RIGHT].indexOf(t.keyCode);0<=e&&(0===e?we.disabled||oi(t,-1):Ce.disabled||oi(t,1))}},te={click:function(t){if(Vt){if(qt)return;ai()}var e=hi(t=pi(t));for(;e!==Ae&&!qi(e,"data-nav");)e=e.parentNode;if(qi(e,"data-nav")){var n=Se=Number(Fi(e,"data-nav")),i=tt||$?n*Q/Le:n*rt,a=le?n:Math.min(Math.ceil(i),Q-1);ri(a,t),He===n&&(Pe&&fi(),Se=-1)}},keydown:function(t){t=pi(t);var e=O.activeElement;if(!qi(e,"data-nav"))return;var n=[a.LEFT,a.RIGHT,a.ENTER,a.SPACE].indexOf(t.keyCode),i=Number(Fi(e,"data-nav"));0<=n&&(0===n?0<i&&vi(Ee[i-1]):1===n?i<Le-1&&vi(Ee[i+1]):ri(Se=i,t))}},ee={mouseover:function(){Pe&&(li(),ze=!0)},mouseout:function(){ze&&(ui(),ze=!1)}},ne={visibilitychange:function(){O.hidden?Pe&&(li(),qe=!0):qe&&(ui(),qe=!1)}},ie={keydown:function(t){t=pi(t);var e=[a.LEFT,a.RIGHT].indexOf(t.keyCode);0<=e&&oi(t,0===e?-1:1)}},ae={touchstart:xi,touchmove:bi,touchend:wi,touchcancel:wi},re={mousedown:xi,mousemove:bi,mouseup:wi,mouseleave:wi},oe=ln("controls"),ue=ln("nav"),le=!!$||H.navAsThumbnails,se=ln("autoplay"),ce=ln("touch"),fe=ln("mouseDrag"),de="tns-slide-active",ve="tns-slide-cloned",pe="tns-complete",he={load:function(t){kn(hi(t))},error:function(t){e=hi(t),zi(e,"failed"),Rn(e);var e}},me="force"===H.preventScrollOnTouch;if(oe)var ye,ge,xe=H.controlsContainer,be=H.controlsContainer?H.controlsContainer.outerHTML:"",we=H.prevButton,Ce=H.nextButton,Me=H.prevButton?H.prevButton.outerHTML:"",Te=H.nextButton?H.nextButton.outerHTML:"";if(ue)var Ee,Ae=H.navContainer,Ne=H.navContainer?H.navContainer.outerHTML:"",Le=$?Q:Mi(),Be=0,Se=-1,He=an(),Oe=He,De="tns-nav-active",ke="Carousel Page ",Re=" (Current Slide)";if(se)var Ie,Pe,ze,We,qe,Fe="forward"===H.autoplayDirection?1:-1,je=H.autoplayButton,Ve=H.autoplayButton?H.autoplayButton.outerHTML:"",Ge=["<span class='tns-visually-hidden'>"," animation</span>"];if(ce||fe)var Qe,Xe,Ye={},Ke={},Je=!1,Ue=F?function(t,e){return t.x-e.x}:function(t,e){return t.y-e.y};$||$e(Kt||_t),r&&(Ot=r,Dt="translate",o?(Dt+=F?"3d(":"3d(0px, ",kt=F?", 0px, 0px)":", 0px)"):(Dt+=F?"X(":"Y(",kt=")")),I&&(V.className=V.className.replace("tns-vpfix","")),function(){ln("gutter");T.className="tns-outer",j.className="tns-inner",T.id=Yt+"-ow",j.id=Yt+"-iw",""===V.id&&(V.id=Yt);Xt+=g||$?" tns-subpixel":" tns-no-subpixel",Xt+=y?" tns-calc":" tns-no-calc",$&&(Xt+=" tns-autowidth");Xt+=" tns-"+H.axis,V.className+=Xt,I?((M=O.createElement("div")).id=Yt+"-mw",M.className="tns-ovh",T.appendChild(M),M.appendChild(j)):T.appendChild(j);if(dt){var t=M||j;t.className+=" tns-ah"}if(E.insertBefore(T,V),j.appendChild(V),Ii(G,function(t,e){zi(t,"tns-item"),t.id||(t.id=Yt+"-item"+e),!I&&W&&zi(t,W),ji(t,{"aria-hidden":"true",tabindex:"-1"})}),Nt){for(var e=O.createDocumentFragment(),n=O.createDocumentFragment(),i=Nt;i--;){var a=i%Q,r=G[a].cloneNode(!0);if(zi(r,ve),Vi(r,"id"),n.insertBefore(r,n.firstChild),I){var o=G[Q-1-a].cloneNode(!0);zi(o,ve),Vi(o,"id"),e.appendChild(o)}}V.insertBefore(e,V.firstChild),V.appendChild(n),G=V.children}}(),function(){if(!I)for(var t=It,e=It+Math.min(Q,rt);t<e;t++){var n=G[t];n.style.left=100*(t-It)/rt+"%",zi(n,P),Wi(n,W)}F&&(g||$?(ki(Mt,"#"+Yt+" > .tns-item","font-size:"+m.getComputedStyle(G[0]).fontSize+";",Ri(Mt)),ki(Mt,"#"+Yt,"font-size:0;",Ri(Mt))):I&&Ii(G,function(t,e){var n;t.style.marginLeft=(n=e,y?y+"("+100*n+"% / "+Lt+")":100*n/Lt+"%")}));if(D){if(x){var i=M&&H.autoHeight?hn(H.speed):"";ki(Mt,"#"+Yt+"-mw",i,Ri(Mt))}i=cn(H.edgePadding,H.gutter,H.fixedWidth,H.speed,H.autoHeight),ki(Mt,"#"+Yt+"-iw",i,Ri(Mt)),I&&(i=F&&!$?"width:"+fn(H.fixedWidth,H.gutter,H.items)+";":"",x&&(i+=hn(st)),ki(Mt,"#"+Yt,i,Ri(Mt))),i=F&&!$?dn(H.fixedWidth,H.gutter,H.items):"",H.gutter&&(i+=vn(H.gutter)),I||(x&&(i+=hn(st)),b&&(i+=mn(st))),i&&ki(Mt,"#"+Yt+" > .tns-item",i,Ri(Mt))}else{I&&dt&&(M.style[x]=st/1e3+"s"),j.style.cssText=cn(et,nt,tt,dt),I&&F&&!$&&(V.style.width=fn(tt,nt,rt));var i=F&&!$?dn(tt,nt,rt):"";nt&&(i+=vn(nt)),i&&ki(Mt,"#"+Yt+" > .tns-item",i,Ri(Mt))}if(k&&D)for(var a in k){a=parseInt(a);var r=k[a],i="",o="",u="",l="",s="",c=$?null:sn("items",a),f=sn("fixedWidth",a),d=sn("speed",a),v=sn("edgePadding",a),p=sn("autoHeight",a),h=sn("gutter",a);x&&M&&sn("autoHeight",a)&&"speed"in r&&(o="#"+Yt+"-mw{"+hn(d)+"}"),("edgePadding"in r||"gutter"in r)&&(u="#"+Yt+"-iw{"+cn(v,h,f,d,p)+"}"),I&&F&&!$&&("fixedWidth"in r||"items"in r||tt&&"gutter"in r)&&(l="width:"+fn(f,h,c)+";"),x&&"speed"in r&&(l+=hn(d)),l&&(l="#"+Yt+"{"+l+"}"),("fixedWidth"in r||tt&&"gutter"in r||!I&&"items"in r)&&(s+=dn(f,h,c)),"gutter"in r&&(s+=vn(h)),!I&&"speed"in r&&(x&&(s+=hn(d)),b&&(s+=mn(d))),s&&(s="#"+Yt+" > .tns-item{"+s+"}"),(i=o+u+l+s)&&Mt.insertRule("@media (min-width: "+a/16+"em) {"+i+"}",Mt.cssRules.length)}}(),yn();var _e=ft?I?function(){var t=zt,e=Wt;t+=ot,e-=ot,et?(t+=1,e-=1):tt&&(it+nt)%(tt+nt)&&(e-=1),Nt&&(e<It?It-=Q:It<t&&(It+=Q))}:function(){if(Wt<It)for(;zt+Q<=It;)It-=Q;else if(It<zt)for(;It<=Wt-Q;)It+=Q}:function(){It=Math.max(zt,Math.min(Wt,It))},Ze=I?function(){var e,n,i,a,t,r,o,u,l,s,c;Jn(V,""),x||!st?(ti(),st&&Yi(V)||ai()):(e=V,n=Ot,i=Dt,a=kt,t=Zn(),r=st,o=ai,u=Math.min(r,10),l=0<=t.indexOf("%")?"%":"px",t=t.replace(l,""),s=Number(e.style[n].replace(i,"").replace(a,"").replace(l,"")),c=(t-s)/r*u,setTimeout(function t(){r-=u,s+=c,e.style[n]=i+s+l+a,0<r?setTimeout(t,u):o()},u)),F||Ci()}:function(){At=[];var t={};t[s]=t[c]=ai,_i(G[Pt],t),Ui(G[It],t),ei(Pt,P,z,!0),ei(It,W,P),s&&c&&st&&Yi(V)||ai()};return{version:"2.9.
13
vendor: 16,897 bytes, lines 1-2
1",getInfo:Ei,events:Qt,goTo:ri,play:function(){gt&&!Pe&&(ci(),We=!1)},pause:function(){Pe&&(fi(),We=!0)},isOn:Y,updateSliderHeight:Fn,refresh:yn,destroy:function(){if(Mt.disabled=!0,Mt.ownerNode&&Mt.ownerNode.remove(),_i(m,{resize:Cn}),lt&&_i(O,ie),xe&&_i(xe,$t),Ae&&_i(Ae,te),_i(V,ee),_i(V,ne),je&&_i(je,{click:di}),gt&&clearInterval(Ie),I&&s){var t={};t[s]=ai,_i(V,t)}mt&&_i(V,ae),yt&&_i(V,re);var r=[A,be,Me,Te,Ne,Ve];for(var e in d.forEach(function(t,e){var n="container"===t?T:H[t];if("object"==typeof n&&n){var i=!!n.previousElementSibling&&n.previousElementSibling,a=n.parentNode;n.outerHTML=r[e],H[t]=i?i.nextElementSibling:a.firstElementChild}}),d=P=z=C=W=F=T=j=V=E=A=G=Q=q=X=$=tt=et=nt=it=rt=ot=ut=lt=st=ct=ft=dt=Mt=Tt=N=At=Nt=Lt=Bt=St=Ht=Ot=Dt=kt=Rt=It=Pt=zt=Wt=Ft=jt=Vt=Gt=Qt=Xt=Yt=Kt=Jt=Ut=_t=Zt=$t=te=ee=ne=ie=ae=re=oe=ue=le=se=ce=fe=de=pe=he=L=vt=pt=xe=be=we=Ce=ye=ge=ht=Ae=Ne=Ee=Le=Be=Se=He=Oe=De=ke=Re=gt=xt=Fe=bt=wt=je=Ve=Ct=Ge=Ie=Pe=ze=We=qe=Ye=Ke=Qe=Je=Xe=Ue=mt=yt=null,this)"rebuild"!==e&&(this[e]=null);Y=!1},rebuild:function(){return $i(Li(H,v))}}}function $e(t){t&&(vt=ht=mt=yt=lt=gt=wt=Ct=!1)}function tn(){for(var t=I?It-Nt:It;t<0;)t+=Q;return t%Q+1}function en(t){return t=t?Math.max(0,Math.min(ft?Q-1:Q-rt,t)):0,I?t+Nt:t}function nn(t){for(null==t&&(t=It),I&&(t-=Nt);t<0;)t+=Q;return Math.floor(t%Q)}function an(){var t,e=nn();return t=le?e:tt||$?Math.ceil((e+1)*Le/Q-1):Math.floor(e/rt),!ft&&I&&It===Wt&&(t=Le-1),t}function rn(){return m.innerWidth||O.documentElement.clientWidth||O.body.clientWidth}function on(t){return"top"===t?"afterbegin":"beforeend"}function un(){var t=et?2*et-nt:0;return function t(e){if(null!=e){var n,i,a=O.createElement("div");return e.appendChild(a),i=(n=a.getBoundingClientRect()).right-n.left,a.remove(),i||t(e.parentNode)}}(E)-t}function ln(t){if(H[t])return!0;if(k)for(var e in k)if(k[e][t])return!0;return!1}function sn(t,e){if(null==e&&(e=X),"items"===t&&tt)return Math.floor((it+nt)/(tt+nt))||1;var n=H[t];if(k)for(var i in k)e>=parseInt(i)&&t in k[i]&&(n=k[i][t]);return"slideBy"===t&&"page"===n&&(n=sn("items")),I||"slideBy"!==t&&"items"!==t||(n=Math.floor(n)),n}function cn(t,e,n,i,a){var r="";if(void 0!==t){var o=t;e&&(o-=e),r=F?"margin: 0 "+o+"px 0 "+t+"px;":"margin: "+t+"px 0 "+o+"px 0;"}else if(e&&!n){var u="-"+e+"px";r="margin: 0 "+(F?u+" 0 0":"0 "+u+" 0")+";"}return!I&&a&&x&&i&&(r+=hn(i)),r}function fn(t,e,n){return t?(t+e)*Lt+"px":y?y+"("+100*Lt+"% / "+n+")":100*Lt/n+"%"}function dn(t,e,n){var i;if(t)i=t+e+"px";else{I||(n=Math.floor(n));var a=I?Lt:n;i=y?y+"(100% / "+a+")":100/a+"%"}return i="width:"+i,"inner"!==R?i+";":i+" !important;"}function vn(t){var e="";!1!==t&&(e=(F?"padding-":"margin-")+(F?"right":"bottom")+": "+t+"px;");return e}function pn(t,e){var n=t.substring(0,t.length-e).toLowerCase();return n&&(n="-"+n+"-"),n}function hn(t){return pn(x,18)+"transition-duration:"+t/1e3+"s;"}function mn(t){return pn(b,17)+"animation-duration:"+t/1e3+"s;"}function yn(){if(ln("autoHeight")||$||!F){var t=V.querySelectorAll("img");Ii(t,function(t){var e=t.src;Tt||(e&&e.indexOf("data:image")<0?(t.src="",Ui(t,he),zi(t,"loading"),t.src=e):kn(t))}),Ai(function(){zn(Gi(t),function(){L=!0})}),ln("autoHeight")&&(t=In(It,Math.min(It+rt-1,Lt-1))),Tt?gn():Ai(function(){zn(Gi(t),gn)})}else I&&$n(),bn(),wn()}function gn(){if($&&1<Q){var i=ft?It:Q-1;!function t(){var e=G[i].getBoundingClientRect().left,n=G[i-1].getBoundingClientRect().right;Math.abs(e-n)<=1?xn():setTimeout(function(){t()},16)}()}else xn()}function xn(){F&&!$||(jn(),$?(St=_n(),Ut&&(_t=Tn()),Wt=Rt(),$e(Kt||_t)):Ci()),I&&$n(),bn(),wn()}function bn(){if(Vn(),T.insertAdjacentHTML("afterbegin",'<div class="tns-liveregion tns-visually-hidden" aria-live="polite" aria-atomic="true">slide <span class="current">'+Hn()+"</span> of "+Q+"</div>"),B=T.querySelector(".tns-liveregion .current"),se){var t=gt?"stop":"start";je?ji(je,{"data-action":t}):H.autoplayButtonOutput&&(T.insertAdjacentHTML(on(H.autoplayPosition),'<button type="button" data-action="'+t+'">'+Ge[0]+t+Ge[1]+bt[0]+"</button>"),je=T.querySelector("[data-action]")),je&&Ui(je,{click:di}),gt&&(ci(),wt&&Ui(V,ee),Ct&&Ui(V,ne))}if(ue){if(Ae)ji(Ae,{"aria-label":"Carousel Pagination"}),Ii(Ee=Ae.children,function(t,e){ji(t,{"data-nav":e,tabindex:"-1","aria-label":ke+(e+1),"aria-controls":Yt})});else{for(var e="",n=le?"":'style="display:none"',i=0;i<Q;i++)e+='<button type="button" data-nav="'+i+'" tabindex="-1" aria-controls="'+Yt+'" '+n+' aria-label="'+ke+(i+1)+'"></button>';e='<div class="tns-nav" aria-label="Carousel Pagination">'+e+"</div>",T.insertAdjacentHTML(on(H.navPosition),e),Ae=T.querySelector(".tns-nav"),Ee=Ae.children}if(Ti(),x){var a=x.substring(0,x.length-18).toLowerCase(),r="transition: all "+st/1e3+"s";a&&(r="-"+a+"-"+r),ki(Mt,"[aria-controls^="+Yt+"-item]",r,Ri(Mt))}ji(Ee[He],{"aria-label":ke+(He+1)+Re}),Vi(Ee[He],"tabindex"),zi(Ee[He],De),Ui(Ae,te)}oe&&(xe||we&&Ce||(T.insertAdjacentHTML(on(H.controlsPosition),'<div class="tns-controls" aria-label="Carousel Navigation" tabindex="0"><button type="button" data-controls="prev" tabindex="-1" aria-controls="'+Yt+'">'+pt[0]+'</button><button type="button" data-controls="next" tabindex="-1" aria-controls="'+Yt+'">'+pt[1]+"</button></div>"),xe=T.querySelector(".tns-controls")),we&&Ce||(we=xe.children[0],Ce=xe.children[1]),H.controlsContainer&&ji(xe,{"aria-label":"Carousel Navigation",tabindex:"0"}),(H.controlsContainer||H.prevButton&&H.nextButton)&&ji([we,Ce],{"aria-controls":Yt,tabindex:"-1"}),(H.controlsContainer||H.prevButton&&H.nextButton)&&(ji(we,{"data-controls":"prev"}),ji(Ce,{"data-controls":"next"})),ye=Qn(we),ge=Qn(Ce),Kn(),xe?Ui(xe,$t):(Ui(we,$t),Ui(Ce,$t))),An()}function wn(){if(I&&s){var t={};t[s]=ai,Ui(V,t)}mt&&Ui(V,ae,H.preventScrollOnTouch),yt&&Ui(V,re),lt&&Ui(O,ie),"inner"===R?Qt.on("outerResized",function(){Mn(),Qt.emit("innerLoaded",Ei())}):(k||tt||$||dt||!F)&&Ui(m,{resize:Cn}),dt&&("outer"===R?Qt.on("innerLoaded",Pn):Kt||Pn()),Dn(),Kt?Bn():_t&&Ln(),Qt.on("indexChanged",Wn),"inner"===R&&Qt.emit("innerLoaded",Ei()),"function"==typeof Gt&&Gt(Ei()),Y=!0}function Cn(t){Ai(function(){Mn(pi(t))})}function Mn(t){if(Y){"outer"===R&&Qt.emit("outerResized",Ei(t)),X=rn();var e,n=q,i=!1;k&&(En(),(e=n!==q)&&Qt.emit("newBreakpointStart",Ei(t)));var a,r,o,u,l=rt,s=Kt,c=_t,f=lt,d=vt,v=ht,p=mt,h=yt,m=gt,y=wt,g=Ct,x=It;if(e){var b=tt,w=dt,C=pt,M=at,T=bt;if(!D)var E=nt,A=et}if(lt=sn("arrowKeys"),vt=sn("controls"),ht=sn("nav"),mt=sn("touch"),at=sn("center"),yt=sn("mouseDrag"),gt=sn("autoplay"),wt=sn("autoplayHoverPause"),Ct=sn("autoplayResetOnVisibility"),e&&(Kt=sn("disable"),tt=sn("fixedWidth"),st=sn("speed"),dt=sn("autoHeight"),pt=sn("controlsText"),bt=sn("autoplayText"),xt=sn("autoplayTimeout"),D||(et=sn("edgePadding"),nt=sn("gutter"))),$e(Kt),it=un(),F&&!$||Kt||(jn(),F||(Ci(),i=!0)),(tt||$)&&(St=_n(),Wt=Rt()),(e||tt)&&(rt=sn("items"),ot=sn("slideBy"),(r=rt!==l)&&(tt||$||(Wt=Rt()),_e())),e&&Kt!==s&&(Kt?Bn():function(){if(!Jt)return;if(Mt.disabled=!1,V.className+=Xt,$n(),ft)for(var t=Nt;t--;)I&&Xi(G[t]),Xi(G[Lt-t-1]);if(!I)for(var e=It,n=It+Q;e<n;e++){var i=G[e],a=e<It+rt?P:W;i.style.left=100*(e-It)/rt+"%",zi(i,a)}Nn(),Jt=!1}()),Ut&&(e||tt||$)&&(_t=Tn())!==c&&(_t?(ti(Zn(en(0))),Ln()):(!function(){if(!Zt)return;et&&D&&(j.style.margin="");if(Nt)for(var t="tns-transparent",e=Nt;e--;)I&&Wi(G[e],t),Wi(G[Lt-e-1],t);Nn(),Zt=!1}(),i=!0)),$e(Kt||_t),gt||(wt=Ct=!1),lt!==f&&(lt?Ui(O,ie):_i(O,ie)),vt!==d&&(vt?xe?Xi(xe):(we&&Xi(we),Ce&&Xi(Ce)):xe?Qi(xe):(we&&Qi(we),Ce&&Qi(Ce))),ht!==v&&(ht?(Xi(Ae),Ti()):Qi(Ae)),mt!==p&&(mt?Ui(V,ae,H.preventScrollOnTouch):_i(V,ae)),yt!==h&&(yt?Ui(V,re):_i(V,re)),gt!==m&&(gt?(je&&Xi(je),Pe||We||ci()):(je&&Qi(je),Pe&&fi())),wt!==y&&(wt?Ui(V,ee):_i(V,ee)),Ct!==g&&(Ct?Ui(O,ne):_i(O,ne)),e){if(tt===b&&at===M||(i=!0),dt!==w&&(dt||(j.style.height="")),vt&&pt!==C&&(we.innerHTML=pt[0],Ce.innerHTML=pt[1]),je&&bt!==T){var N=gt?1:0,L=je.innerHTML,B=L.length-T[N].length;L.substring(B)===T[N]&&(je.innerHTML=L.substring(0,B)+bt[N])}}else at&&(tt||$)&&(i=!0);if((r||tt&&!$)&&(Le=Mi(),Ti()),(a=It!==x)?(Qt.emit("indexChanged",Ei()),i=!0):r?a||Wn():(tt||$)&&(Dn(),Vn(),Sn()),r&&!I&&function(){for(var t=It+Math.min(Q,rt),e=Lt;e--;){var n=G[e];It<=e&&e<t?(zi(n,"tns-moving"),n.style.left=100*(e-It)/rt+"%",zi(n,P),Wi(n,W)):n.style.left&&(n.style.left="",zi(n,W),Wi(n,P)),Wi(n,z)}setTimeout(function(){Ii(G,function(t){Wi(t,"tns-moving")})},300)}(),!Kt&&!_t){if(e&&!D&&(et===A&&nt===E||(j.style.cssText=cn(et,nt,tt,st,dt)),F)){I&&(V.style.width=fn(tt,nt,rt));var S=dn(tt,nt,rt)+vn(nt);u=Ri(o=Mt)-1,"deleteRule"in o?o.deleteRule(u):o.removeRule(u),ki(Mt,"#"+Yt+" > .tns-item",S,Ri(Mt))}dt&&Pn(),i&&($n(),Pt=It)}e&&Qt.emit("newBreakpointEnd",Ei(t))}}function Tn(){if(!tt&&!$)return Q<=(at?rt-(rt-1)/2:rt);var t=tt?(tt+nt)*Q:N[Q],e=et?it+2*et:it+nt;return at&&(e-=tt?(it-tt)/2:(it-(N[It+1]-N[It]-nt))/2),t<=e}function En(){for(var t in q=0,k)(t=parseInt(t))<=X&&(q=t)}function An(){!gt&&je&&Qi(je),!ht&&Ae&&Qi(Ae),vt||(xe?Qi(xe):(we&&Qi(we),Ce&&Qi(Ce)))}function Nn(){gt&&je&&Xi(je),ht&&Ae&&Xi(Ae),vt&&(xe?Xi(xe):(we&&Xi(we),Ce&&Xi(Ce)))}function Ln(){if(!Zt){if(et&&(j.style.margin="0px"),Nt)for(var t="tns-transparent",e=Nt;e--;)I&&zi(G[e],t),zi(G[Lt-e-1],t);An(),Zt=!0}}function Bn(){if(!Jt){if(Mt.disabled=!0,V.className=V.className.replace(Xt.substring(1),""),Vi(V,["style"]),ft)for(var t=Nt;t--;)I&&Qi(G[t]),Qi(G[Lt-t-1]);if(F&&I||Vi(j,["style"]),!I)for(var e=It,n=It+Q;e<n;e++){var i=G[e];Vi(i,["style"]),Wi(i,P),Wi(i,W)}An(),Jt=!0}}function Sn(){var t=Hn();B.innerHTML!==t&&(B.innerHTML=t)}function Hn(){var t=On(),e=t[0]+1,n=t[1]+1;return e===n?e+"":e+" to "+n}function On(t){null==t&&(t=Zn());var n,i,a,r=It;if(at||et?($||tt)&&(i=-(parseFloat(t)+et),a=i+it+2*et):$&&(i=N[It],a=i+it),$)N.forEach(function(t,e){e<Lt&&((at||et)&&t<=i+.5&&(r=e),.5<=a-t&&(n=e))});else{if(tt){var e=tt+nt;at||et?(r=Math.floor(i/e),n=Math.ceil(a/e-1)):n=r+Math.ceil(it/e)-1}else if(at||et){var o=rt-1;if(at?(r-=o/2,n=It+o/2):n=It+o,et){var u=et*rt/it;r-=u,n+=u}r=Math.floor(r),n=Math.ceil(n)}else n=r+rt-1;r=Math.max(r,0),n=Math.min(n,Lt-1)}return[r,n]}function Dn(){if(Tt&&!Kt){var t=On();t.push(Et),In.apply(null,t).forEach(function(t){if(!Pi(t,pe)){var e={};e[s]=function(t){t.stopPropagation()},Ui(t,e),Ui(t,he),t.src=Fi(t,"data-src");var n=Fi(t,"data-srcset");n&&(t.srcset=n),zi(t,"loading")}})}}function kn(t){zi(t,"loaded"),Rn(t)}function Rn(t){zi(t,pe),Wi(t,"loading"),_i(t,he)}function In(t,e,n){var i=[];for(n||(n="img");t<=e;)Ii(G[t].querySelectorAll(n),function(t){i.push(t)}),t++;return i}function Pn(){var t=In.apply(null,On());Ai(function(){zn(t,Fn)})}function zn(n,t){return L?t():(n.forEach(function(t,e){!Tt&&t.complete&&Rn(t),Pi(t,pe)&&n.splice(e,1)}),n.length?void Ai(function(){zn(n,t)}):t())}function Wn(){Dn(),Vn(),Sn(),Kn(),function(){if(ht&&(He=0<=Se?Se:an(),Se=-1,He!==Oe)){var t=Ee[Oe],e=Ee[He];ji(t,{tabindex:"-1","aria-label":ke+(Oe+1)}),Wi(t,De),ji(e,{"aria-label":ke+(He+1)+Re}),Vi(e,"tabindex"),zi(e,De),Oe=He}}()}function qn(t,e){for(var n=[],i=t,a=Math.min(t+e,Lt);i<a;i++)n.push(G[i].offsetHeight);return Math.max.apply(null,n)}function Fn(){var t=dt?qn(It,rt):qn(Nt,Q),e=M||j;e.style.height!==t&&(e.style.height=t+"px")}function jn(){N=[0];var n=F?"left":"top",i=F?"right":"bottom",a=G[0].getBoundingClientRect()[n];Ii(G,function(t,e){e&&N.push(t.getBoundingClientRect()[n]-a),e===Lt-1&&N.push(t.getBoundingClientRect()[i]-a)})}function Vn(){var t=On(),n=t[0],i=t[1];Ii(G,function(t,e){n<=e&&e<=i?qi(t,"aria-hidden")&&(Vi(t,["aria-hidden","tabindex"]),zi(t,de)):qi(t,"aria-hidden")||(ji(t,{"aria-hidden":"true",tabindex:"-1"}),Wi(t,de))})}function Gn(t){return t.nodeName.toLowerCase()}function Qn(t){return"button"===Gn(t)}function Xn(t){return"true"===t.getAttribute("aria-disabled")}function Yn(t,e,n){t?e.disabled=n:e.setAttribute("aria-disabled",n.toString())}function Kn(){if(vt&&!ct&&!ft){var t=ye?we.disabled:Xn(we),e=ge?Ce.disabled:Xn(Ce),n=It<=zt,i=!ct&&Wt<=It;n&&!t&&Yn(ye,we,!0),!n&&t&&Yn(ye,we,!1),i&&!e&&Yn(ge,Ce,!0),!i&&e&&Yn(ge,Ce,!1)}}function Jn(t,e){x&&(t.style[x]=e)}function Un(t){return null==t&&(t=It),$?(it-(et?nt:0)-(N[t+1]-N[t]-nt))/2:tt?(it-tt)/2:(rt-1)/2}function _n(){var t=it+(et?nt:0)-(tt?(tt+nt)*Lt:N[Lt]);return at&&!ft&&(t=tt?-(tt+nt)*(Lt-1)-Un():Un(Lt-1)-N[Lt-1]),0<t&&(t=0),t}function Zn(t){var e;if(null==t&&(t=It),F&&!$)if(tt)e=-(tt+nt)*t,at&&(e+=Un());else{var n=r?Lt:rt;at&&(t-=Un()),e=100*-t/n}else e=-N[t],at&&$&&(e+=Un());return Bt&&(e=Math.max(e,St)),e+=!F||$||tt?"px":"%"}function $n(t){Jn(V,"0s"),ti(t)}function ti(t){null==t&&(t=Zn()),V.style[Ot]=Dt+t+kt}function ei(t,e,n,i){var a=t+rt;ft||(a=Math.min(a,Lt));for(var r=t;r<a;r++){var o=G[r];i||(o.style.left=100*(r-It)/rt+"%"),C&&u&&(o.style[u]=o.style[l]=C*(r-t)/1e3+"s"),Wi(o,e),zi(o,n),i&&At.push(o)}}function ni(t,e){Ht&&_e(),(It!==Pt||e)&&(Qt.emit("indexChanged",Ei()),Qt.emit("transitionStart",Ei()),dt&&Pn(),Pe&&t&&0<=["click","keydown"].indexOf(t.type)&&fi(),Vt=!0,Ze())}function ii(t){return t.toLowerCase().replace(/-/g,"")}function ai(t){if(I||Vt){if(Qt.emit("transitionEnd",Ei(t)),!I&&0<At.length)for(var e=0;e<At.length;e++){var n=At[e];n.style.left="",l&&u&&(n.style[l]="",n.style[u]=""),Wi(n,z),zi(n,W)}if(!t||!I&&t.target.parentNode===V||t.target===V&&ii(t.propertyName)===ii(Ot)){if(!Ht){var i=It;_e(),It!==i&&(Qt.emit("indexChanged",Ei()),$n())}"inner"===R&&Qt.emit("innerLoaded",Ei()),Vt=!1,Pt=It}}}function ri(t,e){if(!_t)if("prev"===t)oi(e,-1);else if("next"===t)oi(e,1);else{if(Vt){if(qt)return;ai()}var n=nn(),i=0;if("first"===t?i=-n:"last"===t?i=I?Q-rt-n:Q-1-n:("number"!=typeof t&&(t=parseInt(t)),isNaN(t)||(e||(t=Math.max(0,Math.min(Q-1,t))),i=t-n)),!I&&i&&Math.abs(i)<rt){var a=0<i?1:-1;i+=zt<=It+i-Q?Q*a:2*Q*a*-1}It+=i,I&&ft&&(It<zt&&(It+=Q),Wt<It&&(It-=Q)),nn(It)!==nn(Pt)&&ni(e)}}function oi(t,e){if(Vt){if(qt)return;ai()}var n;if(!e){for(var i=hi(t=pi(t));i!==xe&&[we,Ce].indexOf(i)<0;)i=i.parentNode;var a=[we,Ce].indexOf(i);0<=a&&(n=!0,e=0===a?-1:1)}if(ct){if(It===zt&&-1===e)return void ri("last",t);if(It===Wt&&1===e)return void ri("first",t)}e&&(It+=ot*e,$&&(It=Math.floor(It)),ni(n||t&&"keydown"===t.type?t:null))}function ui(){Ie=setInterval(function(){oi(null,Fe)},xt),Pe=!0}function li(){clearInterval(Ie),Pe=!1}function si(t,e){ji(je,{"data-action":t}),je.innerHTML=Ge[0]+t+Ge[1]+e}function ci(){ui(),je&&si("stop",bt[1])}function fi(){li(),je&&si("start",bt[0])}function di(){Pe?(fi(),We=!0):(ci(),We=!1)}function vi(t){t.focus()}function pi(t){return mi(t=t||m.event)?t.changedTouches[0]:t}function hi(t){return t.target||m.event.srcElement}function mi(t){return 0<=t.type.indexOf("touch")}function yi(t){t.preventDefault?t.preventDefault():t.returnValue=!1}function gi(){return a=Ke.y-Ye.y,r=Ke.x-Ye.x,t=Math.atan2(a,r)*(180/Math.PI),e=Ft,n=!1,i=Math.abs(90-Math.abs(t)),90-e<=i?n="horizontal":i<=e&&(n="vertical"),n===H.axis;var t,e,n,i,a,r}function xi(t){if(Vt){if(qt)return;ai()}gt&&Pe&&li(),Je=!0,Xe&&(Ni(Xe),Xe=null);var e=pi(t);Qt.emit(mi(t)?"touchStart":"dragStart",Ei(t)),!mi(t)&&0<=["img","a"].indexOf(Gn(hi(t)))&&yi(t),Ke.x=Ye.x=e.clientX,Ke.y=Ye.y=e.clientY,I&&(Qe=parseFloat(V.style[Ot].replace(Dt,"")),Jn(V,"0s"))}function bi(t){if(Je){var e=pi(t);Ke.x=e.clientX,Ke.y=e.clientY,I?Xe||(Xe=Ai(function(){!function t(e){if(!jt)return void(Je=!1);Ni(Xe);Je&&(Xe=Ai(function(){t(e)}));"?"===jt&&(jt=gi());if(jt){!me&&mi(e)&&(me=!0);try{e.type&&Qt.emit(mi(e)?"touchMove":"dragMove",Ei(e))}catch(t){}var n=Qe,i=Ue(Ke,Ye);if(!F||tt||$)n+=i,n+="px";else{var a=r?i*rt*100/((it+nt)*Lt):100*i/(it+nt);n+=a,n+="%"}V.style[Ot]=Dt+n+kt}}(t)})):("?"===jt&&(jt=gi()),jt&&(me=!0)),("boolean"!=typeof t.cancelable||t.cancelable)&&me&&t.preventDefault()}}function wi(i){if(Je){Xe&&(Ni(Xe),Xe=null),I&&Jn(V,""),Je=!1;var t=pi(i);Ke.x=t.clientX,Ke.y=t.clientY;var a=Ue(Ke,Ye);if(Math.abs(a)){if(!mi(i)){var n=hi(i);Ui(n,{click:function t(e){yi(e),_i(n,{click:t})}})}I?Xe=Ai(function(){if(F&&!$){var t=-a*rt/(it+nt);t=0<a?Math.floor(t):Math.ceil(t),It+=t}else{var e=-(Qe+a);if(e<=0)It=zt;else if(e>=N[Lt-1])It=Wt;else for(var n=0;n<Lt&&e>=N[n];)e>N[It=n]&&a<0&&(It+=1),n++}ni(i,a),Qt.emit(mi(i)?"touchEnd":"dragEnd",Ei(i))}):jt&&oi(i,0<a?-1:1)}}"auto"===H.preventScrollOnTouch&&(me=!1),Ft&&(jt="?"),gt&&!Pe&&ui()}function Ci(){(M||j).style.height=N[It+rt]-N[It]+"px"}function Mi(){var t=tt?(tt+nt)*Q/it:Q/rt;return Math.min(Math.ceil(t),Q)}function Ti(){if(ht&&!le&&Le!==Be){var t=Be,e=Le,n=Xi;for(Le<Be&&(t=Le,e=Be,n=Qi);t<e;)n(Ee[t]),t++;Be=Le}}function Ei(t){return{container:V,slideItems:G,navContainer:Ae,navItems:Ee,controlsContainer:xe,hasControls:oe,prevButton:we,nextButton:Ce,items:rt,slideBy:ot,cloneCount:Nt,slideCount:Q,slideCountNew:Lt,index:It,indexCached:Pt,displayIndex:tn(),navCurrentIndex:He,navCurrentIndexCached:Oe,pages:Le,pagesCached:Be,sheet:Mt,isOn:Y,event:t||{}}}f&&console.warn("No slides found in",H.container)};return $i}(); 2//# sourceMappingURL=../sourcemaps/tiny-slider.js.map
3 4/*SIGUIENTE LIBRERIA*/ 5/*! 6 * jQuery JavaScript Library v3.6.0 7 * https://jquery.com/ 8 * 9 * Includes Sizzle.js 10 * https://sizzlejs.com/ 11 * 12 * Copyright OpenJS Foundation and other contributors 13 * Released under the MIT license 14 * https://jquery.org/license 15 * 16 * Date: 2021-03-02T17:08Z 17 */ 18( function( global, factory ) { 19 20 "use strict"; 21 22 if ( typeof module === "object" && typeof module.exports === "object" ) { 23 24 // For CommonJS and CommonJS-like environments where a proper `window` 25 // is present, execute the factory and get jQuery. 26 // For environments that do not have a `window` with a `document` 27 // (such as Node.js), expose a factory as module.exports. 28 // This accentuates the need for the creation of a real `window`. 29 // e.g. var jQuery = require("jquery")(window); 30 // See ticket #14549 for more info. 31 module.exports = global.document ? 32 factory( global, true ) : 33 function( w ) { 34 if ( !w.document ) { 35 throw new Error( "jQuery requires a window with a document" ); 36 } 37 return factory( w ); 38 }; 39 } else { 40 factory( global ); 41 } 42 43// Pass this if window is not defined yet 44} )( typeof window !== "undefined" ? window : this, function( window, noGlobal ) { 45 46// Edge <= 12 - 13+, Firefox <=18 - 45+, IE 10 - 11, Safari 5.1 - 9+, iOS 6 - 9.1 47// throw exceptions when non-strict code (e.g., ASP.NET 4.5) accesses strict mode 48// arguments.callee.caller (trac-13335). But as of jQuery 3.0 (2016), str
vendor: 2,883 bytes, lines 48-158
48ict mode should be common 49// enough that all such attempts are guarded in a try block. 50"use strict"; 51 52var arr = []; 53 54var getProto = Object.getPrototypeOf; 55 56var slice = arr.slice; 57 58var flat = arr.flat ? function( array ) { 59 return arr.flat.call( array ); 60} : function( array ) { 61 return arr.concat.apply( [], array ); 62}; 63 64 65var push = arr.push; 66 67var indexOf = arr.indexOf; 68 69var class2type = {}; 70 71var toString = class2type.toString; 72 73var hasOwn = class2type.hasOwnProperty; 74 75var fnToString = hasOwn.toString; 76 77var ObjectFunctionString = fnToString.call( Object ); 78 79var support = {}; 80 81var isFunction = function isFunction( obj ) { 82 83 // Support: Chrome <=57, Firefox <=52 84 // In some browsers, typeof returns "function" for HTML <object> elements 85 // (i.e., `typeof document.createElement( "object" ) === "function"`). 86 // We don't want to classify *any* DOM node as a function. 87 // Support: QtWeb <=3.8.5, WebKit <=534.34, wkhtmltopdf tool <=0.12.5 88 // Plus for old WebKit, typeof returns "function" for HTML collections 89 // (e.g., `typeof document.getElementsByTagName("div") === "function"`). (gh-4756) 90 return typeof obj === "function" && typeof obj.nodeType !== "number" && 91 typeof obj.item !== "function"; 92 }; 93 94 95var isWindow = function isWindow( obj ) { 96 return obj != null && obj === obj.window; 97 }; 98 99 100var document = window.document; 101 102 103 104 var preservedScriptAttributes = { 105 type: true, 106 src: true, 107 nonce: true, 108 noModule: true 109 }; 110 111 function DOMEval( code, node, doc ) { 112 doc = doc || document; 113 114 var i, val, 115 script = doc.createElement( "script" ); 116 117 script.text = code; 118 if ( node ) { 119 for ( i in preservedScriptAttributes ) { 120 121 // Support: Firefox 64+, Edge 18+ 122 // Some browsers don't support the "nonce" property on scripts. 123 // On the other hand, just using `getAttribute` is not enough as 124 // the `nonce` attribute is reset to an empty string whenever it 125 // becomes browsing-context connected. 126 // See https://github.com/whatwg/html/issues/2369 127 // See https://html.spec.whatwg.org/#nonce-attributes 128 // The `node.getAttribute` check was added for the sake of 129 // `jQuery.globalEval` so that it can fake a nonce-containing node 130 // via an object. 131 val = node[ i ] || node.getAttribute && node.getAttribute( i ); 132 if ( val ) { 133 script.setAttribute( i, val ); 134 } 135 } 136 } 137 doc.head.appendChild( script ).parentNode.removeChild( script ); 138 } 139 140 141function toType( obj ) { 142 if ( obj == null ) { 143 return obj + ""; 144 } 145 146 // Support: Android <=2.3 only (functionish RegExp) 147 return typeof obj === "object" || typeof obj === "function" ? 148 class2type[ toString.call( obj ) ] || "object" : 149 typeof obj; 150} 151/* global Symbol */ 152// Defining this global in .eslintrc.json would create a danger of using the global 153// unguarded in another place, it seems safer to define global only for this module 154 155 156 157var 158 version = "3.6.0
vendor: 183,283 bytes, lines 158-6953
158", 159 160 // Define a local copy of jQuery 161 jQuery = function( selector, context ) { 162 163 // The jQuery object is actually just the init constructor 'enhanced' 164 // Need init if jQuery is called (just allow error to be thrown if not included) 165 return new jQuery.fn.init( selector, context ); 166 }; 167 168jQuery.fn = jQuery.prototype = { 169 170 // The current version of jQuery being used 171 jquery: version, 172 173 constructor: jQuery, 174 175 // The default length of a jQuery object is 0 176 length: 0, 177 178 toArray: function() { 179 return slice.call( this ); 180 }, 181 182 // Get the Nth element in the matched element set OR 183 // Get the whole matched element set as a clean array 184 get: function( num ) { 185 186 // Return all the elements in a clean array 187 if ( num == null ) { 188 return slice.call( this ); 189 } 190 191 // Return just the one element from the set 192 return num < 0 ? this[ num + this.length ] : this[ num ]; 193 }, 194 195 // Take an array of elements and push it onto the stack 196 // (returning the new matched element set) 197 pushStack: function( elems ) { 198 199 // Build a new jQuery matched element set 200 var ret = jQuery.merge( this.constructor(), elems ); 201 202 // Add the old object onto the stack (as a reference) 203 ret.prevObject = this; 204 205 // Return the newly-formed element set 206 return ret; 207 }, 208 209 // Execute a callback for every element in the matched set. 210 each: function( callback ) { 211 return jQuery.each( this, callback ); 212 }, 213 214 map: function( callback ) { 215 return this.pushStack( jQuery.map( this, function( elem, i ) { 216 return callback.call( elem, i, elem ); 217 } ) ); 218 }, 219 220 slice: function() { 221 return this.pushStack( slice.apply( this, arguments ) ); 222 }, 223 224 first: function() { 225 return this.eq( 0 ); 226 }, 227 228 last: function() { 229 return this.eq( -1 ); 230 }, 231 232 even: function() { 233 return this.pushStack( jQuery.grep( this, function( _elem, i ) { 234 return ( i + 1 ) % 2; 235 } ) ); 236 }, 237 238 odd: function() { 239 return this.pushStack( jQuery.grep( this, function( _elem, i ) { 240 return i % 2; 241 } ) ); 242 }, 243 244 eq: function( i ) { 245 var len = this.length, 246 j = +i + ( i < 0 ? len : 0 ); 247 return this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] ); 248 }, 249 250 end: function() { 251 return this.prevObject || this.constructor(); 252 }, 253 254 // For internal use only. 255 // Behaves like an Array's method, not like a jQuery method. 256 push: push, 257 sort: arr.sort, 258 splice: arr.splice 259}; 260 261jQuery.extend = jQuery.fn.extend = function() { 262 var options, name, src, copy, copyIsArray, clone, 263 target = arguments[ 0 ] || {}, 264 i = 1, 265 length = arguments.length, 266 deep = false; 267 268 // Handle a deep copy situation 269 if ( typeof target === "boolean" ) { 270 deep = target; 271 272 // Skip the boolean and the target 273 target = arguments[ i ] || {}; 274 i++; 275 } 276 277 // Handle case when target is a string or something (possible in deep copy) 278 if ( typeof target !== "object" && !isFunction( target ) ) { 279 target = {}; 280 } 281 282 // Extend jQuery itself if only one argument is passed 283 if ( i === length ) { 284 target = this; 285 i--; 286 } 287 288 for ( ; i < length; i++ ) { 289 290 // Only deal with non-null/undefined values 291 if ( ( options = arguments[ i ] ) != null ) { 292 293 // Extend the base object 294 for ( name in options ) { 295 copy = options[ name ]; 296 297 // Prevent Object.prototype pollution 298 // Prevent never-ending loop 299 if ( name === "__proto__" || target === copy ) { 300 continue; 301 } 302 303 // Recurse if we're merging plain objects or arrays 304 if ( deep && copy && ( jQuery.isPlainObject( copy ) || 305 ( copyIsArray = Array.isArray( copy ) ) ) ) { 306 src = target[ name ]; 307 308 // Ensure proper type for the source value 309 if ( copyIsArray && !Array.isArray( src ) ) { 310 clone = []; 311 } else if ( !copyIsArray && !jQuery.isPlainObject( src ) ) { 312 clone = {}; 313 } else { 314 clone = src; 315 } 316 copyIsArray = false; 317 318 // Never move original objects, clone them 319 target[ name ] = jQuery.extend( deep, clone, copy ); 320 321 // Don't bring in undefined values 322 } else if ( copy !== undefined ) { 323 target[ name ] = copy; 324 } 325 } 326 } 327 } 328 329 // Return the modified object 330 return target; 331}; 332 333jQuery.extend( { 334 335 // Unique for each copy of jQuery on the page 336 expando: "jQuery" + ( version + Math.random() ).replace( /\D/g, "" ), 337 338 // Assume jQuery is ready without the ready module 339 isReady: true, 340 341 error: function( msg ) { 342 throw new Error( msg ); 343 }, 344 345 noop: function() {}, 346 347 isPlainObject: function( obj ) { 348 var proto, Ctor; 349 350 // Detect obvious negatives 351 // Use toString instead of jQuery.type to catch host objects 352 if ( !obj || toString.call( obj ) !== "[object Object]" ) { 353 return false; 354 } 355 356 proto = getProto( obj ); 357 358 // Objects with no prototype (e.g., `Object.create( null )`) are plain 359 if ( !proto ) { 360 return true; 361 } 362 363 // Objects with prototype are plain iff they were constructed by a global Object function 364 Ctor = hasOwn.call( proto, "constructor" ) && proto.constructor; 365 return typeof Ctor === "function" && fnToString.call( Ctor ) === ObjectFunctionString; 366 }, 367 368 isEmptyObject: function( obj ) { 369 var name; 370 371 for ( name in obj ) { 372 return false; 373 } 374 return true; 375 }, 376 377 // Evaluates a script in a provided context; falls back to the global one 378 // if not specified. 379 globalEval: function( code, options, doc ) { 380 DOMEval( code, { nonce: options && options.nonce }, doc ); 381 }, 382 383 each: function( obj, callback ) { 384 var length, i = 0; 385 386 if ( isArrayLike( obj ) ) { 387 length = obj.length; 388 for ( ; i < length; i++ ) { 389 if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) { 390 break; 391 } 392 } 393 } else { 394 for ( i in obj ) { 395 if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) { 396 break; 397 } 398 } 399 } 400 401 return obj; 402 }, 403 404 // results is for internal usage only 405 makeArray: function( arr, results ) { 406 var ret = results || []; 407 408 if ( arr != null ) { 409 if ( isArrayLike( Object( arr ) ) ) { 410 jQuery.merge( ret, 411 typeof arr === "string" ? 412 [ arr ] : arr 413 ); 414 } else { 415 push.call( ret, arr ); 416 } 417 } 418 419 return ret; 420 }, 421 422 inArray: function( elem, arr, i ) { 423 return arr == null ? -1 : indexOf.call( arr, elem, i ); 424 }, 425 426 // Support: Android <=4.0 only, PhantomJS 1 only 427 // push.apply(_, arraylike) throws on ancient WebKit 428 merge: function( first, second ) { 429 var len = +second.length, 430 j = 0, 431 i = first.length; 432 433 for ( ; j < len; j++ ) { 434 first[ i++ ] = second[ j ]; 435 } 436 437 first.length = i; 438 439 return first; 440 }, 441 442 grep: function( elems, callback, invert ) { 443 var callbackInverse, 444 matches = [], 445 i = 0, 446 length = elems.length, 447 callbackExpect = !invert; 448 449 // Go through the array, only saving the items 450 // that pass the validator function 451 for ( ; i < length; i++ ) { 452 callbackInverse = !callback( elems[ i ], i ); 453 if ( callbackInverse !== callbackExpect ) { 454 matches.push( elems[ i ] ); 455 } 456 } 457 458 return matches; 459 }, 460 461 // arg is for internal usage only 462 map: function( elems, callback, arg ) { 463 var length, value, 464 i = 0, 465 ret = []; 466 467 // Go through the array, translating each of the items to their new values 468 if ( isArrayLike( elems ) ) { 469 length = elems.length; 470 for ( ; i < length; i++ ) { 471 value = callback( elems[ i ], i, arg ); 472 473 if ( value != null ) { 474 ret.push( value ); 475 } 476 } 477 478 // Go through every key on the object, 479 } else { 480 for ( i in elems ) { 481 value = callback( elems[ i ], i, arg ); 482 483 if ( value != null ) { 484 ret.push( value ); 485 } 486 } 487 } 488 489 // Flatten any nested arrays 490 return flat( ret ); 491 }, 492 493 // A global GUID counter for objects 494 guid: 1, 495 496 // jQuery.support is not used in Core but other projects attach their 497 // properties to it so it needs to exist. 498 support: support 499} ); 500 501if ( typeof Symbol === "function" ) { 502 jQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ]; 503} 504 505// Populate the class2type map 506jQuery.each( "Boolean Number String Function Array Date RegExp Object Error Symbol".split( " " ), 507 function( _i, name ) { 508 class2type[ "[object " + name + "]" ] = name.toLowerCase(); 509 } ); 510 511function isArrayLike( obj ) { 512 513 // Support: real iOS 8.2 only (not reproducible in simulator) 514 // `in` check used to prevent JIT error (gh-2145) 515 // hasOwn isn't used here due to false negatives 516 // regarding Nodelist length in IE 517 var length = !!obj && "length" in obj && obj.length, 518 type = toType( obj ); 519 520 if ( isFunction( obj ) || isWindow( obj ) ) { 521 return false; 522 } 523 524 return type === "array" || length === 0 || 525 typeof length === "number" && length > 0 && ( length - 1 ) in obj; 526} 527var Sizzle = 528/*! 529 * Sizzle CSS Selector Engine v2.3.6 530 * https://sizzlejs.com/ 531 * 532 * Copyright JS Foundation and other contributors 533 * Released under the MIT license 534 * https://js.foundation/ 535 * 536 * Date: 2021-02-16 537 */ 538( function( window ) { 539var i, 540 support, 541 Expr, 542 getText, 543 isXML, 544 tokenize, 545 compile, 546 select, 547 outermostContext, 548 sortInput, 549 hasDuplicate, 550 551 // Local document vars 552 setDocument, 553 document, 554 docElem, 555 documentIsHTML, 556 rbuggyQSA, 557 rbuggyMatches, 558 matches, 559 contains, 560 561 // Instance-specific data 562 expando = "sizzle" + 1 * new Date(), 563 preferredDoc = window.document, 564 dirruns = 0, 565 done = 0, 566 classCache = createCache(), 567 tokenCache = createCache(), 568 compilerCache = createCache(), 569 nonnativeSelectorCache = createCache(), 570 sortOrder = function( a, b ) { 571 if ( a === b ) { 572 hasDuplicate = true; 573 } 574 return 0; 575 }, 576 577 // Instance methods 578 hasOwn = ( {} ).hasOwnProperty, 579 arr = [], 580 pop = arr.pop, 581 pushNative = arr.push, 582 push = arr.push, 583 slice = arr.slice, 584 585 // Use a stripped-down indexOf as it's faster than native 586 // https://jsperf.com/thor-indexof-vs-for/5 587 indexOf = function( list, elem ) { 588 var i = 0, 589 len = list.length; 590 for ( ; i < len; i++ ) { 591 if ( list[ i ] === elem ) { 592 return i; 593 } 594 } 595 return -1; 596 }, 597 598 booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|" + 599 "ismap|loop|multiple|open|readonly|required|scoped", 600 601 // Regular expressions 602 603 // http://www.w3.org/TR/css3-selectors/#whitespace 604 whitespace = "[\\x20\\t\\r\\n\\f]", 605 606 // https://www.w3.org/TR/css-syntax-3/#ident-token-diagram 607 identifier = "(?:\\\\[\\da-fA-F]{1,6}" + whitespace + 608 "?|\\\\[^\\r\\n\\f]|[\\w-]|[^\0-\\x7f])+", 609 610 // Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors 611 attributes = "\\[" + whitespace + "*(" + identifier + ")(?:" + whitespace + 612 613 // Operator (capture 2) 614 "*([*^$|!~]?=)" + whitespace + 615 616 // "Attribute values must be CSS identifiers [capture 5] 617 // or strings [capture 3 or capture 4]" 618 "*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + identifier + "))|)" + 619 whitespace + "*\\]", 620 621 pseudos = ":(" + identifier + ")(?:\\((" + 622 623 // To reduce the number of selectors needing tokenize in the preFilter, prefer arguments: 624 // 1. quoted (capture 3; capture 4 or capture 5) 625 "('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|" + 626 627 // 2. simple (capture 6) 628 "((?:\\\\.|[^\\\\()[\\]]|" + attributes + ")*)|" + 629 630 // 3. anything else (capture 2) 631 ".*" + 632 ")\\)|)", 633 634 // Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter 635 rwhitespace = new RegExp( whitespace + "+", "g" ), 636 rtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + 637 whitespace + "+$", "g" ), 638 639 rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ), 640 rcombinators = new RegExp( "^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace + 641 "*" ), 642 rdescend = new RegExp( whitespace + "|>" ), 643 644 rpseudo = new RegExp( pseudos ), 645 ridentifier = new RegExp( "^" + identifier + "$" ), 646 647 matchExpr = { 648 "ID": new RegExp( "^#(" + identifier + ")" ), 649 "CLASS": new RegExp( "^\\.(" + identifier + ")" ), 650 "TAG": new RegExp( "^(" + identifier + "|[*])" ), 651 "ATTR": new RegExp( "^" + attributes ), 652 "PSEUDO": new RegExp( "^" + pseudos ), 653 "CHILD": new RegExp( "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + 654 whitespace + "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + 655 whitespace + "*(\\d+)|))" + whitespace + "*\\)|)", "i" ), 656 "bool": new RegExp( "^(?:" + booleans + ")$", "i" ), 657 658 // For use in libraries implementing .is() 659 // We use this for POS matching in `select` 660 "needsContext": new RegExp( "^" + whitespace + 661 "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + whitespace + 662 "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i" ) 663 }, 664 665 rhtml = /HTML$/i, 666 rinputs = /^(?:input|select|textarea|button)$/i, 667 rheader = /^h\d$/i, 668 669 rnative = /^[^{]+\{\s*\[native \w/, 670 671 // Easily-parseable/retrievable ID or TAG or CLASS selectors 672 rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/, 673 674 rsibling = /[+~]/, 675 676 // CSS escapes 677 // http://www.w3.org/TR/CSS21/syndata.html#escaped-characters 678 runescape = new RegExp( "\\\\[\\da-fA-F]{1,6}" + whitespace + "?|\\\\([^\\r\\n\\f])", "g" ), 679 funescape = function( escape, nonHex ) { 680 var high = "0x" + escape.slice( 1 ) - 0x10000; 681 682 return nonHex ? 683 684 // Strip the backslash prefix from a non-hex escape sequence 685 nonHex : 686 687 // Replace a hexadecimal escape sequence with the encoded Unicode code point 688 // Support: IE <=11+ 689 // For values outside the Basic Multilingual Plane (BMP), manually construct a 690 // surrogate pair 691 high < 0 ? 692 String.fromCharCode( high + 0x10000 ) : 693 String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 ); 694 }, 695 696 // CSS string/identifier serialization 697 // https://drafts.csswg.org/cssom/#common-serializing-idioms 698 rcssescape = /([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g, 699 fcssescape = function( ch, asCodePoint ) { 700 if ( asCodePoint ) { 701 702 // U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER 703 if ( ch === "\0" ) { 704 return "\uFFFD"; 705 } 706 707 // Control characters and (dependent upon position) numbers get escaped as code points 708 return ch.slice( 0, -1 ) + "\\" + 709 ch.charCodeAt( ch.length - 1 ).toString( 16 ) + " "; 710 } 711 712 // Other potentially-special ASCII characters get backslash-escaped 713 return "\\" + ch; 714 }, 715 716 // Used for iframes 717 // See setDocument() 718 // Removing the function wrapper causes a "Permission Denied" 719 // error in IE 720 unloadHandler = function() { 721 setDocument(); 722 }, 723 724 inDisabledFieldset = addCombinator( 725 function( elem ) { 726 return elem.disabled === true && elem.nodeName.toLowerCase() === "fieldset"; 727 }, 728 { dir: "parentNode", next: "legend" } 729 ); 730 731// Optimize for push.apply( _, NodeList ) 732try { 733 push.apply( 734 ( arr = slice.call( preferredDoc.childNodes ) ), 735 preferredDoc.childNodes 736 ); 737 738 // Support: Android<4.0 739 // Detect silently failing push.apply 740 // eslint-disable-next-line no-unused-expressions 741 arr[ preferredDoc.childNodes.length ].nodeType; 742} catch ( e ) { 743 push = { apply: arr.length ? 744 745 // Leverage slice if possible 746 function( target, els ) { 747 pushNative.apply( target, slice.call( els ) ); 748 } : 749 750 // Support: IE<9 751 // Otherwise append directly 752 function( target, els ) { 753 var j = target.length, 754 i = 0; 755 756 // Can't trust NodeList.length 757 while ( ( target[ j++ ] = els[ i++ ] ) ) {} 758 target.length = j - 1; 759 } 760 }; 761} 762 763function Sizzle( selector, context, results, seed ) { 764 var m, i, elem, nid, match, groups, newSelector, 765 newContext = context && context.ownerDocument, 766 767 // nodeType defaults to 9, since context defaults to document 768 nodeType = context ? context.nodeType : 9; 769 770 results = results || []; 771 772 // Return early from calls with invalid selector or context 773 if ( typeof selector !== "string" || !selector || 774 nodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) { 775 776 return results; 777 } 778 779 // Try to shortcut find operations (as opposed to filters) in HTML documents 780 if ( !seed ) { 781 setDocument( context ); 782 context = context || document; 783 784 if ( documentIsHTML ) { 785 786 // If the selector is sufficiently simple, try using a "get*By*" DOM method 787 // (excepting DocumentFragment context, where the methods don't exist) 788 if ( nodeType !== 11 && ( match = rquickExpr.exec( selector ) ) ) { 789 790 // ID selector 791 if ( ( m = match[ 1 ] ) ) { 792 793 // Document context 794 if ( nodeType === 9 ) { 795 if ( ( elem = context.getElementById( m ) ) ) { 796 797 // Support: IE, Opera, Webkit 798 // TODO: identify versions 799 // getElementById can match elements by name instead of ID 800 if ( elem.id === m ) { 801 results.push( elem ); 802 return results; 803 } 804 } else { 805 return results; 806 } 807 808 // Element context 809 } else { 810 811 // Support: IE, Opera, Webkit 812 // TODO: identify versions 813 // getElementById can match elements by name instead of ID 814 if ( newContext && ( elem = newContext.getElementById( m ) ) && 815 contains( context, elem ) && 816 elem.id === m ) { 817 818 results.push( elem ); 819 return results; 820 } 821 } 822 823 // Type selector 824 } else if ( match[ 2 ] ) { 825 push.apply( results, context.getElementsByTagName( selector ) ); 826 return results; 827 828 // Class selector 829 } else if ( ( m = match[ 3 ] ) && support.getElementsByClassName && 830 context.getElementsByClassName ) { 831 832 push.apply( results, context.getElementsByClassName( m ) ); 833 return results; 834 } 835 } 836 837 // Take advantage of querySelectorAll 838 if ( support.qsa && 839 !nonnativeSelectorCache[ selector + " " ] && 840 ( !rbuggyQSA || !rbuggyQSA.test( selector ) ) && 841 842 // Support: IE 8 only 843 // Exclude object elements 844 ( nodeType !== 1 || context.nodeName.toLowerCase() !== "object" ) ) { 845 846 newSelector = selector; 847 newContext = context; 848 849 // qSA considers elements outside a scoping root when evaluating child or 850 // descendant combinators, which is not what we want. 851 // In such cases, we work around the behavior by prefixing every selector in the 852 // list with an ID selector referencing the scope context. 853 // The technique has to be used as well when a leading combinator is used 854 // as such selectors are not recognized by querySelectorAll. 855 // Thanks to Andrew Dupont for this technique. 856 if ( nodeType === 1 && 857 ( rdescend.test( selector ) || rcombinators.test( selector ) ) ) { 858 859 // Expand context for sibling selectors 860 newContext = rsibling.test( selector ) && testContext( context.parentNode ) || 861 context; 862 863 // We can use :scope instead of the ID hack if the browser 864 // supports it & if we're not changing the context. 865 if ( newContext !== context || !support.scope ) { 866 867 // Capture the context ID, setting it first if necessary 868 if ( ( nid = context.getAttribute( "id" ) ) ) { 869 nid = nid.replace( rcssescape, fcssescape ); 870 } else { 871 context.setAttribute( "id", ( nid = expando ) ); 872 } 873 } 874 875 // Prefix every selector in the list 876 groups = tokenize( selector ); 877 i = groups.length; 878 while ( i-- ) { 879 groups[ i ] = ( nid ? "#" + nid : ":scope" ) + " " + 880 toSelector( groups[ i ] ); 881 } 882 newSelector = groups.join( "," ); 883 } 884 885 try { 886 push.apply( results, 887 newContext.querySelectorAll( newSelector ) 888 ); 889 return results; 890 } catch ( qsaError ) { 891 nonnativeSelectorCache( selector, true ); 892 } finally { 893 if ( nid === expando ) { 894 context.removeAttribute( "id" ); 895 } 896 } 897 } 898 } 899 } 900 901 // All others 902 return select( selector.replace( rtrim, "$1" ), context, results, seed ); 903} 904 905/** 906 * Create key-value caches of limited size 907 * @returns {function(string, object)} Returns the Object data after storing it on itself with 908 * property name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength) 909 * deleting the oldest entry 910 */ 911function createCache() { 912 var keys = []; 913 914 function cache( key, value ) { 915 916 // Use (key + " ") to avoid collision with native prototype properties (see Issue #157) 917 if ( keys.push( key + " " ) > Expr.cacheLength ) { 918 919 // Only keep the most recent entries 920 delete cache[ keys.shift() ]; 921 } 922 return ( cache[ key + " " ] = value ); 923 } 924 return cache; 925} 926 927/** 928 * Mark a function for special use by Sizzle 929 * @param {Function} fn The function to mark 930 */ 931function markFunction( fn ) { 932 fn[ expando ] = true; 933 return fn; 934} 935 936/** 937 * Support testing using an element 938 * @param {Function} fn Passed the created element and returns a boolean result 939 */ 940function assert( fn ) { 941 var el = document.createElement( "fieldset" ); 942 943 try { 944 return !!fn( el ); 945 } catch ( e ) { 946 return false; 947 } finally { 948 949 // Remove from its parent by default 950 if ( el.parentNode ) { 951 el.parentNode.removeChild( el ); 952 } 953 954 // release memory in IE 955 el = null; 956 } 957} 958 959/** 960 * Adds the same handler for all of the specified attrs 961 * @param {String} attrs Pipe-separated list of attributes 962 * @param {Function} handler The method that will be applied 963 */ 964function addHandle( attrs, handler ) { 965 var arr = attrs.split( "|" ), 966 i = arr.length; 967 968 while ( i-- ) { 969 Expr.attrHandle[ arr[ i ] ] = handler; 970 } 971} 972 973/** 974 * Checks document order of two siblings 975 * @param {Element} a 976 * @param {Element} b 977 * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b 978 */ 979function siblingCheck( a, b ) { 980 var cur = b && a, 981 diff = cur && a.nodeType === 1 && b.nodeType === 1 && 982 a.sourceIndex - b.sourceIndex; 983 984 // Use IE sourceIndex if available on both nodes 985 if ( diff ) { 986 return diff; 987 } 988 989 // Check if b follows a 990 if ( cur ) { 991 while ( ( cur = cur.nextSibling ) ) { 992 if ( cur === b ) { 993 return -1; 994 } 995 } 996 } 997 998 return a ? 1 : -1; 999} 1000 1001/** 1002 * Returns a function to use in pseudos for input types 1003 * @param {String} type 1004 */ 1005function createInputPseudo( type ) { 1006 return function( elem ) { 1007 var name = elem.nodeName.toLowerCase(); 1008 return name === "input" && elem.type === type; 1009 }; 1010} 1011 1012/** 1013 * Returns a function to use in pseudos for buttons 1014 * @param {String} type 1015 */ 1016function createButtonPseudo( type ) { 1017 return function( elem ) { 1018 var name = elem.nodeName.toLowerCase(); 1019 return ( name === "input" || name === "button" ) && elem.type === type; 1020 }; 1021} 1022 1023/** 1024 * Returns a function to use in pseudos for :enabled/:disabled 1025 * @param {Boolean} disabled true for :disabled; false for :enabled 1026 */ 1027function createDisabledPseudo( disabled ) { 1028 1029 // Known :disabled false positives: fieldset[disabled] > legend:nth-of-type(n+2) :can-disable 1030 return function( elem ) { 1031 1032 // Only certain elements can match :enabled or :disabled 1033 // https://html.spec.whatwg.org/multipage/scripting.html#selector-enabled 1034 // https://html.spec.whatwg.org/multipage/scripting.html#selector-disabled 1035 if ( "form" in elem ) { 1036 1037 // Check for inherited disabledness on relevant non-disabled elements: 1038 // * listed form-associated elements in a disabled fieldset 1039 // https://html.spec.whatwg.org/multipage/forms.html#category-listed 1040 // https://html.spec.whatwg.org/multipage/forms.html#concept-fe-disabled 1041 // * option elements in a disabled optgroup 1042 // https://html.spec.whatwg.org/multipage/forms.html#concept-option-disabled 1043 // All such elements have a "form" property. 1044 if ( elem.parentNode && elem.disabled === false ) { 1045 1046 // Option elements defer to a parent optgroup if present 1047 if ( "label" in elem ) { 1048 if ( "label" in elem.parentNode ) { 1049 return elem.parentNode.disabled === disabled; 1050 } else { 1051 return elem.disabled === disabled; 1052 } 1053 } 1054 1055 // Support: IE 6 - 11 1056 // Use the isDisabled shortcut property to check for disabled fieldset ancestors 1057 return elem.isDisabled === disabled || 1058 1059 // Where there is no isDisabled, check manually 1060 /* jshint -W018 */ 1061 elem.isDisabled !== !disabled && 1062 inDisabledFieldset( elem ) === disabled; 1063 } 1064 1065 return elem.disabled === disabled; 1066 1067 // Try to winnow out elements that can't be disabled before trusting the disabled property. 1068 // Some victims get caught in our net (label, legend, menu, track), but it shouldn't 1069 // even exist on them, let alone have a boolean value. 1070 } else if ( "label" in elem ) { 1071 return elem.disabled === disabled; 1072 } 1073 1074 // Remaining elements are neither :enabled nor :disabled 1075 return false; 1076 }; 1077} 1078 1079/** 1080 * Returns a function to use in pseudos for positionals 1081 * @param {Function} fn 1082 */ 1083function createPositionalPseudo( fn ) { 1084 return markFunction( function( argument ) { 1085 argument = +argument; 1086 return markFunction( function( seed, matches ) { 1087 var j, 1088 matchIndexes = fn( [], seed.length, argument ), 1089 i = matchIndexes.length; 1090 1091 // Match elements found at the specified indexes 1092 while ( i-- ) { 1093 if ( seed[ ( j = matchIndexes[ i ] ) ] ) { 1094 seed[ j ] = !( matches[ j ] = seed[ j ] ); 1095 } 1096 } 1097 } ); 1098 } ); 1099} 1100 1101/** 1102 * Checks a node for validity as a Sizzle context 1103 * @param {Element|Object=} context 1104 * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value 1105 */ 1106function testContext( context ) { 1107 return context && typeof context.getElementsByTagName !== "undefined" && context; 1108} 1109 1110// Expose support vars for convenience 1111support = Sizzle.support = {}; 1112 1113/** 1114 * Detects XML nodes 1115 * @param {Element|Object} elem An element or a document 1116 * @returns {Boolean} True iff elem is a non-HTML XML node 1117 */ 1118isXML = Sizzle.isXML = function( elem ) { 1119 var namespace = elem && elem.namespaceURI, 1120 docElem = elem && ( elem.ownerDocument || elem ).documentElement; 1121 1122 // Support: IE <=8 1123 // Assume HTML when documentElement doesn't yet exist, such as inside loading iframes 1124 // https://bugs.jquery.com/ticket/4833 1125 return !rhtml.test( namespace || docElem && docElem.nodeName || "HTML" ); 1126}; 1127 1128/** 1129 * Sets document-related variables once based on the current document 1130 * @param {Element|Object} [doc] An element or document object to use to set the document 1131 * @returns {Object} Returns the current document 1132 */ 1133setDocument = Sizzle.setDocument = function( node ) { 1134 var hasCompare, subWindow, 1135 doc = node ? node.ownerDocument || node : preferredDoc; 1136 1137 // Return early if doc is invalid or already selected 1138 // Support: IE 11+, Edge 17 - 18+ 1139 // IE/Edge sometimes throw a "Permission denied" error when strict-comparing 1140 // two documents; shallow comparisons work. 1141 // eslint-disable-next-line eqeqeq 1142 if ( doc == document || doc.nodeType !== 9 || !doc.documentElement ) { 1143 return document; 1144 } 1145 1146 // Update global variables 1147 document = doc; 1148 docElem = document.documentElement; 1149 documentIsHTML = !isXML( document ); 1150 1151 // Support: IE 9 - 11+, Edge 12 - 18+ 1152 // Accessing iframe documents after unload throws "permission denied" errors (jQuery #13936) 1153 // Support: IE 11+, Edge 17 - 18+ 1154 // IE/Edge sometimes throw a "Permission denied" error when strict-comparing 1155 // two documents; shallow comparisons work. 1156 // eslint-disable-next-line eqeqeq 1157 if ( preferredDoc != document && 1158 ( subWindow = document.defaultView ) && subWindow.top !== subWindow ) { 1159 1160 // Support: IE 11, Edge 1161 if ( subWindow.addEventListener ) { 1162 subWindow.addEventListener( "unload", unloadHandler, false ); 1163 1164 // Support: IE 9 - 10 only 1165 } else if ( subWindow.attachEvent ) { 1166 subWindow.attachEvent( "onunload", unloadHandler ); 1167 } 1168 } 1169 1170 // Support: IE 8 - 11+, Edge 12 - 18+, Chrome <=16 - 25 only, Firefox <=3.6 - 31 only, 1171 // Safari 4 - 5 only, Opera <=11.6 - 12.x only 1172 // IE/Edge & older browsers don't support the :scope pseudo-class. 1173 // Support: Safari 6.0 only 1174 // Safari 6.0 supports :scope but it's an alias of :root there. 1175 support.scope = assert( function( el ) { 1176 docElem.appendChild( el ).appendChild( document.createElement( "div" ) ); 1177 return typeof el.querySelectorAll !== "undefined" && 1178 !el.querySelectorAll( ":scope fieldset div" ).length; 1179 } ); 1180 1181 /* Attributes 1182 ---------------------------------------------------------------------- */ 1183 1184 // Support: IE<8 1185 // Verify that getAttribute really returns attributes and not properties 1186 // (excepting IE8 booleans) 1187 support.attributes = assert( function( el ) { 1188 el.className = "i"; 1189 return !el.getAttribute( "className" ); 1190 } ); 1191 1192 /* getElement(s)By* 1193 ---------------------------------------------------------------------- */ 1194 1195 // Check if getElementsByTagName("*") returns only elements 1196 support.getElementsByTagName = assert( function( el ) { 1197 el.appendChild( document.createComment( "" ) ); 1198 return !el.getElementsByTagName( "*" ).length; 1199 } ); 1200 1201 // Support: IE<9 1202 support.getElementsByClassName = rnative.test( document.getElementsByClassName ); 1203 1204 // Support: IE<10 1205 // Check if getElementById returns elements by name 1206 // The broken getElementById methods don't pick up programmatically-set names, 1207 // so use a roundabout getElementsByName test 1208 support.getById = assert( function( el ) { 1209 docElem.appendChild( el ).id = expando; 1210 return !document.getElementsByName || !document.getElementsByName( expando ).length; 1211 } ); 1212 1213 // ID filter and find 1214 if ( support.getById ) { 1215 Expr.filter[ "ID" ] = function( id ) { 1216 var attrId = id.replace( runescape, funescape ); 1217 return function( elem ) { 1218 return elem.getAttribute( "id" ) === attrId; 1219 }; 1220 }; 1221 Expr.find[ "ID" ] = function( id, context ) { 1222 if ( typeof context.getElementById !== "undefined" && documentIsHTML ) { 1223 var elem = context.getElementById( id ); 1224 return elem ? [ elem ] : []; 1225 } 1226 }; 1227 } else { 1228 Expr.filter[ "ID" ] = function( id ) { 1229 var attrId = id.replace( runescape, funescape ); 1230 return function( elem ) { 1231 var node = typeof elem.getAttributeNode !== "undefined" && 1232 elem.getAttributeNode( "id" ); 1233 return node && node.value === attrId; 1234 }; 1235 }; 1236 1237 // Support: IE 6 - 7 only 1238 // getElementById is not reliable as a find shortcut 1239 Expr.find[ "ID" ] = function( id, context ) { 1240 if ( typeof context.getElementById !== "undefined" && documentIsHTML ) { 1241 var node, i, elems, 1242 elem = context.getElementById( id ); 1243 1244 if ( elem ) { 1245 1246 // Verify the id attribute 1247 node = elem.getAttributeNode( "id" ); 1248 if ( node && node.value === id ) { 1249 return [ elem ]; 1250 } 1251 1252 // Fall back on getElementsByName 1253 elems = context.getElementsByName( id ); 1254 i = 0; 1255 while ( ( elem = elems[ i++ ] ) ) { 1256 node = elem.getAttributeNode( "id" ); 1257 if ( node && node.value === id ) { 1258 return [ elem ]; 1259 } 1260 } 1261 } 1262 1263 return []; 1264 } 1265 }; 1266 } 1267 1268 // Tag 1269 Expr.find[ "TAG" ] = support.getElementsByTagName ? 1270 function( tag, context ) { 1271 if ( typeof context.getElementsByTagName !== "undefined" ) { 1272 return context.getElementsByTagName( tag ); 1273 1274 // DocumentFragment nodes don't have gEBTN 1275 } else if ( support.qsa ) { 1276 return context.querySelectorAll( tag ); 1277 } 1278 } : 1279 1280 function( tag, context ) { 1281 var elem, 1282 tmp = [], 1283 i = 0, 1284 1285 // By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too 1286 results = context.getElementsByTagName( tag ); 1287 1288 // Filter out possible comments 1289 if ( tag === "*" ) { 1290 while ( ( elem = results[ i++ ] ) ) { 1291 if ( elem.nodeType === 1 ) { 1292 tmp.push( elem ); 1293 } 1294 } 1295 1296 return tmp; 1297 } 1298 return results; 1299 }; 1300 1301 // Class 1302 Expr.find[ "CLASS" ] = support.getElementsByClassName && function( className, context ) { 1303 if ( typeof context.getElementsByClassName !== "undefined" && documentIsHTML ) { 1304 return context.getElementsByClassName( className ); 1305 } 1306 }; 1307 1308 /* QSA/matchesSelector 1309 ---------------------------------------------------------------------- */ 1310 1311 // QSA and matchesSelector support 1312 1313 // matchesSelector(:active) reports false when true (IE9/Opera 11.5) 1314 rbuggyMatches = []; 1315 1316 // qSa(:focus) reports false when true (Chrome 21) 1317 // We allow this because of a bug in IE8/9 that throws an error 1318 // whenever `document.activeElement` is accessed on an iframe 1319 // So, we allow :focus to pass through QSA all the time to avoid the IE error 1320 // See https://bugs.jquery.com/ticket/13378 1321 rbuggyQSA = []; 1322 1323 if ( ( support.qsa = rnative.test( document.querySelectorAll ) ) ) { 1324 1325 // Build QSA regex 1326 // Regex strategy adopted from Diego Perini 1327 assert( function( el ) { 1328 1329 var input; 1330 1331 // Select is set to empty string on purpose 1332 // This is to test IE's treatment of not explicitly 1333 // setting a boolean content attribute, 1334 // since its presence should be enough 1335 // https://bugs.jquery.com/ticket/12359 1336 docElem.appendChild( el ).innerHTML = "<a id='" + expando + "'></a>" + 1337 "<select id='" + expando + "-\r\\' msallowcapture=''>" + 1338 "<option selected=''></option></select>"; 1339 1340 // Support: IE8, Opera 11-12.16 1341 // Nothing should be selected when empty strings follow ^= or $= or *= 1342 // The test attribute must be unknown in Opera but "safe" for WinRT 1343 // https://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section 1344 if ( el.querySelectorAll( "[msallowcapture^='']" ).length ) { 1345 rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:''|\"\")" ); 1346 } 1347 1348 // Support: IE8 1349 // Boolean attributes and "value" are not treated correctly 1350 if ( !el.querySelectorAll( "[selected]" ).length ) { 1351 rbuggyQSA.push( "\\[" + whitespace + "*(?:value|" + booleans + ")" ); 1352 } 1353 1354 // Support: Chrome<29, Android<4.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+ 1355 if ( !el.querySelectorAll( "[id~=" + expando + "-]" ).length ) { 1356 rbuggyQSA.push( "~=" ); 1357 } 1358 1359 // Support: IE 11+, Edge 15 - 18+ 1360 // IE 11/Edge don't find elements on a `[name='']` query in some cases. 1361 // Adding a temporary attribute to the document before the selection works 1362 // around the issue. 1363 // Interestingly, IE 10 & older don't seem to have the issue. 1364 input = document.createElement( "input" ); 1365 input.setAttribute( "name", "" ); 1366 el.appendChild( input ); 1367 if ( !el.querySelectorAll( "[name='']" ).length ) { 1368 rbuggyQSA.push( "\\[" + whitespace + "*name" + whitespace + "*=" + 1369 whitespace + "*(?:''|\"\")" ); 1370 } 1371 1372 // Webkit/Opera - :checked should return selected option elements 1373 // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked 1374 // IE8 throws error here and will not see later tests 1375 if ( !el.querySelectorAll( ":checked" ).length ) { 1376 rbuggyQSA.push( ":checked" ); 1377 } 1378 1379 // Support: Safari 8+, iOS 8+ 1380 // https://bugs.webkit.org/show_bug.cgi?id=136851 1381 // In-page `selector#id sibling-combinator selector` fails 1382 if ( !el.querySelectorAll( "a#" + expando + "+*" ).length ) { 1383 rbuggyQSA.push( ".#.+[+~]" ); 1384 } 1385 1386 // Support: Firefox <=3.6 - 5 only 1387 // Old Firefox doesn't throw on a badly-escaped identifier. 1388 el.querySelectorAll( "\\\f" ); 1389 rbuggyQSA.push( "[\\r\\n\\f]" ); 1390 } ); 1391 1392 assert( function( el ) { 1393 el.innerHTML = "<a href='' disabled='disabled'></a>" + 1394 "<select disabled='disabled'><option/></select>"; 1395 1396 // Support: Windows 8 Native Apps 1397 // The type and name attributes are restricted during .innerHTML assignment 1398 var input = document.createElement( "input" ); 1399 input.setAttribute( "type", "hidden" ); 1400 el.appendChild( input ).setAttribute( "name", "D" ); 1401 1402 // Support: IE8 1403 // Enforce case-sensitivity of name attribute 1404 if ( el.querySelectorAll( "[name=d]" ).length ) { 1405 rbuggyQSA.push( "name" + whitespace + "*[*^$|!~]?=" ); 1406 } 1407 1408 // FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled) 1409 // IE8 throws error here and will not see later tests 1410 if ( el.querySelectorAll( ":enabled" ).length !== 2 ) { 1411 rbuggyQSA.push( ":enabled", ":disabled" ); 1412 } 1413 1414 // Support: IE9-11+ 1415 // IE's :disabled selector does not pick up the children of disabled fieldsets 1416 docElem.appendChild( el ).disabled = true; 1417 if ( el.querySelectorAll( ":disabled" ).length !== 2 ) { 1418 rbuggyQSA.push( ":enabled", ":disabled" ); 1419 } 1420 1421 // Support: Opera 10 - 11 only 1422 // Opera 10-11 does not throw on post-comma invalid pseudos 1423 el.querySelectorAll( "*,:x" ); 1424 rbuggyQSA.push( ",.*:" ); 1425 } ); 1426 } 1427 1428 if ( ( support.matchesSelector = rnative.test( ( matches = docElem.matches || 1429 docElem.webkitMatchesSelector || 1430 docElem.mozMatchesSelector || 1431 docElem.oMatchesSelector || 1432 docElem.msMatchesSelector ) ) ) ) { 1433 1434 assert( function( el ) { 1435 1436 // Check to see if it's possible to do matchesSelector 1437 // on a disconnected node (IE 9) 1438 support.disconnectedMatch = matches.call( el, "*" ); 1439 1440 // This should fail with an exception 1441 // Gecko does not error, returns false instead 1442 matches.call( el, "[s!='']:x" ); 1443 rbuggyMatches.push( "!=", pseudos ); 1444 } ); 1445 } 1446 1447 rbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join( "|" ) ); 1448 rbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join( "|" ) ); 1449 1450 /* Contains 1451 ---------------------------------------------------------------------- */ 1452 hasCompare = rnative.test( docElem.compareDocumentPosition ); 1453 1454 // Element contains another 1455 // Purposefully self-exclusive 1456 // As in, an element does not contain itself 1457 contains = hasCompare || rnative.test( docElem.contains ) ? 1458 function( a, b ) { 1459 var adown = a.nodeType === 9 ? a.documentElement : a, 1460 bup = b && b.parentNode; 1461 return a === bup || !!( bup && bup.nodeType === 1 && ( 1462 adown.contains ? 1463 adown.contains( bup ) : 1464 a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16 1465 ) ); 1466 } : 1467 function( a, b ) { 1468 if ( b ) { 1469 while ( ( b = b.parentNode ) ) { 1470 if ( b === a ) { 1471 return true; 1472 } 1473 } 1474 } 1475 return false; 1476 }; 1477 1478 /* Sorting 1479 ---------------------------------------------------------------------- */ 1480 1481 // Document order sorting 1482 sortOrder = hasCompare ? 1483 function( a, b ) { 1484 1485 // Flag for duplicate removal 1486 if ( a === b ) { 1487 hasDuplicate = true; 1488 return 0; 1489 } 1490 1491 // Sort on method existence if only one input has compareDocumentPosition 1492 var compare = !a.compareDocumentPosition - !b.compareDocumentPosition; 1493 if ( compare ) { 1494 return compare; 1495 } 1496 1497 // Calculate position if both inputs belong to the same document 1498 // Support: IE 11+, Edge 17 - 18+ 1499 // IE/Edge sometimes throw a "Permission denied" error when strict-comparing 1500 // two documents; shallow comparisons work. 1501 // eslint-disable-next-line eqeqeq 1502 compare = ( a.ownerDocument || a ) == ( b.ownerDocument || b ) ? 1503 a.compareDocumentPosition( b ) : 1504 1505 // Otherwise we know they are disconnected 1506 1; 1507 1508 // Disconnected nodes 1509 if ( compare & 1 || 1510 ( !support.sortDetached && b.compareDocumentPosition( a ) === compare ) ) { 1511 1512 // Choose the first element that is related to our preferred document 1513 // Support: IE 11+, Edge 17 - 18+ 1514 // IE/Edge sometimes throw a "Permission denied" error when strict-comparing 1515 // two documents; shallow comparisons work. 1516 // eslint-disable-next-line eqeqeq 1517 if ( a == document || a.ownerDocument == preferredDoc && 1518 contains( preferredDoc, a ) ) { 1519 return -1; 1520 } 1521 1522 // Support: IE 11+, Edge 17 - 18+ 1523 // IE/Edge sometimes throw a "Permission denied" error when strict-comparing 1524 // two documents; shallow comparisons work. 1525 // eslint-disable-next-line eqeqeq 1526 if ( b == document || b.ownerDocument == preferredDoc && 1527 contains( preferredDoc, b ) ) { 1528 return 1; 1529 } 1530 1531 // Maintain original order 1532 return sortInput ? 1533 ( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) : 1534 0; 1535 } 1536 1537 return compare & 4 ? -1 : 1; 1538 } : 1539 function( a, b ) { 1540 1541 // Exit early if the nodes are identical 1542 if ( a === b ) { 1543 hasDuplicate = true; 1544 return 0; 1545 } 1546 1547 var cur, 1548 i = 0, 1549 aup = a.parentNode, 1550 bup = b.parentNode, 1551 ap = [ a ], 1552 bp = [ b ]; 1553 1554 // Parentless nodes are either documents or disconnected 1555 if ( !aup || !bup ) { 1556 1557 // Support: IE 11+, Edge 17 - 18+ 1558 // IE/Edge sometimes throw a "Permission denied" error when strict-comparing 1559 // two documents; shallow comparisons work. 1560 /* eslint-disable eqeqeq */ 1561 return a == document ? -1 : 1562 b == document ? 1 : 1563 /* eslint-enable eqeqeq */ 1564 aup ? -1 : 1565 bup ? 1 : 1566 sortInput ? 1567 ( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) : 1568 0; 1569 1570 // If the nodes are siblings, we can do a quick check 1571 } else if ( aup === bup ) { 1572 return siblingCheck( a, b ); 1573 } 1574 1575 // Otherwise we need full lists of their ancestors for comparison 1576 cur = a; 1577 while ( ( cur = cur.parentNode ) ) { 1578 ap.unshift( cur ); 1579 } 1580 cur = b; 1581 while ( ( cur = cur.parentNode ) ) { 1582 bp.unshift( cur ); 1583 } 1584 1585 // Walk down the tree looking for a discrepancy 1586 while ( ap[ i ] === bp[ i ] ) { 1587 i++; 1588 } 1589 1590 return i ? 1591 1592 // Do a sibling check if the nodes have a common ancestor 1593 siblingCheck( ap[ i ], bp[ i ] ) : 1594 1595 // Otherwise nodes in our document sort first 1596 // Support: IE 11+, Edge 17 - 18+ 1597 // IE/Edge sometimes throw a "Permission denied" error when strict-comparing 1598 // two documents; shallow comparisons work. 1599 /* eslint-disable eqeqeq */ 1600 ap[ i ] == preferredDoc ? -1 : 1601 bp[ i ] == preferredDoc ? 1 : 1602 /* eslint-enable eqeqeq */ 1603 0; 1604 }; 1605 1606 return document; 1607}; 1608 1609Sizzle.matches = function( expr, elements ) { 1610 return Sizzle( expr, null, null, elements ); 1611}; 1612 1613Sizzle.matchesSelector = function( elem, expr ) { 1614 setDocument( elem ); 1615 1616 if ( support.matchesSelector && documentIsHTML && 1617 !nonnativeSelectorCache[ expr + " " ] && 1618 ( !rbuggyMatches || !rbuggyMatches.test( expr ) ) && 1619 ( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) { 1620 1621 try { 1622 var ret = matches.call( elem, expr ); 1623 1624 // IE 9's matchesSelector returns false on disconnected nodes 1625 if ( ret || support.disconnectedMatch || 1626 1627 // As well, disconnected nodes are said to be in a document 1628 // fragment in IE 9 1629 elem.document && elem.document.nodeType !== 11 ) { 1630 return ret; 1631 } 1632 } catch ( e ) { 1633 nonnativeSelectorCache( expr, true ); 1634 } 1635 } 1636 1637 return Sizzle( expr, document, null, [ elem ] ).length > 0; 1638}; 1639 1640Sizzle.contains = function( context, elem ) { 1641 1642 // Set document vars if needed 1643 // Support: IE 11+, Edge 17 - 18+ 1644 // IE/Edge sometimes throw a "Permission denied" error when strict-comparing 1645 // two documents; shallow comparisons work. 1646 // eslint-disable-next-line eqeqeq 1647 if ( ( context.ownerDocument || context ) != document ) { 1648 setDocument( context ); 1649 } 1650 return contains( context, elem ); 1651}; 1652 1653Sizzle.attr = function( elem, name ) { 1654 1655 // Set document vars if needed 1656 // Support: IE 11+, Edge 17 - 18+ 1657 // IE/Edge sometimes throw a "Permission denied" error when strict-comparing 1658 // two documents; shallow comparisons work. 1659 // eslint-disable-next-line eqeqeq 1660 if ( ( elem.ownerDocument || elem ) != document ) { 1661 setDocument( elem ); 1662 } 1663 1664 var fn = Expr.attrHandle[ name.toLowerCase() ], 1665 1666 // Don't get fooled by Object.prototype properties (jQuery #13807) 1667 val = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ? 1668 fn( elem, name, !documentIsHTML ) : 1669 undefined; 1670 1671 return val !== undefined ? 1672 val : 1673 support.attributes || !documentIsHTML ? 1674 elem.getAttribute( name ) : 1675 ( val = elem.getAttributeNode( name ) ) && val.specified ? 1676 val.value : 1677 null; 1678}; 1679 1680Sizzle.escape = function( sel ) { 1681 return ( sel + "" ).replace( rcssescape, fcssescape ); 1682}; 1683 1684Sizzle.error = function( msg ) { 1685 throw new Error( "Syntax error, unrecognized expression: " + msg ); 1686}; 1687 1688/** 1689 * Document sorting and removing duplicates 1690 * @param {ArrayLike} results 1691 */ 1692Sizzle.uniqueSort = function( results ) { 1693 var elem, 1694 duplicates = [], 1695 j = 0, 1696 i = 0; 1697 1698 // Unless we *know* we can detect duplicates, assume their presence 1699 hasDuplicate = !support.detectDuplicates; 1700 sortInput = !support.sortStable && results.slice( 0 ); 1701 results.sort( sortOrder ); 1702 1703 if ( hasDuplicate ) { 1704 while ( ( elem = results[ i++ ] ) ) { 1705 if ( elem === results[ i ] ) { 1706 j = duplicates.push( i ); 1707 } 1708 } 1709 while ( j-- ) { 1710 results.splice( duplicates[ j ], 1 ); 1711 } 1712 } 1713 1714 // Clear input after sorting to release objects 1715 // See https://github.com/jquery/sizzle/pull/225 1716 sortInput = null; 1717 1718 return results; 1719}; 1720 1721/** 1722 * Utility function for retrieving the text value of an array of DOM nodes 1723 * @param {Array|Element} elem 1724 */ 1725getText = Sizzle.getText = function( elem ) { 1726 var node, 1727 ret = "", 1728 i = 0, 1729 nodeType = elem.nodeType; 1730 1731 if ( !nodeType ) { 1732 1733 // If no nodeType, this is expected to be an array 1734 while ( ( node = elem[ i++ ] ) ) { 1735 1736 // Do not traverse comment nodes 1737 ret += getText( node ); 1738 } 1739 } else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) { 1740 1741 // Use textContent for elements 1742 // innerText usage removed for consistency of new lines (jQuery #11153) 1743 if ( typeof elem.textContent === "string" ) { 1744 return elem.textContent; 1745 } else { 1746 1747 // Traverse its children 1748 for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { 1749 ret += getText( elem ); 1750 } 1751 } 1752 } else if ( nodeType === 3 || nodeType === 4 ) { 1753 return elem.nodeValue; 1754 } 1755 1756 // Do not include comment or processing instruction nodes 1757 1758 return ret; 1759}; 1760 1761Expr = Sizzle.selectors = { 1762 1763 // Can be adjusted by the user 1764 cacheLength: 50, 1765 1766 createPseudo: markFunction, 1767 1768 match: matchExpr, 1769 1770 attrHandle: {}, 1771 1772 find: {}, 1773 1774 relative: { 1775 ">": { dir: "parentNode", first: true }, 1776 " ": { dir: "parentNode" }, 1777 "+": { dir: "previousSibling", first: true }, 1778 "~": { dir: "previousSibling" } 1779 }, 1780 1781 preFilter: { 1782 "ATTR": function( match ) { 1783 match[ 1 ] = match[ 1 ].replace( runescape, funescape ); 1784 1785 // Move the given value to match[3] whether quoted or unquoted 1786 match[ 3 ] = ( match[ 3 ] || match[ 4 ] || 1787 match[ 5 ] || "" ).replace( runescape, funescape ); 1788 1789 if ( match[ 2 ] === "~=" ) { 1790 match[ 3 ] = " " + match[ 3 ] + " "; 1791 } 1792 1793 return match.slice( 0, 4 ); 1794 }, 1795 1796 "CHILD": function( match ) { 1797 1798 /* matches from matchExpr["CHILD"] 1799 1 type (only|nth|...) 1800 2 what (child|of-type) 1801 3 argument (even|odd|\d*|\d*n([+-]\d+)?|...) 1802 4 xn-component of xn+y argument ([+-]?\d*n|) 1803 5 sign of xn-component 1804 6 x of xn-component 1805 7 sign of y-component 1806 8 y of y-component 1807 */ 1808 match[ 1 ] = match[ 1 ].toLowerCase(); 1809 1810 if ( match[ 1 ].slice( 0, 3 ) === "nth" ) { 1811 1812 // nth-* requires argument 1813 if ( !match[ 3 ] ) { 1814 Sizzle.error( match[ 0 ] ); 1815 } 1816 1817 // numeric x and y parameters for Expr.filter.CHILD 1818 // remember that false/true cast respectively to 0/1 1819 match[ 4 ] = +( match[ 4 ] ? 1820 match[ 5 ] + ( match[ 6 ] || 1 ) : 1821 2 * ( match[ 3 ] === "even" || match[ 3 ] === "odd" ) ); 1822 match[ 5 ] = +( ( match[ 7 ] + match[ 8 ] ) || match[ 3 ] === "odd" ); 1823 1824 // other types prohibit arguments 1825 } else if ( match[ 3 ] ) { 1826 Sizzle.error( match[ 0 ] ); 1827 } 1828 1829 return match; 1830 }, 1831 1832 "PSEUDO": function( match ) { 1833 var excess, 1834 unquoted = !match[ 6 ] && match[ 2 ]; 1835 1836 if ( matchExpr[ "CHILD" ].test( match[ 0 ] ) ) { 1837 return null; 1838 } 1839 1840 // Accept quoted arguments as-is 1841 if ( match[ 3 ] ) { 1842 match[ 2 ] = match[ 4 ] || match[ 5 ] || ""; 1843 1844 // Strip excess characters from unquoted arguments 1845 } else if ( unquoted && rpseudo.test( unquoted ) && 1846 1847 // Get excess from tokenize (recursively) 1848 ( excess = tokenize( unquoted, true ) ) && 1849 1850 // advance to the next closing parenthesis 1851 ( excess = unquoted.indexOf( ")", unquoted.length - excess ) - unquoted.length ) ) { 1852 1853 // excess is a negative index 1854 match[ 0 ] = match[ 0 ].slice( 0, excess ); 1855 match[ 2 ] = unquoted.slice( 0, excess ); 1856 } 1857 1858 // Return only captures needed by the pseudo filter method (type and argument) 1859 return match.slice( 0, 3 ); 1860 } 1861 }, 1862 1863 filter: { 1864 1865 "TAG": function( nodeNameSelector ) { 1866 var nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase(); 1867 return nodeNameSelector === "*" ? 1868 function() { 1869 return true; 1870 } : 1871 function( elem ) { 1872 return elem.nodeName && elem.nodeName.toLowerCase() === nodeName; 1873 }; 1874 }, 1875 1876 "CLASS": function( className ) { 1877 var pattern = classCache[ className + " " ]; 1878 1879 return pattern || 1880 ( pattern = new RegExp( "(^|" + whitespace + 1881 ")" + className + "(" + whitespace + "|$)" ) ) && classCache( 1882 className, function( elem ) { 1883 return pattern.test( 1884 typeof elem.className === "string" && elem.className || 1885 typeof elem.getAttribute !== "undefined" && 1886 elem.getAttribute( "class" ) || 1887 "" 1888 ); 1889 } ); 1890 }, 1891 1892 "ATTR": function( name, operator, check ) { 1893 return function( elem ) { 1894 var result = Sizzle.attr( elem, name ); 1895 1896 if ( result == null ) { 1897 return operator === "!="; 1898 } 1899 if ( !operator ) { 1900 return true; 1901 } 1902 1903 result += ""; 1904 1905 /* eslint-disable max-len */ 1906 1907 return operator === "=" ? result === check : 1908 operator === "!=" ? result !== check : 1909 operator === "^=" ? check && result.indexOf( check ) === 0 : 1910 operator === "*=" ? check && result.indexOf( check ) > -1 : 1911 operator === "$=" ? check && result.slice( -check.length ) === check : 1912 operator === "~=" ? ( " " + result.replace( rwhitespace, " " ) + " " ).indexOf( check ) > -1 : 1913 operator === "|=" ? result === check || result.slice( 0, check.length + 1 ) === check + "-" : 1914 false; 1915 /* eslint-enable max-len */ 1916 1917 }; 1918 }, 1919 1920 "CHILD": function( type, what, _argument, first, last ) { 1921 var simple = type.slice( 0, 3 ) !== "nth", 1922 forward = type.slice( -4 ) !== "last", 1923 ofType = what === "of-type"; 1924 1925 return first === 1 && last === 0 ? 1926 1927 // Shortcut for :nth-*(n) 1928 function( elem ) { 1929 return !!elem.parentNode; 1930 } : 1931 1932 function( elem, _context, xml ) { 1933 var cache, uniqueCache, outerCache, node, nodeIndex, start, 1934 dir = simple !== forward ? "nextSibling" : "previousSibling", 1935 parent = elem.parentNode, 1936 name = ofType && elem.nodeName.toLowerCase(), 1937 useCache = !xml && !ofType, 1938 diff = false; 1939 1940 if ( parent ) { 1941 1942 // :(first|last|only)-(child|of-type) 1943 if ( simple ) { 1944 while ( dir ) { 1945 node = elem; 1946 while ( ( node = node[ dir ] ) ) { 1947 if ( ofType ? 1948 node.nodeName.toLowerCase() === name : 1949 node.nodeType === 1 ) { 1950 1951 return false; 1952 } 1953 } 1954 1955 // Reverse direction for :only-* (if we haven't yet done so) 1956 start = dir = type === "only" && !start && "nextSibling"; 1957 } 1958 return true; 1959 } 1960 1961 start = [ forward ? parent.firstChild : parent.lastChild ]; 1962 1963 // non-xml :nth-child(...) stores cache data on `parent` 1964 if ( forward && useCache ) { 1965 1966 // Seek `elem` from a previously-cached index 1967 1968 // ...in a gzip-friendly way 1969 node = parent; 1970 outerCache = node[ expando ] || ( node[ expando ] = {} ); 1971 1972 // Support: IE <9 only 1973 // Defend against cloned attroperties (jQuery gh-1709) 1974 uniqueCache = outerCache[ node.uniqueID ] || 1975 ( outerCache[ node.uniqueID ] = {} ); 1976 1977 cache = uniqueCache[ type ] || []; 1978 nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ]; 1979 diff = nodeIndex && cache[ 2 ]; 1980 node = nodeIndex && parent.childNodes[ nodeIndex ]; 1981 1982 while ( ( node = ++nodeIndex && node && node[ dir ] || 1983 1984 // Fallback to seeking `elem` from the start 1985 ( diff = nodeIndex = 0 ) || start.pop() ) ) { 1986 1987 // When found, cache indexes on `parent` and break 1988 if ( node.nodeType === 1 && ++diff && node === elem ) { 1989 uniqueCache[ type ] = [ dirruns, nodeIndex, diff ]; 1990 break; 1991 } 1992 } 1993 1994 } else { 1995 1996 // Use previously-cached element index if available 1997 if ( useCache ) { 1998 1999 // ...in a gzip-friendly way 2000 node = elem; 2001 outerCache = node[ expando ] || ( node[ expando ] = {} ); 2002 2003 // Support: IE <9 only 2004 // Defend against cloned attroperties (jQuery gh-1709) 2005 uniqueCache = outerCache[ node.uniqueID ] || 2006 ( outerCache[ node.uniqueID ] = {} ); 2007 2008 cache = uniqueCache[ type ] || []; 2009 nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ]; 2010 diff = nodeIndex; 2011 } 2012 2013 // xml :nth-child(...) 2014 // or :nth-last-child(...) or :nth(-last)?-of-type(...) 2015 if ( diff === false ) { 2016 2017 // Use the same loop as above to seek `elem` from the start 2018 while ( ( node = ++nodeIndex && node && node[ dir ] || 2019 ( diff = nodeIndex = 0 ) || start.pop() ) ) { 2020 2021 if ( ( ofType ? 2022 node.nodeName.toLowerCase() === name : 2023 node.nodeType === 1 ) && 2024 ++diff ) { 2025 2026 // Cache the index of each encountered element 2027 if ( useCache ) { 2028 outerCache = node[ expando ] || 2029 ( node[ expando ] = {} ); 2030 2031 // Support: IE <9 only 2032 // Defend against cloned attroperties (jQuery gh-1709) 2033 uniqueCache = outerCache[ node.uniqueID ] || 2034 ( outerCache[ node.uniqueID ] = {} ); 2035 2036 uniqueCache[ type ] = [ dirruns, diff ]; 2037 } 2038 2039 if ( node === elem ) { 2040 break; 2041 } 2042 } 2043 } 2044 } 2045 } 2046 2047 // Incorporate the offset, then check against cycle size 2048 diff -= last; 2049 return diff === first || ( diff % first === 0 && diff / first >= 0 ); 2050 } 2051 }; 2052 }, 2053 2054 "PSEUDO": function( pseudo, argument ) { 2055 2056 // pseudo-class names are case-insensitive 2057 // http://www.w3.org/TR/selectors/#pseudo-classes 2058 // Prioritize by case sensitivity in case custom pseudos are added with uppercase letters 2059 // Remember that setFilters inherits from pseudos 2060 var args, 2061 fn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] || 2062 Sizzle.error( "unsupported pseudo: " + pseudo ); 2063 2064 // The user may use createPseudo to indicate that 2065 // arguments are needed to create the filter function 2066 // just as Sizzle does 2067 if ( fn[ expando ] ) { 2068 return fn( argument ); 2069 } 2070 2071 // But maintain support for old signatures 2072 if ( fn.length > 1 ) { 2073 args = [ pseudo, pseudo, "", argument ]; 2074 return Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ? 2075 markFunction( function( seed, matches ) { 2076 var idx, 2077 matched = fn( seed, argument ), 2078 i = matched.length; 2079 while ( i-- ) { 2080 idx = indexOf( seed, matched[ i ] ); 2081 seed[ idx ] = !( matches[ idx ] = matched[ i ] ); 2082 } 2083 } ) : 2084 function( elem ) { 2085 return fn( elem, 0, args ); 2086 }; 2087 } 2088 2089 return fn; 2090 } 2091 }, 2092 2093 pseudos: { 2094 2095 // Potentially complex pseudos 2096 "not": markFunction( function( selector ) { 2097 2098 // Trim the selector passed to compile 2099 // to avoid treating leading and trailing 2100 // spaces as combinators 2101 var input = [], 2102 results = [], 2103 matcher = compile( selector.replace( rtrim, "$1" ) ); 2104 2105 return matcher[ expando ] ? 2106 markFunction( function( seed, matches, _context, xml ) { 2107 var elem, 2108 unmatched = matcher( seed, null, xml, [] ), 2109 i = seed.length; 2110 2111 // Match elements unmatched by `matcher` 2112 while ( i-- ) { 2113 if ( ( elem = unmatched[ i ] ) ) { 2114 seed[ i ] = !( matches[ i ] = elem ); 2115 } 2116 } 2117 } ) : 2118 function( elem, _context, xml ) { 2119 input[ 0 ] = elem; 2120 matcher( input, null, xml, results ); 2121 2122 // Don't keep the element (issue #299) 2123 input[ 0 ] = null; 2124 return !results.pop(); 2125 }; 2126 } ), 2127 2128 "has": markFunction( function( selector ) { 2129 return function( elem ) { 2130 return Sizzle( selector, elem ).length > 0; 2131 }; 2132 } ), 2133 2134 "contains": markFunction( function( text ) { 2135 text = text.replace( runescape, funescape ); 2136 return function( elem ) { 2137 return ( elem.textContent || getText( elem ) ).indexOf( text ) > -1; 2138 }; 2139 } ), 2140 2141 // "Whether an element is represented by a :lang() selector 2142 // is based solely on the element's language value 2143 // being equal to the identifier C, 2144 // or beginning with the identifier C immediately followed by "-". 2145 // The matching of C against the element's language value is performed case-insensitively. 2146 // The identifier C does not have to be a valid language name." 2147 // http://www.w3.org/TR/selectors/#lang-pseudo 2148 "lang": markFunction( function( lang ) { 2149 2150 // lang value must be a valid identifier 2151 if ( !ridentifier.test( lang || "" ) ) { 2152 Sizzle.error( "unsupported lang: " + lang ); 2153 } 2154 lang = lang.replace( runescape, funescape ).toLowerCase(); 2155 return function( elem ) { 2156 var elemLang; 2157 do { 2158 if ( ( elemLang = documentIsHTML ? 2159 elem.lang : 2160 elem.getAttribute( "xml:lang" ) || elem.getAttribute( "lang" ) ) ) { 2161 2162 elemLang = elemLang.toLowerCase(); 2163 return elemLang === lang || elemLang.indexOf( lang + "-" ) === 0; 2164 } 2165 } while ( ( elem = elem.parentNode ) && elem.nodeType === 1 ); 2166 return false; 2167 }; 2168 } ), 2169 2170 // Miscellaneous 2171 "target": function( elem ) { 2172 var hash = window.location && window.location.hash; 2173 return hash && hash.slice( 1 ) === elem.id; 2174 }, 2175 2176 "root": function( elem ) { 2177 return elem === docElem; 2178 }, 2179 2180 "focus": function( elem ) { 2181 return elem === document.activeElement && 2182 ( !document.hasFocus || document.hasFocus() ) && 2183 !!( elem.type || elem.href || ~elem.tabIndex ); 2184 }, 2185 2186 // Boolean properties 2187 "enabled": createDisabledPseudo( false ), 2188 "disabled": createDisabledPseudo( true ), 2189 2190 "checked": function( elem ) { 2191 2192 // In CSS3, :checked should return both checked and selected elements 2193 // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked 2194 var nodeName = elem.nodeName.toLowerCase(); 2195 return ( nodeName === "input" && !!elem.checked ) || 2196 ( nodeName === "option" && !!elem.selected ); 2197 }, 2198 2199 "selected": function( elem ) { 2200 2201 // Accessing this property makes selected-by-default 2202 // options in Safari work properly 2203 if ( elem.parentNode ) { 2204 // eslint-disable-next-line no-unused-expressions 2205 elem.parentNode.selectedIndex; 2206 } 2207 2208 return elem.selected === true; 2209 }, 2210 2211 // Contents 2212 "empty": function( elem ) { 2213 2214 // http://www.w3.org/TR/selectors/#empty-pseudo 2215 // :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5), 2216 // but not by others (comment: 8; processing instruction: 7; etc.) 2217 // nodeType < 6 works because attributes (2) do not appear as children 2218 for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { 2219 if ( elem.nodeType < 6 ) { 2220 return false; 2221 } 2222 } 2223 return true; 2224 }, 2225 2226 "parent": function( elem ) { 2227 return !Expr.pseudos[ "empty" ]( elem ); 2228 }, 2229 2230 // Element/input types 2231 "header": function( elem ) { 2232 return rheader.test( elem.nodeName ); 2233 }, 2234 2235 "input": function( elem ) { 2236 return rinputs.test( elem.nodeName ); 2237 }, 2238 2239 "button": function( elem ) { 2240 var name = elem.nodeName.toLowerCase(); 2241 return name === "input" && elem.type === "button" || name === "button"; 2242 }, 2243 2244 "text": function( elem ) { 2245 var attr; 2246 return elem.nodeName.toLowerCase() === "input" && 2247 elem.type === "text" && 2248 2249 // Support: IE<8 2250 // New HTML5 attribute values (e.g., "search") appear with elem.type === "text" 2251 ( ( attr = elem.getAttribute( "type" ) ) == null || 2252 attr.toLowerCase() === "text" ); 2253 }, 2254 2255 // Position-in-collection 2256 "first": createPositionalPseudo( function() { 2257 return [ 0 ]; 2258 } ), 2259 2260 "last": createPositionalPseudo( function( _matchIndexes, length ) { 2261 return [ length - 1 ]; 2262 } ), 2263 2264 "eq": createPositionalPseudo( function( _matchIndexes, length, argument ) { 2265 return [ argument < 0 ? argument + length : argument ]; 2266 } ), 2267 2268 "even": createPositionalPseudo( function( matchIndexes, length ) { 2269 var i = 0; 2270 for ( ; i < length; i += 2 ) { 2271 matchIndexes.push( i ); 2272 } 2273 return matchIndexes; 2274 } ), 2275 2276 "odd": createPositionalPseudo( function( matchIndexes, length ) { 2277 var i = 1; 2278 for ( ; i < length; i += 2 ) { 2279 matchIndexes.push( i ); 2280 } 2281 return matchIndexes; 2282 } ), 2283 2284 "lt": createPositionalPseudo( function( matchIndexes, length, argument ) { 2285 var i = argument < 0 ? 2286 argument + length : 2287 argument > length ? 2288 length : 2289 argument; 2290 for ( ; --i >= 0; ) { 2291 matchIndexes.push( i ); 2292 } 2293 return matchIndexes; 2294 } ), 2295 2296 "gt": createPositionalPseudo( function( matchIndexes, length, argument ) { 2297 var i = argument < 0 ? argument + length : argument; 2298 for ( ; ++i < length; ) { 2299 matchIndexes.push( i ); 2300 } 2301 return matchIndexes; 2302 } ) 2303 } 2304}; 2305 2306Expr.pseudos[ "nth" ] = Expr.pseudos[ "eq" ]; 2307 2308// Add button/input type pseudos 2309for ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) { 2310 Expr.pseudos[ i ] = createInputPseudo( i ); 2311} 2312for ( i in { submit: true, reset: true } ) { 2313 Expr.pseudos[ i ] = createButtonPseudo( i ); 2314} 2315 2316// Easy API for creating new setFilters 2317function setFilters() {} 2318setFilters.prototype = Expr.filters = Expr.pseudos; 2319Expr.setFilters = new setFilters(); 2320 2321tokenize = Sizzle.tokenize = function( selector, parseOnly ) { 2322 var matched, match, tokens, type, 2323 soFar, groups, preFilters, 2324 cached = tokenCache[ selector + " " ]; 2325 2326 if ( cached ) { 2327 return parseOnly ? 0 : cached.slice( 0 ); 2328 } 2329 2330 soFar = selector; 2331 groups = []; 2332 preFilters = Expr.preFilter; 2333 2334 while ( soFar ) { 2335 2336 // Comma and first run 2337 if ( !matched || ( match = rcomma.exec( soFar ) ) ) { 2338 if ( match ) { 2339 2340 // Don't consume trailing commas as valid 2341 soFar = soFar.slice( match[ 0 ].length ) || soFar; 2342 } 2343 groups.push( ( tokens = [] ) ); 2344 } 2345 2346 matched = false; 2347 2348 // Combinators 2349 if ( ( match = rcombinators.exec( soFar ) ) ) { 2350 matched = match.shift(); 2351 tokens.push( { 2352 value: matched, 2353 2354 // Cast descendant combinators to space 2355 type: match[ 0 ].replace( rtrim, " " ) 2356 } ); 2357 soFar = soFar.slice( matched.length ); 2358 } 2359 2360 // Filters 2361 for ( type in Expr.filter ) { 2362 if ( ( match = matchExpr[ type ].exec( soFar ) ) && ( !preFilters[ type ] || 2363 ( match = preFilters[ type ]( match ) ) ) ) { 2364 matched = match.shift(); 2365 tokens.push( { 2366 value: matched, 2367 type: type, 2368 matches: match 2369 } ); 2370 soFar = soFar.slice( matched.length ); 2371 } 2372 } 2373 2374 if ( !matched ) { 2375 break; 2376 } 2377 } 2378 2379 // Return the length of the invalid excess 2380 // if we're just parsing 2381 // Otherwise, throw an error or return tokens 2382 return parseOnly ? 2383 soFar.length : 2384 soFar ? 2385 Sizzle.error( selector ) : 2386 2387 // Cache the tokens 2388 tokenCache( selector, groups ).slice( 0 ); 2389}; 2390 2391function toSelector( tokens ) { 2392 var i = 0, 2393 len = tokens.length, 2394 selector = ""; 2395 for ( ; i < len; i++ ) { 2396 selector += tokens[ i ].value; 2397 } 2398 return selector; 2399} 2400 2401function addCombinator( matcher, combinator, base ) { 2402 var dir = combinator.dir, 2403 skip = combinator.next, 2404 key = skip || dir, 2405 checkNonElements = base && key === "parentNode", 2406 doneName = done++; 2407 2408 return combinator.first ? 2409 2410 // Check against closest ancestor/preceding element 2411 function( elem, context, xml ) { 2412 while ( ( elem = elem[ dir ] ) ) { 2413 if ( elem.nodeType === 1 || checkNonElements ) { 2414 return matcher( elem, context, xml ); 2415 } 2416 } 2417 return false; 2418 } : 2419 2420 // Check against all ancestor/preceding elements 2421 function( elem, context, xml ) { 2422 var oldCache, uniqueCache, outerCache, 2423 newCache = [ dirruns, doneName ]; 2424 2425 // We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching 2426 if ( xml ) { 2427 while ( ( elem = elem[ dir ] ) ) { 2428 if ( elem.nodeType === 1 || checkNonElements ) { 2429 if ( matcher( elem, context, xml ) ) { 2430 return true; 2431 } 2432 } 2433 } 2434 } else { 2435 while ( ( elem = elem[ dir ] ) ) { 2436 if ( elem.nodeType === 1 || checkNonElements ) { 2437 outerCache = elem[ expando ] || ( elem[ expando ] = {} ); 2438 2439 // Support: IE <9 only 2440 // Defend against cloned attroperties (jQuery gh-1709) 2441 uniqueCache = outerCache[ elem.uniqueID ] || 2442 ( outerCache[ elem.uniqueID ] = {} ); 2443 2444 if ( skip && skip === elem.nodeName.toLowerCase() ) { 2445 elem = elem[ dir ] || elem; 2446 } else if ( ( oldCache = uniqueCache[ key ] ) && 2447 oldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) { 2448 2449 // Assign to newCache so results back-propagate to previous elements 2450 return ( newCache[ 2 ] = oldCache[ 2 ] ); 2451 } else { 2452 2453 // Reuse newcache so results back-propagate to previous elements 2454 uniqueCache[ key ] = newCache; 2455 2456 // A match means we're done; a fail means we have to keep checking 2457 if ( ( newCache[ 2 ] = matcher( elem, context, xml ) ) ) { 2458 return true; 2459 } 2460 } 2461 } 2462 } 2463 } 2464 return false; 2465 }; 2466} 2467 2468function elementMatcher( matchers ) { 2469 return matchers.length > 1 ? 2470 function( elem, context, xml ) { 2471 var i = matchers.length; 2472 while ( i-- ) { 2473 if ( !matchers[ i ]( elem, context, xml ) ) { 2474 return false; 2475 } 2476 } 2477 return true; 2478 } : 2479 matchers[ 0 ]; 2480} 2481 2482function multipleContexts( selector, contexts, results ) { 2483 var i = 0, 2484 len = contexts.length; 2485 for ( ; i < len; i++ ) { 2486 Sizzle( selector, contexts[ i ], results ); 2487 } 2488 return results; 2489} 2490 2491function condense( unmatched, map, filter, context, xml ) { 2492 var elem, 2493 newUnmatched = [], 2494 i = 0, 2495 len = unmatched.length, 2496 mapped = map != null; 2497 2498 for ( ; i < len; i++ ) { 2499 if ( ( elem = unmatched[ i ] ) ) { 2500 if ( !filter || filter( elem, context, xml ) ) { 2501 newUnmatched.push( elem ); 2502 if ( mapped ) { 2503 map.push( i ); 2504 } 2505 } 2506 } 2507 } 2508 2509 return newUnmatched; 2510} 2511 2512function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) { 2513 if ( postFilter && !postFilter[ expando ] ) { 2514 postFilter = setMatcher( postFilter ); 2515 } 2516 if ( postFinder && !postFinder[ expando ] ) { 2517 postFinder = setMatcher( postFinder, postSelector ); 2518 } 2519 return markFunction( function( seed, results, context, xml ) { 2520 var temp, i, elem, 2521 preMap = [], 2522 postMap = [], 2523 preexisting = results.length, 2524 2525 // Get initial elements from seed or context 2526 elems = seed || multipleContexts( 2527 selector || "*", 2528 context.nodeType ? [ context ] : context, 2529 [] 2530 ), 2531 2532 // Prefilter to get matcher input, preserving a map for seed-results synchronization 2533 matcherIn = preFilter && ( seed || !selector ) ? 2534 condense( elems, preMap, preFilter, context, xml ) : 2535 elems, 2536 2537 matcherOut = matcher ? 2538 2539 // If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results, 2540 postFinder || ( seed ? preFilter : preexisting || postFilter ) ? 2541 2542 // ...intermediate processing is necessary 2543 [] : 2544 2545 // ...otherwise use results directly 2546 results : 2547 matcherIn; 2548 2549 // Find primary matches 2550 if ( matcher ) { 2551 matcher( matcherIn, matcherOut, context, xml ); 2552 } 2553 2554 // Apply postFilter 2555 if ( postFilter ) { 2556 temp = condense( matcherOut, postMap ); 2557 postFilter( temp, [], context, xml ); 2558 2559 // Un-match failing elements by moving them back to matcherIn 2560 i = temp.length; 2561 while ( i-- ) { 2562 if ( ( elem = temp[ i ] ) ) { 2563 matcherOut[ postMap[ i ] ] = !( matcherIn[ postMap[ i ] ] = elem ); 2564 } 2565 } 2566 } 2567 2568 if ( seed ) { 2569 if ( postFinder || preFilter ) { 2570 if ( postFinder ) { 2571 2572 // Get the final matcherOut by condensing this intermediate into postFinder contexts 2573 temp = []; 2574 i = matcherOut.length; 2575 while ( i-- ) { 2576 if ( ( elem = matcherOut[ i ] ) ) { 2577 2578 // Restore matcherIn since elem is not yet a final match 2579 temp.push( ( matcherIn[ i ] = elem ) ); 2580 } 2581 } 2582 postFinder( null, ( matcherOut = [] ), temp, xml ); 2583 } 2584 2585 // Move matched elements from seed to results to keep them synchronized 2586 i = matcherOut.length; 2587 while ( i-- ) { 2588 if ( ( elem = matcherOut[ i ] ) && 2589 ( temp = postFinder ? indexOf( seed, elem ) : preMap[ i ] ) > -1 ) { 2590 2591 seed[ temp ] = !( results[ temp ] = elem ); 2592 } 2593 } 2594 } 2595 2596 // Add elements to results, through postFinder if defined 2597 } else { 2598 matcherOut = condense( 2599 matcherOut === results ? 2600 matcherOut.splice( preexisting, matcherOut.length ) : 2601 matcherOut 2602 ); 2603 if ( postFinder ) { 2604 postFinder( null, results, matcherOut, xml ); 2605 } else { 2606 push.apply( results, matcherOut ); 2607 } 2608 } 2609 } ); 2610} 2611 2612function matcherFromTokens( tokens ) { 2613 var checkContext, matcher, j, 2614 len = tokens.length, 2615 leadingRelative = Expr.relative[ tokens[ 0 ].type ], 2616 implicitRelative = leadingRelative || Expr.relative[ " " ], 2617 i = leadingRelative ? 1 : 0, 2618 2619 // The foundational matcher ensures that elements are reachable from top-level context(s) 2620 matchContext = addCombinator( function( elem ) { 2621 return elem === checkContext; 2622 }, implicitRelative, true ), 2623 matchAnyContext = addCombinator( function( elem ) { 2624 return indexOf( checkContext, elem ) > -1; 2625 }, implicitRelative, true ), 2626 matchers = [ function( elem, context, xml ) { 2627 var ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || ( 2628 ( checkContext = context ).nodeType ? 2629 matchContext( elem, context, xml ) : 2630 matchAnyContext( elem, context, xml ) ); 2631 2632 // Avoid hanging onto element (issue #299) 2633 checkContext = null; 2634 return ret; 2635 } ]; 2636 2637 for ( ; i < len; i++ ) { 2638 if ( ( matcher = Expr.relative[ tokens[ i ].type ] ) ) { 2639 matchers = [ addCombinator( elementMatcher( matchers ), matcher ) ]; 2640 } else { 2641 matcher = Expr.filter[ tokens[ i ].type ].apply( null, tokens[ i ].matches ); 2642 2643 // Return special upon seeing a positional matcher 2644 if ( matcher[ expando ] ) { 2645 2646 // Find the next relative operator (if any) for proper handling 2647 j = ++i; 2648 for ( ; j < len; j++ ) { 2649 if ( Expr.relative[ tokens[ j ].type ] ) { 2650 break; 2651 } 2652 } 2653 return setMatcher( 2654 i > 1 && elementMatcher( matchers ), 2655 i > 1 && toSelector( 2656 2657 // If the preceding token was a descendant combinator, insert an implicit any-element `*` 2658 tokens 2659 .slice( 0, i - 1 ) 2660 .concat( { value: tokens[ i - 2 ].type === " " ? "*" : "" } ) 2661 ).replace( rtrim, "$1" ), 2662 matcher, 2663 i < j && matcherFromTokens( tokens.slice( i, j ) ), 2664 j < len && matcherFromTokens( ( tokens = tokens.slice( j ) ) ), 2665 j < len && toSelector( tokens ) 2666 ); 2667 } 2668 matchers.push( matcher ); 2669 } 2670 } 2671 2672 return elementMatcher( matchers ); 2673} 2674 2675function matcherFromGroupMatchers( elementMatchers, setMatchers ) { 2676 var bySet = setMatchers.length > 0, 2677 byElement = elementMatchers.length > 0, 2678 superMatcher = function( seed, context, xml, results, outermost ) { 2679 var elem, j, matcher, 2680 matchedCount = 0, 2681 i = "0", 2682 unmatched = seed && [], 2683 setMatched = [], 2684 contextBackup = outermostContext, 2685 2686 // We must always have either seed elements or outermost context 2687 elems = seed || byElement && Expr.find[ "TAG" ]( "*", outermost ), 2688 2689 // Use integer dirruns iff this is the outermost matcher 2690 dirrunsUnique = ( dirruns += contextBackup == null ? 1 : Math.random() || 0.1 ), 2691 len = elems.length; 2692 2693 if ( outermost ) { 2694 2695 // Support: IE 11+, Edge 17 - 18+ 2696 // IE/Edge sometimes throw a "Permission denied" error when strict-comparing 2697 // two documents; shallow comparisons work. 2698 // eslint-disable-next-line eqeqeq 2699 outermostContext = context == document || context || outermost; 2700 } 2701 2702 // Add elements passing elementMatchers directly to results 2703 // Support: IE<9, Safari 2704 // Tolerate NodeList properties (IE: "length"; Safari: <number>) matching elements by id 2705 for ( ; i !== len && ( elem = elems[ i ] ) != null; i++ ) { 2706 if ( byElement && elem ) { 2707 j = 0; 2708 2709 // Support: IE 11+, Edge 17 - 18+ 2710 // IE/Edge sometimes throw a "Permission denied" error when strict-comparing 2711 // two documents; shallow comparisons work. 2712 // eslint-disable-next-line eqeqeq 2713 if ( !context && elem.ownerDocument != document ) { 2714 setDocument( elem ); 2715 xml = !documentIsHTML; 2716 } 2717 while ( ( matcher = elementMatchers[ j++ ] ) ) { 2718 if ( matcher( elem, context || document, xml ) ) { 2719 results.push( elem ); 2720 break; 2721 } 2722 } 2723 if ( outermost ) { 2724 dirruns = dirrunsUnique; 2725 } 2726 } 2727 2728 // Track unmatched elements for set filters 2729 if ( bySet ) { 2730 2731 // They will have gone through all possible matchers 2732 if ( ( elem = !matcher && elem ) ) { 2733 matchedCount--; 2734 } 2735 2736 // Lengthen the array for every element, matched or not 2737 if ( seed ) { 2738 unmatched.push( elem ); 2739 } 2740 } 2741 } 2742 2743 // `i` is now the count of elements visited above, and adding it to `matchedCount` 2744 // makes the latter nonnegative. 2745 matchedCount += i; 2746 2747 // Apply set filters to unmatched elements 2748 // NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount` 2749 // equals `i`), unless we didn't visit _any_ elements in the above loop because we have 2750 // no element matchers and no seed. 2751 // Incrementing an initially-string "0" `i` allows `i` to remain a string only in that 2752 // case, which will result in a "00" `matchedCount` that differs from `i` but is also 2753 // numerically zero. 2754 if ( bySet && i !== matchedCount ) { 2755 j = 0; 2756 while ( ( matcher = setMatchers[ j++ ] ) ) { 2757 matcher( unmatched, setMatched, context, xml ); 2758 } 2759 2760 if ( seed ) { 2761 2762 // Reintegrate element matches to eliminate the need for sorting 2763 if ( matchedCount > 0 ) { 2764 while ( i-- ) { 2765 if ( !( unmatched[ i ] || setMatched[ i ] ) ) { 2766 setMatched[ i ] = pop.call( results ); 2767 } 2768 } 2769 } 2770 2771 // Discard index placeholder values to get only actual matches 2772 setMatched = condense( setMatched ); 2773 } 2774 2775 // Add matches to results 2776 push.apply( results, setMatched ); 2777 2778 // Seedless set matches succeeding multiple successful matchers stipulate sorting 2779 if ( outermost && !seed && setMatched.length > 0 && 2780 ( matchedCount + setMatchers.length ) > 1 ) { 2781 2782 Sizzle.uniqueSort( results ); 2783 } 2784 } 2785 2786 // Override manipulation of globals by nested matchers 2787 if ( outermost ) { 2788 dirruns = dirrunsUnique; 2789 outermostContext = contextBackup; 2790 } 2791 2792 return unmatched; 2793 }; 2794 2795 return bySet ? 2796 markFunction( superMatcher ) : 2797 superMatcher; 2798} 2799 2800compile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) { 2801 var i, 2802 setMatchers = [], 2803 elementMatchers = [], 2804 cached = compilerCache[ selector + " " ]; 2805 2806 if ( !cached ) { 2807 2808 // Generate a function of recursive functions that can be used to check each element 2809 if ( !match ) { 2810 match = tokenize( selector ); 2811 } 2812 i = match.length; 2813 while ( i-- ) { 2814 cached = matcherFromTokens( match[ i ] ); 2815 if ( cached[ expando ] ) { 2816 setMatchers.push( cached ); 2817 } else { 2818 elementMatchers.push( cached ); 2819 } 2820 } 2821 2822 // Cache the compiled function 2823 cached = compilerCache( 2824 selector, 2825 matcherFromGroupMatchers( elementMatchers, setMatchers ) 2826 ); 2827 2828 // Save selector and tokenization 2829 cached.selector = selector; 2830 } 2831 return cached; 2832}; 2833 2834/** 2835 * A low-level selection function that works with Sizzle's compiled 2836 * selector functions 2837 * @param {String|Function} selector A selector or a pre-compiled 2838 * selector function built with Sizzle.compile 2839 * @param {Element} context 2840 * @param {Array} [results] 2841 * @param {Array} [seed] A set of elements to match against 2842 */ 2843select = Sizzle.select = function( selector, context, results, seed ) { 2844 var i, tokens, token, type, find, 2845 compiled = typeof selector === "function" && selector, 2846 match = !seed && tokenize( ( selector = compiled.selector || selector ) ); 2847 2848 results = results || []; 2849 2850 // Try to minimize operations if there is only one selector in the list and no seed 2851 // (the latter of which guarantees us context) 2852 if ( match.length === 1 ) { 2853 2854 // Reduce context if the leading compound selector is an ID 2855 tokens = match[ 0 ] = match[ 0 ].slice( 0 ); 2856 if ( tokens.length > 2 && ( token = tokens[ 0 ] ).type === "ID" && 2857 context.nodeType === 9 && documentIsHTML && Expr.relative[ tokens[ 1 ].type ] ) { 2858 2859 context = ( Expr.find[ "ID" ]( token.matches[ 0 ] 2860 .replace( runescape, funescape ), context ) || [] )[ 0 ]; 2861 if ( !context ) { 2862 return results; 2863 2864 // Precompiled matchers will still verify ancestry, so step up a level 2865 } else if ( compiled ) { 2866 context = context.parentNode; 2867 } 2868 2869 selector = selector.slice( tokens.shift().value.length ); 2870 } 2871 2872 // Fetch a seed set for right-to-left matching 2873 i = matchExpr[ "needsContext" ].test( selector ) ? 0 : tokens.length; 2874 while ( i-- ) { 2875 token = tokens[ i ]; 2876 2877 // Abort if we hit a combinator 2878 if ( Expr.relative[ ( type = token.type ) ] ) { 2879 break; 2880 } 2881 if ( ( find = Expr.find[ type ] ) ) { 2882 2883 // Search, expanding context for leading sibling combinators 2884 if ( ( seed = find( 2885 token.matches[ 0 ].replace( runescape, funescape ), 2886 rsibling.test( tokens[ 0 ].type ) && testContext( context.parentNode ) || 2887 context 2888 ) ) ) { 2889 2890 // If seed is empty or no tokens remain, we can return early 2891 tokens.splice( i, 1 ); 2892 selector = seed.length && toSelector( tokens ); 2893 if ( !selector ) { 2894 push.apply( results, seed ); 2895 return results; 2896 } 2897 2898 break; 2899 } 2900 } 2901 } 2902 } 2903 2904 // Compile and execute a filtering function if one is not provided 2905 // Provide `match` to avoid retokenization if we modified the selector above 2906 ( compiled || compile( selector, match ) )( 2907 seed, 2908 context, 2909 !documentIsHTML, 2910 results, 2911 !context || rsibling.test( selector ) && testContext( context.parentNode ) || context 2912 ); 2913 return results; 2914}; 2915 2916// One-time assignments 2917 2918// Sort stability 2919support.sortStable = expando.split( "" ).sort( sortOrder ).join( "" ) === expando; 2920 2921// Support: Chrome 14-35+ 2922// Always assume duplicates if they aren't passed to the comparison function 2923support.detectDuplicates = !!hasDuplicate; 2924 2925// Initialize against the default document 2926setDocument(); 2927 2928// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27) 2929// Detached nodes confoundingly follow *each other* 2930support.sortDetached = assert( function( el ) { 2931 2932 // Should return 1, but returns 4 (following) 2933 return el.compareDocumentPosition( document.createElement( "fieldset" ) ) & 1; 2934} ); 2935 2936// Support: IE<8 2937// Prevent attribute/property "interpolation" 2938// https://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx 2939if ( !assert( function( el ) { 2940 el.innerHTML = "<a href='#'></a>"; 2941 return el.firstChild.getAttribute( "href" ) === "#"; 2942} ) ) { 2943 addHandle( "type|href|height|width", function( elem, name, isXML ) { 2944 if ( !isXML ) { 2945 return elem.getAttribute( name, name.toLowerCase() === "type" ? 1 : 2 ); 2946 } 2947 } ); 2948} 2949 2950// Support: IE<9 2951// Use defaultValue in place of getAttribute("value") 2952if ( !support.attributes || !assert( function( el ) { 2953 el.innerHTML = "<input/>"; 2954 el.firstChild.setAttribute( "value", "" ); 2955 return el.firstChild.getAttribute( "value" ) === ""; 2956} ) ) { 2957 addHandle( "value", function( elem, _name, isXML ) { 2958 if ( !isXML && elem.nodeName.toLowerCase() === "input" ) { 2959 return elem.defaultValue; 2960 } 2961 } ); 2962} 2963 2964// Support: IE<9 2965// Use getAttributeNode to fetch booleans when getAttribute lies 2966if ( !assert( function( el ) { 2967 return el.getAttribute( "disabled" ) == null; 2968} ) ) { 2969 addHandle( booleans, function( elem, name, isXML ) { 2970 var val; 2971 if ( !isXML ) { 2972 return elem[ name ] === true ? name.toLowerCase() : 2973 ( val = elem.getAttributeNode( name ) ) && val.specified ? 2974 val.value : 2975 null; 2976 } 2977 } ); 2978} 2979 2980return Sizzle; 2981 2982} )( window ); 2983 2984 2985 2986jQuery.find = Sizzle; 2987jQuery.expr = Sizzle.selectors; 2988 2989// Deprecated 2990jQuery.expr[ ":" ] = jQuery.expr.pseudos; 2991jQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort; 2992jQuery.text = Sizzle.getText; 2993jQuery.isXMLDoc = Sizzle.isXML; 2994jQuery.contains = Sizzle.contains; 2995jQuery.escapeSelector = Sizzle.escape; 2996 2997 2998 2999 3000var dir = function( elem, dir, until ) { 3001 var matched = [], 3002 truncate = until !== undefined; 3003 3004 while ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) { 3005 if ( elem.nodeType === 1 ) { 3006 if ( truncate && jQuery( elem ).is( until ) ) { 3007 break; 3008 } 3009 matched.push( elem ); 3010 } 3011 } 3012 return matched; 3013}; 3014 3015 3016var siblings = function( n, elem ) { 3017 var matched = []; 3018 3019 for ( ; n; n = n.nextSibling ) { 3020 if ( n.nodeType === 1 && n !== elem ) { 3021 matched.push( n ); 3022 } 3023 } 3024 3025 return matched; 3026}; 3027 3028 3029var rneedsContext = jQuery.expr.match.needsContext; 3030 3031 3032 3033function nodeName( elem, name ) { 3034 3035 return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase(); 3036 3037} 3038var rsingleTag = ( /^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i ); 3039 3040 3041 3042// Implement the identical functionality for filter and not 3043function winnow( elements, qualifier, not ) { 3044 if ( isFunction( qualifier ) ) { 3045 return jQuery.grep( elements, function( elem, i ) { 3046 return !!qualifier.call( elem, i, elem ) !== not; 3047 } ); 3048 } 3049 3050 // Single element 3051 if ( qualifier.nodeType ) { 3052 return jQuery.grep( elements, function( elem ) { 3053 return ( elem === qualifier ) !== not; 3054 } ); 3055 } 3056 3057 // Arraylike of elements (jQuery, arguments, Array) 3058 if ( typeof qualifier !== "string" ) { 3059 return jQuery.grep( elements, function( elem ) { 3060 return ( indexOf.call( qualifier, elem ) > -1 ) !== not; 3061 } ); 3062 } 3063 3064 // Filtered directly for both simple and complex selectors 3065 return jQuery.filter( qualifier, elements, not ); 3066} 3067 3068jQuery.filter = function( expr, elems, not ) { 3069 var elem = elems[ 0 ]; 3070 3071 if ( not ) { 3072 expr = ":not(" + expr + ")"; 3073 } 3074 3075 if ( elems.length === 1 && elem.nodeType === 1 ) { 3076 return jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : []; 3077 } 3078 3079 return jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) { 3080 return elem.nodeType === 1; 3081 } ) ); 3082}; 3083 3084jQuery.fn.extend( { 3085 find: function( selector ) { 3086 var i, ret, 3087 len = this.length, 3088 self = this; 3089 3090 if ( typeof selector !== "string" ) { 3091 return this.pushStack( jQuery( selector ).filter( function() { 3092 for ( i = 0; i < len; i++ ) { 3093 if ( jQuery.contains( self[ i ], this ) ) { 3094 return true; 3095 } 3096 } 3097 } ) ); 3098 } 3099 3100 ret = this.pushStack( [] ); 3101 3102 for ( i = 0; i < len; i++ ) { 3103 jQuery.find( selector, self[ i ], ret ); 3104 } 3105 3106 return len > 1 ? jQuery.uniqueSort( ret ) : ret; 3107 }, 3108 filter: function( selector ) { 3109 return this.pushStack( winnow( this, selector || [], false ) ); 3110 }, 3111 not: function( selector ) { 3112 return this.pushStack( winnow( this, selector || [], true ) ); 3113 }, 3114 is: function( selector ) { 3115 return !!winnow( 3116 this, 3117 3118 // If this is a positional/relative selector, check membership in the returned set 3119 // so $("p:first").is("p:last") won't return true for a doc with two "p". 3120 typeof selector === "string" && rneedsContext.test( selector ) ? 3121 jQuery( selector ) : 3122 selector || [], 3123 false 3124 ).length; 3125 } 3126} ); 3127 3128 3129// Initialize a jQuery object 3130 3131 3132// A central reference to the root jQuery(document) 3133var rootjQuery, 3134 3135 // A simple way to check for HTML strings 3136 // Prioritize #id over <tag> to avoid XSS via location.hash (#9521) 3137 // Strict HTML recognition (#11290: must start with <) 3138 // Shortcut simple #id case for speed 3139 rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/, 3140 3141 init = jQuery.fn.init = function( selector, context, root ) { 3142 var match, elem; 3143 3144 // HANDLE: $(""), $(null), $(undefined), $(false) 3145 if ( !selector ) { 3146 return this; 3147 } 3148 3149 // Method init() accepts an alternate rootjQuery 3150 // so migrate can support jQuery.sub (gh-2101) 3151 root = root || rootjQuery; 3152 3153 // Handle HTML strings 3154 if ( typeof selector === "string" ) { 3155 if ( selector[ 0 ] === "<" && 3156 selector[ selector.length - 1 ] === ">" && 3157 selector.length >= 3 ) { 3158 3159 // Assume that strings that start and end with <> are HTML and skip the regex check 3160 match = [ null, selector, null ]; 3161 3162 } else { 3163 match = rquickExpr.exec( selector ); 3164 } 3165 3166 // Match html or make sure no context is specified for #id 3167 if ( match && ( match[ 1 ] || !context ) ) { 3168 3169 // HANDLE: $(html) -> $(array) 3170 if ( match[ 1 ] ) { 3171 context = context instanceof jQuery ? context[ 0 ] : context; 3172 3173 // Option to run scripts is true for back-compat 3174 // Intentionally let the error be thrown if parseHTML is not present 3175 jQuery.merge( this, jQuery.parseHTML( 3176 match[ 1 ], 3177 context && context.nodeType ? context.ownerDocument || context : document, 3178 true 3179 ) ); 3180 3181 // HANDLE: $(html, props) 3182 if ( rsingleTag.test( match[ 1 ] ) && jQuery.isPlainObject( context ) ) { 3183 for ( match in context ) { 3184 3185 // Properties of context are called as methods if possible 3186 if ( isFunction( this[ match ] ) ) { 3187 this[ match ]( context[ match ] ); 3188 3189 // ...and otherwise set as attributes 3190 } else { 3191 this.attr( match, context[ match ] ); 3192 } 3193 } 3194 } 3195 3196 return this; 3197 3198 // HANDLE: $(#id) 3199 } else { 3200 elem = document.getElementById( match[ 2 ] ); 3201 3202 if ( elem ) { 3203 3204 // Inject the element directly into the jQuery object 3205 this[ 0 ] = elem; 3206 this.length = 1; 3207 } 3208 return this; 3209 } 3210 3211 // HANDLE: $(expr, $(...)) 3212 } else if ( !context || context.jquery ) { 3213 return ( context || root ).find( selector ); 3214 3215 // HANDLE: $(expr, context) 3216 // (which is just equivalent to: $(context).find(expr) 3217 } else { 3218 return this.constructor( context ).find( selector ); 3219 } 3220 3221 // HANDLE: $(DOMElement) 3222 } else if ( selector.nodeType ) { 3223 this[ 0 ] = selector; 3224 this.length = 1; 3225 return this; 3226 3227 // HANDLE: $(function) 3228 // Shortcut for document ready 3229 } else if ( isFunction( selector ) ) { 3230 return root.ready !== undefined ? 3231 root.ready( selector ) : 3232 3233 // Execute immediately if ready is not present 3234 selector( jQuery ); 3235 } 3236 3237 return jQuery.makeArray( selector, this ); 3238 }; 3239 3240// Give the init function the jQuery prototype for later instantiation 3241init.prototype = jQuery.fn; 3242 3243// Initialize central reference 3244rootjQuery = jQuery( document ); 3245 3246 3247var rparentsprev = /^(?:parents|prev(?:Until|All))/, 3248 3249 // Methods guaranteed to produce a unique set when starting from a unique set 3250 guaranteedUnique = { 3251 children: true, 3252 contents: true, 3253 next: true, 3254 prev: true 3255 }; 3256 3257jQuery.fn.extend( { 3258 has: function( target ) { 3259 var targets = jQuery( target, this ), 3260 l = targets.length; 3261 3262 return this.filter( function() { 3263 var i = 0; 3264 for ( ; i < l; i++ ) { 3265 if ( jQuery.contains( this, targets[ i ] ) ) { 3266 return true; 3267 } 3268 } 3269 } ); 3270 }, 3271 3272 closest: function( selectors, context ) { 3273 var cur, 3274 i = 0, 3275 l = this.length, 3276 matched = [], 3277 targets = typeof selectors !== "string" && jQuery( selectors ); 3278 3279 // Positional selectors never match, since there's no _selection_ context 3280 if ( !rneedsContext.test( selectors ) ) { 3281 for ( ; i < l; i++ ) { 3282 for ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) { 3283 3284 // Always skip document fragments 3285 if ( cur.nodeType < 11 && ( targets ? 3286 targets.index( cur ) > -1 : 3287 3288 // Don't pass non-elements to Sizzle 3289 cur.nodeType === 1 && 3290 jQuery.find.matchesSelector( cur, selectors ) ) ) { 3291 3292 matched.push( cur ); 3293 break; 3294 } 3295 } 3296 } 3297 } 3298 3299 return this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched ); 3300 }, 3301 3302 // Determine the position of an element within the set 3303 index: function( elem ) { 3304 3305 // No argument, return index in parent 3306 if ( !elem ) { 3307 return ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1; 3308 } 3309 3310 // Index in selector 3311 if ( typeof elem === "string" ) { 3312 return indexOf.call( jQuery( elem ), this[ 0 ] ); 3313 } 3314 3315 // Locate the position of the desired element 3316 return indexOf.call( this, 3317 3318 // If it receives a jQuery object, the first element is used 3319 elem.jquery ? elem[ 0 ] : elem 3320 ); 3321 }, 3322 3323 add: function( selector, context ) { 3324 return this.pushStack( 3325 jQuery.uniqueSort( 3326 jQuery.merge( this.get(), jQuery( selector, context ) ) 3327 ) 3328 ); 3329 }, 3330 3331 addBack: function( selector ) { 3332 return this.add( selector == null ? 3333 this.prevObject : this.prevObject.filter( selector ) 3334 ); 3335 } 3336} ); 3337 3338function sibling( cur, dir ) { 3339 while ( ( cur = cur[ dir ] ) && cur.nodeType !== 1 ) {} 3340 return cur; 3341} 3342 3343jQuery.each( { 3344 parent: function( elem ) { 3345 var parent = elem.parentNode; 3346 return parent && parent.nodeType !== 11 ? parent : null; 3347 }, 3348 parents: function( elem ) { 3349 return dir( elem, "parentNode" ); 3350 }, 3351 parentsUntil: function( elem, _i, until ) { 3352 return dir( elem, "parentNode", until ); 3353 }, 3354 next: function( elem ) { 3355 return sibling( elem, "nextSibling" ); 3356 }, 3357 prev: function( elem ) { 3358 return sibling( elem, "previousSibling" ); 3359 }, 3360 nextAll: function( elem ) { 3361 return dir( elem, "nextSibling" ); 3362 }, 3363 prevAll: function( elem ) { 3364 return dir( elem, "previousSibling" ); 3365 }, 3366 nextUntil: function( elem, _i, until ) { 3367 return dir( elem, "nextSibling", until ); 3368 }, 3369 prevUntil: function( elem, _i, until ) { 3370 return dir( elem, "previousSibling", until ); 3371 }, 3372 siblings: function( elem ) { 3373 return siblings( ( elem.parentNode || {} ).firstChild, elem ); 3374 }, 3375 children: function( elem ) { 3376 return siblings( elem.firstChild ); 3377 }, 3378 contents: function( elem ) { 3379 if ( elem.contentDocument != null && 3380 3381 // Support: IE 11+ 3382 // <object> elements with no `data` attribute has an object 3383 // `contentDocument` with a `null` prototype. 3384 getProto( elem.contentDocument ) ) { 3385 3386 return elem.contentDocument; 3387 } 3388 3389 // Support: IE 9 - 11 only, iOS 7 only, Android Browser <=4.3 only 3390 // Treat the template element as a regular one in browsers that 3391 // don't support it. 3392 if ( nodeName( elem, "template" ) ) { 3393 elem = elem.content || elem; 3394 } 3395 3396 return jQuery.merge( [], elem.childNodes ); 3397 } 3398}, function( name, fn ) { 3399 jQuery.fn[ name ] = function( until, selector ) { 3400 var matched = jQuery.map( this, fn, until ); 3401 3402 if ( name.slice( -5 ) !== "Until" ) { 3403 selector = until; 3404 } 3405 3406 if ( selector && typeof selector === "string" ) { 3407 matched = jQuery.filter( selector, matched ); 3408 } 3409 3410 if ( this.length > 1 ) { 3411 3412 // Remove duplicates 3413 if ( !guaranteedUnique[ name ] ) { 3414 jQuery.uniqueSort( matched ); 3415 } 3416 3417 // Reverse order for parents* and prev-derivatives 3418 if ( rparentsprev.test( name ) ) { 3419 matched.reverse(); 3420 } 3421 } 3422 3423 return this.pushStack( matched ); 3424 }; 3425} ); 3426var rnothtmlwhite = ( /[^\x20\t\r\n\f]+/g ); 3427 3428 3429 3430// Convert String-formatted options into Object-formatted ones 3431function createOptions( options ) { 3432 var object = {}; 3433 jQuery.each( options.match( rnothtmlwhite ) || [], function( _, flag ) { 3434 object[ flag ] = true; 3435 } ); 3436 return object; 3437} 3438 3439/* 3440 * Create a callback list using the following parameters: 3441 * 3442 * options: an optional list of space-separated options that will change how 3443 * the callback list behaves or a more traditional option object 3444 * 3445 * By default a callback list will act like an event callback list and can be 3446 * "fired" multiple times. 3447 * 3448 * Possible options: 3449 * 3450 * once: will ensure the callback list can only be fired once (like a Deferred) 3451 * 3452 * memory: will keep track of previous values and will call any callback added 3453 * after the list has been fired right away with the latest "memorized" 3454 * values (like a Deferred) 3455 * 3456 * unique: will ensure a callback can only be added once (no duplicate in the list) 3457 * 3458 * stopOnFalse: interrupt callings when a callback returns false 3459 * 3460 */ 3461jQuery.Callbacks = function( options ) { 3462 3463 // Convert options from String-formatted to Object-formatted if needed 3464 // (we check in cache first) 3465 options = typeof options === "string" ? 3466 createOptions( options ) : 3467 jQuery.extend( {}, options ); 3468 3469 var // Flag to know if list is currently firing 3470 firing, 3471 3472 // Last fire value for non-forgettable lists 3473 memory, 3474 3475 // Flag to know if list was already fired 3476 fired, 3477 3478 // Flag to prevent firing 3479 locked, 3480 3481 // Actual callback list 3482 list = [], 3483 3484 // Queue of execution data for repeatable lists 3485 queue = [], 3486 3487 // Index of currently firing callback (modified by add/remove as needed) 3488 firingIndex = -1, 3489 3490 // Fire callbacks 3491 fire = function() { 3492 3493 // Enforce single-firing 3494 locked = locked || options.once; 3495 3496 // Execute callbacks for all pending executions, 3497 // respecting firingIndex overrides and runtime changes 3498 fired = firing = true; 3499 for ( ; queue.length; firingIndex = -1 ) { 3500 memory = queue.shift(); 3501 while ( ++firingIndex < list.length ) { 3502 3503 // Run callback and check for early termination 3504 if ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false && 3505 options.stopOnFalse ) { 3506 3507 // Jump to end and forget the data so .add doesn't re-fire 3508 firingIndex = list.length; 3509 memory = false; 3510 } 3511 } 3512 } 3513 3514 // Forget the data if we're done with it 3515 if ( !options.memory ) { 3516 memory = false; 3517 } 3518 3519 firing = false; 3520 3521 // Clean up if we're done firing for good 3522 if ( locked ) { 3523 3524 // Keep an empty list if we have data for future add calls 3525 if ( memory ) { 3526 list = []; 3527 3528 // Otherwise, this object is spent 3529 } else { 3530 list = ""; 3531 } 3532 } 3533 }, 3534 3535 // Actual Callbacks object 3536 self = { 3537 3538 // Add a callback or a collection of callbacks to the list 3539 add: function() { 3540 if ( list ) { 3541 3542 // If we have memory from a past run, we should fire after adding 3543 if ( memory && !firing ) { 3544 firingIndex = list.length - 1; 3545 queue.push( memory ); 3546 } 3547 3548 ( function add( args ) { 3549 jQuery.each( args, function( _, arg ) { 3550 if ( isFunction( arg ) ) { 3551 if ( !options.unique || !self.has( arg ) ) { 3552 list.push( arg ); 3553 } 3554 } else if ( arg && arg.length && toType( arg ) !== "string" ) { 3555 3556 // Inspect recursively 3557 add( arg ); 3558 } 3559 } ); 3560 } )( arguments ); 3561 3562 if ( memory && !firing ) { 3563 fire(); 3564 } 3565 } 3566 return this; 3567 }, 3568 3569 // Remove a callback from the list 3570 remove: function() { 3571 jQuery.each( arguments, function( _, arg ) { 3572 var index; 3573 while ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) { 3574 list.splice( index, 1 ); 3575 3576 // Handle firing indexes 3577 if ( index <= firingIndex ) { 3578 firingIndex--; 3579 } 3580 } 3581 } ); 3582 return this; 3583 }, 3584 3585 // Check if a given callback is in the list. 3586 // If no argument is given, return whether or not list has callbacks attached. 3587 has: function( fn ) { 3588 return fn ? 3589 jQuery.inArray( fn, list ) > -1 : 3590 list.length > 0; 3591 }, 3592 3593 // Remove all callbacks from the list 3594 empty: function() { 3595 if ( list ) { 3596 list = []; 3597 } 3598 return this; 3599 }, 3600 3601 // Disable .fire and .add 3602 // Abort any current/pending executions 3603 // Clear all callbacks and values 3604 disable: function() { 3605 locked = queue = []; 3606 list = memory = ""; 3607 return this; 3608 }, 3609 disabled: function() { 3610 return !list; 3611 }, 3612 3613 // Disable .fire 3614 // Also disable .add unless we have memory (since it would have no effect) 3615 // Abort any pending executions 3616 lock: function() { 3617 locked = queue = []; 3618 if ( !memory && !firing ) { 3619 list = memory = ""; 3620 } 3621 return this; 3622 }, 3623 locked: function() { 3624 return !!locked; 3625 }, 3626 3627 // Call all callbacks with the given context and arguments 3628 fireWith: function( context, args ) { 3629 if ( !locked ) { 3630 args = args || []; 3631 args = [ context, args.slice ? args.slice() : args ]; 3632 queue.push( args ); 3633 if ( !firing ) { 3634 fire(); 3635 } 3636 } 3637 return this; 3638 }, 3639 3640 // Call all the callbacks with the given arguments 3641 fire: function() { 3642 self.fireWith( this, arguments ); 3643 return this; 3644 }, 3645 3646 // To know if the callbacks have already been called at least once 3647 fired: function() { 3648 return !!fired; 3649 } 3650 }; 3651 3652 return self; 3653}; 3654 3655 3656function Identity( v ) { 3657 return v; 3658} 3659function Thrower( ex ) { 3660 throw ex; 3661} 3662 3663function adoptValue( value, resolve, reject, noValue ) { 3664 var method; 3665 3666 try { 3667 3668 // Check for promise aspect first to privilege synchronous behavior 3669 if ( value && isFunction( ( method = value.promise ) ) ) { 3670 method.call( value ).done( resolve ).fail( reject ); 3671 3672 // Other thenables 3673 } else if ( value && isFunction( ( method = value.then ) ) ) { 3674 method.call( value, resolve, reject ); 3675 3676 // Other non-thenables 3677 } else { 3678 3679 // Control `resolve` arguments by letting Array#slice cast boolean `noValue` to integer: 3680 // * false: [ value ].slice( 0 ) => resolve( value ) 3681 // * true: [ value ].slice( 1 ) => resolve() 3682 resolve.apply( undefined, [ value ].slice( noValue ) ); 3683 } 3684 3685 // For Promises/A+, convert exceptions into rejections 3686 // Since jQuery.when doesn't unwrap thenables, we can skip the extra checks appearing in 3687 // Deferred#then to conditionally suppress rejection. 3688 } catch ( value ) { 3689 3690 // Support: Android 4.0 only 3691 // Strict mode functions invoked without .call/.apply get global-object context 3692 reject.apply( undefined, [ value ] ); 3693 } 3694} 3695 3696jQuery.extend( { 3697 3698 Deferred: function( func ) { 3699 var tuples = [ 3700 3701 // action, add listener, callbacks, 3702 // ... .then handlers, argument index, [final state] 3703 [ "notify", "progress", jQuery.Callbacks( "memory" ), 3704 jQuery.Callbacks( "memory" ), 2 ], 3705 [ "resolve", "done", jQuery.Callbacks( "once memory" ), 3706 jQuery.Callbacks( "once memory" ), 0, "resolved" ], 3707 [ "reject", "fail", jQuery.Callbacks( "once memory" ), 3708 jQuery.Callbacks( "once memory" ), 1, "rejected" ] 3709 ], 3710 state = "pending", 3711 promise = { 3712 state: function() { 3713 return state; 3714 }, 3715 always: function() { 3716 deferred.done( arguments ).fail( arguments ); 3717 return this; 3718 }, 3719 "catch": function( fn ) { 3720 return promise.then( null, fn ); 3721 }, 3722 3723 // Keep pipe for back-compat 3724 pipe: function( /* fnDone, fnFail, fnProgress */ ) { 3725 var fns = arguments; 3726 3727 return jQuery.Deferred( function( newDefer ) { 3728 jQuery.each( tuples, function( _i, tuple ) { 3729 3730 // Map tuples (progress, done, fail) to arguments (done, fail, progress) 3731 var fn = isFunction( fns[ tuple[ 4 ] ] ) && fns[ tuple[ 4 ] ]; 3732 3733 // deferred.progress(function() { bind to newDefer or newDefer.notify }) 3734 // deferred.done(function() { bind to newDefer or newDefer.resolve }) 3735 // deferred.fail(function() { bind to newDefer or newDefer.reject }) 3736 deferred[ tuple[ 1 ] ]( function() { 3737 var returned = fn && fn.apply( this, arguments ); 3738 if ( returned && isFunction( returned.promise ) ) { 3739 returned.promise() 3740 .progress( newDefer.notify ) 3741 .done( newDefer.resolve ) 3742 .fail( newDefer.reject ); 3743 } else { 3744 newDefer[ tuple[ 0 ] + "With" ]( 3745 this, 3746 fn ? [ returned ] : arguments 3747 ); 3748 } 3749 } ); 3750 } ); 3751 fns = null; 3752 } ).promise(); 3753 }, 3754 then: function( onFulfilled, onRejected, onProgress ) { 3755 var maxDepth = 0; 3756 function resolve( depth, deferred, handler, special ) { 3757 return function() { 3758 var that = this, 3759 args = arguments, 3760 mightThrow = function() { 3761 var returned, then; 3762 3763 // Support: Promises/A+ section 2.3.3.3.3 3764 // https://promisesaplus.com/#point-59 3765 // Ignore double-resolution attempts 3766 if ( depth < maxDepth ) { 3767 return; 3768 } 3769 3770 returned = handler.apply( that, args ); 3771 3772 // Support: Promises/A+ section 2.3.1 3773 // https://promisesaplus.com/#point-48 3774 if ( returned === deferred.promise() ) { 3775 throw new TypeError( "Thenable self-resolution" ); 3776 } 3777 3778 // Support: Promises/A+ sections 2.3.3.1, 3.5 3779 // https://promisesaplus.com/#point-54 3780 // https://promisesaplus.com/#point-75 3781 // Retrieve `then` only once 3782 then = returned && 3783 3784 // Support: Promises/A+ section 2.3.4 3785 // https://promisesaplus.com/#point-64 3786 // Only check objects and functions for thenability 3787 ( typeof returned === "object" || 3788 typeof returned === "function" ) && 3789 returned.then; 3790 3791 // Handle a returned thenable 3792 if ( isFunction( then ) ) { 3793 3794 // Special processors (notify) just wait for resolution 3795 if ( special ) { 3796 then.call( 3797 returned, 3798 resolve( maxDepth, deferred, Identity, special ), 3799 resolve( maxDepth, deferred, Thrower, special ) 3800 ); 3801 3802 // Normal processors (resolve) also hook into progress 3803 } else { 3804 3805 // ...and disregard older resolution values 3806 maxDepth++; 3807 3808 then.call( 3809 returned, 3810 resolve( maxDepth, deferred, Identity, special ), 3811 resolve( maxDepth, deferred, Thrower, special ), 3812 resolve( maxDepth, deferred, Identity, 3813 deferred.notifyWith ) 3814 ); 3815 } 3816 3817 // Handle all other returned values 3818 } else { 3819 3820 // Only substitute handlers pass on context 3821 // and multiple values (non-spec behavior) 3822 if ( handler !== Identity ) { 3823 that = undefined; 3824 args = [ returned ]; 3825 } 3826 3827 // Process the value(s) 3828 // Default process is resolve 3829 ( special || deferred.resolveWith )( that, args ); 3830 } 3831 }, 3832 3833 // Only normal processors (resolve) catch and reject exceptions 3834 process = special ? 3835 mightThrow : 3836 function() { 3837 try { 3838 mightThrow(); 3839 } catch ( e ) { 3840 3841 if ( jQuery.Deferred.exceptionHook ) { 3842 jQuery.Deferred.exceptionHook( e, 3843 process.stackTrace ); 3844 } 3845 3846 // Support: Promises/A+ section 2.3.3.3.4.1 3847 // https://promisesaplus.com/#point-61 3848 // Ignore post-resolution exceptions 3849 if ( depth + 1 >= maxDepth ) { 3850 3851 // Only substitute handlers pass on context 3852 // and multiple values (non-spec behavior) 3853 if ( handler !== Thrower ) { 3854 that = undefined; 3855 args = [ e ]; 3856 } 3857 3858 deferred.rejectWith( that, args ); 3859 } 3860 } 3861 }; 3862 3863 // Support: Promises/A+ section 2.3.3.3.1 3864 // https://promisesaplus.com/#point-57 3865 // Re-resolve promises immediately to dodge false rejection from 3866 // subsequent errors 3867 if ( depth ) { 3868 process(); 3869 } else { 3870 3871 // Call an optional hook to record the stack, in case of exception 3872 // since it's otherwise lost when execution goes async 3873 if ( jQuery.Deferred.getStackHook ) { 3874 process.stackTrace = jQuery.Deferred.getStackHook(); 3875 } 3876 window.setTimeout( process ); 3877 } 3878 }; 3879 } 3880 3881 return jQuery.Deferred( function( newDefer ) { 3882 3883 // progress_handlers.add( ... ) 3884 tuples[ 0 ][ 3 ].add( 3885 resolve( 3886 0, 3887 newDefer, 3888 isFunction( onProgress ) ? 3889 onProgress : 3890 Identity, 3891 newDefer.notifyWith 3892 ) 3893 ); 3894 3895 // fulfilled_handlers.add( ... ) 3896 tuples[ 1 ][ 3 ].add( 3897 resolve( 3898 0, 3899 newDefer, 3900 isFunction( onFulfilled ) ? 3901 onFulfilled : 3902 Identity 3903 ) 3904 ); 3905 3906 // rejected_handlers.add( ... ) 3907 tuples[ 2 ][ 3 ].add( 3908 resolve( 3909 0, 3910 newDefer, 3911 isFunction( onRejected ) ? 3912 onRejected : 3913 Thrower 3914 ) 3915 ); 3916 } ).promise(); 3917 }, 3918 3919 // Get a promise for this deferred 3920 // If obj is provided, the promise aspect is added to the object 3921 promise: function( obj ) { 3922 return obj != null ? jQuery.extend( obj, promise ) : promise; 3923 } 3924 }, 3925 deferred = {}; 3926 3927 // Add list-specific methods 3928 jQuery.each( tuples, function( i, tuple ) { 3929 var list = tuple[ 2 ], 3930 stateString = tuple[ 5 ]; 3931 3932 // promise.progress = list.add 3933 // promise.done = list.add 3934 // promise.fail = list.add 3935 promise[ tuple[ 1 ] ] = list.add; 3936 3937 // Handle state 3938 if ( stateString ) { 3939 list.add( 3940 function() { 3941 3942 // state = "resolved" (i.e., fulfilled) 3943 // state = "rejected" 3944 state = stateString; 3945 }, 3946 3947 // rejected_callbacks.disable 3948 // fulfilled_callbacks.disable 3949 tuples[ 3 - i ][ 2 ].disable, 3950 3951 // rejected_handlers.disable 3952 // fulfilled_handlers.disable 3953 tuples[ 3 - i ][ 3 ].disable, 3954 3955 // progress_callbacks.lock 3956 tuples[ 0 ][ 2 ].lock, 3957 3958 // progress_handlers.lock 3959 tuples[ 0 ][ 3 ].lock 3960 ); 3961 } 3962 3963 // progress_handlers.fire 3964 // fulfilled_handlers.fire 3965 // rejected_handlers.fire 3966 list.add( tuple[ 3 ].fire ); 3967 3968 // deferred.notify = function() { deferred.notifyWith(...) } 3969 // deferred.resolve = function() { deferred.resolveWith(...) } 3970 // deferred.reject = function() { deferred.rejectWith(...) } 3971 deferred[ tuple[ 0 ] ] = function() { 3972 deferred[ tuple[ 0 ] + "With" ]( this === deferred ? undefined : this, arguments ); 3973 return this; 3974 }; 3975 3976 // deferred.notifyWith = list.fireWith 3977 // deferred.resolveWith = list.fireWith 3978 // deferred.rejectWith = list.fireWith 3979 deferred[ tuple[ 0 ] + "With" ] = list.fireWith; 3980 } ); 3981 3982 // Make the deferred a promise 3983 promise.promise( deferred ); 3984 3985 // Call given func if any 3986 if ( func ) { 3987 func.call( deferred, deferred ); 3988 } 3989 3990 // All done! 3991 return deferred; 3992 }, 3993 3994 // Deferred helper 3995 when: function( singleValue ) { 3996 var 3997 3998 // count of uncompleted subordinates 3999 remaining = arguments.length, 4000 4001 // count of unprocessed arguments 4002 i = remaining, 4003 4004 // subordinate fulfillment data 4005 resolveContexts = Array( i ), 4006 resolveValues = slice.call( arguments ), 4007 4008 // the primary Deferred 4009 primary = jQuery.Deferred(), 4010 4011 // subordinate callback factory 4012 updateFunc = function( i ) { 4013 return function( value ) { 4014 resolveContexts[ i ] = this; 4015 resolveValues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value; 4016 if ( !( --remaining ) ) { 4017 primary.resolveWith( resolveContexts, resolveValues ); 4018 } 4019 }; 4020 }; 4021 4022 // Single- and empty arguments are adopted like Promise.resolve 4023 if ( remaining <= 1 ) { 4024 adoptValue( singleValue, primary.done( updateFunc( i ) ).resolve, primary.reject, 4025 !remaining ); 4026 4027 // Use .then() to unwrap secondary thenables (cf. gh-3000) 4028 if ( primary.state() === "pending" || 4029 isFunction( resolveValues[ i ] && resolveValues[ i ].then ) ) { 4030 4031 return primary.then(); 4032 } 4033 } 4034 4035 // Multiple arguments are aggregated like Promise.all array elements 4036 while ( i-- ) { 4037 adoptValue( resolveValues[ i ], updateFunc( i ), primary.reject ); 4038 } 4039 4040 return primary.promise(); 4041 } 4042} ); 4043 4044 4045// These usually indicate a programmer mistake during development, 4046// warn about them ASAP rather than swallowing them by default. 4047var rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/; 4048 4049jQuery.Deferred.exceptionHook = function( error, stack ) { 4050 4051 // Support: IE 8 - 9 only 4052 // Console exists when dev tools are open, which can happen at any time 4053 if ( window.console && window.console.warn && error && rerrorNames.test( error.name ) ) { 4054 window.console.warn( "jQuery.Deferred exception: " + error.message, error.stack, stack ); 4055 } 4056}; 4057 4058 4059 4060 4061jQuery.readyException = function( error ) { 4062 window.setTimeout( function() { 4063 throw error; 4064 } ); 4065}; 4066 4067 4068 4069 4070// The deferred used on DOM ready 4071var readyList = jQuery.Deferred(); 4072 4073jQuery.fn.ready = function( fn ) { 4074 4075 readyList 4076 .then( fn ) 4077 4078 // Wrap jQuery.readyException in a function so that the lookup 4079 // happens at the time of error handling instead of callback 4080 // registration. 4081 .catch( function( error ) { 4082 jQuery.readyException( error ); 4083 } ); 4084 4085 return this; 4086}; 4087 4088jQuery.extend( { 4089 4090 // Is the DOM ready to be used? Set to true once it occurs. 4091 isReady: false, 4092 4093 // A counter to track how many items to wait for before 4094 // the ready event fires. See #6781 4095 readyWait: 1, 4096 4097 // Handle when the DOM is ready 4098 ready: function( wait ) { 4099 4100 // Abort if there are pending holds or we're already ready 4101 if ( wait === true ? --jQuery.readyWait : jQuery.isReady ) { 4102 return; 4103 } 4104 4105 // Remember that the DOM is ready 4106 jQuery.isReady = true; 4107 4108 // If a normal DOM Ready event fired, decrement, and wait if need be 4109 if ( wait !== true && --jQuery.readyWait > 0 ) { 4110 return; 4111 } 4112 4113 // If there are functions bound, to execute 4114 readyList.resolveWith( document, [ jQuery ] ); 4115 } 4116} ); 4117 4118jQuery.ready.then = readyList.then; 4119 4120// The ready event handler and self cleanup method 4121function completed() { 4122 document.removeEventListener( "DOMContentLoaded", completed ); 4123 window.removeEventListener( "load", completed ); 4124 jQuery.ready(); 4125} 4126 4127// Catch cases where $(document).ready() is called 4128// after the browser event has already occurred. 4129// Support: IE <=9 - 10 only 4130// Older IE sometimes signals "interactive" too soon 4131if ( document.readyState === "complete" || 4132 ( document.readyState !== "loading" && !document.documentElement.doScroll ) ) { 4133 4134 // Handle it asynchronously to allow scripts the opportunity to delay ready 4135 window.setTimeout( jQuery.ready ); 4136 4137} else { 4138 4139 // Use the handy event callback 4140 document.addEventListener( "DOMContentLoaded", completed ); 4141 4142 // A fallback to window.onload, that will always work 4143 window.addEventListener( "load", completed ); 4144} 4145 4146 4147 4148 4149// Multifunctional method to get and set values of a collection 4150// The value/s can optionally be executed if it's a function 4151var access = function( elems, fn, key, value, chainable, emptyGet, raw ) { 4152 var i = 0, 4153 len = elems.length, 4154 bulk = key == null; 4155 4156 // Sets many values 4157 if ( toType( key ) === "object" ) { 4158 chainable = true; 4159 for ( i in key ) { 4160 access( elems, fn, i, key[ i ], true, emptyGet, raw ); 4161 } 4162 4163 // Sets one value 4164 } else if ( value !== undefined ) { 4165 chainable = true; 4166 4167 if ( !isFunction( value ) ) { 4168 raw = true; 4169 } 4170 4171 if ( bulk ) { 4172 4173 // Bulk operations run against the entire set 4174 if ( raw ) { 4175 fn.call( elems, value ); 4176 fn = null; 4177 4178 // ...except when executing function values 4179 } else { 4180 bulk = fn; 4181 fn = function( elem, _key, value ) { 4182 return bulk.call( jQuery( elem ), value ); 4183 }; 4184 } 4185 } 4186 4187 if ( fn ) { 4188 for ( ; i < len; i++ ) { 4189 fn( 4190 elems[ i ], key, raw ? 4191 value : 4192 value.call( elems[ i ], i, fn( elems[ i ], key ) ) 4193 ); 4194 } 4195 } 4196 } 4197 4198 if ( chainable ) { 4199 return elems; 4200 } 4201 4202 // Gets 4203 if ( bulk ) { 4204 return fn.call( elems ); 4205 } 4206 4207 return len ? fn( elems[ 0 ], key ) : emptyGet; 4208}; 4209 4210 4211// Matches dashed string for camelizing 4212var rmsPrefix = /^-ms-/, 4213 rdashAlpha = /-([a-z])/g; 4214 4215// Used by camelCase as callback to replace() 4216function fcamelCase( _all, letter ) { 4217 return letter.toUpperCase(); 4218} 4219 4220// Convert dashed to camelCase; used by the css and data modules 4221// Support: IE <=9 - 11, Edge 12 - 15 4222// Microsoft forgot to hump their vendor prefix (#9572) 4223function camelCase( string ) { 4224 return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase ); 4225} 4226var acceptData = function( owner ) { 4227 4228 // Accepts only: 4229 // - Node 4230 // - Node.ELEMENT_NODE 4231 // - Node.DOCUMENT_NODE 4232 // - Object 4233 // - Any 4234 return owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType ); 4235}; 4236 4237 4238 4239 4240function Data() { 4241 this.expando = jQuery.expando + Data.uid++; 4242} 4243 4244Data.uid = 1; 4245 4246Data.prototype = { 4247 4248 cache: function( owner ) { 4249 4250 // Check if the owner object already has a cache 4251 var value = owner[ this.expando ]; 4252 4253 // If not, create one 4254 if ( !value ) { 4255 value = {}; 4256 4257 // We can accept data for non-element nodes in modern browsers, 4258 // but we should not, see #8335. 4259 // Always return an empty object. 4260 if ( acceptData( owner ) ) { 4261 4262 // If it is a node unlikely to be stringify-ed or looped over 4263 // use plain assignment 4264 if ( owner.nodeType ) { 4265 owner[ this.expando ] = value; 4266 4267 // Otherwise secure it in a non-enumerable property 4268 // configurable must be true to allow the property to be 4269 // deleted when data is removed 4270 } else { 4271 Object.defineProperty( owner, this.expando, { 4272 value: value, 4273 configurable: true 4274 } ); 4275 } 4276 } 4277 } 4278 4279 return value; 4280 }, 4281 set: function( owner, data, value ) { 4282 var prop, 4283 cache = this.cache( owner ); 4284 4285 // Handle: [ owner, key, value ] args 4286 // Always use camelCase key (gh-2257) 4287 if ( typeof data === "string" ) { 4288 cache[ camelCase( data ) ] = value; 4289 4290 // Handle: [ owner, { properties } ] args 4291 } else { 4292 4293 // Copy the properties one-by-one to the cache object 4294 for ( prop in data ) { 4295 cache[ camelCase( prop ) ] = data[ prop ]; 4296 } 4297 } 4298 return cache; 4299 }, 4300 get: function( owner, key ) { 4301 return key === undefined ? 4302 this.cache( owner ) : 4303 4304 // Always use camelCase key (gh-2257) 4305 owner[ this.expando ] && owner[ this.expando ][ camelCase( key ) ]; 4306 }, 4307 access: function( owner, key, value ) { 4308 4309 // In cases where either: 4310 // 4311 // 1. No key was specified 4312 // 2. A string key was specified, but no value provided 4313 // 4314 // Take the "read" path and allow the get method to determine 4315 // which value to return, respectively either: 4316 // 4317 // 1. The entire cache object 4318 // 2. The data stored at the key 4319 // 4320 if ( key === undefined || 4321 ( ( key && typeof key === "string" ) && value === undefined ) ) { 4322 4323 return this.get( owner, key ); 4324 } 4325 4326 // When the key is not a string, or both a key and value 4327 // are specified, set or extend (existing objects) with either: 4328 // 4329 // 1. An object of properties 4330 // 2. A key and value 4331 // 4332 this.set( owner, key, value ); 4333 4334 // Since the "set" path can have two possible entry points 4335 // return the expected data based on which path was taken[*] 4336 return value !== undefined ? value : key; 4337 }, 4338 remove: function( owner, key ) { 4339 var i, 4340 cache = owner[ this.expando ]; 4341 4342 if ( cache === undefined ) { 4343 return; 4344 } 4345 4346 if ( key !== undefined ) { 4347 4348 // Support array or space separated string of keys 4349 if ( Array.isArray( key ) ) { 4350 4351 // If key is an array of keys... 4352 // We always set camelCase keys, so remove that. 4353 key = key.map( camelCase ); 4354 } else { 4355 key = camelCase( key ); 4356 4357 // If a key with the spaces exists, use it. 4358 // Otherwise, create an array by matching non-whitespace 4359 key = key in cache ? 4360 [ key ] : 4361 ( key.match( rnothtmlwhite ) || [] ); 4362 } 4363 4364 i = key.length; 4365 4366 while ( i-- ) { 4367 delete cache[ key[ i ] ]; 4368 } 4369 } 4370 4371 // Remove the expando if there's no more data 4372 if ( key === undefined || jQuery.isEmptyObject( cache ) ) { 4373 4374 // Support: Chrome <=35 - 45 4375 // Webkit & Blink performance suffers when deleting properties 4376 // from DOM nodes, so set to undefined instead 4377 // https://bugs.chromium.org/p/chromium/issues/detail?id=378607 (bug restricted) 4378 if ( owner.nodeType ) { 4379 owner[ this.expando ] = undefined; 4380 } else { 4381 delete owner[ this.expando ]; 4382 } 4383 } 4384 }, 4385 hasData: function( owner ) { 4386 var cache = owner[ this.expando ]; 4387 return cache !== undefined && !jQuery.isEmptyObject( cache ); 4388 } 4389}; 4390var dataPriv = new Data(); 4391 4392var dataUser = new Data(); 4393 4394 4395 4396// Implementation Summary 4397// 4398// 1. Enforce API surface and semantic compatibility with 1.9.x branch 4399// 2. Improve the module's maintainability by reducing the storage 4400// paths to a single mechanism. 4401// 3. Use the same single mechanism to support "private" and "user" data. 4402// 4. _Never_ expose "private" data to user code (TODO: Drop _data, _removeData) 4403// 5. Avoid exposing implementation details on user objects (eg. expando properties) 4404// 6. Provide a clear path for implementation upgrade to WeakMap in 2014 4405 4406var rbrace = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/, 4407 rmultiDash = /[A-Z]/g; 4408 4409function getData( data ) { 4410 if ( data === "true" ) { 4411 return true; 4412 } 4413 4414 if ( data === "false" ) { 4415 return false; 4416 } 4417 4418 if ( data === "null" ) { 4419 return null; 4420 } 4421 4422 // Only convert to a number if it doesn't change the string 4423 if ( data === +data + "" ) { 4424 return +data; 4425 } 4426 4427 if ( rbrace.test( data ) ) { 4428 return JSON.parse( data ); 4429 } 4430 4431 return data; 4432} 4433 4434function dataAttr( elem, key, data ) { 4435 var name; 4436 4437 // If nothing was found internally, try to fetch any 4438 // data from the HTML5 data-* attribute 4439 if ( data === undefined && elem.nodeType === 1 ) { 4440 name = "data-" + key.replace( rmultiDash, "-$&" ).toLowerCase(); 4441 data = elem.getAttribute( name ); 4442 4443 if ( typeof data === "string" ) { 4444 try { 4445 data = getData( data ); 4446 } catch ( e ) {} 4447 4448 // Make sure we set the data so it isn't changed later 4449 dataUser.set( elem, key, data ); 4450 } else { 4451 data = undefined; 4452 } 4453 } 4454 return data; 4455} 4456 4457jQuery.extend( { 4458 hasData: function( elem ) { 4459 return dataUser.hasData( elem ) || dataPriv.hasData( elem ); 4460 }, 4461 4462 data: function( elem, name, data ) { 4463 return dataUser.access( elem, name, data ); 4464 }, 4465 4466 removeData: function( elem, name ) { 4467 dataUser.remove( elem, name ); 4468 }, 4469 4470 // TODO: Now that all calls to _data and _removeData have been replaced 4471 // with direct calls to dataPriv methods, these can be deprecated. 4472 _data: function( elem, name, data ) { 4473 return dataPriv.access( elem, name, data ); 4474 }, 4475 4476 _removeData: function( elem, name ) { 4477 dataPriv.remove( elem, name ); 4478 } 4479} ); 4480 4481jQuery.fn.extend( { 4482 data: function( key, value ) { 4483 var i, name, data, 4484 elem = this[ 0 ], 4485 attrs = elem && elem.attributes; 4486 4487 // Gets all values 4488 if ( key === undefined ) { 4489 if ( this.length ) { 4490 data = dataUser.get( elem ); 4491 4492 if ( elem.nodeType === 1 && !dataPriv.get( elem, "hasDataAttrs" ) ) { 4493 i = attrs.length; 4494 while ( i-- ) { 4495 4496 // Support: IE 11 only 4497 // The attrs elements can be null (#14894) 4498 if ( attrs[ i ] ) { 4499 name = attrs[ i ].name; 4500 if ( name.indexOf( "data-" ) === 0 ) { 4501 name = camelCase( name.slice( 5 ) ); 4502 dataAttr( elem, name, data[ name ] ); 4503 } 4504 } 4505 } 4506 dataPriv.set( elem, "hasDataAttrs", true ); 4507 } 4508 } 4509 4510 return data; 4511 } 4512 4513 // Sets multiple values 4514 if ( typeof key === "object" ) { 4515 return this.each( function() { 4516 dataUser.set( this, key ); 4517 } ); 4518 } 4519 4520 return access( this, function( value ) { 4521 var data; 4522 4523 // The calling jQuery object (element matches) is not empty 4524 // (and therefore has an element appears at this[ 0 ]) and the 4525 // `value` parameter was not undefined. An empty jQuery object 4526 // will result in `undefined` for elem = this[ 0 ] which will 4527 // throw an exception if an attempt to read a data cache is made. 4528 if ( elem && value === undefined ) { 4529 4530 // Attempt to get data from the cache 4531 // The key will always be camelCased in Data 4532 data = dataUser.get( elem, key ); 4533 if ( data !== undefined ) { 4534 return data; 4535 } 4536 4537 // Attempt to "discover" the data in 4538 // HTML5 custom data-* attrs 4539 data = dataAttr( elem, key ); 4540 if ( data !== undefined ) { 4541 return data; 4542 } 4543 4544 // We tried really hard, but the data doesn't exist. 4545 return; 4546 } 4547 4548 // Set the data... 4549 this.each( function() { 4550 4551 // We always store the camelCased key 4552 dataUser.set( this, key, value ); 4553 } ); 4554 }, null, value, arguments.length > 1, null, true ); 4555 }, 4556 4557 removeData: function( key ) { 4558 return this.each( function() { 4559 dataUser.remove( this, key ); 4560 } ); 4561 } 4562} ); 4563 4564 4565jQuery.extend( { 4566 queue: function( elem, type, data ) { 4567 var queue; 4568 4569 if ( elem ) { 4570 type = ( type || "fx" ) + "queue"; 4571 queue = dataPriv.get( elem, type ); 4572 4573 // Speed up dequeue by getting out quickly if this is just a lookup 4574 if ( data ) { 4575 if ( !queue || Array.isArray( data ) ) { 4576 queue = dataPriv.access( elem, type, jQuery.makeArray( data ) ); 4577 } else { 4578 queue.push( data ); 4579 } 4580 } 4581 return queue || []; 4582 } 4583 }, 4584 4585 dequeue: function( elem, type ) { 4586 type = type || "fx"; 4587 4588 var queue = jQuery.queue( elem, type ), 4589 startLength = queue.length, 4590 fn = queue.shift(), 4591 hooks = jQuery._queueHooks( elem, type ), 4592 next = function() { 4593 jQuery.dequeue( elem, type ); 4594 }; 4595 4596 // If the fx queue is dequeued, always remove the progress sentinel 4597 if ( fn === "inprogress" ) { 4598 fn = queue.shift(); 4599 startLength--; 4600 } 4601 4602 if ( fn ) { 4603 4604 // Add a progress sentinel to prevent the fx queue from being 4605 // automatically dequeued 4606 if ( type === "fx" ) { 4607 queue.unshift( "inprogress" ); 4608 } 4609 4610 // Clear up the last queue stop function 4611 delete hooks.stop; 4612 fn.call( elem, next, hooks ); 4613 } 4614 4615 if ( !startLength && hooks ) { 4616 hooks.empty.fire(); 4617 } 4618 }, 4619 4620 // Not public - generate a queueHooks object, or return the current one 4621 _queueHooks: function( elem, type ) { 4622 var key = type + "queueHooks"; 4623 return dataPriv.get( elem, key ) || dataPriv.access( elem, key, { 4624 empty: jQuery.Callbacks( "once memory" ).add( function() { 4625 dataPriv.remove( elem, [ type + "queue", key ] ); 4626 } ) 4627 } ); 4628 } 4629} ); 4630 4631jQuery.fn.extend( { 4632 queue: function( type, data ) { 4633 var setter = 2; 4634 4635 if ( typeof type !== "string" ) { 4636 data = type; 4637 type = "fx"; 4638 setter--; 4639 } 4640 4641 if ( arguments.length < setter ) { 4642 return jQuery.queue( this[ 0 ], type ); 4643 } 4644 4645 return data === undefined ? 4646 this : 4647 this.each( function() { 4648 var queue = jQuery.queue( this, type, data ); 4649 4650 // Ensure a hooks for this queue 4651 jQuery._queueHooks( this, type ); 4652 4653 if ( type === "fx" && queue[ 0 ] !== "inprogress" ) { 4654 jQuery.dequeue( this, type ); 4655 } 4656 } ); 4657 }, 4658 dequeue: function( type ) { 4659 return this.each( function() { 4660 jQuery.dequeue( this, type ); 4661 } ); 4662 }, 4663 clearQueue: function( type ) { 4664 return this.queue( type || "fx", [] ); 4665 }, 4666 4667 // Get a promise resolved when queues of a certain type 4668 // are emptied (fx is the type by default) 4669 promise: function( type, obj ) { 4670 var tmp, 4671 count = 1, 4672 defer = jQuery.Deferred(), 4673 elements = this, 4674 i = this.length, 4675 resolve = function() { 4676 if ( !( --count ) ) { 4677 defer.resolveWith( elements, [ elements ] ); 4678 } 4679 }; 4680 4681 if ( typeof type !== "string" ) { 4682 obj = type; 4683 type = undefined; 4684 } 4685 type = type || "fx"; 4686 4687 while ( i-- ) { 4688 tmp = dataPriv.get( elements[ i ], type + "queueHooks" ); 4689 if ( tmp && tmp.empty ) { 4690 count++; 4691 tmp.empty.add( resolve ); 4692 } 4693 } 4694 resolve(); 4695 return defer.promise( obj ); 4696 } 4697} ); 4698var pnum = ( /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/ ).source; 4699 4700var rcssNum = new RegExp( "^(?:([+-])=|)(" + pnum + ")([a-z%]*)$", "i" ); 4701 4702 4703var cssExpand = [ "Top", "Right", "Bottom", "Left" ]; 4704 4705var documentElement = document.documentElement; 4706 4707 4708 4709 var isAttached = function( elem ) { 4710 return jQuery.contains( elem.ownerDocument, elem ); 4711 }, 4712 composed = { composed: true }; 4713 4714 // Support: IE 9 - 11+, Edge 12 - 18+, iOS 10.0 - 10.2 only 4715 // Check attachment across shadow DOM boundaries when possible (gh-3504) 4716 // Support: iOS 10.0-10.2 only 4717 // Early iOS 10 versions support `attachShadow` but not `getRootNode`, 4718 // leading to errors. We need to check for `getRootNode`. 4719 if ( documentElement.getRootNode ) { 4720 isAttached = function( elem ) { 4721 return jQuery.contains( elem.ownerDocument, elem ) || 4722 elem.getRootNode( composed ) === elem.ownerDocument; 4723 }; 4724 } 4725var isHiddenWithinTree = function( elem, el ) { 4726 4727 // isHiddenWithinTree might be called from jQuery#filter function; 4728 // in that case, element will be second argument 4729 elem = el || elem; 4730 4731 // Inline style trumps all 4732 return elem.style.display === "none" || 4733 elem.style.display === "" && 4734 4735 // Otherwise, check computed style 4736 // Support: Firefox <=43 - 45 4737 // Disconnected elements can have computed display: none, so first confirm that elem is 4738 // in the document. 4739 isAttached( elem ) && 4740 4741 jQuery.css( elem, "display" ) === "none"; 4742 }; 4743 4744 4745 4746function adjustCSS( elem, prop, valueParts, tween ) { 4747 var adjusted, scale, 4748 maxIterations = 20, 4749 currentValue = tween ? 4750 function() { 4751 return tween.cur(); 4752 } : 4753 function() { 4754 return jQuery.css( elem, prop, "" ); 4755 }, 4756 initial = currentValue(), 4757 unit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? "" : "px" ), 4758 4759 // Starting value computation is required for potential unit mismatches 4760 initialInUnit = elem.nodeType && 4761 ( jQuery.cssNumber[ prop ] || unit !== "px" && +initial ) && 4762 rcssNum.exec( jQuery.css( elem, prop ) ); 4763 4764 if ( initialInUnit && initialInUnit[ 3 ] !== unit ) { 4765 4766 // Support: Firefox <=54 4767 // Halve the iteration target value to prevent interference from CSS upper bounds (gh-2144) 4768 initial = initial / 2; 4769 4770 // Trust units reported by jQuery.css 4771 unit = unit || initialInUnit[ 3 ]; 4772 4773 // Iteratively approximate from a nonzero starting point 4774 initialInUnit = +initial || 1; 4775 4776 while ( maxIterations-- ) { 4777 4778 // Evaluate and update our best guess (doubling guesses that zero out). 4779 // Finish if the scale equals or crosses 1 (making the old*new product non-positive). 4780 jQuery.style( elem, prop, initialInUnit + unit ); 4781 if ( ( 1 - scale ) * ( 1 - ( scale = currentValue() / initial || 0.5 ) ) <= 0 ) { 4782 maxIterations = 0; 4783 } 4784 initialInUnit = initialInUnit / scale; 4785 4786 } 4787 4788 initialInUnit = initialInUnit * 2; 4789 jQuery.style( elem, prop, initialInUnit + unit ); 4790 4791 // Make sure we update the tween properties later on 4792 valueParts = valueParts || []; 4793 } 4794 4795 if ( valueParts ) { 4796 initialInUnit = +initialInUnit || +initial || 0; 4797 4798 // Apply relative offset (+=/-=) if specified 4799 adjusted = valueParts[ 1 ] ? 4800 initialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] : 4801 +valueParts[ 2 ]; 4802 if ( tween ) { 4803 tween.unit = unit; 4804 tween.start = initialInUnit; 4805 tween.end = adjusted; 4806 } 4807 } 4808 return adjusted; 4809} 4810 4811 4812var defaultDisplayMap = {}; 4813 4814function getDefaultDisplay( elem ) { 4815 var temp, 4816 doc = elem.ownerDocument, 4817 nodeName = elem.nodeName, 4818 display = defaultDisplayMap[ nodeName ]; 4819 4820 if ( display ) { 4821 return display; 4822 } 4823 4824 temp = doc.body.appendChild( doc.createElement( nodeName ) ); 4825 display = jQuery.css( temp, "display" ); 4826 4827 temp.parentNode.removeChild( temp ); 4828 4829 if ( display === "none" ) { 4830 display = "block"; 4831 } 4832 defaultDisplayMap[ nodeName ] = display; 4833 4834 return display; 4835} 4836 4837function showHide( elements, show ) { 4838 var display, elem, 4839 values = [], 4840 index = 0, 4841 length = elements.length; 4842 4843 // Determine new display value for elements that need to change 4844 for ( ; index < length; index++ ) { 4845 elem = elements[ index ]; 4846 if ( !elem.style ) { 4847 continue; 4848 } 4849 4850 display = elem.style.display; 4851 if ( show ) { 4852 4853 // Since we force visibility upon cascade-hidden elements, an immediate (and slow) 4854 // check is required in this first loop unless we have a nonempty display value (either 4855 // inline or about-to-be-restored) 4856 if ( display === "none" ) { 4857 values[ index ] = dataPriv.get( elem, "display" ) || null; 4858 if ( !values[ index ] ) { 4859 elem.style.display = ""; 4860 } 4861 } 4862 if ( elem.style.display === "" && isHiddenWithinTree( elem ) ) { 4863 values[ index ] = getDefaultDisplay( elem ); 4864 } 4865 } else { 4866 if ( display !== "none" ) { 4867 values[ index ] = "none"; 4868 4869 // Remember what we're overwriting 4870 dataPriv.set( elem, "display", display ); 4871 } 4872 } 4873 } 4874 4875 // Set the display of the elements in a second loop to avoid constant reflow 4876 for ( index = 0; index < length; index++ ) { 4877 if ( values[ index ] != null ) { 4878 elements[ index ].style.display = values[ index ]; 4879 } 4880 } 4881 4882 return elements; 4883} 4884 4885jQuery.fn.extend( { 4886 show: function() { 4887 return showHide( this, true ); 4888 }, 4889 hide: function() { 4890 return showHide( this ); 4891 }, 4892 toggle: function( state ) { 4893 if ( typeof state === "boolean" ) { 4894 return state ? this.show() : this.hide(); 4895 } 4896 4897 return this.each( function() { 4898 if ( isHiddenWithinTree( this ) ) { 4899 jQuery( this ).show(); 4900 } else { 4901 jQuery( this ).hide(); 4902 } 4903 } ); 4904 } 4905} ); 4906var rcheckableType = ( /^(?:checkbox|radio)$/i ); 4907 4908var rtagName = ( /<([a-z][^\/\0>\x20\t\r\n\f]*)/i ); 4909 4910var rscriptType = ( /^$|^module$|\/(?:java|ecma)script/i ); 4911 4912 4913 4914( function() { 4915 var fragment = document.createDocumentFragment(), 4916 div = fragment.appendChild( document.createElement( "div" ) ), 4917 input = document.createElement( "input" ); 4918 4919 // Support: Android 4.0 - 4.3 only 4920 // Check state lost if the name is set (#11217) 4921 // Support: Windows Web Apps (WWA) 4922 // `name` and `type` must use .setAttribute for WWA (#14901) 4923 input.setAttribute( "type", "radio" ); 4924 input.setAttribute( "checked", "checked" ); 4925 input.setAttribute( "name", "t" ); 4926 4927 div.appendChild( input ); 4928 4929 // Support: Android <=4.1 only 4930 // Older WebKit doesn't clone checked state correctly in fragments 4931 support.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked; 4932 4933 // Support: IE <=11 only 4934 // Make sure textarea (and checkbox) defaultValue is properly cloned 4935 div.innerHTML = "<textarea>x</textarea>"; 4936 support.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue; 4937 4938 // Support: IE <=9 only 4939 // IE <=9 replaces <option> tags with their contents when inserted outside of 4940 // the select element. 4941 div.innerHTML = "<option></option>"; 4942 support.option = !!div.lastChild; 4943} )(); 4944 4945 4946// We have to close these tags to support XHTML (#13200) 4947var wrapMap = { 4948 4949 // XHTML parsers do not magically insert elements in the 4950 // same way that tag soup parsers do. So we cannot shorten 4951 // this by omitting <tbody> or other required elements. 4952 thead: [ 1, "<table>", "</table>" ], 4953 col: [ 2, "<table><colgroup>", "</colgroup></table>" ], 4954 tr: [ 2, "<table><tbody>", "</tbody></table>" ], 4955 td: [ 3, "<table><tbody><tr>", "</tr></tbody></table>" ], 4956 4957 _default: [ 0, "", "" ] 4958}; 4959 4960wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead; 4961wrapMap.th = wrapMap.td; 4962 4963// Support: IE <=9 only 4964if ( !support.option ) { 4965 wrapMap.optgroup = wrapMap.option = [ 1, "<select multiple='multiple'>", "</select>" ]; 4966} 4967 4968 4969function getAll( context, tag ) { 4970 4971 // Support: IE <=9 - 11 only 4972 // Use typeof to avoid zero-argument method invocation on host objects (#15151) 4973 var ret; 4974 4975 if ( typeof context.getElementsByTagName !== "undefined" ) { 4976 ret = context.getElementsByTagName( tag || "*" ); 4977 4978 } else if ( typeof context.querySelectorAll !== "undefined" ) { 4979 ret = context.querySelectorAll( tag || "*" ); 4980 4981 } else { 4982 ret = []; 4983 } 4984 4985 if ( tag === undefined || tag && nodeName( context, tag ) ) { 4986 return jQuery.merge( [ context ], ret ); 4987 } 4988 4989 return ret; 4990} 4991 4992 4993// Mark scripts as having already been evaluated 4994function setGlobalEval( elems, refElements ) { 4995 var i = 0, 4996 l = elems.length; 4997 4998 for ( ; i < l; i++ ) { 4999 dataPriv.set( 5000 elems[ i ], 5001 "globalEval", 5002 !refElements || dataPriv.get( refElements[ i ], "globalEval" ) 5003 ); 5004 } 5005} 5006 5007 5008var rhtml = /<|&#?\w+;/; 5009 5010function buildFragment( elems, context, scripts, selection, ignored ) { 5011 var elem, tmp, tag, wrap, attached, j, 5012 fragment = context.createDocumentFragment(), 5013 nodes = [], 5014 i = 0, 5015 l = elems.length; 5016 5017 for ( ; i < l; i++ ) { 5018 elem = elems[ i ]; 5019 5020 if ( elem || elem === 0 ) { 5021 5022 // Add nodes directly 5023 if ( toType( elem ) === "object" ) { 5024 5025 // Support: Android <=4.0 only, PhantomJS 1 only 5026 // push.apply(_, arraylike) throws on ancient WebKit 5027 jQuery.merge( nodes, elem.nodeType ? [ elem ] : elem ); 5028 5029 // Convert non-html into a text node 5030 } else if ( !rhtml.test( elem ) ) { 5031 nodes.push( context.createTextNode( elem ) ); 5032 5033 // Convert html into DOM nodes 5034 } else { 5035 tmp = tmp || fragment.appendChild( context.createElement( "div" ) ); 5036 5037 // Deserialize a standard representation 5038 tag = ( rtagName.exec( elem ) || [ "", "" ] )[ 1 ].toLowerCase(); 5039 wrap = wrapMap[ tag ] || wrapMap._default; 5040 tmp.innerHTML = wrap[ 1 ] + jQuery.htmlPrefilter( elem ) + wrap[ 2 ]; 5041 5042 // Descend through wrappers to the right content 5043 j = wrap[ 0 ]; 5044 while ( j-- ) { 5045 tmp = tmp.lastChild; 5046 } 5047 5048 // Support: Android <=4.0 only, PhantomJS 1 only 5049 // push.apply(_, arraylike) throws on ancient WebKit 5050 jQuery.merge( nodes, tmp.childNodes ); 5051 5052 // Remember the top-level container 5053 tmp = fragment.firstChild; 5054 5055 // Ensure the created nodes are orphaned (#12392) 5056 tmp.textContent = ""; 5057 } 5058 } 5059 } 5060 5061 // Remove wrapper from fragment 5062 fragment.textContent = ""; 5063 5064 i = 0; 5065 while ( ( elem = nodes[ i++ ] ) ) { 5066 5067 // Skip elements already in the context collection (trac-4087) 5068 if ( selection && jQuery.inArray( elem, selection ) > -1 ) { 5069 if ( ignored ) { 5070 ignored.push( elem ); 5071 } 5072 continue; 5073 } 5074 5075 attached = isAttached( elem ); 5076 5077 // Append to fragment 5078 tmp = getAll( fragment.appendChild( elem ), "script" ); 5079 5080 // Preserve script evaluation history 5081 if ( attached ) { 5082 setGlobalEval( tmp ); 5083 } 5084 5085 // Capture executables 5086 if ( scripts ) { 5087 j = 0; 5088 while ( ( elem = tmp[ j++ ] ) ) { 5089 if ( rscriptType.test( elem.type || "" ) ) { 5090 scripts.push( elem ); 5091 } 5092 } 5093 } 5094 } 5095 5096 return fragment; 5097} 5098 5099 5100var rtypenamespace = /^([^.]*)(?:\.(.+)|)/; 5101 5102function returnTrue() { 5103 return true; 5104} 5105 5106function returnFalse() { 5107 return false; 5108} 5109 5110// Support: IE <=9 - 11+ 5111// focus() and blur() are asynchronous, except when they are no-op. 5112// So expect focus to be synchronous when the element is already active, 5113// and blur to be synchronous when the element is not already active. 5114// (focus and blur are always synchronous in other supported browsers, 5115// this just defines when we can count on it). 5116function expectSync( elem, type ) { 5117 return ( elem === safeActiveElement() ) === ( type === "focus" ); 5118} 5119 5120// Support: IE <=9 only 5121// Accessing document.activeElement can throw unexpectedly 5122// https://bugs.jquery.com/ticket/13393 5123function safeActiveElement() { 5124 try { 5125 return document.activeElement; 5126 } catch ( err ) { } 5127} 5128 5129function on( elem, types, selector, data, fn, one ) { 5130 var origFn, type; 5131 5132 // Types can be a map of types/handlers 5133 if ( typeof types === "object" ) { 5134 5135 // ( types-Object, selector, data ) 5136 if ( typeof selector !== "string" ) { 5137 5138 // ( types-Object, data ) 5139 data = data || selector; 5140 selector = undefined; 5141 } 5142 for ( type in types ) { 5143 on( elem, type, selector, data, types[ type ], one ); 5144 } 5145 return elem; 5146 } 5147 5148 if ( data == null && fn == null ) { 5149 5150 // ( types, fn ) 5151 fn = selector; 5152 data = selector = undefined; 5153 } else if ( fn == null ) { 5154 if ( typeof selector === "string" ) { 5155 5156 // ( types, selector, fn ) 5157 fn = data; 5158 data = undefined; 5159 } else { 5160 5161 // ( types, data, fn ) 5162 fn = data; 5163 data = selector; 5164 selector = undefined; 5165 } 5166 } 5167 if ( fn === false ) { 5168 fn = returnFalse; 5169 } else if ( !fn ) { 5170 return elem; 5171 } 5172 5173 if ( one === 1 ) { 5174 origFn = fn; 5175 fn = function( event ) { 5176 5177 // Can use an empty set, since event contains the info 5178 jQuery().off( event ); 5179 return origFn.apply( this, arguments ); 5180 }; 5181 5182 // Use same guid so caller can remove using origFn 5183 fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ ); 5184 } 5185 return elem.each( function() { 5186 jQuery.event.add( this, types, fn, data, selector ); 5187 } ); 5188} 5189 5190/* 5191 * Helper functions for managing events -- not part of the public interface. 5192 * Props to Dean Edwards' addEvent library for many of the ideas. 5193 */ 5194jQuery.event = { 5195 5196 global: {}, 5197 5198 add: function( elem, types, handler, data, selector ) { 5199 5200 var handleObjIn, eventHandle, tmp, 5201 events, t, handleObj, 5202 special, handlers, type, namespaces, origType, 5203 elemData = dataPriv.get( elem ); 5204 5205 // Only attach events to objects that accept data 5206 if ( !acceptData( elem ) ) { 5207 return; 5208 } 5209 5210 // Caller can pass in an object of custom data in lieu of the handler 5211 if ( handler.handler ) { 5212 handleObjIn = handler; 5213 handler = handleObjIn.handler; 5214 selector = handleObjIn.selector; 5215 } 5216 5217 // Ensure that invalid selectors throw exceptions at attach time 5218 // Evaluate against documentElement in case elem is a non-element node (e.g., document) 5219 if ( selector ) { 5220 jQuery.find.matchesSelector( documentElement, selector ); 5221 } 5222 5223 // Make sure that the handler has a unique ID, used to find/remove it later 5224 if ( !handler.guid ) { 5225 handler.guid = jQuery.guid++; 5226 } 5227 5228 // Init the element's event structure and main handler, if this is the first 5229 if ( !( events = elemData.events ) ) { 5230 events = elemData.events = Object.create( null ); 5231 } 5232 if ( !( eventHandle = elemData.handle ) ) { 5233 eventHandle = elemData.handle = function( e ) { 5234 5235 // Discard the second event of a jQuery.event.trigger() and 5236 // when an event is called after a page has unloaded 5237 return typeof jQuery !== "undefined" && jQuery.event.triggered !== e.type ? 5238 jQuery.event.dispatch.apply( elem, arguments ) : undefined; 5239 }; 5240 } 5241 5242 // Handle multiple events separated by a space 5243 types = ( types || "" ).match( rnothtmlwhite ) || [ "" ]; 5244 t = types.length; 5245 while ( t-- ) { 5246 tmp = rtypenamespace.exec( types[ t ] ) || []; 5247 type = origType = tmp[ 1 ]; 5248 namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort(); 5249 5250 // There *must* be a type, no attaching namespace-only handlers 5251 if ( !type ) { 5252 continue; 5253 } 5254 5255 // If event changes its type, use the special event handlers for the changed type 5256 special = jQuery.event.special[ type ] || {}; 5257 5258 // If selector defined, determine special event api type, otherwise given type 5259 type = ( selector ? special.delegateType : special.bindType ) || type; 5260 5261 // Update special based on newly reset type 5262 special = jQuery.event.special[ type ] || {}; 5263 5264 // handleObj is passed to all event handlers 5265 handleObj = jQuery.extend( { 5266 type: type, 5267 origType: origType, 5268 data: data, 5269 handler: handler, 5270 guid: handler.guid, 5271 selector: selector, 5272 needsContext: selector && jQuery.expr.match.needsContext.test( selector ), 5273 namespace: namespaces.join( "." ) 5274 }, handleObjIn ); 5275 5276 // Init the event handler queue if we're the first 5277 if ( !( handlers = events[ type ] ) ) { 5278 handlers = events[ type ] = []; 5279 handlers.delegateCount = 0; 5280 5281 // Only use addEventListener if the special events handler returns false 5282 if ( !special.setup || 5283 special.setup.call( elem, data, namespaces, eventHandle ) === false ) { 5284 5285 if ( elem.addEventListener ) { 5286 elem.addEventListener( type, eventHandle ); 5287 } 5288 } 5289 } 5290 5291 if ( special.add ) { 5292 special.add.call( elem, handleObj ); 5293 5294 if ( !handleObj.handler.guid ) { 5295 handleObj.handler.guid = handler.guid; 5296 } 5297 } 5298 5299 // Add to the element's handler list, delegates in front 5300 if ( selector ) { 5301 handlers.splice( handlers.delegateCount++, 0, handleObj ); 5302 } else { 5303 handlers.push( handleObj ); 5304 } 5305 5306 // Keep track of which events have ever been used, for event optimization 5307 jQuery.event.global[ type ] = true; 5308 } 5309 5310 }, 5311 5312 // Detach an event or set of events from an element 5313 remove: function( elem, types, handler, selector, mappedTypes ) { 5314 5315 var j, origCount, tmp, 5316 events, t, handleObj, 5317 special, handlers, type, namespaces, origType, 5318 elemData = dataPriv.hasData( elem ) && dataPriv.get( elem ); 5319 5320 if ( !elemData || !( events = elemData.events ) ) { 5321 return; 5322 } 5323 5324 // Once for each type.namespace in types; type may be omitted 5325 types = ( types || "" ).match( rnothtmlwhite ) || [ "" ]; 5326 t = types.length; 5327 while ( t-- ) { 5328 tmp = rtypenamespace.exec( types[ t ] ) || []; 5329 type = origType = tmp[ 1 ]; 5330 namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort(); 5331 5332 // Unbind all events (on this namespace, if provided) for the element 5333 if ( !type ) { 5334 for ( type in events ) { 5335 jQuery.event.remove( elem, type + types[ t ], handler, selector, true ); 5336 } 5337 continue; 5338 } 5339 5340 special = jQuery.event.special[ type ] || {}; 5341 type = ( selector ? special.delegateType : special.bindType ) || type; 5342 handlers = events[ type ] || []; 5343 tmp = tmp[ 2 ] && 5344 new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" ); 5345 5346 // Remove matching events 5347 origCount = j = handlers.length; 5348 while ( j-- ) { 5349 handleObj = handlers[ j ]; 5350 5351 if ( ( mappedTypes || origType === handleObj.origType ) && 5352 ( !handler || handler.guid === handleObj.guid ) && 5353 ( !tmp || tmp.test( handleObj.namespace ) ) && 5354 ( !selector || selector === handleObj.selector || 5355 selector === "**" && handleObj.selector ) ) { 5356 handlers.splice( j, 1 ); 5357 5358 if ( handleObj.selector ) { 5359 handlers.delegateCount--; 5360 } 5361 if ( special.remove ) { 5362 special.remove.call( elem, handleObj ); 5363 } 5364 } 5365 } 5366 5367 // Remove generic event handler if we removed something and no more handlers exist 5368 // (avoids potential for endless recursion during removal of special event handlers) 5369 if ( origCount && !handlers.length ) { 5370 if ( !special.teardown || 5371 special.teardown.call( elem, namespaces, elemData.handle ) === false ) { 5372 5373 jQuery.removeEvent( elem, type, elemData.handle ); 5374 } 5375 5376 delete events[ type ]; 5377 } 5378 } 5379 5380 // Remove data and the expando if it's no longer used 5381 if ( jQuery.isEmptyObject( events ) ) { 5382 dataPriv.remove( elem, "handle events" ); 5383 } 5384 }, 5385 5386 dispatch: function( nativeEvent ) { 5387 5388 var i, j, ret, matched, handleObj, handlerQueue, 5389 args = new Array( arguments.length ), 5390 5391 // Make a writable jQuery.Event from the native event object 5392 event = jQuery.event.fix( nativeEvent ), 5393 5394 handlers = ( 5395 dataPriv.get( this, "events" ) || Object.create( null ) 5396 )[ event.type ] || [], 5397 special = jQuery.event.special[ event.type ] || {}; 5398 5399 // Use the fix-ed jQuery.Event rather than the (read-only) native event 5400 args[ 0 ] = event; 5401 5402 for ( i = 1; i < arguments.length; i++ ) { 5403 args[ i ] = arguments[ i ]; 5404 } 5405 5406 event.delegateTarget = this; 5407 5408 // Call the preDispatch hook for the mapped type, and let it bail if desired 5409 if ( special.preDispatch && special.preDispatch.call( this, event ) === false ) { 5410 return; 5411 } 5412 5413 // Determine handlers 5414 handlerQueue = jQuery.event.handlers.call( this, event, handlers ); 5415 5416 // Run delegates first; they may want to stop propagation beneath us 5417 i = 0; 5418 while ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) { 5419 event.currentTarget = matched.elem; 5420 5421 j = 0; 5422 while ( ( handleObj = matched.handlers[ j++ ] ) && 5423 !event.isImmediatePropagationStopped() ) { 5424 5425 // If the event is namespaced, then each handler is only invoked if it is 5426 // specially universal or its namespaces are a superset of the event's. 5427 if ( !event.rnamespace || handleObj.namespace === false || 5428 event.rnamespace.test( handleObj.namespace ) ) { 5429 5430 event.handleObj = handleObj; 5431 event.data = handleObj.data; 5432 5433 ret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle || 5434 handleObj.handler ).apply( matched.elem, args ); 5435 5436 if ( ret !== undefined ) { 5437 if ( ( event.result = ret ) === false ) { 5438 event.preventDefault(); 5439 event.stopPropagation(); 5440 } 5441 } 5442 } 5443 } 5444 } 5445 5446 // Call the postDispatch hook for the mapped type 5447 if ( special.postDispatch ) { 5448 special.postDispatch.call( this, event ); 5449 } 5450 5451 return event.result; 5452 }, 5453 5454 handlers: function( event, handlers ) { 5455 var i, handleObj, sel, matchedHandlers, matchedSelectors, 5456 handlerQueue = [], 5457 delegateCount = handlers.delegateCount, 5458 cur = event.target; 5459 5460 // Find delegate handlers 5461 if ( delegateCount && 5462 5463 // Support: IE <=9 5464 // Black-hole SVG <use> instance trees (trac-13180) 5465 cur.nodeType && 5466 5467 // Support: Firefox <=42 5468 // Suppress spec-violating clicks indicating a non-primary pointer button (trac-3861) 5469 // https://www.w3.org/TR/DOM-Level-3-Events/#event-type-click 5470 // Support: IE 11 only 5471 // ...but not arrow key "clicks" of radio inputs, which can have `button` -1 (gh-2343) 5472 !( event.type === "click" && event.button >= 1 ) ) { 5473 5474 for ( ; cur !== this; cur = cur.parentNode || this ) { 5475 5476 // Don't check non-elements (#13208) 5477 // Don't process clicks on disabled elements (#6911, #8165, #11382, #11764) 5478 if ( cur.nodeType === 1 && !( event.type === "click" && cur.disabled === true ) ) { 5479 matchedHandlers = []; 5480 matchedSelectors = {}; 5481 for ( i = 0; i < delegateCount; i++ ) { 5482 handleObj = handlers[ i ]; 5483 5484 // Don't conflict with Object.prototype properties (#13203) 5485 sel = handleObj.selector + " "; 5486 5487 if ( matchedSelectors[ sel ] === undefined ) { 5488 matchedSelectors[ sel ] = handleObj.needsContext ? 5489 jQuery( sel, this ).index( cur ) > -1 : 5490 jQuery.find( sel, this, null, [ cur ] ).length; 5491 } 5492 if ( matchedSelectors[ sel ] ) { 5493 matchedHandlers.push( handleObj ); 5494 } 5495 } 5496 if ( matchedHandlers.length ) { 5497 handlerQueue.push( { elem: cur, handlers: matchedHandlers } ); 5498 } 5499 } 5500 } 5501 } 5502 5503 // Add the remaining (directly-bound) handlers 5504 cur = this; 5505 if ( delegateCount < handlers.length ) { 5506 handlerQueue.push( { elem: cur, handlers: handlers.slice( delegateCount ) } ); 5507 } 5508 5509 return handlerQueue; 5510 }, 5511 5512 addProp: function( name, hook ) { 5513 Object.defineProperty( jQuery.Event.prototype, name, { 5514 enumerable: true, 5515 configurable: true, 5516 5517 get: isFunction( hook ) ? 5518 function() { 5519 if ( this.originalEvent ) { 5520 return hook( this.originalEvent ); 5521 } 5522 } : 5523 function() { 5524 if ( this.originalEvent ) { 5525 return this.originalEvent[ name ]; 5526 } 5527 }, 5528 5529 set: function( value ) { 5530 Object.defineProperty( this, name, { 5531 enumerable: true, 5532 configurable: true, 5533 writable: true, 5534 value: value 5535 } ); 5536 } 5537 } ); 5538 }, 5539 5540 fix: function( originalEvent ) { 5541 return originalEvent[ jQuery.expando ] ? 5542 originalEvent : 5543 new jQuery.Event( originalEvent ); 5544 }, 5545 5546 special: { 5547 load: { 5548 5549 // Prevent triggered image.load events from bubbling to window.load 5550 noBubble: true 5551 }, 5552 click: { 5553 5554 // Utilize native event to ensure correct state for checkable inputs 5555 setup: function( data ) { 5556 5557 // For mutual compressibility with _default, replace `this` access with a local var. 5558 // `|| data` is dead code meant only to preserve the variable through minification. 5559 var el = this || data; 5560 5561 // Claim the first handler 5562 if ( rcheckableType.test( el.type ) && 5563 el.click && nodeName( el, "input" ) ) { 5564 5565 // dataPriv.set( el, "click", ... ) 5566 leverageNative( el, "click", returnTrue ); 5567 } 5568 5569 // Return false to allow normal processing in the caller 5570 return false; 5571 }, 5572 trigger: function( data ) { 5573 5574 // For mutual compressibility with _default, replace `this` access with a local var. 5575 // `|| data` is dead code meant only to preserve the variable through minification. 5576 var el = this || data; 5577 5578 // Force setup before triggering a click 5579 if ( rcheckableType.test( el.type ) && 5580 el.click && nodeName( el, "input" ) ) { 5581 5582 leverageNative( el, "click" ); 5583 } 5584 5585 // Return non-false to allow normal event-path propagation 5586 return true; 5587 }, 5588 5589 // For cross-browser consistency, suppress native .click() on links 5590 // Also prevent it if we're currently inside a leveraged native-event stack 5591 _default: function( event ) { 5592 var target = event.target; 5593 return rcheckableType.test( target.type ) && 5594 target.click && nodeName( target, "input" ) && 5595 dataPriv.get( target, "click" ) || 5596 nodeName( target, "a" ); 5597 } 5598 }, 5599 5600 beforeunload: { 5601 postDispatch: function( event ) { 5602 5603 // Support: Firefox 20+ 5604 // Firefox doesn't alert if the returnValue field is not set. 5605 if ( event.result !== undefined && event.originalEvent ) { 5606 event.originalEvent.returnValue = event.result; 5607 } 5608 } 5609 } 5610 } 5611}; 5612 5613// Ensure the presence of an event listener that handles manually-triggered 5614// synthetic events by interrupting progress until reinvoked in response to 5615// *native* events that it fires directly, ensuring that state changes have 5616// already occurred before other listeners are invoked. 5617function leverageNative( el, type, expectSync ) { 5618 5619 // Missing expectSync indicates a trigger call, which must force setup through jQuery.event.add 5620 if ( !expectSync ) { 5621 if ( dataPriv.get( el, type ) === undefined ) { 5622 jQuery.event.add( el, type, returnTrue ); 5623 } 5624 return; 5625 } 5626 5627 // Register the controller as a special universal handler for all event namespaces 5628 dataPriv.set( el, type, false ); 5629 jQuery.event.add( el, type, { 5630 namespace: false, 5631 handler: function( event ) { 5632 var notAsync, result, 5633 saved = dataPriv.get( this, type ); 5634 5635 if ( ( event.isTrigger & 1 ) && this[ type ] ) { 5636 5637 // Interrupt processing of the outer synthetic .trigger()ed event 5638 // Saved data should be false in such cases, but might be a leftover capture object 5639 // from an async native handler (gh-4350) 5640 if ( !saved.length ) { 5641 5642 // Store arguments for use when handling the inner native event 5643 // There will always be at least one argument (an event object), so this array 5644 // will not be confused with a leftover capture object. 5645 saved = slice.call( arguments ); 5646 dataPriv.set( this, type, saved ); 5647 5648 // Trigger the native event and capture its result 5649 // Support: IE <=9 - 11+ 5650 // focus() and blur() are asynchronous 5651 notAsync = expectSync( this, type ); 5652 this[ type ](); 5653 result = dataPriv.get( this, type ); 5654 if ( saved !== result || notAsync ) { 5655 dataPriv.set( this, type, false ); 5656 } else { 5657 result = {}; 5658 } 5659 if ( saved !== result ) { 5660 5661 // Cancel the outer synthetic event 5662 event.stopImmediatePropagation(); 5663 event.preventDefault(); 5664 5665 // Support: Chrome 86+ 5666 // In Chrome, if an element having a focusout handler is blurred by 5667 // clicking outside of it, it invokes the handler synchronously. If 5668 // that handler calls `.remove()` on the element, the data is cleared, 5669 // leaving `result` undefined. We need to guard against this. 5670 return result && result.value; 5671 } 5672 5673 // If this is an inner synthetic event for an event with a bubbling surrogate 5674 // (focus or blur), assume that the surrogate already propagated from triggering the 5675 // native event and prevent that from happening again here. 5676 // This technically gets the ordering wrong w.r.t. to `.trigger()` (in which the 5677 // bubbling surrogate propagates *after* the non-bubbling base), but that seems 5678 // less bad than duplication. 5679 } else if ( ( jQuery.event.special[ type ] || {} ).delegateType ) { 5680 event.stopPropagation(); 5681 } 5682 5683 // If this is a native event triggered above, everything is now in order 5684 // Fire an inner synthetic event with the original arguments 5685 } else if ( saved.length ) { 5686 5687 // ...and capture the result 5688 dataPriv.set( this, type, { 5689 value: jQuery.event.trigger( 5690 5691 // Support: IE <=9 - 11+ 5692 // Extend with the prototype to reset the above stopImmediatePropagation() 5693 jQuery.extend( saved[ 0 ], jQuery.Event.prototype ), 5694 saved.slice( 1 ), 5695 this 5696 ) 5697 } ); 5698 5699 // Abort handling of the native event 5700 event.stopImmediatePropagation(); 5701 } 5702 } 5703 } ); 5704} 5705 5706jQuery.removeEvent = function( elem, type, handle ) { 5707 5708 // This "if" is needed for plain objects 5709 if ( elem.removeEventListener ) { 5710 elem.removeEventListener( type, handle ); 5711 } 5712}; 5713 5714jQuery.Event = function( src, props ) { 5715 5716 // Allow instantiation without the 'new' keyword 5717 if ( !( this instanceof jQuery.Event ) ) { 5718 return new jQuery.Event( src, props ); 5719 } 5720 5721 // Event object 5722 if ( src && src.type ) { 5723 this.originalEvent = src; 5724 this.type = src.type; 5725 5726 // Events bubbling up the document may have been marked as prevented 5727 // by a handler lower down the tree; reflect the correct value. 5728 this.isDefaultPrevented = src.defaultPrevented || 5729 src.defaultPrevented === undefined && 5730 5731 // Support: Android <=2.3 only 5732 src.returnValue === false ? 5733 returnTrue : 5734 returnFalse; 5735 5736 // Create target properties 5737 // Support: Safari <=6 - 7 only 5738 // Target should not be a text node (#504, #13143) 5739 this.target = ( src.target && src.target.nodeType === 3 ) ? 5740 src.target.parentNode : 5741 src.target; 5742 5743 this.currentTarget = src.currentTarget; 5744 this.relatedTarget = src.relatedTarget; 5745 5746 // Event type 5747 } else { 5748 this.type = src; 5749 } 5750 5751 // Put explicitly provided properties onto the event object 5752 if ( props ) { 5753 jQuery.extend( this, props ); 5754 } 5755 5756 // Create a timestamp if incoming event doesn't have one 5757 this.timeStamp = src && src.timeStamp || Date.now(); 5758 5759 // Mark it as fixed 5760 this[ jQuery.expando ] = true; 5761}; 5762 5763// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding 5764// https://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html 5765jQuery.Event.prototype = { 5766 constructor: jQuery.Event, 5767 isDefaultPrevented: returnFalse, 5768 isPropagationStopped: returnFalse, 5769 isImmediatePropagationStopped: returnFalse, 5770 isSimulated: false, 5771 5772 preventDefault: function() { 5773 var e = this.originalEvent; 5774 5775 this.isDefaultPrevented = returnTrue; 5776 5777 if ( e && !this.isSimulated ) { 5778 e.preventDefault(); 5779 } 5780 }, 5781 stopPropagation: function() { 5782 var e = this.originalEvent; 5783 5784 this.isPropagationStopped = returnTrue; 5785 5786 if ( e && !this.isSimulated ) { 5787 e.stopPropagation(); 5788 } 5789 }, 5790 stopImmediatePropagation: function() { 5791 var e = this.originalEvent; 5792 5793 this.isImmediatePropagationStopped = returnTrue; 5794 5795 if ( e && !this.isSimulated ) { 5796 e.stopImmediatePropagation(); 5797 } 5798 5799 this.stopPropagation(); 5800 } 5801}; 5802 5803// Includes all common event props including KeyEvent and MouseEvent specific props 5804jQuery.each( { 5805 altKey: true, 5806 bubbles: true, 5807 cancelable: true, 5808 changedTouches: true, 5809 ctrlKey: true, 5810 detail: true, 5811 eventPhase: true, 5812 metaKey: true, 5813 pageX: true, 5814 pageY: true, 5815 shiftKey: true, 5816 view: true, 5817 "char": true, 5818 code: true, 5819 charCode: true, 5820 key: true, 5821 keyCode: true, 5822 button: true, 5823 buttons: true, 5824 clientX: true, 5825 clientY: true, 5826 offsetX: true, 5827 offsetY: true, 5828 pointerId: true, 5829 pointerType: true, 5830 screenX: true, 5831 screenY: true, 5832 targetTouches: true, 5833 toElement: true, 5834 touches: true, 5835 which: true 5836}, jQuery.event.addProp ); 5837 5838jQuery.each( { focus: "focusin", blur: "focusout" }, function( type, delegateType ) { 5839 jQuery.event.special[ type ] = { 5840 5841 // Utilize native event if possible so blur/focus sequence is correct 5842 setup: function() { 5843 5844 // Claim the first handler 5845 // dataPriv.set( this, "focus", ... ) 5846 // dataPriv.set( this, "blur", ... ) 5847 leverageNative( this, type, expectSync ); 5848 5849 // Return false to allow normal processing in the caller 5850 return false; 5851 }, 5852 trigger: function() { 5853 5854 // Force setup before trigger 5855 leverageNative( this, type ); 5856 5857 // Return non-false to allow normal event-path propagation 5858 return true; 5859 }, 5860 5861 // Suppress native focus or blur as it's already being fired 5862 // in leverageNative. 5863 _default: function() { 5864 return true; 5865 }, 5866 5867 delegateType: delegateType 5868 }; 5869} ); 5870 5871// Create mouseenter/leave events using mouseover/out and event-time checks 5872// so that event delegation works in jQuery. 5873// Do the same for pointerenter/pointerleave and pointerover/pointerout 5874// 5875// Support: Safari 7 only 5876// Safari sends mouseenter too often; see: 5877// https://bugs.chromium.org/p/chromium/issues/detail?id=470258 5878// for the description of the bug (it existed in older Chrome versions as well). 5879jQuery.each( { 5880 mouseenter: "mouseover", 5881 mouseleave: "mouseout", 5882 pointerenter: "pointerover", 5883 pointerleave: "pointerout" 5884}, function( orig, fix ) { 5885 jQuery.event.special[ orig ] = { 5886 delegateType: fix, 5887 bindType: fix, 5888 5889 handle: function( event ) { 5890 var ret, 5891 target = this, 5892 related = event.relatedTarget, 5893 handleObj = event.handleObj; 5894 5895 // For mouseenter/leave call the handler if related is outside the target. 5896 // NB: No relatedTarget if the mouse left/entered the browser window 5897 if ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) { 5898 event.type = handleObj.origType; 5899 ret = handleObj.handler.apply( this, arguments ); 5900 event.type = fix; 5901 } 5902 return ret; 5903 } 5904 }; 5905} ); 5906 5907jQuery.fn.extend( { 5908 5909 on: function( types, selector, data, fn ) { 5910 return on( this, types, selector, data, fn ); 5911 }, 5912 one: function( types, selector, data, fn ) { 5913 return on( this, types, selector, data, fn, 1 ); 5914 }, 5915 off: function( types, selector, fn ) { 5916 var handleObj, type; 5917 if ( types && types.preventDefault && types.handleObj ) { 5918 5919 // ( event ) dispatched jQuery.Event 5920 handleObj = types.handleObj; 5921 jQuery( types.delegateTarget ).off( 5922 handleObj.namespace ? 5923 handleObj.origType + "." + handleObj.namespace : 5924 handleObj.origType, 5925 handleObj.selector, 5926 handleObj.handler 5927 ); 5928 return this; 5929 } 5930 if ( typeof types === "object" ) { 5931 5932 // ( types-object [, selector] ) 5933 for ( type in types ) { 5934 this.off( type, selector, types[ type ] ); 5935 } 5936 return this; 5937 } 5938 if ( selector === false || typeof selector === "function" ) { 5939 5940 // ( types [, fn] ) 5941 fn = selector; 5942 selector = undefined; 5943 } 5944 if ( fn === false ) { 5945 fn = returnFalse; 5946 } 5947 return this.each( function() { 5948 jQuery.event.remove( this, types, fn, selector ); 5949 } ); 5950 } 5951} ); 5952 5953 5954var 5955 5956 // Support: IE <=10 - 11, Edge 12 - 13 only 5957 // In IE/Edge using regex groups here causes severe slowdowns. 5958 // See https://connect.microsoft.com/IE/feedback/details/1736512/ 5959 rnoInnerhtml = /<script|<style|<link/i, 5960 5961 // checked="checked" or checked 5962 rchecked = /checked\s*(?:[^=]|=\s*.checked.)/i, 5963 rcleanScript = /^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g; 5964 5965// Prefer a tbody over its parent table for containing new rows 5966function manipulationTarget( elem, content ) { 5967 if ( nodeName( elem, "table" ) && 5968 nodeName( content.nodeType !== 11 ? content : content.firstChild, "tr" ) ) { 5969 5970 return jQuery( elem ).children( "tbody" )[ 0 ] || elem; 5971 } 5972 5973 return elem; 5974} 5975 5976// Replace/restore the type attribute of script elements for safe DOM manipulation 5977function disableScript( elem ) { 5978 elem.type = ( elem.getAttribute( "type" ) !== null ) + "/" + elem.type; 5979 return elem; 5980} 5981function restoreScript( elem ) { 5982 if ( ( elem.type || "" ).slice( 0, 5 ) === "true/" ) { 5983 elem.type = elem.type.slice( 5 ); 5984 } else { 5985 elem.removeAttribute( "type" ); 5986 } 5987 5988 return elem; 5989} 5990 5991function cloneCopyEvent( src, dest ) { 5992 var i, l, type, pdataOld, udataOld, udataCur, events; 5993 5994 if ( dest.nodeType !== 1 ) { 5995 return; 5996 } 5997 5998 // 1. Copy private data: events, handlers, etc. 5999 if ( dataPriv.hasData( src ) ) { 6000 pdataOld = dataPriv.get( src ); 6001 events = pdataOld.events; 6002 6003 if ( events ) { 6004 dataPriv.remove( dest, "handle events" ); 6005 6006 for ( type in events ) { 6007 for ( i = 0, l = events[ type ].length; i < l; i++ ) { 6008 jQuery.event.add( dest, type, events[ type ][ i ] ); 6009 } 6010 } 6011 } 6012 } 6013 6014 // 2. Copy user data 6015 if ( dataUser.hasData( src ) ) { 6016 udataOld = dataUser.access( src ); 6017 udataCur = jQuery.extend( {}, udataOld ); 6018 6019 dataUser.set( dest, udataCur ); 6020 } 6021} 6022 6023// Fix IE bugs, see support tests 6024function fixInput( src, dest ) { 6025 var nodeName = dest.nodeName.toLowerCase(); 6026 6027 // Fails to persist the checked state of a cloned checkbox or radio button. 6028 if ( nodeName === "input" && rcheckableType.test( src.type ) ) { 6029 dest.checked = src.checked; 6030 6031 // Fails to return the selected option to the default selected state when cloning options 6032 } else if ( nodeName === "input" || nodeName === "textarea" ) { 6033 dest.defaultValue = src.defaultValue; 6034 } 6035} 6036 6037function domManip( collection, args, callback, ignored ) { 6038 6039 // Flatten any nested arrays 6040 args = flat( args ); 6041 6042 var fragment, first, scripts, hasScripts, node, doc, 6043 i = 0, 6044 l = collection.length, 6045 iNoClone = l - 1, 6046 value = args[ 0 ], 6047 valueIsFunction = isFunction( value ); 6048 6049 // We can't cloneNode fragments that contain checked, in WebKit 6050 if ( valueIsFunction || 6051 ( l > 1 && typeof value === "string" && 6052 !support.checkClone && rchecked.test( value ) ) ) { 6053 return collection.each( function( index ) { 6054 var self = collection.eq( index ); 6055 if ( valueIsFunction ) { 6056 args[ 0 ] = value.call( this, index, self.html() ); 6057 } 6058 domManip( self, args, callback, ignored ); 6059 } ); 6060 } 6061 6062 if ( l ) { 6063 fragment = buildFragment( args, collection[ 0 ].ownerDocument, false, collection, ignored ); 6064 first = fragment.firstChild; 6065 6066 if ( fragment.childNodes.length === 1 ) { 6067 fragment = first; 6068 } 6069 6070 // Require either new content or an interest in ignored elements to invoke the callback 6071 if ( first || ignored ) { 6072 scripts = jQuery.map( getAll( fragment, "script" ), disableScript ); 6073 hasScripts = scripts.length; 6074 6075 // Use the original fragment for the last item 6076 // instead of the first because it can end up 6077 // being emptied incorrectly in certain situations (#8070). 6078 for ( ; i < l; i++ ) { 6079 node = fragment; 6080 6081 if ( i !== iNoClone ) { 6082 node = jQuery.clone( node, true, true ); 6083 6084 // Keep references to cloned scripts for later restoration 6085 if ( hasScripts ) { 6086 6087 // Support: Android <=4.0 only, PhantomJS 1 only 6088 // push.apply(_, arraylike) throws on ancient WebKit 6089 jQuery.merge( scripts, getAll( node, "script" ) ); 6090 } 6091 } 6092 6093 callback.call( collection[ i ], node, i ); 6094 } 6095 6096 if ( hasScripts ) { 6097 doc = scripts[ scripts.length - 1 ].ownerDocument; 6098 6099 // Reenable scripts 6100 jQuery.map( scripts, restoreScript ); 6101 6102 // Evaluate executable scripts on first document insertion 6103 for ( i = 0; i < hasScripts; i++ ) { 6104 node = scripts[ i ]; 6105 if ( rscriptType.test( node.type || "" ) && 6106 !dataPriv.access( node, "globalEval" ) && 6107 jQuery.contains( doc, node ) ) { 6108 6109 if ( node.src && ( node.type || "" ).toLowerCase() !== "module" ) { 6110 6111 // Optional AJAX dependency, but won't run scripts if not present 6112 if ( jQuery._evalUrl && !node.noModule ) { 6113 jQuery._evalUrl( node.src, { 6114 nonce: node.nonce || node.getAttribute( "nonce" ) 6115 }, doc ); 6116 } 6117 } else { 6118 DOMEval( node.textContent.replace( rcleanScript, "" ), node, doc ); 6119 } 6120 } 6121 } 6122 } 6123 } 6124 } 6125 6126 return collection; 6127} 6128 6129function remove( elem, selector, keepData ) { 6130 var node, 6131 nodes = selector ? jQuery.filter( selector, elem ) : elem, 6132 i = 0; 6133 6134 for ( ; ( node = nodes[ i ] ) != null; i++ ) { 6135 if ( !keepData && node.nodeType === 1 ) { 6136 jQuery.cleanData( getAll( node ) ); 6137 } 6138 6139 if ( node.parentNode ) { 6140 if ( keepData && isAttached( node ) ) { 6141 setGlobalEval( getAll( node, "script" ) ); 6142 } 6143 node.parentNode.removeChild( node ); 6144 } 6145 } 6146 6147 return elem; 6148} 6149 6150jQuery.extend( { 6151 htmlPrefilter: function( html ) { 6152 return html; 6153 }, 6154 6155 clone: function( elem, dataAndEvents, deepDataAndEvents ) { 6156 var i, l, srcElements, destElements, 6157 clone = elem.cloneNode( true ), 6158 inPage = isAttached( elem ); 6159 6160 // Fix IE cloning issues 6161 if ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) && 6162 !jQuery.isXMLDoc( elem ) ) { 6163 6164 // We eschew Sizzle here for performance reasons: https://jsperf.com/getall-vs-sizzle/2 6165 destElements = getAll( clone ); 6166 srcElements = getAll( elem ); 6167 6168 for ( i = 0, l = srcElements.length; i < l; i++ ) { 6169 fixInput( srcElements[ i ], destElements[ i ] ); 6170 } 6171 } 6172 6173 // Copy the events from the original to the clone 6174 if ( dataAndEvents ) { 6175 if ( deepDataAndEvents ) { 6176 srcElements = srcElements || getAll( elem ); 6177 destElements = destElements || getAll( clone ); 6178 6179 for ( i = 0, l = srcElements.length; i < l; i++ ) { 6180 cloneCopyEvent( srcElements[ i ], destElements[ i ] ); 6181 } 6182 } else { 6183 cloneCopyEvent( elem, clone ); 6184 } 6185 } 6186 6187 // Preserve script evaluation history 6188 destElements = getAll( clone, "script" ); 6189 if ( destElements.length > 0 ) { 6190 setGlobalEval( destElements, !inPage && getAll( elem, "script" ) ); 6191 } 6192 6193 // Return the cloned set 6194 return clone; 6195 }, 6196 6197 cleanData: function( elems ) { 6198 var data, elem, type, 6199 special = jQuery.event.special, 6200 i = 0; 6201 6202 for ( ; ( elem = elems[ i ] ) !== undefined; i++ ) { 6203 if ( acceptData( elem ) ) { 6204 if ( ( data = elem[ dataPriv.expando ] ) ) { 6205 if ( data.events ) { 6206 for ( type in data.events ) { 6207 if ( special[ type ] ) { 6208 jQuery.event.remove( elem, type ); 6209 6210 // This is a shortcut to avoid jQuery.event.remove's overhead 6211 } else { 6212 jQuery.removeEvent( elem, type, data.handle ); 6213 } 6214 } 6215 } 6216 6217 // Support: Chrome <=35 - 45+ 6218 // Assign undefined instead of using delete, see Data#remove 6219 elem[ dataPriv.expando ] = undefined; 6220 } 6221 if ( elem[ dataUser.expando ] ) { 6222 6223 // Support: Chrome <=35 - 45+ 6224 // Assign undefined instead of using delete, see Data#remove 6225 elem[ dataUser.expando ] = undefined; 6226 } 6227 } 6228 } 6229 } 6230} ); 6231 6232jQuery.fn.extend( { 6233 detach: function( selector ) { 6234 return remove( this, selector, true ); 6235 }, 6236 6237 remove: function( selector ) { 6238 return remove( this, selector ); 6239 }, 6240 6241 text: function( value ) { 6242 return access( this, function( value ) { 6243 return value === undefined ? 6244 jQuery.text( this ) : 6245 this.empty().each( function() { 6246 if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { 6247 this.textContent = value; 6248 } 6249 } ); 6250 }, null, value, arguments.length ); 6251 }, 6252 6253 append: function() { 6254 return domManip( this, arguments, function( elem ) { 6255 if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { 6256 var target = manipulationTarget( this, elem ); 6257 target.appendChild( elem ); 6258 } 6259 } ); 6260 }, 6261 6262 prepend: function() { 6263 return domManip( this, arguments, function( elem ) { 6264 if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { 6265 var target = manipulationTarget( this, elem ); 6266 target.insertBefore( elem, target.firstChild ); 6267 } 6268 } ); 6269 }, 6270 6271 before: function() { 6272 return domManip( this, arguments, function( elem ) { 6273 if ( this.parentNode ) { 6274 this.parentNode.insertBefore( elem, this ); 6275 } 6276 } ); 6277 }, 6278 6279 after: function() { 6280 return domManip( this, arguments, function( elem ) { 6281 if ( this.parentNode ) { 6282 this.parentNode.insertBefore( elem, this.nextSibling ); 6283 } 6284 } ); 6285 }, 6286 6287 empty: function() { 6288 var elem, 6289 i = 0; 6290 6291 for ( ; ( elem = this[ i ] ) != null; i++ ) { 6292 if ( elem.nodeType === 1 ) { 6293 6294 // Prevent memory leaks 6295 jQuery.cleanData( getAll( elem, false ) ); 6296 6297 // Remove any remaining nodes 6298 elem.textContent = ""; 6299 } 6300 } 6301 6302 return this; 6303 }, 6304 6305 clone: function( dataAndEvents, deepDataAndEvents ) { 6306 dataAndEvents = dataAndEvents == null ? false : dataAndEvents; 6307 deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents; 6308 6309 return this.map( function() { 6310 return jQuery.clone( this, dataAndEvents, deepDataAndEvents ); 6311 } ); 6312 }, 6313 6314 html: function( value ) { 6315 return access( this, function( value ) { 6316 var elem = this[ 0 ] || {}, 6317 i = 0, 6318 l = this.length; 6319 6320 if ( value === undefined && elem.nodeType === 1 ) { 6321 return elem.innerHTML; 6322 } 6323 6324 // See if we can take a shortcut and just use innerHTML 6325 if ( typeof value === "string" && !rnoInnerhtml.test( value ) && 6326 !wrapMap[ ( rtagName.exec( value ) || [ "", "" ] )[ 1 ].toLowerCase() ] ) { 6327 6328 value = jQuery.htmlPrefilter( value ); 6329 6330 try { 6331 for ( ; i < l; i++ ) { 6332 elem = this[ i ] || {}; 6333 6334 // Remove element nodes and prevent memory leaks 6335 if ( elem.nodeType === 1 ) { 6336 jQuery.cleanData( getAll( elem, false ) ); 6337 elem.innerHTML = value; 6338 } 6339 } 6340 6341 elem = 0; 6342 6343 // If using innerHTML throws an exception, use the fallback method 6344 } catch ( e ) {} 6345 } 6346 6347 if ( elem ) { 6348 this.empty().append( value ); 6349 } 6350 }, null, value, arguments.length ); 6351 }, 6352 6353 replaceWith: function() { 6354 var ignored = []; 6355 6356 // Make the changes, replacing each non-ignored context element with the new content 6357 return domManip( this, arguments, function( elem ) { 6358 var parent = this.parentNode; 6359 6360 if ( jQuery.inArray( this, ignored ) < 0 ) { 6361 jQuery.cleanData( getAll( this ) ); 6362 if ( parent ) { 6363 parent.replaceChild( elem, this ); 6364 } 6365 } 6366 6367 // Force callback invocation 6368 }, ignored ); 6369 } 6370} ); 6371 6372jQuery.each( { 6373 appendTo: "append", 6374 prependTo: "prepend", 6375 insertBefore: "before", 6376 insertAfter: "after", 6377 replaceAll: "replaceWith" 6378}, function( name, original ) { 6379 jQuery.fn[ name ] = function( selector ) { 6380 var elems, 6381 ret = [], 6382 insert = jQuery( selector ), 6383 last = insert.length - 1, 6384 i = 0; 6385 6386 for ( ; i <= last; i++ ) { 6387 elems = i === last ? this : this.clone( true ); 6388 jQuery( insert[ i ] )[ original ]( elems ); 6389 6390 // Support: Android <=4.0 only, PhantomJS 1 only 6391 // .get() because push.apply(_, arraylike) throws on ancient WebKit 6392 push.apply( ret, elems.get() ); 6393 } 6394 6395 return this.pushStack( ret ); 6396 }; 6397} ); 6398var rnumnonpx = new RegExp( "^(" + pnum + ")(?!px)[a-z%]+$", "i" ); 6399 6400var getStyles = function( elem ) { 6401 6402 // Support: IE <=11 only, Firefox <=30 (#15098, #14150) 6403 // IE throws on elements created in popups 6404 // FF meanwhile throws on frame elements through "defaultView.getComputedStyle" 6405 var view = elem.ownerDocument.defaultView; 6406 6407 if ( !view || !view.opener ) { 6408 view = window; 6409 } 6410 6411 return view.getComputedStyle( elem ); 6412 }; 6413 6414var swap = function( elem, options, callback ) { 6415 var ret, name, 6416 old = {}; 6417 6418 // Remember the old values, and insert the new ones 6419 for ( name in options ) { 6420 old[ name ] = elem.style[ name ]; 6421 elem.style[ name ] = options[ name ]; 6422 } 6423 6424 ret = callback.call( elem ); 6425 6426 // Revert the old values 6427 for ( name in options ) { 6428 elem.style[ name ] = old[ name ]; 6429 } 6430 6431 return ret; 6432}; 6433 6434 6435var rboxStyle = new RegExp( cssExpand.join( "|" ), "i" ); 6436 6437 6438 6439( function() { 6440 6441 // Executing both pixelPosition & boxSizingReliable tests require only one layout 6442 // so they're executed at the same time to save the second computation. 6443 function computeStyleTests() { 6444 6445 // This is a singleton, we need to execute it only once 6446 if ( !div ) { 6447 return; 6448 } 6449 6450 container.style.cssText = "position:absolute;left:-11111px;width:60px;" + 6451 "margin-top:1px;padding:0;border:0"; 6452 div.style.cssText = 6453 "position:relative;display:block;box-sizing:border-box;overflow:scroll;" + 6454 "margin:auto;border:1px;padding:1px;" + 6455 "width:60%;top:1%"; 6456 documentElement.appendChild( container ).appendChild( div ); 6457 6458 var divStyle = window.getComputedStyle( div ); 6459 pixelPositionVal = divStyle.top !== "1%"; 6460 6461 // Support: Android 4.0 - 4.3 only, Firefox <=3 - 44 6462 reliableMarginLeftVal = roundPixelMeasures( divStyle.marginLeft ) === 12; 6463 6464 // Support: Android 4.0 - 4.3 only, Safari <=9.1 - 10.1, iOS <=7.0 - 9.3 6465 // Some styles come back with percentage values, even though they shouldn't 6466 div.style.right = "60%"; 6467 pixelBoxStylesVal = roundPixelMeasures( divStyle.right ) === 36; 6468 6469 // Support: IE 9 - 11 only 6470 // Detect misreporting of content dimensions for box-sizing:border-box elements 6471 boxSizingReliableVal = roundPixelMeasures( divStyle.width ) === 36; 6472 6473 // Support: IE 9 only 6474 // Detect overflow:scroll screwiness (gh-3699) 6475 // Support: Chrome <=64 6476 // Don't get tricked when zoom affects offsetWidth (gh-4029) 6477 div.style.position = "absolute"; 6478 scrollboxSizeVal = roundPixelMeasures( div.offsetWidth / 3 ) === 12; 6479 6480 documentElement.removeChild( container ); 6481 6482 // Nullify the div so it wouldn't be stored in the memory and 6483 // it will also be a sign that checks already performed 6484 div = null; 6485 } 6486 6487 function roundPixelMeasures( measure ) { 6488 return Math.round( parseFloat( measure ) ); 6489 } 6490 6491 var pixelPositionVal, boxSizingReliableVal, scrollboxSizeVal, pixelBoxStylesVal, 6492 reliableTrDimensionsVal, reliableMarginLeftVal, 6493 container = document.createElement( "div" ), 6494 div = document.createElement( "div" ); 6495 6496 // Finish early in limited (non-browser) environments 6497 if ( !div.style ) { 6498 return; 6499 } 6500 6501 // Support: IE <=9 - 11 only 6502 // Style of cloned element affects source element cloned (#8908) 6503 div.style.backgroundClip = "content-box"; 6504 div.cloneNode( true ).style.backgroundClip = ""; 6505 support.clearCloneStyle = div.style.backgroundClip === "content-box"; 6506 6507 jQuery.extend( support, { 6508 boxSizingReliable: function() { 6509 computeStyleTests(); 6510 return boxSizingReliableVal; 6511 }, 6512 pixelBoxStyles: function() { 6513 computeStyleTests(); 6514 return pixelBoxStylesVal; 6515 }, 6516 pixelPosition: function() { 6517 computeStyleTests(); 6518 return pixelPositionVal; 6519 }, 6520 reliableMarginLeft: function() { 6521 computeStyleTests(); 6522 return reliableMarginLeftVal; 6523 }, 6524 scrollboxSize: function() { 6525 computeStyleTests(); 6526 return scrollboxSizeVal; 6527 }, 6528 6529 // Support: IE 9 - 11+, Edge 15 - 18+ 6530 // IE/Edge misreport `getComputedStyle` of table rows with width/height 6531 // set in CSS while `offset*` properties report correct values. 6532 // Behavior in IE 9 is more subtle than in newer versions & it passes 6533 // some versions of this test; make sure not to make it pass there! 6534 // 6535 // Support: Firefox 70+ 6536 // Only Firefox includes border widths 6537 // in computed dimensions. (gh-4529) 6538 reliableTrDimensions: function() { 6539 var table, tr, trChild, trStyle; 6540 if ( reliableTrDimensionsVal == null ) { 6541 table = document.createElement( "table" ); 6542 tr = document.createElement( "tr" ); 6543 trChild = document.createElement( "div" ); 6544 6545 table.style.cssText = "position:absolute;left:-11111px;border-collapse:separate"; 6546 tr.style.cssText = "border:1px solid"; 6547 6548 // Support: Chrome 86+ 6549 // Height set through cssText does not get applied. 6550 // Computed height then comes back as 0. 6551 tr.style.height = "1px"; 6552 trChild.style.height = "9px"; 6553 6554 // Support: Android 8 Chrome 86+ 6555 // In our bodyBackground.html iframe, 6556 // display for all div elements is set to "inline", 6557 // which causes a problem only in Android 8 Chrome 86. 6558 // Ensuring the div is display: block 6559 // gets around this issue. 6560 trChild.style.display = "block"; 6561 6562 documentElement 6563 .appendChild( table ) 6564 .appendChild( tr ) 6565 .appendChild( trChild ); 6566 6567 trStyle = window.getComputedStyle( tr ); 6568 reliableTrDimensionsVal = ( parseInt( trStyle.height, 10 ) + 6569 parseInt( trStyle.borderTopWidth, 10 ) + 6570 parseInt( trStyle.borderBottomWidth, 10 ) ) === tr.offsetHeight; 6571 6572 documentElement.removeChild( table ); 6573 } 6574 return reliableTrDimensionsVal; 6575 } 6576 } ); 6577} )(); 6578 6579 6580function curCSS( elem, name, computed ) { 6581 var width, minWidth, maxWidth, ret, 6582 6583 // Support: Firefox 51+ 6584 // Retrieving style before computed somehow 6585 // fixes an issue with getting wrong values 6586 // on detached elements 6587 style = elem.style; 6588 6589 computed = computed || getStyles( elem ); 6590 6591 // getPropertyValue is needed for: 6592 // .css('filter') (IE 9 only, #12537) 6593 // .css('--customProperty) (#3144) 6594 if ( computed ) { 6595 ret = computed.getPropertyValue( name ) || computed[ name ]; 6596 6597 if ( ret === "" && !isAttached( elem ) ) { 6598 ret = jQuery.style( elem, name ); 6599 } 6600 6601 // A tribute to the "awesome hack by Dean Edwards" 6602 // Android Browser returns percentage for some values, 6603 // but width seems to be reliably pixels. 6604 // This is against the CSSOM draft spec: 6605 // https://drafts.csswg.org/cssom/#resolved-values 6606 if ( !support.pixelBoxStyles() && rnumnonpx.test( ret ) && rboxStyle.test( name ) ) { 6607 6608 // Remember the original values 6609 width = style.width; 6610 minWidth = style.minWidth; 6611 maxWidth = style.maxWidth; 6612 6613 // Put in the new values to get a computed value out 6614 style.minWidth = style.maxWidth = style.width = ret; 6615 ret = computed.width; 6616 6617 // Revert the changed values 6618 style.width = width; 6619 style.minWidth = minWidth; 6620 style.maxWidth = maxWidth; 6621 } 6622 } 6623 6624 return ret !== undefined ? 6625 6626 // Support: IE <=9 - 11 only 6627 // IE returns zIndex value as an integer. 6628 ret + "" : 6629 ret; 6630} 6631 6632 6633function addGetHookIf( conditionFn, hookFn ) { 6634 6635 // Define the hook, we'll check on the first run if it's really needed. 6636 return { 6637 get: function() { 6638 if ( conditionFn() ) { 6639 6640 // Hook not needed (or it's not possible to use it due 6641 // to missing dependency), remove it. 6642 delete this.get; 6643 return; 6644 } 6645 6646 // Hook needed; redefine it so that the support test is not executed again. 6647 return ( this.get = hookFn ).apply( this, arguments ); 6648 } 6649 }; 6650} 6651 6652 6653var cssPrefixes = [ "Webkit", "Moz", "ms" ], 6654 emptyStyle = document.createElement( "div" ).style, 6655 vendorProps = {}; 6656 6657// Return a vendor-prefixed property or undefined 6658function vendorPropName( name ) { 6659 6660 // Check for vendor prefixed names 6661 var capName = name[ 0 ].toUpperCase() + name.slice( 1 ), 6662 i = cssPrefixes.length; 6663 6664 while ( i-- ) { 6665 name = cssPrefixes[ i ] + capName; 6666 if ( name in emptyStyle ) { 6667 return name; 6668 } 6669 } 6670} 6671 6672// Return a potentially-mapped jQuery.cssProps or vendor prefixed property 6673function finalPropName( name ) { 6674 var final = jQuery.cssProps[ name ] || vendorProps[ name ]; 6675 6676 if ( final ) { 6677 return final; 6678 } 6679 if ( name in emptyStyle ) { 6680 return name; 6681 } 6682 return vendorProps[ name ] = vendorPropName( name ) || name; 6683} 6684 6685 6686var 6687 6688 // Swappable if display is none or starts with table 6689 // except "table", "table-cell", or "table-caption" 6690 // See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display 6691 rdisplayswap = /^(none|table(?!-c[ea]).+)/, 6692 rcustomProp = /^--/, 6693 cssShow = { position: "absolute", visibility: "hidden", display: "block" }, 6694 cssNormalTransform = { 6695 letterSpacing: "0", 6696 fontWeight: "400" 6697 }; 6698 6699function setPositiveNumber( _elem, value, subtract ) { 6700 6701 // Any relative (+/-) values have already been 6702 // normalized at this point 6703 var matches = rcssNum.exec( value ); 6704 return matches ? 6705 6706 // Guard against undefined "subtract", e.g., when used as in cssHooks 6707 Math.max( 0, matches[ 2 ] - ( subtract || 0 ) ) + ( matches[ 3 ] || "px" ) : 6708 value; 6709} 6710 6711function boxModelAdjustment( elem, dimension, box, isBorderBox, styles, computedVal ) { 6712 var i = dimension === "width" ? 1 : 0, 6713 extra = 0, 6714 delta = 0; 6715 6716 // Adjustment may not be necessary 6717 if ( box === ( isBorderBox ? "border" : "content" ) ) { 6718 return 0; 6719 } 6720 6721 for ( ; i < 4; i += 2 ) { 6722 6723 // Both box models exclude margin 6724 if ( box === "margin" ) { 6725 delta += jQuery.css( elem, box + cssExpand[ i ], true, styles ); 6726 } 6727 6728 // If we get here with a content-box, we're seeking "padding" or "border" or "margin" 6729 if ( !isBorderBox ) { 6730 6731 // Add padding 6732 delta += jQuery.css( elem, "padding" + cssExpand[ i ], true, styles ); 6733 6734 // For "border" or "margin", add border 6735 if ( box !== "padding" ) { 6736 delta += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); 6737 6738 // But still keep track of it otherwise 6739 } else { 6740 extra += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); 6741 } 6742 6743 // If we get here with a border-box (content + padding + border), we're seeking "content" or 6744 // "padding" or "margin" 6745 } else { 6746 6747 // For "content", subtract padding 6748 if ( box === "content" ) { 6749 delta -= jQuery.css( elem, "padding" + cssExpand[ i ], true, styles ); 6750 } 6751 6752 // For "content" or "padding", subtract border 6753 if ( box !== "margin" ) { 6754 delta -= jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); 6755 } 6756 } 6757 } 6758 6759 // Account for positive content-box scroll gutter when requested by providing computedVal 6760 if ( !isBorderBox && computedVal >= 0 ) { 6761 6762 // offsetWidth/offsetHeight is a rounded sum of content, padding, scroll gutter, and border 6763 // Assuming integer scroll gutter, subtract the rest and round down 6764 delta += Math.max( 0, Math.ceil( 6765 elem[ "offset" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] - 6766 computedVal - 6767 delta - 6768 extra - 6769 0.5 6770 6771 // If offsetWidth/offsetHeight is unknown, then we can't determine content-box scroll gutter 6772 // Use an explicit zero to avoid NaN (gh-3964) 6773 ) ) || 0; 6774 } 6775 6776 return delta; 6777} 6778 6779function getWidthOrHeight( elem, dimension, extra ) { 6780 6781 // Start with computed style 6782 var styles = getStyles( elem ), 6783 6784 // To avoid forcing a reflow, only fetch boxSizing if we need it (gh-4322). 6785 // Fake content-box until we know it's needed to know the true value. 6786 boxSizingNeeded = !support.boxSizingReliable() || extra, 6787 isBorderBox = boxSizingNeeded && 6788 jQuery.css( elem, "boxSizing", false, styles ) === "border-box", 6789 valueIsBorderBox = isBorderBox, 6790 6791 val = curCSS( elem, dimension, styles ), 6792 offsetProp = "offset" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ); 6793 6794 // Support: Firefox <=54 6795 // Return a confounding non-pixel value or feign ignorance, as appropriate. 6796 if ( rnumnonpx.test( val ) ) { 6797 if ( !extra ) { 6798 return val; 6799 } 6800 val = "auto"; 6801 } 6802 6803 6804 // Support: IE 9 - 11 only 6805 // Use offsetWidth/offsetHeight for when box sizing is unreliable. 6806 // In those cases, the computed value can be trusted to be border-box. 6807 if ( ( !support.boxSizingReliable() && isBorderBox || 6808 6809 // Support: IE 10 - 11+, Edge 15 - 18+ 6810 // IE/Edge misreport `getComputedStyle` of table rows with width/height 6811 // set in CSS while `offset*` properties report correct values. 6812 // Interestingly, in some cases IE 9 doesn't suffer from this issue. 6813 !support.reliableTrDimensions() && nodeName( elem, "tr" ) || 6814 6815 // Fall back to offsetWidth/offsetHeight when value is "auto" 6816 // This happens for inline elements with no explicit setting (gh-3571) 6817 val === "auto" || 6818 6819 // Support: Android <=4.1 - 4.3 only 6820 // Also use offsetWidth/offsetHeight for misreported inline dimensions (gh-3602) 6821 !parseFloat( val ) && jQuery.css( elem, "display", false, styles ) === "inline" ) && 6822 6823 // Make sure the element is visible & connected 6824 elem.getClientRects().length ) { 6825 6826 isBorderBox = jQuery.css( elem, "boxSizing", false, styles ) === "border-box"; 6827 6828 // Where available, offsetWidth/offsetHeight approximate border box dimensions. 6829 // Where not available (e.g., SVG), assume unreliable box-sizing and interpret the 6830 // retrieved value as a content box dimension. 6831 valueIsBorderBox = offsetProp in elem; 6832 if ( valueIsBorderBox ) { 6833 val = elem[ offsetProp ]; 6834 } 6835 } 6836 6837 // Normalize "" and auto 6838 val = parseFloat( val ) || 0; 6839 6840 // Adjust for the element's box model 6841 return ( val + 6842 boxModelAdjustment( 6843 elem, 6844 dimension, 6845 extra || ( isBorderBox ? "border" : "content" ), 6846 valueIsBorderBox, 6847 styles, 6848 6849 // Provide the current computed size to request scroll gutter calculation (gh-3589) 6850 val 6851 ) 6852 ) + "px"; 6853} 6854 6855jQuery.extend( { 6856 6857 // Add in style property hooks for overriding the default 6858 // behavior of getting and setting a style property 6859 cssHooks: { 6860 opacity: { 6861 get: function( elem, computed ) { 6862 if ( computed ) { 6863 6864 // We should always get a number back from opacity 6865 var ret = curCSS( elem, "opacity" ); 6866 return ret === "" ? "1" : ret; 6867 } 6868 } 6869 } 6870 }, 6871 6872 // Don't automatically add "px" to these possibly-unitless properties 6873 cssNumber: { 6874 "animationIterationCount": true, 6875 "columnCount": true, 6876 "fillOpacity": true, 6877 "flexGrow": true, 6878 "flexShrink": true, 6879 "fontWeight": true, 6880 "gridArea": true, 6881 "gridColumn": true, 6882 "gridColumnEnd": true, 6883 "gridColumnStart": true, 6884 "gridRow": true, 6885 "gridRowEnd": true, 6886 "gridRowStart": true, 6887 "lineHeight": true, 6888 "opacity": true, 6889 "order": true, 6890 "orphans": true, 6891 "widows": true, 6892 "zIndex": true, 6893 "zoom": true 6894 }, 6895 6896 // Add in properties whose names you wish to fix before 6897 // setting or getting the value 6898 cssProps: {}, 6899 6900 // Get and set the style property on a DOM Node 6901 style: function( elem, name, value, extra ) { 6902 6903 // Don't set styles on text and comment nodes 6904 if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) { 6905 return; 6906 } 6907 6908 // Make sure that we're working with the right name 6909 var ret, type, hooks, 6910 origName = camelCase( name ), 6911 isCustomProp = rcustomProp.test( name ), 6912 style = elem.style; 6913 6914 // Make sure that we're working with the right name. We don't 6915 // want to query the value if it is a CSS custom property 6916 // since they are user-defined. 6917 if ( !isCustomProp ) { 6918 name = finalPropName( origName ); 6919 } 6920 6921 // Gets hook for the prefixed version, then unprefixed version 6922 hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ]; 6923 6924 // Check if we're setting a value 6925 if ( value !== undefined ) { 6926 type = typeof value; 6927 6928 // Convert "+=" or "-=" to relative numbers (#7345) 6929 if ( type === "string" && ( ret = rcssNum.exec( value ) ) && ret[ 1 ] ) { 6930 value = adjustCSS( elem, name, ret ); 6931 6932 // Fixes bug #9237 6933 type = "number"; 6934 } 6935 6936 // Make sure that null and NaN values aren't set (#7116) 6937 if ( value == null || value !== value ) { 6938 return; 6939 } 6940 6941 // If a number was passed in, add the unit (except for certain CSS properties) 6942 // The isCustomProp check can be removed in jQuery 4.0 when we only auto-append 6943 // "px" to a few hardcoded values. 6944 if ( type === "number" && !isCustomProp ) { 6945 value += ret && ret[ 3 ] || ( jQuery.cssNumber[ origName ] ? "" : "px" ); 6946 } 6947 6948 // background-* props affect original clone's values 6949 if ( !support.clearCloneStyle && value === "" && name.indexOf( "background" ) === 0 ) { 6950 style[ name ] = "inherit"; 6951 } 6952 6953 // If a hook was provided, use that value, otherwise just set the specified value
vendor: 25,692 bytes, lines 6954-7950
6954 if ( !hooks || !( "set" in hooks ) || 6955 ( value = hooks.set( elem, value, extra ) ) !== undefined ) { 6956 6957 if ( isCustomProp ) { 6958 style.setProperty( name, value ); 6959 } else { 6960 style[ name ] = value; 6961 } 6962 } 6963 6964 } else { 6965 6966 // If a hook was provided get the non-computed value from there 6967 if ( hooks && "get" in hooks && 6968 ( ret = hooks.get( elem, false, extra ) ) !== undefined ) { 6969 6970 return ret; 6971 } 6972 6973 // Otherwise just get the value from the style object 6974 return style[ name ]; 6975 } 6976 }, 6977 6978 css: function( elem, name, extra, styles ) { 6979 var val, num, hooks, 6980 origName = camelCase( name ), 6981 isCustomProp = rcustomProp.test( name ); 6982 6983 // Make sure that we're working with the right name. We don't 6984 // want to modify the value if it is a CSS custom property 6985 // since they are user-defined. 6986 if ( !isCustomProp ) { 6987 name = finalPropName( origName ); 6988 } 6989 6990 // Try prefixed name followed by the unprefixed name 6991 hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ]; 6992 6993 // If a hook was provided get the computed value from there 6994 if ( hooks && "get" in hooks ) { 6995 val = hooks.get( elem, true, extra ); 6996 } 6997 6998 // Otherwise, if a way to get the computed value exists, use that 6999 if ( val === undefined ) { 7000 val = curCSS( elem, name, styles ); 7001 } 7002 7003 // Convert "normal" to computed value 7004 if ( val === "normal" && name in cssNormalTransform ) { 7005 val = cssNormalTransform[ name ]; 7006 } 7007 7008 // Make numeric if forced or a qualifier was provided and val looks numeric 7009 if ( extra === "" || extra ) { 7010 num = parseFloat( val ); 7011 return extra === true || isFinite( num ) ? num || 0 : val; 7012 } 7013 7014 return val; 7015 } 7016} ); 7017 7018jQuery.each( [ "height", "width" ], function( _i, dimension ) { 7019 jQuery.cssHooks[ dimension ] = { 7020 get: function( elem, computed, extra ) { 7021 if ( computed ) { 7022 7023 // Certain elements can have dimension info if we invisibly show them 7024 // but it must have a current display style that would benefit 7025 return rdisplayswap.test( jQuery.css( elem, "display" ) ) && 7026 7027 // Support: Safari 8+ 7028 // Table columns in Safari have non-zero offsetWidth & zero 7029 // getBoundingClientRect().width unless display is changed. 7030 // Support: IE <=11 only 7031 // Running getBoundingClientRect on a disconnected node 7032 // in IE throws an error. 7033 ( !elem.getClientRects().length || !elem.getBoundingClientRect().width ) ? 7034 swap( elem, cssShow, function() { 7035 return getWidthOrHeight( elem, dimension, extra ); 7036 } ) : 7037 getWidthOrHeight( elem, dimension, extra ); 7038 } 7039 }, 7040 7041 set: function( elem, value, extra ) { 7042 var matches, 7043 styles = getStyles( elem ), 7044 7045 // Only read styles.position if the test has a chance to fail 7046 // to avoid forcing a reflow. 7047 scrollboxSizeBuggy = !support.scrollboxSize() && 7048 styles.position === "absolute", 7049 7050 // To avoid forcing a reflow, only fetch boxSizing if we need it (gh-3991) 7051 boxSizingNeeded = scrollboxSizeBuggy || extra, 7052 isBorderBox = boxSizingNeeded && 7053 jQuery.css( elem, "boxSizing", false, styles ) === "border-box", 7054 subtract = extra ? 7055 boxModelAdjustment( 7056 elem, 7057 dimension, 7058 extra, 7059 isBorderBox, 7060 styles 7061 ) : 7062 0; 7063 7064 // Account for unreliable border-box dimensions by comparing offset* to computed and 7065 // faking a content-box to get border and padding (gh-3699) 7066 if ( isBorderBox && scrollboxSizeBuggy ) { 7067 subtract -= Math.ceil( 7068 elem[ "offset" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] - 7069 parseFloat( styles[ dimension ] ) - 7070 boxModelAdjustment( elem, dimension, "border", false, styles ) - 7071 0.5 7072 ); 7073 } 7074 7075 // Convert to pixels if value adjustment is needed 7076 if ( subtract && ( matches = rcssNum.exec( value ) ) && 7077 ( matches[ 3 ] || "px" ) !== "px" ) { 7078 7079 elem.style[ dimension ] = value; 7080 value = jQuery.css( elem, dimension ); 7081 } 7082 7083 return setPositiveNumber( elem, value, subtract ); 7084 } 7085 }; 7086} ); 7087 7088jQuery.cssHooks.marginLeft = addGetHookIf( support.reliableMarginLeft, 7089 function( elem, computed ) { 7090 if ( computed ) { 7091 return ( parseFloat( curCSS( elem, "marginLeft" ) ) || 7092 elem.getBoundingClientRect().left - 7093 swap( elem, { marginLeft: 0 }, function() { 7094 return elem.getBoundingClientRect().left; 7095 } ) 7096 ) + "px"; 7097 } 7098 } 7099); 7100 7101// These hooks are used by animate to expand properties 7102jQuery.each( { 7103 margin: "", 7104 padding: "", 7105 border: "Width" 7106}, function( prefix, suffix ) { 7107 jQuery.cssHooks[ prefix + suffix ] = { 7108 expand: function( value ) { 7109 var i = 0, 7110 expanded = {}, 7111 7112 // Assumes a single number if not a string 7113 parts = typeof value === "string" ? value.split( " " ) : [ value ]; 7114 7115 for ( ; i < 4; i++ ) { 7116 expanded[ prefix + cssExpand[ i ] + suffix ] = 7117 parts[ i ] || parts[ i - 2 ] || parts[ 0 ]; 7118 } 7119 7120 return expanded; 7121 } 7122 }; 7123 7124 if ( prefix !== "margin" ) { 7125 jQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber; 7126 } 7127} ); 7128 7129jQuery.fn.extend( { 7130 css: function( name, value ) { 7131 return access( this, function( elem, name, value ) { 7132 var styles, len, 7133 map = {}, 7134 i = 0; 7135 7136 if ( Array.isArray( name ) ) { 7137 styles = getStyles( elem ); 7138 len = name.length; 7139 7140 for ( ; i < len; i++ ) { 7141 map[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles ); 7142 } 7143 7144 return map; 7145 } 7146 7147 return value !== undefined ? 7148 jQuery.style( elem, name, value ) : 7149 jQuery.css( elem, name ); 7150 }, name, value, arguments.length > 1 ); 7151 } 7152} ); 7153 7154 7155function Tween( elem, options, prop, end, easing ) { 7156 return new Tween.prototype.init( elem, options, prop, end, easing ); 7157} 7158jQuery.Tween = Tween; 7159 7160Tween.prototype = { 7161 constructor: Tween, 7162 init: function( elem, options, prop, end, easing, unit ) { 7163 this.elem = elem; 7164 this.prop = prop; 7165 this.easing = easing || jQuery.easing._default; 7166 this.options = options; 7167 this.start = this.now = this.cur(); 7168 this.end = end; 7169 this.unit = unit || ( jQuery.cssNumber[ prop ] ? "" : "px" ); 7170 }, 7171 cur: function() { 7172 var hooks = Tween.propHooks[ this.prop ]; 7173 7174 return hooks && hooks.get ? 7175 hooks.get( this ) : 7176 Tween.propHooks._default.get( this ); 7177 }, 7178 run: function( percent ) { 7179 var eased, 7180 hooks = Tween.propHooks[ this.prop ]; 7181 7182 if ( this.options.duration ) { 7183 this.pos = eased = jQuery.easing[ this.easing ]( 7184 percent, this.options.duration * percent, 0, 1, this.options.duration 7185 ); 7186 } else { 7187 this.pos = eased = percent; 7188 } 7189 this.now = ( this.end - this.start ) * eased + this.start; 7190 7191 if ( this.options.step ) { 7192 this.options.step.call( this.elem, this.now, this ); 7193 } 7194 7195 if ( hooks && hooks.set ) { 7196 hooks.set( this ); 7197 } else { 7198 Tween.propHooks._default.set( this ); 7199 } 7200 return this; 7201 } 7202}; 7203 7204Tween.prototype.init.prototype = Tween.prototype; 7205 7206Tween.propHooks = { 7207 _default: { 7208 get: function( tween ) { 7209 var result; 7210 7211 // Use a property on the element directly when it is not a DOM element, 7212 // or when there is no matching style property that exists. 7213 if ( tween.elem.nodeType !== 1 || 7214 tween.elem[ tween.prop ] != null && tween.elem.style[ tween.prop ] == null ) { 7215 return tween.elem[ tween.prop ]; 7216 } 7217 7218 // Passing an empty string as a 3rd parameter to .css will automatically 7219 // attempt a parseFloat and fallback to a string if the parse fails. 7220 // Simple values such as "10px" are parsed to Float; 7221 // complex values such as "rotate(1rad)" are returned as-is. 7222 result = jQuery.css( tween.elem, tween.prop, "" ); 7223 7224 // Empty strings, null, undefined and "auto" are converted to 0. 7225 return !result || result === "auto" ? 0 : result; 7226 }, 7227 set: function( tween ) { 7228 7229 // Use step hook for back compat. 7230 // Use cssHook if its there. 7231 // Use .style if available and use plain properties where available. 7232 if ( jQuery.fx.step[ tween.prop ] ) { 7233 jQuery.fx.step[ tween.prop ]( tween ); 7234 } else if ( tween.elem.nodeType === 1 && ( 7235 jQuery.cssHooks[ tween.prop ] || 7236 tween.elem.style[ finalPropName( tween.prop ) ] != null ) ) { 7237 jQuery.style( tween.elem, tween.prop, tween.now + tween.unit ); 7238 } else { 7239 tween.elem[ tween.prop ] = tween.now; 7240 } 7241 } 7242 } 7243}; 7244 7245// Support: IE <=9 only 7246// Panic based approach to setting things on disconnected nodes 7247Tween.propHooks.scrollTop = Tween.propHooks.scrollLeft = { 7248 set: function( tween ) { 7249 if ( tween.elem.nodeType && tween.elem.parentNode ) { 7250 tween.elem[ tween.prop ] = tween.now; 7251 } 7252 } 7253}; 7254 7255jQuery.easing = { 7256 linear: function( p ) { 7257 return p; 7258 }, 7259 swing: function( p ) { 7260 return 0.5 - Math.cos( p * Math.PI ) / 2; 7261 }, 7262 _default: "swing" 7263}; 7264 7265jQuery.fx = Tween.prototype.init; 7266 7267// Back compat <1.8 extension point 7268jQuery.fx.step = {}; 7269 7270 7271 7272 7273var 7274 fxNow, inProgress, 7275 rfxtypes = /^(?:toggle|show|hide)$/, 7276 rrun = /queueHooks$/; 7277 7278function schedule() { 7279 if ( inProgress ) { 7280 if ( document.hidden === false && window.requestAnimationFrame ) { 7281 window.requestAnimationFrame( schedule ); 7282 } else { 7283 window.setTimeout( schedule, jQuery.fx.interval ); 7284 } 7285 7286 jQuery.fx.tick(); 7287 } 7288} 7289 7290// Animations created synchronously will run synchronously 7291function createFxNow() { 7292 window.setTimeout( function() { 7293 fxNow = undefined; 7294 } ); 7295 return ( fxNow = Date.now() ); 7296} 7297 7298// Generate parameters to create a standard animation 7299function genFx( type, includeWidth ) { 7300 var which, 7301 i = 0, 7302 attrs = { height: type }; 7303 7304 // If we include width, step value is 1 to do all cssExpand values, 7305 // otherwise step value is 2 to skip over Left and Right 7306 includeWidth = includeWidth ? 1 : 0; 7307 for ( ; i < 4; i += 2 - includeWidth ) { 7308 which = cssExpand[ i ]; 7309 attrs[ "margin" + which ] = attrs[ "padding" + which ] = type; 7310 } 7311 7312 if ( includeWidth ) { 7313 attrs.opacity = attrs.width = type; 7314 } 7315 7316 return attrs; 7317} 7318 7319function createTween( value, prop, animation ) { 7320 var tween, 7321 collection = ( Animation.tweeners[ prop ] || [] ).concat( Animation.tweeners[ "*" ] ), 7322 index = 0, 7323 length = collection.length; 7324 for ( ; index < length; index++ ) { 7325 if ( ( tween = collection[ index ].call( animation, prop, value ) ) ) { 7326 7327 // We're done with this property 7328 return tween; 7329 } 7330 } 7331} 7332 7333function defaultPrefilter( elem, props, opts ) { 7334 var prop, value, toggle, hooks, oldfire, propTween, restoreDisplay, display, 7335 isBox = "width" in props || "height" in props, 7336 anim = this, 7337 orig = {}, 7338 style = elem.style, 7339 hidden = elem.nodeType && isHiddenWithinTree( elem ), 7340 dataShow = dataPriv.get( elem, "fxshow" ); 7341 7342 // Queue-skipping animations hijack the fx hooks 7343 if ( !opts.queue ) { 7344 hooks = jQuery._queueHooks( elem, "fx" ); 7345 if ( hooks.unqueued == null ) { 7346 hooks.unqueued = 0; 7347 oldfire = hooks.empty.fire; 7348 hooks.empty.fire = function() { 7349 if ( !hooks.unqueued ) { 7350 oldfire(); 7351 } 7352 }; 7353 } 7354 hooks.unqueued++; 7355 7356 anim.always( function() { 7357 7358 // Ensure the complete handler is called before this completes 7359 anim.always( function() { 7360 hooks.unqueued--; 7361 if ( !jQuery.queue( elem, "fx" ).length ) { 7362 hooks.empty.fire(); 7363 } 7364 } ); 7365 } ); 7366 } 7367 7368 // Detect show/hide animations 7369 for ( prop in props ) { 7370 value = props[ prop ]; 7371 if ( rfxtypes.test( value ) ) { 7372 delete props[ prop ]; 7373 toggle = toggle || value === "toggle"; 7374 if ( value === ( hidden ? "hide" : "show" ) ) { 7375 7376 // Pretend to be hidden if this is a "show" and 7377 // there is still data from a stopped show/hide 7378 if ( value === "show" && dataShow && dataShow[ prop ] !== undefined ) { 7379 hidden = true; 7380 7381 // Ignore all other no-op show/hide data 7382 } else { 7383 continue; 7384 } 7385 } 7386 orig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop ); 7387 } 7388 } 7389 7390 // Bail out if this is a no-op like .hide().hide() 7391 propTween = !jQuery.isEmptyObject( props ); 7392 if ( !propTween && jQuery.isEmptyObject( orig ) ) { 7393 return; 7394 } 7395 7396 // Restrict "overflow" and "display" styles during box animations 7397 if ( isBox && elem.nodeType === 1 ) { 7398 7399 // Support: IE <=9 - 11, Edge 12 - 15 7400 // Record all 3 overflow attributes because IE does not infer the shorthand 7401 // from identically-valued overflowX and overflowY and Edge just mirrors 7402 // the overflowX value there. 7403 opts.overflow = [ style.overflow, style.overflowX, style.overflowY ]; 7404 7405 // Identify a display type, preferring old show/hide data over the CSS cascade 7406 restoreDisplay = dataShow && dataShow.display; 7407 if ( restoreDisplay == null ) { 7408 restoreDisplay = dataPriv.get( elem, "display" ); 7409 } 7410 display = jQuery.css( elem, "display" ); 7411 if ( display === "none" ) { 7412 if ( restoreDisplay ) { 7413 display = restoreDisplay; 7414 } else { 7415 7416 // Get nonempty value(s) by temporarily forcing visibility 7417 showHide( [ elem ], true ); 7418 restoreDisplay = elem.style.display || restoreDisplay; 7419 display = jQuery.css( elem, "display" ); 7420 showHide( [ elem ] ); 7421 } 7422 } 7423 7424 // Animate inline elements as inline-block 7425 if ( display === "inline" || display === "inline-block" && restoreDisplay != null ) { 7426 if ( jQuery.css( elem, "float" ) === "none" ) { 7427 7428 // Restore the original display value at the end of pure show/hide animations 7429 if ( !propTween ) { 7430 anim.done( function() { 7431 style.display = restoreDisplay; 7432 } ); 7433 if ( restoreDisplay == null ) { 7434 display = style.display; 7435 restoreDisplay = display === "none" ? "" : display; 7436 } 7437 } 7438 style.display = "inline-block"; 7439 } 7440 } 7441 } 7442 7443 if ( opts.overflow ) { 7444 style.overflow = "hidden"; 7445 anim.always( function() { 7446 style.overflow = opts.overflow[ 0 ]; 7447 style.overflowX = opts.overflow[ 1 ]; 7448 style.overflowY = opts.overflow[ 2 ]; 7449 } ); 7450 } 7451 7452 // Implement show/hide animations 7453 propTween = false; 7454 for ( prop in orig ) { 7455 7456 // General show/hide setup for this element animation 7457 if ( !propTween ) { 7458 if ( dataShow ) { 7459 if ( "hidden" in dataShow ) { 7460 hidden = dataShow.hidden; 7461 } 7462 } else { 7463 dataShow = dataPriv.access( elem, "fxshow", { display: restoreDisplay } ); 7464 } 7465 7466 // Store hidden/visible for toggle so `.stop().toggle()` "reverses" 7467 if ( toggle ) { 7468 dataShow.hidden = !hidden; 7469 } 7470 7471 // Show elements before animating them 7472 if ( hidden ) { 7473 showHide( [ elem ], true ); 7474 } 7475 7476 /* eslint-disable no-loop-func */ 7477 7478 anim.done( function() { 7479 7480 /* eslint-enable no-loop-func */ 7481 7482 // The final step of a "hide" animation is actually hiding the element 7483 if ( !hidden ) { 7484 showHide( [ elem ] ); 7485 } 7486 dataPriv.remove( elem, "fxshow" ); 7487 for ( prop in orig ) { 7488 jQuery.style( elem, prop, orig[ prop ] ); 7489 } 7490 } ); 7491 } 7492 7493 // Per-property setup 7494 propTween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim ); 7495 if ( !( prop in dataShow ) ) { 7496 dataShow[ prop ] = propTween.start; 7497 if ( hidden ) { 7498 propTween.end = propTween.start; 7499 propTween.start = 0; 7500 } 7501 } 7502 } 7503} 7504 7505function propFilter( props, specialEasing ) { 7506 var index, name, easing, value, hooks; 7507 7508 // camelCase, specialEasing and expand cssHook pass 7509 for ( index in props ) { 7510 name = camelCase( index ); 7511 easing = specialEasing[ name ]; 7512 value = props[ index ]; 7513 if ( Array.isArray( value ) ) { 7514 easing = value[ 1 ]; 7515 value = props[ index ] = value[ 0 ]; 7516 } 7517 7518 if ( index !== name ) { 7519 props[ name ] = value; 7520 delete props[ index ]; 7521 } 7522 7523 hooks = jQuery.cssHooks[ name ]; 7524 if ( hooks && "expand" in hooks ) { 7525 value = hooks.expand( value ); 7526 delete props[ name ]; 7527 7528 // Not quite $.extend, this won't overwrite existing keys. 7529 // Reusing 'index' because we have the correct "name" 7530 for ( index in value ) { 7531 if ( !( index in props ) ) { 7532 props[ index ] = value[ index ]; 7533 specialEasing[ index ] = easing; 7534 } 7535 } 7536 } else { 7537 specialEasing[ name ] = easing; 7538 } 7539 } 7540} 7541 7542function Animation( elem, properties, options ) { 7543 var result, 7544 stopped, 7545 index = 0, 7546 length = Animation.prefilters.length, 7547 deferred = jQuery.Deferred().always( function() { 7548 7549 // Don't match elem in the :animated selector 7550 delete tick.elem; 7551 } ), 7552 tick = function() { 7553 if ( stopped ) { 7554 return false; 7555 } 7556 var currentTime = fxNow || createFxNow(), 7557 remaining = Math.max( 0, animation.startTime + animation.duration - currentTime ), 7558 7559 // Support: Android 2.3 only 7560 // Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (#12497) 7561 temp = remaining / animation.duration || 0, 7562 percent = 1 - temp, 7563 index = 0, 7564 length = animation.tweens.length; 7565 7566 for ( ; index < length; index++ ) { 7567 animation.tweens[ index ].run( percent ); 7568 } 7569 7570 deferred.notifyWith( elem, [ animation, percent, remaining ] ); 7571 7572 // If there's more to do, yield 7573 if ( percent < 1 && length ) { 7574 return remaining; 7575 } 7576 7577 // If this was an empty animation, synthesize a final progress notification 7578 if ( !length ) { 7579 deferred.notifyWith( elem, [ animation, 1, 0 ] ); 7580 } 7581 7582 // Resolve the animation and report its conclusion 7583 deferred.resolveWith( elem, [ animation ] ); 7584 return false; 7585 }, 7586 animation = deferred.promise( { 7587 elem: elem, 7588 props: jQuery.extend( {}, properties ), 7589 opts: jQuery.extend( true, { 7590 specialEasing: {}, 7591 easing: jQuery.easing._default 7592 }, options ), 7593 originalProperties: properties, 7594 originalOptions: options, 7595 startTime: fxNow || createFxNow(), 7596 duration: options.duration, 7597 tweens: [], 7598 createTween: function( prop, end ) { 7599 var tween = jQuery.Tween( elem, animation.opts, prop, end, 7600 animation.opts.specialEasing[ prop ] || animation.opts.easing ); 7601 animation.tweens.push( tween ); 7602 return tween; 7603 }, 7604 stop: function( gotoEnd ) { 7605 var index = 0, 7606 7607 // If we are going to the end, we want to run all the tweens 7608 // otherwise we skip this part 7609 length = gotoEnd ? animation.tweens.length : 0; 7610 if ( stopped ) { 7611 return this; 7612 } 7613 stopped = true; 7614 for ( ; index < length; index++ ) { 7615 animation.tweens[ index ].run( 1 ); 7616 } 7617 7618 // Resolve when we played the last frame; otherwise, reject 7619 if ( gotoEnd ) { 7620 deferred.notifyWith( elem, [ animation, 1, 0 ] ); 7621 deferred.resolveWith( elem, [ animation, gotoEnd ] ); 7622 } else { 7623 deferred.rejectWith( elem, [ animation, gotoEnd ] ); 7624 } 7625 return this; 7626 } 7627 } ), 7628 props = animation.props; 7629 7630 propFilter( props, animation.opts.specialEasing ); 7631 7632 for ( ; index < length; index++ ) { 7633 result = Animation.prefilters[ index ].call( animation, elem, props, animation.opts ); 7634 if ( result ) { 7635 if ( isFunction( result.stop ) ) { 7636 jQuery._queueHooks( animation.elem, animation.opts.queue ).stop = 7637 result.stop.bind( result ); 7638 } 7639 return result; 7640 } 7641 } 7642 7643 jQuery.map( props, createTween, animation ); 7644 7645 if ( isFunction( animation.opts.start ) ) { 7646 animation.opts.start.call( elem, animation ); 7647 } 7648 7649 // Attach callbacks from options 7650 animation 7651 .progress( animation.opts.progress ) 7652 .done( animation.opts.done, animation.opts.complete ) 7653 .fail( animation.opts.fail ) 7654 .always( animation.opts.always ); 7655 7656 jQuery.fx.timer( 7657 jQuery.extend( tick, { 7658 elem: elem, 7659 anim: animation, 7660 queue: animation.opts.queue 7661 } ) 7662 ); 7663 7664 return animation; 7665} 7666 7667jQuery.Animation = jQuery.extend( Animation, { 7668 7669 tweeners: { 7670 "*": [ function( prop, value ) { 7671 var tween = this.createTween( prop, value ); 7672 adjustCSS( tween.elem, prop, rcssNum.exec( value ), tween ); 7673 return tween; 7674 } ] 7675 }, 7676 7677 tweener: function( props, callback ) { 7678 if ( isFunction( props ) ) { 7679 callback = props; 7680 props = [ "*" ]; 7681 } else { 7682 props = props.match( rnothtmlwhite ); 7683 } 7684 7685 var prop, 7686 index = 0, 7687 length = props.length; 7688 7689 for ( ; index < length; index++ ) { 7690 prop = props[ index ]; 7691 Animation.tweeners[ prop ] = Animation.tweeners[ prop ] || []; 7692 Animation.tweeners[ prop ].unshift( callback ); 7693 } 7694 }, 7695 7696 prefilters: [ defaultPrefilter ], 7697 7698 prefilter: function( callback, prepend ) { 7699 if ( prepend ) { 7700 Animation.prefilters.unshift( callback ); 7701 } else { 7702 Animation.prefilters.push( callback ); 7703 } 7704 } 7705} ); 7706 7707jQuery.speed = function( speed, easing, fn ) { 7708 var opt = speed && typeof speed === "object" ? jQuery.extend( {}, speed ) : { 7709 complete: fn || !fn && easing || 7710 isFunction( speed ) && speed, 7711 duration: speed, 7712 easing: fn && easing || easing && !isFunction( easing ) && easing 7713 }; 7714 7715 // Go to the end state if fx are off 7716 if ( jQuery.fx.off ) { 7717 opt.duration = 0; 7718 7719 } else { 7720 if ( typeof opt.duration !== "number" ) { 7721 if ( opt.duration in jQuery.fx.speeds ) { 7722 opt.duration = jQuery.fx.speeds[ opt.duration ]; 7723 7724 } else { 7725 opt.duration = jQuery.fx.speeds._default; 7726 } 7727 } 7728 } 7729 7730 // Normalize opt.queue - true/undefined/null -> "fx" 7731 if ( opt.queue == null || opt.queue === true ) { 7732 opt.queue = "fx"; 7733 } 7734 7735 // Queueing 7736 opt.old = opt.complete; 7737 7738 opt.complete = function() { 7739 if ( isFunction( opt.old ) ) { 7740 opt.old.call( this ); 7741 } 7742 7743 if ( opt.queue ) { 7744 jQuery.dequeue( this, opt.queue ); 7745 } 7746 }; 7747 7748 return opt; 7749}; 7750 7751jQuery.fn.extend( { 7752 fadeTo: function( speed, to, easing, callback ) { 7753 7754 // Show any hidden elements after setting opacity to 0 7755 return this.filter( isHiddenWithinTree ).css( "opacity", 0 ).show() 7756 7757 // Animate to the value specified 7758 .end().animate( { opacity: to }, speed, easing, callback ); 7759 }, 7760 animate: function( prop, speed, easing, callback ) { 7761 var empty = jQuery.isEmptyObject( prop ), 7762 optall = jQuery.speed( speed, easing, callback ), 7763 doAnimation = function() { 7764 7765 // Operate on a copy of prop so per-property easing won't be lost 7766 var anim = Animation( this, jQuery.extend( {}, prop ), optall ); 7767 7768 // Empty animations, or finishing resolves immediately 7769 if ( empty || dataPriv.get( this, "finish" ) ) { 7770 anim.stop( true ); 7771 } 7772 }; 7773 7774 doAnimation.finish = doAnimation; 7775 7776 return empty || optall.queue === false ? 7777 this.each( doAnimation ) : 7778 this.queue( optall.queue, doAnimation ); 7779 }, 7780 stop: function( type, clearQueue, gotoEnd ) { 7781 var stopQueue = function( hooks ) { 7782 var stop = hooks.stop; 7783 delete hooks.stop; 7784 stop( gotoEnd ); 7785 }; 7786 7787 if ( typeof type !== "string" ) { 7788 gotoEnd = clearQueue; 7789 clearQueue = type; 7790 type = undefined; 7791 } 7792 if ( clearQueue ) { 7793 this.queue( type || "fx", [] ); 7794 } 7795 7796 return this.each( function() { 7797 var dequeue = true, 7798 index = type != null && type + "queueHooks", 7799 timers = jQuery.timers, 7800 data = dataPriv.get( this ); 7801 7802 if ( index ) { 7803 if ( data[ index ] && data[ index ].stop ) { 7804 stopQueue( data[ index ] ); 7805 } 7806 } else { 7807 for ( index in data ) { 7808 if ( data[ index ] && data[ index ].stop && rrun.test( index ) ) { 7809 stopQueue( data[ index ] ); 7810 } 7811 } 7812 } 7813 7814 for ( index = timers.length; index--; ) { 7815 if ( timers[ index ].elem === this && 7816 ( type == null || timers[ index ].queue === type ) ) { 7817 7818 timers[ index ].anim.stop( gotoEnd ); 7819 dequeue = false; 7820 timers.splice( index, 1 ); 7821 } 7822 } 7823 7824 // Start the next in the queue if the last step wasn't forced. 7825 // Timers currently will call their complete callbacks, which 7826 // will dequeue but only if they were gotoEnd. 7827 if ( dequeue || !gotoEnd ) { 7828 jQuery.dequeue( this, type ); 7829 } 7830 } ); 7831 }, 7832 finish: function( type ) { 7833 if ( type !== false ) { 7834 type = type || "fx"; 7835 } 7836 return this.each( function() { 7837 var index, 7838 data = dataPriv.get( this ), 7839 queue = data[ type + "queue" ], 7840 hooks = data[ type + "queueHooks" ], 7841 timers = jQuery.timers, 7842 length = queue ? queue.length : 0; 7843 7844 // Enable finishing flag on private data 7845 data.finish = true; 7846 7847 // Empty the queue first 7848 jQuery.queue( this, type, [] ); 7849 7850 if ( hooks && hooks.stop ) { 7851 hooks.stop.call( this, true ); 7852 } 7853 7854 // Look for any active animations, and finish them 7855 for ( index = timers.length; index--; ) { 7856 if ( timers[ index ].elem === this && timers[ index ].queue === type ) { 7857 timers[ index ].anim.stop( true ); 7858 timers.splice( index, 1 ); 7859 } 7860 } 7861 7862 // Look for any animations in the old queue and finish them 7863 for ( index = 0; index < length; index++ ) { 7864 if ( queue[ index ] && queue[ index ].finish ) { 7865 queue[ index ].finish.call( this ); 7866 } 7867 } 7868 7869 // Turn off finishing flag 7870 delete data.finish; 7871 } ); 7872 } 7873} ); 7874 7875jQuery.each( [ "toggle", "show", "hide" ], function( _i, name ) { 7876 var cssFn = jQuery.fn[ name ]; 7877 jQuery.fn[ name ] = function( speed, easing, callback ) { 7878 return speed == null || typeof speed === "boolean" ? 7879 cssFn.apply( this, arguments ) : 7880 this.animate( genFx( name, true ), speed, easing, callback ); 7881 }; 7882} ); 7883 7884// Generate shortcuts for custom animations 7885jQuery.each( { 7886 slideDown: genFx( "show" ), 7887 slideUp: genFx( "hide" ), 7888 slideToggle: genFx( "toggle" ), 7889 fadeIn: { opacity: "show" }, 7890 fadeOut: { opacity: "hide" }, 7891 fadeToggle: { opacity: "toggle" } 7892}, function( name, props ) { 7893 jQuery.fn[ name ] = function( speed, easing, callback ) { 7894 return this.animate( props, speed, easing, callback ); 7895 }; 7896} ); 7897 7898jQuery.timers = []; 7899jQuery.fx.tick = function() { 7900 var timer, 7901 i = 0, 7902 timers = jQuery.timers; 7903 7904 fxNow = Date.now(); 7905 7906 for ( ; i < timers.length; i++ ) { 7907 timer = timers[ i ]; 7908 7909 // Run the timer and safely remove it when done (allowing for external removal) 7910 if ( !timer() && timers[ i ] === timer ) { 7911 timers.splice( i--, 1 ); 7912 } 7913 } 7914 7915 if ( !timers.length ) { 7916 jQuery.fx.stop(); 7917 } 7918 fxNow = undefined; 7919}; 7920 7921jQuery.fx.timer = function( timer ) { 7922 jQuery.timers.push( timer ); 7923 jQuery.fx.start(); 7924}; 7925 7926jQuery.fx.interval = 13; 7927jQuery.fx.start = function() { 7928 if ( inProgress ) { 7929 return; 7930 } 7931 7932 inProgress = true; 7933 schedule(); 7934}; 7935 7936jQuery.fx.stop = function() { 7937 inProgress = null; 7938}; 7939 7940jQuery.fx.speeds = { 7941 slow: 600, 7942 fast: 200, 7943 7944 // Default speed 7945 _default: 400 7946}; 7947 7948 7949// Based off of the plugin by Clint Helfers, with permission. 7950// https://web.archive.org/web/20100324014747/http://blindsignals.com/index.php/2009/07/jquery-delay/
vendor: 21,001 bytes, lines 7951-8819
7951jQuery.fn.delay = function( time, type ) { 7952 time = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time; 7953 type = type || "fx"; 7954 7955 return this.queue( type, function( next, hooks ) { 7956 var timeout = window.setTimeout( next, time ); 7957 hooks.stop = function() { 7958 window.clearTimeout( timeout ); 7959 }; 7960 } ); 7961}; 7962 7963 7964( function() { 7965 var input = document.createElement( "input" ), 7966 select = document.createElement( "select" ), 7967 opt = select.appendChild( document.createElement( "option" ) ); 7968 7969 input.type = "checkbox"; 7970 7971 // Support: Android <=4.3 only 7972 // Default value for a checkbox should be "on" 7973 support.checkOn = input.value !== ""; 7974 7975 // Support: IE <=11 only 7976 // Must access selectedIndex to make default options select 7977 support.optSelected = opt.selected; 7978 7979 // Support: IE <=11 only 7980 // An input loses its value after becoming a radio 7981 input = document.createElement( "input" ); 7982 input.value = "t"; 7983 input.type = "radio"; 7984 support.radioValue = input.value === "t"; 7985} )(); 7986 7987 7988var boolHook, 7989 attrHandle = jQuery.expr.attrHandle; 7990 7991jQuery.fn.extend( { 7992 attr: function( name, value ) { 7993 return access( this, jQuery.attr, name, value, arguments.length > 1 ); 7994 }, 7995 7996 removeAttr: function( name ) { 7997 return this.each( function() { 7998 jQuery.removeAttr( this, name ); 7999 } ); 8000 } 8001} ); 8002 8003jQuery.extend( { 8004 attr: function( elem, name, value ) { 8005 var ret, hooks, 8006 nType = elem.nodeType; 8007 8008 // Don't get/set attributes on text, comment and attribute nodes 8009 if ( nType === 3 || nType === 8 || nType === 2 ) { 8010 return; 8011 } 8012 8013 // Fallback to prop when attributes are not supported 8014 if ( typeof elem.getAttribute === "undefined" ) { 8015 return jQuery.prop( elem, name, value ); 8016 } 8017 8018 // Attribute hooks are determined by the lowercase version 8019 // Grab necessary hook if one is defined 8020 if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) { 8021 hooks = jQuery.attrHooks[ name.toLowerCase() ] || 8022 ( jQuery.expr.match.bool.test( name ) ? boolHook : undefined ); 8023 } 8024 8025 if ( value !== undefined ) { 8026 if ( value === null ) { 8027 jQuery.removeAttr( elem, name ); 8028 return; 8029 } 8030 8031 if ( hooks && "set" in hooks && 8032 ( ret = hooks.set( elem, value, name ) ) !== undefined ) { 8033 return ret; 8034 } 8035 8036 elem.setAttribute( name, value + "" ); 8037 return value; 8038 } 8039 8040 if ( hooks && "get" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) { 8041 return ret; 8042 } 8043 8044 ret = jQuery.find.attr( elem, name ); 8045 8046 // Non-existent attributes return null, we normalize to undefined 8047 return ret == null ? undefined : ret; 8048 }, 8049 8050 attrHooks: { 8051 type: { 8052 set: function( elem, value ) { 8053 if ( !support.radioValue && value === "radio" && 8054 nodeName( elem, "input" ) ) { 8055 var val = elem.value; 8056 elem.setAttribute( "type", value ); 8057 if ( val ) { 8058 elem.value = val; 8059 } 8060 return value; 8061 } 8062 } 8063 } 8064 }, 8065 8066 removeAttr: function( elem, value ) { 8067 var name, 8068 i = 0, 8069 8070 // Attribute names can contain non-HTML whitespace characters 8071 // https://html.spec.whatwg.org/multipage/syntax.html#attributes-2 8072 attrNames = value && value.match( rnothtmlwhite ); 8073 8074 if ( attrNames && elem.nodeType === 1 ) { 8075 while ( ( name = attrNames[ i++ ] ) ) { 8076 elem.removeAttribute( name ); 8077 } 8078 } 8079 } 8080} ); 8081 8082// Hooks for boolean attributes 8083boolHook = { 8084 set: function( elem, value, name ) { 8085 if ( value === false ) { 8086 8087 // Remove boolean attributes when set to false 8088 jQuery.removeAttr( elem, name ); 8089 } else { 8090 elem.setAttribute( name, name ); 8091 } 8092 return name; 8093 } 8094}; 8095 8096jQuery.each( jQuery.expr.match.bool.source.match( /\w+/g ), function( _i, name ) { 8097 var getter = attrHandle[ name ] || jQuery.find.attr; 8098 8099 attrHandle[ name ] = function( elem, name, isXML ) { 8100 var ret, handle, 8101 lowercaseName = name.toLowerCase(); 8102 8103 if ( !isXML ) { 8104 8105 // Avoid an infinite loop by temporarily removing this function from the getter 8106 handle = attrHandle[ lowercaseName ]; 8107 attrHandle[ lowercaseName ] = ret; 8108 ret = getter( elem, name, isXML ) != null ? 8109 lowercaseName : 8110 null; 8111 attrHandle[ lowercaseName ] = handle; 8112 } 8113 return ret; 8114 }; 8115} ); 8116 8117 8118 8119 8120var rfocusable = /^(?:input|select|textarea|button)$/i, 8121 rclickable = /^(?:a|area)$/i; 8122 8123jQuery.fn.extend( { 8124 prop: function( name, value ) { 8125 return access( this, jQuery.prop, name, value, arguments.length > 1 ); 8126 }, 8127 8128 removeProp: function( name ) { 8129 return this.each( function() { 8130 delete this[ jQuery.propFix[ name ] || name ]; 8131 } ); 8132 } 8133} ); 8134 8135jQuery.extend( { 8136 prop: function( elem, name, value ) { 8137 var ret, hooks, 8138 nType = elem.nodeType; 8139 8140 // Don't get/set properties on text, comment and attribute nodes 8141 if ( nType === 3 || nType === 8 || nType === 2 ) { 8142 return; 8143 } 8144 8145 if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) { 8146 8147 // Fix name and attach hooks 8148 name = jQuery.propFix[ name ] || name; 8149 hooks = jQuery.propHooks[ name ]; 8150 } 8151 8152 if ( value !== undefined ) { 8153 if ( hooks && "set" in hooks && 8154 ( ret = hooks.set( elem, value, name ) ) !== undefined ) { 8155 return ret; 8156 } 8157 8158 return ( elem[ name ] = value ); 8159 } 8160 8161 if ( hooks && "get" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) { 8162 return ret; 8163 } 8164 8165 return elem[ name ]; 8166 }, 8167 8168 propHooks: { 8169 tabIndex: { 8170 get: function( elem ) { 8171 8172 // Support: IE <=9 - 11 only 8173 // elem.tabIndex doesn't always return the 8174 // correct value when it hasn't been explicitly set 8175 // https://web.archive.org/web/20141116233347/http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/ 8176 // Use proper attribute retrieval(#12072) 8177 var tabindex = jQuery.find.attr( elem, "tabindex" ); 8178 8179 if ( tabindex ) { 8180 return parseInt( tabindex, 10 ); 8181 } 8182 8183 if ( 8184 rfocusable.test( elem.nodeName ) || 8185 rclickable.test( elem.nodeName ) && 8186 elem.href 8187 ) { 8188 return 0; 8189 } 8190 8191 return -1; 8192 } 8193 } 8194 }, 8195 8196 propFix: { 8197 "for": "htmlFor", 8198 "class": "className" 8199 } 8200} ); 8201 8202// Support: IE <=11 only 8203// Accessing the selectedIndex property 8204// forces the browser to respect setting selected 8205// on the option 8206// The getter ensures a default option is selected 8207// when in an optgroup 8208// eslint rule "no-unused-expressions" is disabled for this code 8209// since it considers such accessions noop 8210if ( !support.optSelected ) { 8211 jQuery.propHooks.selected = { 8212 get: function( elem ) { 8213 8214 /* eslint no-unused-expressions: "off" */ 8215 8216 var parent = elem.parentNode; 8217 if ( parent && parent.parentNode ) { 8218 parent.parentNode.selectedIndex; 8219 } 8220 return null; 8221 }, 8222 set: function( elem ) { 8223 8224 /* eslint no-unused-expressions: "off" */ 8225 8226 var parent = elem.parentNode; 8227 if ( parent ) { 8228 parent.selectedIndex; 8229 8230 if ( parent.parentNode ) { 8231 parent.parentNode.selectedIndex; 8232 } 8233 } 8234 } 8235 }; 8236} 8237 8238jQuery.each( [ 8239 "tabIndex", 8240 "readOnly", 8241 "maxLength", 8242 "cellSpacing", 8243 "cellPadding", 8244 "rowSpan", 8245 "colSpan", 8246 "useMap", 8247 "frameBorder", 8248 "contentEditable" 8249], function() { 8250 jQuery.propFix[ this.toLowerCase() ] = this; 8251} ); 8252 8253 8254 8255 8256 // Strip and collapse whitespace according to HTML spec 8257 // https://infra.spec.whatwg.org/#strip-and-collapse-ascii-whitespace 8258 function stripAndCollapse( value ) { 8259 var tokens = value.match( rnothtmlwhite ) || []; 8260 return tokens.join( " " ); 8261 } 8262 8263 8264function getClass( elem ) { 8265 return elem.getAttribute && elem.getAttribute( "class" ) || ""; 8266} 8267 8268function classesToArray( value ) { 8269 if ( Array.isArray( value ) ) { 8270 return value; 8271 } 8272 if ( typeof value === "string" ) { 8273 return value.match( rnothtmlwhite ) || []; 8274 } 8275 return []; 8276} 8277 8278jQuery.fn.extend( { 8279 addClass: function( value ) { 8280 var classes, elem, cur, curValue, clazz, j, finalValue, 8281 i = 0; 8282 8283 if ( isFunction( value ) ) { 8284 return this.each( function( j ) { 8285 jQuery( this ).addClass( value.call( this, j, getClass( this ) ) ); 8286 } ); 8287 } 8288 8289 classes = classesToArray( value ); 8290 8291 if ( classes.length ) { 8292 while ( ( elem = this[ i++ ] ) ) { 8293 curValue = getClass( elem ); 8294 cur = elem.nodeType === 1 && ( " " + stripAndCollapse( curValue ) + " " ); 8295 8296 if ( cur ) { 8297 j = 0; 8298 while ( ( clazz = classes[ j++ ] ) ) { 8299 if ( cur.indexOf( " " + clazz + " " ) < 0 ) { 8300 cur += clazz + " "; 8301 } 8302 } 8303 8304 // Only assign if different to avoid unneeded rendering. 8305 finalValue = stripAndCollapse( cur ); 8306 if ( curValue !== finalValue ) { 8307 elem.setAttribute( "class", finalValue ); 8308 } 8309 } 8310 } 8311 } 8312 8313 return this; 8314 }, 8315 8316 removeClass: function( value ) { 8317 var classes, elem, cur, curValue, clazz, j, finalValue, 8318 i = 0; 8319 8320 if ( isFunction( value ) ) { 8321 return this.each( function( j ) { 8322 jQuery( this ).removeClass( value.call( this, j, getClass( this ) ) ); 8323 } ); 8324 } 8325 8326 if ( !arguments.length ) { 8327 return this.attr( "class", "" ); 8328 } 8329 8330 classes = classesToArray( value ); 8331 8332 if ( classes.length ) { 8333 while ( ( elem = this[ i++ ] ) ) { 8334 curValue = getClass( elem ); 8335 8336 // This expression is here for better compressibility (see addClass) 8337 cur = elem.nodeType === 1 && ( " " + stripAndCollapse( curValue ) + " " ); 8338 8339 if ( cur ) { 8340 j = 0; 8341 while ( ( clazz = classes[ j++ ] ) ) { 8342 8343 // Remove *all* instances 8344 while ( cur.indexOf( " " + clazz + " " ) > -1 ) { 8345 cur = cur.replace( " " + clazz + " ", " " ); 8346 } 8347 } 8348 8349 // Only assign if different to avoid unneeded rendering. 8350 finalValue = stripAndCollapse( cur ); 8351 if ( curValue !== finalValue ) { 8352 elem.setAttribute( "class", finalValue ); 8353 } 8354 } 8355 } 8356 } 8357 8358 return this; 8359 }, 8360 8361 toggleClass: function( value, stateVal ) { 8362 var type = typeof value, 8363 isValidValue = type === "string" || Array.isArray( value ); 8364 8365 if ( typeof stateVal === "boolean" && isValidValue ) { 8366 return stateVal ? this.addClass( value ) : this.removeClass( value ); 8367 } 8368 8369 if ( isFunction( value ) ) { 8370 return this.each( function( i ) { 8371 jQuery( this ).toggleClass( 8372 value.call( this, i, getClass( this ), stateVal ), 8373 stateVal 8374 ); 8375 } ); 8376 } 8377 8378 return this.each( function() { 8379 var className, i, self, classNames; 8380 8381 if ( isValidValue ) { 8382 8383 // Toggle individual class names 8384 i = 0; 8385 self = jQuery( this ); 8386 classNames = classesToArray( value ); 8387 8388 while ( ( className = classNames[ i++ ] ) ) { 8389 8390 // Check each className given, space separated list 8391 if ( self.hasClass( className ) ) { 8392 self.removeClass( className ); 8393 } else { 8394 self.addClass( className ); 8395 } 8396 } 8397 8398 // Toggle whole class name 8399 } else if ( value === undefined || type === "boolean" ) { 8400 className = getClass( this ); 8401 if ( className ) { 8402 8403 // Store className if set 8404 dataPriv.set( this, "__className__", className ); 8405 } 8406 8407 // If the element has a class name or if we're passed `false`, 8408 // then remove the whole classname (if there was one, the above saved it). 8409 // Otherwise bring back whatever was previously saved (if anything), 8410 // falling back to the empty string if nothing was stored. 8411 if ( this.setAttribute ) { 8412 this.setAttribute( "class", 8413 className || value === false ? 8414 "" : 8415 dataPriv.get( this, "__className__" ) || "" 8416 ); 8417 } 8418 } 8419 } ); 8420 }, 8421 8422 hasClass: function( selector ) { 8423 var className, elem, 8424 i = 0; 8425 8426 className = " " + selector + " "; 8427 while ( ( elem = this[ i++ ] ) ) { 8428 if ( elem.nodeType === 1 && 8429 ( " " + stripAndCollapse( getClass( elem ) ) + " " ).indexOf( className ) > -1 ) { 8430 return true; 8431 } 8432 } 8433 8434 return false; 8435 } 8436} ); 8437 8438 8439 8440 8441var rreturn = /\r/g; 8442 8443jQuery.fn.extend( { 8444 val: function( value ) { 8445 var hooks, ret, valueIsFunction, 8446 elem = this[ 0 ]; 8447 8448 if ( !arguments.length ) { 8449 if ( elem ) { 8450 hooks = jQuery.valHooks[ elem.type ] || 8451 jQuery.valHooks[ elem.nodeName.toLowerCase() ]; 8452 8453 if ( hooks && 8454 "get" in hooks && 8455 ( ret = hooks.get( elem, "value" ) ) !== undefined 8456 ) { 8457 return ret; 8458 } 8459 8460 ret = elem.value; 8461 8462 // Handle most common string cases 8463 if ( typeof ret === "string" ) { 8464 return ret.replace( rreturn, "" ); 8465 } 8466 8467 // Handle cases where value is null/undef or number 8468 return ret == null ? "" : ret; 8469 } 8470 8471 return; 8472 } 8473 8474 valueIsFunction = isFunction( value ); 8475 8476 return this.each( function( i ) { 8477 var val; 8478 8479 if ( this.nodeType !== 1 ) { 8480 return; 8481 } 8482 8483 if ( valueIsFunction ) { 8484 val = value.call( this, i, jQuery( this ).val() ); 8485 } else { 8486 val = value; 8487 } 8488 8489 // Treat null/undefined as ""; convert numbers to string 8490 if ( val == null ) { 8491 val = ""; 8492 8493 } else if ( typeof val === "number" ) { 8494 val += ""; 8495 8496 } else if ( Array.isArray( val ) ) { 8497 val = jQuery.map( val, function( value ) { 8498 return value == null ? "" : value + ""; 8499 } ); 8500 } 8501 8502 hooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ]; 8503 8504 // If set returns undefined, fall back to normal setting 8505 if ( !hooks || !( "set" in hooks ) || hooks.set( this, val, "value" ) === undefined ) { 8506 this.value = val; 8507 } 8508 } ); 8509 } 8510} ); 8511 8512jQuery.extend( { 8513 valHooks: { 8514 option: { 8515 get: function( elem ) { 8516 8517 var val = jQuery.find.attr( elem, "value" ); 8518 return val != null ? 8519 val : 8520 8521 // Support: IE <=10 - 11 only 8522 // option.text throws exceptions (#14686, #14858) 8523 // Strip and collapse whitespace 8524 // https://html.spec.whatwg.org/#strip-and-collapse-whitespace 8525 stripAndCollapse( jQuery.text( elem ) ); 8526 } 8527 }, 8528 select: { 8529 get: function( elem ) { 8530 var value, option, i, 8531 options = elem.options, 8532 index = elem.selectedIndex, 8533 one = elem.type === "select-one", 8534 values = one ? null : [], 8535 max = one ? index + 1 : options.length; 8536 8537 if ( index < 0 ) { 8538 i = max; 8539 8540 } else { 8541 i = one ? index : 0; 8542 } 8543 8544 // Loop through all the selected options 8545 for ( ; i < max; i++ ) { 8546 option = options[ i ]; 8547 8548 // Support: IE <=9 only 8549 // IE8-9 doesn't update selected after form reset (#2551) 8550 if ( ( option.selected || i === index ) && 8551 8552 // Don't return options that are disabled or in a disabled optgroup 8553 !option.disabled && 8554 ( !option.parentNode.disabled || 8555 !nodeName( option.parentNode, "optgroup" ) ) ) { 8556 8557 // Get the specific value for the option 8558 value = jQuery( option ).val(); 8559 8560 // We don't need an array for one selects 8561 if ( one ) { 8562 return value; 8563 } 8564 8565 // Multi-Selects return an array 8566 values.push( value ); 8567 } 8568 } 8569 8570 return values; 8571 }, 8572 8573 set: function( elem, value ) { 8574 var optionSet, option, 8575 options = elem.options, 8576 values = jQuery.makeArray( value ), 8577 i = options.length; 8578 8579 while ( i-- ) { 8580 option = options[ i ]; 8581 8582 /* eslint-disable no-cond-assign */ 8583 8584 if ( option.selected = 8585 jQuery.inArray( jQuery.valHooks.option.get( option ), values ) > -1 8586 ) { 8587 optionSet = true; 8588 } 8589 8590 /* eslint-enable no-cond-assign */ 8591 } 8592 8593 // Force browsers to behave consistently when non-matching value is set 8594 if ( !optionSet ) { 8595 elem.selectedIndex = -1; 8596 } 8597 return values; 8598 } 8599 } 8600 } 8601} ); 8602 8603// Radios and checkboxes getter/setter 8604jQuery.each( [ "radio", "checkbox" ], function() { 8605 jQuery.valHooks[ this ] = { 8606 set: function( elem, value ) { 8607 if ( Array.isArray( value ) ) { 8608 return ( elem.checked = jQuery.inArray( jQuery( elem ).val(), value ) > -1 ); 8609 } 8610 } 8611 }; 8612 if ( !support.checkOn ) { 8613 jQuery.valHooks[ this ].get = function( elem ) { 8614 return elem.getAttribute( "value" ) === null ? "on" : elem.value; 8615 }; 8616 } 8617} ); 8618 8619 8620 8621 8622// Return jQuery for attributes-only inclusion 8623 8624 8625support.focusin = "onfocusin" in window; 8626 8627 8628var rfocusMorph = /^(?:focusinfocus|focusoutblur)$/, 8629 stopPropagationCallback = function( e ) { 8630 e.stopPropagation(); 8631 }; 8632 8633jQuery.extend( jQuery.event, { 8634 8635 trigger: function( event, data, elem, onlyHandlers ) { 8636 8637 var i, cur, tmp, bubbleType, ontype, handle, special, lastElement, 8638 eventPath = [ elem || document ], 8639 type = hasOwn.call( event, "type" ) ? event.type : event, 8640 namespaces = hasOwn.call( event, "namespace" ) ? event.namespace.split( "." ) : []; 8641 8642 cur = lastElement = tmp = elem = elem || document; 8643 8644 // Don't do events on text and comment nodes 8645 if ( elem.nodeType === 3 || elem.nodeType === 8 ) { 8646 return; 8647 } 8648 8649 // focus/blur morphs to focusin/out; ensure we're not firing them right now 8650 if ( rfocusMorph.test( type + jQuery.event.triggered ) ) { 8651 return; 8652 } 8653 8654 if ( type.indexOf( "." ) > -1 ) { 8655 8656 // Namespaced trigger; create a regexp to match event type in handle() 8657 namespaces = type.split( "." ); 8658 type = namespaces.shift(); 8659 namespaces.sort(); 8660 } 8661 ontype = type.indexOf( ":" ) < 0 && "on" + type; 8662 8663 // Caller can pass in a jQuery.Event object, Object, or just an event type string 8664 event = event[ jQuery.expando ] ? 8665 event : 8666 new jQuery.Event( type, typeof event === "object" && event ); 8667 8668 // Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true) 8669 event.isTrigger = onlyHandlers ? 2 : 3; 8670 event.namespace = namespaces.join( "." ); 8671 event.rnamespace = event.namespace ? 8672 new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" ) : 8673 null; 8674 8675 // Clean up the event in case it is being reused 8676 event.result = undefined; 8677 if ( !event.target ) { 8678 event.target = elem; 8679 } 8680 8681 // Clone any incoming data and prepend the event, creating the handler arg list 8682 data = data == null ? 8683 [ event ] : 8684 jQuery.makeArray( data, [ event ] ); 8685 8686 // Allow special events to draw outside the lines 8687 special = jQuery.event.special[ type ] || {}; 8688 if ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) { 8689 return; 8690 } 8691 8692 // Determine event propagation path in advance, per W3C events spec (#9951) 8693 // Bubble up to document, then to window; watch for a global ownerDocument var (#9724) 8694 if ( !onlyHandlers && !special.noBubble && !isWindow( elem ) ) { 8695 8696 bubbleType = special.delegateType || type; 8697 if ( !rfocusMorph.test( bubbleType + type ) ) { 8698 cur = cur.parentNode; 8699 } 8700 for ( ; cur; cur = cur.parentNode ) { 8701 eventPath.push( cur ); 8702 tmp = cur; 8703 } 8704 8705 // Only add window if we got to document (e.g., not plain obj or detached DOM) 8706 if ( tmp === ( elem.ownerDocument || document ) ) { 8707 eventPath.push( tmp.defaultView || tmp.parentWindow || window ); 8708 } 8709 } 8710 8711 // Fire handlers on the event path 8712 i = 0; 8713 while ( ( cur = eventPath[ i++ ] ) && !event.isPropagationStopped() ) { 8714 lastElement = cur; 8715 event.type = i > 1 ? 8716 bubbleType : 8717 special.bindType || type; 8718 8719 // jQuery handler 8720 handle = ( dataPriv.get( cur, "events" ) || Object.create( null ) )[ event.type ] && 8721 dataPriv.get( cur, "handle" ); 8722 if ( handle ) { 8723 handle.apply( cur, data ); 8724 } 8725 8726 // Native handler 8727 handle = ontype && cur[ ontype ]; 8728 if ( handle && handle.apply && acceptData( cur ) ) { 8729 event.result = handle.apply( cur, data ); 8730 if ( event.result === false ) { 8731 event.preventDefault(); 8732 } 8733 } 8734 } 8735 event.type = type; 8736 8737 // If nobody prevented the default action, do it now 8738 if ( !onlyHandlers && !event.isDefaultPrevented() ) { 8739 8740 if ( ( !special._default || 8741 special._default.apply( eventPath.pop(), data ) === false ) && 8742 acceptData( elem ) ) { 8743 8744 // Call a native DOM method on the target with the same name as the event. 8745 // Don't do default actions on window, that's where global variables be (#6170) 8746 if ( ontype && isFunction( elem[ type ] ) && !isWindow( elem ) ) { 8747 8748 // Don't re-trigger an onFOO event when we call its FOO() method 8749 tmp = elem[ ontype ]; 8750 8751 if ( tmp ) { 8752 elem[ ontype ] = null; 8753 } 8754 8755 // Prevent re-triggering of the same event, since we already bubbled it above 8756 jQuery.event.triggered = type; 8757 8758 if ( event.isPropagationStopped() ) { 8759 lastElement.addEventListener( type, stopPropagationCallback ); 8760 } 8761 8762 elem[ type ](); 8763 8764 if ( event.isPropagationStopped() ) { 8765 lastElement.removeEventListener( type, stopPropagationCallback ); 8766 } 8767 8768 jQuery.event.triggered = undefined; 8769 8770 if ( tmp ) { 8771 elem[ ontype ] = tmp; 8772 } 8773 } 8774 } 8775 } 8776 8777 return event.result; 8778 }, 8779 8780 // Piggyback on a donor event to simulate a different one 8781 // Used only for `focus(in | out)` events 8782 simulate: function( type, elem, event ) { 8783 var e = jQuery.extend( 8784 new jQuery.Event(), 8785 event, 8786 { 8787 type: type, 8788 isSimulated: true 8789 } 8790 ); 8791 8792 jQuery.event.trigger( e, null, elem ); 8793 } 8794 8795} ); 8796 8797jQuery.fn.extend( { 8798 8799 trigger: function( type, data ) { 8800 return this.each( function() { 8801 jQuery.event.trigger( type, data, this ); 8802 } ); 8803 }, 8804 triggerHandler: function( type, data ) { 8805 var elem = this[ 0 ]; 8806 if ( elem ) { 8807 return jQuery.event.trigger( type, data, elem, true ); 8808 } 8809 } 8810} ); 8811 8812 8813// Support: Firefox <=44 8814// Firefox doesn't have focus(in | out) events 8815// Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787 8816// 8817// Support: Chrome <=48 - 49, Safari <=9.0 - 9.1 8818// focus(in | out) events fire after focus & blur events, 8819// which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order
vendor: 54,284 bytes, lines 8820-10882
8820// Related ticket - https://bugs.chromium.org/p/chromium/issues/detail?id=449857 8821if ( !support.focusin ) { 8822 jQuery.each( { focus: "focusin", blur: "focusout" }, function( orig, fix ) { 8823 8824 // Attach a single capturing handler on the document while someone wants focusin/focusout 8825 var handler = function( event ) { 8826 jQuery.event.simulate( fix, event.target, jQuery.event.fix( event ) ); 8827 }; 8828 8829 jQuery.event.special[ fix ] = { 8830 setup: function() { 8831 8832 // Handle: regular nodes (via `this.ownerDocument`), window 8833 // (via `this.document`) & document (via `this`). 8834 var doc = this.ownerDocument || this.document || this, 8835 attaches = dataPriv.access( doc, fix ); 8836 8837 if ( !attaches ) { 8838 doc.addEventListener( orig, handler, true ); 8839 } 8840 dataPriv.access( doc, fix, ( attaches || 0 ) + 1 ); 8841 }, 8842 teardown: function() { 8843 var doc = this.ownerDocument || this.document || this, 8844 attaches = dataPriv.access( doc, fix ) - 1; 8845 8846 if ( !attaches ) { 8847 doc.removeEventListener( orig, handler, true ); 8848 dataPriv.remove( doc, fix ); 8849 8850 } else { 8851 dataPriv.access( doc, fix, attaches ); 8852 } 8853 } 8854 }; 8855 } ); 8856} 8857var location = window.location; 8858 8859var nonce = { guid: Date.now() }; 8860 8861var rquery = ( /\?/ ); 8862 8863 8864 8865// Cross-browser xml parsing 8866jQuery.parseXML = function( data ) { 8867 var xml, parserErrorElem; 8868 if ( !data || typeof data !== "string" ) { 8869 return null; 8870 } 8871 8872 // Support: IE 9 - 11 only 8873 // IE throws on parseFromString with invalid input. 8874 try { 8875 xml = ( new window.DOMParser() ).parseFromString( data, "text/xml" ); 8876 } catch ( e ) {} 8877 8878 parserErrorElem = xml && xml.getElementsByTagName( "parsererror" )[ 0 ]; 8879 if ( !xml || parserErrorElem ) { 8880 jQuery.error( "Invalid XML: " + ( 8881 parserErrorElem ? 8882 jQuery.map( parserErrorElem.childNodes, function( el ) { 8883 return el.textContent; 8884 } ).join( "\n" ) : 8885 data 8886 ) ); 8887 } 8888 return xml; 8889}; 8890 8891 8892var 8893 rbracket = /\[\]$/, 8894 rCRLF = /\r?\n/g, 8895 rsubmitterTypes = /^(?:submit|button|image|reset|file)$/i, 8896 rsubmittable = /^(?:input|select|textarea|keygen)/i; 8897 8898function buildParams( prefix, obj, traditional, add ) { 8899 var name; 8900 8901 if ( Array.isArray( obj ) ) { 8902 8903 // Serialize array item. 8904 jQuery.each( obj, function( i, v ) { 8905 if ( traditional || rbracket.test( prefix ) ) { 8906 8907 // Treat each array item as a scalar. 8908 add( prefix, v ); 8909 8910 } else { 8911 8912 // Item is non-scalar (array or object), encode its numeric index. 8913 buildParams( 8914 prefix + "[" + ( typeof v === "object" && v != null ? i : "" ) + "]", 8915 v, 8916 traditional, 8917 add 8918 ); 8919 } 8920 } ); 8921 8922 } else if ( !traditional && toType( obj ) === "object" ) { 8923 8924 // Serialize object item. 8925 for ( name in obj ) { 8926 buildParams( prefix + "[" + name + "]", obj[ name ], traditional, add ); 8927 } 8928 8929 } else { 8930 8931 // Serialize scalar item. 8932 add( prefix, obj ); 8933 } 8934} 8935 8936// Serialize an array of form elements or a set of 8937// key/values into a query string 8938jQuery.param = function( a, traditional ) { 8939 var prefix, 8940 s = [], 8941 add = function( key, valueOrFunction ) { 8942 8943 // If value is a function, invoke it and use its return value 8944 var value = isFunction( valueOrFunction ) ? 8945 valueOrFunction() : 8946 valueOrFunction; 8947 8948 s[ s.length ] = encodeURIComponent( key ) + "=" + 8949 encodeURIComponent( value == null ? "" : value ); 8950 }; 8951 8952 if ( a == null ) { 8953 return ""; 8954 } 8955 8956 // If an array was passed in, assume that it is an array of form elements. 8957 if ( Array.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) { 8958 8959 // Serialize the form elements 8960 jQuery.each( a, function() { 8961 add( this.name, this.value ); 8962 } ); 8963 8964 } else { 8965 8966 // If traditional, encode the "old" way (the way 1.3.2 or older 8967 // did it), otherwise encode params recursively. 8968 for ( prefix in a ) { 8969 buildParams( prefix, a[ prefix ], traditional, add ); 8970 } 8971 } 8972 8973 // Return the resulting serialization 8974 return s.join( "&" ); 8975}; 8976 8977jQuery.fn.extend( { 8978 serialize: function() { 8979 return jQuery.param( this.serializeArray() ); 8980 }, 8981 serializeArray: function() { 8982 return this.map( function() { 8983 8984 // Can add propHook for "elements" to filter or add form elements 8985 var elements = jQuery.prop( this, "elements" ); 8986 return elements ? jQuery.makeArray( elements ) : this; 8987 } ).filter( function() { 8988 var type = this.type; 8989 8990 // Use .is( ":disabled" ) so that fieldset[disabled] works 8991 return this.name && !jQuery( this ).is( ":disabled" ) && 8992 rsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) && 8993 ( this.checked || !rcheckableType.test( type ) ); 8994 } ).map( function( _i, elem ) { 8995 var val = jQuery( this ).val(); 8996 8997 if ( val == null ) { 8998 return null; 8999 } 9000 9001 if ( Array.isArray( val ) ) { 9002 return jQuery.map( val, function( val ) { 9003 return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) }; 9004 } ); 9005 } 9006 9007 return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) }; 9008 } ).get(); 9009 } 9010} ); 9011 9012 9013var 9014 r20 = /%20/g, 9015 rhash = /#.*$/, 9016 rantiCache = /([?&])_=[^&]*/, 9017 rheaders = /^(.*?):[ \t]*([^\r\n]*)$/mg, 9018 9019 // #7653, #8125, #8152: local protocol detection 9020 rlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/, 9021 rnoContent = /^(?:GET|HEAD)$/, 9022 rprotocol = /^\/\//, 9023 9024 /* Prefilters 9025 * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example) 9026 * 2) These are called: 9027 * - BEFORE asking for a transport 9028 * - AFTER param serialization (s.data is a string if s.processData is true) 9029 * 3) key is the dataType 9030 * 4) the catchall symbol "*" can be used 9031 * 5) execution will start with transport dataType and THEN continue down to "*" if needed 9032 */ 9033 prefilters = {}, 9034 9035 /* Transports bindings 9036 * 1) key is the dataType 9037 * 2) the catchall symbol "*" can be used 9038 * 3) selection will start with transport dataType and THEN go to "*" if needed 9039 */ 9040 transports = {}, 9041 9042 // Avoid comment-prolog char sequence (#10098); must appease lint and evade compression 9043 allTypes = "*/".concat( "*" ), 9044 9045 // Anchor tag for parsing the document origin 9046 originAnchor = document.createElement( "a" ); 9047 9048originAnchor.href = location.href; 9049 9050// Base "constructor" for jQuery.ajaxPrefilter and jQuery.ajaxTransport 9051function addToPrefiltersOrTransports( structure ) { 9052 9053 // dataTypeExpression is optional and defaults to "*" 9054 return function( dataTypeExpression, func ) { 9055 9056 if ( typeof dataTypeExpression !== "string" ) { 9057 func = dataTypeExpression; 9058 dataTypeExpression = "*"; 9059 } 9060 9061 var dataType, 9062 i = 0, 9063 dataTypes = dataTypeExpression.toLowerCase().match( rnothtmlwhite ) || []; 9064 9065 if ( isFunction( func ) ) { 9066 9067 // For each dataType in the dataTypeExpression 9068 while ( ( dataType = dataTypes[ i++ ] ) ) { 9069 9070 // Prepend if requested 9071 if ( dataType[ 0 ] === "+" ) { 9072 dataType = dataType.slice( 1 ) || "*"; 9073 ( structure[ dataType ] = structure[ dataType ] || [] ).unshift( func ); 9074 9075 // Otherwise append 9076 } else { 9077 ( structure[ dataType ] = structure[ dataType ] || [] ).push( func ); 9078 } 9079 } 9080 } 9081 }; 9082} 9083 9084// Base inspection function for prefilters and transports 9085function inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) { 9086 9087 var inspected = {}, 9088 seekingTransport = ( structure === transports ); 9089 9090 function inspect( dataType ) { 9091 var selected; 9092 inspected[ dataType ] = true; 9093 jQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) { 9094 var dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR ); 9095 if ( typeof dataTypeOrTransport === "string" && 9096 !seekingTransport && !inspected[ dataTypeOrTransport ] ) { 9097 9098 options.dataTypes.unshift( dataTypeOrTransport ); 9099 inspect( dataTypeOrTransport ); 9100 return false; 9101 } else if ( seekingTransport ) { 9102 return !( selected = dataTypeOrTransport ); 9103 } 9104 } ); 9105 return selected; 9106 } 9107 9108 return inspect( options.dataTypes[ 0 ] ) || !inspected[ "*" ] && inspect( "*" ); 9109} 9110 9111// A special extend for ajax options 9112// that takes "flat" options (not to be deep extended) 9113// Fixes #9887 9114function ajaxExtend( target, src ) { 9115 var key, deep, 9116 flatOptions = jQuery.ajaxSettings.flatOptions || {}; 9117 9118 for ( key in src ) { 9119 if ( src[ key ] !== undefined ) { 9120 ( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ]; 9121 } 9122 } 9123 if ( deep ) { 9124 jQuery.extend( true, target, deep ); 9125 } 9126 9127 return target; 9128} 9129 9130/* Handles responses to an ajax request: 9131 * - finds the right dataType (mediates between content-type and expected dataType) 9132 * - returns the corresponding response 9133 */ 9134function ajaxHandleResponses( s, jqXHR, responses ) { 9135 9136 var ct, type, finalDataType, firstDataType, 9137 contents = s.contents, 9138 dataTypes = s.dataTypes; 9139 9140 // Remove auto dataType and get content-type in the process 9141 while ( dataTypes[ 0 ] === "*" ) { 9142 dataTypes.shift(); 9143 if ( ct === undefined ) { 9144 ct = s.mimeType || jqXHR.getResponseHeader( "Content-Type" ); 9145 } 9146 } 9147 9148 // Check if we're dealing with a known content-type 9149 if ( ct ) { 9150 for ( type in contents ) { 9151 if ( contents[ type ] && contents[ type ].test( ct ) ) { 9152 dataTypes.unshift( type ); 9153 break; 9154 } 9155 } 9156 } 9157 9158 // Check to see if we have a response for the expected dataType 9159 if ( dataTypes[ 0 ] in responses ) { 9160 finalDataType = dataTypes[ 0 ]; 9161 } else { 9162 9163 // Try convertible dataTypes 9164 for ( type in responses ) { 9165 if ( !dataTypes[ 0 ] || s.converters[ type + " " + dataTypes[ 0 ] ] ) { 9166 finalDataType = type; 9167 break; 9168 } 9169 if ( !firstDataType ) { 9170 firstDataType = type; 9171 } 9172 } 9173 9174 // Or just use first one 9175 finalDataType = finalDataType || firstDataType; 9176 } 9177 9178 // If we found a dataType 9179 // We add the dataType to the list if needed 9180 // and return the corresponding response 9181 if ( finalDataType ) { 9182 if ( finalDataType !== dataTypes[ 0 ] ) { 9183 dataTypes.unshift( finalDataType ); 9184 } 9185 return responses[ finalDataType ]; 9186 } 9187} 9188 9189/* Chain conversions given the request and the original response 9190 * Also sets the responseXXX fields on the jqXHR instance 9191 */ 9192function ajaxConvert( s, response, jqXHR, isSuccess ) { 9193 var conv2, current, conv, tmp, prev, 9194 converters = {}, 9195 9196 // Work with a copy of dataTypes in case we need to modify it for conversion 9197 dataTypes = s.dataTypes.slice(); 9198 9199 // Create converters map with lowercased keys 9200 if ( dataTypes[ 1 ] ) { 9201 for ( conv in s.converters ) { 9202 converters[ conv.toLowerCase() ] = s.converters[ conv ]; 9203 } 9204 } 9205 9206 current = dataTypes.shift(); 9207 9208 // Convert to each sequential dataType 9209 while ( current ) { 9210 9211 if ( s.responseFields[ current ] ) { 9212 jqXHR[ s.responseFields[ current ] ] = response; 9213 } 9214 9215 // Apply the dataFilter if provided 9216 if ( !prev && isSuccess && s.dataFilter ) { 9217 response = s.dataFilter( response, s.dataType ); 9218 } 9219 9220 prev = current; 9221 current = dataTypes.shift(); 9222 9223 if ( current ) { 9224 9225 // There's only work to do if current dataType is non-auto 9226 if ( current === "*" ) { 9227 9228 current = prev; 9229 9230 // Convert response if prev dataType is non-auto and differs from current 9231 } else if ( prev !== "*" && prev !== current ) { 9232 9233 // Seek a direct converter 9234 conv = converters[ prev + " " + current ] || converters[ "* " + current ]; 9235 9236 // If none found, seek a pair 9237 if ( !conv ) { 9238 for ( conv2 in converters ) { 9239 9240 // If conv2 outputs current 9241 tmp = conv2.split( " " ); 9242 if ( tmp[ 1 ] === current ) { 9243 9244 // If prev can be converted to accepted input 9245 conv = converters[ prev + " " + tmp[ 0 ] ] || 9246 converters[ "* " + tmp[ 0 ] ]; 9247 if ( conv ) { 9248 9249 // Condense equivalence converters 9250 if ( conv === true ) { 9251 conv = converters[ conv2 ]; 9252 9253 // Otherwise, insert the intermediate dataType 9254 } else if ( converters[ conv2 ] !== true ) { 9255 current = tmp[ 0 ]; 9256 dataTypes.unshift( tmp[ 1 ] ); 9257 } 9258 break; 9259 } 9260 } 9261 } 9262 } 9263 9264 // Apply converter (if not an equivalence) 9265 if ( conv !== true ) { 9266 9267 // Unless errors are allowed to bubble, catch and return them 9268 if ( conv && s.throws ) { 9269 response = conv( response ); 9270 } else { 9271 try { 9272 response = conv( response ); 9273 } catch ( e ) { 9274 return { 9275 state: "parsererror", 9276 error: conv ? e : "No conversion from " + prev + " to " + current 9277 }; 9278 } 9279 } 9280 } 9281 } 9282 } 9283 } 9284 9285 return { state: "success", data: response }; 9286} 9287 9288jQuery.extend( { 9289 9290 // Counter for holding the number of active queries 9291 active: 0, 9292 9293 // Last-Modified header cache for next request 9294 lastModified: {}, 9295 etag: {}, 9296 9297 ajaxSettings: { 9298 url: location.href, 9299 type: "GET", 9300 isLocal: rlocalProtocol.test( location.protocol ), 9301 global: true, 9302 processData: true, 9303 async: true, 9304 contentType: "application/x-www-form-urlencoded; charset=UTF-8", 9305 9306 /* 9307 timeout: 0, 9308 data: null, 9309 dataType: null, 9310 username: null, 9311 password: null, 9312 cache: null, 9313 throws: false, 9314 traditional: false, 9315 headers: {}, 9316 */ 9317 9318 accepts: { 9319 "*": allTypes, 9320 text: "text/plain", 9321 html: "text/html", 9322 xml: "application/xml, text/xml", 9323 json: "application/json, text/javascript" 9324 }, 9325 9326 contents: { 9327 xml: /\bxml\b/, 9328 html: /\bhtml/, 9329 json: /\bjson\b/ 9330 }, 9331 9332 responseFields: { 9333 xml: "responseXML", 9334 text: "responseText", 9335 json: "responseJSON" 9336 }, 9337 9338 // Data converters 9339 // Keys separate source (or catchall "*") and destination types with a single space 9340 converters: { 9341 9342 // Convert anything to text 9343 "* text": String, 9344 9345 // Text to html (true = no transformation) 9346 "text html": true, 9347 9348 // Evaluate text as a json expression 9349 "text json": JSON.parse, 9350 9351 // Parse text as xml 9352 "text xml": jQuery.parseXML 9353 }, 9354 9355 // For options that shouldn't be deep extended: 9356 // you can add your own custom options here if 9357 // and when you create one that shouldn't be 9358 // deep extended (see ajaxExtend) 9359 flatOptions: { 9360 url: true, 9361 context: true 9362 } 9363 }, 9364 9365 // Creates a full fledged settings object into target 9366 // with both ajaxSettings and settings fields. 9367 // If target is omitted, writes into ajaxSettings. 9368 ajaxSetup: function( target, settings ) { 9369 return settings ? 9370 9371 // Building a settings object 9372 ajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) : 9373 9374 // Extending ajaxSettings 9375 ajaxExtend( jQuery.ajaxSettings, target ); 9376 }, 9377 9378 ajaxPrefilter: addToPrefiltersOrTransports( prefilters ), 9379 ajaxTransport: addToPrefiltersOrTransports( transports ), 9380 9381 // Main method 9382 ajax: function( url, options ) { 9383 9384 // If url is an object, simulate pre-1.5 signature 9385 if ( typeof url === "object" ) { 9386 options = url; 9387 url = undefined; 9388 } 9389 9390 // Force options to be an object 9391 options = options || {}; 9392 9393 var transport, 9394 9395 // URL without anti-cache param 9396 cacheURL, 9397 9398 // Response headers 9399 responseHeadersString, 9400 responseHeaders, 9401 9402 // timeout handle 9403 timeoutTimer, 9404 9405 // Url cleanup var 9406 urlAnchor, 9407 9408 // Request state (becomes false upon send and true upon completion) 9409 completed, 9410 9411 // To know if global events are to be dispatched 9412 fireGlobals, 9413 9414 // Loop variable 9415 i, 9416 9417 // uncached part of the url 9418 uncached, 9419 9420 // Create the final options object 9421 s = jQuery.ajaxSetup( {}, options ), 9422 9423 // Callbacks context 9424 callbackContext = s.context || s, 9425 9426 // Context for global events is callbackContext if it is a DOM node or jQuery collection 9427 globalEventContext = s.context && 9428 ( callbackContext.nodeType || callbackContext.jquery ) ? 9429 jQuery( callbackContext ) : 9430 jQuery.event, 9431 9432 // Deferreds 9433 deferred = jQuery.Deferred(), 9434 completeDeferred = jQuery.Callbacks( "once memory" ), 9435 9436 // Status-dependent callbacks 9437 statusCode = s.statusCode || {}, 9438 9439 // Headers (they are sent all at once) 9440 requestHeaders = {}, 9441 requestHeadersNames = {}, 9442 9443 // Default abort message 9444 strAbort = "canceled", 9445 9446 // Fake xhr 9447 jqXHR = { 9448 readyState: 0, 9449 9450 // Builds headers hashtable if needed 9451 getResponseHeader: function( key ) { 9452 var match; 9453 if ( completed ) { 9454 if ( !responseHeaders ) { 9455 responseHeaders = {}; 9456 while ( ( match = rheaders.exec( responseHeadersString ) ) ) { 9457 responseHeaders[ match[ 1 ].toLowerCase() + " " ] = 9458 ( responseHeaders[ match[ 1 ].toLowerCase() + " " ] || [] ) 9459 .concat( match[ 2 ] ); 9460 } 9461 } 9462 match = responseHeaders[ key.toLowerCase() + " " ]; 9463 } 9464 return match == null ? null : match.join( ", " ); 9465 }, 9466 9467 // Raw string 9468 getAllResponseHeaders: function() { 9469 return completed ? responseHeadersString : null; 9470 }, 9471 9472 // Caches the header 9473 setRequestHeader: function( name, value ) { 9474 if ( completed == null ) { 9475 name = requestHeadersNames[ name.toLowerCase() ] = 9476 requestHeadersNames[ name.toLowerCase() ] || name; 9477 requestHeaders[ name ] = value; 9478 } 9479 return this; 9480 }, 9481 9482 // Overrides response content-type header 9483 overrideMimeType: function( type ) { 9484 if ( completed == null ) { 9485 s.mimeType = type; 9486 } 9487 return this; 9488 }, 9489 9490 // Status-dependent callbacks 9491 statusCode: function( map ) { 9492 var code; 9493 if ( map ) { 9494 if ( completed ) { 9495 9496 // Execute the appropriate callbacks 9497 jqXHR.always( map[ jqXHR.status ] ); 9498 } else { 9499 9500 // Lazy-add the new callbacks in a way that preserves old ones 9501 for ( code in map ) { 9502 statusCode[ code ] = [ statusCode[ code ], map[ code ] ]; 9503 } 9504 } 9505 } 9506 return this; 9507 }, 9508 9509 // Cancel the request 9510 abort: function( statusText ) { 9511 var finalText = statusText || strAbort; 9512 if ( transport ) { 9513 transport.abort( finalText ); 9514 } 9515 done( 0, finalText ); 9516 return this; 9517 } 9518 }; 9519 9520 // Attach deferreds 9521 deferred.promise( jqXHR ); 9522 9523 // Add protocol if not provided (prefilters might expect it) 9524 // Handle falsy url in the settings object (#10093: consistency with old signature) 9525 // We also use the url parameter if available 9526 s.url = ( ( url || s.url || location.href ) + "" ) 9527 .replace( rprotocol, location.protocol + "//" ); 9528 9529 // Alias method option to type as per ticket #12004 9530 s.type = options.method || options.type || s.method || s.type; 9531 9532 // Extract dataTypes list 9533 s.dataTypes = ( s.dataType || "*" ).toLowerCase().match( rnothtmlwhite ) || [ "" ]; 9534 9535 // A cross-domain request is in order when the origin doesn't match the current origin. 9536 if ( s.crossDomain == null ) { 9537 urlAnchor = document.createElement( "a" ); 9538 9539 // Support: IE <=8 - 11, Edge 12 - 15 9540 // IE throws exception on accessing the href property if url is malformed, 9541 // e.g. http://example.com:80x/ 9542 try { 9543 urlAnchor.href = s.url; 9544 9545 // Support: IE <=8 - 11 only 9546 // Anchor's host property isn't correctly set when s.url is relative 9547 urlAnchor.href = urlAnchor.href; 9548 s.crossDomain = originAnchor.protocol + "//" + originAnchor.host !== 9549 urlAnchor.protocol + "//" + urlAnchor.host; 9550 } catch ( e ) { 9551 9552 // If there is an error parsing the URL, assume it is crossDomain, 9553 // it can be rejected by the transport if it is invalid 9554 s.crossDomain = true; 9555 } 9556 } 9557 9558 // Convert data if not already a string 9559 if ( s.data && s.processData && typeof s.data !== "string" ) { 9560 s.data = jQuery.param( s.data, s.traditional ); 9561 } 9562 9563 // Apply prefilters 9564 inspectPrefiltersOrTransports( prefilters, s, options, jqXHR ); 9565 9566 // If request was aborted inside a prefilter, stop there 9567 if ( completed ) { 9568 return jqXHR; 9569 } 9570 9571 // We can fire global events as of now if asked to 9572 // Don't fire events if jQuery.event is undefined in an AMD-usage scenario (#15118) 9573 fireGlobals = jQuery.event && s.global; 9574 9575 // Watch for a new set of requests 9576 if ( fireGlobals && jQuery.active++ === 0 ) { 9577 jQuery.event.trigger( "ajaxStart" ); 9578 } 9579 9580 // Uppercase the type 9581 s.type = s.type.toUpperCase(); 9582 9583 // Determine if request has content 9584 s.hasContent = !rnoContent.test( s.type ); 9585 9586 // Save the URL in case we're toying with the If-Modified-Since 9587 // and/or If-None-Match header later on 9588 // Remove hash to simplify url manipulation 9589 cacheURL = s.url.replace( rhash, "" ); 9590 9591 // More options handling for requests with no content 9592 if ( !s.hasContent ) { 9593 9594 // Remember the hash so we can put it back 9595 uncached = s.url.slice( cacheURL.length ); 9596 9597 // If data is available and should be processed, append data to url 9598 if ( s.data && ( s.processData || typeof s.data === "string" ) ) { 9599 cacheURL += ( rquery.test( cacheURL ) ? "&" : "?" ) + s.data; 9600 9601 // #9682: remove data so that it's not used in an eventual retry 9602 delete s.data; 9603 } 9604 9605 // Add or update anti-cache param if needed 9606 if ( s.cache === false ) { 9607 cacheURL = cacheURL.replace( rantiCache, "$1" ); 9608 uncached = ( rquery.test( cacheURL ) ? "&" : "?" ) + "_=" + ( nonce.guid++ ) + 9609 uncached; 9610 } 9611 9612 // Put hash and anti-cache on the URL that will be requested (gh-1732) 9613 s.url = cacheURL + uncached; 9614 9615 // Change '%20' to '+' if this is encoded form body content (gh-2658) 9616 } else if ( s.data && s.processData && 9617 ( s.contentType || "" ).indexOf( "application/x-www-form-urlencoded" ) === 0 ) { 9618 s.data = s.data.replace( r20, "+" ); 9619 } 9620 9621 // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode. 9622 if ( s.ifModified ) { 9623 if ( jQuery.lastModified[ cacheURL ] ) { 9624 jqXHR.setRequestHeader( "If-Modified-Since", jQuery.lastModified[ cacheURL ] ); 9625 } 9626 if ( jQuery.etag[ cacheURL ] ) { 9627 jqXHR.setRequestHeader( "If-None-Match", jQuery.etag[ cacheURL ] ); 9628 } 9629 } 9630 9631 // Set the correct header, if data is being sent 9632 if ( s.data && s.hasContent && s.contentType !== false || options.contentType ) { 9633 jqXHR.setRequestHeader( "Content-Type", s.contentType ); 9634 } 9635 9636 // Set the Accepts header for the server, depending on the dataType 9637 jqXHR.setRequestHeader( 9638 "Accept", 9639 s.dataTypes[ 0 ] && s.accepts[ s.dataTypes[ 0 ] ] ? 9640 s.accepts[ s.dataTypes[ 0 ] ] + 9641 ( s.dataTypes[ 0 ] !== "*" ? ", " + allTypes + "; q=0.01" : "" ) : 9642 s.accepts[ "*" ] 9643 ); 9644 9645 // Check for headers option 9646 for ( i in s.headers ) { 9647 jqXHR.setRequestHeader( i, s.headers[ i ] ); 9648 } 9649 9650 // Allow custom headers/mimetypes and early abort 9651 if ( s.beforeSend && 9652 ( s.beforeSend.call( callbackContext, jqXHR, s ) === false || completed ) ) { 9653 9654 // Abort if not done already and return 9655 return jqXHR.abort(); 9656 } 9657 9658 // Aborting is no longer a cancellation 9659 strAbort = "abort"; 9660 9661 // Install callbacks on deferreds 9662 completeDeferred.add( s.complete ); 9663 jqXHR.done( s.success ); 9664 jqXHR.fail( s.error ); 9665 9666 // Get transport 9667 transport = inspectPrefiltersOrTransports( transports, s, options, jqXHR ); 9668 9669 // If no transport, we auto-abort 9670 if ( !transport ) { 9671 done( -1, "No Transport" ); 9672 } else { 9673 jqXHR.readyState = 1; 9674 9675 // Send global event 9676 if ( fireGlobals ) { 9677 globalEventContext.trigger( "ajaxSend", [ jqXHR, s ] ); 9678 } 9679 9680 // If request was aborted inside ajaxSend, stop there 9681 if ( completed ) { 9682 return jqXHR; 9683 } 9684 9685 // Timeout 9686 if ( s.async && s.timeout > 0 ) { 9687 timeoutTimer = window.setTimeout( function() { 9688 jqXHR.abort( "timeout" ); 9689 }, s.timeout ); 9690 } 9691 9692 try { 9693 completed = false; 9694 transport.send( requestHeaders, done ); 9695 } catch ( e ) { 9696 9697 // Rethrow post-completion exceptions 9698 if ( completed ) { 9699 throw e; 9700 } 9701 9702 // Propagate others as results 9703 done( -1, e ); 9704 } 9705 } 9706 9707 // Callback for when everything is done 9708 function done( status, nativeStatusText, responses, headers ) { 9709 var isSuccess, success, error, response, modified, 9710 statusText = nativeStatusText; 9711 9712 // Ignore repeat invocations 9713 if ( completed ) { 9714 return; 9715 } 9716 9717 completed = true; 9718 9719 // Clear timeout if it exists 9720 if ( timeoutTimer ) { 9721 window.clearTimeout( timeoutTimer ); 9722 } 9723 9724 // Dereference transport for early garbage collection 9725 // (no matter how long the jqXHR object will be used) 9726 transport = undefined; 9727 9728 // Cache response headers 9729 responseHeadersString = headers || ""; 9730 9731 // Set readyState 9732 jqXHR.readyState = status > 0 ? 4 : 0; 9733 9734 // Determine if successful 9735 isSuccess = status >= 200 && status < 300 || status === 304; 9736 9737 // Get response data 9738 if ( responses ) { 9739 response = ajaxHandleResponses( s, jqXHR, responses ); 9740 } 9741 9742 // Use a noop converter for missing script but not if jsonp 9743 if ( !isSuccess && 9744 jQuery.inArray( "script", s.dataTypes ) > -1 && 9745 jQuery.inArray( "json", s.dataTypes ) < 0 ) { 9746 s.converters[ "text script" ] = function() {}; 9747 } 9748 9749 // Convert no matter what (that way responseXXX fields are always set) 9750 response = ajaxConvert( s, response, jqXHR, isSuccess ); 9751 9752 // If successful, handle type chaining 9753 if ( isSuccess ) { 9754 9755 // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode. 9756 if ( s.ifModified ) { 9757 modified = jqXHR.getResponseHeader( "Last-Modified" ); 9758 if ( modified ) { 9759 jQuery.lastModified[ cacheURL ] = modified; 9760 } 9761 modified = jqXHR.getResponseHeader( "etag" ); 9762 if ( modified ) { 9763 jQuery.etag[ cacheURL ] = modified; 9764 } 9765 } 9766 9767 // if no content 9768 if ( status === 204 || s.type === "HEAD" ) { 9769 statusText = "nocontent"; 9770 9771 // if not modified 9772 } else if ( status === 304 ) { 9773 statusText = "notmodified"; 9774 9775 // If we have data, let's convert it 9776 } else { 9777 statusText = response.state; 9778 success = response.data; 9779 error = response.error; 9780 isSuccess = !error; 9781 } 9782 } else { 9783 9784 // Extract error from statusText and normalize for non-aborts 9785 error = statusText; 9786 if ( status || !statusText ) { 9787 statusText = "error"; 9788 if ( status < 0 ) { 9789 status = 0; 9790 } 9791 } 9792 } 9793 9794 // Set data for the fake xhr object 9795 jqXHR.status = status; 9796 jqXHR.statusText = ( nativeStatusText || statusText ) + ""; 9797 9798 // Success/Error 9799 if ( isSuccess ) { 9800 deferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] ); 9801 } else { 9802 deferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] ); 9803 } 9804 9805 // Status-dependent callbacks 9806 jqXHR.statusCode( statusCode ); 9807 statusCode = undefined; 9808 9809 if ( fireGlobals ) { 9810 globalEventContext.trigger( isSuccess ? "ajaxSuccess" : "ajaxError", 9811 [ jqXHR, s, isSuccess ? success : error ] ); 9812 } 9813 9814 // Complete 9815 completeDeferred.fireWith( callbackContext, [ jqXHR, statusText ] ); 9816 9817 if ( fireGlobals ) { 9818 globalEventContext.trigger( "ajaxComplete", [ jqXHR, s ] ); 9819 9820 // Handle the global AJAX counter 9821 if ( !( --jQuery.active ) ) { 9822 jQuery.event.trigger( "ajaxStop" ); 9823 } 9824 } 9825 } 9826 9827 return jqXHR; 9828 }, 9829 9830 getJSON: function( url, data, callback ) { 9831 return jQuery.get( url, data, callback, "json" ); 9832 }, 9833 9834 getScript: function( url, callback ) { 9835 return jQuery.get( url, undefined, callback, "script" ); 9836 } 9837} ); 9838 9839jQuery.each( [ "get", "post" ], function( _i, method ) { 9840 jQuery[ method ] = function( url, data, callback, type ) { 9841 9842 // Shift arguments if data argument was omitted 9843 if ( isFunction( data ) ) { 9844 type = type || callback; 9845 callback = data; 9846 data = undefined; 9847 } 9848 9849 // The url can be an options object (which then must have .url) 9850 return jQuery.ajax( jQuery.extend( { 9851 url: url, 9852 type: method, 9853 dataType: type, 9854 data: data, 9855 success: callback 9856 }, jQuery.isPlainObject( url ) && url ) ); 9857 }; 9858} ); 9859 9860jQuery.ajaxPrefilter( function( s ) { 9861 var i; 9862 for ( i in s.headers ) { 9863 if ( i.toLowerCase() === "content-type" ) { 9864 s.contentType = s.headers[ i ] || ""; 9865 } 9866 } 9867} ); 9868 9869 9870jQuery._evalUrl = function( url, options, doc ) { 9871 return jQuery.ajax( { 9872 url: url, 9873 9874 // Make this explicit, since user can override this through ajaxSetup (#11264) 9875 type: "GET", 9876 dataType: "script", 9877 cache: true, 9878 async: false, 9879 global: false, 9880 9881 // Only evaluate the response if it is successful (gh-4126) 9882 // dataFilter is not invoked for failure responses, so using it instead 9883 // of the default converter is kludgy but it works. 9884 converters: { 9885 "text script": function() {} 9886 }, 9887 dataFilter: function( response ) { 9888 jQuery.globalEval( response, options, doc ); 9889 } 9890 } ); 9891}; 9892 9893 9894jQuery.fn.extend( { 9895 wrapAll: function( html ) { 9896 var wrap; 9897 9898 if ( this[ 0 ] ) { 9899 if ( isFunction( html ) ) { 9900 html = html.call( this[ 0 ] ); 9901 } 9902 9903 // The elements to wrap the target around 9904 wrap = jQuery( html, this[ 0 ].ownerDocument ).eq( 0 ).clone( true ); 9905 9906 if ( this[ 0 ].parentNode ) { 9907 wrap.insertBefore( this[ 0 ] ); 9908 } 9909 9910 wrap.map( function() { 9911 var elem = this; 9912 9913 while ( elem.firstElementChild ) { 9914 elem = elem.firstElementChild; 9915 } 9916 9917 return elem; 9918 } ).append( this ); 9919 } 9920 9921 return this; 9922 }, 9923 9924 wrapInner: function( html ) { 9925 if ( isFunction( html ) ) { 9926 return this.each( function( i ) { 9927 jQuery( this ).wrapInner( html.call( this, i ) ); 9928 } ); 9929 } 9930 9931 return this.each( function() { 9932 var self = jQuery( this ), 9933 contents = self.contents(); 9934 9935 if ( contents.length ) { 9936 contents.wrapAll( html ); 9937 9938 } else { 9939 self.append( html ); 9940 } 9941 } ); 9942 }, 9943 9944 wrap: function( html ) { 9945 var htmlIsFunction = isFunction( html ); 9946 9947 return this.each( function( i ) { 9948 jQuery( this ).wrapAll( htmlIsFunction ? html.call( this, i ) : html ); 9949 } ); 9950 }, 9951 9952 unwrap: function( selector ) { 9953 this.parent( selector ).not( "body" ).each( function() { 9954 jQuery( this ).replaceWith( this.childNodes ); 9955 } ); 9956 return this; 9957 } 9958} ); 9959 9960 9961jQuery.expr.pseudos.hidden = function( elem ) { 9962 return !jQuery.expr.pseudos.visible( elem ); 9963}; 9964jQuery.expr.pseudos.visible = function( elem ) { 9965 return !!( elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length ); 9966}; 9967 9968 9969 9970 9971jQuery.ajaxSettings.xhr = function() { 9972 try { 9973 return new window.XMLHttpRequest(); 9974 } catch ( e ) {} 9975}; 9976 9977var xhrSuccessStatus = { 9978 9979 // File protocol always yields status code 0, assume 200 9980 0: 200, 9981 9982 // Support: IE <=9 only 9983 // #1450: sometimes IE returns 1223 when it should be 204 9984 1223: 204 9985 }, 9986 xhrSupported = jQuery.ajaxSettings.xhr(); 9987 9988support.cors = !!xhrSupported && ( "withCredentials" in xhrSupported ); 9989support.ajax = xhrSupported = !!xhrSupported; 9990 9991jQuery.ajaxTransport( function( options ) { 9992 var callback, errorCallback; 9993 9994 // Cross domain only allowed if supported through XMLHttpRequest 9995 if ( support.cors || xhrSupported && !options.crossDomain ) { 9996 return { 9997 send: function( headers, complete ) { 9998 var i, 9999 xhr = options.xhr(); 10000 10001 xhr.open( 10002 options.type, 10003 options.url, 10004 options.async, 10005 options.username, 10006 options.password 10007 ); 10008 10009 // Apply custom fields if provided 10010 if ( options.xhrFields ) { 10011 for ( i in options.xhrFields ) { 10012 xhr[ i ] = options.xhrFields[ i ]; 10013 } 10014 } 10015 10016 // Override mime type if needed 10017 if ( options.mimeType && xhr.overrideMimeType ) { 10018 xhr.overrideMimeType( options.mimeType ); 10019 } 10020 10021 // X-Requested-With header 10022 // For cross-domain requests, seeing as conditions for a preflight are 10023 // akin to a jigsaw puzzle, we simply never set it to be sure. 10024 // (it can always be set on a per-request basis or even using ajaxSetup) 10025 // For same-domain requests, won't change header if already provided. 10026 if ( !options.crossDomain && !headers[ "X-Requested-With" ] ) { 10027 headers[ "X-Requested-With" ] = "XMLHttpRequest"; 10028 } 10029 10030 // Set headers 10031 for ( i in headers ) { 10032 xhr.setRequestHeader( i, headers[ i ] ); 10033 } 10034 10035 // Callback 10036 callback = function( type ) { 10037 return function() { 10038 if ( callback ) { 10039 callback = errorCallback = xhr.onload = 10040 xhr.onerror = xhr.onabort = xhr.ontimeout = 10041 xhr.onreadystatechange = null; 10042 10043 if ( type === "abort" ) { 10044 xhr.abort(); 10045 } else if ( type === "error" ) { 10046 10047 // Support: IE <=9 only 10048 // On a manual native abort, IE9 throws 10049 // errors on any property access that is not readyState 10050 if ( typeof xhr.status !== "number" ) { 10051 complete( 0, "error" ); 10052 } else { 10053 complete( 10054 10055 // File: protocol always yields status 0; see #8605, #14207 10056 xhr.status, 10057 xhr.statusText 10058 ); 10059 } 10060 } else { 10061 complete( 10062 xhrSuccessStatus[ xhr.status ] || xhr.status, 10063 xhr.statusText, 10064 10065 // Support: IE <=9 only 10066 // IE9 has no XHR2 but throws on binary (trac-11426) 10067 // For XHR2 non-text, let the caller handle it (gh-2498) 10068 ( xhr.responseType || "text" ) !== "text" || 10069 typeof xhr.responseText !== "string" ? 10070 { binary: xhr.response } : 10071 { text: xhr.responseText }, 10072 xhr.getAllResponseHeaders() 10073 ); 10074 } 10075 } 10076 }; 10077 }; 10078 10079 // Listen to events 10080 xhr.onload = callback(); 10081 errorCallback = xhr.onerror = xhr.ontimeout = callback( "error" ); 10082 10083 // Support: IE 9 only 10084 // Use onreadystatechange to replace onabort 10085 // to handle uncaught aborts 10086 if ( xhr.onabort !== undefined ) { 10087 xhr.onabort = errorCallback; 10088 } else { 10089 xhr.onreadystatechange = function() { 10090 10091 // Check readyState before timeout as it changes 10092 if ( xhr.readyState === 4 ) { 10093 10094 // Allow onerror to be called first, 10095 // but that will not handle a native abort 10096 // Also, save errorCallback to a variable 10097 // as xhr.onerror cannot be accessed 10098 window.setTimeout( function() { 10099 if ( callback ) { 10100 errorCallback(); 10101 } 10102 } ); 10103 } 10104 }; 10105 } 10106 10107 // Create the abort callback 10108 callback = callback( "abort" ); 10109 10110 try { 10111 10112 // Do send the request (this may raise an exception) 10113 xhr.send( options.hasContent && options.data || null ); 10114 } catch ( e ) { 10115 10116 // #14683: Only rethrow if this hasn't been notified as an error yet 10117 if ( callback ) { 10118 throw e; 10119 } 10120 } 10121 }, 10122 10123 abort: function() { 10124 if ( callback ) { 10125 callback(); 10126 } 10127 } 10128 }; 10129 } 10130} ); 10131 10132 10133 10134 10135// Prevent auto-execution of scripts when no explicit dataType was provided (See gh-2432) 10136jQuery.ajaxPrefilter( function( s ) { 10137 if ( s.crossDomain ) { 10138 s.contents.script = false; 10139 } 10140} ); 10141 10142// Install script dataType 10143jQuery.ajaxSetup( { 10144 accepts: { 10145 script: "text/javascript, application/javascript, " + 10146 "application/ecmascript, application/x-ecmascript" 10147 }, 10148 contents: { 10149 script: /\b(?:java|ecma)script\b/ 10150 }, 10151 converters: { 10152 "text script": function( text ) { 10153 jQuery.globalEval( text ); 10154 return text; 10155 } 10156 } 10157} ); 10158 10159// Handle cache's special case and crossDomain 10160jQuery.ajaxPrefilter( "script", function( s ) { 10161 if ( s.cache === undefined ) { 10162 s.cache = false; 10163 } 10164 if ( s.crossDomain ) { 10165 s.type = "GET"; 10166 } 10167} ); 10168 10169// Bind script tag hack transport 10170jQuery.ajaxTransport( "script", function( s ) { 10171 10172 // This transport only deals with cross domain or forced-by-attrs requests 10173 if ( s.crossDomain || s.scriptAttrs ) { 10174 var script, callback; 10175 return { 10176 send: function( _, complete ) { 10177 script = jQuery( "<script>" ) 10178 .attr( s.scriptAttrs || {} ) 10179 .prop( { charset: s.scriptCharset, src: s.url } ) 10180 .on( "load error", callback = function( evt ) { 10181 script.remove(); 10182 callback = null; 10183 if ( evt ) { 10184 complete( evt.type === "error" ? 404 : 200, evt.type ); 10185 } 10186 } ); 10187 10188 // Use native DOM manipulation to avoid our domManip AJAX trickery 10189 document.head.appendChild( script[ 0 ] ); 10190 }, 10191 abort: function() { 10192 if ( callback ) { 10193 callback(); 10194 } 10195 } 10196 }; 10197 } 10198} ); 10199 10200 10201 10202 10203var oldCallbacks = [], 10204 rjsonp = /(=)\?(?=&|$)|\?\?/; 10205 10206// Default jsonp settings 10207jQuery.ajaxSetup( { 10208 jsonp: "callback", 10209 jsonpCallback: function() { 10210 var callback = oldCallbacks.pop() || ( jQuery.expando + "_" + ( nonce.guid++ ) ); 10211 this[ callback ] = true; 10212 return callback; 10213 } 10214} ); 10215 10216// Detect, normalize options and install callbacks for jsonp requests 10217jQuery.ajaxPrefilter( "json jsonp", function( s, originalSettings, jqXHR ) { 10218 10219 var callbackName, overwritten, responseContainer, 10220 jsonProp = s.jsonp !== false && ( rjsonp.test( s.url ) ? 10221 "url" : 10222 typeof s.data === "string" && 10223 ( s.contentType || "" ) 10224 .indexOf( "application/x-www-form-urlencoded" ) === 0 && 10225 rjsonp.test( s.data ) && "data" 10226 ); 10227 10228 // Handle iff the expected data type is "jsonp" or we have a parameter to set 10229 if ( jsonProp || s.dataTypes[ 0 ] === "jsonp" ) { 10230 10231 // Get callback name, remembering preexisting value associated with it 10232 callbackName = s.jsonpCallback = isFunction( s.jsonpCallback ) ? 10233 s.jsonpCallback() : 10234 s.jsonpCallback; 10235 10236 // Insert callback into url or form data 10237 if ( jsonProp ) { 10238 s[ jsonProp ] = s[ jsonProp ].replace( rjsonp, "$1" + callbackName ); 10239 } else if ( s.jsonp !== false ) { 10240 s.url += ( rquery.test( s.url ) ? "&" : "?" ) + s.jsonp + "=" + callbackName; 10241 } 10242 10243 // Use data converter to retrieve json after script execution 10244 s.converters[ "script json" ] = function() { 10245 if ( !responseContainer ) { 10246 jQuery.error( callbackName + " was not called" ); 10247 } 10248 return responseContainer[ 0 ]; 10249 }; 10250 10251 // Force json dataType 10252 s.dataTypes[ 0 ] = "json"; 10253 10254 // Install callback 10255 overwritten = window[ callbackName ]; 10256 window[ callbackName ] = function() { 10257 responseContainer = arguments; 10258 }; 10259 10260 // Clean-up function (fires after converters) 10261 jqXHR.always( function() { 10262 10263 // If previous value didn't exist - remove it 10264 if ( overwritten === undefined ) { 10265 jQuery( window ).removeProp( callbackName ); 10266 10267 // Otherwise restore preexisting value 10268 } else { 10269 window[ callbackName ] = overwritten; 10270 } 10271 10272 // Save back as free 10273 if ( s[ callbackName ] ) { 10274 10275 // Make sure that re-using the options doesn't screw things around 10276 s.jsonpCallback = originalSettings.jsonpCallback; 10277 10278 // Save the callback name for future use 10279 oldCallbacks.push( callbackName ); 10280 } 10281 10282 // Call if it was a function and we have a response 10283 if ( responseContainer && isFunction( overwritten ) ) { 10284 overwritten( responseContainer[ 0 ] ); 10285 } 10286 10287 responseContainer = overwritten = undefined; 10288 } ); 10289 10290 // Delegate to script 10291 return "script"; 10292 } 10293} ); 10294 10295 10296 10297 10298// Support: Safari 8 only 10299// In Safari 8 documents created via document.implementation.createHTMLDocument 10300// collapse sibling forms: the second one becomes a child of the first one. 10301// Because of that, this security measure has to be disabled in Safari 8. 10302// https://bugs.webkit.org/show_bug.cgi?id=137337 10303support.createHTMLDocument = ( function() { 10304 var body = document.implementation.createHTMLDocument( "" ).body; 10305 body.innerHTML = "<form></form><form></form>"; 10306 return body.childNodes.length === 2; 10307} )(); 10308 10309 10310// Argument "data" should be string of html 10311// context (optional): If specified, the fragment will be created in this context, 10312// defaults to document 10313// keepScripts (optional): If true, will include scripts passed in the html string 10314jQuery.parseHTML = function( data, context, keepScripts ) { 10315 if ( typeof data !== "string" ) { 10316 return []; 10317 } 10318 if ( typeof context === "boolean" ) { 10319 keepScripts = context; 10320 context = false; 10321 } 10322 10323 var base, parsed, scripts; 10324 10325 if ( !context ) { 10326 10327 // Stop scripts or inline event handlers from being executed immediately 10328 // by using document.implementation 10329 if ( support.createHTMLDocument ) { 10330 context = document.implementation.createHTMLDocument( "" ); 10331 10332 // Set the base href for the created document 10333 // so any parsed elements with URLs 10334 // are based on the document's URL (gh-2965) 10335 base = context.createElement( "base" ); 10336 base.href = document.location.href; 10337 context.head.appendChild( base ); 10338 } else { 10339 context = document; 10340 } 10341 } 10342 10343 parsed = rsingleTag.exec( data ); 10344 scripts = !keepScripts && []; 10345 10346 // Single tag 10347 if ( parsed ) { 10348 return [ context.createElement( parsed[ 1 ] ) ]; 10349 } 10350 10351 parsed = buildFragment( [ data ], context, scripts ); 10352 10353 if ( scripts && scripts.length ) { 10354 jQuery( scripts ).remove(); 10355 } 10356 10357 return jQuery.merge( [], parsed.childNodes ); 10358}; 10359 10360 10361/** 10362 * Load a url into a page 10363 */ 10364jQuery.fn.load = function( url, params, callback ) { 10365 var selector, type, response, 10366 self = this, 10367 off = url.indexOf( " " ); 10368 10369 if ( off > -1 ) { 10370 selector = stripAndCollapse( url.slice( off ) ); 10371 url = url.slice( 0, off ); 10372 } 10373 10374 // If it's a function 10375 if ( isFunction( params ) ) { 10376 10377 // We assume that it's the callback 10378 callback = params; 10379 params = undefined; 10380 10381 // Otherwise, build a param string 10382 } else if ( params && typeof params === "object" ) { 10383 type = "POST"; 10384 } 10385 10386 // If we have elements to modify, make the request 10387 if ( self.length > 0 ) { 10388 jQuery.ajax( { 10389 url: url, 10390 10391 // If "type" variable is undefined, then "GET" method will be used. 10392 // Make value of this field explicit since 10393 // user can override it through ajaxSetup method 10394 type: type || "GET", 10395 dataType: "html", 10396 data: params 10397 } ).done( function( responseText ) { 10398 10399 // Save response for use in complete callback 10400 response = arguments; 10401 10402 self.html( selector ? 10403 10404 // If a selector was specified, locate the right elements in a dummy div 10405 // Exclude scripts to avoid IE 'Permission Denied' errors 10406 jQuery( "<div>" ).append( jQuery.parseHTML( responseText ) ).find( selector ) : 10407 10408 // Otherwise use the full result 10409 responseText ); 10410 10411 // If the request succeeds, this function gets "data", "status", "jqXHR" 10412 // but they are ignored because response was set above. 10413 // If it fails, this function gets "jqXHR", "status", "error" 10414 } ).always( callback && function( jqXHR, status ) { 10415 self.each( function() { 10416 callback.apply( this, response || [ jqXHR.responseText, status, jqXHR ] ); 10417 } ); 10418 } ); 10419 } 10420 10421 return this; 10422}; 10423 10424 10425 10426 10427jQuery.expr.pseudos.animated = function( elem ) { 10428 return jQuery.grep( jQuery.timers, function( fn ) { 10429 return elem === fn.elem; 10430 } ).length; 10431}; 10432 10433 10434 10435 10436jQuery.offset = { 10437 setOffset: function( elem, options, i ) { 10438 var curPosition, curLeft, curCSSTop, curTop, curOffset, curCSSLeft, calculatePosition, 10439 position = jQuery.css( elem, "position" ), 10440 curElem = jQuery( elem ), 10441 props = {}; 10442 10443 // Set position first, in-case top/left are set even on static elem 10444 if ( position === "static" ) { 10445 elem.style.position = "relative"; 10446 } 10447 10448 curOffset = curElem.offset(); 10449 curCSSTop = jQuery.css( elem, "top" ); 10450 curCSSLeft = jQuery.css( elem, "left" ); 10451 calculatePosition = ( position === "absolute" || position === "fixed" ) && 10452 ( curCSSTop + curCSSLeft ).indexOf( "auto" ) > -1; 10453 10454 // Need to be able to calculate position if either 10455 // top or left is auto and position is either absolute or fixed 10456 if ( calculatePosition ) { 10457 curPosition = curElem.position(); 10458 curTop = curPosition.top; 10459 curLeft = curPosition.left; 10460 10461 } else { 10462 curTop = parseFloat( curCSSTop ) || 0; 10463 curLeft = parseFloat( curCSSLeft ) || 0; 10464 } 10465 10466 if ( isFunction( options ) ) { 10467 10468 // Use jQuery.extend here to allow modification of coordinates argument (gh-1848) 10469 options = options.call( elem, i, jQuery.extend( {}, curOffset ) ); 10470 } 10471 10472 if ( options.top != null ) { 10473 props.top = ( options.top - curOffset.top ) + curTop; 10474 } 10475 if ( options.left != null ) { 10476 props.left = ( options.left - curOffset.left ) + curLeft; 10477 } 10478 10479 if ( "using" in options ) { 10480 options.using.call( elem, props ); 10481 10482 } else { 10483 curElem.css( props ); 10484 } 10485 } 10486}; 10487 10488jQuery.fn.extend( { 10489 10490 // offset() relates an element's border box to the document origin 10491 offset: function( options ) { 10492 10493 // Preserve chaining for setter 10494 if ( arguments.length ) { 10495 return options === undefined ? 10496 this : 10497 this.each( function( i ) { 10498 jQuery.offset.setOffset( this, options, i ); 10499 } ); 10500 } 10501 10502 var rect, win, 10503 elem = this[ 0 ]; 10504 10505 if ( !elem ) { 10506 return; 10507 } 10508 10509 // Return zeros for disconnected and hidden (display: none) elements (gh-2310) 10510 // Support: IE <=11 only 10511 // Running getBoundingClientRect on a 10512 // disconnected node in IE throws an error 10513 if ( !elem.getClientRects().length ) { 10514 return { top: 0, left: 0 }; 10515 } 10516 10517 // Get document-relative position by adding viewport scroll to viewport-relative gBCR 10518 rect = elem.getBoundingClientRect(); 10519 win = elem.ownerDocument.defaultView; 10520 return { 10521 top: rect.top + win.pageYOffset, 10522 left: rect.left + win.pageXOffset 10523 }; 10524 }, 10525 10526 // position() relates an element's margin box to its offset parent's padding box 10527 // This corresponds to the behavior of CSS absolute positioning 10528 position: function() { 10529 if ( !this[ 0 ] ) { 10530 return; 10531 } 10532 10533 var offsetParent, offset, doc, 10534 elem = this[ 0 ], 10535 parentOffset = { top: 0, left: 0 }; 10536 10537 // position:fixed elements are offset from the viewport, which itself always has zero offset 10538 if ( jQuery.css( elem, "position" ) === "fixed" ) { 10539 10540 // Assume position:fixed implies availability of getBoundingClientRect 10541 offset = elem.getBoundingClientRect(); 10542 10543 } else { 10544 offset = this.offset(); 10545 10546 // Account for the *real* offset parent, which can be the document or its root element 10547 // when a statically positioned element is identified 10548 doc = elem.ownerDocument; 10549 offsetParent = elem.offsetParent || doc.documentElement; 10550 while ( offsetParent && 10551 ( offsetParent === doc.body || offsetParent === doc.documentElement ) && 10552 jQuery.css( offsetParent, "position" ) === "static" ) { 10553 10554 offsetParent = offsetParent.parentNode; 10555 } 10556 if ( offsetParent && offsetParent !== elem && offsetParent.nodeType === 1 ) { 10557 10558 // Incorporate borders into its offset, since they are outside its content origin 10559 parentOffset = jQuery( offsetParent ).offset(); 10560 parentOffset.top += jQuery.css( offsetParent, "borderTopWidth", true ); 10561 parentOffset.left += jQuery.css( offsetParent, "borderLeftWidth", true ); 10562 } 10563 } 10564 10565 // Subtract parent offsets and element margins 10566 return { 10567 top: offset.top - parentOffset.top - jQuery.css( elem, "marginTop", true ), 10568 left: offset.left - parentOffset.left - jQuery.css( elem, "marginLeft", true ) 10569 }; 10570 }, 10571 10572 // This method will return documentElement in the following cases: 10573 // 1) For the element inside the iframe without offsetParent, this method will return 10574 // documentElement of the parent window 10575 // 2) For the hidden or detached element 10576 // 3) For body or html element, i.e. in case of the html node - it will return itself 10577 // 10578 // but those exceptions were never presented as a real life use-cases 10579 // and might be considered as more preferable results. 10580 // 10581 // This logic, however, is not guaranteed and can change at any point in the future 10582 offsetParent: function() { 10583 return this.map( function() { 10584 var offsetParent = this.offsetParent; 10585 10586 while ( offsetParent && jQuery.css( offsetParent, "position" ) === "static" ) { 10587 offsetParent = offsetParent.offsetParent; 10588 } 10589 10590 return offsetParent || documentElement; 10591 } ); 10592 } 10593} ); 10594 10595// Create scrollLeft and scrollTop methods 10596jQuery.each( { scrollLeft: "pageXOffset", scrollTop: "pageYOffset" }, function( method, prop ) { 10597 var top = "pageYOffset" === prop; 10598 10599 jQuery.fn[ method ] = function( val ) { 10600 return access( this, function( elem, method, val ) { 10601 10602 // Coalesce documents and windows 10603 var win; 10604 if ( isWindow( elem ) ) { 10605 win = elem; 10606 } else if ( elem.nodeType === 9 ) { 10607 win = elem.defaultView; 10608 } 10609 10610 if ( val === undefined ) { 10611 return win ? win[ prop ] : elem[ method ]; 10612 } 10613 10614 if ( win ) { 10615 win.scrollTo( 10616 !top ? val : win.pageXOffset, 10617 top ? val : win.pageYOffset 10618 ); 10619 10620 } else { 10621 elem[ method ] = val; 10622 } 10623 }, method, val, arguments.length ); 10624 }; 10625} ); 10626 10627// Support: Safari <=7 - 9.1, Chrome <=37 - 49 10628// Add the top/left cssHooks using jQuery.fn.position 10629// Webkit bug: https://bugs.webkit.org/show_bug.cgi?id=29084 10630// Blink bug: https://bugs.chromium.org/p/chromium/issues/detail?id=589347 10631// getComputedStyle returns percent when specified for top/left/bottom/right; 10632// rather than make the css module depend on the offset module, just check for it here 10633jQuery.each( [ "top", "left" ], function( _i, prop ) { 10634 jQuery.cssHooks[ prop ] = addGetHookIf( support.pixelPosition, 10635 function( elem, computed ) { 10636 if ( computed ) { 10637 computed = curCSS( elem, prop ); 10638 10639 // If curCSS returns percentage, fallback to offset 10640 return rnumnonpx.test( computed ) ? 10641 jQuery( elem ).position()[ prop ] + "px" : 10642 computed; 10643 } 10644 } 10645 ); 10646} ); 10647 10648 10649// Create innerHeight, innerWidth, height, width, outerHeight and outerWidth methods 10650jQuery.each( { Height: "height", Width: "width" }, function( name, type ) { 10651 jQuery.each( { 10652 padding: "inner" + name, 10653 content: type, 10654 "": "outer" + name 10655 }, function( defaultExtra, funcName ) { 10656 10657 // Margin is only for outerHeight, outerWidth 10658 jQuery.fn[ funcName ] = function( margin, value ) { 10659 var chainable = arguments.length && ( defaultExtra || typeof margin !== "boolean" ), 10660 extra = defaultExtra || ( margin === true || value === true ? "margin" : "border" ); 10661 10662 return access( this, function( elem, type, value ) { 10663 var doc; 10664 10665 if ( isWindow( elem ) ) { 10666 10667 // $( window ).outerWidth/Height return w/h including scrollbars (gh-1729) 10668 return funcName.indexOf( "outer" ) === 0 ? 10669 elem[ "inner" + name ] : 10670 elem.document.documentElement[ "client" + name ]; 10671 } 10672 10673 // Get document width or height 10674 if ( elem.nodeType === 9 ) { 10675 doc = elem.documentElement; 10676 10677 // Either scroll[Width/Height] or offset[Width/Height] or client[Width/Height], 10678 // whichever is greatest 10679 return Math.max( 10680 elem.body[ "scroll" + name ], doc[ "scroll" + name ], 10681 elem.body[ "offset" + name ], doc[ "offset" + name ], 10682 doc[ "client" + name ] 10683 ); 10684 } 10685 10686 return value === undefined ? 10687 10688 // Get width or height on the element, requesting but not forcing parseFloat 10689 jQuery.css( elem, type, extra ) : 10690 10691 // Set width or height on the element 10692 jQuery.style( elem, type, value, extra ); 10693 }, type, chainable ? margin : undefined, chainable ); 10694 }; 10695 } ); 10696} ); 10697 10698 10699jQuery.each( [ 10700 "ajaxStart", 10701 "ajaxStop", 10702 "ajaxComplete", 10703 "ajaxError", 10704 "ajaxSuccess", 10705 "ajaxSend" 10706], function( _i, type ) { 10707 jQuery.fn[ type ] = function( fn ) { 10708 return this.on( type, fn ); 10709 }; 10710} ); 10711 10712 10713 10714 10715jQuery.fn.extend( { 10716 10717 bind: function( types, data, fn ) { 10718 return this.on( types, null, data, fn ); 10719 }, 10720 unbind: function( types, fn ) { 10721 return this.off( types, null, fn ); 10722 }, 10723 10724 delegate: function( selector, types, data, fn ) { 10725 return this.on( types, selector, data, fn ); 10726 }, 10727 undelegate: function( selector, types, fn ) { 10728 10729 // ( namespace ) or ( selector, types [, fn] ) 10730 return arguments.length === 1 ? 10731 this.off( selector, "**" ) : 10732 this.off( types, selector || "**", fn ); 10733 }, 10734 10735 hover: function( fnOver, fnOut ) { 10736 return this.mouseenter( fnOver ).mouseleave( fnOut || fnOver ); 10737 } 10738} ); 10739 10740jQuery.each( 10741 ( "blur focus focusin focusout resize scroll click dblclick " + 10742 "mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " + 10743 "change select submit keydown keypress keyup contextmenu" ).split( " " ), 10744 function( _i, name ) { 10745 10746 // Handle event binding 10747 jQuery.fn[ name ] = function( data, fn ) { 10748 return arguments.length > 0 ? 10749 this.on( name, null, data, fn ) : 10750 this.trigger( name ); 10751 }; 10752 } 10753); 10754 10755 10756 10757 10758// Support: Android <=4.0 only 10759// Make sure we trim BOM and NBSP 10760var rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g; 10761 10762// Bind a function to a context, optionally partially applying any 10763// arguments. 10764// jQuery.proxy is deprecated to promote standards (specifically Function#bind) 10765// However, it is not slated for removal any time soon 10766jQuery.proxy = function( fn, context ) { 10767 var tmp, args, proxy; 10768 10769 if ( typeof context === "string" ) { 10770 tmp = fn[ context ]; 10771 context = fn; 10772 fn = tmp; 10773 } 10774 10775 // Quick check to determine if target is callable, in the spec 10776 // this throws a TypeError, but we will just return undefined. 10777 if ( !isFunction( fn ) ) { 10778 return undefined; 10779 } 10780 10781 // Simulated bind 10782 args = slice.call( arguments, 2 ); 10783 proxy = function() { 10784 return fn.apply( context || this, args.concat( slice.call( arguments ) ) ); 10785 }; 10786 10787 // Set the guid of unique handler to the same of original handler, so it can be removed 10788 proxy.guid = fn.guid = fn.guid || jQuery.guid++; 10789 10790 return proxy; 10791}; 10792 10793jQuery.holdReady = function( hold ) { 10794 if ( hold ) { 10795 jQuery.readyWait++; 10796 } else { 10797 jQuery.ready( true ); 10798 } 10799}; 10800jQuery.isArray = Array.isArray; 10801jQuery.parseJSON = JSON.parse; 10802jQuery.nodeName = nodeName; 10803jQuery.isFunction = isFunction; 10804jQuery.isWindow = isWindow; 10805jQuery.camelCase = camelCase; 10806jQuery.type = toType; 10807 10808jQuery.now = Date.now; 10809 10810jQuery.isNumeric = function( obj ) { 10811 10812 // As of jQuery 3.0, isNumeric is limited to 10813 // strings and numbers (primitives or objects) 10814 // that can be coerced to finite numbers (gh-2662) 10815 var type = jQuery.type( obj ); 10816 return ( type === "number" || type === "string" ) && 10817 10818 // parseFloat NaNs numeric-cast false positives ("") 10819 // ...but misinterprets leading-number strings, particularly hex literals ("0x...") 10820 // subtraction forces infinities to NaN 10821 !isNaN( obj - parseFloat( obj ) ); 10822}; 10823 10824jQuery.trim = function( text ) { 10825 return text == null ? 10826 "" : 10827 ( text + "" ).replace( rtrim, "" ); 10828}; 10829 10830 10831 10832// Register as a named AMD module, since jQuery can be concatenated with other 10833// files that may use define, but not via a proper concatenation script that 10834// understands anonymous AMD modules. A named AMD is safest and most robust 10835// way to register. Lowercase jquery is used because AMD module names are 10836// derived from file names, and jQuery is normally delivered in a lowercase 10837// file name. Do this after creating the global so that if an AMD module wants 10838// to call noConflict to hide this version of jQuery, it will work. 10839 10840// Note that for maximum portability, libraries that are not jQuery should 10841// declare themselves as anonymous modules, and avoid setting a global if an 10842// AMD loader is present. jQuery is a special case. For more information, see 10843// https://github.com/jrburke/requirejs/wiki/Updating-existing-libraries#wiki-anon 10844 10845if ( typeof define === "function" && define.amd ) { 10846 define( "jquery", [], function() { 10847 return jQuery; 10848 } ); 10849} 10850 10851 10852 10853 10854var 10855 10856 // Map over jQuery in case of overwrite 10857 _jQuery = window.jQuery, 10858 10859 // Map over the $ in case of overwrite 10860 _$ = window.$; 10861 10862jQuery.noConflict = function( deep ) { 10863 if ( window.$ === jQuery ) { 10864 window.$ = _$; 10865 } 10866 10867 if ( deep && window.jQuery === jQuery ) { 10868 window.jQuery = _jQuery; 10869 } 10870 10871 return jQuery; 10872}; 10873 10874// Expose jQuery and $ identifiers, even in AMD 10875// (#7102#comment:10, https://github.com/jquery/jquery/pull/557) 10876// and CommonJS for browser emulators (#13566) 10877if ( typeof noGlobal === "undefined" ) { 10878 window.jQuery = window.$ = jQuery; 10879} 10880 10881 10882
vendor: 8,130 bytes, lines 10883-10888
10883 10884return jQuery; 10885} ); 10886 10887/*SIGUIENTE LIBRERIA*/ 10888!function(i){"use strict";"function"==typeof define&&define.amd?define(["jquery"],i):"undefined"!=typeof exports?module.exports=i(require("jquery")):i(jQuery)}(function(i){"use strict";var e=window.Slick||{};(e=function(){var e=0;return function(t,o){var s,n=this;n.defaults={accessibility:!0,adaptiveHeight:!1,appendArrows:i(t),appendDots:i(t),arrows:!0,asNavFor:null,prevArrow:'<button class="slick-prev" aria-label="Previous" type="button">Previous</button>',nextArrow:'<button class="slick-next" aria-label="Next" type="button">Next</button>',autoplay:!1,autoplaySpeed:3e3,centerMode:!1,centerPadding:"50px",cssEase:"ease",customPaging:function(e,t){return i('<button type="button" />').text(t+1)},dots:!1,dotsClass:"slick-dots",draggable:!0,easing:"linear",edgeFriction:.35,fade:!1,focusOnSelect:!1,focusOnChange:!1,infinite:!0,initialSlide:0,lazyLoad:"ondemand",mobileFirst:!1,pauseOnHover:!0,pauseOnFocus:!0,pauseOnDotsHover:!1,respondTo:"window",responsive:null,rows:1,rtl:!1,slide:"",slidesPerRow:1,slidesToShow:1,slidesToScroll:1,speed:500,swipe:!0,swipeToSlide:!1,touchMove:!0,touchThreshold:5,useCSS:!0,useTransform:!0,variableWidth:!1,vertical:!1,verticalSwiping:!1,waitForAnimate:!0,zIndex:1e3},n.initials={animating:!1,dragging:!1,autoPlayTimer:null,currentDirection:0,currentLeft:null,currentSlide:0,direction:1,$dots:null,listWidth:null,listHeight:null,loadIndex:0,$nextArrow:null,$prevArrow:null,scrolling:!1,slideCount:null,slideWidth:null,$slideTrack:null,$slides:null,sliding:!1,slideOffset:0,swipeLeft:null,swiping:!1,$list:null,touchObject:{},transformsEnabled:!1,unslicked:!1},i.extend(n,n.initials),n.activeBreakpoint=null,n.animType=null,n.animProp=null,n.breakpoints=[],n.breakpointSettings=[],n.cssTransitions=!1,n.focussed=!1,n.interrupted=!1,n.hidden="hidden",n.paused=!0,n.positionProp=null,n.respondTo=null,n.rowCount=1,n.shouldClick=!0,n.$slider=i(t),n.$slidesCache=null,n.transformType=null,n.transitionType=null,n.visibilityChange="visibilitychange",n.windowWidth=0,n.windowTimer=null,s=i(t).data("slick")||{},n.options=i.extend({},n.defaults,o,s),n.currentSlide=n.options.initialSlide,n.originalSettings=n.options,void 0!==document.mozHidden?(n.hidden="mozHidden",n.visibilityChange="mozvisibilitychange"):void 0!==document.webkitHidden&&(n.hidden="webkitHidden",n.visibilityChange="webkitvisibilitychange"),n.autoPlay=i.proxy(n.autoPlay,n),n.autoPlayClear=i.proxy(n.autoPlayClear,n),n.autoPlayIterator=i.proxy(n.autoPlayIterator,n),n.changeSlide=i.proxy(n.changeSlide,n),n.clickHandler=i.proxy(n.clickHandler,n),n.selectHandler=i.proxy(n.selectHandler,n),n.setPosition=i.proxy(n.setPosition,n),n.swipeHandler=i.proxy(n.swipeHandler,n),n.dragHandler=i.proxy(n.dragHandler,n),n.keyHandler=i.proxy(n.keyHandler,n),n.instanceUid=e++,n.htmlExpr=/^(?:\s*(<[\w\W]+>)[^>]*)$/,n.registerBreakpoints(),n.init(!0)}}()).prototype.activateADA=function(){this.$slideTrack.find(".slick-active").attr({"aria-hidden":"false"}).find("a, input, button, select").attr({tabindex:"0"})},e.prototype.addSlide=e.prototype.slickAdd=function(e,t,o){var s=this;if("boolean"==typeof t)o=t,t=null;else if(t<0||t>=s.slideCount)return!1;s.unload(),"number"==typeof t?0===t&&0===s.$slides.length?i(e).appendTo(s.$slideTrack):o?i(e).insertBefore(s.$slides.eq(t)):i(e).insertAfter(s.$slides.eq(t)):!0===o?i(e).prependTo(s.$slideTrack):i(e).appendTo(s.$slideTrack),s.$slides=s.$slideTrack.children(this.options.slide),s.$slideTrack.children(this.options.slide).detach(),s.$slideTrack.append(s.$slides),s.$slides.each(function(e,t){i(t).attr("data-slick-index",e)}),s.$slidesCache=s.$slides,s.reinit()},e.prototype.animateHeight=function(){var i=this;if(1===i.options.slidesToShow&&!0===i.options.adaptiveHeight&&!1===i.options.vertical){var e=i.$slides.eq(i.currentSlide).outerHeight(!0);i.$list.animate({height:e},i.options.speed)}},e.prototype.animateSlide=function(e,t){var o={},s=this;s.animateHeight(),!0===s.options.rtl&&!1===s.options.vertical&&(e=-e),!1===s.transformsEnabled?!1===s.options.vertical?s.$slideTrack.animate({left:e},s.options.speed,s.options.easing,t):s.$slideTrack.animate({top:e},s.options.speed,s.options.easing,t):!1===s.cssTransitions?(!0===s.options.rtl&&(s.currentLeft=-s.currentLeft),i({animStart:s.currentLeft}).animate({animStart:e},{duration:s.options.speed,easing:s.options.easing,step:function(i){i=Math.ceil(i),!1===s.options.vertical?(o[s.animType]="translate("+i+"px, 0px)",s.$slideTrack.css(o)):(o[s.animType]="translate(0px,"+i+"px)",s.$slideTrack.css(o))},complete:function(){t&&t.call()}})):(s.applyTransition(),e=Math.ceil(e),!1===s.options.vertical?o[s.animType]="translate3d("+e+"px, 0px, 0px)":o[s.animType]="translate3d(0px,"+e+"px, 0px)",s.$slideTrack.css(o),t&&setTimeout(function(){s.disableTransition(),t.call()},s.options.speed))},e.prototype.getNavTarget=function(){var e=this,t=e.options.asNavFor;return t&&null!==t&&(t=i(t).not(e.$slider)),t},e.prototype.asNavFor=function(e){var t=this.getNavTarget();null!==t&&"object"==typeof t&&t.each(function(){var t=i(this).slick("getSlick");t.unslicked||t.slideHandler(e,!0)})},e.prototype.applyTransition=function(i){var e=this,t={};!1===e.options.fade?t[e.transitionType]=e.transformType+" "+e.options.speed+"ms "+e.options.cssEase:t[e.transitionType]="opacity "+e.options.speed+"ms "+e.options.cssEase,!1===e.options.fade?e.$slideTrack.css(t):e.$slides.eq(i).css(t)},e.prototype.autoPlay=function(){var i=this;i.autoPlayClear(),i.slideCount>i.options.slidesToShow&&(i.autoPlayTimer=setInterval(i.autoPlayIterator,i.options.autoplaySpeed))},e.prototype.autoPlayClear=function(){var i=this;i.autoPlayTimer&&clearInterval(i.autoPlayTimer)},e.prototype.autoPlayIterator=function(){var i=this,e=i.currentSlide+i.options.slidesToScroll;i.paused||i.interrupted||i.focussed||(!1===i.options.infinite&&(1===i.direction&&i.currentSlide+1===i.slideCount-1?i.direction=0:0===i.direction&&(e=i.currentSlide-i.options.slidesToScroll,i.currentSlide-1==0&&(i.direction=1))),i.slideHandler(e))},e.prototype.buildArrows=function(){var e=this;!0===e.options.arrows&&(e.$prevArrow=i(e.options.prevArrow).addClass("slick-arrow"),e.$nextArrow=i(e.options.nextArrow).addClass("slick-arrow"),e.slideCount>e.options.slidesToShow?(e.$prevArrow.removeClass("slick-hidden").removeAttr("aria-hidden tabindex"),e.$nextArrow.removeClass("slick-hidden").removeAttr("aria-hidden tabindex"),e.htmlExpr.test(e.options.prevArrow)&&e.$prevArrow.prependTo(e.options.appendArrows),e.htmlExpr.test(e.options.nextArrow)&&e.$nextArrow.appendTo(e.options.appendArrows),!0!==e.options.infinite&&e.$prevArrow.addClass("slick-disabled").attr("aria-disabled","true")):e.$prevArrow.add(e.$nextArrow).addClass("slick-hidden").attr({"aria-disabled":"true",tabindex:"-1"}))},e.prototype.buildDots=function(){var e,t,o=this;if(!0===o.options.dots){for(o.$slider.addClass("slick-dotted"),t=i("<ul />").addClass(o.options.dotsClass),e=0;e<=o.getDotCount();e+=1)t.append(i("<li />").append(o.options.customPaging.call(this,o,e)));o.$dots=t.appendTo(o.options.appendDots),o.$dots.find("li").first().addClass("slick-active")}},e.prototype.buildOut=function(){var e=this;e.$slides=e.$slider.children(e.options.slide+":not(.slick-cloned)").addClass("slick-slide"),e.slideCount=e.$slides.length,e.$slides.each(function(e,t){i(t).attr("data-slick-index",e).data("originalStyling",i(t).attr("style")||"")}),e.$slider.addClass("slick-slider"),e.$slideTrack=0===e.slideCount?i('<div class="slick-track"/>').appendTo(e.$slider):e.$slides.wrapAll('<div class="slick-track"/>').parent(),e.$list=e.$slideTrack.wrap('<div class="slick-list"/>').parent(),e.$slideTrack.css("opacity",0),!0!==e.options.centerMode&&!0!==e.options.swipeToSlide||(e.options.slidesToScroll=1),i("img[data-lazy]",e.$slider).not("[src]").addClass("slick-loading"),e.setupInfinite(),e.buildArrows(),e.buildDots(),e.updateDots(),e.setSlideClasses("number"==typeof e.currentSlide?e.currentSlide:0),!0===e.options.draggable&&e.$list.addClass("draggable")},e.prototype.buildRows=function(){var i,e,t,o,s,n,r,l=this;if(o=document.createDocumentFragment(),n=l.$slider.children(),l.o
vendor: 3,442 bytes, line 10888
10888ptions.rows>1){for(r=l.options.slidesPerRow*l.options.rows,s=Math.ceil(n.length/r),i=0;i<s;i++){var d=document.createElement("div");for(e=0;e<l.options.rows;e++){var a=document.createElement("div");for(t=0;t<l.options.slidesPerRow;t++){var c=i*r+(e*l.options.slidesPerRow+t);n.get(c)&&a.appendChild(n.get(c))}d.appendChild(a)}o.appendChild(d)}l.$slider.empty().append(o),l.$slider.children().children().children().css({width:100/l.options.slidesPerRow+"%",display:"inline-block"})}},e.prototype.checkResponsive=function(e,t){var o,s,n,r=this,l=!1,d=r.$slider.width(),a=window.innerWidth||i(window).width();if("window"===r.respondTo?n=a:"slider"===r.respondTo?n=d:"min"===r.respondTo&&(n=Math.min(a,d)),r.options.responsive&&r.options.responsive.length&&null!==r.options.responsive){s=null;for(o in r.breakpoints)r.breakpoints.hasOwnProperty(o)&&(!1===r.originalSettings.mobileFirst?n<r.breakpoints[o]&&(s=r.breakpoints[o]):n>r.breakpoints[o]&&(s=r.breakpoints[o]));null!==s?null!==r.activeBreakpoint?(s!==r.activeBreakpoint||t)&&(r.activeBreakpoint=s,"unslick"===r.breakpointSettings[s]?r.unslick(s):(r.options=i.extend({},r.originalSettings,r.breakpointSettings[s]),!0===e&&(r.currentSlide=r.options.initialSlide),r.refresh(e)),l=s):(r.activeBreakpoint=s,"unslick"===r.breakpointSettings[s]?r.unslick(s):(r.options=i.extend({},r.originalSettings,r.breakpointSettings[s]),!0===e&&(r.currentSlide=r.options.initialSlide),r.refresh(e)),l=s):null!==r.activeBreakpoint&&(r.activeBreakpoint=null,r.options=r.originalSettings,!0===e&&(r.currentSlide=r.options.initialSlide),r.refresh(e),l=s),e||!1===l||r.$slider.trigger("breakpoint",[r,l])}},e.prototype.changeSlide=function(e,t){var o,s,n,r=this,l=i(e.currentTarget);switch(l.is("a")&&e.preventDefault(),l.is("li")||(l=l.closest("li")),n=r.slideCount%r.options.slidesToScroll!=0,o=n?0:(r.slideCount-r.currentSlide)%r.options.slidesToScroll,e.data.message){case"previous":s=0===o?r.options.slidesToScroll:r.options.slidesToShow-o,r.slideCount>r.options.slidesToShow&&r.slideHandler(r.currentSlide-s,!1,t);break;case"next":s=0===o?r.options.slidesToScroll:o,r.slideCount>r.options.slidesToShow&&r.slideHandler(r.currentSlide+s,!1,t);break;case"index":var d=0===e.data.index?0:e.data.index||l.index()*r.options.slidesToScroll;r.slideHandler(r.checkNavigable(d),!1,t),l.children().trigger("focus");break;default:return}},e.prototype.checkNavigable=function(i){var e,t;if(e=this.getNavigableIndexes(),t=0,i>e[e.length-1])i=e[e.length-1];else for(var o in e){if(i<e[o]){i=t;break}t=e[o]}return i},e.prototype.cleanUpEvents=function(){var e=this;e.options.dots&&null!==e.$dots&&(i("li",e.$dots).off("click.slick",e.changeSlide).off("mouseenter.slick",i.proxy(e.interrupt,e,!0)).off("mouseleave.slick",i.proxy(e.interrupt,e,!1)),!0===e.options.accessibility&&e.$dots.off("keydown.slick",e.keyHandler)),e.$slider.off("focus.slick blur.slick"),!0===e.options.arrows&&e.slideCount>e.options.slidesToShow&&(e.$prevArrow&&e.$prevArrow.off("click.slick",e.changeSlide),e.$nextArrow&&e.$nextArrow.off("click.slick",e.changeSlide),!0===e.options.accessibility&&(e.$prevArrow&&e.$prevArrow.off("keydown.slick",e.keyHandler),e.$nextArrow&&e.$nextArrow.off("keydown.slick",e.keyHandler))),e.$list.off("touchstart.slick mousedown.slick",e.swipeHandler),e.$list.off("touchmove.slick mousemove.slick",e.swipeHandler),e.$list.off("touchend.slick mouseup.slick",e.swipeHandler),e.$list.off("touchcancel.slick mouseleave.
10888slick",e.swipeHandler),e.$list.off("click.slick",e.clickHandler),i(document).off(e.visibilityChange,e.visibility),e.cleanUpSlideEvents(),!0===e.options.accessibility&&e.$list.off("keydown.slick",e.keyHandler),!0===e.options.focusOnSelect&&i(e.$slideTrack).children().off("click.slick",e.selectHandler),i(window).off("orientationchange.slick.slick-"+e.instanceUid,e.orientationChange),i(window).off("resize.slick.slick-"+e.instanceUid,e.resize),i("[draggable!=true]",e.$slideTrack).off("dragstart",e.preventDefault),i(window).off("load.slick.slick-"+e.instanceUid,e.setPosition)},e.prototype.cleanUpSlideEvents=function(){var e=this;e.$list.off("mouseenter.slick",i.proxy(e.interrupt,e,!0)),e.$list.off("mouseleave.slick",i.proxy(e.interrupt,e,!1))},e.prototype.cleanUpRows=function(){var i,e=this;e.options.rows>1&&((i=e.$slides.children().children()).removeAttr("style"),e.$slider.empty().append(i))},e.prototype.clickHandler=function(i){!1===this.shouldClick&&(i.stopImmediatePropagation(),i.stopPropagation(),i.preventDefault())},e.prototype.destroy=function(e){var t=this;t.autoPlayClear(),t.touchObject={},t.cleanUpEvents(),i(".slick-cloned",t.$slider).detach(),t.$dots&&t.$dots.remove(),t.$prevArrow&&t.$prevArrow.length&&(t.$prevArrow.removeClass("slick-disabled slick-arrow slick-hidden").removeAttr("aria-hidden aria-disabled tabindex").css("display",""),t.htmlExpr.test(t.options.prevArrow)&&t.$prevArrow.remove()),t.$nextArrow&&t.$nextArrow.length&&(t.$nextArrow.removeClass("slick-disabled slick-arrow slick-hidden").removeAttr("aria-hidden aria-disabled tabindex").css("display",""),t.htmlExpr.test(t.options.nextArrow)&&t.$nextArrow.remove()),t.$slides&&(t.$slides.removeClass("slick-slide slick-active slick-center slick-visible slick-current").removeAttr("aria-hidden").removeAttr("data-slick-index").each(function(){i(this).attr("style",i(this).data("originalStyling"))}),t.$slideTrack.children(this.options.slide).detach(),t.$slideTrack.detach(),t.$list.detach(),t.$slider.append(t.$slides)),t.cleanUpRows(),t.$slider.removeClass("slick-slider"),t.$slider.removeClass("slick-initialized"),t.$slider.removeClass("slick-dotted"),t.unslicked=!0,e||t.$slider.trigger("destroy",[t])},e.prototype.disableTransition=function(i){var e=this,t={};t[e.transitionType]="",!1===e.options.fade?e.$slideTrack.css(t):e.$slides.eq(i).css(t)},e.prototype.fadeSlide=function(i,e){var t=this;!1===t.cssTransitions?(t.$slides.eq(i).css({zIndex:t.options.zIndex}),t.$slides.eq(i).animate({opacity:1},t.options.speed,t.options.easing,e)):(t.applyTransition(i),t.$slides.eq(i).css({opacity:1,zIndex:t.options.zIndex}),e&&setTimeout(function(){t.disableTransition(i),e.call()},t.options.speed))},e.prototype.fadeSlideOut=function(i){var e=this;!1===e.cssTransitions?e.$slides.eq(i).animate({opacity:0,zIndex:e.options.zIndex-2},e.options.speed,e.options.easing):(e.applyTransition(i),e.$slides.eq(i).css({opacity:0,zIndex:e.options.zIndex-2}))},e.prototype.filterSlides=e.prototype.slickFilter=function(i){var e=this;null!==i&&(e.$slidesCache=e.$slides,e.unload(),e.$slideTrack.children(this.options.slide).detach(),e.$slidesCache.filter(i).appendTo(e.$slideTrack),e.reinit())},e.prototype.focusHandler=function(){var e=this;e.$slider.off("focus.slick blur.slick").on("focus.slick blur.slick","*",function(t){t.stopImmediatePropagation();var o=i(this);setTimeout(function(){e.options.pauseOnFocus&&(e.focussed=o.is(":focus"),e.autoPlay())},0)})},e.prototype.getCurrent=e.prototype.slickCurrentSlide=function(){return this.currentSlide},e.prototype.getDotCount=function(){var i=this,e=0,t=0,o=0;if(!0===i.options.infinite)if(i.slideCount<=i.options.slidesToShow)++o;else for(;e<i.slideCount;)++o,e=t+i.options.slidesToScroll,t+=i.options.slidesToScroll<=i.options.slidesToShow?i.options.slidesToScroll:i.options.slidesToShow;else if(!0===i.options.centerMode)o=i.slideCount;else if(i.options.asNavFor)for(;e<i.slideCount;)++o,e=t+i.options.slidesToScroll,t+=i.options.slidesToScroll<=i.options.slidesToShow?i.options.slidesToScroll:i.options.slidesToShow;else o=1+Math.ceil((i.slideCount-i.options.slidesToShow)/i.options.slidesToScroll);return o-1},e.prototype.getLeft=function(i){var e,t,o,s,n=this,r=0;return n.slideOffset=0,t=n.$slides.first().outerHeight(!0),!0===n.options.infinite?(n.slideCount>n.options.slidesToShow&&(n.slideOffset=n.slideWidth*n.options.slidesToShow*-1,s=-1,!0===n.options.vertical&&!0===n.options.centerMode&&(2===n.options.slidesToShow?s=-1.5:1===n.options.slidesToShow&&(s=-2)),r=t*n.options.slidesToShow*s),n.slideCount%n.options.slidesToScroll!=0&&i+n.options.slidesToScroll>n.slideCount&&n.slideCount>n.options.slidesToShow&&(i>n.slideCount?(n.slideOffset=(n.options.slidesToShow-(i-n.slideCount))*n.slideWidth*-1,r=(n.options.slidesToShow-(i-n.slideCount))*t*-1):(n.slideOffset=n.slideCount%n.options.slidesToScroll*n.slideWidth*-1,r=n.slideCount%n.options.slidesToScroll*t*-1))):i+n.options.slidesToShow>n.slideCount&&(n.slideOffset=(i+n.options.slidesToShow-n.slideCount)*n.slideWidth,r=(i+n.options.slidesToShow-n.slideCount)*t),n.slideCount<=n.options.slidesToShow&&(n.slideOffset=0,r=0),!0===n.options.centerMode&&n.slideCount<=n.options.slidesToShow?n.slideOffset=n.slideWidth*Math.floor(n.options.slidesToShow)/2-n.slideWidth*n.slideCount/2:!0===n.options.centerMode&&!0===n.options.infinite?n.slideOffset+=n.slideWidth*Math.floor(n.options.slidesToShow/2)-n.slideWidth:!0===n.options.centerMode&&(n.slideOffset=0,n.slideOffset+=n.slideWidth*Math.floor(n.options.slidesToShow/2)),e=!1===n.options.vertical?i*n.slideWidth*-1+n.slideOffset:i*t*-1+r,!0===n.options.variableWidth&&(o=n.slideCount<=n.options.slidesToShow||!1===n.options.infinite?n.$slideTrack.children(".slick-slide").eq(i):n.$slideTrack.children(".slick-slide").eq(i+n.options.slidesToShow),e=!0===n.options.rtl?o[0]?-1*(n.$slideTrack.width()-o[0].offsetLeft-o.width()):0:o[0]?-1*o[0].offsetLeft:0,!0===n.options.centerMode&&(o=n.slideCount<=n.options.slidesToShow||!1===n.options.infinite?n.$slideTrack.children(".slick-slide").eq(i):n.$slideTrack.children(".slick-slide").eq(i+n.options.slidesToShow+1),e=!0===n.options.rtl?o[0]?-1*(n.$slideTrack.width()-o[0].offsetLeft-o.width()):0:o[0]?-1*o[0].offsetLeft:0,e+=(n.$list.width()-o.outerWidth())/2)),e},e.prototype.getOption=e.prototype.slickGetOption=function(i){return this.options[i]},e.prototype.getNavigableIndexes=function(){var i,e=this,t=0,o=0,s=[];for(!1===e.options.infinite?i=e.slideCount:(t=-1*e.options.slidesToScroll,o=-1*e.options.slidesToScroll,i=2*e.slideCount);t<i;)s.push(t),t=o+e.options.slidesToScroll,o+=e.options.slidesToScroll<=e.options.slidesToShow?e.options.slidesToScroll:e.options.slidesToShow;return s},e.prototype.getSlick=function(){return this},e.prototype.getSlideCount=function(){var e,t,o=this;return t=!0===o.options.centerMode?o.slideWidth*Math.floor(o.options.slidesToShow/2):0,!0===o.options.swipeToSlide?(o.$slideTrack.find(".slick-slide").each(function(s,n){if(n.offsetLeft-t+i(n).outerWidth()/2>-1*o.swipeLeft)return e=n,!1}),Math.abs(i(e).attr("data-slick-index")-o.currentSlide)||1):o.options.slidesToScroll},e.prototype.goTo=e.prototype.slickGoTo=function(i,e){this.changeSlide({data:{message:"index",index:
10888parseInt(i)}},e)},e.prototype.init=function(e){var t=this;i(t.$slider).hasClass("slick-initialized")||(i(t.$slider).addClass("slick-initialized"),t.buildRows(),t.buildOut(),t.setProps(),t.startLoad(),t.loadSlider(),t.initializeEvents(),t.updateArrows(),t.updateDots(),t.checkResponsive(!0),t.focusHandler()),e&&t.$slider.trigger("init",[t]),!0===t.options.accessibility&&t.initADA(),t.options.autoplay&&(t.paused=!1,t.autoPlay())},e.prototype.initADA=function(){var e=this,t=Math.ceil(e.slideCount/e.options.slidesToShow),o=e.getNavigableIndexes().filter(function(i){return i>=0&&i<e.slideCount});e.$slides.add(e.$slideTrack.find(".slick-cloned")).attr({"aria-hidden":"true",tabindex:"-1"}).find("a, input, button, select").attr({tabindex:"-1"}),null!==e.$dots&&(e.$slides.not(e.$slideTrack.find(".slick-cloned")).each(function(t){var s=o.indexOf(t);i(this).attr({role:"tabpanel",id:"slick-slide"+e.instanceUid+t,tabindex:-1}),-1!==s&&i(this).attr({"aria-describedby":"slick-slide-control"+e.instanceUid+s})}),e.$dots.attr("role","tablist").find("li").each(function(s){var n=o[s];i(this).attr({role:"presentation"}),i(this).find("button").first().attr({role:"tab",id:"slick-slide-control"+e.instanceUid+s,"aria-controls":"slick-slide"+e.instanceUid+n,"aria-label":s+1+" of "+t,"aria-selected":null,tabindex:"-1"})}).eq(e.currentSlide).find("button").attr({"aria-selected":"true",tabindex:"0"}).end());for(var s=e.currentSlide,n=s+e.options.slidesToShow;s<n;s++)e.$slides.eq(s).attr("tabindex",0);e.activateADA()},e.prototype.initArrowEvents=function(){var i=this;!0===i.options.arrows&&i.slideCount>i.options.slidesToShow&&(i.$prevArrow.off("click.slick").on("click.slick",{message:"previous"},i.changeSlide),i.$nextArrow.off("click.slick").on("click.slick",{message:"next"},i.changeSlide),!0===i.options.accessibility&&(i.$prevArrow.on("keydown.slick",i.keyHandler),i.$nextArrow.on("keydown.slick",i.keyHandler)))},e.prototype.initDotEvents=function(){var e=this;!0===e.options.dots&&(i("li",e.$dots).on("click.slick",{message:"index"},e.changeSlide),!0===e.options.accessibility&&e.$dots.on("keydown.slick",e.keyHandler)),!0===e.options.dots&&!0===e.options.pauseOnDotsHover&&i("li",e.$dots).on("mouseenter.slick",i.proxy(e.interrupt,e,!0)).on("mouseleave.slick",i.proxy(e.interrupt,e,!1))},e.prototype.initSlideEvents=function(){var e=this;e.options.pauseOnHover&&(e.$list.on("mouseenter.slick",i.proxy(e.interrupt,e,!0)),e.$list.on("mouseleave.slick",i.proxy(e.interrupt,e,!1)))},e.prototype.initializeEvents=function(){var e=this;e.initArrowEvents(),e.initDotEvents(),e.initSlideEvents(),e.$list.on("touchstart.slick mousedown.slick",{action:"start"},e.swipeHandler),e.$list.on("touchmove.slick mousemove.slick",{action:"move"},e.swipeHandler),e.$list.on("touchend.slick mouseup.slick",{action:"end"}
10888,e.swipeHandler),e.$list.on("touchcancel.slick mouseleave.slick",{action:"end"},e.swipeHandler),e.$list.on("click.slick",e.clickHandler),i(document).on(e.visibilityChange,i.proxy(e.visibility,e)),!0===e.options.accessibility&&e.$list.on("keydown.slick",e.keyHandler),!0===e.options.focusOnSelect&&i(e.$slideTrack).children().on("click.slick",e.selectHandler),i(window).on("orientationchange.slick.slick-"+e.instanceUid,i.proxy(e.orientationChange,e)),i(window).on("resize.slick.slick-"+e.instanceUid,i.proxy(e.resize,e)),i("[draggable!=true]",e.$slideTrack).on("dragstart",e.preventDefault),i(window).on("load.slick.slick-"+e.instanceUid,e.setPosition),i(e.setPosition)},e.prototype.initUI=function(){var i=this;!0===i.options.arrows&&i.slideCount>i.options.slidesToShow&&(i.$prevArrow.show(),i.$nextArrow.show()),!0===i.options.dots&&i.slideCount>i.options.slidesToShow&&i.$dots.show()},e.prototype.keyHandler=function(i){var e=this;i.target.tagName.match("TEXTAREA|INPUT|SELECT")||(37===i.keyCode&&!0===e.options.accessibility?e.changeSlide({data:{message:!0===e.options.rtl?"next":"previous"}}):39===i.keyCode&&!0===e.options.accessibility&&e.changeSlide({data:{message:!0===e.options.rtl?"previous":"next"}}))},e.prototype.lazyLoad=function(){function e(e){i("img[data-lazy]",e).each(function(){var e=i(this),t=i(this).attr("data-lazy"),o=i(this).attr("data-srcset"),s=i(this).attr("data-sizes")||n.$slider.attr("data-sizes"),r=document.createElement("img");r.onload=function(){e.animate({opacity:0}
vendor: 5,619 bytes, line 10888
10888,100,function(){o&&(e.attr("srcset",o),s&&e.attr("sizes",s)),e.attr("src",t).animate({opacity:1},200,function(){e.removeAttr("data-lazy data-srcset data-sizes").removeClass("slick-loading")}),n.$slider.trigger("lazyLoaded",[n,e,t])})},r.onerror=function(){e.removeAttr("data-lazy").removeClass("slick-loading").addClass("slick-lazyload-error"),n.$slider.trigger("lazyLoadError",[n,e,t])},r.src=t})}var t,o,s,n=this;if(!0===n.options.centerMode?!0===n.options.infinite?s=(o=n.currentSlide+(n.options.slidesToShow/2+1))+n.options.slidesToShow+2:(o=Math.max(0,n.currentSlide-(n.options.slidesToShow/2+1)),s=n.options.slidesToShow/2+1+2+n.currentSlide):(o=n.options.infinite?n.options.slidesToShow+n.currentSlide:n.currentSlide,s=Math.ceil(o+n.options.slidesToShow),!0===n.options.fade&&(o>0&&o--,s<=n.slideCount&&s++)),t=n.$slider.find(".slick-slide").slice(o,s),"anticipated"===n.options.lazyLoad)for(var r=o-1,l=s,d=n.$slider.find(".slick-slide"),a=0;a<n.options.slidesToScroll;a++)r<0&&(r=n.slideCount-1),t=(t=t.add(d.eq(r))).add(d.eq(l)),r--,l++;e(t),n.slideCount<=n.options.slidesToShow?e(n.$slider.find(".slick-slide")):n.currentSlide>=n.slideCount-n.options.slidesToShow?e(n.$slider.find(".slick-cloned").slice(0,n.options.slidesToShow)):0===n.currentSlide&&e(n.$slider.find(".slick-cloned").slice(-1*n.options.slidesToShow))},e.prototype.loadSlider=function(){var i=this;i.setPosition(),i.$slideTrack.css({opacity:1}),i.$slider.removeClass("slick-loading"),i.initUI(),"progressive"===i.options.lazyLoad&&i.progressiveLazyLoad()},e.prototype.next=e.prototype.slickNext=function(){this.changeSlide({data:{message:"next"}})},e.prototype.orientationChange=function(){var i=this;i.checkResponsive(),i.setPosition()},e.prototype.pause=e.prototype.slickPause=function(){var i=this;i.autoPlayClear(),i.paused=!0},e.prototype.play=e.prototype.slickPlay=function(){var i=this;i.autoPlay(),i.options.autoplay=!0,i.paused=!1,i.focussed=!1,i.interrupted=!1},e.prototype.postSlide=function(e){var t=this;t.unslicked||(t.$slider.trigger("afterChange",[t,e]),t.animating=!1,t.slideCount>t.options.slidesToShow&&t.setPosition(),t.swipeLeft=null,t.options.autoplay&&t.autoPlay(),!0===t.options.accessibility&&(t.initADA(),t.options.focusOnChange&&i(t.$slides.get(t.currentSlide)).attr("tabindex",0).focus()))},e.prototype.prev=e.prototype.slickPrev=function(){this.changeSlide({data:{message:"previous"}})},e.prototype.preventDefault=function(i){i.preventDefault()},e.prototype.progressiveLazyLoad=function(e){e=e||1;var t,o,s,n,r,l=this,d=i("img[data-lazy]",l.$slider);d.length?(t=d.first(),o=t.attr("data-lazy"),s=t.attr("data-srcset"),n=t.attr("data-sizes")||l.$slider.attr("data-sizes"),(r=document.createElement("img")).onload=function(){s&&(t.attr("srcset",s),n&&t.attr("sizes",n)),t.attr("src",o).removeAttr("data-lazy data-srcset data-sizes").removeClass("slick-loading"),!0===l.options.adaptiveHeight&&l.setPosition(),l.$slider.trigger("lazyLoaded",[l,t,o]),l.progressiveLazyLoad()},r.onerror=function(){e<3?setTimeout(function(){l.progressiveLazyLoad(e+1)},500):(t.removeAttr("data-lazy").removeClass("slick-loading").addClass("slick-lazyload-error"),l.$slider.trigger("lazyLoadError",[l,t,o]),l.progressiveLazyLoad())},r.src=o):l.$slider.trigger("allImagesLoaded",[l])},e.prototype.refresh=function(e){var t,o,s=this;o=s.slideCount-s.options.slidesToShow,!s.options.infinite&&s.currentSlide>o&&(s.currentSlide=o),s.slideCount<=s.options.slidesToShow&&(s.currentSlide=0),t=s.currentSlide,s.destroy(!0),i.extend(s,s.initials,{currentSlide:t}),s.init(),e||s.changeSlide({data:{message:"index",index:t}},!1)},e.prototype.registerBreakpoints=function(){var e,t,o,s=this,n=s.options.responsive||null;if("array"===i.type(n)&&n.length){s.respondTo=s.options.respondTo||"window";for(e in n)if(o=s.breakpoints.length-1,n.hasOwnProperty(e)){for(t=n[e].breakpoint;o>=0;)s.breakpoints[o]&&s.breakpoints[o]===t&&s.breakpoints.splice(o,1),o--;s.breakpoints.push(t),s.breakpointSettings[t]=n[e].settings}s.breakpoints.sort(function(i,e){return s.options.mobileFirst?i-e:e-i})}},e.prototype.reinit=function(){var e=this;e.$slides=e.$slideTrack.children(e.options.slide).addClass("slick-slide"),e.slideCount=e.$slides.length,e.currentSlide>=e.slideCount&&0!==e.currentSlide&&(e.currentSlide=e.currentSlide-e.options.slidesToScroll),e.slideCount<=e.options.slidesToShow&&(e.currentSlide=0),e.registerBreakpoints(),e.setProps(),e.setupInfinite(),e.buildArrows(),e.updateArrows(),e.initArrowEvents(),e.buildDots(),e.updateDots(),e.initDotEvents(),e.cleanUpSlideEvents(),e.initSlideEvents(),e.checkResponsive(!1,!0),!0===e.options.focusOnSelect&&i(e.$slideTrack).children().on("click.slick",e.selectHandler),e.setSlideClasses("number"==typeof e.currentSlide?e.currentSlide:0),e.setPosition(),e.focusHandler(),e.paused=!e.options.autoplay,e.autoPlay(),e.$slider.trigger("reInit",[e])},e.prototype.resize=function(){var e=this;i(window).width()!==e.windowWidth&&(clearTimeout(e.windowDelay),e.windowDelay=window.setTimeout(function(){e.windowWidth=i(window).width(),e.checkResponsive(),e.unslicked||e.setPosition()},50))},e.prototype.removeSlide=e.prototype.slickRemove=function(i,e,t){var o=this;if(i="boolean"==typeof i?!0===(e=i)?0:o.slideCount-1:!0===e?--i:i,o.slideCount<1||i<0||i>o.slideCount-1)return!1;o.unload(),!0===t?o.$slideTrack.children().remove():o.$slideTrack.children(this.options.slide).eq(i).remove(),o.$slides=o.$slideTrack.children(this.options.slide),o.$slideTrack.children(this.options.slide).detach(),o.$slideTrack.append(o.$slides),o.$slidesCache=o.$slides,o.reinit()},e.prototype.setCSS=function(i){var e,t,o=this,s={};
10888!0===o.options.rtl&&(i=-i),e="left"==o.positionProp?Math.ceil(i)+"px":"0px",t="top"==o.positionProp?Math.ceil(i)+"px":"0px",s[o.positionProp]=i,!1===o.transformsEnabled?o.$slideTrack.css(s):(s={},!1===o.cssTransitions?(s[o.animType]="translate("+e+", "+t+")",o.$slideTrack.css(s)):(s[o.animType]="translate3d("+e+", "+t+", 0px)",o.$slideTrack.css(s)))},e.prototype.setDimensions=function(){var i=this;!1===i.options.vertical?!0===i.options.centerMode&&i.$list.css({padding:"0px "+i.options.centerPadding}):(i.$list.height(i.$slides.first().outerHeight(!0)*i.options.slidesToShow),!0===i.options.centerMode&&i.$list.css({padding:i.options.centerPadding+" 0px"})),i.listWidth=i.$list.width(),i.listHeight=i.$list.height(),!1===i.options.vertical&&!1===i.options.variableWidth?(i.slideWidth=Math.ceil(i.listWidth/i.options.slidesToShow),i.$slideTrack.width(Math.ceil(i.slideWidth*i.$slideTrack.children(".slick-slide").length))):!0===i.options.variableWidth?i.$slideTrack.width(5e3*i.slideCount):(i.slideWidth=Math.ceil(i.listWidth),i.$slideTrack.height(Math.ceil(i.$slides.first().outerHeight(!0)*i.$slideTrack.children(".slick-slide").length)));var e=i.$slides.first().outerWidth(!0)-i.$slides.first().width();!1===i.options.variableWidth&&i.$slideTrack.children(".slick-slide").width(i.slideWidth-e)},e.prototype.setFade=function(){var e,t=this;t.$slides.each(function(o,s){e=t.slideWidth*o*-1,!0===t.options.rtl?i(s).css({position:"relative",right:e,top:0,zIndex:t.options.zIndex-2,opacity:0}
10888):i(s).css({position:"relative",left:e,top:0,zIndex:t.options.zIndex-2,opacity:0})}),t.$slides.eq(t.currentSlide).css({zIndex:t.options.zIndex-1,opacity:1})},e.prototype.setHeight=function(){var i=this;if(1===i.options.slidesToShow&&!0===i.options.adaptiveHeight&&!1===i.options.vertical){var e=i.$slides.eq(i.currentSlide).outerHeight(!0);i.$list.css("height",e)}},e.prototype.setOption=e.prototype.slickSetOption=function(){var e,t,o,s,n,r=this,l=!1;if("object"===i.type(arguments[0])?(o=arguments[0],l=arguments[1],n="multiple"):"string"===i.type(arguments[0])&&(o=arguments[0],s=arguments[1],l=arguments[2],"responsive"===arguments[0]&&"array"===i.type(arguments[1])?n="responsive":void 0!==arguments[1]&&(n="single")),"single"===n)r.options[o]=s;else if("multiple"===n)i.each(o,function(i,e){r.options[i]=e});else if("responsive"===n)for(t in s)if("array"!==i.type(r.options.responsive))r.options.responsive=[s[t]];else{for(e=r.options.responsive.length-1;e>=0;)r.options.responsive[e].breakpoint===s[t].breakpoint&&r.options.responsive.splice(e,1),e--;r.options.responsive.push(s[t])}l&&(r.unload(),r.reinit())},e.prototype.setPosition=function(){var i=this;i.setDimensions(),i.setHeight(),!1===i.options.fade?i.setCSS(i.getLeft(i.currentSlide)):i.setFade(),i.$slider.trigger("setPosition",[i])},e.prototype.setProps=function(){var i=this,e=document.body.style;i.positionProp=!0===i.options.vertical?"top":"left","top"===i.positionProp?i.$slider.addClass("slick-vertical"):i.$slider.removeClass("slick-vertical"),void 0===e.WebkitTransition&&void 0===e.MozTransition&&void 0===e.msTransition||!0===i.options.useCSS&&(i.cssTransitions=!0),i.options.fade&&("number"==typeof i.options.zIndex?i.options.zIndex<3&&(i.options.zIndex=3):i.options.zIndex=i.defaults.zIndex),void 0!==e.OTransform&&(i.animType="OTransform",i.transformType="-o-transform",i.transitionType="OTransition",void 0===e.perspectiveProperty&&void 0===e.webkitPerspective&&(i.animType=!1)),void 0!==e.MozTransform&&(i.animType="MozTransform",i.transformType="-moz-transform",i.transitionType="MozTransition",void 0===e.perspectiveProperty&&void 0===e.MozPerspective&&(i.animType=!1)),void 0!==e.webkitTransform&&(i.animType="webkitTransform",i.transformType="-webkit-transform",i.transitionType="webkitTransition",void 0===e.perspectiveProperty&&void 0===e.webkitPerspective&&(i.animType=!1)),void 0!==e.msTransform&&(i.animType="msTransform",i.transformType="-ms-transform",i.transitionType="msTransition",void 0===e.msTransform&&(i.animType=!1)),void 0!==e.transform&&!1!==i.animType&&(i.animType="transform",i.transformType="transform",i.transitionType="transition"),i.transformsEnabled=i.options.useTransform&&null!==i.animType&&!1!==i.animType},e.prototype.setSlideClasses=function(i){var e,t,o,s,n=this;if(t=n.$slider.find(".slick-slide").removeClass("slick-active slick-center slick-current").attr("aria-hidden","true"),n.$slides.eq(i).addClass("slick-current"),!0===n.options.centerMode){var r=n.options.slidesToShow%2==0?1:0;e=Math.floor(n.options.slidesToShow/2),!0===n.options.infinite&&(i>=e&&i<=n.slideCount-1-e?n.$slides.slice(i-e+r,i+e+1).addClass("slick-active").attr("aria-hidden","false"):(o=n.options.slidesToShow+i,t.slice(o-e+1+r,o+e+2).addClass("slick-active").attr("aria-hidden","false")),0===i?t.eq(t.length-1-n.options.slidesToShow).addClass("slick-center"):i===n.slideCount-1&&t.eq(n.options.slidesToShow).addClass("slick-center")),n.$slides.eq(i).addClass("slick-center")}else i>=0&&i<=n.slideCount-n.options.slidesToShow?n.$slides.slice(i,i+n.options.slidesToShow).addClass("slick-active").attr("aria-hidden","false"):t.length<=n.options.slidesToShow?t.addClass("slick-active").attr("aria-hidden","false"):(s=n.slideCount%n.options.slidesToShow,o=!0===n.options.infinite?n.options.slidesToShow+i:i,n.options.slidesToShow==n.options.slidesToScroll&&n.slideCount-i<n.options.slidesToShow?t.slice(o-(n.options.slidesToShow-s),o+s).addClass("slick-active").attr("aria-hidden","false"):t.slice(o,o+n.options.slidesToShow).addClass("slick-active").attr("aria-hidden","false"));"ondemand"!==n.options.lazyLoad&&"anticipated"!==n.options.lazyLoad||n.lazyLoad()},e.prototype.setupInfinite=function(){var e,t,o,s=this;if(!0===s.options.fade&&(s.options.centerMode=!1),!0===s.options.infinite&&!1===s.options.fade&&(t=null,s.slideCount>s.options.slidesToShow)){for(o=!0===s.options.centerMode?s.options.slidesToShow+1:s.options.slidesToShow,e=s.slideCount;e>s.slideCount-o;e-=1)t=e-1,i(s.$slides[t]).clone(!0).attr("id","").attr("data-slick-index",t-s.slideCount).prependTo(s.$slideTrack).addClass("slick-cloned");for(e=0;e<o+s.slideCount;e+=1)t=e,i(s.$slides[t]).clone(!0).attr("id","").attr("data-slick-index",t+s.slideCount).appendTo(s.$slideTrack).addClass("slick-cloned");s.$slideTrack.find(".slick-cloned").find("[id]").each(function(){i(this).attr("id","")})}},e.prototype.interrupt=function(i){var e=this;i||e.autoPlay(),e.interrupted=i},e.prototype.selectHandler=function(e){var t=this,o=i(e.target).is(".slick-slide")?i(e.target):i(e.target).parents(".slick-slide"),s=parseInt(o.attr("data-slick-index"));s||(s=0),t.slideCount<=t.options.slidesToShow?t.slideHandler(s,!1,!0):t.slideHandler(s)},e.prototype.slideHandler=function(i,e,t){var o,s,n,r,l,d=null,a=this;if(e=e||!1,!(!0===a.animating&&!0===a.options.waitForAnimate||!0===a.options.fade&&a.currentSlide===i))if(!1===e&&a.asNavFor(i),o=i,d=a.getLeft(o),r=a.getLeft(a.currentSlide),a.currentLeft=null===a.swipeLeft?r:a.swipeLeft,!1===a.options.infinite&&!1===a.options.centerMode&&(i<0||i>a.getDotCount()*a.options.slidesToScroll))!1===a.options.fade&&(o=a.currentSlide,!0!==t?a.animateSlide(r,function(){a.postSlide(o)}):a.postSlide(o));else if(!1===a.options.infinite&&!0===a.options.centerMode&&(i<0||i>a.slideCount-a.options.slidesToScroll))!1===a.options.fade&&(o=a.currentSlide,!0!==t?a.animateSlide(r,function(){a.postSlide(o)}):a.postSlide(o));else{if(a.options.autoplay&&clearInterval(a.autoPlayTimer),s=o<0?a.slideCount%a.options.slidesToScroll!=0?a.slideCount-a.slideCount%a.options.slidesToScroll:a.slideCount+
10888o:o>=a.slideCount?a.slideCount%a.options.slidesToScroll!=0?0:o-a.slideCount:o,a.animating=!0,a.$slider.trigger("beforeChange",[a,a.currentSlide,s]),n=a.currentSlide,a.currentSlide=s,a.setSlideClasses(a.currentSlide),a.options.asNavFor&&(l=(l=a.getNavTarget()).slick("getSlick")).slideCount<=l.options.slidesToShow&&l.setSlideClasses(a.currentSlide),a.updateDots(),a.updateArrows(),!0===a.options.fade)return!0!==t?(a.fadeSlideOut(n),a.fadeSlide(s,function(){a.postSlide(s)})):a.postSlide(s),void a.animateHeight();!0!==t?a.animateSlide(d,function(){a.postSlide(s)}):a.postSlide(s)}},e.prototype.startLoad=function(){var i=this;!0===i.options.arrows&&i.slideCount>i.options.slidesToShow&&(i.$prevArrow.hide(),i.$nextArrow.hide()),!0===i.options.dots&&i.slideCount>i.options.slidesToShow&&i.$dots.hide(),i.$slider.addClass("slick-loading")},e.prototype.swipeDirection=function(){var i,e,t,o,s=this;return i=s.touchObject.startX-s.touchObject.curX,e=s.touchObject.startY-s.touchObject.curY,t=Math.atan2(e,i),(o=Math.round(180*t/Math.PI))<0&&(o=360-Math.abs(o)),o<=45&&o>=0?!1===s.options.rtl?"left":"right":o<=360&&o>=315?!1===s.options.rtl?"left":"right":o>=135&&o<=225?!1===s.options.rtl?"right":"left":!0===s.options.verticalSwiping?o>=35&&o<=135?"down":"up":"vertical"},e.prototype.swipeEnd=function(i){var e,t,o=this;if(o.dragging=!1,o.swiping=!1,o.scrolling)return o.scrolling=!1,!1;if(o.interrupted=!1,o.shouldClick=!(o.touchObject.swipeLength>10),void 0===o.touchObject.curX)return!1;if(!0===o.touchObject.edgeHit&&o.$slider.trigger("edge",[o,o.swipeDirection()]),o.touchObject.swipeLength>=o.touchObject.minSwipe){switch(t=o.swipeDirection()){case"left":case"down":e=o.options.swipeToSlide?o.checkNavigable(o.currentSlide+o.getSlideCount()):o.currentSlide+o.getSlideCount(),o.currentDirection=0;break;case"right":case"up":e=o.options.swipeToSlide?o.checkNavigable(o.currentSlide-o.getSlideCount()):o.currentSlide-o.getSlideCount(),o.currentDirection=1}"vertical"!=t&&(o.slideHandler(e),o.touchObject={},o.$slider.trigger("swipe",[o,t]))}else o.touchObject.startX!==o.touchObject.curX&&(o.slideHandler(o.currentSlide),o.touchObject={})},e.prototype.swipeHandler=function(i){var e=this;if(!(!1===e.options.swipe||"ontouchend"in document&&!1===e.options.swipe||!1===e.options.draggable&&-1!==i.type.indexOf("mouse")))switch(e.touchObject.fingerCount=i.originalEvent&&void 0!==i.originalEvent.touches?i.originalEvent.touches.length:1,e.touchObject.minSwipe=e.listWidth/e.options.touchThreshold,!0===e.options.verticalSwiping&&(e.touchObject.minSwipe=e.listHeight/e.options.touchThreshold),i.data.action){case"start":e.swipeStart(i);break;case"move":e.swipeMove(i);break;case"end":e.swipeEnd(i)}},e.prototype.swipeMove=function(i){var e,t,o,s,n,r,l=this;return n=void 0!==i.originalEvent?i.originalEvent.touches:null,!(!l.dragging||l.scrolling||n&&1!==n.length)&&(e=l.getLeft(l.currentSlide),l.touchObject.curX=void 0!==n?n[0].pageX:i.clientX,l.touchObject.curY=void 0!==n?n[0].pageY:i.clientY,l.touchObject.swipeLength=Math.round(Math.sqrt(Math.pow(l.touchObject.curX-l.touchObject.startX,2))),r=Math.round(Math.sqrt(Math.pow(l.touchObject.curY-l.touchObject.startY,2))),!l.options.verticalSwiping&&!l.swiping&&r>4?(l.scrolling=!0,!1):(!0===l.options.verticalSwiping&&(l.touchObject.swipeLength=r),t=l.swipeDirection(),void 0!==i.originalEvent&&l.touchObject.swipeLength>4&&(l.swiping=!0,i.preventDefault()),s=(!1===l.options.rtl?1:-1)*(l.touchObject.curX>l.touchObject.startX?1:-1),!0===l.options.verticalSwiping&&(s=l.touchObject.curY>l.touchObject.startY?1:-1),o=l.touchObject.swipeLength,l.touchObject.edgeHit=!1,!1===l.options.infinite&&(0===l.currentSlide&&"right"===t||l.currentSlide>=l.getDotCount()&&"left"===t)&&(o=l.touchObject.swipeLength*l.options.edgeFriction,l.touchObject.edgeHit=!0),!1===l.options.vertical?l.swipeLeft=e+o*s:l.swipeLeft=e+o*(l.$list.height()/l.listWidth)*s,!0===l.options.verticalSwiping&&(l.swipeLeft=e+o*s),!0!==l.options.fade&&!1!==l.options.touchMove&&(!0===l.animating?(l.swipeLeft=null,!1):void l.setCSS(l.swipeLeft))))},e.prototype.swipeStart=function(i){var e,t=this;if(t.interrupted=!0,1!==t.touchObject.fingerCount||t.slideCount<=t.options.slidesToShow)return t.touchObject={},!1;void 0!==i.originalEvent&&void 0!==i.originalEvent.touches&&(e=i.originalEvent.touches[0]),t.touchObject.startX=t.touchObject.curX=void 0!==e?e.pageX:i.clientX,t.touchObject.startY=t.touchObject.curY=void 0!==e?e.pageY:i.clientY,t.dragging=!0},e.prototype.unfilterSlides=e.prototype.slickUnfilter=function(){var i=this;null!==i.$slidesCache&&(i.unload(),i.$slideTrack.children(this.options.slide).detach(),i.$slidesCache.appendTo(i.$slideTrack),i.reinit())},e.prototype.unload=function(){var e=this;i(".slick-cloned",e.$slider).remove(),e.$dots&&e.$dots.remove(),e.$prevArrow&&e.htmlExpr.test(e.options.prevArrow)&&e.$prevArrow.remove(),e.$nextArrow&&e.htmlExpr.test(e.options.nextArrow)&&e.$nextArrow.remove(),e.$slides.removeClass("slick-slide slick-active slick-visible slick-current").attr("aria-hidden","true").css("width","")}
10888,e.prototype.unslick=function(i){var e=this;e.$slider.trigger("unslick",[e,i]),e.destroy()},e.prototype.updateArrows=function(){var i=this;Math.floor(i.options.slidesToShow/2),!0===i.options.arrows&&i.slideCount>i.options.slidesToShow&&!i.options.infinite&&(i.$prevArrow.removeClass("slick-disabled").attr("aria-disabled","false"),i.$nextArrow.removeClass("slick-disabled").attr("aria-disabled","false"),0===i.currentSlide?(i.$prevArrow.addClass("slick-disabled").attr("aria-disabled","true"),i.$nextArrow.removeClass("slick-disabled").attr("aria-disabled","false")):i.currentSlide>=i.slideCount-i.options.slidesToShow&&!1===i.options.centerMode?(i.$nextArrow.addClass("slick-disabled").attr("aria-disabled","true"),i.$prevArrow.removeClass("slick-disabled").attr("aria-disabled","false")):i.currentSlide>=i.slideCount-1&&!0===i.options.centerMode&&(i.$nextArrow.addClass("slick-disabled").attr("aria-disabled","true"),i.$prevArrow.removeClass("slick-disabled").attr("aria-disabled","false")))},e.prototype.updateDots=function(){var i=this;null!==i.$dots&&(i.$dots.find("li").removeClass("slick-active").end(),i.$dots.find("li").eq(Math.floor(i.currentSlide/i.options.slidesToScroll)).addClass("slick-active"))},e.prototype.visibility=function(){var i=this;i.options.autoplay&&(document[i.hidden]?i.interrupted=!0:i.interrupted=!1)},i.fn.slick=function(){var i,t,o=this,s=arguments[0],n=Array.prototype.slice.call(arguments,1),r=o.length;for(i=0;i<r;i++)if("object"==typeof s||void 0===s?o[i].slick=new e(o[i],s):t=o[i].slick[s].apply(o[i].slick,n),void 0!==t)return t;return o}}); 10889 10890/*SIGUIENTE LIBRERIA*/ 10891(function (global, factory) { 10892 typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) : 10893 typeof define === 'function' && define.amd ? define(['exports'], factory) : 10894 (global = global || self, factory(global.window = global.window || {})); 10895}(this, (function (exports) { 'use strict'; 10896 10897 /*! 10898 * CSSRulePlugin 3.7.0 10899 * https://greensock.com 10900 * 10901 * @license Copyright 2008-2021, GreenSock. All rights reserved. 10902 * Subject to the terms at https://greensock.com/standard-license or for 10903 * Club GreenSock members, the agreement issued with that membership. 10904 * @author: Jack Doyle, [email protected] 10905 */ 10906 var gsap, 10907 _coreInitted, 10908 _doc, 10909 CSSPlugin, 10910 _windowExists = function _windowExists() { 10911 return typeof window !== "undefined"; 10912 }, 10913 _getGSAP = function _getGSAP() { 10914 return gsap || _windowExists() && (gsap = window.gsap) && gsap.registerPlugin && gsap; 10915 },
vendor: 1,307 bytes, lines 10916-10975
10916 _checkRegister = function _checkRegister() { 10917 if (!_coreInitted) { 10918 _initCore(); 10919 10920 if (!CSSPlugin) { 10921 console.warn("Please gsap.registerPlugin(CSSPlugin, CSSRulePlugin)"); 10922 } 10923 } 10924 10925 return _coreInitted; 10926 }, 10927 _initCore = function _initCore(core) { 10928 gsap = core || _getGSAP(); 10929 10930 if (_windowExists()) { 10931 _doc = document; 10932 } 10933 10934 if (gsap) { 10935 CSSPlugin = gsap.plugins.css; 10936 10937 if (CSSPlugin) { 10938 _coreInitted = 1; 10939 } 10940 } 10941 }; 10942 10943 var CSSRulePlugin = { 10944 version: "3.7.0", 10945 name: "cssRule", 10946 init: function init(target, value, tween, index, targets) { 10947 if (!_checkRegister() || typeof target.cssText === "undefined") { 10948 return false; 10949 } 10950 10951 var div = target._gsProxy = target._gsProxy || _doc.createElement("div"); 10952 10953 this.ss = target; 10954 this.style = div.style; 10955 div.style.cssText = target.cssText; 10956 CSSPlugin.prototype.init.call(this, div, value, tween, index, targets); 10957 }, 10958 render: function render(ratio, data) { 10959 var pt = data._pt, 10960 style = data.style, 10961 ss = data.ss, 10962 i; 10963 10964 while (pt) { 10965 pt.r(ratio, pt.d); 10966 pt = pt._next; 10967 } 10968 10969 i = style.length; 10970 10971 while (--i > -1) { 10972 ss[style[i]] = style[style[i]]; 10973 } 10974 }, 10975 getRule: function getRule(selector) {
10976 _checkRegister(); 10977 10978 var ruleProp = _doc.all ? "rules" : "cssRules", 10979 styleSheets = _doc.styleSheets, 10980 i = styleSheets.length, 10981 pseudo = selector.charAt(0) === ":", 10982 j, 10983 curSS, 10984 cs, 10985 a; 10986 selector = (pseudo ? "" : ",") + selector.split("::").join(":").toLowerCase() + ","; 10987 10988 if (pseudo) { 10989 a = []; 10990 } 10991 10992 while (i--) { 10993 try { 10994 curSS = styleSheets[i][ruleProp]; 10995 10996 if (!curSS) { 10997 continue; 10998 } 10999 11000 j = curSS.length; 11001 } catch (e) { 11002 console.warn(e); 11003 continue; 11004 } 11005 11006 while (--j > -1) { 11007 cs = curSS[j]; 11008 11009 if (cs.selectorText && ("," + cs.selectorText.split("::").join(":").toLowerCase() + ",").indexOf(selector) !== -1) { 11010 if (pseudo) { 11011 a.push(cs.style); 11012 } else { 11013 return cs.style; 11014 } 11015 } 11016 } 11017 } 11018 11019 return a; 11020 }, 11021 register: _initCore 11022 }; 11023 _getGSAP() && gsap.registerPlugin(CSSRulePlugin); 11024 11025 exports.CSSRulePlugin = CSSRulePlugin; 11026 exports.default = CSSRulePlugin; 11027 11028 Object.defineProperty(exports, '__esModule', { value: true }); 11029 11030}))); 11031 11032/*SIGUIENTE LIBRERIA*/ 11033/*! 11034 * CSSRulePlugin 3.7.0 11035 * https://greensock.com 11036 * 11037 * @license Copyright 2021, GreenSock. All rights reserved. 11038 * Subject to the terms at https://greensock.com/standard-license or for Club GreenSock members, the agreement issued with that membership. 11039 * @author: Jack Doyle, [email protected] 11040 */ 11041 11042!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e=e||self).window=e.window||{})}(this,function(e){"use strict";function h(){return"undefined"!=typeof window}function i(){return t||h()&&(t=window.gsap)&&t.registerPlugin&&t}function j(){return n||(s(),o||console.warn("Please gsap.registerPlugin(CSSPlugin, CSSRulePlugin)")),n}var t,n,c,o,s=function _initCore(e){t=e||i(),h()&&(c=document),t&&(o=t.plugins.css)&&(n=1)},r={version:"3.7.0",name:"cssRule",init:function init(e,t,n,i,s){if(!j()||void 0===e.cssText)return!1;var r=e._gsProxy=e._gsProxy||c.createElement("div");this.ss=e,this.style=r.style,r.style.cssText=e.cssText,o.prototype.init.call(this,r,t,n,i,s)},render:function render(e,t){for(var n,i=t._pt,s=t.style,r=t.ss;i;)i.r(e,i.d),i=i._next;for(n=s.length;-1<--n;)r[s[n]]=s[s[n]]},getRule:function getRule(e){j();var t,n,i,s,r=c.all?"rules":"cssRules",o=c.styleSheets,l=o.length,u=":"===e.charAt(0);for(e=(u?"":",")+e.split("::").join(":").toLowerCase()+",",u&&(s=[]);l--;){try{if(!(n=o[l][r]))continue;t=n.length}catch(e){console.warn(e);continue}for(;-1<--t;)if((i=n[t]).selectorText&&-1!==(","+i.selectorText.split("::").join(":").toLowerCase()+",").indexOf(e)){if(!u)return i.style;s.push(i.style)}}return s},register:s};i()&&t.registerPlugin(r),e.CSSRulePlugin=r,e.default=r;if (typeof(window)==="undefined"||window!==e){Object.defineProperty(e,"__esModule",{value:!0})} else {delete e.default}}); 11043 11044 11045/*SIGUIENTE LIBRERIA*/ 11046(function (global, factory) { 11047 typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) : 11048 typeof define === 'function' && define.amd ? define(['exports'], factory) : 11049 (global = global || self, factory(global.window = global.window || {})); 11050}(this, (function (exports) { 'use strict'; 11051 11052 function _inheritsLoose(subClass, superClass) { 11053 subClass.prototype = Object.create(superClass.prototype); 11054 subClass.prototype.constructor = subClass; 11055 subClass.__proto__ = superClass; 11056 } 11057 11058 function _assertThisInitialized(self) { 11059 if (self === void 0) { 11060 throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); 11061 } 11062 11063 return self; 11064 } 11065 11066 var _doc, 11067 _win, 11068 _docElement, 11069 _body, 11070 _divContainer, 11071 _svgContainer, 11072 _identityMatrix, 11073 _transformProp = "transform", 11074 _transformOriginProp = _transformProp + "Origin", 11075 _hasOffsetBug, 11076 _setDoc = function _setDoc(element) { 11077 var doc = element.ownerDocument || element; 11078 11079 if (!(_transformProp in element.style) && "msTransform" in element.style) { 11080 _transformProp = "msTransform"; 11081 _transformOriginProp = _transformProp + "Origin"; 11082 } 11083 11084 while (doc.parentNode && (doc = doc.parentNode)) {} 11085 11086 _win = window; 11087 _identityMatrix = new Matrix2D(); 11088 11089 if (doc) { 11090 _doc = doc; 11091 _docElement = doc.documentElement; 11092 _body = doc.body; 11093 var d1 = doc.createElement("div"), 11094 d2 = doc.createElement("div"); 11095 11096 _body.appendChild(d1); 11097 11098 d1.appendChild(d2); 11099 d1.style.position = "static";
vendor: 3,975 bytes, lines 11100-11233
11100 d1.style[_transformProp] = "translate3d(0,0,1px)"; 11101 _hasOffsetBug = d2.offsetParent !== d1; 11102 11103 _body.removeChild(d1); 11104 } 11105 11106 return doc; 11107 }, 11108 _forceNonZeroScale = function _forceNonZeroScale(e) { 11109 var a, cache; 11110 11111 while (e && e !== _body) { 11112 cache = e._gsap; 11113 cache && cache.uncache && cache.get(e, "x"); 11114 11115 if (cache && !cache.scaleX && !cache.scaleY && cache.renderTransform) { 11116 cache.scaleX = cache.scaleY = 1e-4; 11117 cache.renderTransform(1, cache); 11118 a ? a.push(cache) : a = [cache]; 11119 } 11120 11121 e = e.parentNode; 11122 } 11123 11124 return a; 11125 }, 11126 _svgTemps = [], 11127 _divTemps = [], 11128 _getDocScrollTop = function _getDocScrollTop() { 11129 return _win.pageYOffset || _doc.scrollTop || _docElement.scrollTop || _body.scrollTop || 0; 11130 }, 11131 _getDocScrollLeft = function _getDocScrollLeft() { 11132 return _win.pageXOffset || _doc.scrollLeft || _docElement.scrollLeft || _body.scrollLeft || 0; 11133 }, 11134 _svgOwner = function _svgOwner(element) { 11135 return element.ownerSVGElement || ((element.tagName + "").toLowerCase() === "svg" ? element : null); 11136 }, 11137 _isFixed = function _isFixed(element) { 11138 if (_win.getComputedStyle(element).position === "fixed") { 11139 return true; 11140 } 11141 11142 element = element.parentNode; 11143 11144 if (element && element.nodeType === 1) { 11145 return _isFixed(element); 11146 } 11147 }, 11148 _createSibling = function _createSibling(element, i) { 11149 if (element.parentNode && (_doc || _setDoc(element))) { 11150 var svg = _svgOwner(element), 11151 ns = svg ? svg.getAttribute("xmlns") || "http://www.w3.org/2000/svg" : "http://www.w3.org/1999/xhtml", 11152 type = svg ? i ? "rect" : "g" : "div", 11153 x = i !== 2 ? 0 : 100, 11154 y = i === 3 ? 100 : 0, 11155 css = "position:absolute;display:block;pointer-events:none;margin:0;padding:0;", 11156 e = _doc.createElementNS ? _doc.createElementNS(ns.replace(/^https/, "http"), type) : _doc.createElement(type); 11157 11158 if (i) { 11159 if (!svg) { 11160 if (!_divContainer) { 11161 _divContainer = _createSibling(element); 11162 _divContainer.style.cssText = css; 11163 } 11164 11165 e.style.cssText = css + "width:0.1px;height:0.1px;top:" + y + "px;left:" + x + "px"; 11166 11167 _divContainer.appendChild(e); 11168 } else { 11169 _svgContainer || (_svgContainer = _createSibling(element)); 11170 e.setAttribute("width", 0.01); 11171 e.setAttribute("height", 0.01); 11172 e.setAttribute("transform", "translate(" + x + "," + y + ")"); 11173 11174 _svgContainer.appendChild(e); 11175 } 11176 } 11177 11178 return e; 11179 } 11180 11181 throw "Need document and parent."; 11182 }, 11183 _consolidate = function _consolidate(m) { 11184 var c = new Matrix2D(), 11185 i = 0; 11186 11187 for (; i < m.numberOfItems; i++) { 11188 c.multiply(m.getItem(i).matrix); 11189 } 11190 11191 return c; 11192 }, 11193 _placeSiblings = function _placeSiblings(element, adjustGOffset) { 11194 var svg = _svgOwner(element), 11195 isRootSVG = element === svg, 11196 siblings = svg ? _svgTemps : _divTemps, 11197 parent = element.parentNode, 11198 container, 11199 m, 11200 b, 11201 x, 11202 y, 11203 cs; 11204 11205 if (element === _win) { 11206 return element; 11207 } 11208 11209 siblings.length || siblings.push(_createSibling(element, 1), _createSibling(element, 2), _createSibling(element, 3)); 11210 container = svg ? _svgContainer : _divContainer; 11211 11212 if (svg) { 11213 b = isRootSVG ? { 11214 x: 0, 11215 y: 0 11216 } : element.getBBox(); 11217 m = element.transform ? element.transform.baseVal : {}; 11218 11219 if (m.numberOfItems) { 11220 m = m.numberOfItems > 1 ? _consolidate(m) : m.getItem(0).matrix; 11221 x = m.a * b.x + m.c * b.y; 11222 y = m.b * b.x + m.d * b.y; 11223 } else { 11224 m = _identityMatrix; 11225 x = b.x; 11226 y = b.y; 11227 } 11228 11229 if (adjustGOffset && element.tagName.toLowerCase() === "g") { 11230 x = y = 0; 11231 } 11232 11233 (isRootSVG ? svg : parent).appendChild(container);
vendor: 4,965 bytes, lines 11234-11421
11234 container.setAttribute("transform", "matrix(" + m.a + "," + m.b + "," + m.c + "," + m.d + "," + (m.e + x) + "," + (m.f + y) + ")"); 11235 } else { 11236 x = y = 0; 11237 11238 if (_hasOffsetBug) { 11239 m = element.offsetParent; 11240 b = element; 11241 11242 while (b && (b = b.parentNode) && b !== m && b.parentNode) { 11243 if ((_win.getComputedStyle(b)[_transformProp] + "").length > 4) { 11244 x = b.offsetLeft; 11245 y = b.offsetTop; 11246 b = 0; 11247 } 11248 } 11249 } 11250 11251 cs = _win.getComputedStyle(element); 11252 11253 if (cs.position !== "absolute") { 11254 m = element.offsetParent; 11255 11256 while (parent && parent !== m) { 11257 x += parent.scrollLeft || 0; 11258 y += parent.scrollTop || 0; 11259 parent = parent.parentNode; 11260 } 11261 } 11262 11263 b = container.style; 11264 b.top = element.offsetTop - y + "px"; 11265 b.left = element.offsetLeft - x + "px"; 11266 b[_transformProp] = cs[_transformProp]; 11267 b[_transformOriginProp] = cs[_transformOriginProp]; 11268 b.position = cs.position === "fixed" ? "fixed" : "absolute"; 11269 element.parentNode.appendChild(container); 11270 } 11271 11272 return container; 11273 }, 11274 _setMatrix = function _setMatrix(m, a, b, c, d, e, f) { 11275 m.a = a; 11276 m.b = b; 11277 m.c = c; 11278 m.d = d; 11279 m.e = e; 11280 m.f = f; 11281 return m; 11282 }; 11283 11284 var Matrix2D = function () { 11285 function Matrix2D(a, b, c, d, e, f) { 11286 if (a === void 0) { 11287 a = 1; 11288 } 11289 11290 if (b === void 0) { 11291 b = 0; 11292 } 11293 11294 if (c === void 0) { 11295 c = 0; 11296 } 11297 11298 if (d === void 0) { 11299 d = 1; 11300 } 11301 11302 if (e === void 0) { 11303 e = 0; 11304 } 11305 11306 if (f === void 0) { 11307 f = 0; 11308 } 11309 11310 _setMatrix(this, a, b, c, d, e, f); 11311 } 11312 11313 var _proto = Matrix2D.prototype; 11314 11315 _proto.inverse = function inverse() { 11316 var a = this.a, 11317 b = this.b, 11318 c = this.c, 11319 d = this.d, 11320 e = this.e, 11321 f = this.f, 11322 determinant = a * d - b * c || 1e-10; 11323 return _setMatrix(this, d / determinant, -b / determinant, -c / determinant, a / determinant, (c * f - d * e) / determinant, -(a * f - b * e) / determinant); 11324 }; 11325 11326 _proto.multiply = function multiply(matrix) { 11327 var a = this.a, 11328 b = this.b, 11329 c = this.c, 11330 d = this.d, 11331 e = this.e, 11332 f = this.f, 11333 a2 = matrix.a, 11334 b2 = matrix.c, 11335 c2 = matrix.b, 11336 d2 = matrix.d, 11337 e2 = matrix.e, 11338 f2 = matrix.f; 11339 return _setMatrix(this, a2 * a + c2 * c, a2 * b + c2 * d, b2 * a + d2 * c, b2 * b + d2 * d, e + e2 * a + f2 * c, f + e2 * b + f2 * d); 11340 }; 11341 11342 _proto.clone = function clone() { 11343 return new Matrix2D(this.a, this.b, this.c, this.d, this.e, this.f); 11344 }; 11345 11346 _proto.equals = function equals(matrix) { 11347 var a = this.a, 11348 b = this.b, 11349 c = this.c, 11350 d = this.d, 11351 e = this.e, 11352 f = this.f; 11353 return a === matrix.a && b === matrix.b && c === matrix.c && d === matrix.d && e === matrix.e && f === matrix.f; 11354 }; 11355 11356 _proto.apply = function apply(point, decoratee) { 11357 if (decoratee === void 0) { 11358 decoratee = {}; 11359 } 11360 11361 var x = point.x, 11362 y = point.y, 11363 a = this.a, 11364 b = this.b, 11365 c = this.c, 11366 d = this.d, 11367 e = this.e, 11368 f = this.f; 11369 decoratee.x = x * a + y * c + e || 0; 11370 decoratee.y = x * b + y * d + f || 0; 11371 return decoratee; 11372 }; 11373 11374 return Matrix2D; 11375 }(); 11376 function getGlobalMatrix(element, inverse, adjustGOffset, includeScrollInFixed) { 11377 if (!element || !element.parentNode || (_doc || _setDoc(element)).documentElement === element) { 11378 return new Matrix2D(); 11379 } 11380 11381 var zeroScales = _forceNonZeroScale(element), 11382 svg = _svgOwner(element), 11383 temps = svg ? _svgTemps : _divTemps, 11384 container = _placeSiblings(element, adjustGOffset), 11385 b1 = temps[0].getBoundingClientRect(), 11386 b2 = temps[1].getBoundingClientRect(), 11387 b3 = temps[2].getBoundingClientRect(), 11388 parent = container.parentNode, 11389 isFixed = !includeScrollInFixed && _isFixed(element), 11390 m = new Matrix2D((b2.left - b1.left) / 100, (b2.top - b1.top) / 100, (b3.left - b1.left) / 100, (b3.top - b1.top) / 100, b1.left + (isFixed ? 0 : _getDocScrollLeft()), b1.top + (isFixed ? 0 : _getDocScrollTop())); 11391 11392 parent.removeChild(container); 11393 11394 if (zeroScales) { 11395 b1 = zeroScales.length; 11396 11397 while (b1--) { 11398 b2 = zeroScales[b1]; 11399 b2.scaleX = b2.scaleY = 0; 11400 b2.renderTransform(1, b2); 11401 } 11402 } 11403 11404 return inverse ? m.inverse() : m; 11405 } 11406 11407 var gsap, 11408 _win$1, 11409 _doc$1, 11410 _docElement$1, 11411 _body$1, 11412 _tempDiv, 11413 _placeholderDiv, 11414 _coreInitted, 11415 _checkPrefix, 11416 _toArray, 11417 _supportsPassive, 11418 _isTouchDevice, 11419 _touchEventLookup, 11420 _dragCount, 11421 _isMultiTouching,
vendor: 4,022 bytes, lines 11422-11551
11422 _isAndroid, 11423 InertiaPlugin, 11424 _defaultCursor, 11425 _supportsPointer, 11426 _windowExists = function _windowExists() { 11427 return typeof window !== "undefined"; 11428 }, 11429 _getGSAP = function _getGSAP() { 11430 return gsap || _windowExists() && (gsap = window.gsap) && gsap.registerPlugin && gsap; 11431 }, 11432 _isFunction = function _isFunction(value) { 11433 return typeof value === "function"; 11434 }, 11435 _isObject = function _isObject(value) { 11436 return typeof value === "object"; 11437 }, 11438 _isUndefined = function _isUndefined(value) { 11439 return typeof value === "undefined"; 11440 }, 11441 _emptyFunc = function _emptyFunc() { 11442 return false; 11443 }, 11444 _transformProp$1 = "transform", 11445 _transformOriginProp$1 = "transformOrigin", 11446 _round = function _round(value) { 11447 return Math.round(value * 10000) / 10000; 11448 }, 11449 _isArray = Array.isArray, 11450 _createElement = function _createElement(type, ns) { 11451 var e = _doc$1.createElementNS ? _doc$1.createElementNS((ns || "http://www.w3.org/1999/xhtml").replace(/^https/, "http"), type) : _doc$1.createElement(type); 11452 return e.style ? e : _doc$1.createElement(type); 11453 }, 11454 _RAD2DEG = 180 / Math.PI, 11455 _bigNum = 1e20, 11456 _identityMatrix$1 = new Matrix2D(), 11457 _getTime = Date.now || function () { 11458 return new Date().getTime(); 11459 }, 11460 _renderQueue = [], 11461 _lookup = {}, 11462 _lookupCount = 0, 11463 _clickableTagExp = /^(?:a|input|textarea|button|select)$/i, 11464 _lastDragTime = 0, 11465 _temp1 = {}, 11466 _windowProxy = {}, 11467 _copy = function _copy(obj, factor) { 11468 var copy = {}, 11469 p; 11470 11471 for (p in obj) { 11472 copy[p] = factor ? obj[p] * factor : obj[p]; 11473 } 11474 11475 return copy; 11476 }, 11477 _extend = function _extend(obj, defaults) { 11478 for (var p in defaults) { 11479 if (!(p in obj)) { 11480 obj[p] = defaults[p]; 11481 } 11482 } 11483 11484 return obj; 11485 }, 11486 _setTouchActionForAllDescendants = function _setTouchActionForAllDescendants(elements, value) { 11487 var i = elements.length, 11488 children; 11489 11490 while (i--) { 11491 value ? elements[i].style.touchAction = value : elements[i].style.removeProperty("touch-action"); 11492 children = elements[i].children; 11493 children && children.length && _setTouchActionForAllDescendants(children, value); 11494 } 11495 }, 11496 _renderQueueTick = function _renderQueueTick() { 11497 return _renderQueue.forEach(function (func) { 11498 return func(); 11499 }); 11500 }, 11501 _addToRenderQueue = function _addToRenderQueue(func) { 11502 _renderQueue.push(func); 11503 11504 if (_renderQueue.length === 1) { 11505 gsap.ticker.add(_renderQueueTick); 11506 } 11507 }, 11508 _renderQueueTimeout = function _renderQueueTimeout() { 11509 return !_renderQueue.length && gsap.ticker.remove(_renderQueueTick); 11510 }, 11511 _removeFromRenderQueue = function _removeFromRenderQueue(func) { 11512 var i = _renderQueue.length; 11513 11514 while (i--) { 11515 if (_renderQueue[i] === func) { 11516 _renderQueue.splice(i, 1); 11517 } 11518 } 11519 11520 gsap.to(_renderQueueTimeout, { 11521 overwrite: true, 11522 delay: 15, 11523 duration: 0, 11524 onComplete: _renderQueueTimeout, 11525 data: "_draggable" 11526 }); 11527 }, 11528 _setDefaults = function _setDefaults(obj, defaults) { 11529 for (var p in defaults) { 11530 if (!(p in obj)) { 11531 obj[p] = defaults[p]; 11532 } 11533 } 11534 11535 return obj; 11536 }, 11537 _addListener = function _addListener(element, type, func, capture) { 11538 if (element.addEventListener) { 11539 var touchType = _touchEventLookup[type]; 11540 capture = capture || (_supportsPassive ? { 11541 passive: false 11542 } : null); 11543 element.addEventListener(touchType || type, func, capture); 11544 touchType && type !== touchType && element.addEventListener(type, func, capture); 11545 } 11546 }, 11547 _removeListener = function _removeListener(element, type, func) { 11548 if (element.removeEventListener) { 11549 var touchType = _touchEventLookup[type]; 11550 element.removeEventListener(touchType || type, func); 11551 touchType && type !== touchType && element.removeEventListener(type, func
vendor: 6,129 bytes, lines 11551-11742
11551); 11552 } 11553 }, 11554 _preventDefault = function _preventDefault(event) { 11555 event.preventDefault && event.preventDefault(); 11556 event.preventManipulation && event.preventManipulation(); 11557 }, 11558 _hasTouchID = function _hasTouchID(list, ID) { 11559 var i = list.length; 11560 11561 while (i--) { 11562 if (list[i].identifier === ID) { 11563 return true; 11564 } 11565 } 11566 }, 11567 _onMultiTouchDocumentEnd = function _onMultiTouchDocumentEnd(event) { 11568 _isMultiTouching = event.touches && _dragCount < event.touches.length; 11569 11570 _removeListener(event.target, "touchend", _onMultiTouchDocumentEnd); 11571 }, 11572 _onMultiTouchDocument = function _onMultiTouchDocument(event) { 11573 _isMultiTouching = event.touches && _dragCount < event.touches.length; 11574 11575 _addListener(event.target, "touchend", _onMultiTouchDocumentEnd); 11576 }, 11577 _getDocScrollTop$1 = function _getDocScrollTop(doc) { 11578 return _win$1.pageYOffset || doc.scrollTop || doc.documentElement.scrollTop || doc.body.scrollTop || 0; 11579 }, 11580 _getDocScrollLeft$1 = function _getDocScrollLeft(doc) { 11581 return _win$1.pageXOffset || doc.scrollLeft || doc.documentElement.scrollLeft || doc.body.scrollLeft || 0; 11582 }, 11583 _addScrollListener = function _addScrollListener(e, callback) { 11584 _addListener(e, "scroll", callback); 11585 11586 if (!_isRoot(e.parentNode)) { 11587 _addScrollListener(e.parentNode, callback); 11588 } 11589 }, 11590 _removeScrollListener = function _removeScrollListener(e, callback) { 11591 _removeListener(e, "scroll", callback); 11592 11593 if (!_isRoot(e.parentNode)) { 11594 _removeScrollListener(e.parentNode, callback); 11595 } 11596 }, 11597 _isRoot = function _isRoot(e) { 11598 return !!(!e || e === _docElement$1 || e.nodeType === 9 || e === _doc$1.body || e === _win$1 || !e.nodeType || !e.parentNode); 11599 }, 11600 _getMaxScroll = function _getMaxScroll(element, axis) { 11601 var dim = axis === "x" ? "Width" : "Height", 11602 scroll = "scroll" + dim, 11603 client = "client" + dim; 11604 return Math.max(0, _isRoot(element) ? Math.max(_docElement$1[scroll], _body$1[scroll]) - (_win$1["inner" + dim] || _docElement$1[client] || _body$1[client]) : element[scroll] - element[client]); 11605 }, 11606 _recordMaxScrolls = function _recordMaxScrolls(e, skipCurrent) { 11607 var x = _getMaxScroll(e, "x"), 11608 y = _getMaxScroll(e, "y"); 11609 11610 if (_isRoot(e)) { 11611 e = _windowProxy; 11612 } else { 11613 _recordMaxScrolls(e.parentNode, skipCurrent); 11614 } 11615 11616 e._gsMaxScrollX = x; 11617 e._gsMaxScrollY = y; 11618 11619 if (!skipCurrent) { 11620 e._gsScrollX = e.scrollLeft || 0; 11621 e._gsScrollY = e.scrollTop || 0; 11622 } 11623 }, 11624 _setStyle = function _setStyle(element, property, value) { 11625 var style = element.style; 11626 11627 if (!style) { 11628 return; 11629 } 11630 11631 if (_isUndefined(style[property])) { 11632 property = _checkPrefix(property, element) || property; 11633 } 11634 11635 if (value == null) { 11636 style.removeProperty && style.removeProperty(property.replace(/([A-Z])/g, "-$1").toLowerCase()); 11637 } else { 11638 style[property] = value; 11639 } 11640 }, 11641 _getComputedStyle = function _getComputedStyle(element) { 11642 return _win$1.getComputedStyle(element instanceof Element ? element : element.host || (element.parentNode || {}).host || element); 11643 }, 11644 _tempRect = {}, 11645 _parseRect = function _parseRect(e) { 11646 if (e === _win$1) { 11647 _tempRect.left = _tempRect.top = 0; 11648 _tempRect.width = _tempRect.right = _docElement$1.clientWidth || e.innerWidth || _body$1.clientWidth || 0; 11649 _tempRect.height = _tempRect.bottom = (e.innerHeight || 0) - 20 < _docElement$1.clientHeight ? _docElement$1.clientHeight : e.innerHeight || _body$1.clientHeight || 0; 11650 return _tempRect; 11651 } 11652 11653 var doc = e.ownerDocument || _doc$1, 11654 r = !_isUndefined(e.pageX) ? { 11655 left: e.pageX - _getDocScrollLeft$1(doc), 11656 top: e.pageY - _getDocScrollTop$1(doc), 11657 right: e.pageX - _getDocScrollLeft$1(doc) + 1, 11658 bottom: e.pageY - _getDocScrollTop$1(doc) + 1 11659 } : !e.nodeType && !_isUndefined(e.left) && !_isUndefined(e.top) ? e : _toArray(e)[0].getBoundingClientRect(); 11660 11661 if (_isUndefined(r.right) && !_isUndefined(r.width)) { 11662 r.right = r.left + r.width; 11663 r.bottom = r.top + r.height; 11664 } else if (_isUndefined(r.width)) { 11665 r = { 11666 width: r.right - r.left, 11667 height: r.bottom - r.top, 11668 right: r.right, 11669 left: r.left, 11670 bottom: r.bottom, 11671 top: r.top 11672 }; 11673 } 11674 11675 return r; 11676 }, 11677 _dispatchEvent = function _dispatchEvent(target, type, callbackName) { 11678 var vars = target.vars, 11679 callback = vars[callbackName], 11680 listeners = target._listeners[type], 11681 result; 11682 11683 if (_isFunction(callback)) { 11684 result = callback.apply(vars.callbackScope || target, vars[callbackName + "Params"] || [target.pointerEvent]); 11685 } 11686 11687 if (listeners && target.dispatchEvent(type) === false) { 11688 result = false; 11689 } 11690 11691 return result; 11692 }, 11693 _getBounds = function _getBounds(target, context) { 11694 var e = _toArray(target)[0], 11695 top, 11696 left, 11697 offset; 11698 11699 if (!e.nodeType && e !== _win$1) { 11700 if (!_isUndefined(target.left)) { 11701 offset = { 11702 x: 0, 11703 y: 0 11704 }; 11705 return { 11706 left: target.left - offset.x, 11707 top: target.top - offset.y, 11708 width: target.width, 11709 height: target.height 11710 }; 11711 } 11712 11713 left = target.min || target.minX || target.minRotation || 0; 11714 top = target.min || target.minY || 0; 11715 return { 11716 left: left, 11717 top: top, 11718 width: (target.max || target.maxX || target.maxRotation || 0) - left, 11719 height: (target.max || target.maxY || 0) - top 11720 }; 11721 } 11722 11723 return _getElementBounds(e, context); 11724 }, 11725 _point1 = {}, 11726 _getElementBounds = function _getElementBounds(element, context) { 11727 context = _toArray(context)[0]; 11728 var isSVG = element.getBBox && element.ownerSVGElement, 11729 doc = element.ownerDocument || _doc$1, 11730 left, 11731 right, 11732 top, 11733 bottom, 11734 matrix, 11735 p1, 11736 p2, 11737 p3, 11738 p4, 11739 bbox, 11740 width, 11741 height, 11742 cs
vendor: 10,393 bytes, lines 11742-12141
11742, 11743 contextParent; 11744 11745 if (element === _win$1) { 11746 top = _getDocScrollTop$1(doc); 11747 left = _getDocScrollLeft$1(doc); 11748 right = left + (doc.documentElement.clientWidth || element.innerWidth || doc.body.clientWidth || 0); 11749 bottom = top + ((element.innerHeight || 0) - 20 < doc.documentElement.clientHeight ? doc.documentElement.clientHeight : element.innerHeight || doc.body.clientHeight || 0); 11750 } else if (context === _win$1 || _isUndefined(context)) { 11751 return element.getBoundingClientRect(); 11752 } else { 11753 left = top = 0; 11754 11755 if (isSVG) { 11756 bbox = element.getBBox(); 11757 width = bbox.width; 11758 height = bbox.height; 11759 } else { 11760 if (element.viewBox && (bbox = element.viewBox.baseVal)) { 11761 left = bbox.x || 0; 11762 top = bbox.y || 0; 11763 width = bbox.width; 11764 height = bbox.height; 11765 } 11766 11767 if (!width) { 11768 cs = _getComputedStyle(element); 11769 bbox = cs.boxSizing === "border-box"; 11770 width = (parseFloat(cs.width) || element.clientWidth || 0) + (bbox ? 0 : parseFloat(cs.borderLeftWidth) + parseFloat(cs.borderRightWidth)); 11771 height = (parseFloat(cs.height) || element.clientHeight || 0) + (bbox ? 0 : parseFloat(cs.borderTopWidth) + parseFloat(cs.borderBottomWidth)); 11772 } 11773 } 11774 11775 right = width; 11776 bottom = height; 11777 } 11778 11779 if (element === context) { 11780 return { 11781 left: left, 11782 top: top, 11783 width: right - left, 11784 height: bottom - top 11785 }; 11786 } 11787 11788 matrix = getGlobalMatrix(context, true).multiply(getGlobalMatrix(element)); 11789 p1 = matrix.apply({ 11790 x: left, 11791 y: top 11792 }); 11793 p2 = matrix.apply({ 11794 x: right, 11795 y: top 11796 }); 11797 p3 = matrix.apply({ 11798 x: right, 11799 y: bottom 11800 }); 11801 p4 = matrix.apply({ 11802 x: left, 11803 y: bottom 11804 }); 11805 left = Math.min(p1.x, p2.x, p3.x, p4.x); 11806 top = Math.min(p1.y, p2.y, p3.y, p4.y); 11807 contextParent = context.parentNode || {}; 11808 return { 11809 left: left + (contextParent.scrollLeft || 0), 11810 top: top + (contextParent.scrollTop || 0), 11811 width: Math.max(p1.x, p2.x, p3.x, p4.x) - left, 11812 height: Math.max(p1.y, p2.y, p3.y, p4.y) - top 11813 }; 11814 }, 11815 _parseInertia = function _parseInertia(draggable, snap, max, min, factor, forceZeroVelocity) { 11816 var vars = {}, 11817 a, 11818 i, 11819 l; 11820 11821 if (snap) { 11822 if (factor !== 1 && snap instanceof Array) { 11823 vars.end = a = []; 11824 l = snap.length; 11825 11826 if (_isObject(snap[0])) { 11827 for (i = 0; i < l; i++) { 11828 a[i] = _copy(snap[i], factor); 11829 } 11830 } else { 11831 for (i = 0; i < l; i++) { 11832 a[i] = snap[i] * factor; 11833 } 11834 } 11835 11836 max += 1.1; 11837 min -= 1.1; 11838 } else if (_isFunction(snap)) { 11839 vars.end = function (value) { 11840 var result = snap.call(draggable, value), 11841 copy, 11842 p; 11843 11844 if (factor !== 1) { 11845 if (_isObject(result)) { 11846 copy = {}; 11847 11848 for (p in result) { 11849 copy[p] = result[p] * factor; 11850 } 11851 11852 result = copy; 11853 } else { 11854 result *= factor; 11855 } 11856 } 11857 11858 return result; 11859 }; 11860 } else { 11861 vars.end = snap; 11862 } 11863 } 11864 11865 if (max || max === 0) { 11866 vars.max = max; 11867 } 11868 11869 if (min || min === 0) { 11870 vars.min = min; 11871 } 11872 11873 if (forceZeroVelocity) { 11874 vars.velocity = 0; 11875 } 11876 11877 return vars; 11878 }, 11879 _isClickable = function _isClickable(element) { 11880 var data; 11881 return !element || !element.getAttribute || element === _body$1 ? false : (data = element.getAttribute("data-clickable")) === "true" || data !== "false" && (element.onclick || _clickableTagExp.test(element.nodeName + "") || element.getAttribute("contentEditable") === "true") ? true : _isClickable(element.parentNode); 11882 }, 11883 _setSelectable = function _setSelectable(elements, selectable) { 11884 var i = elements.length, 11885 e; 11886 11887 while (i--) { 11888 e = elements[i]; 11889 e.ondragstart = e.onselectstart = selectable ? null : _emptyFunc; 11890 gsap.set(e, { 11891 lazy: true, 11892 userSelect: selectable ? "text" : "none" 11893 }); 11894 } 11895 }, 11896 _isFixed$1 = function _isFixed(element) { 11897 if (_getComputedStyle(element).position === "fixed") { 11898 return true; 11899 } 11900 11901 element = element.parentNode; 11902 11903 if (element && element.nodeType === 1) { 11904 return _isFixed(element); 11905 } 11906 }, 11907 _supports3D, 11908 _addPaddingBR, 11909 ScrollProxy = function ScrollProxy(element, vars) { 11910 element = gsap.utils.toArray(element)[0]; 11911 vars = vars || {}; 11912 var content = document.createElement("div"), 11913 style = content.style, 11914 node = element.firstChild, 11915 offsetTop = 0, 11916 offsetLeft = 0, 11917 prevTop = element.scrollTop, 11918 prevLeft = element.scrollLeft, 11919 scrollWidth = element.scrollWidth, 11920 scrollHeight = element.scrollHeight, 11921 extraPadRight = 0, 11922 maxLeft = 0, 11923 maxTop = 0, 11924 elementWidth, 11925 elementHeight, 11926 contentHeight, 11927 nextNode, 11928 transformStart, 11929 transformEnd; 11930 11931 if (_supports3D && vars.force3D !== false) { 11932 transformStart = "translate3d("; 11933 transformEnd = "px,0px)"; 11934 } else if (_transformProp$1) { 11935 transformStart = "translate("; 11936 transformEnd = "px)"; 11937 } 11938 11939 this.scrollTop = function (value, force) { 11940 if (!arguments.length) { 11941 return -this.top(); 11942 } 11943 11944 this.top(-value, force); 11945 }; 11946 11947 this.scrollLeft = function (value, force) { 11948 if (!arguments.length) { 11949 return -this.left(); 11950 } 11951 11952 this.left(-value, force); 11953 }; 11954 11955 this.left = function (value, force) { 11956 if (!arguments.length) { 11957 return -(element.scrollLeft + offsetLeft); 11958 } 11959 11960 var dif = element.scrollLeft - prevLeft, 11961 oldOffset = offsetLeft; 11962 11963 if ((dif > 2 || dif < -2) && !force) { 11964 prevLeft = element.scrollLeft; 11965 gsap.killTweensOf(this, { 11966 left: 1, 11967 scrollLeft: 1 11968 }); 11969 this.left(-prevLeft); 11970 11971 if (vars.onKill) { 11972 vars.onKill(); 11973 } 11974 11975 return; 11976 } 11977 11978 value = -value; 11979 11980 if (value < 0) { 11981 offsetLeft = value - 0.5 | 0; 11982 value = 0; 11983 } else if (value > maxLeft) { 11984 offsetLeft = value - maxLeft | 0; 11985 value = maxLeft; 11986 } else { 11987 offsetLeft = 0; 11988 } 11989 11990 if (offsetLeft || oldOffset) { 11991 if (!this._skip) { 11992 style[_transformProp$1] = transformStart + -offsetLeft + "px," + -offsetTop + transformEnd; 11993 } 11994 11995 if (offsetLeft + extraPadRight >= 0) { 11996 style.paddingRight = offsetLeft + extraPadRight + "px"; 11997 } 11998 } 11999 12000 element.scrollLeft = value | 0; 12001 prevLeft = element.scrollLeft; 12002 }; 12003 12004 this.top = function (value, force) { 12005 if (!arguments.length) { 12006 return -(element.scrollTop + offsetTop); 12007 } 12008 12009 var dif = element.scrollTop - prevTop, 12010 oldOffset = offsetTop; 12011 12012 if ((dif > 2 || dif < -2) && !force) { 12013 prevTop = element.scrollTop; 12014 gsap.killTweensOf(this, { 12015 top: 1, 12016 scrollTop: 1 12017 }); 12018 this.top(-prevTop); 12019 12020 if (vars.onKill) { 12021 vars.onKill(); 12022 } 12023 12024 return; 12025 } 12026 12027 value = -value; 12028 12029 if (value < 0) { 12030 offsetTop = value - 0.5 | 0; 12031 value = 0; 12032 } else if (value > maxTop) { 12033 offsetTop = value - maxTop | 0; 12034 value = maxTop; 12035 } else { 12036 offsetTop = 0; 12037 } 12038 12039 if (offsetTop || oldOffset) { 12040 if (!this._skip) { 12041 style[_transformProp$1] = transformStart + -offsetLeft + "px," + -offsetTop + transformEnd; 12042 } 12043 } 12044 12045 element.scrollTop = value | 0; 12046 prevTop = element.scrollTop; 12047 }; 12048 12049 this.maxScrollTop = function () { 12050 return maxTop; 12051 }; 12052 12053 this.maxScrollLeft = function () { 12054 return maxLeft; 12055 }; 12056 12057 this.disable = function () { 12058 node = content.firstChild; 12059 12060 while (node) { 12061 nextNode = node.nextSibling; 12062 element.appendChild(node); 12063 node = nextNode; 12064 } 12065 12066 if (element === content.parentNode) { 12067 element.removeChild(content); 12068 } 12069 }; 12070 12071 this.enable = function () { 12072 node = element.firstChild; 12073 12074 if (node === content) { 12075 return; 12076 } 12077 12078 while (node) { 12079 nextNode = node.nextSibling; 12080 content.appendChild(node); 12081 node = nextNode; 12082 } 12083 12084 element.appendChild(content); 12085 this.calibrate(); 12086 }; 12087 12088 this.calibrate = function (force) { 12089 var widthMatches = element.clientWidth === elementWidth, 12090 cs, 12091 x, 12092 y; 12093 prevTop = element.scrollTop; 12094 prevLeft = element.scrollLeft; 12095 12096 if (widthMatches && element.clientHeight === elementHeight && content.offsetHeight === contentHeight && scrollWidth === element.scrollWidth && scrollHeight === element.scrollHeight && !force) { 12097 return; 12098 } 12099 12100 if (offsetTop || offsetLeft) { 12101 x = this.left(); 12102 y = this.top(); 12103 this.left(-element.scrollLeft); 12104 this.top(-element.scrollTop); 12105 } 12106 12107 cs = _getComputedStyle(element); 12108 12109 if (!widthMatches || force) { 12110 style.display = "block"; 12111 style.width = "auto"; 12112 style.paddingRight = "0px"; 12113 extraPadRight = Math.max(0, element.scrollWidth - element.clientWidth); 12114 12115 if (extraPadRight) { 12116 extraPadRight += parseFloat(cs.paddingLeft) + (_addPaddingBR ? parseFloat(cs.paddingRight) : 0); 12117 } 12118 } 12119 12120 style.display = "inline-block"; 12121 style.position = "relative"; 12122 style.overflow = "visible"; 12123 style.verticalAlign = "top"; 12124 style.boxSizing = "content-box"; 12125 style.width = "100%"; 12126 style.paddingRight = extraPadRight + "px"; 12127 12128 if (_addPaddingBR) { 12129 style.paddingBottom = cs.paddingBottom; 12130 } 12131 12132 elementWidth = element.clientWidth; 12133 elementHeight = element.clientHeight; 12134 scrollWidth = element.scrollWidth; 12135 scrollHeight = element.scrollHeight; 12136 maxLeft = element.scrollWidth - elementWidth; 12137 maxTop = element.scrollHeight - elementHeight; 12138 contentHeight = content.offsetHeight; 12139 style.display = "block"; 12140 12141 if (x || y) {
vendor: 7,174 bytes, lines 12142-12353
12142 this.left(x); 12143 this.top(y); 12144 } 12145 }; 12146 12147 this.content = content; 12148 this.element = element; 12149 this._skip = false; 12150 this.enable(); 12151 }, 12152 _initCore = function _initCore(required) { 12153 if (_windowExists() && document.body) { 12154 var nav = window && window.navigator; 12155 _win$1 = window; 12156 _doc$1 = document; 12157 _docElement$1 = _doc$1.documentElement; 12158 _body$1 = _doc$1.body; 12159 _tempDiv = _createElement("div"); 12160 _supportsPointer = !!window.PointerEvent; 12161 _placeholderDiv = _createElement("div"); 12162 _placeholderDiv.style.cssText = "visibility:hidden;height:1px;top:-1px;pointer-events:none;position:relative;clear:both;cursor:grab"; 12163 _defaultCursor = _placeholderDiv.style.cursor === "grab" ? "grab" : "move"; 12164 _isAndroid = nav && nav.userAgent.toLowerCase().indexOf("android") !== -1; 12165 _isTouchDevice = "ontouchstart" in _docElement$1 && "orientation" in _win$1 || nav && (nav.MaxTouchPoints > 0 || nav.msMaxTouchPoints > 0); 12166 12167 _addPaddingBR = function () { 12168 var div = _createElement("div"), 12169 child = _createElement("div"), 12170 childStyle = child.style, 12171 parent = _body$1, 12172 val; 12173 12174 childStyle.display = "inline-block"; 12175 childStyle.position = "relative"; 12176 div.style.cssText = child.innerHTML = "width:90px;height:40px;padding:10px;overflow:auto;visibility:hidden"; 12177 div.appendChild(child); 12178 parent.appendChild(div); 12179 val = child.offsetHeight + 18 > div.scrollHeight; 12180 parent.removeChild(div); 12181 return val; 12182 }(); 12183 12184 _touchEventLookup = function (types) { 12185 var standard = types.split(","), 12186 converted = ("onpointerdown" in _tempDiv ? "pointerdown,pointermove,pointerup,pointercancel" : "onmspointerdown" in _tempDiv ? "MSPointerDown,MSPointerMove,MSPointerUp,MSPointerCancel" : types).split(","), 12187 obj = {}, 12188 i = 4; 12189 12190 while (--i > -1) { 12191 obj[standard[i]] = converted[i]; 12192 obj[converted[i]] = standard[i]; 12193 } 12194 12195 try { 12196 _docElement$1.addEventListener("test", null, Object.defineProperty({}, "passive", { 12197 get: function get() { 12198 _supportsPassive = 1; 12199 } 12200 })); 12201 } catch (e) {} 12202 12203 return obj; 12204 }("touchstart,touchmove,touchend,touchcancel"); 12205 12206 _addListener(_doc$1, "touchcancel", _emptyFunc); 12207 12208 _addListener(_win$1, "touchmove", _emptyFunc); 12209 12210 _body$1 && _body$1.addEventListener("touchstart", _emptyFunc); 12211 12212 _addListener(_doc$1, "contextmenu", function () { 12213 for (var p in _lookup) { 12214 if (_lookup[p].isPressed) { 12215 _lookup[p].endDrag(); 12216 } 12217 } 12218 }); 12219 12220 gsap = _coreInitted = _getGSAP(); 12221 } 12222 12223 if (gsap) { 12224 InertiaPlugin = gsap.plugins.inertia; 12225 _checkPrefix = gsap.utils.checkPrefix; 12226 _transformProp$1 = _checkPrefix(_transformProp$1); 12227 _transformOriginProp$1 = _checkPrefix(_transformOriginProp$1); 12228 _toArray = gsap.utils.toArray; 12229 _supports3D = !!_checkPrefix("perspective"); 12230 } else if (required) { 12231 console.warn("Please gsap.registerPlugin(Draggable)"); 12232 } 12233 }; 12234 12235 var EventDispatcher = function () { 12236 function EventDispatcher(target) { 12237 this._listeners = {}; 12238 this.target = target || this; 12239 } 12240 12241 var _proto = EventDispatcher.prototype; 12242 12243 _proto.addEventListener = function addEventListener(type, callback) { 12244 var list = this._listeners[type] || (this._listeners[type] = []); 12245 12246 if (!~list.indexOf(callback)) { 12247 list.push(callback); 12248 } 12249 }; 12250 12251 _proto.removeEventListener = function removeEventListener(type, callback) { 12252 var list = this._listeners[type], 12253 i = list && list.indexOf(callback) || -1; 12254 i > -1 && list.splice(i, 1); 12255 }; 12256 12257 _proto.dispatchEvent = function dispatchEvent(type) { 12258 var _this = this; 12259 12260 var result; 12261 (this._listeners[type] || []).forEach(function (callback) { 12262 return callback.call(_this, { 12263 type: type, 12264 target: _this.target 12265 }) === false && (result = false); 12266 }); 12267 return result; 12268 }; 12269 12270 return EventDispatcher; 12271 }(); 12272 12273 var Draggable = function (_EventDispatcher) { 12274 _inheritsLoose(Draggable, _EventDispatcher); 12275 12276 function Draggable(target, vars) { 12277 var _this2; 12278 12279 _this2 = _EventDispatcher.call(this) || this; 12280 _coreInitted || _initCore(1); 12281 target = _toArray(target)[0]; 12282 12283 if (!InertiaPlugin) { 12284 InertiaPlugin = gsap.plugins.inertia; 12285 } 12286 12287 _this2.vars = vars = _copy(vars || {}); 12288 _this2.target = target; 12289 _this2.x = _this2.y = _this2.rotation = 0; 12290 _this2.dragResistance = parseFloat(vars.dragResistance) || 0; 12291 _this2.edgeResistance = isNaN(vars.edgeResistance) ? 1 : parseFloat(vars.edgeResistance) || 0; 12292 _this2.lockAxis = vars.lockAxis; 12293 _this2.autoScroll = vars.autoScroll || 0; 12294 _this2.lockedAxis = null; 12295 _this2.allowEventDefault = !!vars.allowEventDefault; 12296 gsap.getProperty(target, "x"); 12297 12298 var type = (vars.type || "x,y").toLowerCase(), 12299 xyMode = ~type.indexOf("x") || ~type.indexOf("y"), 12300 rotationMode = type.indexOf("rotation") !== -1, 12301 xProp = rotationMode ? "rotation" : xyMode ? "x" : "left", 12302 yProp = xyMode ? "y" : "top", 12303 allowX = !!(~type.indexOf("x") || ~type.indexOf("left") || type === "scroll"), 12304 allowY = !!(~type.indexOf("y") || ~type.indexOf("top") || type === "scroll"), 12305 minimumMovement = vars.minimumMovement || 2, 12306 self = _assertThisInitialized(_this2), 12307 triggers = _toArray(vars.trigger || vars.handle || target), 12308 killProps = {}, 12309 dragEndTime = 0, 12310 checkAutoScrollBounds = false, 12311 autoScrollMarginTop = vars.autoScrollMarginTop || 40, 12312 autoScrollMarginRight = vars.autoScrollMarginRight || 40, 12313 autoScrollMarginBottom = vars.autoScrollMarginBottom || 40, 12314 autoScrollMarginLeft = vars.autoScrollMarginLeft || 40, 12315 isClickable = vars.clickableTest || _isClickable, 12316 clickTime = 0, 12317 gsCache = target._gsap || gsap.core.getCache(target), 12318 isFixed = _isFixed$1(target), 12319 getPropAsNum = function getPropAsNum(property, unit) { 12320 return parseFloat(gsCache.get(target, property, unit)); 12321 }, 12322 ownerDoc = target.ownerDocument || _doc$1, 12323 enabled, 12324 scrollProxy, 12325 startPointerX, 12326 startPointerY, 12327 startElementX, 12328 startElementY, 12329 hasBounds, 12330 hasDragCallback, 12331 hasMoveCallback, 12332 maxX, 12333 minX, 12334 maxY, 12335 minY, 12336 touch, 12337 touchID, 12338 rotationOrigin, 12339 dirty, 12340 old, 12341 snapX, 12342 snapY, 12343 snapXY, 12344 isClicking, 12345 touchEventTarget, 12346 matrix, 12347 interrupted, 12348 allowNativeTouchScrolling, 12349 touchDragAxis, 12350 isDispatching, 12351 clickDispatch, 12352 trustedClickDispatch, 12353 isPreventingDefault
vendor: 5,763 bytes, lines 12353-12517
12353, 12354 onContextMenu = function onContextMenu(e) { 12355 _preventDefault(e); 12356 12357 e.stopImmediatePropagation && e.stopImmediatePropagation(); 12358 return false; 12359 }, 12360 render = function render(suppressEvents) { 12361 if (self.autoScroll && self.isDragging && (checkAutoScrollBounds || dirty)) { 12362 var e = target, 12363 autoScrollFactor = self.autoScroll * 15, 12364 parent, 12365 isRoot, 12366 rect, 12367 pointerX, 12368 pointerY, 12369 changeX, 12370 changeY, 12371 gap; 12372 checkAutoScrollBounds = false; 12373 _windowProxy.scrollTop = _win$1.pageYOffset != null ? _win$1.pageYOffset : ownerDoc.documentElement.scrollTop != null ? ownerDoc.documentElement.scrollTop : ownerDoc.body.scrollTop; 12374 _windowProxy.scrollLeft = _win$1.pageXOffset != null ? _win$1.pageXOffset : ownerDoc.documentElement.scrollLeft != null ? ownerDoc.documentElement.scrollLeft : ownerDoc.body.scrollLeft; 12375 pointerX = self.pointerX - _windowProxy.scrollLeft; 12376 pointerY = self.pointerY - _windowProxy.scrollTop; 12377 12378 while (e && !isRoot) { 12379 isRoot = _isRoot(e.parentNode); 12380 parent = isRoot ? _windowProxy : e.parentNode; 12381 rect = isRoot ? { 12382 bottom: Math.max(_docElement$1.clientHeight, _win$1.innerHeight || 0), 12383 right: Math.max(_docElement$1.clientWidth, _win$1.innerWidth || 0), 12384 left: 0, 12385 top: 0 12386 } : parent.getBoundingClientRect(); 12387 changeX = changeY = 0; 12388 12389 if (allowY) { 12390 gap = parent._gsMaxScrollY - parent.scrollTop; 12391 12392 if (gap < 0) { 12393 changeY = gap; 12394 } else if (pointerY > rect.bottom - autoScrollMarginBottom && gap) { 12395 checkAutoScrollBounds = true; 12396 changeY = Math.min(gap, autoScrollFactor * (1 - Math.max(0, rect.bottom - pointerY) / autoScrollMarginBottom) | 0); 12397 } else if (pointerY < rect.top + autoScrollMarginTop && parent.scrollTop) { 12398 checkAutoScrollBounds = true; 12399 changeY = -Math.min(parent.scrollTop, autoScrollFactor * (1 - Math.max(0, pointerY - rect.top) / autoScrollMarginTop) | 0); 12400 } 12401 12402 if (changeY) { 12403 parent.scrollTop += changeY; 12404 } 12405 } 12406 12407 if (allowX) { 12408 gap = parent._gsMaxScrollX - parent.scrollLeft; 12409 12410 if (gap < 0) { 12411 changeX = gap; 12412 } else if (pointerX > rect.right - autoScrollMarginRight && gap) { 12413 checkAutoScrollBounds = true; 12414 changeX = Math.min(gap, autoScrollFactor * (1 - Math.max(0, rect.right - pointerX) / autoScrollMarginRight) | 0); 12415 } else if (pointerX < rect.left + autoScrollMarginLeft && parent.scrollLeft) { 12416 checkAutoScrollBounds = true; 12417 changeX = -Math.min(parent.scrollLeft, autoScrollFactor * (1 - Math.max(0, pointerX - rect.left) / autoScrollMarginLeft) | 0); 12418 } 12419 12420 if (changeX) { 12421 parent.scrollLeft += changeX; 12422 } 12423 } 12424 12425 if (isRoot && (changeX || changeY)) { 12426 _win$1.scrollTo(parent.scrollLeft, parent.scrollTop); 12427 12428 setPointerPosition(self.pointerX + changeX, self.pointerY + changeY); 12429 } 12430 12431 e = parent; 12432 } 12433 } 12434 12435 if (dirty) { 12436 var x = self.x, 12437 y = self.y; 12438 12439 if (rotationMode) { 12440 self.deltaX = x - parseFloat(gsCache.rotation); 12441 self.rotation = x; 12442 gsCache.rotation = x + "deg"; 12443 gsCache.renderTransform(1, gsCache); 12444 } else { 12445 if (scrollProxy) { 12446 if (allowY) { 12447 self.deltaY = y - scrollProxy.top(); 12448 scrollProxy.top(y); 12449 } 12450 12451 if (allowX) { 12452 self.deltaX = x - scrollProxy.left(); 12453 scrollProxy.left(x); 12454 } 12455 } else if (xyMode) { 12456 if (allowY) { 12457 self.deltaY = y - parseFloat(gsCache.y); 12458 gsCache.y = y + "px"; 12459 } 12460 12461 if (allowX) { 12462 self.deltaX = x - parseFloat(gsCache.x); 12463 gsCache.x = x + "px"; 12464 } 12465 12466 gsCache.renderTransform(1, gsCache); 12467 } else { 12468 if (allowY) { 12469 self.deltaY = y - parseFloat(target.style.top || 0); 12470 target.style.top = y + "px"; 12471 } 12472 12473 if (allowX) { 12474 self.deltaX = x - parseFloat(target.style.left || 0); 12475 target.style.left = x + "px"; 12476 } 12477 } 12478 } 12479 12480 if (hasDragCallback && !suppressEvents && !isDispatching) { 12481 isDispatching = true; 12482 12483 if (_dispatchEvent(self, "drag", "onDrag") === false) { 12484 if (allowX) { 12485 self.x -= self.deltaX; 12486 } 12487 12488 if (allowY) { 12489 self.y -= self.deltaY; 12490 } 12491 12492 render(true); 12493 } 12494 12495 isDispatching = false; 12496 } 12497 } 12498 12499 dirty = false; 12500 }, 12501 syncXY = function syncXY(skipOnUpdate, skipSnap) { 12502 var x = self.x, 12503 y = self.y, 12504 snappedValue, 12505 cs; 12506 12507 if (!target._gsap) { 12508 gsCache = gsap.core.getCache(target); 12509 } 12510 12511 gsCache.uncache && gsap.getProperty(target, "x"); 12512 12513 if (xyMode) { 12514 self.x = parseFloat(gsCache.x); 12515 self.y = parseFloat(gsCache.y); 12516 } else if (rotationMode) { 12517 self.x = self.rotation =
vendor: 4,869 bytes, lines 12517-12696
12517parseFloat(gsCache.rotation); 12518 } else if (scrollProxy) { 12519 self.y = scrollProxy.top(); 12520 self.x = scrollProxy.left(); 12521 } else { 12522 self.y = parseFloat(target.style.top || (cs = _getComputedStyle(target)) && cs.top) || 0; 12523 self.x = parseFloat(target.style.left || (cs || {}).left) || 0; 12524 } 12525 12526 if ((snapX || snapY || snapXY) && !skipSnap && (self.isDragging || self.isThrowing)) { 12527 if (snapXY) { 12528 _temp1.x = self.x; 12529 _temp1.y = self.y; 12530 snappedValue = snapXY(_temp1); 12531 12532 if (snappedValue.x !== self.x) { 12533 self.x = snappedValue.x; 12534 dirty = true; 12535 } 12536 12537 if (snappedValue.y !== self.y) { 12538 self.y = snappedValue.y; 12539 dirty = true; 12540 } 12541 } 12542 12543 if (snapX) { 12544 snappedValue = snapX(self.x); 12545 12546 if (snappedValue !== self.x) { 12547 self.x = snappedValue; 12548 12549 if (rotationMode) { 12550 self.rotation = snappedValue; 12551 } 12552 12553 dirty = true; 12554 } 12555 } 12556 12557 if (snapY) { 12558 snappedValue = snapY(self.y); 12559 12560 if (snappedValue !== self.y) { 12561 self.y = snappedValue; 12562 } 12563 12564 dirty = true; 12565 } 12566 } 12567 12568 dirty && render(true); 12569 12570 if (!skipOnUpdate) { 12571 self.deltaX = self.x - x; 12572 self.deltaY = self.y - y; 12573 12574 _dispatchEvent(self, "throwupdate", "onThrowUpdate"); 12575 } 12576 }, 12577 buildSnapFunc = function buildSnapFunc(snap, min, max, factor) { 12578 if (min == null) { 12579 min = -_bigNum; 12580 } 12581 12582 if (max == null) { 12583 max = _bigNum; 12584 } 12585 12586 if (_isFunction(snap)) { 12587 return function (n) { 12588 var edgeTolerance = !self.isPressed ? 1 : 1 - self.edgeResistance; 12589 return snap.call(self, n > max ? max + (n - max) * edgeTolerance : n < min ? min + (n - min) * edgeTolerance : n) * factor; 12590 }; 12591 } 12592 12593 if (_isArray(snap)) { 12594 return function (n) { 12595 var i = snap.length, 12596 closest = 0, 12597 absDif = _bigNum, 12598 val, 12599 dif; 12600 12601 while (--i > -1) { 12602 val = snap[i]; 12603 dif = val - n; 12604 12605 if (dif < 0) { 12606 dif = -dif; 12607 } 12608 12609 if (dif < absDif && val >= min && val <= max) { 12610 closest = i; 12611 absDif = dif; 12612 } 12613 } 12614 12615 return snap[closest]; 12616 }; 12617 } 12618 12619 return isNaN(snap) ? function (n) { 12620 return n; 12621 } : function () { 12622 return snap * factor; 12623 }; 12624 }, 12625 buildPointSnapFunc = function buildPointSnapFunc(snap, minX, maxX, minY, maxY, radius, factor) { 12626 radius = radius && radius < _bigNum ? radius * radius : _bigNum; 12627 12628 if (_isFunction(snap)) { 12629 return function (point) { 12630 var edgeTolerance = !self.isPressed ? 1 : 1 - self.edgeResistance, 12631 x = point.x, 12632 y = point.y, 12633 result, 12634 dx, 12635 dy; 12636 point.x = x = x > maxX ? maxX + (x - maxX) * edgeTolerance : x < minX ? minX + (x - minX) * edgeTolerance : x; 12637 point.y = y = y > maxY ? maxY + (y - maxY) * edgeTolerance : y < minY ? minY + (y - minY) * edgeTolerance : y; 12638 result = snap.call(self, point); 12639 12640 if (result !== point) { 12641 point.x = result.x; 12642 point.y = result.y; 12643 } 12644 12645 if (factor !== 1) { 12646 point.x *= factor; 12647 point.y *= factor; 12648 } 12649 12650 if (radius < _bigNum) { 12651 dx = point.x - x; 12652 dy = point.y - y; 12653 12654 if (dx * dx + dy * dy > radius) { 12655 point.x = x; 12656 point.y = y; 12657 } 12658 } 12659 12660 return point; 12661 }; 12662 } 12663 12664 if (_isArray(snap)) { 12665 return function (p) { 12666 var i = snap.length, 12667 closest = 0, 12668 minDist = _bigNum, 12669 x, 12670 y, 12671 point, 12672 dist; 12673 12674 while (--i > -1) { 12675 point = snap[i]; 12676 x = point.x - p.x; 12677 y = point.y - p.y; 12678 dist = x * x + y * y; 12679 12680 if (dist < minDist) { 12681 closest = i; 12682 minDist = dist; 12683 } 12684 } 12685 12686 return minDist <= radius ? snap[closest] : p; 12687 }; 12688 } 12689 12690 return function (n) { 12691 return n; 12692 }; 12693 }, 12694 calculateBounds = function calculateBounds() { 12695 var bounds, targetBounds, snap, snapIsRaw; 12696 hasBounds = false;
vendor: 5,734 bytes, lines 12697-12842
12697 12698 if (scrollProxy) { 12699 scrollProxy.calibrate(); 12700 self.minX = minX = -scrollProxy.maxScrollLeft(); 12701 self.minY = minY = -scrollProxy.maxScrollTop(); 12702 self.maxX = maxX = self.maxY = maxY = 0; 12703 hasBounds = true; 12704 } else if (!!vars.bounds) { 12705 bounds = _getBounds(vars.bounds, target.parentNode); 12706 12707 if (rotationMode) { 12708 self.minX = minX = bounds.left; 12709 self.maxX = maxX = bounds.left + bounds.width; 12710 self.minY = minY = self.maxY = maxY = 0; 12711 } else if (!_isUndefined(vars.bounds.maxX) || !_isUndefined(vars.bounds.maxY)) { 12712 bounds = vars.bounds; 12713 self.minX = minX = bounds.minX; 12714 self.minY = minY = bounds.minY; 12715 self.maxX = maxX = bounds.maxX; 12716 self.maxY = maxY = bounds.maxY; 12717 } else { 12718 targetBounds = _getBounds(target, target.parentNode); 12719 self.minX = minX = Math.round(getPropAsNum(xProp, "px") + bounds.left - targetBounds.left - 0.5); 12720 self.minY = minY = Math.round(getPropAsNum(yProp, "px") + bounds.top - targetBounds.top - 0.5); 12721 self.maxX = maxX = Math.round(minX + (bounds.width - targetBounds.width)); 12722 self.maxY = maxY = Math.round(minY + (bounds.height - targetBounds.height)); 12723 } 12724 12725 if (minX > maxX) { 12726 self.minX = maxX; 12727 self.maxX = maxX = minX; 12728 minX = self.minX; 12729 } 12730 12731 if (minY > maxY) { 12732 self.minY = maxY; 12733 self.maxY = maxY = minY; 12734 minY = self.minY; 12735 } 12736 12737 if (rotationMode) { 12738 self.minRotation = minX; 12739 self.maxRotation = maxX; 12740 } 12741 12742 hasBounds = true; 12743 } 12744 12745 if (vars.liveSnap) { 12746 snap = vars.liveSnap === true ? vars.snap || {} : vars.liveSnap; 12747 snapIsRaw = _isArray(snap) || _isFunction(snap); 12748 12749 if (rotationMode) { 12750 snapX = buildSnapFunc(snapIsRaw ? snap : snap.rotation, minX, maxX, 1); 12751 snapY = null; 12752 } else { 12753 if (snap.points) { 12754 snapXY = buildPointSnapFunc(snapIsRaw ? snap : snap.points, minX, maxX, minY, maxY, snap.radius, scrollProxy ? -1 : 1); 12755 } else { 12756 if (allowX) { 12757 snapX = buildSnapFunc(snapIsRaw ? snap : snap.x || snap.left || snap.scrollLeft, minX, maxX, scrollProxy ? -1 : 1); 12758 } 12759 12760 if (allowY) { 12761 snapY = buildSnapFunc(snapIsRaw ? snap : snap.y || snap.top || snap.scrollTop, minY, maxY, scrollProxy ? -1 : 1); 12762 } 12763 } 12764 } 12765 } 12766 }, 12767 onThrowComplete = function onThrowComplete() { 12768 self.isThrowing = false; 12769 12770 _dispatchEvent(self, "throwcomplete", "onThrowComplete"); 12771 }, 12772 onThrowInterrupt = function onThrowInterrupt() { 12773 self.isThrowing = false; 12774 }, 12775 animate = function animate(inertia, forceZeroVelocity) { 12776 var snap, snapIsRaw, tween, overshootTolerance; 12777 12778 if (inertia && InertiaPlugin) { 12779 if (inertia === true) { 12780 snap = vars.snap || vars.liveSnap || {}; 12781 snapIsRaw = _isArray(snap) || _isFunction(snap); 12782 inertia = { 12783 resistance: (vars.throwResistance || vars.resistance || 1000) / (rotationMode ? 10 : 1) 12784 }; 12785 12786 if (rotationMode) { 12787 inertia.rotation = _parseInertia(self, snapIsRaw ? snap : snap.rotation, maxX, minX, 1, forceZeroVelocity); 12788 } else { 12789 if (allowX) { 12790 inertia[xProp] = _parseInertia(self, snapIsRaw ? snap : snap.points || snap.x || snap.left, maxX, minX, scrollProxy ? -1 : 1, forceZeroVelocity || self.lockedAxis === "x"); 12791 } 12792 12793 if (allowY) { 12794 inertia[yProp] = _parseInertia(self, snapIsRaw ? snap : snap.points || snap.y || snap.top, maxY, minY, scrollProxy ? -1 : 1, forceZeroVelocity || self.lockedAxis === "y"); 12795 } 12796 12797 if (snap.points || _isArray(snap) && _isObject(snap[0])) { 12798 inertia.linkedProps = xProp + "," + yProp; 12799 inertia.radius = snap.radius; 12800 } 12801 } 12802 } 12803 12804 self.isThrowing = true; 12805 overshootTolerance = !isNaN(vars.overshootTolerance) ? vars.overshootTolerance : vars.edgeResistance === 1 ? 0 : 1 - self.edgeResistance + 0.2; 12806 12807 if (!inertia.duration) { 12808 inertia.duration = { 12809 max: Math.max(vars.minDuration || 0, "maxDuration" in vars ? vars.maxDuration : 2), 12810 min: !isNaN(vars.minDuration) ? vars.minDuration : overshootTolerance === 0 || _isObject(inertia) && inertia.resistance > 1000 ? 0 : 0.5, 12811 overshoot: overshootTolerance 12812 }; 12813 } 12814 12815 self.tween = tween = gsap.to(scrollProxy || target, { 12816 inertia: inertia, 12817 data: "_draggable", 12818 onComplete: onThrowComplete, 12819 onInterrupt: onThrowInterrupt, 12820 onUpdate: vars.fastMode ? _dispatchEvent : syncXY, 12821 onUpdateParams: vars.fastMode ? [self, "onthrowupdate", "onThrowUpdate"] : snap && snap.radius ? [false, true] : [] 12822 }); 12823 12824 if (!vars.fastMode) { 12825 if (scrollProxy) { 12826 scrollProxy._skip = true; 12827 } 12828 12829 tween.render(1e9, true, true); 12830 syncXY(true, true); 12831 self.endX = self.x; 12832 self.endY = self.y; 12833 12834 if (rotationMode) { 12835 self.endRotation = self.x; 12836 } 12837 12838 tween.play(0); 12839 syncXY(true, true); 12840 12841 if (scrollProxy) { 12842 scrollProxy._skip = false;
vendor: 9,915 bytes, lines 12843-13124
12843 } 12844 } 12845 } else if (hasBounds) { 12846 self.applyBounds(); 12847 } 12848 }, 12849 updateMatrix = function updateMatrix(shiftStart) { 12850 var start = matrix, 12851 p; 12852 matrix = getGlobalMatrix(target.parentNode, true); 12853 12854 if (shiftStart && self.isPressed && !matrix.equals(start || new Matrix2D())) { 12855 p = start.inverse().apply({ 12856 x: startPointerX, 12857 y: startPointerY 12858 }); 12859 matrix.apply(p, p); 12860 startPointerX = p.x; 12861 startPointerY = p.y; 12862 } 12863 12864 if (matrix.equals(_identityMatrix$1)) { 12865 matrix = null; 12866 } 12867 }, 12868 recordStartPositions = function recordStartPositions() { 12869 var edgeTolerance = 1 - self.edgeResistance, 12870 offsetX = isFixed ? _getDocScrollLeft$1(ownerDoc) : 0, 12871 offsetY = isFixed ? _getDocScrollTop$1(ownerDoc) : 0, 12872 parsedOrigin, 12873 x, 12874 y; 12875 updateMatrix(false); 12876 _point1.x = self.pointerX - offsetX; 12877 _point1.y = self.pointerY - offsetY; 12878 matrix && matrix.apply(_point1, _point1); 12879 startPointerX = _point1.x; 12880 startPointerY = _point1.y; 12881 12882 if (dirty) { 12883 setPointerPosition(self.pointerX, self.pointerY); 12884 render(true); 12885 } 12886 12887 if (scrollProxy) { 12888 calculateBounds(); 12889 startElementY = scrollProxy.top(); 12890 startElementX = scrollProxy.left(); 12891 } else { 12892 if (isTweening()) { 12893 syncXY(true, true); 12894 calculateBounds(); 12895 } else { 12896 self.applyBounds(); 12897 } 12898 12899 if (rotationMode) { 12900 parsedOrigin = target.ownerSVGElement ? [gsCache.xOrigin - target.getBBox().x, gsCache.yOrigin - target.getBBox().y] : (_getComputedStyle(target)[_transformOriginProp$1] || "0 0").split(" "); 12901 rotationOrigin = self.rotationOrigin = getGlobalMatrix(target).apply({ 12902 x: parseFloat(parsedOrigin[0]) || 0, 12903 y: parseFloat(parsedOrigin[1]) || 0 12904 }); 12905 syncXY(true, true); 12906 x = self.pointerX - rotationOrigin.x - offsetX; 12907 y = rotationOrigin.y - self.pointerY + offsetY; 12908 startElementX = self.x; 12909 startElementY = self.y = Math.atan2(y, x) * _RAD2DEG; 12910 } else { 12911 startElementY = getPropAsNum(yProp, "px"); 12912 startElementX = getPropAsNum(xProp, "px"); 12913 } 12914 } 12915 12916 if (hasBounds && edgeTolerance) { 12917 if (startElementX > maxX) { 12918 startElementX = maxX + (startElementX - maxX) / edgeTolerance; 12919 } else if (startElementX < minX) { 12920 startElementX = minX - (minX - startElementX) / edgeTolerance; 12921 } 12922 12923 if (!rotationMode) { 12924 if (startElementY > maxY) { 12925 startElementY = maxY + (startElementY - maxY) / edgeTolerance; 12926 } else if (startElementY < minY) { 12927 startElementY = minY - (minY - startElementY) / edgeTolerance; 12928 } 12929 } 12930 } 12931 12932 self.startX = startElementX = _round(startElementX); 12933 self.startY = startElementY = _round(startElementY); 12934 }, 12935 isTweening = function isTweening() { 12936 return self.tween && self.tween.isActive(); 12937 }, 12938 removePlaceholder = function removePlaceholder() { 12939 if (_placeholderDiv.parentNode && !isTweening() && !self.isDragging) { 12940 _placeholderDiv.parentNode.removeChild(_placeholderDiv); 12941 } 12942 }, 12943 onPress = function onPress(e, force) { 12944 var i; 12945 12946 if (!enabled || self.isPressed || !e || (e.type === "mousedown" || e.type === "pointerdown") && !force && _getTime() - clickTime < 30 && _touchEventLookup[self.pointerEvent.type]) { 12947 isPreventingDefault && e && enabled && _preventDefault(e); 12948 return; 12949 } 12950 12951 interrupted = isTweening(); 12952 self.pointerEvent = e; 12953 12954 if (_touchEventLookup[e.type]) { 12955 touchEventTarget = ~e.type.indexOf("touch") ? e.currentTarget || e.target : ownerDoc; 12956 12957 _addListener(touchEventTarget, "touchend", onRelease); 12958 12959 _addListener(touchEventTarget, "touchmove", onMove); 12960 12961 _addListener(touchEventTarget, "touchcancel", onRelease); 12962 12963 _addListener(ownerDoc, "touchstart", _onMultiTouchDocument); 12964 } else { 12965 touchEventTarget = null; 12966 12967 _addListener(ownerDoc, "mousemove", onMove); 12968 } 12969 12970 touchDragAxis = null; 12971 12972 if (!_supportsPointer || !touchEventTarget) { 12973 _addListener(ownerDoc, "mouseup", onRelease); 12974 12975 e && e.target && _addListener(e.target, "mouseup", onRelease); 12976 } 12977 12978 isClicking = isClickable.call(self, e.target) && vars.dragClickables === false && !force; 12979 12980 if (isClicking) { 12981 _addListener(e.target, "change", onRelease); 12982 12983 _dispatchEvent(self, "pressInit", "onPressInit"); 12984 12985 _dispatchEvent(self, "press", "onPress"); 12986 12987 _setSelectable(triggers, true); 12988 12989 isPreventingDefault = false; 12990 return; 12991 } 12992 12993 allowNativeTouchScrolling = !touchEventTarget || allowX === allowY || self.vars.allowNativeTouchScrolling === false || self.vars.allowContextMenu && e && (e.ctrlKey || e.which > 2) ? false : allowX ? "y" : "x"; 12994 isPreventingDefault = !allowNativeTouchScrolling && !self.allowEventDefault; 12995 12996 if (isPreventingDefault) { 12997 _preventDefault(e); 12998 12999 _addListener(_win$1, "touchforcechange", _preventDefault); 13000 } 13001 13002 if (e.changedTouches) { 13003 e = touch = e.changedTouches[0]; 13004 touchID = e.identifier; 13005 } else if (e.pointerId) { 13006 touchID = e.pointerId; 13007 } else { 13008 touch = touchID = null; 13009 } 13010 13011 _dragCount++; 13012 13013 _addToRenderQueue(render); 13014 13015 startPointerY = self.pointerY = e.pageY; 13016 startPointerX = self.pointerX = e.pageX; 13017 13018 _dispatchEvent(self, "pressInit", "onPressInit"); 13019 13020 if (allowNativeTouchScrolling || self.autoScroll) { 13021 _recordMaxScrolls(target.parentNode); 13022 } 13023 13024 if (target.parentNode && self.autoScroll && !scrollProxy && !rotationMode && target.parentNode._gsMaxScrollX && !_placeholderDiv.parentNode && !target.getBBox) { 13025 _placeholderDiv.style.width = target.parentNode.scrollWidth + "px"; 13026 target.parentNode.appendChild(_placeholderDiv); 13027 } 13028 13029 recordStartPositions(); 13030 self.tween && self.tween.kill(); 13031 self.isThrowing = false; 13032 gsap.killTweensOf(scrollProxy || target, killProps, true); 13033 scrollProxy && gsap.killTweensOf(target, { 13034 scrollTo: 1 13035 }, true); 13036 self.tween = self.lockedAxis = null; 13037 13038 if (vars.zIndexBoost || !rotationMode && !scrollProxy && vars.zIndexBoost !== false) { 13039 target.style.zIndex = Draggable.zIndex++; 13040 } 13041 13042 self.isPressed = true; 13043 hasDragCallback = !!(vars.onDrag || self._listeners.drag); 13044 hasMoveCallback = !!(vars.onMove || self._listeners.move); 13045 13046 if (vars.cursor !== false || vars.activeCursor) { 13047 i = triggers.length; 13048 13049 while (--i > -1) { 13050 gsap.set(triggers[i], { 13051 cursor: vars.activeCursor || vars.cursor || (_defaultCursor === "grab" ? "grabbing" : _defaultCursor) 13052 }); 13053 } 13054 } 13055 13056 _dispatchEvent(self, "press", "onPress"); 13057 }, 13058 onMove = function onMove(e) { 13059 var originalEvent = e, 13060 touches, 13061 pointerX, 13062 pointerY, 13063 i, 13064 dx, 13065 dy; 13066 13067 if (!enabled || _isMultiTouching || !self.isPressed || !e) { 13068 isPreventingDefault && e && enabled && _preventDefault(e); 13069 return; 13070 } 13071 13072 self.pointerEvent = e; 13073 touches = e.changedTouches; 13074 13075 if (touches) { 13076 e = touches[0]; 13077 13078 if (e !== touch && e.identifier !== touchID) { 13079 i = touches.length; 13080 13081 while (--i > -1 && (e = touches[i]).identifier !== touchID && e.target !== target) {} 13082 13083 if (i < 0) { 13084 return; 13085 } 13086 } 13087 } else if (e.pointerId && touchID && e.pointerId !== touchID) { 13088 return; 13089 } 13090 13091 if (touchEventTarget && allowNativeTouchScrolling && !touchDragAxis) { 13092 _point1.x = e.pageX - (isFixed ? _getDocScrollLeft$1(ownerDoc) : 0); 13093 _point1.y = e.pageY - (isFixed ? _getDocScrollTop$1(ownerDoc) : 0); 13094 matrix && matrix.apply(_point1, _point1); 13095 pointerX = _point1.x; 13096 pointerY = _point1.y; 13097 dx = Math.abs(pointerX - startPointerX); 13098 dy = Math.abs(pointerY - startPointerY); 13099 13100 if (dx !== dy && (dx > minimumMovement || dy > minimumMovement) || _isAndroid && allowNativeTouchScrolling === touchDragAxis) { 13101 touchDragAxis = dx > dy && allowX ? "x" : "y"; 13102 13103 if (allowNativeTouchScrolling && touchDragAxis !== allowNativeTouchScrolling) { 13104 _addListener(_win$1, "touchforcechange", _preventDefault); 13105 } 13106 13107 if (self.vars.lockAxisOnTouchScroll !== false && allowX && allowY) { 13108 self.lockedAxis = touchDragAxis === "x" ? "y" : "x"; 13109 _isFunction(self.vars.onLockAxis) && self.vars.onLockAxis.call(self, originalEvent); 13110 } 13111 13112 if (_isAndroid && allowNativeTouchScrolling === touchDragAxis) { 13113 onRelease(originalEvent); 13114 return; 13115 } 13116 } 13117 } 13118 13119 if (!self.allowEventDefault && (!allowNativeTouchScrolling || touchDragAxis && allowNativeTouchScrolling !== touchDragAxis) && originalEvent.cancelable !== false) { 13120 _preventDefault(originalEvent); 13121 13122 isPreventingDefault = true; 13123 } else if (isPreventingDefault) { 13124 isPreventingDefault = false;
vendor: 7,378 bytes, lines 13125-13366
13125 } 13126 13127 if (self.autoScroll) { 13128 checkAutoScrollBounds = true; 13129 } 13130 13131 setPointerPosition(e.pageX, e.pageY, hasMoveCallback); 13132 }, 13133 setPointerPosition = function setPointerPosition(pointerX, pointerY, invokeOnMove) { 13134 var dragTolerance = 1 - self.dragResistance, 13135 edgeTolerance = 1 - self.edgeResistance, 13136 prevPointerX = self.pointerX, 13137 prevPointerY = self.pointerY, 13138 prevStartElementY = startElementY, 13139 prevX = self.x, 13140 prevY = self.y, 13141 prevEndX = self.endX, 13142 prevEndY = self.endY, 13143 prevEndRotation = self.endRotation, 13144 prevDirty = dirty, 13145 xChange, 13146 yChange, 13147 x, 13148 y, 13149 dif, 13150 temp; 13151 self.pointerX = pointerX; 13152 self.pointerY = pointerY; 13153 13154 if (isFixed) { 13155 pointerX -= _getDocScrollLeft$1(ownerDoc); 13156 pointerY -= _getDocScrollTop$1(ownerDoc); 13157 } 13158 13159 if (rotationMode) { 13160 y = Math.atan2(rotationOrigin.y - pointerY, pointerX - rotationOrigin.x) * _RAD2DEG; 13161 dif = self.y - y; 13162 13163 if (dif > 180) { 13164 startElementY -= 360; 13165 self.y = y; 13166 } else if (dif < -180) { 13167 startElementY += 360; 13168 self.y = y; 13169 } 13170 13171 if (self.x !== startElementX || Math.abs(startElementY - y) > minimumMovement) { 13172 self.y = y; 13173 x = startElementX + (startElementY - y) * dragTolerance; 13174 } else { 13175 x = startElementX; 13176 } 13177 } else { 13178 if (matrix) { 13179 temp = pointerX * matrix.a + pointerY * matrix.c + matrix.e; 13180 pointerY = pointerX * matrix.b + pointerY * matrix.d + matrix.f; 13181 pointerX = temp; 13182 } 13183 13184 yChange = pointerY - startPointerY; 13185 xChange = pointerX - startPointerX; 13186 13187 if (yChange < minimumMovement && yChange > -minimumMovement) { 13188 yChange = 0; 13189 } 13190 13191 if (xChange < minimumMovement && xChange > -minimumMovement) { 13192 xChange = 0; 13193 } 13194 13195 if ((self.lockAxis || self.lockedAxis) && (xChange || yChange)) { 13196 temp = self.lockedAxis; 13197 13198 if (!temp) { 13199 self.lockedAxis = temp = allowX && Math.abs(xChange) > Math.abs(yChange) ? "y" : allowY ? "x" : null; 13200 13201 if (temp && _isFunction(self.vars.onLockAxis)) { 13202 self.vars.onLockAxis.call(self, self.pointerEvent); 13203 } 13204 } 13205 13206 if (temp === "y") { 13207 yChange = 0; 13208 } else if (temp === "x") { 13209 xChange = 0; 13210 } 13211 } 13212 13213 x = _round(startElementX + xChange * dragTolerance); 13214 y = _round(startElementY + yChange * dragTolerance); 13215 } 13216 13217 if ((snapX || snapY || snapXY) && (self.x !== x || self.y !== y && !rotationMode)) { 13218 if (snapXY) { 13219 _temp1.x = x; 13220 _temp1.y = y; 13221 temp = snapXY(_temp1); 13222 x = _round(temp.x); 13223 y = _round(temp.y); 13224 } 13225 13226 if (snapX) { 13227 x = _round(snapX(x)); 13228 } 13229 13230 if (snapY) { 13231 y = _round(snapY(y)); 13232 } 13233 } else if (hasBounds) { 13234 if (x > maxX) { 13235 x = maxX + Math.round((x - maxX) * edgeTolerance); 13236 } else if (x < minX) { 13237 x = minX + Math.round((x - minX) * edgeTolerance); 13238 } 13239 13240 if (!rotationMode) { 13241 if (y > maxY) { 13242 y = Math.round(maxY + (y - maxY) * edgeTolerance); 13243 } else if (y < minY) { 13244 y = Math.round(minY + (y - minY) * edgeTolerance); 13245 } 13246 } 13247 } 13248 13249 if (self.x !== x || self.y !== y && !rotationMode) { 13250 if (rotationMode) { 13251 self.endRotation = self.x = self.endX = x; 13252 dirty = true; 13253 } else { 13254 if (allowY) { 13255 self.y = self.endY = y; 13256 dirty = true; 13257 } 13258 13259 if (allowX) { 13260 self.x = self.endX = x; 13261 dirty = true; 13262 } 13263 } 13264 13265 if (!invokeOnMove || _dispatchEvent(self, "move", "onMove") !== false) { 13266 if (!self.isDragging && self.isPressed) { 13267 self.isDragging = true; 13268 13269 _dispatchEvent(self, "dragstart", "onDragStart"); 13270 } 13271 } else { 13272 self.pointerX = prevPointerX; 13273 self.pointerY = prevPointerY; 13274 startElementY = prevStartElementY; 13275 self.x = prevX; 13276 self.y = prevY; 13277 self.endX = prevEndX; 13278 self.endY = prevEndY; 13279 self.endRotation = prevEndRotation; 13280 dirty = prevDirty; 13281 } 13282 } 13283 }, 13284 onRelease = function onRelease(e, force) { 13285 if (!enabled || !self.isPressed || e && touchID != null && !force && (e.pointerId && e.pointerId !== touchID && e.target !== target || e.changedTouches && !_hasTouchID(e.changedTouches, touchID))) { 13286 isPreventingDefault && e && enabled && _preventDefault(e); 13287 return; 13288 } 13289 13290 self.isPressed = false; 13291 var originalEvent = e, 13292 wasDragging = self.isDragging, 13293 isContextMenuRelease = self.vars.allowContextMenu && e && (e.ctrlKey || e.which > 2), 13294 placeholderDelayedCall = gsap.delayedCall(0.001, removePlaceholder), 13295 touches, 13296 i, 13297 syntheticEvent, 13298 eventTarget, 13299 syntheticClick; 13300 13301 if (touchEventTarget) { 13302 _removeListener(touchEventTarget, "touchend", onRelease); 13303 13304 _removeListener(touchEventTarget, "touchmove", onMove); 13305 13306 _removeListener(touchEventTarget, "touchcancel", onRelease); 13307 13308 _removeListener(ownerDoc, "touchstart", _onMultiTouchDocument); 13309 } else { 13310 _removeListener(ownerDoc, "mousemove", onMove); 13311 } 13312 13313 _removeListener(_win$1, "touchforcechange", _preventDefault); 13314 13315 if (!_supportsPointer || !touchEventTarget) { 13316 _removeListener(ownerDoc, "mouseup", onRelease); 13317 13318 e && e.target && _removeListener(e.target, "mouseup", onRelease); 13319 } 13320 13321 dirty = false; 13322 13323 if (wasDragging) { 13324 dragEndTime = _lastDragTime = _getTime(); 13325 self.isDragging = false; 13326 } 13327 13328 if (isClicking && !isContextMenuRelease) { 13329 if (e) { 13330 _removeListener(e.target, "change", onRelease); 13331 13332 self.pointerEvent = originalEvent; 13333 } 13334 13335 _setSelectable(triggers, false); 13336 13337 _dispatchEvent(self, "release", "onRelease"); 13338 13339 _dispatchEvent(self, "click", "onClick"); 13340 13341 isClicking = false; 13342 return; 13343 } 13344 13345 _removeFromRenderQueue(render); 13346 13347 i = triggers.length; 13348 13349 while (--i > -1) { 13350 _setStyle(triggers[i], "cursor", vars.cursor || (vars.cursor !== false ? _defaultCursor : null)); 13351 } 13352 13353 _dragCount--; 13354 13355 if (e) { 13356 touches = e.changedTouches; 13357 13358 if (touches) { 13359 e = touches[0]; 13360 13361 if (e !== touch && e.identifier !== touchID) { 13362 i = touches.length; 13363 13364 while (--i > -1 && (e = touches[i]).identifier !== touchID && e.target !== target) {} 13365 13366 if (i < 0
vendor: 3,558 bytes, lines 13366-13459
13366) { 13367 return; 13368 } 13369 } 13370 } 13371 13372 self.pointerEvent = originalEvent; 13373 self.pointerX = e.pageX; 13374 self.pointerY = e.pageY; 13375 } 13376 13377 if (isContextMenuRelease && originalEvent) { 13378 _preventDefault(originalEvent); 13379 13380 isPreventingDefault = true; 13381 13382 _dispatchEvent(self, "release", "onRelease"); 13383 } else if (originalEvent && !wasDragging) { 13384 isPreventingDefault = false; 13385 13386 if (interrupted && (vars.snap || vars.bounds)) { 13387 animate(vars.inertia || vars.throwProps); 13388 } 13389 13390 _dispatchEvent(self, "release", "onRelease"); 13391 13392 if ((!_isAndroid || originalEvent.type !== "touchmove") && originalEvent.type.indexOf("cancel") === -1) { 13393 _dispatchEvent(self, "click", "onClick"); 13394 13395 if (_getTime() - clickTime < 300) { 13396 _dispatchEvent(self, "doubleclick", "onDoubleClick"); 13397 } 13398 13399 eventTarget = originalEvent.target || target; 13400 clickTime = _getTime(); 13401 13402 syntheticClick = function syntheticClick() { 13403 if (clickTime !== clickDispatch && self.enabled() && !self.isPressed && !originalEvent.defaultPrevented) { 13404 if (eventTarget.click) { 13405 eventTarget.click(); 13406 } else if (ownerDoc.createEvent) { 13407 syntheticEvent = ownerDoc.createEvent("MouseEvents"); 13408 syntheticEvent.initMouseEvent("click", true, true, _win$1, 1, self.pointerEvent.screenX, self.pointerEvent.screenY, self.pointerX, self.pointerY, false, false, false, false, 0, null); 13409 eventTarget.dispatchEvent(syntheticEvent); 13410 } 13411 } 13412 }; 13413 13414 if (!_isAndroid && !originalEvent.defaultPrevented) { 13415 gsap.delayedCall(0.05, syntheticClick); 13416 } 13417 } 13418 } else { 13419 animate(vars.inertia || vars.throwProps); 13420 13421 if (!self.allowEventDefault && originalEvent && (vars.dragClickables !== false || !isClickable.call(self, originalEvent.target)) && wasDragging && (!allowNativeTouchScrolling || touchDragAxis && allowNativeTouchScrolling === touchDragAxis) && originalEvent.cancelable !== false) { 13422 isPreventingDefault = true; 13423 13424 _preventDefault(originalEvent); 13425 } else { 13426 isPreventingDefault = false; 13427 } 13428 13429 _dispatchEvent(self, "release", "onRelease"); 13430 } 13431 13432 isTweening() && placeholderDelayedCall.duration(self.tween.duration()); 13433 wasDragging && _dispatchEvent(self, "dragend", "onDragEnd"); 13434 return true; 13435 }, 13436 updateScroll = function updateScroll(e) { 13437 if (e && self.isDragging && !scrollProxy) { 13438 var parent = e.target || target.parentNode, 13439 deltaX = parent.scrollLeft - parent._gsScrollX, 13440 deltaY = parent.scrollTop - parent._gsScrollY; 13441 13442 if (deltaX || deltaY) { 13443 if (matrix) { 13444 startPointerX -= deltaX * matrix.a + deltaY * matrix.c; 13445 startPointerY -= deltaY * matrix.d + deltaX * matrix.b; 13446 } else { 13447 startPointerX -= deltaX; 13448 startPointerY -= deltaY; 13449 } 13450 13451 parent._gsScrollX += deltaX; 13452 parent._gsScrollY += deltaY; 13453 setPointerPosition(self.pointerX, self.pointerY); 13454 } 13455 } 13456 }, 13457 onClick = function onClick(e) { 13458 var time = _getTime(), 13459 recentlyClicked = time - clickTime <
vendor: 3,515 bytes, lines 13459-13564
1345940, 13460 recentlyDragged = time - dragEndTime < 40, 13461 alreadyDispatched = recentlyClicked && clickDispatch === clickTime, 13462 defaultPrevented = self.pointerEvent && self.pointerEvent.defaultPrevented, 13463 alreadyDispatchedTrusted = recentlyClicked && trustedClickDispatch === clickTime, 13464 trusted = e.isTrusted || e.isTrusted == null && recentlyClicked && alreadyDispatched; 13465 13466 if ((alreadyDispatched || recentlyDragged && self.vars.suppressClickOnDrag !== false) && e.stopImmediatePropagation) { 13467 e.stopImmediatePropagation(); 13468 } 13469 13470 if (recentlyClicked && !(self.pointerEvent && self.pointerEvent.defaultPrevented) && (!alreadyDispatched || trusted && !alreadyDispatchedTrusted)) { 13471 if (trusted && alreadyDispatched) { 13472 trustedClickDispatch = clickTime; 13473 } 13474 13475 clickDispatch = clickTime; 13476 return; 13477 } 13478 13479 if (self.isPressed || recentlyDragged || recentlyClicked) { 13480 if (!trusted || !e.detail || !recentlyClicked || defaultPrevented) { 13481 _preventDefault(e); 13482 } 13483 } 13484 13485 if (!recentlyClicked && !recentlyDragged) { 13486 e && e.target && (self.pointerEvent = e); 13487 13488 _dispatchEvent(self, "click", "onClick"); 13489 } 13490 }, 13491 localizePoint = function localizePoint(p) { 13492 return matrix ? { 13493 x: p.x * matrix.a + p.y * matrix.c + matrix.e, 13494 y: p.x * matrix.b + p.y * matrix.d + matrix.f 13495 } : { 13496 x: p.x, 13497 y: p.y 13498 }; 13499 }; 13500 13501 old = Draggable.get(target); 13502 old && old.kill(); 13503 13504 _this2.startDrag = function (event, align) { 13505 var r1, r2, p1, p2; 13506 onPress(event || self.pointerEvent, true); 13507 13508 if (align && !self.hitTest(event || self.pointerEvent)) { 13509 r1 = _parseRect(event || self.pointerEvent); 13510 r2 = _parseRect(target); 13511 p1 = localizePoint({ 13512 x: r1.left + r1.width / 2, 13513 y: r1.top + r1.height / 2 13514 }); 13515 p2 = localizePoint({ 13516 x: r2.left + r2.width / 2, 13517 y: r2.top + r2.height / 2 13518 }); 13519 startPointerX -= p1.x - p2.x; 13520 startPointerY -= p1.y - p2.y; 13521 } 13522 13523 if (!self.isDragging) { 13524 self.isDragging = true; 13525 13526 _dispatchEvent(self, "dragstart", "onDragStart"); 13527 } 13528 }; 13529 13530 _this2.drag = onMove; 13531 13532 _this2.endDrag = function (e) { 13533 return onRelease(e || self.pointerEvent, true); 13534 }; 13535 13536 _this2.timeSinceDrag = function () { 13537 return self.isDragging ? 0 : (_getTime() - dragEndTime) / 1000; 13538 }; 13539 13540 _this2.timeSinceClick = function () { 13541 return (_getTime() - clickTime) / 1000; 13542 }; 13543 13544 _this2.hitTest = function (target, threshold) { 13545 return Draggable.hitTest(self.target, target, threshold); 13546 }; 13547 13548 _this2.getDirection = function (from, diagonalThreshold) { 13549 var mode = from === "velocity" && InertiaPlugin ? from : _isObject(from) && !rotationMode ? "element" : "start", 13550 xChange, 13551 yChange, 13552 ratio, 13553 direction, 13554 r1, 13555 r2; 13556 13557 if (mode === "element") { 13558 r1 = _parseRect(self.target); 13559 r2 = _parseRect(from); 13560 } 13561 13562 xChange = mode === "start" ? self.x - startElementX : mode === "velocity" ? InertiaPlugin.getVelocity(target, xProp) : r1.left + r1.width / 2 - (r2.left + r2.width / 2); 13563 13564 if (rotationMode) {
vendor: 10,331 bytes, lines 13565-13909
13565 return xChange < 0 ? "counter-clockwise" : "clockwise"; 13566 } else { 13567 diagonalThreshold = diagonalThreshold || 2; 13568 yChange = mode === "start" ? self.y - startElementY : mode === "velocity" ? InertiaPlugin.getVelocity(target, yProp) : r1.top + r1.height / 2 - (r2.top + r2.height / 2); 13569 ratio = Math.abs(xChange / yChange); 13570 direction = ratio < 1 / diagonalThreshold ? "" : xChange < 0 ? "left" : "right"; 13571 13572 if (ratio < diagonalThreshold) { 13573 if (direction !== "") { 13574 direction += "-"; 13575 } 13576 13577 direction += yChange < 0 ? "up" : "down"; 13578 } 13579 } 13580 13581 return direction; 13582 }; 13583 13584 _this2.applyBounds = function (newBounds, sticky) { 13585 var x, y, forceZeroVelocity, e, parent, isRoot; 13586 13587 if (newBounds && vars.bounds !== newBounds) { 13588 vars.bounds = newBounds; 13589 return self.update(true, sticky); 13590 } 13591 13592 syncXY(true); 13593 calculateBounds(); 13594 13595 if (hasBounds && !isTweening()) { 13596 x = self.x; 13597 y = self.y; 13598 13599 if (x > maxX) { 13600 x = maxX; 13601 } else if (x < minX) { 13602 x = minX; 13603 } 13604 13605 if (y > maxY) { 13606 y = maxY; 13607 } else if (y < minY) { 13608 y = minY; 13609 } 13610 13611 if (self.x !== x || self.y !== y) { 13612 forceZeroVelocity = true; 13613 self.x = self.endX = x; 13614 13615 if (rotationMode) { 13616 self.endRotation = x; 13617 } else { 13618 self.y = self.endY = y; 13619 } 13620 13621 dirty = true; 13622 render(true); 13623 13624 if (self.autoScroll && !self.isDragging) { 13625 _recordMaxScrolls(target.parentNode); 13626 13627 e = target; 13628 _windowProxy.scrollTop = _win$1.pageYOffset != null ? _win$1.pageYOffset : ownerDoc.documentElement.scrollTop != null ? ownerDoc.documentElement.scrollTop : ownerDoc.body.scrollTop; 13629 _windowProxy.scrollLeft = _win$1.pageXOffset != null ? _win$1.pageXOffset : ownerDoc.documentElement.scrollLeft != null ? ownerDoc.documentElement.scrollLeft : ownerDoc.body.scrollLeft; 13630 13631 while (e && !isRoot) { 13632 isRoot = _isRoot(e.parentNode); 13633 parent = isRoot ? _windowProxy : e.parentNode; 13634 13635 if (allowY && parent.scrollTop > parent._gsMaxScrollY) { 13636 parent.scrollTop = parent._gsMaxScrollY; 13637 } 13638 13639 if (allowX && parent.scrollLeft > parent._gsMaxScrollX) { 13640 parent.scrollLeft = parent._gsMaxScrollX; 13641 } 13642 13643 e = parent; 13644 } 13645 } 13646 } 13647 13648 if (self.isThrowing && (forceZeroVelocity || self.endX > maxX || self.endX < minX || self.endY > maxY || self.endY < minY)) { 13649 animate(vars.inertia || vars.throwProps, forceZeroVelocity); 13650 } 13651 } 13652 13653 return self; 13654 }; 13655 13656 _this2.update = function (applyBounds, sticky, ignoreExternalChanges) { 13657 var x = self.x, 13658 y = self.y; 13659 updateMatrix(!sticky); 13660 13661 if (applyBounds) { 13662 self.applyBounds(); 13663 } else { 13664 dirty && ignoreExternalChanges && render(true); 13665 syncXY(true); 13666 } 13667 13668 if (sticky) { 13669 setPointerPosition(self.pointerX, self.pointerY); 13670 dirty && render(true); 13671 } 13672 13673 if (self.isPressed && !sticky && (allowX && Math.abs(x - self.x) > 0.01 || allowY && Math.abs(y - self.y) > 0.01 && !rotationMode)) { 13674 recordStartPositions(); 13675 } 13676 13677 if (self.autoScroll) { 13678 _recordMaxScrolls(target.parentNode, self.isDragging); 13679 13680 checkAutoScrollBounds = self.isDragging; 13681 render(true); 13682 13683 _removeScrollListener(target, updateScroll); 13684 13685 _addScrollListener(target, updateScroll); 13686 } 13687 13688 return self; 13689 }; 13690 13691 _this2.enable = function (type) { 13692 var setVars = { 13693 lazy: true 13694 }, 13695 id, 13696 i, 13697 trigger; 13698 13699 if (vars.cursor !== false) { 13700 setVars.cursor = vars.cursor || _defaultCursor; 13701 } 13702 13703 if (gsap.utils.checkPrefix("touchCallout")) { 13704 setVars.touchCallout = "none"; 13705 } 13706 13707 if (type !== "soft") { 13708 _setTouchActionForAllDescendants(triggers, allowX === allowY ? "none" : vars.allowNativeTouchScrolling && target.scrollHeight === target.clientHeight === (target.scrollWidth === target.clientHeight) || vars.allowEventDefault ? "manipulation" : allowX ? "pan-y" : "pan-x"); 13709 13710 i = triggers.length; 13711 13712 while (--i > -1) { 13713 trigger = triggers[i]; 13714 _supportsPointer || _addListener(trigger, "mousedown", onPress); 13715 13716 _addListener(trigger, "touchstart", onPress); 13717 13718 _addListener(trigger, "click", onClick, true); 13719 13720 gsap.set(trigger, setVars); 13721 13722 if (trigger.getBBox && trigger.ownerSVGElement) { 13723 gsap.set(trigger.ownerSVGElement, { 13724 touchAction: allowX === allowY ? "none" : vars.allowNativeTouchScrolling || vars.allowEventDefault ? "manipulation" : allowX ? "pan-y" : "pan-x" 13725 }); 13726 } 13727 13728 vars.allowContextMenu || _addListener(trigger, "contextmenu", onContextMenu); 13729 } 13730 13731 _setSelectable(triggers, false); 13732 } 13733 13734 _addScrollListener(target, updateScroll); 13735 13736 enabled = true; 13737 13738 if (InertiaPlugin && type !== "soft") { 13739 InertiaPlugin.track(scrollProxy || target, xyMode ? "x,y" : rotationMode ? "rotation" : "top,left"); 13740 } 13741 13742 target._gsDragID = id = "d" + _lookupCount++; 13743 _lookup[id] = self; 13744 13745 if (scrollProxy) { 13746 scrollProxy.enable(); 13747 scrollProxy.element._gsDragID = id; 13748 } 13749 13750 (vars.bounds || rotationMode) && recordStartPositions(); 13751 vars.bounds && self.applyBounds(); 13752 return self; 13753 }; 13754 13755 _this2.disable = function (type) { 13756 var dragging = self.isDragging, 13757 i = triggers.length, 13758 trigger; 13759 13760 while (--i > -1) { 13761 _setStyle(triggers[i], "cursor", null); 13762 } 13763 13764 if (type !== "soft") { 13765 _setTouchActionForAllDescendants(triggers, null); 13766 13767 i = triggers.length; 13768 13769 while (--i > -1) { 13770 trigger = triggers[i]; 13771 13772 _setStyle(trigger, "touchCallout", null); 13773 13774 _removeListener(trigger, "mousedown", onPress); 13775 13776 _removeListener(trigger, "touchstart", onPress); 13777 13778 _removeListener(trigger, "click", onClick); 13779 13780 _removeListener(trigger, "contextmenu", onContextMenu); 13781 } 13782 13783 _setSelectable(triggers, true); 13784 13785 if (touchEventTarget) { 13786 _removeListener(touchEventTarget, "touchcancel", onRelease); 13787 13788 _removeListener(touchEventTarget, "touchend", onRelease); 13789 13790 _removeListener(touchEventTarget, "touchmove", onMove); 13791 } 13792 13793 _removeListener(ownerDoc, "mouseup", onRelease); 13794 13795 _removeListener(ownerDoc, "mousemove", onMove); 13796 } 13797 13798 _removeScrollListener(target, updateScroll); 13799 13800 enabled = false; 13801 InertiaPlugin && type !== "soft" && InertiaPlugin.untrack(scrollProxy || target, xyMode ? "x,y" : rotationMode ? "rotation" : "top,left"); 13802 scrollProxy && scrollProxy.disable(); 13803 13804 _removeFromRenderQueue(render); 13805 13806 self.isDragging = self.isPressed = isClicking = false; 13807 dragging && _dispatchEvent(self, "dragend", "onDragEnd"); 13808 return self; 13809 }; 13810 13811 _this2.enabled = function (value, type) { 13812 return arguments.length ? value ? self.enable(type) : self.disable(type) : enabled; 13813 }; 13814 13815 _this2.kill = function () { 13816 self.isThrowing = false; 13817 self.tween && self.tween.kill(); 13818 self.disable(); 13819 gsap.set(triggers, { 13820 clearProps: "userSelect" 13821 }); 13822 delete _lookup[target._gsDragID]; 13823 return self; 13824 }; 13825 13826 if (~type.indexOf("scroll")) { 13827 scrollProxy = _this2.scrollProxy = new ScrollProxy(target, _extend({ 13828 onKill: function onKill() { 13829 self.isPressed && onRelease(null); 13830 } 13831 }, vars)); 13832 target.style.overflowY = allowY && !_isTouchDevice ? "auto" : "hidden"; 13833 target.style.overflowX = allowX && !_isTouchDevice ? "auto" : "hidden"; 13834 target = scrollProxy.content; 13835 } 13836 13837 if (rotationMode) { 13838 killProps.rotation = 1; 13839 } else { 13840 if (allowX) { 13841 killProps[xProp] = 1; 13842 } 13843 13844 if (allowY) { 13845 killProps[yProp] = 1; 13846 } 13847 } 13848 13849 gsCache.force3D = "force3D" in vars ? vars.force3D : true; 13850 13851 _this2.enable(); 13852 13853 return _this2; 13854 } 13855 13856 Draggable.register = function register(core) { 13857 gsap = core; 13858 13859 _initCore(); 13860 }; 13861 13862 Draggable.create = function create(targets, vars) { 13863 _coreInitted || _initCore(true); 13864 return _toArray(targets).map(function (target) { 13865 return new Draggable(target, vars); 13866 }); 13867 }; 13868 13869 Draggable.get = function get(target) { 13870 return _lookup[(_toArray(target)[0] || {})._gsDragID]; 13871 }; 13872 13873 Draggable.timeSinceDrag = function timeSinceDrag() { 13874 return (_getTime() - _lastDragTime) / 1000; 13875 }; 13876 13877 Draggable.hitTest = function hitTest(obj1, obj2, threshold) { 13878 if (obj1 === obj2) { 13879 return false; 13880 } 13881 13882 var r1 = _parseRect(obj1), 13883 r2 = _parseRect(obj2), 13884 top = r1.top, 13885 left = r1.left, 13886 right = r1.right, 13887 bottom = r1.bottom, 13888 width = r1.width, 13889 height = r1.height, 13890 isOutside = r2.left > right || r2.right < left || r2.top > bottom || r2.bottom < top, 13891 overlap, 13892 area, 13893 isRatio; 13894 13895 if (isOutside || !threshold) { 13896 return !isOutside; 13897 } 13898 13899 isRatio = (threshold + "").indexOf("%") !== -1; 13900 threshold = parseFloat(threshold) || 0; 13901 overlap = { 13902 left: Math.max(left, r2.left), 13903 top: Math.max(top, r2.top) 13904 }; 13905 overlap.width = Math.min(right, r2.right) - overlap.left; 13906 overlap.height = Math.min(bottom, r2.bottom) - overlap.top; 13907 13908 if (overlap.width < 0 || overlap.height < 0) { 13909 return false;
vendor: 5,025 bytes, lines 13910-13956
13910 } 13911 13912 if (isRatio) { 13913 threshold *= 0.01; 13914 area = overlap.width * overlap.height; 13915 return area >= width * height * threshold || area >= r2.width * r2.height * threshold; 13916 } 13917 13918 return overlap.width > threshold && overlap.height > threshold; 13919 }; 13920 13921 return Draggable; 13922 }(EventDispatcher); 13923 13924 _setDefaults(Draggable.prototype, { 13925 pointerX: 0, 13926 pointerY: 0, 13927 startX: 0, 13928 startY: 0, 13929 deltaX: 0, 13930 deltaY: 0, 13931 isDragging: false, 13932 isPressed: false 13933 }); 13934 13935 Draggable.zIndex = 1000; 13936 Draggable.version = "3.7.0"; 13937 _getGSAP() && gsap.registerPlugin(Draggable); 13938 13939 exports.Draggable = Draggable; 13940 exports.default = Draggable; 13941 13942 if (typeof(window) === 'undefined' || window !== exports) {Object.defineProperty(exports, '__esModule', { value: true });} else {delete window.default;} 13943 13944}))); 13945 13946/*SIGUIENTE LIBRERIA*/ 13947/*! 13948 * Draggable 3.7.0 13949 * https://greensock.com 13950 * 13951 * @license Copyright 2021, GreenSock. All rights reserved. 13952 * Subject to the terms at https://greensock.com/standard-license or for Club GreenSock members, the agreement issued with that membership. 13953 * @author: Jack Doyle, [email protected] 13954 */ 13955 13956!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e=e||self).window=e.window||{})}(this,function(e){"use strict";function v(e,t){if(e.parentNode&&(h||M(e))){var n=k(e),o=n?n.getAttribute("xmlns")||"http://www.w3.org/2000/svg":"http://www.w3.org/1999/xhtml",r=n?t?"rect":"g":"div",i=2!==t?0:100,a=3===t?100:0,l="position:absolute;display:block;pointer-events:none;margin:0;padding:0;",s=h.createElementNS?h.createElementNS(o.replace(/^https/,"http"),r):h.createElement(r);return t&&(n?(g=g||v(e),s.setAttribute("width",.01),s.setAttribute("height",.01),s.setAttribute("transform","translate("+i+","+a+")"),g.appendChild(s)):(f||((f=v(e)).style.cssText=l),s.style.cssText=l+"width:0.1px;height:0.1px;top:"+a+"px;left:"+i+"px",f.appendChild(s))),s}throw"Need document and parent."}function y(e,t,n,o,r,i,a){return e.a=t,e.b=n,e.c=o,e.d=r,e.e=i,e.f=a,e}var h,u,r,i,f,g,x,m,t,w="transform",b=w+"Origin",M=function _setDoc(e){var t=e.ownerDocument||e;!(w in e.style)&&"msTransform"in e.style&&(b=(w="msTransform")+"Origin");for(;t.parentNode&&(t=t.parentNode););if(u=window,x=new fe,t){r=(h=t).documentElement,i=t.body;var n=t.createElement("div"),o=t.createElement("div");i.appendChild(n),n.appendChild(o),n.style.position="static",n.style[w]="translate3d(0,0,1px)",m=o.offsetParent!==n,i.removeChild(n)}return t},D=function _forceNonZeroScale(e){for(var t,n;e&&e!==i;)(n=e._gsap)&&n.uncache&&n.get(e,"x"),n&&!n.scaleX&&!n.scaleY&&n.renderTransform&&(n.scaleX=n.scaleY=1e-4,n.renderTransform(1,n),t?t.push(n):t=[n]),e=e.parentNode;return t},E=[],S=[],L=function _getDocScrollTop(){return u.pageYOffset||h.scrollTop||r.scrollTop||i.scrollTop||0},C=function _getDocScrollLeft(){return u.pageXOffset||h.scrollLeft||r.scrollLeft||i.scrollLeft||0},k=function _svgOwner(e){return e.ownerSVGElement||("svg"===(e.tagName+"").toLowerCase()?e:null)},N=function _isFixed(e){return"fixed"===u.getComputedStyle(e).position||((e=e.parentNode)&&1===e.nodeType?_isFixed(e):void 0)},P=function _placeSiblings(e,t){var n,o,r,i,a,l,s=k(e),c=e===s,d=s?E:S,p=e.parentNode;if(e===u)return e;if(d.length||d.push(v(e,1),v(e,2),v(e,3)),n=s?g:f,s)r=c?{x:0,y:0}:e.getBBox(),a=(o=e.transform?e.transform.baseVal:{}).numberOfItems?(i=(o=1<o.numberOfItems?function _consolidate(e){for(var t=new fe,n=0;n<e.numberOfItems;n++)t.multiply(e.getItem(n).matrix);return t}(o):o.getItem(0).matrix).a*r.x+o.c*r.y,o.b*r.x+o.d*r.y):(o=x,i=r.x,r.y),t&&"g"===e.tagName.toLowerCase()&&(i=a=0),(c?s:p).appendChild(n),n.setAttribute("transform","matrix("+o.a+","+o.b+","+o.c+","+o.d+","+(o.e+i)+","+(o.f+a)+")");else{if(i=a=0,m)for(o=e.offsetParent,r=e;(r=r&&r.parentNode)&&r!==o&&r.parentNode;)4<(u.getComputedStyle(r)[w]+"").length&&(i=r.offsetLeft,a=r.offsetTop,r=0);if("absolute"!==(l=u.getComputedStyle(e)).position)for(o=e.offsetParent;p&&p!==o;)i+=p.scrollLeft||0,a+=p.scrollTop||0,p=p.parentNode;(r=n.style).top=e.offsetTop-a+"px",r.left=e.offsetLeft-i+"px",r[w]=l[w],r[b]=l[b],r.position="fixed"===l.position?"fixed":"absolute",e.parentNode.appendChild(n)}return n},fe=((t=Matrix2D.prototype).inverse=function inverse(){var e=this.a,t=this.b,n=this.c,o=this.d,r=this.e,i=this.f,a=e*o-t*n||1e-10;return y(this,o/a,-t/a,-n/a,e/a,(n*i-o*r)/a,-(e*i-t*r)/a)},t.multiply=function multiply(e){var t=this.a,n=this.b,o=this.c,r=this.d,i=this.e,a=this.f,l=e.a,s=e.c,c=e.b,d=e.d,p=e.e,u=e.f;return y(this,l*t+c*o,l*n+c*r,s*t+d*o,s*n+d*r,i+p*t+u*o,a+p*n+u*r)},t.clone=function clone(){return new Matrix2D(this.a,this.b,this.c,this.d,this.e,this.f)},t.equals=function equals(e){var t=this.a,n=this.b,o=this.c,r=this.d,i=this.e,a=this.f;return t===e.a&&n===e.b&&o===e.c&&r===e.d&&i===e.e&&a===e.f},t.apply=function apply(e,t){void 0===t&&(t={});var n=e.x,o=e.y,r=this.a,i=this.b,a=this.c,l=this.d,s=this.e,c=this.f;
vendor: 27,026 bytes, line 13956
13956return t.x=n*r+o*a+s||0,t.y=n*i+o*l+c||0,t},Matrix2D);function Matrix2D(e,t,n,o,r,i){void 0===e&&(e=1),void 0===t&&(t=0),void 0===n&&(n=0),void 0===o&&(o=1),void 0===r&&(r=0),void 0===i&&(i=0),y(this,e,t,n,o,r,i)}function getGlobalMatrix(e,t,n,o){if(!e||!e.parentNode||(h||M(e)).documentElement===e)return new fe;var r=D(e),i=k(e)?E:S,a=P(e,n),l=i[0].getBoundingClientRect(),s=i[1].getBoundingClientRect(),c=i[2].getBoundingClientRect(),d=a.parentNode,p=!o&&N(e),u=new fe((s.left-l.left)/100,(s.top-l.top)/100,(c.left-l.left)/100,(c.top-l.top)/100,l.left+(p?0:C()),l.top+(p?0:L()));if(d.removeChild(a),r)for(l=r.length;l--;)(s=r[l]).scaleX=s.scaleY=0,s.renderTransform(1,s);return t?u.inverse():u}function T(){return"undefined"!=typeof window}function U(){return ge||T()&&(ge=window.gsap)&&ge.registerPlugin&&ge}function V(e){return"function"==typeof e}function W(e){return"object"==typeof e}function X(e){return void 0===e}function Y(){return!1}function _(e){return Math.round(1e4*e)/1e4}function ba(e,t){var n=ve.createElementNS?ve.createElementNS((t||"http://www.w3.org/1999/xhtml").replace(/^https/,"http"),e):ve.createElement(e);return n.style?n:ve.createElement(e)}function na(e,t){var n,o={};for(n in e)o[n]=t?e[n]*t:e[n];return o}function pa(e,t){for(var n,o=e.length;o--;)t?e[o].style.touchAction=t:e[o].style.removeProperty("touch-action"),(n=e[o].children)&&n.length&&pa(n,t)}function qa(){return Re.forEach(function(e){return e()})}function sa(){return!Re.length&&ge.ticker.remove(qa)}function ta(e){for(var t=Re.length;t--;)Re[t]===e&&Re.splice(t,1);ge.to(sa,{overwrite:!0,delay:15,duration:0,onComplete:sa,data:"_draggable"})}function va(e,t,n,o){if(e.addEventListener){var r=Te[t];o=o||(d?{passive:!1}:null),e.addEventListener(r||t,n,o),r&&t!==r&&e.addEventListener(t,n,o)}}function wa(e,t,n){if(e.removeEventListener){var o=Te[t];e.removeEventListener(o||t,n),o&&t!==o&&e.removeEventListener(t,n)}}function xa(e){e.preventDefault&&e.preventDefault(),e.preventManipulation&&e.preventManipulation()}function za(e){Ee=e.touches&&De<e.touches.length,wa(e.target,"touchend",za)}function Aa(e){Ee=e.touches&&De<e.touches.length,va(e.target,"touchend",za)}function Ba(e){return xe.pageYOffset||e.scrollTop||e.documentElement.scrollTop||e.body.scrollTop||0}function Ca(e){return xe.pageXOffset||e.scrollLeft||e.documentElement.scrollLeft||e.body.scrollLeft||0}function Da(e,t){va(e,"scroll",t),Fe(e.parentNode)||Da(e.parentNode,t)}function Ea(e,t){wa(e,"scroll",t),Fe(e.parentNode)||Ea(e.parentNode,t)}function Ga(e,t){var n="x"===t?"Width":"Height",o="scroll"+n,r="client"+n;return Math.max(0,Fe(e)?Math.max(me[o],l[o])-(xe["inner"+n]||me[r]||l[r]):e[o]-e[r])}function Ha(e,t){var n=Ga(e,"x"),o=Ga(e,"y");Fe(e)?e=Ie:Ha(e.parentNode,t),e._gsMaxScrollX=n,e._gsMaxScrollY=o,t||(e._gsScrollX=e.scrollLeft||0,e._gsScrollY=e.scrollTop||0)}function Ia(e,t,n){var o=e.style;o&&(X(o[t])&&(t=c(t,e)||t),null==n?o.removeProperty&&o.removeProperty(t.replace(/([A-Z])/g,"-$1").toLowerCase()):o[t]=n)}function Ja(e){return xe.getComputedStyle(e instanceof Element?e:e.host||(e.parentNode||{}).host||e)}function La(e){if(e===xe)return p.left=p.top=0,p.width=p.right=me.clientWidth||e.innerWidth||l.clientWidth||0,p.height=p.bottom=(e.innerHeight||0)-20<me.clientHeight?me.clientHeight:e.innerHeight||l.clientHeight||0,p;var t=e.ownerDocument||ve,n=X(e.pageX)?e.nodeType||X(e.left)||X(e.top)?be(e)[0].getBoundingClientRect():e:{left:e.pageX-Ca(t),top:e.pageY-Ba(t),right:e.pageX-Ca(t)+1,bottom:e.pageY-Ba(t)+1};return X(n.right)&&!X(n.width)?(n.right=n.left+n.width,n.bottom=n.top+n.height):X(n.width)&&(n={width:n.right-n.left,height:n.bottom-n.top,right:n.right,left:n.left,bottom:n.bottom,top:n.top}),n}function Ma(e,t,n){var o,r=e.vars,i=r[n],a=e._listeners[t];return V(i)&&(o=i.apply(r.callbackScope||e,r[n+"Params"]||[e.pointerEvent])),a&&!1===e.dispatchEvent(t)&&(o=!1),o}function Na(e,t){var n,o,r,i=be(e)[0];return i.nodeType||i===xe?A(i,t):X(e.left)?{left:o=e.min||e.minX||e.minRotation||0,top:n=e.min||e.minY||0,width:(e.max||e.maxX||e.maxRotation||0)-o,height:(e.max||e.maxY||0)-n}:(r={x:0,y:0},{left:e.left-r.x,top:e.top-r.y,width:e.width,height:e.height})}function Qa(r,i,e,t,a,n){var o,l,s,c={};if(i)if(1!==a&&i instanceof Array){if(c.end=o=[],s=i.length,W(i[0]))for(l=0;l<s;l++)o[l]=na(i[l],a);else for(l=0;l<s;l++)o[l]=i[l]*a;e+=1.1,t-=1.1}else V(i)?c.end=function(e){var t,n,o=i.call(r,e);if(1!==a)if(W(o)){for(n in t={},o)t[n]=o[n]*a;o=t}else o*=a;return o}:c.end=i;return!e&&0!==e||(c.max=e),!t&&0!==t||(c.min=t),n&&(c.velocity=0),c}function Ra(e){var t;return!(!e||!e.getAttribute||e===l)&&(!("true"!==(t=e.getAttribute("data-clickable"))&&("false"===t||!e.onclick&&!o.test(e.nodeName+"")&&"true"!==e.getAttribute("contentEditable")))||Ra(e.parentNode))}function Sa(e,t){for(var n,o=e.length;o--;)(n=e[o]).ondragstart=n.onselectstart=t?null:Y,ge.set(n,{lazy:!0,userSelect:t?"text":"none"})}function Wa(i,r){i=ge.utils.toArray(i)[0],r=r||{};var a,l,s,e,c,d,p=document.createElement("div"),u=p.style,t=i.firstChild,h=0,f=0,g=i.scrollTop,x=i.scrollLeft,v=i.scrollWidth,m=i.scrollHeight,y=0,w=0,b=0;R&&!1!==r.force3D?(c="translate3d(",d="px,0px)"):O&&(c="translate(",d="px)"),this.scrollTop=function(e,t){if(!arguments.length)return-this.top();this.top(-e,t)},this.scrollLeft=function(e,t){if(!arguments.length)return-this.left();this.left(-e,t)},this.left=function(e,t){if(!arguments.length)return-(i.scrollLeft+f);var n=i.scrollLeft-x,o=f;if((2<n||n<-2)&&!t)return x=i.scrollLeft,ge.killTweensOf(this,{left:1,scrollLeft:1}),this.left(-x),void(r.onKill&&r.onKill());(e=-e)<0?(f=e-.5|0,e=0):w<e?(f=e-w|0,e=w):f=0,(f||o)&&(this._skip||(u[O]=c+-f+"px,"+-h+d),0<=f+y&&(u.paddingRight=f+y+"px")),i.scrollLeft=0|e,x=i.scrollLeft},this.top=function(e,t){if(!arguments.length)return-(i.scrollTop+h);var n=i.scrollTop-g,o=h;if((2<n||n<-2)&&!t)return g=i.scrollTop,ge.killTweensOf(this,{top:1,scrollTop:1}),this.top(-g),void(r.onKill&&r.onKill());(e=-e)<0?(h=e-.5|0,e=0):b<e?(h=e-b|0,e=b):h=0,(h||o)&&(this._skip||(u[O]=c+-f+"px,"+-h+d)),i.scrollTop=0|e,g=i.scrollTop},this.maxScrollTop=function(){return b},this.maxScrollLeft=function(){return w},this.disable=function(){for(t=p.firstChild;t;)e=t.nextSibling,i.appendChild(t),t=e;i===p.parentNode&&i.removeChild(p)},this.enable=function(){if((t=i.firstChild)!==p){for(;t;)e=t.nextSibling,p.appendChild(t),t=e;i.appendChild(p),this.calibrate()}},this.calibrate=function(e){var t,n,o,r=i.clientWidth===a;g=i.scrollTop,x=i.scrollLeft,r&&i.clientHeight===l&&p.offsetHeight===s&&v===i.scrollWidth&&m===i.scrollHeight&&!e||((h||f)&&(n=this.left(),o=this.top(),this.left(-i.scrollLeft),this.top(-i.scrollTop)),t=Ja(i),r&&!e||(u.display="block",u.width="auto",u.paddingRight="0px",(y=Math.max(0,i.scrollWidth-i.clientWidth))&&(y+=parseFloat(t.paddingLeft)+(B?parseFloat(t.paddingRight):0))),u.display="inline-block",u.position="relative",u.overflow="visible",u.verticalAlign="top",u.boxSizing="content-box",u.width="100%",u.paddingRight=y+"px",B&&(u.paddingBottom=t.paddingBottom),a=i.clientWidth,l=i.clientHeight,v=i.scrollWidth,m=i.scrollHeight,w=i.scrollWidth-a,b=i.scrollHeight-l,s=p.offsetHeight,u.display="block",(n||o)&&(this.left(n),this.top(o)))},this.content=p,this.element=i,this._skip=!1,this.enable()}function Xa(e){if(T()&&document.body){var t=window&&window.navigator;xe=window,ve=document,me=ve.documentElement,l=ve.body,s=ba("div"),Ye=!!window.PointerEvent,(ye=ba("div")).style.cssText="visibility:hidden;height:1px;top:-1px;pointer-events:none;position:relative;clear:both;cursor:grab",Le="grab"===ye.style.cursor?"grab":"move",Xe=t&&-1!==t.userAgent.toLowerCase().indexOf("android"),Me="ontouchstart"in me&&"orientation"in xe||t&&(0<t.MaxTouchPoints||0<t.msMaxTouchPoints),o=ba("div"),r=ba("div"),i=r.style,a=l,i.display="inline-block",i.position="relative",o.style.cssText=r.innerHTML="width:90px;height:40px;padding:10px;overflow:auto;visibility:hidden",o.appendChild(r),a.appendChild(o),n=r.offsetHeight+18>o.scrollHeight,a.removeChild(o),B=n,Te=function(e){for(var t=e.split(","),n=(("onpointerdown"in s?"pointerdown,pointermove,pointerup,pointercancel":"onmspointerdown"in s?"MSPointerDown,MSPointerMove,MSPointerUp,MSPointerCancel":e).split(",")),o={},r=4;-1<--r;)o[t[r]]=n[r],o[n[r]]=t[r];try{me.addEventListener("test",null,Object.defineProperty({},"passive",{get:function get(){d=1}}))}catch(e){}return o}("touchstart,touchmove,touchend,touchcancel"),va(ve,"touchcancel",Y),va(xe,"touchmove",Y),l&&l.addEventListener("touchstart",Y),va(ve,"contextmenu",function(){for(var e in Be)Be[e].isPressed&&Be[e].endDrag()}),ge=we=U()}var n,o,r,i,a;ge?(Se=ge.plugins.inertia,c=ge.utils.checkPrefix,O=c(O),_e=c(_e),be=ge.utils.toArray,R=!!c("perspective")):e&&console.warn("Please gsap.registerPlugin(Draggable)")}var ge,xe,ve,me,l,s,ye,we,c,be,d,Me,Te,De,Ee,Xe,Se,Le,Ye,R,B,n,O="transform",_e="transformOrigin",Ce=Array.isArray,ke=180/Math.PI,Ne=1e20,a=new fe,Pe=Date.now||function(){return(new Date).getTime()},Re=[],Be={},Oe=0,o=/^(?:a|input|textarea|button|select)$/i,Ae=0,He={},Ie={},Fe=function _isRoot(e){return!(e&&e!==me&&9!==e.nodeType&&e!==ve.body&&e!==xe&&e.nodeType&&e.parentNode)},p={},We={},A=function _getElementBounds(e,t){t=be(t)[0];var n,o,r,i,a,l,s,c,d,p,u,h,f,g,x=e.getBBox&&e.ownerSVGElement,v=e.ownerDocument||ve;if(e===xe)r=Ba(v),o=(n=Ca(v))+(v.documentElement.clientWidth||e.innerWidth||v.body.clientWidth||0),i=r+((e.innerHeight||0)-20<v.documentElement.clientHeight?v.documentElement.clientHeight:e.innerHeight||v.body.clientHeight||0);else{if(t===xe||X(t))return e.getBoundingClientRect();n=r=0,x?(u=(p=e.getBBox()).width,h=p.height):(e.viewBox&&(p=e.viewBox.baseVal)&&(n=p.x||0,r=p.y||0,u=p.width,h=p.height),u||(p="border-box"===(f=Ja(e)).boxSizing,u=(parseFloat(f.width)||e.clientWidth||0)+(p?0:parseFloat(f.borderLeftWidth)+parseFloat(f.borderRightWidth)),h=(parseFloat(f.height)||e.clientHeight||0)+(p?0:parseFloat(f.borderTopWidth)+parseFloat(f.borderBottomWidth)))),o=u,i=h}return e===t?{left:n,top:r,width:o-n,height:i-r}:(l=(a=getGlobalMatrix(t,!0).multiply(getGlobalMatrix(e))).apply({x:n,y:r}),s=a.apply({x:o,y:r}),c=a.apply({x:o,y:i}),d=a.apply({x:n,y:i}),n=Math.min(l.x,s.x,c.x,d.x),r=Math.min(l.y,s.y,c.y,d.y),{left:n+((g=t.parentNode||{}).scrollLeft||0),top:r+(g.scrollTop||0),width:Math.max(l.x,s.x,c.x,d.x)-n,height:Math.max(l.y,s.y,c.y,d.y)-r})},H=((n=EventDispatcher.prototype).addEventListener=function addEventListener(e,t){var n=this._listeners[e]||(this._listeners[e]=[]);~n.indexOf(t)||n.push(t)},n.removeEventListener=function removeEventListener(e,t){var n=this._listeners[e],o=n&&n.indexOf(t)||-1;-1<o&&n.splice(o,1)},n.dispatchEvent=function dispatchEvent(t){var n,o=this;return(this._listeners[t]||[]).forEach(function(e){return!1===e.call(o,{type:t,target:o.target})&&(n=!1)}),n},EventDispatcher);function EventDispatcher(e){this._listeners={},this.target=e||this}var Ve,I=(function _inheritsLoose(e,t){e.prototype=Object.create(t.prototype),(e.prototype.constructor=e).__proto__=t}(Draggable,Ve=H),Draggable.register=function register(e){ge=e,Xa()},Draggable.create=function create(e,t){return we||Xa(!0),be(e).map(function(e){return new Draggable(e,t)})},Draggable.get=function get(e){return Be[(be(e)[0]||{})._gsDragID]},Draggable.timeSinceDrag=function timeSinceDrag(){return(Pe()-Ae)/1e3},Draggable.hitTest=function hitTest(e,t,n){if(e===t)return!1;var o,r,i,a=La(e),l=La(t),s=a.top,c=a.left,d=a.right,p=a.bottom,u=a.width,h=a.height,f=l.left>d||l.right<c||l.top>p||l.bottom<s;return f||!n?!f:(i=-1!==(n+"").indexOf("%"),n=parseFloat(n)||0,(o={left:Math.max(c,l.left),top:Math.max(s,l.top)}).width=Math.min(d,l.right)-o.left,o.height=Math.min(p,l.bottom)-o.top,!(o.width<0||o.height<0)&&(i?u*h*(n*=.01)<=(r=o.width*o.height)||r>=l.width*l.height*n:o.width>n&&o.height>n))},Draggable);function Draggable(h,p){var e;e=Ve.call(this)||this,we||Xa(1),h=be(h)[0],Se=Se||ge.plugins.inertia,e.vars=p=na(p||{}),e.target=h,e.x=e.y=e.rotation=0,e.dragResistance=parseFloat(p.dragResistance)||0,e.edgeResistance=isNaN(p.edgeResistance)?1:parseFloat(p.edgeResistance)||0,e.lockAxis=p.lockAxis,e.autoScroll=p.autoScroll||0,e.lockedAxis=null,e.allowEventDefault=!!p.allowEventDefault,ge.getProperty(h,"x");function Jg(e,t){return parseFloat(le.get(h,e,t))}function oh(e){return xa(e),e.stopImmediatePropagation&&e.stopImmediatePropagation(),!1}function ph(e){if(Q.autoScroll&&Q.isDragging&&(ee||k)){var t,n,o,r,i,a,l,s,c=h,d=15*Q.autoScroll;for(ee=!1,Ie.scrollTop=null!=xe.pageYOffset?xe.pageYOffset:null!=ce.documentElement.scrollTop?ce.documentElement.scrollTop:ce.body.scrollTop,Ie.scrollLeft=null!=xe.pageXOffset?xe.pageXOffset:null!=ce.documentElement.scrollLeft?ce.documentElement.scrollLeft:ce.body.scrollLeft,r=Q.pointerX-Ie.scrollLeft,i=Q.pointerY-Ie.scrollTop;c&&!n;)t=(n=Fe(c.parentNode))?Ie:c.parentNode,o=n?{bottom:Math.max(me.clientHeight,xe.innerHeight||0),right:Math.max(me.clientWidth,xe.innerWidth||0),left:0,top:0}:t.getBoundingClientRect(),a=l=0,U&&((s=t._gsMaxScrollY-t.scrollTop)<0?l=s:i>o.bottom-oe&&s?(ee=!0,l=Math.min(s,d*(1-Math.max(0,o.bottom-i)/oe)|0)):i<o.top+te&&t.scrollTop&&(ee=!0,l=-Math.min(t.scrollTop,d*(1-Math.max(0,i-o.top)/te)|0)),l&&(t.scrollTop+=l)),K&&((s=t._gsMaxScrollX-t.scrollLeft)<0?a=s:r>o.right-ne&&s?(ee=!0,a=Math.min(s,d*(1-Math.max(0,o.right-r)/ne)|0)):r<o.left+re&&t.scrollLeft&&(ee=!0,a=-Math.min(t.scrollLeft,d*(1-Math.max(0,r-o.left)/re)|0)),a&&(t.scrollLeft+=a)),n&&(a||l)&&(xe.scrollTo(t.scrollLeft,t.scrollTop),ue(Q.pointerX+a,Q.pointerY+l)),c=t}if(k){var p=Q.x,u=Q.y;z?(Q.deltaX=p-parseFloat(le.rotation),Q.rotation=p,le.rotation=p+"deg",le.renderTransform(1,le)):f?(U&&(Q.deltaY=u-f.top(),f.top(u)),K&&(Q.deltaX=p-f.left(),f.left(p))):q?(U&&(Q.deltaY=u-parseFloat(le.y),le.y=u+"px"),K&&(Q.deltaX=p-parseFloat(le.x),le.x=p+"px"),le.renderTransform(1,le)):(U&&(Q.deltaY=u-parseFloat(h.style.top||0),h.style.top=u+"px"),K&&(Q.deltaX=p-parseFloat(h.style.left||0),h.style.left=p+"px")),!g||e||I||(!(I=!0)===Ma(Q,"drag","onDrag")&&(K&&(Q.x-=Q.deltaX),U&&(Q.y-=Q.deltaY),ph(!0)),I=!1)}k=!1}function qh(e,t){var n,o,r=Q.x,i=Q.y;h._gsap||(le=ge.core.getCache(h)),le.uncache&&ge.getProperty(h,"x"),q?(Q.x=parseFloat(le.x),Q.y=parseFloat(le.y)):z?Q.x=Q.rotation=parseFloat(le.rotation):f?(Q.y=f.top(),Q.x=f.left()):(Q.y=parseFloat(h.style.top||(o=Ja(h))&&o.top)||0,Q.x=parseFloat(h.style.left||(o||{}).left)||0),(N||P||R)&&!t&&(Q.isDragging||Q.isThrowing)&&(R&&(He.x=Q.x,He.y=Q.y,(n=R(He)).x!==Q.x&&(Q.x=n.x,k=!0),n.y!==Q.y&&(Q.y=n.y,k=!0)),N&&(n=N(Q.x))!==Q.x&&(Q.x=n,z&&(Q.rotation=n),k=!0),P&&((n=P(Q.y))!==Q.y&&(Q.y=n),k=!0)),k&&ph(!0),e||(Q.deltaX=Q.x-r,Q.deltaY=Q.y-i,Ma(Q,"throwupdate","onThrowUpdate"))}function rh(a,l,s,n){return null==l&&(l=-Ne),null==s&&(s=Ne),V(a)?function(e){var t=Q.isPressed?1-Q.edgeResistance:1;return a.call(Q,s<e?s+(e-s)*t:e<l?l+(e-l)*t:e)*n}:Ce(a)?function(e){for(var t,n,o=a.length,r=0,i=Ne;-1<--o;)(n=(t=a[o])-e)<0&&(n=-n),n<i&&l<=t&&t<=s&&(r=o,i=n);return a[r]}:isNaN(a)?function(e){return e}:function(){return a*n}}function th(){var e,t,n,o;D=!1,f?(f.calibrate(),Q.minX=S=-f.maxScrollLeft(),Q.minY=Y=-f.maxScrollTop(),Q.maxX=E=Q.maxY=L=0,D=!0):p.bounds&&(e=Na(p.bounds,h.parentNode),z?(Q.minX=S=e.left,Q.maxX=E=e.left+e.width,Q.minY=Y=Q.maxY=L=0):X(p.bounds.maxX)&&X(p.bounds.maxY)?(t=Na(h,h.parentNode),Q.minX=S=Math.round(Jg(d,"px")+e.left-t.left-.5),Q.minY=Y=Math.round(Jg(J,"px")+e.top-t.top-.5),Q.maxX=E=Math.round(S+(e.width-t.width)),Q.maxY=L=Math.round(Y+(e.height-t.height))):(e=p.bounds,Q.minX=S=e.minX,Q.minY=Y=e.minY,Q.maxX=E=e.maxX,Q.maxY=L=e.maxY),E<S&&(Q.minX=E,Q.maxX=E=S,S=Q.minX),L<Y&&(Q.minY=L,Q.maxY=L=Y,Y=Q.minY),z&&(Q.minRotation=S,Q.maxRotation=E),D=!0),p.liveSnap&&(n=!0===p.liveSnap?p.snap||{}:p.liveSnap,o=Ce(n)||V(n),z?(N=rh(o?n:n.rotation,S,E,1),P=null):n.points?R=function buildPointSnapFunc(s,l,c,d,p,u,h){return u=u&&u<Ne?u*u:Ne,V(s)?function(e){var t,n,o,r=Q.isPressed?1-Q.edgeResistance:1,i=e.x,a=e.y;return e.x=i=c<i?c+(i-c)*r:i<l?l+(i-l)*r:i,e.y=a=p<a?p+(a-p)*r:a<d?d+(a-d)*r:a,(t=s.call(Q,e))!==e&&(e.x=t.x,e.y=t.y),1!==h&&(e.x*=h,e.y*=h),u<Ne&&(n=e.x-i,o=e.y-a,u<n*n+o*o&&(e.x=i,e.y=a)),e}:Ce(s)?function(e){for(var t,n,o,r,i=s.length,a=0,l=Ne;-1<--i;)(r=(t=(o=s[i]).x-e.x)*t+(n=o.y-e.y)*n)<l&&(a=i,l=r);return l<=u?s[a]:e}:function(e){return e}}(o?n:n.points,S,E,Y,L,n.radius,f?-1:1):(K&&(N=rh(o?n:n.x||n.left||n.scrollLeft,S,E,f?-1:1)),U&&(P=rh(o?n:n.y||n.top||n.scrollTop,Y,L,f?-1:1))))}function uh(){Q.isThrowing=!1,Ma(Q,"throwcomplete","onThrowComplete")}function vh(){Q.isThrowing=!1}function wh(e,t){var n,o,r,i;e&&Se?(!0===e&&(n=p.snap||p.liveSnap||{},o=Ce(n)||V(n),e={resistance:(p.throwResistance||p.resistance||1e3)/(z?10:1)},z?e.rotation=Qa(Q,o?n:n.rotation,E,S,1,t):(K&&(e[d]=Qa(Q,o?n:n.points||n.x||n.left,E,S,f?-1:1,t||"x"===Q.lockedAxis)),U&&(e[J]=Qa(Q,o?n:n.points||n.y||n.top,L,Y,f?-1:1,t||"y"===Q.lockedAxis)),(n.points||Ce(n)&&W(n[0]))&&(e.linkedProps=d+","+J,e.radius=n.radius))),Q.isThrowing=!0,i=isNaN(p.overshootTolerance)?1===p.edgeResistance?0:1-Q.edgeResistance+.2:p.overshootTolerance,e.duration||(e.duration={max:Math.max(p.minDuration||0,"maxDuration"in p?p.maxDuration:2),min:isNaN(p.minDuration)?0===i||W(e)&&1e3<e.resistance?0:.5:p.minDuration,overshoot:i}),Q.tween=r=ge.to(f||h,{inertia:e,data:"_draggable",onComplete:uh,onInterrupt:vh,onUpdate:p.fastMode?Ma:qh,onUpdateParams:p.fastMode?[Q,"onthrowupdate","onThrowUpdate"]:n&&n.radius?[!1,!0]:[]}),p.fastMode||(f&&(f._skip=!0),r.render(1e9,!0,!0),qh(!0,!0),Q.endX=Q.x,Q.endY=Q.y,z&&(Q.endRotation=Q.x),r.play(0),qh(!0,!0),f&&(f._skip=!1))):D&&Q.applyBounds()}function xh(e){var t,n=B;B=getGlobalMatrix(h.parentNode,!0),e&&Q.isPressed&&!B.equals(n||new fe)&&(t=n.inverse().apply({x:w,y:b}),B.apply(t,t),w=t.x,b=t.y),B.equals(a)&&(B=null)}function yh(){var e,t,n,o=1-Q.edgeResistance,r=se?Ca(ce):0,i=se?Ba(ce):0;xh(!1),We.x=Q.pointerX-r,We.y=Q.pointerY-i,B&&B.apply(We,We),w=We.x,b=We.y,k&&(ue(Q.pointerX,Q.pointerY),ph(!0)),f?(th(),T=f.top(),M=f.left()):(de()?(qh(!0,!0),th()):Q.applyBounds(),z?(e=h.ownerSVGElement?[le.xOrigin-h.getBBox().x,le.yOrigin-h.getBBox().y]:(Ja(h)[_e]||"0 0").split(" "),C=Q.rotationOrigin=getGlobalMatrix(h).apply({x:parseFloat(e[0])||0,y:parseFloat(e[1])||0}),qh(!0,!0),t=Q.pointerX-C.x-r,n=C.y-Q.pointerY+i,M=Q.x,T=Q.y=Math.atan2(n,t)*ke):(T=Jg(J,"px"),M=Jg(d,"px"))),D&&o&&(E<M?M=E+(M-E)/o:M<S&&(M=S-(S-M)/o),z||(L<T?T=L+(T-L)/o:T<Y&&(T=Y-(Y-T)/o))),Q.startX=M=_(M),Q.startY=T=_(T)}function Ah(){!ye.parentNode||de()||Q.isDragging||ye.parentNode.removeChild(ye)}function Bh(e,t){var n;if(!u||Q.isPressed||!e||!("mousedown"!==e.type&&"pointerdown"!==e.type||t)&&Pe()-ae<30&&Te[Q.pointerEvent.type])G&&e&&u&&xa(e);else{if(O=de(),Q.pointerEvent=e,Te[e.type]?(y=~e.type.indexOf("touch")?e.currentTarget||e.target:ce,va(y,"touchend",he),va(y,"touchmove",pe),va(y,"touchcancel",he),va(ce,"touchstart",Aa)):(y=null,va(ce,"mousemove",pe)),H=null,Ye&&y||(va(ce,"mouseup",he),e&&e.target&&va(e.target,"mouseup",he)),m=ie.call(Q,e.target)&&!1===p.dragClickables&&!t)return va(e.target,"change",he),Ma(Q,"pressInit","onPressInit"),Ma(Q,"press","onPress"),Sa(Z,!0),void(G=!1);if(A=!(!y||K==U||!1===Q.vars.allowNativeTouchScrolling||Q.vars.allowContextMenu&&e&&(e.ctrlKey||2<e.which))&&(K?"y":"x"),(G=!A&&!Q.allowEventDefault)&&(xa(e),va(xe,"touchforcechange",xa)),e.changedTouches?(e=x=e.changedTouches[0],v=e.identifier):e.pointerId?v=e.pointerId:x=v=null,De++,function _addToRenderQueue(e){Re.push(e),1===Re.length&&ge.ticker.add(qa)}(ph),b=Q.pointerY=e.pageY,w=Q.pointerX=e.pageX,Ma(Q,"pressInit","onPressInit"),(A||Q.autoScroll)&&Ha(h.parentNode),!h.parentNode||!Q.autoScroll||f||z||!h.parentNode._gsMaxScrollX||ye.parentNode||h.getBBox||(ye.style.width=h.parentNode.scrollWidth+"px",h.parentNode.appendChild(ye)),yh(),Q.tween&&Q.tween.kill(),Q.isThrowing=!1,ge.killTweensOf(f||h,o,!0),f&&ge.killTweensOf(h,{scrollTo:1},!0),Q.tween=Q.lockedAxis=null,!p.zIndexBoost&&(z||f||!1===p.zIndexBoost)||(h.style.zIndex=Draggable.zIndex++),Q.isPressed=!0,g=!(!p.onDrag&&!Q._listeners.drag),s=!(!p.onMove&&!Q._listeners.move),!1!==p.cursor||p.activeCursor)for(n=Z.length;-1<--n;)ge.set(Z[n],{cursor:p.activeCursor||p.cursor||("grab"===Le?"grabbing":Le)});Ma(Q,"press","onPress")}}function Fh(e){if(e&&Q.isDragging&&!f){var t=e.target||h.parentNode,n=t.scrollLeft-t._gsScrollX,o=t.scrollTop-t._gsScrollY;(n||o)&&(B?(w-=n*B.a+o*B.c,b-=o*B.d+n*B.b):(w-=n,b-=o),t._gsScrollX+=n,t._gsScrollY+=o,ue(Q.pointerX,Q.pointerY))}}function Gh(e){var t=Pe(),n=t-ae<40,o=t-$<40,r=n&&F===ae,i=Q.pointerEvent&&Q.pointerEvent.defaultPrevented,a=n&&c===ae,l=e.isTrusted||null==e.isTrusted&&n&&r;if((r||o&&!1!==Q.vars.suppressClickOnDrag)&&e.stopImmediatePropagation&&e.stopImmediatePropagation(),n&&(!Q.pointerEvent||!Q.pointerEvent.defaultPrevented)&&(!r||l&&!a))return l&&r&&(c=ae),void(F=ae);(Q.isPressed||o||n)&&(l&&e.detail&&n&&!i||xa(e)),n||o||(e&&e.target&&(Q.pointerEvent=e),Ma(Q,"click","onClick"))}function Hh(e){return B?{x:e.x*B.a+e.y*B.c+B.e,y:e.x*B.b+e.y*B.d+B.f}:{x:e.x,y:e.y}}var u,f,w,b,M,T,D,g,s,E,S,L,Y,x,v,C,k,t,N,P,R,m,y,B,O,A,H,I,F,c,G,n=(p.type||"x,y").toLowerCase(),q=~n.indexOf("x")||~n.indexOf("y"),z=-1!==n.indexOf("rotation"),d=z?"rotation":q?"x":"left",J=q?"y":"top",K=!(!~n.indexOf("x")&&!~n.indexOf("left")&&"scroll"!==n),U=!(!~n.indexOf("y")&&!~n.indexOf("top")&&"scroll"!==n),j=p.minimumMovement||2,Q=function _assertThisInitialized(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e),Z=be(p.trigger||p.handle||h),o={},$=0,ee=!1,te=p.autoScrollMarginTop||40,ne=p.autoScrollMarginRight||40,oe=p.autoScrollMarginBottom||40,re=p.autoScrollMarginLeft||40,ie=p.clickableTest||Ra,ae=0,le=h._gsap||ge.core.getCache(h),se=function _isFixed(e){return"fixed"===Ja(e).position||((e=e.parentNode)&&1===e.nodeType?_isFixed(e):void 0)}(h),ce=h.ownerDocument||ve,de=function isTweening(){return Q.tween&&Q.tween.isActive()},pe=function onMove(e){var t,n,o,r,i,a,l=e;if(u&&!Ee&&Q.isPressed&&e){if(t=(Q.pointerEvent=e).changedTouches){if((e=t[0])!==x&&e.identifier!==v){for(r=t.length;-1<--r&&(e=t[r]).identifier!==v&&e.target!==h;);if(r<0)return}}else if(e.pointerId&&v&&e.pointerId!==v)return;y&&A&&!H&&(We.x=e.pageX-(se?Ca(ce):0),We.y=e.pageY-(se?Ba(ce):0),B&&B.apply(We,We),n=We.x,o=We.y,((i=Math.abs(n-w))!==(a=Math.abs(o-b))&&(j<i||j<a)||Xe&&A===H)&&(H=a<i&&K?"x":"y",A&&H!==A&&va(xe,"touchforcechange",xa),!1!==Q.vars.lockAxisOnTouchScroll&&K&&U&&(Q.lockedAxis="x"===H?"y":"x",V(Q.vars.onLockAxis)&&Q.vars.onLockAxis.call(Q,l)),Xe&&A===H))?he(l):(G=Q.allowEventDefault||A&&(!H||A===H)||!1===l.cancelable?G&&!1:(xa(l),!0),Q.autoScroll&&(ee=!0),ue(e.pageX,e.pageY,s))}else G&&e&&u&&xa(e)},ue=function setPointerPosition(e,t,n){var o,r,i,a,l,s,c=1-Q.dragResistance,d=1-Q.edgeResistance,p=Q.pointerX,u=Q.pointerY,h=T,f=Q.x,g=Q.y,x=Q.endX,v=Q.endY,m=Q.endRotation,y=k;Q.pointerX=e,Q.pointerY=t,se&&(e-=Ca(ce),t-=Ba(ce)),z?(a=Math.atan2(C.y-t,e-C.x)*ke,180<(l=Q.y-a)?(T-=360,Q.y=a):l<-180&&(T+=360,Q.y=a),i=Q.x!==M||Math.abs(T-a)>j?(Q.y=a,M+(T-a)*c):M):(B&&(s=e*B.a+t*B.c+B.e,t=e*B.b+t*B.d+B.f,e=s),(r=t-b)<j&&-j<r&&(r=0),(o=e-w)<j&&-j<o&&(o=0),(Q.lockAxis||Q.lockedAxis)&&(o||r)&&((s=Q.lockedAxis)||(Q.lockedAxis=s=K&&Math.abs(o)>Math.abs(r)?"y":U?"x":null,s&&V(Q.vars.onLockAxis)&&Q.vars.onLockAxis.call(Q,Q.pointerEvent)),"y"===s?r=0:"x"===s&&(o=0)),i=_(M+o*c),a=_(T+r*c)),(N||P||R)&&(Q.x!==i||Q.y!==a&&!z)?(R&&(He.x=i,He.y=a,s=R(He),i=_(s.x),a=_(s.y)),N&&(i=_(N(i))),P&&(a=_(P(a)))):D&&(E<i?i=E+Math.round((i-E)*d):i<S&&(i=S+Math.round((i-S)*d)),z||(L<a?a=Math.round(L+(a-L)*d):a<Y&&(a=Math.round(Y+(a-Y)*d)))),Q.x===i&&(Q.y===a||z)||(z?(Q.endRotation=Q.x=Q.endX=i,k=!0):(U&&(Q.y=Q.endY=a,k=!0),K&&(Q.x=Q.endX=i,k=!0)),n&&!1===Ma(Q,"move","onMove")?(Q.pointerX=p,Q.pointerY=u,T=h,Q.x=f,Q.y=g,Q.endX=x,Q.endY=v,Q.endRotation=m,k=y):!Q.isDragging&&Q.isPressed&&(Q.isDragging=!0,Ma(Q,"dragstart","onDragStart")))},he=function onRelease(e,t){if(u&&Q.isPressed&&(!e||null==v||t||!(e.pointerId&&e.pointerId!==v&&e.target!==h||e.changedTouches&&!function _hasTouchID(e,t){for(var n=e.length;n--;)if(e[n].identifier===t)return!0}(e.changedTouches,v)))){Q.isPressed=!1;var n,o,r,i,a,l=e,s=Q.isDragging,c=Q.vars.allowContextMenu&&e&&(e.ctrlKey||2<e.which),d=ge.delayedCall(.001,Ah);if(y?(wa(y,"touchend",onRelease),wa(y,"touchmove",pe),wa(y,"touchcancel",onRelease),wa(ce,"touchstart",Aa)):wa(ce,"mousemove",pe),wa(xe,"touchforcechange",xa),Ye&&y||(wa(ce,"mouseup",onRelease),e&&e.target&&wa(e.target,"mouseup",onRelease)),k=!1,s&&($=Ae=Pe(),Q.isDragging=!1),m&&!c)return e&&(wa(e.target,"change",onRelease),Q.pointerEvent=l),Sa(Z,!1),Ma(Q,"release","onRelease"),Ma(Q,"click","onClick"),void(m=!1);for(ta(ph),o=Z.length;-1<--o;)Ia(Z[o],"cursor",p.cursor||(!1!==p.cursor?Le:null));if(De--,e){if((n=e.changedTouches)&&(e=n[0])!==x&&e.identifier!==v){for(o=n.length;-1<--o&&(e=n[o]).identifier!==v&&e.target!==h;);if(o<0)return}Q.pointerEvent=l,Q.pointerX=e.pageX,Q.pointerY=e.pageY}return c&&l?(xa(l),G=!0,Ma(Q,"release","onRelease")):l&&!s?(G=!1,O&&(p.snap||p.bounds)&&wh(p.inertia||p.throwProps),Ma(Q,"release","onRelease"),Xe&&"touchmove"===l.type||-1!==l.type.indexOf("cancel")||(Ma(Q,"click","onClick"),Pe()-ae<300&&Ma(Q,"doubleclick","onDoubleClick"),i=l.target||h,ae=Pe(),a=function syntheticClick(){ae===F||!Q.enabled()||Q.isPressed||l.defaultPrevented||(i.click?i.click():ce.createEvent&&((r=ce.createEvent("MouseEvents")).initMouseEvent("click",!0,!0,xe,1,Q.pointerEvent.screenX,Q.pointerEvent.screenY,Q.pointerX,Q.pointerY,!1,!1,!1,!1,0,null),i.dispatchEvent(r)))},Xe||l.defaultPrevented||ge.delayedCall(.05,a))):(wh(p.inertia||p.throwProps),Q.allowEventDefault||!l||!1===p.dragClickables&&ie.call(Q,l.target)||!s||A&&(!H||A!==H)||!1===l.cancelable?G=!1:(G=!0,xa(l)),Ma(Q,"release","onRelease")),de()&&d.duration(Q.tween.duration()),s&&Ma(Q,"dragend","onDragEnd"),!0}G&&e&&u&&xa(e)};return(t=Draggable.get(h))&&t.kill(),e.startDrag=function(e,t){var n,o,r,i;Bh(e||Q.pointerEvent,!0),t&&!Q.hitTest(e||Q.pointerEvent)&&(n=La(e||Q.pointerEvent),o=La(h),r=Hh({x:n.left+n.width/2,y:n.top+n.height/2}),i=Hh({x:o.left+o.width/2,y:o.top+o.height/2}),w-=r.x-i.x,b-=r.y-i.y),Q.isDragging||(Q.isDragging=!0,Ma(Q,"dragstart","onDragStart"))},e.drag=pe,e.endDrag=function(e){return he(e||Q.pointerEvent,!0)},e.timeSinceDrag=function(){return Q.isDragging?0:(Pe()-$)/1e3},e.timeSinceClick=function(){return(Pe()-ae)/1e3},e.hitTest=function(e,t){return Draggable.hitTest(Q.target,e,t)},e.getDirection=function(e,t){var n,o,r,i,a,l,s="velocity"===e&&Se?e:W(e)&&!z?"element":"start";return"element"===s&&(a=La(Q.target),l=La(e)),n="start"===s?Q.x-M:"velocity"===s?Se.getVelocity(h,d):a.left+a.width/2-(l.left+l.width/2),z?n<0?"counter-clockwise":"clockwise":(t=t||2,o="start"===s?Q.y-T:"velocity"===s?Se.getVelocity(h,J):a.top+a.height/2-(l.top+l.height/2),i=(r=Math.abs(n/o))<1/t?"":n<0?"left":"right",r<t&&(""!==i&&(i+="-"),i+=o<0?"up":"down"),i)},e.applyBounds=function(e,t){var n,o,r,i,a,l;if(e&&p.bounds!==e)return p.bounds=e,Q.update(!0,t);
13956if(qh(!0),th(),D&&!de()){if(n=Q.x,o=Q.y,E<n?n=E:n<S&&(n=S),L<o?o=L:o<Y&&(o=Y),(Q.x!==n||Q.y!==o)&&(r=!0,Q.x=Q.endX=n,z?Q.endRotation=n:Q.y=Q.endY=o,ph(k=!0),Q.autoScroll&&!Q.isDragging))for(Ha(h.parentNode),i=h,Ie.scrollTop=null!=xe.pageYOffset?xe.pageYOffset:null!=ce.documentElement.scrollTop?ce.documentElement.scrollTop:ce.body.scrollTop,Ie.scrollLeft=null!=xe.pageXOffset?xe.pageXOffset:null!=ce.documentElement.scrollLeft?ce.documentElement.scrollLeft:ce.body.scrollLeft;i&&!l;)a=(l=Fe(i.parentNode))?Ie:i.parentNode,U&&a.scrollTop>a._gsMaxScrollY&&(a.scrollTop=a._gsMaxScrollY),K&&a.scrollLeft>a._gsMaxScrollX&&(a.scrollLeft=a._gsMaxScrollX),i=a;Q.isThrowing&&(r||Q.endX>E||Q.endX<S||Q.endY>L||Q.endY<Y)&&wh(p.inertia||p.throwProps,r)}return Q},e.update=function(e,t,n){var o=Q.x,r=Q.y;return xh(!t),e?Q.applyBounds():(k&&n&&ph(!0),qh(!0)),t&&(ue(Q.pointerX,Q.pointerY),k&&ph(!0)),Q.isPressed&&!t&&(K&&.01<Math.abs(o-Q.x)||U&&.01<Math.abs(r-Q.y)&&!z)&&yh(),Q.autoScroll&&(Ha(h.parentNode,Q.isDragging),ee=Q.isDragging,ph(!0),Ea(h,Fh),Da(h,Fh)),Q},e.enable=function(e){var t,n,o,r={lazy:!0};if(!1!==p.cursor&&(r.cursor=p.cursor||Le),ge.utils.checkPrefix("touchCallout")&&(r.touchCallout="none"),"soft"!==e){for(pa(Z,K==U?"none":p.allowNativeTouchScrolling&&h.scrollHeight===h.clientHeight==(h.scrollWidth===h.clientHeight)||p.allowEventDefault?"manipulation":K?"pan-y":"pan-x"),n=Z.length;-1<--n;)o=Z[n],Ye||va(o,"mousedown",Bh),va(o,"touchstart",Bh),va(o,"click",Gh,!0),ge.set(o,r),o.getBBox&&o.ownerSVGElement&&ge.set(o.ownerSVGElement,{touchAction:K==U?"none":p.allowNativeTouchScrolling||p.allowEventDefault?"manipulation":K?"pan-y":"pan-x"}),p.allowContextMenu||va(o,"contextmenu",oh);Sa(Z,!1)}return Da(h,Fh),u=!0,Se&&"soft"!==e&&Se.track(f||h,q?"x,y":z?"rotation":"top,left"),h._gsDragID=t="d"+Oe++,Be[t]=Q,f&&(f.enable(),f.element._gsDragID=t),(p.bounds||z)&&yh(),p.bounds&&Q.applyBounds(),Q},e.disable=function(e){for(var t,n=Q.isDragging,o=Z.length;-1<--o;)Ia(Z[o],"cursor",null);if("soft"!==e){for(pa(Z,null),o=Z.length;-1<--o;)t=Z[o],Ia(t,"touchCallout",null),wa(t,"mousedown",Bh),wa(t,"touchstart",Bh),wa(t,"click",Gh),wa(t,"contextmenu",oh);Sa(Z,!0),y&&(wa(y,"touchcancel",he),wa(y,"touchend",he),wa(y,"touchmove",pe)),wa(ce,"mouseup",he),wa(ce,"mousemove",pe)}return Ea(h,Fh),u=!1,Se&&"soft"!==e&&Se.untrack(f||h,q?"x,y":z?"rotation":"top,left"),f&&f.disable(),ta(ph),Q.isDragging=Q.isPressed=m=!1,n&&Ma(Q,"dragend","onDragEnd"),Q},e.enabled=function(e,t){return arguments.length?e?Q.enable(t):Q.disable(t):u},e.kill=function(){return Q.isThrowing=!1,Q.tween&&Q.tween.kill(),Q.disable(),ge.set(Z,{clearProps:"userSelect"}),delete Be[h._gsDragID],Q},~n.indexOf("scroll")&&(f=e.scrollProxy=new Wa(h,function _extend(e,t){for(var n in t)n in e||(e[n]=t[n]);return e}({onKill:function onKill(){Q.isPressed&&he(null)}},p)),h.style.overflowY=U&&!Me?"auto":"hidden",h.style.overflowX=K&&!Me?"auto":"hidden",h=f.content),z?o.rotation=1:(K&&(o[d]=1),U&&(o[J]=1)),le.force3D=!("force3D"in p)||p.force3D,e.enable(),e}!function _setDefaults(e,t){for(var n in t)n in e||(e[n]=t[n])}(I.prototype,{pointerX:0,pointerY:0,startX:0,startY:0,deltaX:0,deltaY:0,isDragging:!1,isPressed:!1}),I.zIndex=1e3,I.version="3.7.0",U()&&ge.registerPlugin(I),e.Draggable=I,e.default=I;if (typeof(window)==="undefined"||window!==e){Object.defineProperty(e,"__esModule",{value:!0})} else {delete e.default}}); 13957 13958 13959/*SIGUIENTE LIBRERIA*/ 13960(function (global, factory) { 13961 typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) : 13962 typeof define === 'function' && define.amd ? define(['exports'], factory) : 13963 (global = global || self, factory(global.window = global.window || {})); 13964}(this, (function (exports) { 'use strict'; 13965 13966 /*! 13967 * EaselPlugin 3.7.0 13968 * https://greensock.com 13969 * 13970 * @license Copyright 2008-2021, GreenSock. All rights reserved. 13971 * Subject to the terms at https://greensock.com/standard-license or for 13972 * Club GreenSock members, the agreement issued with that membership. 13973 * @author: Jack Doyle, [email protected] 13974 */ 13975 var gsap, 13976 _coreInitted, 13977 _win, 13978 _createJS, 13979 _ColorFilter, 13980 _ColorMatrixFilter, 13981 _colorProps = "redMultiplier,greenMultiplier,blueMultiplier,alphaMultiplier,redOffset,greenOffset,blueOffset,alphaOffset".split(","), 13982 _windowExists = function _windowExists() { 13983 return typeof window !== "undefined"; 13984 }, 13985 _getGSAP = function _getGSAP() { 13986 return gsap || _windowExists() && (gsap = window.gsap) && gsap.registerPlugin && gsap; 13987 }, 13988 _getCreateJS = function _getCreateJS() { 13989 return _createJS || _win && _win.createjs || _win || {}; 13990 }, 13991 _warn = function _warn(message) { 13992 return console.warn(message); 13993 }, 13994 _cache = function _cache(target) { 13995 var b = target.getBounds && target.getBounds(); 13996 13997 if (!b) { 13998 b = target.nominalBounds || { 13999 x: 0, 14000 y: 0, 14001 width: 100, 14002 height: 100 14003 }; 14004 target.setBounds && target.setBounds(b.x, b.y, b.width, b.height); 14005 } 14006 14007 target.cache && target.cache(b.x, b.y, b.width, b.height); 14008 14009 _warn("EaselPlugin: for filters to display in EaselJS, you must call the object's cache() method first. GSAP attempted to use the target's getBounds() for the cache but that may not be completely accurate. " + target); 14010 }, 14011 _parseColorFilter = function _parseColorFilter(target, v, plugin) { 14012 if (!_ColorFilter) { 14013 _ColorFilter = _getCreateJS().ColorFilter; 14014 14015 if (!_ColorFilter) { 14016 _warn("EaselPlugin error: The EaselJS ColorFilter JavaScript file wasn't loaded."); 14017 } 14018 } 14019 14020 var filters = target.filters || [], 14021 i = filters.length, 14022 c, 14023 s, 14024 e, 14025 a, 14026 p, 14027 pt; 14028 14029 while (i--) { 14030 if (filters[i] instanceof _ColorFilter) { 14031 s = filters[i]; 14032 break; 14033 } 14034 } 14035 14036 if (!s) { 14037 s = new _ColorFilter(); 14038 filters.push(s); 14039 target.filters = filters; 14040 } 14041 14042 e = s.clone(); 14043 14044 if (v.tint != null) { 14045 c = gsap.utils.splitColor(v.tint); 14046 a = v.tintAmount != null ? +v.tintAmount : 1; 14047 e.redOffset = +c[0] * a; 14048 e.greenOffset = +c[1] * a; 14049 e.blueOffset = +c[2] * a; 14050 e.redMultiplier = e.greenMultiplier = e.blueMultiplier = 1 - a; 14051 } else { 14052 for (p in v) { 14053 if (p !== "exposure") if (p !== "brightness") { 14054 e[p] = +v[p]; 14055 } 14056 } 14057 } 14058 14059 if (v.exposure != null) { 14060 e.redOffset = e.greenOffset = e.blueOffset = 255 * (+v.exposure - 1); 14061 e.redMultiplier = e.greenMultiplier = e.blueMultiplier = 1; 14062 } else if (v.brightness != null) { 14063 a = +v.brightness - 1; 14064 e.redOffset = e.greenOffset = e.blueOffset = a > 0 ? a * 255 : 0; 14065 e.redMultiplier = e.greenMultiplier = e.blueMultiplier = 1 - Math.abs(a); 14066 } 14067 14068 i = 8; 14069 14070 while (i--) { 14071 p = _colorProps[i]; 14072 14073 if (s[p] !== e[p]) { 14074 pt = plugin.add(s, p, s[p], e[p]); 14075 14076 if (pt) {
vendor: 5,211 bytes, lines 14077-14273
14077 pt.op = "easel_colorFilter"; 14078 } 14079 } 14080 } 14081 14082 plugin._props.push("easel_colorFilter"); 14083 14084 if (!target.cacheID) { 14085 _cache(target); 14086 } 14087 }, 14088 _idMatrix = [1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0], 14089 _lumR = 0.212671, 14090 _lumG = 0.715160, 14091 _lumB = 0.072169, 14092 _applyMatrix = function _applyMatrix(m, m2) { 14093 if (!(m instanceof Array) || !(m2 instanceof Array)) { 14094 return m2; 14095 } 14096 14097 var temp = [], 14098 i = 0, 14099 z = 0, 14100 y, 14101 x; 14102 14103 for (y = 0; y < 4; y++) { 14104 for (x = 0; x < 5; x++) { 14105 z = x === 4 ? m[i + 4] : 0; 14106 temp[i + x] = m[i] * m2[x] + m[i + 1] * m2[x + 5] + m[i + 2] * m2[x + 10] + m[i + 3] * m2[x + 15] + z; 14107 } 14108 14109 i += 5; 14110 } 14111 14112 return temp; 14113 }, 14114 _setSaturation = function _setSaturation(m, n) { 14115 if (isNaN(n)) { 14116 return m; 14117 } 14118 14119 var inv = 1 - n, 14120 r = inv * _lumR, 14121 g = inv * _lumG, 14122 b = inv * _lumB; 14123 return _applyMatrix([r + n, g, b, 0, 0, r, g + n, b, 0, 0, r, g, b + n, 0, 0, 0, 0, 0, 1, 0], m); 14124 }, 14125 _colorize = function _colorize(m, color, amount) { 14126 if (isNaN(amount)) { 14127 amount = 1; 14128 } 14129 14130 var c = gsap.utils.splitColor(color), 14131 r = c[0] / 255, 14132 g = c[1] / 255, 14133 b = c[2] / 255, 14134 inv = 1 - amount; 14135 return _applyMatrix([inv + amount * r * _lumR, amount * r * _lumG, amount * r * _lumB, 0, 0, amount * g * _lumR, inv + amount * g * _lumG, amount * g * _lumB, 0, 0, amount * b * _lumR, amount * b * _lumG, inv + amount * b * _lumB, 0, 0, 0, 0, 0, 1, 0], m); 14136 }, 14137 _setHue = function _setHue(m, n) { 14138 if (isNaN(n)) { 14139 return m; 14140 } 14141 14142 n *= Math.PI / 180; 14143 var c = Math.cos(n), 14144 s = Math.sin(n); 14145 return _applyMatrix([_lumR + c * (1 - _lumR) + s * -_lumR, _lumG + c * -_lumG + s * -_lumG, _lumB + c * -_lumB + s * (1 - _lumB), 0, 0, _lumR + c * -_lumR + s * 0.143, _lumG + c * (1 - _lumG) + s * 0.14, _lumB + c * -_lumB + s * -0.283, 0, 0, _lumR + c * -_lumR + s * -(1 - _lumR), _lumG + c * -_lumG + s * _lumG, _lumB + c * (1 - _lumB) + s * _lumB, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1], m); 14146 }, 14147 _setContrast = function _setContrast(m, n) { 14148 if (isNaN(n)) { 14149 return m; 14150 } 14151 14152 n += 0.01; 14153 return _applyMatrix([n, 0, 0, 0, 128 * (1 - n), 0, n, 0, 0, 128 * (1 - n), 0, 0, n, 0, 128 * (1 - n), 0, 0, 0, 1, 0], m); 14154 }, 14155 _parseColorMatrixFilter = function _parseColorMatrixFilter(target, v, plugin) { 14156 if (!_ColorMatrixFilter) { 14157 _ColorMatrixFilter = _getCreateJS().ColorMatrixFilter; 14158 14159 if (!_ColorMatrixFilter) { 14160 _warn("EaselPlugin: The EaselJS ColorMatrixFilter JavaScript file wasn't loaded."); 14161 } 14162 } 14163 14164 var filters = target.filters || [], 14165 i = filters.length, 14166 matrix, 14167 startMatrix, 14168 s, 14169 pg; 14170 14171 while (--i > -1) { 14172 if (filters[i] instanceof _ColorMatrixFilter) { 14173 s = filters[i]; 14174 break; 14175 } 14176 } 14177 14178 if (!s) { 14179 s = new _ColorMatrixFilter(_idMatrix.slice()); 14180 filters.push(s); 14181 target.filters = filters; 14182 } 14183 14184 startMatrix = s.matrix; 14185 matrix = _idMatrix.slice(); 14186 14187 if (v.colorize != null) { 14188 matrix = _colorize(matrix, v.colorize, Number(v.colorizeAmount)); 14189 } 14190 14191 if (v.contrast != null) { 14192 matrix = _setContrast(matrix, Number(v.contrast)); 14193 } 14194 14195 if (v.hue != null) { 14196 matrix = _setHue(matrix, Number(v.hue)); 14197 } 14198 14199 if (v.saturation != null) { 14200 matrix = _setSaturation(matrix, Number(v.saturation)); 14201 } 14202 14203 i = matrix.length; 14204 14205 while (--i > -1) { 14206 if (matrix[i] !== startMatrix[i]) { 14207 pg = plugin.add(startMatrix, i, startMatrix[i], matrix[i]); 14208 14209 if (pg) { 14210 pg.op = "easel_colorMatrixFilter"; 14211 } 14212 } 14213 } 14214 14215 plugin._props.push("easel_colorMatrixFilter"); 14216 14217 if (!target.cacheID) { 14218 _cache(); 14219 } 14220 14221 plugin._matrix = startMatrix; 14222 }, 14223 _initCore = function _initCore(core) { 14224 gsap = core || _getGSAP(); 14225 14226 if (_windowExists()) { 14227 _win = window; 14228 } 14229 14230 if (gsap) { 14231 _coreInitted = 1; 14232 } 14233 }; 14234 14235 var EaselPlugin = { 14236 version: "3.7.0", 14237 name: "easel", 14238 init: function init(target, value, tween, index, targets) { 14239 if (!_coreInitted) { 14240 _initCore(); 14241 14242 if (!gsap) { 14243 _warn("Please gsap.registerPlugin(EaselPlugin)"); 14244 } 14245 } 14246 14247 this.target = target; 14248 var p, pt, tint, colorMatrix, end, labels, i; 14249 14250 for (p in value) { 14251 end = value[p]; 14252 14253 if (p === "colorFilter" || p === "tint" || p === "tintAmount" || p === "exposure" || p === "brightness") { 14254 if (!tint) { 14255 _parseColorFilter(target, value.colorFilter || value, this); 14256 14257 tint = true; 14258 } 14259 } else if (p === "saturation" || p === "contrast" || p === "hue" || p === "colorize" || p === "colorizeAmount") { 14260 if (!colorMatrix) { 14261 _parseColorMatrixFilter(target, value.colorMatrixFilter || value, this); 14262 14263 colorMatrix = true; 14264 } 14265 } else if (p === "frame") { 14266 if (typeof end === "string" && end.charAt(1) !== "=" && (labels = target.labels)) { 14267 for (i = 0; i < labels.length; i++) { 14268 if (labels[i].label === end) { 14269 end = labels[i].position; 14270 } 14271 } 14272 } 14273
vendor: 5,635 bytes, lines 14274-14322
14274 pt = this.add(target, "gotoAndStop", target.currentFrame, end, index, targets, Math.round); 14275 14276 if (pt) { 14277 pt.op = p; 14278 } 14279 } else if (target[p] != null) { 14280 this.add(target, p, "get", end); 14281 } 14282 } 14283 }, 14284 render: function render(ratio, data) { 14285 var pt = data._pt; 14286 14287 while (pt) { 14288 pt.r(ratio, pt.d); 14289 pt = pt._next; 14290 } 14291 14292 if (data.target.cacheID) { 14293 data.target.updateCache(); 14294 } 14295 }, 14296 register: _initCore 14297 }; 14298 14299 EaselPlugin.registerCreateJS = function (createjs) { 14300 _createJS = createjs; 14301 }; 14302 14303 _getGSAP() && gsap.registerPlugin(EaselPlugin); 14304 14305 exports.EaselPlugin = EaselPlugin; 14306 exports.default = EaselPlugin; 14307 14308 Object.defineProperty(exports, '__esModule', { value: true }); 14309 14310}))); 14311 14312/*SIGUIENTE LIBRERIA*/ 14313/*! 14314 * EaselPlugin 3.7.0 14315 * https://greensock.com 14316 * 14317 * @license Copyright 2021, GreenSock. All rights reserved. 14318 * Subject to the terms at https://greensock.com/standard-license or for Club GreenSock members, the agreement issued with that membership. 14319 * @author: Jack Doyle, [email protected] 14320 */ 14321 14322!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e=e||self).window=e.window||{})}(this,function(e){"use strict";function k(){return"undefined"!=typeof window}function l(){return h||k()&&(h=window.gsap)&&h.registerPlugin&&h}function m(){return r||t&&t.createjs||t||{}}function n(e){return console.warn(e)}function o(e){var t=e.getBounds&&e.getBounds();t||(t=e.nominalBounds||{x:0,y:0,width:100,height:100},e.setBounds&&e.setBounds(t.x,t.y,t.width,t.height)),e.cache&&e.cache(t.x,t.y,t.width,t.height),n("EaselPlugin: for filters to display in EaselJS, you must call the object's cache() method first. GSAP attempted to use the target's getBounds() for the cache but that may not be completely accurate. "+e)}function p(e,t,r){(b=b||m().ColorFilter)||n("EaselPlugin error: The EaselJS ColorFilter JavaScript file wasn't loaded.");for(var i,l,s,u,a,f,c=e.filters||[],d=c.length;d--;)if(c[d]instanceof b){l=c[d];break}if(l||(l=new b,c.push(l),e.filters=c),s=l.clone(),null!=t.tint)i=h.utils.splitColor(t.tint),u=null!=t.tintAmount?+t.tintAmount:1,s.redOffset=i[0]*u,s.greenOffset=i[1]*u,s.blueOffset=i[2]*u,s.redMultiplier=s.greenMultiplier=s.blueMultiplier=1-u;else for(a in t)"exposure"!==a&&"brightness"!==a&&(s[a]=+t[a]);for(null!=t.exposure?(s.redOffset=s.greenOffset=s.blueOffset=255*(t.exposure-1),s.redMultiplier=s.greenMultiplier=s.blueMultiplier=1):null!=t.brightness&&(u=t.brightness-1,s.redOffset=s.greenOffset=s.blueOffset=0<u?255*u:0,s.redMultiplier=s.greenMultiplier=s.blueMultiplier=1-Math.abs(u)),d=8;d--;)l[a=M[d]]!==s[a]&&(f=r.add(l,a,l[a],s[a]))&&(f.op="easel_colorFilter");r._props.push("easel_colorFilter"),e.cacheID||o(e)}function u(e,t){if(!(e instanceof Array&&t instanceof Array))return t;var r,i,n=[],l=0,o=0;for(r=0;r<4;r++){for(i=0;i<5;i++)o=4===i?e[l+4]:0,n[l+i]=e[l]*t[i]+e[l+1]*t[i+5]+e[l+2]*t[i+10]+e[l+3]*t[i+15]+o;l+=5}return n}function z(e,t,r){(d=d||m().ColorMatrixFilter)||n("EaselPlugin: The EaselJS ColorMatrixFilter JavaScript file wasn't loaded.");for(var i,l,s,a,f=e.filters||[],c=f.length;-1<--c;)if(f[c]instanceof d){s=f[c];break}for(s||(s=new d(w.slice()),f.push(s),e.filters=f),l=s.matrix,i=w.slice(),null!=t.colorize&&(i=function _colorize(e,t,r){isNaN(r)&&(r=1);var i=h.utils.splitColor(t),n=i[0]/255,l=i[1]/255,o=i[2]/255,s=1-r;return u([s+r*n*x,r*n*y,r*n*_,0,0,r*l*x,s+r*l*y,r*l*_,0,0,r*o*x,r*o*y,s+r*o*_,0,0,0,0,0,1,0],e)}(i,t.colorize,Number(t.colorizeAmount))),null!=t.contrast&&(i=function _setContrast(e,t){return isNaN(t)?e:u([t+=.01,0,0,0,128*(1-t),0,t,0,0,128*(1-t),0,0,t,0,128*(1-t),0,0,0,1,0],e)}(i,Number(t.contrast))),null!=t.hue&&(i=function _setHue(e,t){if(isNaN(t))return e;t*=Math.PI/180;var r=Math.cos(t),i=Math.sin(t);return u([x+r*(1-x)+i*-x,y+r*-y+i*-y,_+r*-_+i*(1-_),0,0,x+r*-x+.143*i,y+r*(1-y)+.14*i,_+r*-_+-.283*i,0,0,x+r*-x+i*-(1-x),y+r*-y+i*y,_+r*(1-_)+i*_,0,0,0,0,0,1,0,0,0,0,0,1],e)}(i,Number(t.hue))),null!=t.saturation&&(i=function _setSaturation(e,t){if(isNaN(t))return e;var r=1-t,i=r*x,n=r*y,l=r*_;return u([i+t,n,l,0,0,i,n+t,l,0,0,i,n,l+t,0,0,0,0,0,1,0],e)}(i,Number(t.saturation))),c=i.length;-1<--c;)i[c]!==l[c]&&(a=r.add(l,c,l[c],i[c]))&&(a.op="easel_colorMatrixFilter");r._props.push("easel_colorMatrixFilter"),e.cacheID||o(),r._matrix=l}function A(e){h=e||l(),k()&&(t=window),h&&(g=1)}var h,g,t,r,b,d,M="redMultiplier,greenMultiplier,blueMultiplier,alphaMultiplier,redOffset,greenOffset,blueOffset,alphaOffset".split(","),w=[1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,1,0],x=.212671,y=.71516,_=.072169,i={version:"3.7.0",name:"easel",init:function init(e,t,r,i,l){var o,s,u,a,f,c,d;for(o in g||(A(),h||n("Please gsap.registerPlugin(EaselPlugin)")),this.target=e,t)if(f=t[o],"colorFilter"===o||"tint"===o||"tintAmount"===o||"exposure"===o||"brightness"===o)u||(p(e,t.colorFilter||t,this),u=!0);else if("saturation"===o||"contrast"===o||"hue"===o||"colorize"===o||"colorizeAmount"===o)a||(z(e,t.colorMatrixFilter||t,this),a=!0);else if("frame"===o){if("string"==typeof f&&"="!==f.charAt(1)&&(c=e.labels))for(d=0;d<c.length;d++)c[d].label===f&&(f=c[d].position);(s=this.add(e,"gotoAndStop",e.currentFrame,f,i,l,Math.round))&&(s.op=o)}else null!=e[o]&&this.add(e,o,"get",f)},render:function render(e,t){for(var r=t._pt;r;)r.r(e,r.d),r=r._next;t.target.cacheID&&t.target.updateCache()},register:A,registerCreateJS:function(e){r=e}};l()&&h.registerPlugin(i),e.EaselPlugin=i,e.default=i;if (typeof(window)==="undefined"||window!==e){Object.defineProperty(e,"__esMo
vendor: 4,895 bytes, lines 14322-14512
14322dule",{value:!0})} else {delete e.default}}); 14323 14324 14325/*SIGUIENTE LIBRERIA*/ 14326(function (global, factory) { 14327 typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) : 14328 typeof define === 'function' && define.amd ? define(['exports'], factory) : 14329 (global = global || self, factory(global.window = global.window || {})); 14330}(this, (function (exports) { 'use strict'; 14331 14332 /*! 14333 * EasePack 3.7.0 14334 * https://greensock.com 14335 * 14336 * @license Copyright 2008-2021, GreenSock. All rights reserved. 14337 * Subject to the terms at https://greensock.com/standard-license or for 14338 * Club GreenSock members, the agreement issued with that membership. 14339 * @author: Jack Doyle, [email protected] 14340 */ 14341 var gsap, 14342 _registerEase, 14343 _getGSAP = function _getGSAP() { 14344 return gsap || typeof window !== "undefined" && (gsap = window.gsap) && gsap.registerPlugin && gsap; 14345 }, 14346 _boolean = function _boolean(value, defaultValue) { 14347 return !!(typeof value === "undefined" ? defaultValue : value && !~(value + "").indexOf("false")); 14348 }, 14349 _initCore = function _initCore(core) { 14350 gsap = core || _getGSAP(); 14351 14352 if (gsap) { 14353 _registerEase = gsap.registerEase; 14354 14355 var eases = gsap.parseEase(), 14356 createConfig = function createConfig(ease) { 14357 return function (ratio) { 14358 var y = 0.5 + ratio / 2; 14359 14360 ease.config = function (p) { 14361 return ease(2 * (1 - p) * p * y + p * p); 14362 }; 14363 }; 14364 }, 14365 p; 14366 14367 for (p in eases) { 14368 if (!eases[p].config) { 14369 createConfig(eases[p]); 14370 } 14371 } 14372 14373 _registerEase("slow", SlowMo); 14374 14375 _registerEase("expoScale", ExpoScaleEase); 14376 14377 _registerEase("rough", RoughEase); 14378 14379 for (p in EasePack) { 14380 p !== "version" && gsap.core.globals(p, EasePack[p]); 14381 } 14382 } 14383 }, 14384 _createSlowMo = function _createSlowMo(linearRatio, power, yoyoMode) { 14385 linearRatio = Math.min(1, linearRatio || 0.7); 14386 14387 var pow = linearRatio < 1 ? power || power === 0 ? power : 0.7 : 0, 14388 p1 = (1 - linearRatio) / 2, 14389 p3 = p1 + linearRatio, 14390 calcEnd = _boolean(yoyoMode); 14391 14392 return function (p) { 14393 var r = p + (0.5 - p) * pow; 14394 return p < p1 ? calcEnd ? 1 - (p = 1 - p / p1) * p : r - (p = 1 - p / p1) * p * p * p * r : p > p3 ? calcEnd ? p === 1 ? 0 : 1 - (p = (p - p3) / p1) * p : r + (p - r) * (p = (p - p3) / p1) * p * p * p : calcEnd ? 1 : r; 14395 }; 14396 }, 14397 _createExpoScale = function _createExpoScale(start, end, ease) { 14398 var p1 = Math.log(end / start), 14399 p2 = end - start; 14400 ease && (ease = gsap.parseEase(ease)); 14401 return function (p) { 14402 return (start * Math.exp(p1 * (ease ? ease(p) : p)) - start) / p2; 14403 }; 14404 }, 14405 EasePoint = function EasePoint(time, value, next) { 14406 this.t = time; 14407 this.v = value; 14408 14409 if (next) { 14410 this.next = next; 14411 next.prev = this; 14412 this.c = next.v - value; 14413 this.gap = next.t - time; 14414 } 14415 }, 14416 _createRoughEase = function _createRoughEase(vars) { 14417 if (typeof vars !== "object") { 14418 vars = { 14419 points: +vars || 20 14420 }; 14421 } 14422 14423 var taper = vars.taper || "none", 14424 a = [], 14425 cnt = 0, 14426 points = (+vars.points || 20) | 0, 14427 i = points, 14428 randomize = _boolean(vars.randomize, true), 14429 clamp = _boolean(vars.clamp), 14430 template = gsap ? gsap.parseEase(vars.template) : 0, 14431 strength = (+vars.strength || 1) * 0.4, 14432 x, 14433 y, 14434 bump, 14435 invX, 14436 obj, 14437 pnt, 14438 recent; 14439 14440 while (--i > -1) { 14441 x = randomize ? Math.random() : 1 / points * i; 14442 y = template ? template(x) : x; 14443 14444 if (taper === "none") { 14445 bump = strength; 14446 } else if (taper === "out") { 14447 invX = 1 - x; 14448 bump = invX * invX * strength; 14449 } else if (taper === "in") { 14450 bump = x * x * strength; 14451 } else if (x < 0.5) { 14452 invX = x * 2; 14453 bump = invX * invX * 0.5 * strength; 14454 } else { 14455 invX = (1 - x) * 2; 14456 bump = invX * invX * 0.5 * strength; 14457 } 14458 14459 if (randomize) { 14460 y += Math.random() * bump - bump * 0.5; 14461 } else if (i % 2) { 14462 y += bump * 0.5; 14463 } else { 14464 y -= bump * 0.5; 14465 } 14466 14467 if (clamp) { 14468 if (y > 1) { 14469 y = 1; 14470 } else if (y < 0) { 14471 y = 0; 14472 } 14473 } 14474 14475 a[cnt++] = { 14476 x: x, 14477 y: y 14478 }; 14479 } 14480 14481 a.sort(function (a, b) { 14482 return a.x - b.x; 14483 }); 14484 pnt = new EasePoint(1, 1, null); 14485 i = points; 14486 14487 while (i--) { 14488 obj = a[i]; 14489 pnt = new EasePoint(obj.x, obj.y, pnt); 14490 } 14491 14492 recent = new EasePoint(0, 0, pnt.t ? pnt : pnt.next); 14493 return function (p) { 14494 var pnt = recent; 14495 14496 if (p > pnt.t) { 14497 while (pnt.next && p >= pnt.t) { 14498 pnt = pnt.next; 14499 } 14500 14501 pnt = pnt.prev; 14502 } else { 14503 while (pnt.prev && p <= pnt.t) { 14504 pnt = pnt.prev; 14505 } 14506 } 14507 14508 recent = pnt; 14509 return pnt.v + (p - pnt.t) / pnt.gap * pnt.c; 14510 }; 14511 }; 14512
vendor: 6,155 bytes, lines 14513-14649
14513 var SlowMo = _createSlowMo(0.7); 14514 SlowMo.ease = SlowMo; 14515 SlowMo.config = _createSlowMo; 14516 var ExpoScaleEase = _createExpoScale(1, 2); 14517 ExpoScaleEase.config = _createExpoScale; 14518 var RoughEase = _createRoughEase(); 14519 RoughEase.ease = RoughEase; 14520 RoughEase.config = _createRoughEase; 14521 var EasePack = { 14522 SlowMo: SlowMo, 14523 RoughEase: RoughEase, 14524 ExpoScaleEase: ExpoScaleEase 14525 }; 14526 14527 for (var p in EasePack) { 14528 EasePack[p].register = _initCore; 14529 EasePack[p].version = "3.7.0"; 14530 } 14531 14532 _getGSAP() && gsap.registerPlugin(SlowMo); 14533 14534 exports.EasePack = EasePack; 14535 exports.ExpoScaleEase = ExpoScaleEase; 14536 exports.RoughEase = RoughEase; 14537 exports.SlowMo = SlowMo; 14538 exports.default = EasePack; 14539 14540 Object.defineProperty(exports, '__esModule', { value: true }); 14541 14542}))); 14543 14544/*SIGUIENTE LIBRERIA*/ 14545/*! 14546 * EasePack 3.7.0 14547 * https://greensock.com 14548 * 14549 * @license Copyright 2021, GreenSock. All rights reserved. 14550 * Subject to the terms at https://greensock.com/standard-license or for Club GreenSock members, the agreement issued with that membership. 14551 * @author: Jack Doyle, [email protected] 14552 */ 14553 14554!function(e,n){"object"==typeof exports&&"undefined"!=typeof module?n(exports):"function"==typeof define&&define.amd?define(["exports"],n):n((e=e||self).window=e.window||{})}(this,function(e){"use strict";function f(){return w||"undefined"!=typeof window&&(w=window.gsap)&&w.registerPlugin&&w}function g(e,n){return!!(void 0===e?n:e&&!~(e+"").indexOf("false"))}function h(e){if(w=e||f()){r=w.registerEase;var n,t=w.parseEase(),o=function createConfig(t){return function(e){var n=.5+e/2;t.config=function(e){return t(2*(1-e)*e*n+e*e)}}};for(n in t)t[n].config||o(t[n]);for(n in r("slow",a),r("expoScale",s),r("rough",u),c)"version"!==n&&w.core.globals(n,c[n])}}function i(e,n,t){var o=(e=Math.min(1,e||.7))<1?n||0===n?n:.7:0,r=(1-e)/2,i=r+e,a=g(t);return function(e){var n=e+(.5-e)*o;return e<r?a?1-(e=1-e/r)*e:n-(e=1-e/r)*e*e*e*n:i<e?a?1===e?0:1-(e=(e-i)/r)*e:n+(e-n)*(e=(e-i)/r)*e*e*e:a?1:n}}function j(n,e,t){var o=Math.log(e/n),r=e-n;return t=t&&w.parseEase(t),function(e){return(n*Math.exp(o*(t?t(e):e))-n)/r}}function k(e,n,t){this.t=e,this.v=n,t&&(((this.next=t).prev=this).c=t.v-n,this.gap=t.t-e)}function l(e){"object"!=typeof e&&(e={points:+e||20});for(var n,t,o,r,i,a,f,s=e.taper||"none",u=[],c=0,p=0|(+e.points||20),l=p,v=g(e.randomize,!0),d=g(e.clamp),h=w?w.parseEase(e.template):0,x=.4*(+e.strength||1);-1<--l;)n=v?Math.random():1/p*l,t=h?h(n):n,o="none"===s?x:"out"===s?(r=1-n)*r*x:"in"===s?n*n*x:n<.5?(r=2*n)*r*.5*x:(r=2*(1-n))*r*.5*x,v?t+=Math.random()*o-.5*o:l%2?t+=.5*o:t-=.5*o,d&&(1<t?t=1:t<0&&(t=0)),u[c++]={x:n,y:t};for(u.sort(function(e,n){return e.x-n.x}),a=new k(1,1,null),l=p;l--;)i=u[l],a=new k(i.x,i.y,a);return f=new k(0,0,a.t?a:a.next),function(e){var n=f;if(e>n.t){for(;n.next&&e>=n.t;)n=n.next;n=n.prev}else for(;n.prev&&e<=n.t;)n=n.prev;return(f=n).v+(e-n.t)/n.gap*n.c}}var w,r,a=i(.7);(a.ease=a).config=i;var s=j(1,2);s.config=j;var u=l();(u.ease=u).config=l;var c={SlowMo:a,RoughEase:u,ExpoScaleEase:s};for(var n in c)c[n].register=h,c[n].version="3.7.0";f()&&w.registerPlugin(a),e.EasePack=c,e.ExpoScaleEase=s,e.RoughEase=u,e.SlowMo=a,e.default=c;if (typeof(window)==="undefined"||window!==e){Object.defineProperty(e,"__esModule",{value:!0})} else {delete e.default}}); 14555 14556 14557/*SIGUIENTE LIBRERIA*/ 14558(function (global, factory) { 14559 typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) : 14560 typeof define === 'function' && define.amd ? define(['exports'], factory) : 14561 (global = global || self, factory(global.window = global.window || {})); 14562}(this, (function (exports) { 'use strict'; 14563 14564 function _inheritsLoose(subClass, superClass) { 14565 subClass.prototype = Object.create(superClass.prototype); 14566 subClass.prototype.constructor = subClass; 14567 subClass.__proto__ = superClass; 14568 } 14569 14570 function _assertThisInitialized(self) { 14571 if (self === void 0) { 14572 throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); 14573 } 14574 14575 return self; 14576 } 14577 14578 /*! 14579 * GSAP 3.7.0 14580 * https://greensock.com 14581 * 14582 * @license Copyright 2008-2021, GreenSock. All rights reserved. 14583 * Subject to the terms at https://greensock.com/standard-license or for 14584 * Club GreenSock members, the agreement issued with that membership. 14585 * @author: Jack Doyle, [email protected] 14586 */ 14587 var _config = { 14588 autoSleep: 120, 14589 force3D: "auto", 14590 nullTargetWarn: 1, 14591 units: { 14592 lineHeight: "" 14593 } 14594 }, 14595 _defaults = { 14596 duration: .5, 14597 overwrite: false, 14598 delay: 0 14599 }, 14600 _suppressOverwrites, 14601 _bigNum = 1e8, 14602 _tinyNum = 1 / _bigNum, 14603 _2PI = Math.PI * 2, 14604 _HALF_PI = _2PI / 4, 14605 _gsID = 0, 14606 _sqrt = Math.sqrt, 14607 _cos = Math.cos, 14608 _sin = Math.sin, 14609 _isString = function _isString(value) { 14610 return typeof value === "string"; 14611 }, 14612 _isFunction = function _isFunction(value) { 14613 return typeof value === "function"; 14614 }, 14615 _isNumber = function _isNumber(value) { 14616 return typeof value === "number"; 14617 }, 14618 _isUndefined = function _isUndefined(value) { 14619 return typeof value === "undefined"; 14620 }, 14621 _isObject = function _isObject(value) { 14622 return typeof value === "object"; 14623 }, 14624 _isNotFalse = function _isNotFalse(value) { 14625 return value !== false; 14626 }, 14627 _windowExists = function _windowExists() { 14628 return typeof window !== "undefined"; 14629 }, 14630 _isFuncOrString = function _isFuncOrString(value) { 14631 return _isFunction(value) || _isString(value); 14632 }, 14633 _isTypedArray = typeof ArrayBuffer === "function" && ArrayBuffer.isView || function () {}, 14634 _isArray = Array.isArray, 14635 _strictNumExp = /(?:-?\.?\d|\.)+/gi, 14636 _numExp = /[-+=.]*\d+[.e\-+]*\d*[e\-+]*\d*/g, 14637 _numWithUnitExp = /[-+=.]*\d+[.e-]*\d*[a-z%]*/g, 14638 _complexStringNumExp = /[-+=.]*\d+\.?\d*(?:e-|e\+)?\d*/gi, 14639 _relExp = /[+-]=-?[.\d]+/, 14640 _delimitedValueExp = /[^,'"\[\]\s]+/gi, 14641 _unitExp = /[\d.+\-=]+(?:e[-+]\d*)*/i, 14642 _globalTimeline, 14643 _win, 14644 _coreInitted, 14645 _doc, 14646 _globals = {}, 14647 _installScope = {}, 14648 _coreReady, 14649 _install = function _install(scope) {
vendor: 22,701 bytes, lines 14650-15327
14650 return (_installScope = _merge(scope, _globals)) && gsap; 14651 }, 14652 _missingPlugin = function _missingPlugin(property, value) { 14653 return console.warn("Invalid property", property, "set to", value, "Missing plugin? gsap.registerPlugin()"); 14654 }, 14655 _warn = function _warn(message, suppress) { 14656 return !suppress && console.warn(message); 14657 }, 14658 _addGlobal = function _addGlobal(name, obj) { 14659 return name && (_globals[name] = obj) && _installScope && (_installScope[name] = obj) || _globals; 14660 }, 14661 _emptyFunc = function _emptyFunc() { 14662 return 0; 14663 }, 14664 _reservedProps = {}, 14665 _lazyTweens = [], 14666 _lazyLookup = {}, 14667 _lastRenderedFrame, 14668 _plugins = {}, 14669 _effects = {}, 14670 _nextGCFrame = 30, 14671 _harnessPlugins = [], 14672 _callbackNames = "", 14673 _harness = function _harness(targets) { 14674 var target = targets[0], 14675 harnessPlugin, 14676 i; 14677 _isObject(target) || _isFunction(target) || (targets = [targets]); 14678 14679 if (!(harnessPlugin = (target._gsap || {}).harness)) { 14680 i = _harnessPlugins.length; 14681 14682 while (i-- && !_harnessPlugins[i].targetTest(target)) {} 14683 14684 harnessPlugin = _harnessPlugins[i]; 14685 } 14686 14687 i = targets.length; 14688 14689 while (i--) { 14690 targets[i] && (targets[i]._gsap || (targets[i]._gsap = new GSCache(targets[i], harnessPlugin))) || targets.splice(i, 1); 14691 } 14692 14693 return targets; 14694 }, 14695 _getCache = function _getCache(target) { 14696 return target._gsap || _harness(toArray(target))[0]._gsap; 14697 }, 14698 _getProperty = function _getProperty(target, property, v) { 14699 return (v = target[property]) && _isFunction(v) ? target[property]() : _isUndefined(v) && target.getAttribute && target.getAttribute(property) || v; 14700 }, 14701 _forEachName = function _forEachName(names, func) { 14702 return (names = names.split(",")).forEach(func) || names; 14703 }, 14704 _round = function _round(value) { 14705 return Math.round(value * 100000) / 100000 || 0; 14706 }, 14707 _arrayContainsAny = function _arrayContainsAny(toSearch, toFind) { 14708 var l = toFind.length, 14709 i = 0; 14710 14711 for (; toSearch.indexOf(toFind[i]) < 0 && ++i < l;) {} 14712 14713 return i < l; 14714 }, 14715 _lazyRender = function _lazyRender() { 14716 var l = _lazyTweens.length, 14717 a = _lazyTweens.slice(0), 14718 i, 14719 tween; 14720 14721 _lazyLookup = {}; 14722 _lazyTweens.length = 0; 14723 14724 for (i = 0; i < l; i++) { 14725 tween = a[i]; 14726 tween && tween._lazy && (tween.render(tween._lazy[0], tween._lazy[1], true)._lazy = 0); 14727 } 14728 }, 14729 _lazySafeRender = function _lazySafeRender(animation, time, suppressEvents, force) { 14730 _lazyTweens.length && _lazyRender(); 14731 animation.render(time, suppressEvents, force); 14732 _lazyTweens.length && _lazyRender(); 14733 }, 14734 _numericIfPossible = function _numericIfPossible(value) { 14735 var n = parseFloat(value); 14736 return (n || n === 0) && (value + "").match(_delimitedValueExp).length < 2 ? n : _isString(value) ? value.trim() : value; 14737 }, 14738 _passThrough = function _passThrough(p) { 14739 return p; 14740 }, 14741 _setDefaults = function _setDefaults(obj, defaults) { 14742 for (var p in defaults) { 14743 p in obj || (obj[p] = defaults[p]); 14744 } 14745 14746 return obj; 14747 }, 14748 _setKeyframeDefaults = function _setKeyframeDefaults(obj, defaults) { 14749 for (var p in defaults) { 14750 p in obj || p === "duration" || p === "ease" || (obj[p] = defaults[p]); 14751 } 14752 }, 14753 _merge = function _merge(base, toMerge) { 14754 for (var p in toMerge) { 14755 base[p] = toMerge[p]; 14756 } 14757 14758 return base; 14759 }, 14760 _mergeDeep = function _mergeDeep(base, toMerge) { 14761 for (var p in toMerge) { 14762 p !== "__proto__" && p !== "constructor" && p !== "prototype" && (base[p] = _isObject(toMerge[p]) ? _mergeDeep(base[p] || (base[p] = {}), toMerge[p]) : toMerge[p]); 14763 } 14764 14765 return base; 14766 }, 14767 _copyExcluding = function _copyExcluding(obj, excluding) { 14768 var copy = {}, 14769 p; 14770 14771 for (p in obj) { 14772 p in excluding || (copy[p] = obj[p]); 14773 } 14774 14775 return copy; 14776 }, 14777 _inheritDefaults = function _inheritDefaults(vars) { 14778 var parent = vars.parent || _globalTimeline, 14779 func = vars.keyframes ? _setKeyframeDefaults : _setDefaults; 14780 14781 if (_isNotFalse(vars.inherit)) { 14782 while (parent) { 14783 func(vars, parent.vars.defaults); 14784 parent = parent.parent || parent._dp; 14785 } 14786 } 14787 14788 return vars; 14789 }, 14790 _arraysMatch = function _arraysMatch(a1, a2) { 14791 var i = a1.length, 14792 match = i === a2.length; 14793 14794 while (match && i-- && a1[i] === a2[i]) {} 14795 14796 return i < 0; 14797 }, 14798 _addLinkedListItem = function _addLinkedListItem(parent, child, firstProp, lastProp, sortBy) { 14799 if (firstProp === void 0) { 14800 firstProp = "_first"; 14801 } 14802 14803 if (lastProp === void 0) { 14804 lastProp = "_last"; 14805 } 14806 14807 var prev = parent[lastProp], 14808 t; 14809 14810 if (sortBy) { 14811 t = child[sortBy]; 14812 14813 while (prev && prev[sortBy] > t) { 14814 prev = prev._prev; 14815 } 14816 } 14817 14818 if (prev) { 14819 child._next = prev._next; 14820 prev._next = child; 14821 } else { 14822 child._next = parent[firstProp]; 14823 parent[firstProp] = child; 14824 } 14825 14826 if (child._next) { 14827 child._next._prev = child; 14828 } else { 14829 parent[lastProp] = child; 14830 } 14831 14832 child._prev = prev; 14833 child.parent = child._dp = parent; 14834 return child; 14835 }, 14836 _removeLinkedListItem = function _removeLinkedListItem(parent, child, firstProp, lastProp) { 14837 if (firstProp === void 0) { 14838 firstProp = "_first"; 14839 } 14840 14841 if (lastProp === void 0) { 14842 lastProp = "_last"; 14843 } 14844 14845 var prev = child._prev, 14846 next = child._next; 14847 14848 if (prev) { 14849 prev._next = next; 14850 } else if (parent[firstProp] === child) { 14851 parent[firstProp] = next; 14852 } 14853 14854 if (next) { 14855 next._prev = prev; 14856 } else if (parent[lastProp] === child) { 14857 parent[lastProp] = prev; 14858 } 14859 14860 child._next = child._prev = child.parent = null; 14861 }, 14862 _removeFromParent = function _removeFromParent(child, onlyIfParentHasAutoRemove) { 14863 child.parent && (!onlyIfParentHasAutoRemove || child.parent.autoRemoveChildren) && child.parent.remove(child); 14864 child._act = 0; 14865 }, 14866 _uncache = function _uncache(animation, child) { 14867 if (animation && (!child || child._end > animation._dur || child._start < 0)) { 14868 var a = animation; 14869 14870 while (a) { 14871 a._dirty = 1; 14872 a = a.parent; 14873 } 14874 } 14875 14876 return animation; 14877 }, 14878 _recacheAncestors = function _recacheAncestors(animation) { 14879 var parent = animation.parent; 14880 14881 while (parent && parent.parent) { 14882 parent._dirty = 1; 14883 parent.totalDuration(); 14884 parent = parent.parent; 14885 } 14886 14887 return animation; 14888 }, 14889 _hasNoPausedAncestors = function _hasNoPausedAncestors(animation) { 14890 return !animation || animation._ts && _hasNoPausedAncestors(animation.parent); 14891 }, 14892 _elapsedCycleDuration = function _elapsedCycleDuration(animation) { 14893 return animation._repeat ? _animationCycle(animation._tTime, animation = animation.duration() + animation._rDelay) * animation : 0; 14894 }, 14895 _animationCycle = function _animationCycle(tTime, cycleDuration) { 14896 var whole = Math.floor(tTime /= cycleDuration); 14897 return tTime && whole === tTime ? whole - 1 : whole; 14898 }, 14899 _parentToChildTotalTime = function _parentToChildTotalTime(parentTime, child) { 14900 return (parentTime - child._start) * child._ts + (child._ts >= 0 ? 0 : child._dirty ? child.totalDuration() : child._tDur); 14901 }, 14902 _setEnd = function _setEnd(animation) { 14903 return animation._end = _round(animation._start + (animation._tDur / Math.abs(animation._ts || animation._rts || _tinyNum) || 0)); 14904 }, 14905 _alignPlayhead = function _alignPlayhead(animation, totalTime) { 14906 var parent = animation._dp; 14907 14908 if (parent && parent.smoothChildTiming && animation._ts) { 14909 animation._start = _round(parent._time - (animation._ts > 0 ? totalTime / animation._ts : ((animation._dirty ? animation.totalDuration() : animation._tDur) - totalTime) / -animation._ts)); 14910 14911 _setEnd(animation); 14912 14913 parent._dirty || _uncache(parent, animation); 14914 } 14915 14916 return animation; 14917 }, 14918 _postAddChecks = function _postAddChecks(timeline, child) { 14919 var t; 14920 14921 if (child._time || child._initted && !child._dur) { 14922 t = _parentToChildTotalTime(timeline.rawTime(), child); 14923 14924 if (!child._dur || _clamp(0, child.totalDuration(), t) - child._tTime > _tinyNum) { 14925 child.render(t, true); 14926 } 14927 } 14928 14929 if (_uncache(timeline, child)._dp && timeline._initted && timeline._time >= timeline._dur && timeline._ts) { 14930 if (timeline._dur < timeline.duration()) { 14931 t = timeline; 14932 14933 while (t._dp) { 14934 t.rawTime() >= 0 && t.totalTime(t._tTime); 14935 t = t._dp; 14936 } 14937 } 14938 14939 timeline._zTime = -_tinyNum; 14940 } 14941 }, 14942 _addToTimeline = function _addToTimeline(timeline, child, position, skipChecks) { 14943 child.parent && _removeFromParent(child); 14944 child._start = _round((_isNumber(position) ? position : position || timeline !== _globalTimeline ? _parsePosition(timeline, position, child) : timeline._time) + child._delay); 14945 child._end = _round(child._start + (child.totalDuration() / Math.abs(child.timeScale()) || 0)); 14946 14947 _addLinkedListItem(timeline, child, "_first", "_last", timeline._sort ? "_start" : 0); 14948 14949 _isFromOrFromStart(child) || (timeline._recent = child); 14950 skipChecks || _postAddChecks(timeline, child); 14951 return timeline; 14952 }, 14953 _scrollTrigger = function _scrollTrigger(animation, trigger) { 14954 return (_globals.ScrollTrigger || _missingPlugin("scrollTrigger", trigger)) && _globals.ScrollTrigger.create(trigger, animation); 14955 }, 14956 _attemptInitTween = function _attemptInitTween(tween, totalTime, force, suppressEvents) { 14957 _initTween(tween, totalTime); 14958 14959 if (!tween._initted) { 14960 return 1; 14961 } 14962 14963 if (!force && tween._pt && (tween._dur && tween.vars.lazy !== false || !tween._dur && tween.vars.lazy) && _lastRenderedFrame !== _ticker.frame) { 14964 _lazyTweens.push(tween); 14965 14966 tween._lazy = [totalTime, suppressEvents]; 14967 return 1; 14968 } 14969 }, 14970 _parentPlayheadIsBeforeStart = function _parentPlayheadIsBeforeStart(_ref) { 14971 var parent = _ref.parent; 14972 return parent && parent._ts && parent._initted && !parent._lock && (parent.rawTime() < 0 || _parentPlayheadIsBeforeStart(parent)); 14973 }, 14974 _isFromOrFromStart = function _isFromOrFromStart(_ref2) { 14975 var data = _ref2.data; 14976 return data === "isFromStart" || data === "isStart"; 14977 }, 14978 _renderZeroDurationTween = function _renderZeroDurationTween(tween, totalTime, suppressEvents, force) { 14979 var prevRatio = tween.ratio, 14980 ratio = totalTime < 0 || !totalTime && (!tween._start && _parentPlayheadIsBeforeStart(tween) && !(!tween._initted && _isFromOrFromStart(tween)) || (tween._ts < 0 || tween._dp._ts < 0) && !_isFromOrFromStart(tween)) ? 0 : 1, 14981 repeatDelay = tween._rDelay, 14982 tTime = 0, 14983 pt, 14984 iteration, 14985 prevIteration; 14986 14987 if (repeatDelay && tween._repeat) { 14988 tTime = _clamp(0, tween._tDur, totalTime); 14989 iteration = _animationCycle(tTime, repeatDelay); 14990 prevIteration = _animationCycle(tween._tTime, repeatDelay); 14991 tween._yoyo && iteration & 1 && (ratio = 1 - ratio); 14992 14993 if (iteration !== prevIteration) { 14994 prevRatio = 1 - ratio; 14995 tween.vars.repeatRefresh && tween._initted && tween.invalidate(); 14996 } 14997 } 14998 14999 if (ratio !== prevRatio || force || tween._zTime === _tinyNum || !totalTime && tween._zTime) { 15000 if (!tween._initted && _attemptInitTween(tween, totalTime, force, suppressEvents)) { 15001 return; 15002 } 15003 15004 prevIteration = tween._zTime; 15005 tween._zTime = totalTime || (suppressEvents ? _tinyNum : 0); 15006 suppressEvents || (suppressEvents = totalTime && !prevIteration); 15007 tween.ratio = ratio; 15008 tween._from && (ratio = 1 - ratio); 15009 tween._time = 0; 15010 tween._tTime = tTime; 15011 pt = tween._pt; 15012 15013 while (pt) { 15014 pt.r(ratio, pt.d); 15015 pt = pt._next; 15016 } 15017 15018 tween._startAt && totalTime < 0 && tween._startAt.render(totalTime, true, true); 15019 tween._onUpdate && !suppressEvents && _callback(tween, "onUpdate"); 15020 tTime && tween._repeat && !suppressEvents && tween.parent && _callback(tween, "onRepeat"); 15021 15022 if ((totalTime >= tween._tDur || totalTime < 0) && tween.ratio === ratio) { 15023 ratio && _removeFromParent(tween, 1); 15024 15025 if (!suppressEvents) { 15026 _callback(tween, ratio ? "onComplete" : "onReverseComplete", true); 15027 15028 tween._prom && tween._prom(); 15029 } 15030 } 15031 } else if (!tween._zTime) { 15032 tween._zTime = totalTime; 15033 } 15034 }, 15035 _findNextPauseTween = function _findNextPauseTween(animation, prevTime, time) { 15036 var child; 15037 15038 if (time > prevTime) { 15039 child = animation._first; 15040 15041 while (child && child._start <= time) { 15042 if (!child._dur && child.data === "isPause" && child._start > prevTime) { 15043 return child; 15044 } 15045 15046 child = child._next; 15047 } 15048 } else { 15049 child = animation._last; 15050 15051 while (child && child._start >= time) { 15052 if (!child._dur && child.data === "isPause" && child._start < prevTime) { 15053 return child; 15054 } 15055 15056 child = child._prev; 15057 } 15058 } 15059 }, 15060 _setDuration = function _setDuration(animation, duration, skipUncache, leavePlayhead) { 15061 var repeat = animation._repeat, 15062 dur = _round(duration) || 0, 15063 totalProgress = animation._tTime / animation._tDur; 15064 totalProgress && !leavePlayhead && (animation._time *= dur / animation._dur); 15065 animation._dur = dur; 15066 animation._tDur = !repeat ? dur : repeat < 0 ? 1e10 : _round(dur * (repeat + 1) + animation._rDelay * repeat); 15067 totalProgress && !leavePlayhead ? _alignPlayhead(animation, animation._tTime = animation._tDur * totalProgress) : animation.parent && _setEnd(animation); 15068 skipUncache || _uncache(animation.parent, animation); 15069 return animation; 15070 }, 15071 _onUpdateTotalDuration = function _onUpdateTotalDuration(animation) { 15072 return animation instanceof Timeline ? _uncache(animation) : _setDuration(animation, animation._dur); 15073 }, 15074 _zeroPosition = { 15075 _start: 0, 15076 endTime: _emptyFunc, 15077 totalDuration: _emptyFunc 15078 }, 15079 _parsePosition = function _parsePosition(animation, position, percentAnimation) { 15080 var labels = animation.labels, 15081 recent = animation._recent || _zeroPosition, 15082 clippedDuration = animation.duration() >= _bigNum ? recent.endTime(false) : animation._dur, 15083 i, 15084 offset, 15085 isPercent; 15086 15087 if (_isString(position) && (isNaN(position) || position in labels)) { 15088 offset = position.charAt(0); 15089 isPercent = position.substr(-1) === "%"; 15090 i = position.indexOf("="); 15091 15092 if (offset === "<" || offset === ">") { 15093 i >= 0 && (position = position.replace(/=/, "")); 15094 return (offset === "<" ? recent._start : recent.endTime(recent._repeat >= 0)) + (parseFloat(position.substr(1)) || 0) * (isPercent ? (i < 0 ? recent : percentAnimation).totalDuration() / 100 : 1); 15095 } 15096 15097 if (i < 0) { 15098 position in labels || (labels[position] = clippedDuration); 15099 return labels[position]; 15100 } 15101 15102 offset = parseFloat(position.charAt(i - 1) + position.substr(i + 1)); 15103 15104 if (isPercent && percentAnimation) { 15105 offset = offset / 100 * (_isArray(percentAnimation) ? percentAnimation[0] : percentAnimation).totalDuration(); 15106 } 15107 15108 return i > 1 ? _parsePosition(animation, position.substr(0, i - 1), percentAnimation) + offset : clippedDuration + offset; 15109 } 15110 15111 return position == null ? clippedDuration : +position; 15112 }, 15113 _createTweenType = function _createTweenType(type, params, timeline) { 15114 var isLegacy = _isNumber(params[1]), 15115 varsIndex = (isLegacy ? 2 : 1) + (type < 2 ? 0 : 1), 15116 vars = params[varsIndex], 15117 irVars, 15118 parent; 15119 15120 isLegacy && (vars.duration = params[1]); 15121 vars.parent = timeline; 15122 15123 if (type) { 15124 irVars = vars; 15125 parent = timeline; 15126 15127 while (parent && !("immediateRender" in irVars)) { 15128 irVars = parent.vars.defaults || {}; 15129 parent = _isNotFalse(parent.vars.inherit) && parent.parent; 15130 } 15131 15132 vars.immediateRender = _isNotFalse(irVars.immediateRender); 15133 type < 2 ? vars.runBackwards = 1 : vars.startAt = params[varsIndex - 1]; 15134 } 15135 15136 return new Tween(params[0], vars, params[varsIndex + 1]); 15137 }, 15138 _conditionalReturn = function _conditionalReturn(value, func) { 15139 return value || value === 0 ? func(value) : func; 15140 }, 15141 _clamp = function _clamp(min, max, value) { 15142 return value < min ? min : value > max ? max : value; 15143 }, 15144 getUnit = function getUnit(value) { 15145 if (typeof value !== "string") { 15146 return ""; 15147 } 15148 15149 var v = _unitExp.exec(value); 15150 15151 return v ? value.substr(v.index + v[0].length) : ""; 15152 }, 15153 clamp = function clamp(min, max, value) { 15154 return _conditionalReturn(value, function (v) { 15155 return _clamp(min, max, v); 15156 }); 15157 }, 15158 _slice = [].slice, 15159 _isArrayLike = function _isArrayLike(value, nonEmpty) { 15160 return value && _isObject(value) && "length" in value && (!nonEmpty && !value.length || value.length - 1 in value && _isObject(value[0])) && !value.nodeType && value !== _win; 15161 }, 15162 _flatten = function _flatten(ar, leaveStrings, accumulator) { 15163 if (accumulator === void 0) { 15164 accumulator = []; 15165 } 15166 15167 return ar.forEach(function (value) { 15168 var _accumulator; 15169 15170 return _isString(value) && !leaveStrings || _isArrayLike(value, 1) ? (_accumulator = accumulator).push.apply(_accumulator, toArray(value)) : accumulator.push(value); 15171 }) || accumulator; 15172 }, 15173 toArray = function toArray(value, scope, leaveStrings) { 15174 return _isString(value) && !leaveStrings && (_coreInitted || !_wake()) ? _slice.call((scope || _doc).querySelectorAll(value), 0) : _isArray(value) ? _flatten(value, leaveStrings) : _isArrayLike(value) ? _slice.call(value, 0) : value ? [value] : []; 15175 }, 15176 selector = function selector(value) { 15177 value = toArray(value)[0] || _warn("Invalid scope") || {}; 15178 return function (v) { 15179 var el = value.current || value.nativeElement || value; 15180 return toArray(v, el.querySelectorAll ? el : el === value ? _warn("Invalid scope") || _doc.createElement("div") : value); 15181 }; 15182 }, 15183 shuffle = function shuffle(a) { 15184 return a.sort(function () { 15185 return .5 - Math.random(); 15186 }); 15187 }, 15188 distribute = function distribute(v) { 15189 if (_isFunction(v)) { 15190 return v; 15191 } 15192 15193 var vars = _isObject(v) ? v : { 15194 each: v 15195 }, 15196 ease = _parseEase(vars.ease), 15197 from = vars.from || 0, 15198 base = parseFloat(vars.base) || 0, 15199 cache = {}, 15200 isDecimal = from > 0 && from < 1, 15201 ratios = isNaN(from) || isDecimal, 15202 axis = vars.axis, 15203 ratioX = from, 15204 ratioY = from; 15205 15206 if (_isString(from)) { 15207 ratioX = ratioY = { 15208 center: .5, 15209 edges: .5, 15210 end: 1 15211 }[from] || 0; 15212 } else if (!isDecimal && ratios) { 15213 ratioX = from[0]; 15214 ratioY = from[1]; 15215 } 15216 15217 return function (i, target, a) { 15218 var l = (a || vars).length, 15219 distances = cache[l], 15220 originX, 15221 originY, 15222 x, 15223 y, 15224 d, 15225 j, 15226 max, 15227 min, 15228 wrapAt; 15229 15230 if (!distances) { 15231 wrapAt = vars.grid === "auto" ? 0 : (vars.grid || [1, _bigNum])[1]; 15232 15233 if (!wrapAt) { 15234 max = -_bigNum; 15235 15236 while (max < (max = a[wrapAt++].getBoundingClientRect().left) && wrapAt < l) {} 15237 15238 wrapAt--; 15239 } 15240 15241 distances = cache[l] = []; 15242 originX = ratios ? Math.min(wrapAt, l) * ratioX - .5 : from % wrapAt; 15243 originY = ratios ? l * ratioY / wrapAt - .5 : from / wrapAt | 0; 15244 max = 0; 15245 min = _bigNum; 15246 15247 for (j = 0; j < l; j++) { 15248 x = j % wrapAt - originX; 15249 y = originY - (j / wrapAt | 0); 15250 distances[j] = d = !axis ? _sqrt(x * x + y * y) : Math.abs(axis === "y" ? y : x); 15251 d > max && (max = d); 15252 d < min && (min = d); 15253 } 15254 15255 from === "random" && shuffle(distances); 15256 distances.max = max - min; 15257 distances.min = min; 15258 distances.v = l = (parseFloat(vars.amount) || parseFloat(vars.each) * (wrapAt > l ? l - 1 : !axis ? Math.max(wrapAt, l / wrapAt) : axis === "y" ? l / wrapAt : wrapAt) || 0) * (from === "edges" ? -1 : 1); 15259 distances.b = l < 0 ? base - l : base; 15260 distances.u = getUnit(vars.amount || vars.each) || 0; 15261 ease = ease && l < 0 ? _invertEase(ease) : ease; 15262 } 15263 15264 l = (distances[i] - distances.min) / distances.max || 0; 15265 return _round(distances.b + (ease ? ease(l) : l) * distances.v) + distances.u; 15266 }; 15267 }, 15268 _roundModifier = function _roundModifier(v) { 15269 var p = v < 1 ? Math.pow(10, (v + "").length - 2) : 1; 15270 return function (raw) { 15271 var n = Math.round(parseFloat(raw) / v) * v * p; 15272 return (n - n % 1) / p + (_isNumber(raw) ? 0 : getUnit(raw)); 15273 }; 15274 }, 15275 snap = function snap(snapTo, value) { 15276 var isArray = _isArray(snapTo), 15277 radius, 15278 is2D; 15279 15280 if (!isArray && _isObject(snapTo)) { 15281 radius = isArray = snapTo.radius || _bigNum; 15282 15283 if (snapTo.values) { 15284 snapTo = toArray(snapTo.values); 15285 15286 if (is2D = !_isNumber(snapTo[0])) { 15287 radius *= radius; 15288 } 15289 } else { 15290 snapTo = _roundModifier(snapTo.increment); 15291 } 15292 } 15293 15294 return _conditionalReturn(value, !isArray ? _roundModifier(snapTo) : _isFunction(snapTo) ? function (raw) { 15295 is2D = snapTo(raw); 15296 return Math.abs(is2D - raw) <= radius ? is2D : raw; 15297 } : function (raw) { 15298 var x = parseFloat(is2D ? raw.x : raw), 15299 y = parseFloat(is2D ? raw.y : 0), 15300 min = _bigNum, 15301 closest = 0, 15302 i = snapTo.length, 15303 dx, 15304 dy; 15305 15306 while (i--) { 15307 if (is2D) { 15308 dx = snapTo[i].x - x; 15309 dy = snapTo[i].y - y; 15310 dx = dx * dx + dy * dy; 15311 } else { 15312 dx = Math.abs(snapTo[i] - x); 15313 } 15314 15315 if (dx < min) { 15316 min = dx; 15317 closest = i; 15318 } 15319 } 15320 15321 closest = !radius || min <= radius ? snapTo[closest] : raw; 15322 return is2D || closest === raw || _isNumber(raw) ? closest : closest + getUnit(raw); 15323 }); 15324 }, 15325 random = function random(min, max, roundingIncrement, returnFunction) { 15326 return _conditionalReturn(_isArray(min) ? !max : roundingIncrement === true ? !!(roundingIncrement = 0) : !returnFunction, function () { 15327 return _isArray(min) ? min[~~(Math.random() * min.length)] : (roundingIncrement = roundingIncrement || 1e
vendor: 4,723 bytes, lines 15327-15483
15327-5) && (returnFunction = roundingIncrement < 1 ? Math.pow(10, (roundingIncrement + "").length - 2) : 1) && Math.floor(Math.round((min - roundingIncrement / 2 + Math.random() * (max - min + roundingIncrement * .99)) / roundingIncrement) * roundingIncrement * returnFunction) / returnFunction; 15328 }); 15329 }, 15330 pipe = function pipe() { 15331 for (var _len = arguments.length, functions = new Array(_len), _key = 0; _key < _len; _key++) { 15332 functions[_key] = arguments[_key]; 15333 } 15334 15335 return function (value) { 15336 return functions.reduce(function (v, f) { 15337 return f(v); 15338 }, value); 15339 }; 15340 }, 15341 unitize = function unitize(func, unit) { 15342 return function (value) { 15343 return func(parseFloat(value)) + (unit || getUnit(value)); 15344 }; 15345 }, 15346 normalize = function normalize(min, max, value) { 15347 return mapRange(min, max, 0, 1, value); 15348 }, 15349 _wrapArray = function _wrapArray(a, wrapper, value) { 15350 return _conditionalReturn(value, function (index) { 15351 return a[~~wrapper(index)]; 15352 }); 15353 }, 15354 wrap = function wrap(min, max, value) { 15355 var range = max - min; 15356 return _isArray(min) ? _wrapArray(min, wrap(0, min.length), max) : _conditionalReturn(value, function (value) { 15357 return (range + (value - min) % range) % range + min; 15358 }); 15359 }, 15360 wrapYoyo = function wrapYoyo(min, max, value) { 15361 var range = max - min, 15362 total = range * 2; 15363 return _isArray(min) ? _wrapArray(min, wrapYoyo(0, min.length - 1), max) : _conditionalReturn(value, function (value) { 15364 value = (total + (value - min) % total) % total || 0; 15365 return min + (value > range ? total - value : value); 15366 }); 15367 }, 15368 _replaceRandom = function _replaceRandom(value) { 15369 var prev = 0, 15370 s = "", 15371 i, 15372 nums, 15373 end, 15374 isArray; 15375 15376 while (~(i = value.indexOf("random(", prev))) { 15377 end = value.indexOf(")", i); 15378 isArray = value.charAt(i + 7) === "["; 15379 nums = value.substr(i + 7, end - i - 7).match(isArray ? _delimitedValueExp : _strictNumExp); 15380 s += value.substr(prev, i - prev) + random(isArray ? nums : +nums[0], isArray ? 0 : +nums[1], +nums[2] || 1e-5); 15381 prev = end + 1; 15382 } 15383 15384 return s + value.substr(prev, value.length - prev); 15385 }, 15386 mapRange = function mapRange(inMin, inMax, outMin, outMax, value) { 15387 var inRange = inMax - inMin, 15388 outRange = outMax - outMin; 15389 return _conditionalReturn(value, function (value) { 15390 return outMin + ((value - inMin) / inRange * outRange || 0); 15391 }); 15392 }, 15393 interpolate = function interpolate(start, end, progress, mutate) { 15394 var func = isNaN(start + end) ? 0 : function (p) { 15395 return (1 - p) * start + p * end; 15396 }; 15397 15398 if (!func) { 15399 var isString = _isString(start), 15400 master = {}, 15401 p, 15402 i, 15403 interpolators, 15404 l, 15405 il; 15406 15407 progress === true && (mutate = 1) && (progress = null); 15408 15409 if (isString) { 15410 start = { 15411 p: start 15412 }; 15413 end = { 15414 p: end 15415 }; 15416 } else if (_isArray(start) && !_isArray(end)) { 15417 interpolators = []; 15418 l = start.length; 15419 il = l - 2; 15420 15421 for (i = 1; i < l; i++) { 15422 interpolators.push(interpolate(start[i - 1], start[i])); 15423 } 15424 15425 l--; 15426 15427 func = function func(p) { 15428 p *= l; 15429 var i = Math.min(il, ~~p); 15430 return interpolators[i](p - i); 15431 }; 15432 15433 progress = end; 15434 } else if (!mutate) { 15435 start = _merge(_isArray(start) ? [] : {}, start); 15436 } 15437 15438 if (!interpolators) { 15439 for (p in end) { 15440 _addPropTween.call(master, start, p, "get", end[p]); 15441 } 15442 15443 func = function func(p) { 15444 return _renderPropTweens(p, master) || (isString ? start.p : start); 15445 }; 15446 } 15447 } 15448 15449 return _conditionalReturn(progress, func); 15450 }, 15451 _getLabelInDirection = function _getLabelInDirection(timeline, fromTime, backward) { 15452 var labels = timeline.labels, 15453 min = _bigNum, 15454 p, 15455 distance, 15456 label; 15457 15458 for (p in labels) { 15459 distance = labels[p] - fromTime; 15460 15461 if (distance < 0 === !!backward && distance && min > (distance = Math.abs(distance))) { 15462 label = p; 15463 min = distance; 15464 } 15465 } 15466 15467 return label; 15468 }, 15469 _callback = function _callback(animation, type, executeLazyFirst) { 15470 var v = animation.vars, 15471 callback = v[type], 15472 params, 15473 scope; 15474 15475 if (!callback) { 15476 return; 15477 } 15478 15479 params = v[type + "Params"]; 15480 scope = v.callbackScope || animation; 15481 executeLazyFirst && _lazyTweens.length && _lazyRender(); 15482 return params ? callback.apply(scope, params) : callback.call(scope); 15483 },
vendor: 7,655 bytes, lines 15484-15769
15484 _interrupt = function _interrupt(animation) { 15485 _removeFromParent(animation); 15486 15487 animation.scrollTrigger && animation.scrollTrigger.kill(false); 15488 animation.progress() < 1 && _callback(animation, "onInterrupt"); 15489 return animation; 15490 }, 15491 _quickTween, 15492 _createPlugin = function _createPlugin(config) { 15493 config = !config.name && config["default"] || config; 15494 15495 var name = config.name, 15496 isFunc = _isFunction(config), 15497 Plugin = name && !isFunc && config.init ? function () { 15498 this._props = []; 15499 } : config, 15500 instanceDefaults = { 15501 init: _emptyFunc, 15502 render: _renderPropTweens, 15503 add: _addPropTween, 15504 kill: _killPropTweensOf, 15505 modifier: _addPluginModifier, 15506 rawVars: 0 15507 }, 15508 statics = { 15509 targetTest: 0, 15510 get: 0, 15511 getSetter: _getSetter, 15512 aliases: {}, 15513 register: 0 15514 }; 15515 15516 _wake(); 15517 15518 if (config !== Plugin) { 15519 if (_plugins[name]) { 15520 return; 15521 } 15522 15523 _setDefaults(Plugin, _setDefaults(_copyExcluding(config, instanceDefaults), statics)); 15524 15525 _merge(Plugin.prototype, _merge(instanceDefaults, _copyExcluding(config, statics))); 15526 15527 _plugins[Plugin.prop = name] = Plugin; 15528 15529 if (config.targetTest) { 15530 _harnessPlugins.push(Plugin); 15531 15532 _reservedProps[name] = 1; 15533 } 15534 15535 name = (name === "css" ? "CSS" : name.charAt(0).toUpperCase() + name.substr(1)) + "Plugin"; 15536 } 15537 15538 _addGlobal(name, Plugin); 15539 15540 config.register && config.register(gsap, Plugin, PropTween); 15541 }, 15542 _255 = 255, 15543 _colorLookup = { 15544 aqua: [0, _255, _255], 15545 lime: [0, _255, 0], 15546 silver: [192, 192, 192], 15547 black: [0, 0, 0], 15548 maroon: [128, 0, 0], 15549 teal: [0, 128, 128], 15550 blue: [0, 0, _255], 15551 navy: [0, 0, 128], 15552 white: [_255, _255, _255], 15553 olive: [128, 128, 0], 15554 yellow: [_255, _255, 0], 15555 orange: [_255, 165, 0], 15556 gray: [128, 128, 128], 15557 purple: [128, 0, 128], 15558 green: [0, 128, 0], 15559 red: [_255, 0, 0], 15560 pink: [_255, 192, 203], 15561 cyan: [0, _255, _255], 15562 transparent: [_255, _255, _255, 0] 15563 }, 15564 _hue = function _hue(h, m1, m2) { 15565 h = h < 0 ? h + 1 : h > 1 ? h - 1 : h; 15566 return (h * 6 < 1 ? m1 + (m2 - m1) * h * 6 : h < .5 ? m2 : h * 3 < 2 ? m1 + (m2 - m1) * (2 / 3 - h) * 6 : m1) * _255 + .5 | 0; 15567 }, 15568 splitColor = function splitColor(v, toHSL, forceAlpha) { 15569 var a = !v ? _colorLookup.black : _isNumber(v) ? [v >> 16, v >> 8 & _255, v & _255] : 0, 15570 r, 15571 g, 15572 b, 15573 h, 15574 s, 15575 l, 15576 max, 15577 min, 15578 d, 15579 wasHSL; 15580 15581 if (!a) { 15582 if (v.substr(-1) === ",") { 15583 v = v.substr(0, v.length - 1); 15584 } 15585 15586 if (_colorLookup[v]) { 15587 a = _colorLookup[v]; 15588 } else if (v.charAt(0) === "#") { 15589 if (v.length < 6) { 15590 r = v.charAt(1); 15591 g = v.charAt(2); 15592 b = v.charAt(3); 15593 v = "#" + r + r + g + g + b + b + (v.length === 5 ? v.charAt(4) + v.charAt(4) : ""); 15594 } 15595 15596 if (v.length === 9) { 15597 a = parseInt(v.substr(1, 6), 16); 15598 return [a >> 16, a >> 8 & _255, a & _255, parseInt(v.substr(7), 16) / 255]; 15599 } 15600 15601 v = parseInt(v.substr(1), 16); 15602 a = [v >> 16, v >> 8 & _255, v & _255]; 15603 } else if (v.substr(0, 3) === "hsl") { 15604 a = wasHSL = v.match(_strictNumExp); 15605 15606 if (!toHSL) { 15607 h = +a[0] % 360 / 360; 15608 s = +a[1] / 100; 15609 l = +a[2] / 100; 15610 g = l <= .5 ? l * (s + 1) : l + s - l * s; 15611 r = l * 2 - g; 15612 a.length > 3 && (a[3] *= 1); 15613 a[0] = _hue(h + 1 / 3, r, g); 15614 a[1] = _hue(h, r, g); 15615 a[2] = _hue(h - 1 / 3, r, g); 15616 } else if (~v.indexOf("=")) { 15617 a = v.match(_numExp); 15618 forceAlpha && a.length < 4 && (a[3] = 1); 15619 return a; 15620 } 15621 } else { 15622 a = v.match(_strictNumExp) || _colorLookup.transparent; 15623 } 15624 15625 a = a.map(Number); 15626 } 15627 15628 if (toHSL && !wasHSL) { 15629 r = a[0] / _255; 15630 g = a[1] / _255; 15631 b = a[2] / _255; 15632 max = Math.max(r, g, b); 15633 min = Math.min(r, g, b); 15634 l = (max + min) / 2; 15635 15636 if (max === min) { 15637 h = s = 0; 15638 } else { 15639 d = max - min; 15640 s = l > 0.5 ? d / (2 - max - min) : d / (max + min); 15641 h = max === r ? (g - b) / d + (g < b ? 6 : 0) : max === g ? (b - r) / d + 2 : (r - g) / d + 4; 15642 h *= 60; 15643 } 15644 15645 a[0] = ~~(h + .5); 15646 a[1] = ~~(s * 100 + .5); 15647 a[2] = ~~(l * 100 + .5); 15648 } 15649 15650 forceAlpha && a.length < 4 && (a[3] = 1); 15651 return a; 15652 }, 15653 _colorOrderData = function _colorOrderData(v) { 15654 var values = [], 15655 c = [], 15656 i = -1; 15657 v.split(_colorExp).forEach(function (v) { 15658 var a = v.match(_numWithUnitExp) || []; 15659 values.push.apply(values, a); 15660 c.push(i += a.length + 1); 15661 }); 15662 values.c = c; 15663 return values; 15664 }, 15665 _formatColors = function _formatColors(s, toHSL, orderMatchData) { 15666 var result = "", 15667 colors = (s + result).match(_colorExp), 15668 type = toHSL ? "hsla(" : "rgba(", 15669 i = 0, 15670 c, 15671 shell, 15672 d, 15673 l; 15674 15675 if (!colors) { 15676 return s; 15677 } 15678 15679 colors = colors.map(function (color) { 15680 return (color = splitColor(color, toHSL, 1)) && type + (toHSL ? color[0] + "," + color[1] + "%," + color[2] + "%," + color[3] : color.join(",")) + ")"; 15681 }); 15682 15683 if (orderMatchData) { 15684 d = _colorOrderData(s); 15685 c = orderMatchData.c; 15686 15687 if (c.join(result) !== d.c.join(result)) { 15688 shell = s.replace(_colorExp, "1").split(_numWithUnitExp); 15689 l = shell.length - 1; 15690 15691 for (; i < l; i++) { 15692 result += shell[i] + (~c.indexOf(i) ? colors.shift() || type + "0,0,0,0)" : (d.length ? d : colors.length ? colors : orderMatchData).shift()); 15693 } 15694 } 15695 } 15696 15697 if (!shell) { 15698 shell = s.split(_colorExp); 15699 l = shell.length - 1; 15700 15701 for (; i < l; i++) { 15702 result += shell[i] + colors[i]; 15703 } 15704 } 15705 15706 return result + shell[l]; 15707 }, 15708 _colorExp = function () { 15709 var s = "(?:\\b(?:(?:rgb|rgba|hsl|hsla)\\(.+?\\))|\\B#(?:[0-9a-f]{3,4}){1,2}\\b", 15710 p; 15711 15712 for (p in _colorLookup) { 15713 s += "|" + p + "\\b"; 15714 } 15715 15716 return new RegExp(s + ")", "gi"); 15717 }(), 15718 _hslExp = /hsl[a]?\(/, 15719 _colorStringFilter = function _colorStringFilter(a) { 15720 var combined = a.join(" "), 15721 toHSL; 15722 _colorExp.lastIndex = 0; 15723 15724 if (_colorExp.test(combined)) { 15725 toHSL = _hslExp.test(combined); 15726 a[1] = _formatColors(a[1], toHSL); 15727 a[0] = _formatColors(a[0], toHSL, _colorOrderData(a[1])); 15728 return true; 15729 } 15730 }, 15731 _tickerActive, 15732 _ticker = function () { 15733 var _getTime = Date.now, 15734 _lagThreshold = 500, 15735 _adjustedLag = 33, 15736 _startTime = _getTime(), 15737 _lastUpdate = _startTime, 15738 _gap = 1000 / 240, 15739 _nextTime = _gap, 15740 _listeners = [], 15741 _id, 15742 _req, 15743 _raf, 15744 _self, 15745 _delta, 15746 _i, 15747 _tick = function _tick(v) { 15748 var elapsed = _getTime() - _lastUpdate, 15749 manual = v === true, 15750 overlap, 15751 dispatch, 15752 time, 15753 frame; 15754 15755 elapsed > _lagThreshold && (_startTime += elapsed - _adjustedLag); 15756 _lastUpdate += elapsed; 15757 time = _lastUpdate - _startTime; 15758 overlap = time - _nextTime; 15759 15760 if (overlap > 0 || manual) { 15761 frame = ++_self.frame; 15762 _delta = time - _self.time * 1000; 15763 _self.time = time = time / 1000; 15764 _nextTime += overlap + (overlap >= _gap ? 4 : _gap - overlap); 15765 dispatch = 1; 15766 } 15767 15768 manual || (_id = _req(_tick)); 15769
vendor: 4,054 bytes, lines 15770-15897
15770 if (dispatch) { 15771 for (_i = 0; _i < _listeners.length; _i++) { 15772 _listeners[_i](time, _delta, frame, v); 15773 } 15774 } 15775 }; 15776 15777 _self = { 15778 time: 0, 15779 frame: 0, 15780 tick: function tick() { 15781 _tick(true); 15782 }, 15783 deltaRatio: function deltaRatio(fps) { 15784 return _delta / (1000 / (fps || 60)); 15785 }, 15786 wake: function wake() { 15787 if (_coreReady) { 15788 if (!_coreInitted && _windowExists()) { 15789 _win = _coreInitted = window; 15790 _doc = _win.document || {}; 15791 _globals.gsap = gsap; 15792 (_win.gsapVersions || (_win.gsapVersions = [])).push(gsap.version); 15793 15794 _install(_installScope || _win.GreenSockGlobals || !_win.gsap && _win || {}); 15795 15796 _raf = _win.requestAnimationFrame; 15797 } 15798 15799 _id && _self.sleep(); 15800 15801 _req = _raf || function (f) { 15802 return setTimeout(f, _nextTime - _self.time * 1000 + 1 | 0); 15803 }; 15804 15805 _tickerActive = 1; 15806 15807 _tick(2); 15808 } 15809 }, 15810 sleep: function sleep() { 15811 (_raf ? _win.cancelAnimationFrame : clearTimeout)(_id); 15812 _tickerActive = 0; 15813 _req = _emptyFunc; 15814 }, 15815 lagSmoothing: function lagSmoothing(threshold, adjustedLag) { 15816 _lagThreshold = threshold || 1 / _tinyNum; 15817 _adjustedLag = Math.min(adjustedLag, _lagThreshold, 0); 15818 }, 15819 fps: function fps(_fps) { 15820 _gap = 1000 / (_fps || 240); 15821 _nextTime = _self.time * 1000 + _gap; 15822 }, 15823 add: function add(callback) { 15824 _listeners.indexOf(callback) < 0 && _listeners.push(callback); 15825 15826 _wake(); 15827 }, 15828 remove: function remove(callback) { 15829 var i; 15830 ~(i = _listeners.indexOf(callback)) && _listeners.splice(i, 1) && _i >= i && _i--; 15831 }, 15832 _listeners: _listeners 15833 }; 15834 return _self; 15835 }(), 15836 _wake = function _wake() { 15837 return !_tickerActive && _ticker.wake(); 15838 }, 15839 _easeMap = {}, 15840 _customEaseExp = /^[\d.\-M][\d.\-,\s]/, 15841 _quotesExp = /["']/g, 15842 _parseObjectInString = function _parseObjectInString(value) { 15843 var obj = {}, 15844 split = value.substr(1, value.length - 3).split(":"), 15845 key = split[0], 15846 i = 1, 15847 l = split.length, 15848 index, 15849 val, 15850 parsedVal; 15851 15852 for (; i < l; i++) { 15853 val = split[i]; 15854 index = i !== l - 1 ? val.lastIndexOf(",") : val.length; 15855 parsedVal = val.substr(0, index); 15856 obj[key] = isNaN(parsedVal) ? parsedVal.replace(_quotesExp, "").trim() : +parsedVal; 15857 key = val.substr(index + 1).trim(); 15858 } 15859 15860 return obj; 15861 }, 15862 _valueInParentheses = function _valueInParentheses(value) { 15863 var open = value.indexOf("(") + 1, 15864 close = value.indexOf(")"), 15865 nested = value.indexOf("(", open); 15866 return value.substring(open, ~nested && nested < close ? value.indexOf(")", close + 1) : close); 15867 }, 15868 _configEaseFromString = function _configEaseFromString(name) { 15869 var split = (name + "").split("("), 15870 ease = _easeMap[split[0]]; 15871 return ease && split.length > 1 && ease.config ? ease.config.apply(null, ~name.indexOf("{") ? [_parseObjectInString(split[1])] : _valueInParentheses(name).split(",").map(_numericIfPossible)) : _easeMap._CE && _customEaseExp.test(name) ? _easeMap._CE("", name) : ease; 15872 }, 15873 _invertEase = function _invertEase(ease) { 15874 return function (p) { 15875 return 1 - ease(1 - p); 15876 }; 15877 }, 15878 _propagateYoyoEase = function _propagateYoyoEase(timeline, isYoyo) { 15879 var child = timeline._first, 15880 ease; 15881 15882 while (child) { 15883 if (child instanceof Timeline) { 15884 _propagateYoyoEase(child, isYoyo); 15885 } else if (child.vars.yoyoEase && (!child._yoyo || !child._repeat) && child._yoyo !== isYoyo) { 15886 if (child.timeline) { 15887 _propagateYoyoEase(child.timeline, isYoyo); 15888 } else { 15889 ease = child._ease; 15890 child._ease = child._yEase; 15891 child._yEase = ease; 15892 child._yoyo = isYoyo; 15893 } 15894 } 15895 15896 child = child._next; 15897 }
vendor: 3,445 bytes, lines 15897-16008
15897 15898 }, 15899 _parseEase = function _parseEase(ease, defaultEase) { 15900 return !ease ? defaultEase : (_isFunction(ease) ? ease : _easeMap[ease] || _configEaseFromString(ease)) || defaultEase; 15901 }, 15902 _insertEase = function _insertEase(names, easeIn, easeOut, easeInOut) { 15903 if (easeOut === void 0) { 15904 easeOut = function easeOut(p) { 15905 return 1 - easeIn(1 - p); 15906 }; 15907 } 15908 15909 if (easeInOut === void 0) { 15910 easeInOut = function easeInOut(p) { 15911 return p < .5 ? easeIn(p * 2) / 2 : 1 - easeIn((1 - p) * 2) / 2; 15912 }; 15913 } 15914 15915 var ease = { 15916 easeIn: easeIn, 15917 easeOut: easeOut, 15918 easeInOut: easeInOut 15919 }, 15920 lowercaseName; 15921 15922 _forEachName(names, function (name) { 15923 _easeMap[name] = _globals[name] = ease; 15924 _easeMap[lowercaseName = name.toLowerCase()] = easeOut; 15925 15926 for (var p in ease) { 15927 _easeMap[lowercaseName + (p === "easeIn" ? ".in" : p === "easeOut" ? ".out" : ".inOut")] = _easeMap[name + "." + p] = ease[p]; 15928 } 15929 }); 15930 15931 return ease; 15932 }, 15933 _easeInOutFromOut = function _easeInOutFromOut(easeOut) { 15934 return function (p) { 15935 return p < .5 ? (1 - easeOut(1 - p * 2)) / 2 : .5 + easeOut((p - .5) * 2) / 2; 15936 }; 15937 }, 15938 _configElastic = function _configElastic(type, amplitude, period) { 15939 var p1 = amplitude >= 1 ? amplitude : 1, 15940 p2 = (period || (type ? .3 : .45)) / (amplitude < 1 ? amplitude : 1), 15941 p3 = p2 / _2PI * (Math.asin(1 / p1) || 0), 15942 easeOut = function easeOut(p) { 15943 return p === 1 ? 1 : p1 * Math.pow(2, -10 * p) * _sin((p - p3) * p2) + 1; 15944 }, 15945 ease = type === "out" ? easeOut : type === "in" ? function (p) { 15946 return 1 - easeOut(1 - p); 15947 } : _easeInOutFromOut(easeOut); 15948 15949 p2 = _2PI / p2; 15950 15951 ease.config = function (amplitude, period) { 15952 return _configElastic(type, amplitude, period); 15953 }; 15954 15955 return ease; 15956 }, 15957 _configBack = function _configBack(type, overshoot) { 15958 if (overshoot === void 0) { 15959 overshoot = 1.70158; 15960 } 15961 15962 var easeOut = function easeOut(p) { 15963 return p ? --p * p * ((overshoot + 1) * p + overshoot) + 1 : 0; 15964 }, 15965 ease = type === "out" ? easeOut : type === "in" ? function (p) { 15966 return 1 - easeOut(1 - p); 15967 } : _easeInOutFromOut(easeOut); 15968 15969 ease.config = function (overshoot) { 15970 return _configBack(type, overshoot); 15971 }; 15972 15973 return ease; 15974 }; 15975 15976 _forEachName("Linear,Quad,Cubic,Quart,Quint,Strong", function (name, i) { 15977 var power = i < 5 ? i + 1 : i; 15978 15979 _insertEase(name + ",Power" + (power - 1), i ? function (p) { 15980 return Math.pow(p, power); 15981 } : function (p) { 15982 return p; 15983 }, function (p) { 15984 return 1 - Math.pow(1 - p, power); 15985 }, function (p) { 15986 return p < .5 ? Math.pow(p * 2, power) / 2 : 1 - Math.pow((1 - p) * 2, power) / 2; 15987 }); 15988 }); 15989 15990 _easeMap.Linear.easeNone = _easeMap.none = _easeMap.Linear.easeIn; 15991 15992 _insertEase("Elastic", _configElastic("in"), _configElastic("out"), _configElastic()); 15993 15994 (function (n, c) { 15995 var n1 = 1 / c, 15996 n2 = 2 * n1, 15997 n3 = 2.5 * n1, 15998 easeOut = function easeOut(p) { 15999 return p < n1 ? n * p * p : p < n2 ? n * Math.pow(p - 1.5 / c, 2) + .75 : p < n3 ? n * (p -= 2.25 / c) * p + .9375 : n * Math.pow(p - 2.625 / c, 2) + .984375; 16000 }; 16001 16002 _insertEase("Bounce", function (p) { 16003 return 1 - easeOut(1 - p); 16004 }, easeOut); 16005 })(7.5625, 2.75); 16006 16007 _insertEase("Expo", function (p) { 16008 return
vendor: 6,155 bytes, lines 16008-16187
16008p ? Math.pow(2, 10 * (p - 1)) : 0; 16009 }); 16010 16011 _insertEase("Circ", function (p) { 16012 return -(_sqrt(1 - p * p) - 1); 16013 }); 16014 16015 _insertEase("Sine", function (p) { 16016 return p === 1 ? 1 : -_cos(p * _HALF_PI) + 1; 16017 }); 16018 16019 _insertEase("Back", _configBack("in"), _configBack("out"), _configBack()); 16020 16021 _easeMap.SteppedEase = _easeMap.steps = _globals.SteppedEase = { 16022 config: function config(steps, immediateStart) { 16023 if (steps === void 0) { 16024 steps = 1; 16025 } 16026 16027 var p1 = 1 / steps, 16028 p2 = steps + (immediateStart ? 0 : 1), 16029 p3 = immediateStart ? 1 : 0, 16030 max = 1 - _tinyNum; 16031 return function (p) { 16032 return ((p2 * _clamp(0, max, p) | 0) + p3) * p1; 16033 }; 16034 } 16035 }; 16036 _defaults.ease = _easeMap["quad.out"]; 16037 16038 _forEachName("onComplete,onUpdate,onStart,onRepeat,onReverseComplete,onInterrupt", function (name) { 16039 return _callbackNames += name + "," + name + "Params,"; 16040 }); 16041 16042 var GSCache = function GSCache(target, harness) { 16043 this.id = _gsID++; 16044 target._gsap = this; 16045 this.target = target; 16046 this.harness = harness; 16047 this.get = harness ? harness.get : _getProperty; 16048 this.set = harness ? harness.getSetter : _getSetter; 16049 }; 16050 var Animation = function () { 16051 function Animation(vars) { 16052 this.vars = vars; 16053 this._delay = +vars.delay || 0; 16054 16055 if (this._repeat = vars.repeat === Infinity ? -2 : vars.repeat || 0) { 16056 this._rDelay = vars.repeatDelay || 0; 16057 this._yoyo = !!vars.yoyo || !!vars.yoyoEase; 16058 } 16059 16060 this._ts = 1; 16061 16062 _setDuration(this, +vars.duration, 1, 1); 16063 16064 this.data = vars.data; 16065 _tickerActive || _ticker.wake(); 16066 } 16067 16068 var _proto = Animation.prototype; 16069 16070 _proto.delay = function delay(value) { 16071 if (value || value === 0) { 16072 this.parent && this.parent.smoothChildTiming && this.startTime(this._start + value - this._delay); 16073 this._delay = value; 16074 return this; 16075 } 16076 16077 return this._delay; 16078 }; 16079 16080 _proto.duration = function duration(value) { 16081 return arguments.length ? this.totalDuration(this._repeat > 0 ? value + (value + this._rDelay) * this._repeat : value) : this.totalDuration() && this._dur; 16082 }; 16083 16084 _proto.totalDuration = function totalDuration(value) { 16085 if (!arguments.length) { 16086 return this._tDur; 16087 } 16088 16089 this._dirty = 0; 16090 return _setDuration(this, this._repeat < 0 ? value : (value - this._repeat * this._rDelay) / (this._repeat + 1)); 16091 }; 16092 16093 _proto.totalTime = function totalTime(_totalTime, suppressEvents) { 16094 _wake(); 16095 16096 if (!arguments.length) { 16097 return this._tTime; 16098 } 16099 16100 var parent = this._dp; 16101 16102 if (parent && parent.smoothChildTiming && this._ts) { 16103 _alignPlayhead(this, _totalTime); 16104 16105 !parent._dp || parent.parent || _postAddChecks(parent, this); 16106 16107 while (parent.parent) { 16108 if (parent.parent._time !== parent._start + (parent._ts >= 0 ? parent._tTime / parent._ts : (parent.totalDuration() - parent._tTime) / -parent._ts)) { 16109 parent.totalTime(parent._tTime, true); 16110 } 16111 16112 parent = parent.parent; 16113 } 16114 16115 if (!this.parent && this._dp.autoRemoveChildren && (this._ts > 0 && _totalTime < this._tDur || this._ts < 0 && _totalTime > 0 || !this._tDur && !_totalTime)) { 16116 _addToTimeline(this._dp, this, this._start - this._delay); 16117 } 16118 } 16119 16120 if (this._tTime !== _totalTime || !this._dur && !suppressEvents || this._initted && Math.abs(this._zTime) === _tinyNum || !_totalTime && !this._initted && (this.add || this._ptLookup)) { 16121 this._ts || (this._pTime = _totalTime); 16122 16123 _lazySafeRender(this, _totalTime, suppressEvents); 16124 } 16125 16126 return this; 16127 }; 16128 16129 _proto.time = function time(value, suppressEvents) { 16130 return arguments.length ? this.totalTime(Math.min(this.totalDuration(), value + _elapsedCycleDuration(this)) % this._dur || (value ? this._dur : 0), suppressEvents) : this._time; 16131 }; 16132 16133 _proto.totalProgress = function totalProgress(value, suppressEvents) { 16134 return arguments.length ? this.totalTime(this.totalDuration() * value, suppressEvents) : this.totalDuration() ? Math.min(1, this._tTime / this._tDur) : this.ratio; 16135 }; 16136 16137 _proto.progress = function progress(value, suppressEvents) { 16138 return arguments.length ? this.totalTime(this.duration() * (this._yoyo && !(this.iteration() & 1) ? 1 - value : value) + _elapsedCycleDuration(this), suppressEvents) : this.duration() ? Math.min(1, this._time / this._dur) : this.ratio; 16139 }; 16140 16141 _proto.iteration = function iteration(value, suppressEvents) { 16142 var cycleDuration = this.duration() + this._rDelay; 16143 16144 return arguments.length ? this.totalTime(this._time + (value - 1) * cycleDuration, suppressEvents) : this._repeat ? _animationCycle(this._tTime, cycleDuration) + 1 : 1; 16145 }; 16146 16147 _proto.timeScale = function timeScale(value) { 16148 if (!arguments.length) { 16149 return this._rts === -_tinyNum ? 0 : this._rts; 16150 } 16151 16152 if (this._rts === value) { 16153 return this; 16154 } 16155 16156 var tTime = this.parent && this._ts ? _parentToChildTotalTime(this.parent._time, this) : this._tTime; 16157 this._rts = +value || 0; 16158 this._ts = this._ps || value === -_tinyNum ? 0 : this._rts; 16159 return _recacheAncestors(this.totalTime(_clamp(-this._delay, this._tDur, tTime), true)); 16160 }; 16161 16162 _proto.paused = function paused(value) { 16163 if (!arguments.length) { 16164 return this._ps; 16165 } 16166 16167 if (this._ps !== value) { 16168 this._ps = value; 16169 16170 if (value) { 16171 this._pTime = this._tTime || Math.max(-this._delay, this.rawTime()); 16172 this._ts = this._act = 0; 16173 } else { 16174 _wake(); 16175 16176 this._ts = this._rts; 16177 this.totalTime(this.parent && !this.parent.smoothChildTiming ? this.rawTime() : this._tTime || this._pTime, this.progress() === 1 && (this._tTime -= _tinyNum) && Math.abs(this._zTime) !== _tinyNum); 16178 } 16179 } 16180 16181 return this; 16182 }; 16183 16184 _proto.startTime = function startTime(value) { 16185 if (arguments.length) { 16186 this._start = value; 16187 var parent = this.parent || this._dp;
vendor: 2,817 bytes, lines 16188-16278
16188 parent && (parent._sort || !this.parent) && _addToTimeline(parent, this, value - this._delay); 16189 return this; 16190 } 16191 16192 return this._start; 16193 }; 16194 16195 _proto.endTime = function endTime(includeRepeats) { 16196 return this._start + (_isNotFalse(includeRepeats) ? this.totalDuration() : this.duration()) / Math.abs(this._ts); 16197 }; 16198 16199 _proto.rawTime = function rawTime(wrapRepeats) { 16200 var parent = this.parent || this._dp; 16201 return !parent ? this._tTime : wrapRepeats && (!this._ts || this._repeat && this._time && this.totalProgress() < 1) ? this._tTime % (this._dur + this._rDelay) : !this._ts ? this._tTime : _parentToChildTotalTime(parent.rawTime(wrapRepeats), this); 16202 }; 16203 16204 _proto.globalTime = function globalTime(rawTime) { 16205 var animation = this, 16206 time = arguments.length ? rawTime : animation.rawTime(); 16207 16208 while (animation) { 16209 time = animation._start + time / (animation._ts || 1); 16210 animation = animation._dp; 16211 } 16212 16213 return time; 16214 }; 16215 16216 _proto.repeat = function repeat(value) { 16217 if (arguments.length) { 16218 this._repeat = value === Infinity ? -2 : value; 16219 return _onUpdateTotalDuration(this); 16220 } 16221 16222 return this._repeat === -2 ? Infinity : this._repeat; 16223 }; 16224 16225 _proto.repeatDelay = function repeatDelay(value) { 16226 if (arguments.length) { 16227 this._rDelay = value; 16228 return _onUpdateTotalDuration(this); 16229 } 16230 16231 return this._rDelay; 16232 }; 16233 16234 _proto.yoyo = function yoyo(value) { 16235 if (arguments.length) { 16236 this._yoyo = value; 16237 return this; 16238 } 16239 16240 return this._yoyo; 16241 }; 16242 16243 _proto.seek = function seek(position, suppressEvents) { 16244 return this.totalTime(_parsePosition(this, position), _isNotFalse(suppressEvents)); 16245 }; 16246 16247 _proto.restart = function restart(includeDelay, suppressEvents) { 16248 return this.play().totalTime(includeDelay ? -this._delay : 0, _isNotFalse(suppressEvents)); 16249 }; 16250 16251 _proto.play = function play(from, suppressEvents) { 16252 from != null && this.seek(from, suppressEvents); 16253 return this.reversed(false).paused(false); 16254 }; 16255 16256 _proto.reverse = function reverse(from, suppressEvents) { 16257 from != null && this.seek(from || this.totalDuration(), suppressEvents); 16258 return this.reversed(true).paused(false); 16259 }; 16260 16261 _proto.pause = function pause(atTime, suppressEvents) { 16262 atTime != null && this.seek(atTime, suppressEvents); 16263 return this.paused(true); 16264 }; 16265 16266 _proto.resume = function resume() { 16267 return this.paused(false); 16268 }; 16269 16270 _proto.reversed = function reversed(value) { 16271 if (arguments.length) { 16272 !!value !== this.reversed() && this.timeScale(-this._rts || (value ? -_tinyNum : 0)); 16273 return this; 16274 } 16275 16276 return this._rts < 0; 16277 }; 16278
vendor: 8,548 bytes, lines 16279-16549
16279 _proto.invalidate = function invalidate() { 16280 this._initted = this._act = 0; 16281 this._zTime = -_tinyNum; 16282 return this; 16283 }; 16284 16285 _proto.isActive = function isActive() { 16286 var parent = this.parent || this._dp, 16287 start = this._start, 16288 rawTime; 16289 return !!(!parent || this._ts && this._initted && parent.isActive() && (rawTime = parent.rawTime(true)) >= start && rawTime < this.endTime(true) - _tinyNum); 16290 }; 16291 16292 _proto.eventCallback = function eventCallback(type, callback, params) { 16293 var vars = this.vars; 16294 16295 if (arguments.length > 1) { 16296 if (!callback) { 16297 delete vars[type]; 16298 } else { 16299 vars[type] = callback; 16300 params && (vars[type + "Params"] = params); 16301 type === "onUpdate" && (this._onUpdate = callback); 16302 } 16303 16304 return this; 16305 } 16306 16307 return vars[type]; 16308 }; 16309 16310 _proto.then = function then(onFulfilled) { 16311 var self = this; 16312 return new Promise(function (resolve) { 16313 var f = _isFunction(onFulfilled) ? onFulfilled : _passThrough, 16314 _resolve = function _resolve() { 16315 var _then = self.then; 16316 self.then = null; 16317 _isFunction(f) && (f = f(self)) && (f.then || f === self) && (self.then = _then); 16318 resolve(f); 16319 self.then = _then; 16320 }; 16321 16322 if (self._initted && self.totalProgress() === 1 && self._ts >= 0 || !self._tTime && self._ts < 0) { 16323 _resolve(); 16324 } else { 16325 self._prom = _resolve; 16326 } 16327 }); 16328 }; 16329 16330 _proto.kill = function kill() { 16331 _interrupt(this); 16332 }; 16333 16334 return Animation; 16335 }(); 16336 16337 _setDefaults(Animation.prototype, { 16338 _time: 0, 16339 _start: 0, 16340 _end: 0, 16341 _tTime: 0, 16342 _tDur: 0, 16343 _dirty: 0, 16344 _repeat: 0, 16345 _yoyo: false, 16346 parent: null, 16347 _initted: false, 16348 _rDelay: 0, 16349 _ts: 1, 16350 _dp: 0, 16351 ratio: 0, 16352 _zTime: -_tinyNum, 16353 _prom: 0, 16354 _ps: false, 16355 _rts: 1 16356 }); 16357 16358 var Timeline = function (_Animation) { 16359 _inheritsLoose(Timeline, _Animation); 16360 16361 function Timeline(vars, position) { 16362 var _this; 16363 16364 if (vars === void 0) { 16365 vars = {}; 16366 } 16367 16368 _this = _Animation.call(this, vars) || this; 16369 _this.labels = {}; 16370 _this.smoothChildTiming = !!vars.smoothChildTiming; 16371 _this.autoRemoveChildren = !!vars.autoRemoveChildren; 16372 _this._sort = _isNotFalse(vars.sortChildren); 16373 _globalTimeline && _addToTimeline(vars.parent || _globalTimeline, _assertThisInitialized(_this), position); 16374 vars.reversed && _this.reverse(); 16375 vars.paused && _this.paused(true); 16376 vars.scrollTrigger && _scrollTrigger(_assertThisInitialized(_this), vars.scrollTrigger); 16377 return _this; 16378 } 16379 16380 var _proto2 = Timeline.prototype; 16381 16382 _proto2.to = function to(targets, vars, position) { 16383 _createTweenType(0, arguments, this); 16384 16385 return this; 16386 }; 16387 16388 _proto2.from = function from(targets, vars, position) { 16389 _createTweenType(1, arguments, this); 16390 16391 return this; 16392 }; 16393 16394 _proto2.fromTo = function fromTo(targets, fromVars, toVars, position) { 16395 _createTweenType(2, arguments, this); 16396 16397 return this; 16398 }; 16399 16400 _proto2.set = function set(targets, vars, position) { 16401 vars.duration = 0; 16402 vars.parent = this; 16403 _inheritDefaults(vars).repeatDelay || (vars.repeat = 0); 16404 vars.immediateRender = !!vars.immediateRender; 16405 new Tween(targets, vars, _parsePosition(this, position), 1); 16406 return this; 16407 }; 16408 16409 _proto2.call = function call(callback, params, position) { 16410 return _addToTimeline(this, Tween.delayedCall(0, callback, params), position); 16411 }; 16412 16413 _proto2.staggerTo = function staggerTo(targets, duration, vars, stagger, position, onCompleteAll, onCompleteAllParams) { 16414 vars.duration = duration; 16415 vars.stagger = vars.stagger || stagger; 16416 vars.onComplete = onCompleteAll; 16417 vars.onCompleteParams = onCompleteAllParams; 16418 vars.parent = this; 16419 new Tween(targets, vars, _parsePosition(this, position)); 16420 return this; 16421 }; 16422 16423 _proto2.staggerFrom = function staggerFrom(targets, duration, vars, stagger, position, onCompleteAll, onCompleteAllParams) { 16424 vars.runBackwards = 1; 16425 _inheritDefaults(vars).immediateRender = _isNotFalse(vars.immediateRender); 16426 return this.staggerTo(targets, duration, vars, stagger, position, onCompleteAll, onCompleteAllParams); 16427 }; 16428 16429 _proto2.staggerFromTo = function staggerFromTo(targets, duration, fromVars, toVars, stagger, position, onCompleteAll, onCompleteAllParams) { 16430 toVars.startAt = fromVars; 16431 _inheritDefaults(toVars).immediateRender = _isNotFalse(toVars.immediateRender); 16432 return this.staggerTo(targets, duration, toVars, stagger, position, onCompleteAll, onCompleteAllParams); 16433 }; 16434 16435 _proto2.render = function render(totalTime, suppressEvents, force) { 16436 var prevTime = this._time, 16437 tDur = this._dirty ? this.totalDuration() : this._tDur, 16438 dur = this._dur, 16439 tTime = this !== _globalTimeline && totalTime > tDur - _tinyNum && totalTime >= 0 ? tDur : totalTime < _tinyNum ? 0 : totalTime, 16440 crossingStart = this._zTime < 0 !== totalTime < 0 && (this._initted || !dur), 16441 time, 16442 child, 16443 next, 16444 iteration, 16445 cycleDuration, 16446 prevPaused, 16447 pauseTween, 16448 timeScale, 16449 prevStart, 16450 prevIteration, 16451 yoyo, 16452 isYoyo; 16453 16454 if (tTime !== this._tTime || force || crossingStart) { 16455 if (prevTime !== this._time && dur) { 16456 tTime += this._time - prevTime; 16457 totalTime += this._time - prevTime; 16458 } 16459 16460 time = tTime; 16461 prevStart = this._start; 16462 timeScale = this._ts; 16463 prevPaused = !timeScale; 16464 16465 if (crossingStart) { 16466 dur || (prevTime = this._zTime); 16467 (totalTime || !suppressEvents) && (this._zTime = totalTime); 16468 } 16469 16470 if (this._repeat) { 16471 yoyo = this._yoyo; 16472 cycleDuration = dur + this._rDelay; 16473 16474 if (this._repeat < -1 && totalTime < 0) { 16475 return this.totalTime(cycleDuration * 100 + totalTime, suppressEvents, force); 16476 } 16477 16478 time = _round(tTime % cycleDuration); 16479 16480 if (tTime === tDur) { 16481 iteration = this._repeat; 16482 time = dur; 16483 } else { 16484 iteration = ~~(tTime / cycleDuration); 16485 16486 if (iteration && iteration === tTime / cycleDuration) { 16487 time = dur; 16488 iteration--; 16489 } 16490 16491 time > dur && (time = dur); 16492 } 16493 16494 prevIteration = _animationCycle(this._tTime, cycleDuration); 16495 !prevTime && this._tTime && prevIteration !== iteration && (prevIteration = iteration); 16496 16497 if (yoyo && iteration & 1) { 16498 time = dur - time; 16499 isYoyo = 1; 16500 } 16501 16502 if (iteration !== prevIteration && !this._lock) { 16503 var rewinding = yoyo && prevIteration & 1, 16504 doesWrap = rewinding === (yoyo && iteration & 1); 16505 iteration < prevIteration && (rewinding = !rewinding); 16506 prevTime = rewinding ? 0 : dur; 16507 this._lock = 1; 16508 this.render(prevTime || (isYoyo ? 0 : _round(iteration * cycleDuration)), suppressEvents, !dur)._lock = 0; 16509 this._tTime = tTime; 16510 !suppressEvents && this.parent && _callback(this, "onRepeat"); 16511 this.vars.repeatRefresh && !isYoyo && (this.invalidate()._lock = 1); 16512 16513 if (prevTime && prevTime !== this._time || prevPaused !== !this._ts || this.vars.onRepeat && !this.parent && !this._act) { 16514 return this; 16515 } 16516 16517 dur = this._dur; 16518 tDur = this._tDur; 16519 16520 if (doesWrap) { 16521 this._lock = 2; 16522 prevTime = rewinding ? dur : -0.0001; 16523 this.render(prevTime, true); 16524 this.vars.repeatRefresh && !isYoyo && this.invalidate(); 16525 } 16526 16527 this._lock = 0; 16528 16529 if (!this._ts && !prevPaused) { 16530 return this; 16531 } 16532 16533 _propagateYoyoEase(this, isYoyo); 16534 } 16535 } 16536 16537 if (this._hasPause && !this._forcing && this._lock < 2) { 16538 pauseTween = _findNextPauseTween(this, _round(prevTime), _round(time)); 16539 16540 if (pauseTween) { 16541 tTime -= time - (time = pauseTween._start); 16542 } 16543 } 16544 16545 this._tTime = tTime; 16546 this._time = time; 16547 this._act = !timeScale; 16548 16549 if (!this._initted) {
vendor: 15,121 bytes, lines 16550-17082
16550 this._onUpdate = this.vars.onUpdate; 16551 this._initted = 1; 16552 this._zTime = totalTime; 16553 prevTime = 0; 16554 } 16555 16556 if (!prevTime && time && !suppressEvents) { 16557 _callback(this, "onStart"); 16558 16559 if (this._tTime !== tTime) { 16560 return this; 16561 } 16562 } 16563 16564 if (time >= prevTime && totalTime >= 0) { 16565 child = this._first; 16566 16567 while (child) { 16568 next = child._next; 16569 16570 if ((child._act || time >= child._start) && child._ts && pauseTween !== child) { 16571 if (child.parent !== this) { 16572 return this.render(totalTime, suppressEvents, force); 16573 } 16574 16575 child.render(child._ts > 0 ? (time - child._start) * child._ts : (child._dirty ? child.totalDuration() : child._tDur) + (time - child._start) * child._ts, suppressEvents, force); 16576 16577 if (time !== this._time || !this._ts && !prevPaused) { 16578 pauseTween = 0; 16579 next && (tTime += this._zTime = -_tinyNum); 16580 break; 16581 } 16582 } 16583 16584 child = next; 16585 } 16586 } else { 16587 child = this._last; 16588 var adjustedTime = totalTime < 0 ? totalTime : time; 16589 16590 while (child) { 16591 next = child._prev; 16592 16593 if ((child._act || adjustedTime <= child._end) && child._ts && pauseTween !== child) { 16594 if (child.parent !== this) { 16595 return this.render(totalTime, suppressEvents, force); 16596 } 16597 16598 child.render(child._ts > 0 ? (adjustedTime - child._start) * child._ts : (child._dirty ? child.totalDuration() : child._tDur) + (adjustedTime - child._start) * child._ts, suppressEvents, force); 16599 16600 if (time !== this._time || !this._ts && !prevPaused) { 16601 pauseTween = 0; 16602 next && (tTime += this._zTime = adjustedTime ? -_tinyNum : _tinyNum); 16603 break; 16604 } 16605 } 16606 16607 child = next; 16608 } 16609 } 16610 16611 if (pauseTween && !suppressEvents) { 16612 this.pause(); 16613 pauseTween.render(time >= prevTime ? 0 : -_tinyNum)._zTime = time >= prevTime ? 1 : -1; 16614 16615 if (this._ts) { 16616 this._start = prevStart; 16617 16618 _setEnd(this); 16619 16620 return this.render(totalTime, suppressEvents, force); 16621 } 16622 } 16623 16624 this._onUpdate && !suppressEvents && _callback(this, "onUpdate", true); 16625 if (tTime === tDur && tDur >= this.totalDuration() || !tTime && prevTime) if (prevStart === this._start || Math.abs(timeScale) !== Math.abs(this._ts)) if (!this._lock) { 16626 (totalTime || !dur) && (tTime === tDur && this._ts > 0 || !tTime && this._ts < 0) && _removeFromParent(this, 1); 16627 16628 if (!suppressEvents && !(totalTime < 0 && !prevTime) && (tTime || prevTime || !tDur)) { 16629 _callback(this, tTime === tDur && totalTime >= 0 ? "onComplete" : "onReverseComplete", true); 16630 16631 this._prom && !(tTime < tDur && this.timeScale() > 0) && this._prom(); 16632 } 16633 } 16634 } 16635 16636 return this; 16637 }; 16638 16639 _proto2.add = function add(child, position) { 16640 var _this2 = this; 16641 16642 _isNumber(position) || (position = _parsePosition(this, position, child)); 16643 16644 if (!(child instanceof Animation)) { 16645 if (_isArray(child)) { 16646 child.forEach(function (obj) { 16647 return _this2.add(obj, position); 16648 }); 16649 return this; 16650 } 16651 16652 if (_isString(child)) { 16653 return this.addLabel(child, position); 16654 } 16655 16656 if (_isFunction(child)) { 16657 child = Tween.delayedCall(0, child); 16658 } else { 16659 return this; 16660 } 16661 } 16662 16663 return this !== child ? _addToTimeline(this, child, position) : this; 16664 }; 16665 16666 _proto2.getChildren = function getChildren(nested, tweens, timelines, ignoreBeforeTime) { 16667 if (nested === void 0) { 16668 nested = true; 16669 } 16670 16671 if (tweens === void 0) { 16672 tweens = true; 16673 } 16674 16675 if (timelines === void 0) { 16676 timelines = true; 16677 } 16678 16679 if (ignoreBeforeTime === void 0) { 16680 ignoreBeforeTime = -_bigNum; 16681 } 16682 16683 var a = [], 16684 child = this._first; 16685 16686 while (child) { 16687 if (child._start >= ignoreBeforeTime) { 16688 if (child instanceof Tween) { 16689 tweens && a.push(child); 16690 } else { 16691 timelines && a.push(child); 16692 nested && a.push.apply(a, child.getChildren(true, tweens, timelines)); 16693 } 16694 } 16695 16696 child = child._next; 16697 } 16698 16699 return a; 16700 }; 16701 16702 _proto2.getById = function getById(id) { 16703 var animations = this.getChildren(1, 1, 1), 16704 i = animations.length; 16705 16706 while (i--) { 16707 if (animations[i].vars.id === id) { 16708 return animations[i]; 16709 } 16710 } 16711 }; 16712 16713 _proto2.remove = function remove(child) { 16714 if (_isString(child)) { 16715 return this.removeLabel(child); 16716 } 16717 16718 if (_isFunction(child)) { 16719 return this.killTweensOf(child); 16720 } 16721 16722 _removeLinkedListItem(this, child); 16723 16724 if (child === this._recent) { 16725 this._recent = this._last; 16726 } 16727 16728 return _uncache(this); 16729 }; 16730 16731 _proto2.totalTime = function totalTime(_totalTime2, suppressEvents) { 16732 if (!arguments.length) { 16733 return this._tTime; 16734 } 16735 16736 this._forcing = 1; 16737 16738 if (!this._dp && this._ts) { 16739 this._start = _round(_ticker.time - (this._ts > 0 ? _totalTime2 / this._ts : (this.totalDuration() - _totalTime2) / -this._ts)); 16740 } 16741 16742 _Animation.prototype.totalTime.call(this, _totalTime2, suppressEvents); 16743 16744 this._forcing = 0; 16745 return this; 16746 }; 16747 16748 _proto2.addLabel = function addLabel(label, position) { 16749 this.labels[label] = _parsePosition(this, position); 16750 return this; 16751 }; 16752 16753 _proto2.removeLabel = function removeLabel(label) { 16754 delete this.labels[label]; 16755 return this; 16756 }; 16757 16758 _proto2.addPause = function addPause(position, callback, params) { 16759 var t = Tween.delayedCall(0, callback || _emptyFunc, params); 16760 t.data = "isPause"; 16761 this._hasPause = 1; 16762 return _addToTimeline(this, t, _parsePosition(this, position)); 16763 }; 16764 16765 _proto2.removePause = function removePause(position) { 16766 var child = this._first; 16767 position = _parsePosition(this, position); 16768 16769 while (child) { 16770 if (child._start === position && child.data === "isPause") { 16771 _removeFromParent(child); 16772 } 16773 16774 child = child._next; 16775 } 16776 }; 16777 16778 _proto2.killTweensOf = function killTweensOf(targets, props, onlyActive) { 16779 var tweens = this.getTweensOf(targets, onlyActive), 16780 i = tweens.length; 16781 16782 while (i--) { 16783 _overwritingTween !== tweens[i] && tweens[i].kill(targets, props); 16784 } 16785 16786 return this; 16787 }; 16788 16789 _proto2.getTweensOf = function getTweensOf(targets, onlyActive) { 16790 var a = [], 16791 parsedTargets = toArray(targets), 16792 child = this._first, 16793 isGlobalTime = _isNumber(onlyActive), 16794 children; 16795 16796 while (child) { 16797 if (child instanceof Tween) { 16798 if (_arrayContainsAny(child._targets, parsedTargets) && (isGlobalTime ? (!_overwritingTween || child._initted && child._ts) && child.globalTime(0) <= onlyActive && child.globalTime(child.totalDuration()) > onlyActive : !onlyActive || child.isActive())) { 16799 a.push(child); 16800 } 16801 } else if ((children = child.getTweensOf(parsedTargets, onlyActive)).length) { 16802 a.push.apply(a, children); 16803 } 16804 16805 child = child._next; 16806 } 16807 16808 return a; 16809 }; 16810 16811 _proto2.tweenTo = function tweenTo(position, vars) { 16812 vars = vars || {}; 16813 16814 var tl = this, 16815 endTime = _parsePosition(tl, position), 16816 _vars = vars, 16817 startAt = _vars.startAt, 16818 _onStart = _vars.onStart, 16819 onStartParams = _vars.onStartParams, 16820 immediateRender = _vars.immediateRender, 16821 initted, 16822 tween = Tween.to(tl, _setDefaults({ 16823 ease: vars.ease || "none", 16824 lazy: false, 16825 immediateRender: false, 16826 time: endTime, 16827 overwrite: "auto", 16828 duration: vars.duration || Math.abs((endTime - (startAt && "time" in startAt ? startAt.time : tl._time)) / tl.timeScale()) || _tinyNum, 16829 onStart: function onStart() { 16830 tl.pause(); 16831 16832 if (!initted) { 16833 var duration = vars.duration || Math.abs((endTime - (startAt && "time" in startAt ? startAt.time : tl._time)) / tl.timeScale()); 16834 tween._dur !== duration && _setDuration(tween, duration, 0, 1).render(tween._time, true, true); 16835 initted = 1; 16836 } 16837 16838 _onStart && _onStart.apply(tween, onStartParams || []); 16839 } 16840 }, vars)); 16841 16842 return immediateRender ? tween.render(0) : tween; 16843 }; 16844 16845 _proto2.tweenFromTo = function tweenFromTo(fromPosition, toPosition, vars) { 16846 return this.tweenTo(toPosition, _setDefaults({ 16847 startAt: { 16848 time: _parsePosition(this, fromPosition) 16849 } 16850 }, vars)); 16851 }; 16852 16853 _proto2.recent = function recent() { 16854 return this._recent; 16855 }; 16856 16857 _proto2.nextLabel = function nextLabel(afterTime) { 16858 if (afterTime === void 0) { 16859 afterTime = this._time; 16860 } 16861 16862 return _getLabelInDirection(this, _parsePosition(this, afterTime)); 16863 }; 16864 16865 _proto2.previousLabel = function previousLabel(beforeTime) { 16866 if (beforeTime === void 0) { 16867 beforeTime = this._time; 16868 } 16869 16870 return _getLabelInDirection(this, _parsePosition(this, beforeTime), 1); 16871 }; 16872 16873 _proto2.currentLabel = function currentLabel(value) { 16874 return arguments.length ? this.seek(value, true) : this.previousLabel(this._time + _tinyNum); 16875 }; 16876 16877 _proto2.shiftChildren = function shiftChildren(amount, adjustLabels, ignoreBeforeTime) { 16878 if (ignoreBeforeTime === void 0) { 16879 ignoreBeforeTime = 0; 16880 } 16881 16882 var child = this._first, 16883 labels = this.labels, 16884 p; 16885 16886 while (child) { 16887 if (child._start >= ignoreBeforeTime) { 16888 child._start += amount; 16889 child._end += amount; 16890 } 16891 16892 child = child._next; 16893 } 16894 16895 if (adjustLabels) { 16896 for (p in labels) { 16897 if (labels[p] >= ignoreBeforeTime) { 16898 labels[p] += amount; 16899 } 16900 } 16901 } 16902 16903 return _uncache(this); 16904 }; 16905 16906 _proto2.invalidate = function invalidate() { 16907 var child = this._first; 16908 this._lock = 0; 16909 16910 while (child) { 16911 child.invalidate(); 16912 child = child._next; 16913 } 16914 16915 return _Animation.prototype.invalidate.call(this); 16916 }; 16917 16918 _proto2.clear = function clear(includeLabels) { 16919 if (includeLabels === void 0) { 16920 includeLabels = true; 16921 } 16922 16923 var child = this._first, 16924 next; 16925 16926 while (child) { 16927 next = child._next; 16928 this.remove(child); 16929 child = next; 16930 } 16931 16932 this._dp && (this._time = this._tTime = this._pTime = 0); 16933 includeLabels && (this.labels = {}); 16934 return _uncache(this); 16935 }; 16936 16937 _proto2.totalDuration = function totalDuration(value) { 16938 var max = 0, 16939 self = this, 16940 child = self._last, 16941 prevStart = _bigNum, 16942 prev, 16943 start, 16944 parent; 16945 16946 if (arguments.length) { 16947 return self.timeScale((self._repeat < 0 ? self.duration() : self.totalDuration()) / (self.reversed() ? -value : value)); 16948 } 16949 16950 if (self._dirty) { 16951 parent = self.parent; 16952 16953 while (child) { 16954 prev = child._prev; 16955 child._dirty && child.totalDuration(); 16956 start = child._start; 16957 16958 if (start > prevStart && self._sort && child._ts && !self._lock) { 16959 self._lock = 1; 16960 _addToTimeline(self, child, start - child._delay, 1)._lock = 0; 16961 } else { 16962 prevStart = start; 16963 } 16964 16965 if (start < 0 && child._ts) { 16966 max -= start; 16967 16968 if (!parent && !self._dp || parent && parent.smoothChildTiming) { 16969 self._start += start / self._ts; 16970 self._time -= start; 16971 self._tTime -= start; 16972 } 16973 16974 self.shiftChildren(-start, false, -1e999); 16975 prevStart = 0; 16976 } 16977 16978 child._end > max && child._ts && (max = child._end); 16979 child = prev; 16980 } 16981 16982 _setDuration(self, self === _globalTimeline && self._time > max ? self._time : max, 1, 1); 16983 16984 self._dirty = 0; 16985 } 16986 16987 return self._tDur; 16988 }; 16989 16990 Timeline.updateRoot = function updateRoot(time) { 16991 if (_globalTimeline._ts) { 16992 _lazySafeRender(_globalTimeline, _parentToChildTotalTime(time, _globalTimeline)); 16993 16994 _lastRenderedFrame = _ticker.frame; 16995 } 16996 16997 if (_ticker.frame >= _nextGCFrame) { 16998 _nextGCFrame += _config.autoSleep || 120; 16999 var child = _globalTimeline._first; 17000 if (!child || !child._ts) if (_config.autoSleep && _ticker._listeners.length < 2) { 17001 while (child && !child._ts) { 17002 child = child._next; 17003 } 17004 17005 child || _ticker.sleep(); 17006 } 17007 } 17008 }; 17009 17010 return Timeline; 17011 }(Animation); 17012 17013 _setDefaults(Timeline.prototype, { 17014 _lock: 0, 17015 _hasPause: 0, 17016 _forcing: 0 17017 }); 17018 17019 var _addComplexStringPropTween = function _addComplexStringPropTween(target, prop, start, end, setter, stringFilter, funcParam) { 17020 var pt = new PropTween(this._pt, target, prop, 0, 1, _renderComplexString, null, setter), 17021 index = 0, 17022 matchIndex = 0, 17023 result, 17024 startNums, 17025 color, 17026 endNum, 17027 chunk, 17028 startNum, 17029 hasRandom, 17030 a; 17031 pt.b = start; 17032 pt.e = end; 17033 start += ""; 17034 end += ""; 17035 17036 if (hasRandom = ~end.indexOf("random(")) { 17037 end = _replaceRandom(end); 17038 } 17039 17040 if (stringFilter) { 17041 a = [start, end]; 17042 stringFilter(a, target, prop); 17043 start = a[0]; 17044 end = a[1]; 17045 } 17046 17047 startNums = start.match(_complexStringNumExp) || []; 17048 17049 while (result = _complexStringNumExp.exec(end)) { 17050 endNum = result[0]; 17051 chunk = end.substring(index, result.index); 17052 17053 if (color) { 17054 color = (color + 1) % 5; 17055 } else if (chunk.substr(-5) === "rgba(") { 17056 color = 1; 17057 } 17058 17059 if (endNum !== startNums[matchIndex++]) { 17060 startNum = parseFloat(startNums[matchIndex - 1]) || 0; 17061 pt._pt = { 17062 _next: pt._pt, 17063 p: chunk || matchIndex === 1 ? chunk : ",", 17064 s: startNum, 17065 c: endNum.charAt(1) === "=" ? parseFloat(endNum.substr(2)) * (endNum.charAt(0) === "-" ? -1 : 1) : parseFloat(endNum) - startNum, 17066 m: color && color < 4 ? Math.round : 0 17067 }; 17068 index = _complexStringNumExp.lastIndex; 17069 } 17070 } 17071 17072 pt.c = index < end.length ? end.substring(index, end.length) : ""; 17073 pt.fp = funcParam; 17074 17075 if (_relExp.test(end) || hasRandom) { 17076 pt.e = 0; 17077 } 17078 17079 this._pt = pt; 17080 return pt; 17081 }, 17082 _addPropTween = function _addPropTween(target, prop, start, end, index, targets, modifier, stringFilter, funcParam) {
17083 _isFunction(end) && (end = end(index || 0, target, targets)); 17084 var currentValue = target[prop], 17085 parsedStart = start !== "get" ? start : !_isFunction(currentValue) ? currentValue : funcParam ? target[prop.indexOf("set") || !_isFunction(target["get" + prop.substr(3)]) ? prop : "get" + prop.substr(3)](funcParam) : target[prop](), 17086 setter = !_isFunction(currentValue) ? _setterPlain : funcParam ? _setterFuncWithParam : _setterFunc, 17087 pt; 17088 17089 if (_isString(end)) { 17090 if (~end.indexOf("random(")) { 17091 end = _replaceRandom(end); 17092 } 17093 17094 if (end.charAt(1) === "=") { 17095 pt = parseFloat(parsedStart) + parseFloat(end.substr(2)) * (end.charAt(0) === "-" ? -1 : 1) + (getUnit(parsedStart) || 0); 17096 17097 if (pt || pt === 0) { 17098 end = pt; 17099 } 17100 } 17101 } 17102 17103 if (parsedStart !== end) { 17104 if (!isNaN(parsedStart * end) && end !== "") { 17105 pt = new PropTween(this._pt, target, prop, +parsedStart || 0, end - (parsedStart || 0), typeof currentValue === "boolean" ? _renderBoolean : _renderPlain, 0, setter); 17106 funcParam && (pt.fp = funcParam); 17107 modifier && pt.modifier(modifier, this, target); 17108 return this._pt = pt; 17109 } 17110 17111 !currentValue && !(prop in target) && _missingPlugin(prop, end); 17112 return _addComplexStringPropTween.call(this, target, prop, parsedStart, end, setter, stringFilter || _config.stringFilter, funcParam); 17113 } 17114 }, 17115 _processVars = function _processVars(vars, index, target, targets, tween) { 17116 _isFunction(vars) && (vars = _parseFuncOrString(vars, tween, index, target, targets)); 17117 17118 if (!_isObject(vars) || vars.style && vars.nodeType || _isArray(vars) || _isTypedArray(vars)) { 17119 return _isString(vars) ? _parseFuncOrString(vars, tween, index, target, targets) : vars; 17120 } 17121 17122 var copy = {}, 17123 p; 17124 17125 for (p in vars) { 17126 copy[p] = _parseFuncOrString(vars[p], tween, index, target, targets); 17127 } 17128 17129 return copy; 17130 }, 17131 _checkPlugin = function _checkPlugin(property, vars, tween, index, target, targets) { 17132 var plugin, pt, ptLookup, i; 17133 17134 if (_plugins[property] && (plugin = new _plugins[property]()).init(target, plugin.rawVars ? vars[property] : _processVars(vars[property], index, target, targets, tween), tween, index, targets) !== false) { 17135 tween._pt = pt = new PropTween(tween._pt, target, property, 0, 1, plugin.render, plugin, 0, plugin.priority); 17136 17137 if (tween !== _quickTween) { 17138 ptLookup = tween._ptLookup[tween._targets.indexOf(target)]; 17139 i = plugin._props.length; 17140 17141 while (i--) { 17142 ptLookup[plugin._props[i]] = pt; 17143 } 17144 } 17145 } 17146 17147 return plugin; 17148 }, 17149 _overwritingTween, 17150 _initTween = function _initTween(tween, time) { 17151 var vars = tween.vars, 17152 ease = vars.ease, 17153 startAt = vars.startAt, 17154 immediateRender = vars.immediateRender, 17155 lazy = vars.lazy, 17156 onUpdate = vars.onUpdate, 17157 onUpdateParams = vars.onUpdateParams, 17158 callbackScope = vars.callbackScope, 17159 runBackwards = vars.runBackwards, 17160 yoyoEase = vars.yoyoEase, 17161 keyframes = vars.keyframes, 17162 autoRevert = vars.autoRevert, 17163 dur = tween._dur, 17164 prevStartAt = tween._startAt, 17165 targets = tween._targets, 17166 parent = tween.parent, 17167 fullTargets = parent && parent.data === "nested" ? parent.parent._targets : targets, 17168 autoOverwrite = tween._overwrite === "auto" && !_suppressOverwrites, 17169 tl = tween.timeline, 17170 cleanVars, 17171 i, 17172 p, 17173 pt, 17174 target, 17175 hasPriority, 17176 gsData, 17177 harness, 17178 plugin, 17179 ptLookup, 17180 index, 17181 harnessVars, 17182 overwritten; 17183 tl && (!keyframes || !ease) && (ease = "none"); 17184 tween._ease = _parseEase(ease, _defaults.ease); 17185 tween._yEase = yoyoEase ? _invertEase(_parseEase(yoyoEase === true ? ease : yoyoEase, _defaults.ease)) : 0; 17186 17187 if (yoyoEase && tween._yoyo && !tween._repeat) { 17188 yoyoEase = tween._yEase; 17189 tween._yEase = tween._ease; 17190 tween._ease = yoyoEase; 17191 } 17192 17193 tween._from = !tl && !!vars.runBackwards; 17194 17195 if (!tl) { 17196 harness = targets[0] ? _getCache(targets[0]).harness : 0; 17197 harnessVars = harness && vars[harness.prop]; 17198 cleanVars = _copyExcluding(vars, _reservedProps); 17199 prevStartAt && prevStartAt.render(-1, true).kill(); 17200 17201 if (startAt) { 17202 _removeFromParent(tween._startAt = Tween.set(targets, _setDefaults({ 17203 data: "isStart", 17204 overwrite: false, 17205 parent: parent, 17206 immediateRender: true, 17207 lazy: _isNotFalse(lazy), 17208 startAt: null, 17209 delay: 0, 17210 onUpdate: onUpdate, 17211 onUpdateParams: onUpdateParams, 17212 callbackScope: callbackScope, 17213 stagger: 0 17214 }, startAt))); 17215 17216 time < 0 && !immediateRender && !autoRevert && tween._startAt.render(-1, true); 17217 17218 if (immediateRender) { 17219 time > 0 && !autoRevert && (tween._startAt = 0); 17220 17221 if (dur && time <= 0) { 17222 time && (tween._zTime = time); 17223 return; 17224 } 17225 } else if (autoRevert === false) { 17226 tween._startAt = 0; 17227 } 17228 } else if (runBackwards && dur) { 17229 if (prevStartAt) { 17230 !autoRevert && (tween._startAt = 0); 17231 } else { 17232 time && (immediateRender = false); 17233 p = _setDefaults({ 17234 overwrite: false, 17235 data: "isFromStart", 17236 lazy: immediateRender && _isNotFalse(lazy), 17237 immediateRender: immediateRender, 17238 stagger: 0, 17239 parent: parent 17240 }, cleanVars); 17241 harnessVars && (p[harness.prop] = harnessVars); 17242 17243 _removeFromParent(tween._startAt = Tween.set(targets, p)); 17244 17245 time < 0 && tween._startAt.render(-1, true); 17246 17247 if (!immediateRender) { 17248 _initTween(tween._startAt, _tinyNum); 17249 } else if (!time) { 17250 return; 17251 } 17252 } 17253 } 17254 17255 tween._pt = 0; 17256 lazy = dur && _isNotFalse(lazy) || lazy && !dur; 17257 17258 for (i = 0; i < targets.length; i++) { 17259 target = targets[i]; 17260 gsData = target._gsap || _harness(targets)[i]._gsap; 17261 tween._ptLookup[i] = ptLookup = {}; 17262 _lazyLookup[gsData.id] && _lazyTweens.length && _lazyRender(); 17263 index = fullTargets === targets ? i : fullTargets.indexOf(target); 17264 17265 if (harness && (plugin = new harness()).init(target, harnessVars || cleanVars, tween, index, fullTargets) !== false) { 17266 tween._pt = pt = new PropTween(tween._pt, target, plugin.name, 0, 1, plugin.render, plugin, 0, plugin.priority); 17267 17268 plugin._props.forEach(function (name) { 17269 ptLookup[name] = pt; 17270 }); 17271 17272 plugin.priority && (hasPriority = 1); 17273 } 17274 17275 if (!harness || harnessVars) { 17276 for (p in cleanVars) { 17277 if (_plugins[p] && (plugin = _checkPlugin(p, cleanVars, tween, index, target, fullTargets))) { 17278 plugin.priority && (hasPriority = 1); 17279 } else { 17280 ptLookup[p] = pt = _addPropTween.call(tween, target, p, "get", cleanVars[p], index, fullTargets, 0, vars.stringFilter); 17281 } 17282 } 17283 } 17284 17285 tween._op && tween._op[i] && tween.kill(target, tween._op[i]); 17286 17287 if (autoOverwrite && tween._pt) { 17288 _overwritingTween = tween; 17289 17290 _globalTimeline.killTweensOf(target, ptLookup, tween.globalTime(0)); 17291 17292 overwritten = !tween.parent; 17293 _overwritingTween = 0; 17294 } 17295 17296 tween._pt && lazy && (_lazyLookup[gsData.id] = 1); 17297 } 17298 17299 hasPriority && _sortPropTweensByPriority(tween); 17300 tween._onInit && tween._onInit(tween); 17301 } 17302 17303 tween._onUpdate = onUpdate; 17304 tween._initted = (!tween._op || tween._pt) && !overwritten; 17305 }, 17306 _addAliasesToVars = function _addAliasesToVars(targets, vars) { 17307 var harness = targets[0] ? _getCache(targets[0]).harness : 0, 17308 propertyAliases = harness && harness.aliases, 17309 copy, 17310 p, 17311 i, 17312 aliases; 17313 17314 if (!propertyAliases) { 17315 return vars; 17316 } 17317
17318 copy = _merge({}, vars); 17319 17320 for (p in propertyAliases) { 17321 if (p in copy) { 17322 aliases = propertyAliases[p].split(","); 17323 i = aliases.length; 17324 17325 while (i--) { 17326 copy[aliases[i]] = copy[p]; 17327 } 17328 } 17329 } 17330 17331 return copy; 17332 }, 17333 _parseFuncOrString = function _parseFuncOrString(value, tween, i, target, targets) { 17334 return _isFunction(value) ? value.call(tween, i, target, targets) : _isString(value) && ~value.indexOf("random(") ? _replaceRandom(value) : value; 17335 }, 17336 _staggerTweenProps = _callbackNames + "repeat,repeatDelay,yoyo,repeatRefresh,yoyoEase", 17337 _staggerPropsToSkip = (_staggerTweenProps + ",id,stagger,delay,duration,paused,scrollTrigger").split(","); 17338 17339 var Tween = function (_Animation2) { 17340 _inheritsLoose(Tween, _Animation2); 17341 17342 function Tween(targets, vars, position, skipInherit) { 17343 var _this3; 17344 17345 if (typeof vars === "number") { 17346 position.duration = vars; 17347 vars = position; 17348 position = null; 17349 } 17350 17351 _this3 = _Animation2.call(this, skipInherit ? vars : _inheritDefaults(vars)) || this; 17352 var _this3$vars = _this3.vars, 17353 duration = _this3$vars.duration, 17354 delay = _this3$vars.delay, 17355 immediateRender = _this3$vars.immediateRender, 17356 stagger = _this3$vars.stagger, 17357 overwrite = _this3$vars.overwrite, 17358 keyframes = _this3$vars.keyframes, 17359 defaults = _this3$vars.defaults, 17360 scrollTrigger = _this3$vars.scrollTrigger, 17361 yoyoEase = _this3$vars.yoyoEase, 17362 parent = vars.parent || _globalTimeline, 17363 parsedTargets = (_isArray(targets) || _isTypedArray(targets) ? _isNumber(targets[0]) : "length" in vars) ? [targets] : toArray(targets), 17364 tl, 17365 i, 17366 copy, 17367 l, 17368 p, 17369 curTarget, 17370 staggerFunc, 17371 staggerVarsToMerge; 17372 _this3._targets = parsedTargets.length ? _harness(parsedTargets) : _warn("GSAP target " + targets + " not found. https://greensock.com", !_config.nullTargetWarn) || []; 17373 _this3._ptLookup = []; 17374 _this3._overwrite = overwrite; 17375 17376 if (keyframes || stagger || _isFuncOrString(duration) || _isFuncOrString(delay)) { 17377 vars = _this3.vars; 17378 tl = _this3.timeline = new Timeline({ 17379 data: "nested", 17380 defaults: defaults || {} 17381 }); 17382 tl.kill(); 17383 tl.parent = tl._dp = _assertThisInitialized(_this3); 17384 tl._start = 0; 17385 17386 if (keyframes) { 17387 _setDefaults(tl.vars.defaults, { 17388 ease: "none" 17389 }); 17390 17391 stagger ? parsedTargets.forEach(function (t, i) { 17392 return keyframes.forEach(function (frame, j) { 17393 return tl.to(t, frame, j ? ">" : i * stagger); 17394 }); 17395 }) : keyframes.forEach(function (frame) { 17396 return tl.to(parsedTargets, frame, ">"); 17397 }); 17398 } else { 17399 l = parsedTargets.length; 17400 staggerFunc = stagger ? distribute(stagger) : _emptyFunc; 17401 17402 if (_isObject(stagger)) { 17403 for (p in stagger) { 17404 if (~_staggerTweenProps.indexOf(p)) { 17405 staggerVarsToMerge || (staggerVarsToMerge = {}); 17406 staggerVarsToMerge[p] = stagger[p]; 17407 } 17408 } 17409 } 17410 17411 for (i = 0; i < l; i++) { 17412 copy = {}; 17413 17414 for (p in vars) { 17415 if (_staggerPropsToSkip.indexOf(p) < 0) { 17416 copy[p] = vars[p]; 17417 } 17418 } 17419 17420 copy.stagger = 0; 17421 yoyoEase && (copy.yoyoEase = yoyoEase); 17422 staggerVarsToMerge && _merge(copy, staggerVarsToMerge); 17423 curTarget = parsedTargets[i]; 17424 copy.duration = +_parseFuncOrString(duration, _assertThisInitialized(_this3), i, curTarget, parsedTargets); 17425 copy.delay = (+_parseFuncOrString(delay, _assertThisInitialized(_this3), i, curTarget, parsedTargets) || 0) - _this3._delay; 17426 17427 if (!stagger && l === 1 && copy.delay) { 17428 _this3._delay = delay = copy.delay; 17429 _this3._start += delay; 17430 copy.delay = 0; 17431 } 17432 17433 tl.to(curTarget, copy, staggerFunc(i, curTarget, parsedTargets)); 17434 } 17435 17436 tl.duration() ? duration = delay = 0 : _this3.timeline = 0; 17437 } 17438 17439 duration || _this3.duration(duration = tl.duration()); 17440 } else { 17441 _this3.timeline = 0; 17442 } 17443 17444 if (overwrite === true && !_suppressOverwrites) { 17445 _overwritingTween = _assertThisInitialized(_this3); 17446 17447 _globalTimeline.killTweensOf(parsedTargets); 17448 17449 _overwritingTween = 0; 17450 } 17451
17452 _addToTimeline(parent, _assertThisInitialized(_this3), position); 17453 17454 vars.reversed && _this3.reverse(); 17455 vars.paused && _this3.paused(true); 17456 17457 if (immediateRender || !duration && !keyframes && _this3._start === _round(parent._time) && _isNotFalse(immediateRender) && _hasNoPausedAncestors(_assertThisInitialized(_this3)) && parent.data !== "nested") { 17458 _this3._tTime = -_tinyNum; 17459 17460 _this3.render(Math.max(0, -delay)); 17461 } 17462 17463 scrollTrigger && _scrollTrigger(_assertThisInitialized(_this3), scrollTrigger); 17464 return _this3; 17465 } 17466 17467 var _proto3 = Tween.prototype; 17468 17469 _proto3.render = function render(totalTime, suppressEvents, force) { 17470 var prevTime = this._time, 17471 tDur = this._tDur, 17472 dur = this._dur, 17473 tTime = totalTime > tDur - _tinyNum && totalTime >= 0 ? tDur : totalTime < _tinyNum ? 0 : totalTime, 17474 time, 17475 pt, 17476 iteration, 17477 cycleDuration, 17478 prevIteration, 17479 isYoyo, 17480 ratio, 17481 timeline, 17482 yoyoEase; 17483 17484 if (!dur) { 17485 _renderZeroDurationTween(this, totalTime, suppressEvents, force); 17486 } else if (tTime !== this._tTime || !totalTime || force || !this._initted && this._tTime || this._startAt && this._zTime < 0 !== totalTime < 0) { 17487 time = tTime; 17488 timeline = this.timeline; 17489 17490 if (this._repeat) { 17491 cycleDuration = dur + this._rDelay; 17492 17493 if (this._repeat < -1 && totalTime < 0) { 17494 return this.totalTime(cycleDuration * 100 + totalTime, suppressEvents, force); 17495 } 17496 17497 time = _round(tTime % cycleDuration); 17498 17499 if (tTime === tDur) { 17500 iteration = this._repeat; 17501 time = dur; 17502 } else { 17503 iteration = ~~(tTime / cycleDuration); 17504 17505 if (iteration && iteration === tTime / cycleDuration) { 17506 time = dur; 17507 iteration--; 17508 } 17509 17510 time > dur && (time = dur); 17511 } 17512 17513 isYoyo = this._yoyo && iteration & 1; 17514 17515 if (isYoyo) { 17516 yoyoEase = this._yEase; 17517 time = dur - time; 17518 } 17519 17520 prevIteration = _animationCycle(this._tTime, cycleDuration); 17521 17522 if (time === prevTime && !force && this._initted) { 17523 return this; 17524 } 17525 17526 if (iteration !== prevIteration) { 17527 timeline && this._yEase && _propagateYoyoEase(timeline, isYoyo); 17528 17529 if (this.vars.repeatRefresh && !isYoyo && !this._lock) { 17530 this._lock = force = 1; 17531 this.render(_round(cycleDuration * iteration), true).invalidate()._lock = 0; 17532 } 17533 } 17534 } 17535 17536 if (!this._initted) { 17537 if (_attemptInitTween(this, totalTime < 0 ? totalTime : time, force, suppressEvents)) { 17538 this._tTime = 0; 17539 return this; 17540 } 17541 17542 if (dur !== this._dur) { 17543 return this.render(totalTime, suppressEvents, force); 17544 } 17545 } 17546 17547 this._tTime = tTime; 17548 this._time = time; 17549 17550 if (!this._act && this._ts) { 17551 this._act = 1; 17552 this._lazy = 0; 17553 } 17554 17555 this.ratio = ratio = (yoyoEase || this._ease)(time / dur); 17556 17557 if (this._from) { 17558 this.ratio = ratio = 1 - ratio; 17559 } 17560
17561 time && !prevTime && !suppressEvents && _callback(this, "onStart"); 17562 17563 if (time && !prevTime && !suppressEvents) { 17564 _callback(this, "onStart"); 17565 17566 if (this._tTime !== tTime) { 17567 return this; 17568 } 17569 } 17570 17571 pt = this._pt; 17572 17573 while (pt) { 17574 pt.r(ratio, pt.d); 17575 pt = pt._next; 17576 } 17577 17578 timeline && timeline.render(totalTime < 0 ? totalTime : !time && isYoyo ? -_tinyNum : timeline._dur * ratio, suppressEvents, force) || this._startAt && (this._zTime = totalTime); 17579 17580 if (this._onUpdate && !suppressEvents) { 17581 totalTime < 0 && this._startAt && this._startAt.render(totalTime, true, force); 17582 17583 _callback(this, "onUpdate"); 17584 } 17585 17586 this._repeat && iteration !== prevIteration && this.vars.onRepeat && !suppressEvents && this.parent && _callback(this, "onRepeat"); 17587 17588 if ((tTime === this._tDur || !tTime) && this._tTime === tTime) { 17589 totalTime < 0 && this._startAt && !this._onUpdate && this._startAt.render(totalTime, true, true); 17590 (totalTime || !dur) && (tTime === this._tDur && this._ts > 0 || !tTime && this._ts < 0) && _removeFromParent(this, 1); 17591 17592 if (!suppressEvents && !(totalTime < 0 && !prevTime) && (tTime || prevTime)) { 17593 _callback(this, tTime === tDur ? "onComplete" : "onReverseComplete", true); 17594 17595 this._prom && !(tTime < tDur && this.timeScale() > 0) && this._prom(); 17596 } 17597 } 17598 } 17599 17600 return this; 17601 }; 17602 17603 _proto3.targets = function targets() { 17604 return this._targets; 17605 }; 17606
vendor: 12,922 bytes, lines 17607-18034
17607 _proto3.invalidate = function invalidate() { 17608 this._pt = this._op = this._startAt = this._onUpdate = this._lazy = this.ratio = 0; 17609 this._ptLookup = []; 17610 this.timeline && this.timeline.invalidate(); 17611 return _Animation2.prototype.invalidate.call(this); 17612 }; 17613 17614 _proto3.kill = function kill(targets, vars) { 17615 if (vars === void 0) { 17616 vars = "all"; 17617 } 17618 17619 if (!targets && (!vars || vars === "all")) { 17620 this._lazy = this._pt = 0; 17621 return this.parent ? _interrupt(this) : this; 17622 } 17623 17624 if (this.timeline) { 17625 var tDur = this.timeline.totalDuration(); 17626 this.timeline.killTweensOf(targets, vars, _overwritingTween && _overwritingTween.vars.overwrite !== true)._first || _interrupt(this); 17627 this.parent && tDur !== this.timeline.totalDuration() && _setDuration(this, this._dur * this.timeline._tDur / tDur, 0, 1); 17628 return this; 17629 } 17630 17631 var parsedTargets = this._targets, 17632 killingTargets = targets ? toArray(targets) : parsedTargets, 17633 propTweenLookup = this._ptLookup, 17634 firstPT = this._pt, 17635 overwrittenProps, 17636 curLookup, 17637 curOverwriteProps, 17638 props, 17639 p, 17640 pt, 17641 i; 17642 17643 if ((!vars || vars === "all") && _arraysMatch(parsedTargets, killingTargets)) { 17644 vars === "all" && (this._pt = 0); 17645 return _interrupt(this); 17646 } 17647 17648 overwrittenProps = this._op = this._op || []; 17649 17650 if (vars !== "all") { 17651 if (_isString(vars)) { 17652 p = {}; 17653 17654 _forEachName(vars, function (name) { 17655 return p[name] = 1; 17656 }); 17657 17658 vars = p; 17659 } 17660 17661 vars = _addAliasesToVars(parsedTargets, vars); 17662 } 17663 17664 i = parsedTargets.length; 17665 17666 while (i--) { 17667 if (~killingTargets.indexOf(parsedTargets[i])) { 17668 curLookup = propTweenLookup[i]; 17669 17670 if (vars === "all") { 17671 overwrittenProps[i] = vars; 17672 props = curLookup; 17673 curOverwriteProps = {}; 17674 } else { 17675 curOverwriteProps = overwrittenProps[i] = overwrittenProps[i] || {}; 17676 props = vars; 17677 } 17678 17679 for (p in props) { 17680 pt = curLookup && curLookup[p]; 17681 17682 if (pt) { 17683 if (!("kill" in pt.d) || pt.d.kill(p) === true) { 17684 _removeLinkedListItem(this, pt, "_pt"); 17685 } 17686 17687 delete curLookup[p]; 17688 } 17689 17690 if (curOverwriteProps !== "all") { 17691 curOverwriteProps[p] = 1; 17692 } 17693 } 17694 } 17695 } 17696 17697 this._initted && !this._pt && firstPT && _interrupt(this); 17698 return this; 17699 }; 17700 17701 Tween.to = function to(targets, vars) { 17702 return new Tween(targets, vars, arguments[2]); 17703 }; 17704 17705 Tween.from = function from(targets, vars) { 17706 return _createTweenType(1, arguments); 17707 }; 17708 17709 Tween.delayedCall = function delayedCall(delay, callback, params, scope) { 17710 return new Tween(callback, 0, { 17711 immediateRender: false, 17712 lazy: false, 17713 overwrite: false, 17714 delay: delay, 17715 onComplete: callback, 17716 onReverseComplete: callback, 17717 onCompleteParams: params, 17718 onReverseCompleteParams: params, 17719 callbackScope: scope 17720 }); 17721 }; 17722 17723 Tween.fromTo = function fromTo(targets, fromVars, toVars) { 17724 return _createTweenType(2, arguments); 17725 }; 17726 17727 Tween.set = function set(targets, vars) { 17728 vars.duration = 0; 17729 vars.repeatDelay || (vars.repeat = 0); 17730 return new Tween(targets, vars); 17731 }; 17732 17733 Tween.killTweensOf = function killTweensOf(targets, props, onlyActive) { 17734 return _globalTimeline.killTweensOf(targets, props, onlyActive); 17735 }; 17736 17737 return Tween; 17738 }(Animation); 17739 17740 _setDefaults(Tween.prototype, { 17741 _targets: [], 17742 _lazy: 0, 17743 _startAt: 0, 17744 _op: 0, 17745 _onInit: 0 17746 }); 17747 17748 _forEachName("staggerTo,staggerFrom,staggerFromTo", function (name) { 17749 Tween[name] = function () { 17750 var tl = new Timeline(), 17751 params = _slice.call(arguments, 0); 17752 17753 params.splice(name === "staggerFromTo" ? 5 : 4, 0, 0); 17754 return tl[name].apply(tl, params); 17755 }; 17756 }); 17757 17758 var _setterPlain = function _setterPlain(target, property, value) { 17759 return target[property] = value; 17760 }, 17761 _setterFunc = function _setterFunc(target, property, value) { 17762 return target[property](value); 17763 }, 17764 _setterFuncWithParam = function _setterFuncWithParam(target, property, value, data) { 17765 return target[property](data.fp, value); 17766 }, 17767 _setterAttribute = function _setterAttribute(target, property, value) { 17768 return target.setAttribute(property, value); 17769 }, 17770 _getSetter = function _getSetter(target, property) { 17771 return _isFunction(target[property]) ? _setterFunc : _isUndefined(target[property]) && target.setAttribute ? _setterAttribute : _setterPlain; 17772 }, 17773 _renderPlain = function _renderPlain(ratio, data) { 17774 return data.set(data.t, data.p, Math.round((data.s + data.c * ratio) * 1000000) / 1000000, data); 17775 }, 17776 _renderBoolean = function _renderBoolean(ratio, data) { 17777 return data.set(data.t, data.p, !!(data.s + data.c * ratio), data); 17778 }, 17779 _renderComplexString = function _renderComplexString(ratio, data) { 17780 var pt = data._pt, 17781 s = ""; 17782 17783 if (!ratio && data.b) { 17784 s = data.b; 17785 } else if (ratio === 1 && data.e) { 17786 s = data.e; 17787 } else { 17788 while (pt) { 17789 s = pt.p + (pt.m ? pt.m(pt.s + pt.c * ratio) : Math.round((pt.s + pt.c * ratio) * 10000) / 10000) + s; 17790 pt = pt._next; 17791 } 17792 17793 s += data.c; 17794 } 17795 17796 data.set(data.t, data.p, s, data); 17797 }, 17798 _renderPropTweens = function _renderPropTweens(ratio, data) { 17799 var pt = data._pt; 17800 17801 while (pt) { 17802 pt.r(ratio, pt.d); 17803 pt = pt._next; 17804 } 17805 }, 17806 _addPluginModifier = function _addPluginModifier(modifier, tween, target, property) { 17807 var pt = this._pt, 17808 next; 17809 17810 while (pt) { 17811 next = pt._next; 17812 pt.p === property && pt.modifier(modifier, tween, target); 17813 pt = next; 17814 } 17815 }, 17816 _killPropTweensOf = function _killPropTweensOf(property) { 17817 var pt = this._pt, 17818 hasNonDependentRemaining, 17819 next; 17820 17821 while (pt) { 17822 next = pt._next; 17823 17824 if (pt.p === property && !pt.op || pt.op === property) { 17825 _removeLinkedListItem(this, pt, "_pt"); 17826 } else if (!pt.dep) { 17827 hasNonDependentRemaining = 1; 17828 } 17829 17830 pt = next; 17831 } 17832 17833 return !hasNonDependentRemaining; 17834 }, 17835 _setterWithModifier = function _setterWithModifier(target, property, value, data) { 17836 data.mSet(target, property, data.m.call(data.tween, value, data.mt), data); 17837 }, 17838 _sortPropTweensByPriority = function _sortPropTweensByPriority(parent) { 17839 var pt = parent._pt, 17840 next, 17841 pt2, 17842 first, 17843 last; 17844 17845 while (pt) { 17846 next = pt._next; 17847 pt2 = first; 17848 17849 while (pt2 && pt2.pr > pt.pr) { 17850 pt2 = pt2._next; 17851 } 17852 17853 if (pt._prev = pt2 ? pt2._prev : last) { 17854 pt._prev._next = pt; 17855 } else { 17856 first = pt; 17857 } 17858 17859 if (pt._next = pt2) { 17860 pt2._prev = pt; 17861 } else { 17862 last = pt; 17863 } 17864 17865 pt = next; 17866 } 17867 17868 parent._pt = first; 17869 }; 17870 17871 var PropTween = function () { 17872 function PropTween(next, target, prop, start, change, renderer, data, setter, priority) { 17873 this.t = target; 17874 this.s = start; 17875 this.c = change; 17876 this.p = prop; 17877 this.r = renderer || _renderPlain; 17878 this.d = data || this; 17879 this.set = setter || _setterPlain; 17880 this.pr = priority || 0; 17881 this._next = next; 17882 17883 if (next) { 17884 next._prev = this; 17885 } 17886 } 17887 17888 var _proto4 = PropTween.prototype; 17889 17890 _proto4.modifier = function modifier(func, tween, target) { 17891 this.mSet = this.mSet || this.set; 17892 this.set = _setterWithModifier; 17893 this.m = func; 17894 this.mt = target; 17895 this.tween = tween; 17896 }; 17897 17898 return PropTween; 17899 }(); 17900 17901 _forEachName(_callbackNames + "parent,duration,ease,delay,overwrite,runBackwards,startAt,yoyo,immediateRender,repeat,repeatDelay,data,paused,reversed,lazy,callbackScope,stringFilter,id,yoyoEase,stagger,inherit,repeatRefresh,keyframes,autoRevert,scrollTrigger", function (name) { 17902 return _reservedProps[name] = 1; 17903 }); 17904 17905 _globals.TweenMax = _globals.TweenLite = Tween; 17906 _globals.TimelineLite = _globals.TimelineMax = Timeline; 17907 _globalTimeline = new Timeline({ 17908 sortChildren: false, 17909 defaults: _defaults, 17910 autoRemoveChildren: true, 17911 id: "root", 17912 smoothChildTiming: true 17913 }); 17914 _config.stringFilter = _colorStringFilter; 17915 var _gsap = { 17916 registerPlugin: function registerPlugin() { 17917 for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { 17918 args[_key2] = arguments[_key2]; 17919 } 17920 17921 args.forEach(function (config) { 17922 return _createPlugin(config); 17923 }); 17924 }, 17925 timeline: function timeline(vars) { 17926 return new Timeline(vars); 17927 }, 17928 getTweensOf: function getTweensOf(targets, onlyActive) { 17929 return _globalTimeline.getTweensOf(targets, onlyActive); 17930 }, 17931 getProperty: function getProperty(target, property, unit, uncache) { 17932 _isString(target) && (target = toArray(target)[0]); 17933 17934 var getter = _getCache(target || {}).get, 17935 format = unit ? _passThrough : _numericIfPossible; 17936 17937 unit === "native" && (unit = ""); 17938 return !target ? target : !property ? function (property, unit, uncache) { 17939 return format((_plugins[property] && _plugins[property].get || getter)(target, property, unit, uncache)); 17940 } : format((_plugins[property] && _plugins[property].get || getter)(target, property, unit, uncache)); 17941 }, 17942 quickSetter: function quickSetter(target, property, unit) { 17943 target = toArray(target); 17944 17945 if (target.length > 1) { 17946 var setters = target.map(function (t) { 17947 return gsap.quickSetter(t, property, unit); 17948 }), 17949 l = setters.length; 17950 return function (value) { 17951 var i = l; 17952 17953 while (i--) { 17954 setters[i](value); 17955 } 17956 }; 17957 } 17958 17959 target = target[0] || {}; 17960 17961 var Plugin = _plugins[property], 17962 cache = _getCache(target), 17963 p = cache.harness && (cache.harness.aliases || {})[property] || property, 17964 setter = Plugin ? function (value) { 17965 var p = new Plugin(); 17966 _quickTween._pt = 0; 17967 p.init(target, unit ? value + unit : value, _quickTween, 0, [target]); 17968 p.render(1, p); 17969 _quickTween._pt && _renderPropTweens(1, _quickTween); 17970 } : cache.set(target, p); 17971 17972 return Plugin ? setter : function (value) { 17973 return setter(target, p, unit ? value + unit : value, cache, 1); 17974 }; 17975 }, 17976 isTweening: function isTweening(targets) { 17977 return _globalTimeline.getTweensOf(targets, true).length > 0; 17978 }, 17979 defaults: function defaults(value) { 17980 value && value.ease && (value.ease = _parseEase(value.ease, _defaults.ease)); 17981 return _mergeDeep(_defaults, value || {}); 17982 }, 17983 config: function config(value) { 17984 return _mergeDeep(_config, value || {}); 17985 }, 17986 registerEffect: function registerEffect(_ref3) { 17987 var name = _ref3.name, 17988 effect = _ref3.effect, 17989 plugins = _ref3.plugins, 17990 defaults = _ref3.defaults, 17991 extendTimeline = _ref3.extendTimeline; 17992 (plugins || "").split(",").forEach(function (pluginName) { 17993 return pluginName && !_plugins[pluginName] && !_globals[pluginName] && _warn(name + " effect requires " + pluginName + " plugin."); 17994 }); 17995 17996 _effects[name] = function (targets, vars, tl) { 17997 return effect(toArray(targets), _setDefaults(vars || {}, defaults), tl); 17998 }; 17999 18000 if (extendTimeline) { 18001 Timeline.prototype[name] = function (targets, vars, position) { 18002 return this.add(_effects[name](targets, _isObject(vars) ? vars : (position = vars) && {}, this), position); 18003 }; 18004 } 18005 }, 18006 registerEase: function registerEase(name, ease) { 18007 _easeMap[name] = _parseEase(ease); 18008 }, 18009 parseEase: function parseEase(ease, defaultEase) { 18010 return arguments.length ? _parseEase(ease, defaultEase) : _easeMap; 18011 }, 18012 getById: function getById(id) { 18013 return _globalTimeline.getById(id); 18014 }, 18015 exportRoot: function exportRoot(vars, includeDelayedCalls) { 18016 if (vars === void 0) { 18017 vars = {}; 18018 } 18019 18020 var tl = new Timeline(vars), 18021 child, 18022 next; 18023 tl.smoothChildTiming = _isNotFalse(vars.smoothChildTiming); 18024 18025 _globalTimeline.remove(tl); 18026 18027 tl._dp = 0; 18028 tl._time = tl._tTime = _globalTimeline._time; 18029 child = _globalTimeline._first; 18030 18031 while (child) { 18032 next = child._next; 18033 18034 if (includeDelayedCalls || !(!child._dur && child instanceof Tween && child.vars.onComplete === child._targets[0])) {
18035 _addToTimeline(tl, child, child._start - child._delay); 18036 } 18037 18038 child = next; 18039 } 18040 18041 _addToTimeline(_globalTimeline, tl, 0); 18042 18043 return tl; 18044 }, 18045 utils: { 18046 wrap: wrap, 18047 wrapYoyo: wrapYoyo, 18048 distribute: distribute, 18049 random: random, 18050 snap: snap, 18051 normalize: normalize, 18052 getUnit: getUnit, 18053 clamp: clamp, 18054 splitColor: splitColor, 18055 toArray: toArray, 18056 selector: selector, 18057 mapRange: mapRange, 18058 pipe: pipe, 18059 unitize: unitize, 18060 interpolate: interpolate, 18061 shuffle: shuffle 18062 }, 18063 install: _install, 18064 effects: _effects, 18065 ticker: _ticker, 18066 updateRoot: Timeline.updateRoot, 18067 plugins: _plugins, 18068 globalTimeline: _globalTimeline, 18069 core: { 18070 PropTween: PropTween, 18071 globals: _addGlobal, 18072 Tween: Tween, 18073 Timeline: Timeline, 18074 Animation: Animation, 18075 getCache: _getCache, 18076 _removeLinkedListItem: _removeLinkedListItem, 18077 suppressOverwrites: function suppressOverwrites(value) { 18078 return _suppressOverwrites = value; 18079 } 18080 } 18081 }; 18082 18083 _forEachName("to,from,fromTo,delayedCall,set,killTweensOf", function (name) { 18084 return _gsap[name] = Tween[name]; 18085 }); 18086 18087 _ticker.add(Timeline.updateRoot); 18088 18089 _quickTween = _gsap.to({}, { 18090 duration: 0 18091 }); 18092 18093 var _getPluginPropTween = function _getPluginPropTween(plugin, prop
vendor: 18,127 bytes, lines 18093-18661
18093) { 18094 var pt = plugin._pt; 18095 18096 while (pt && pt.p !== prop && pt.op !== prop && pt.fp !== prop) { 18097 pt = pt._next; 18098 } 18099 18100 return pt; 18101 }, 18102 _addModifiers = function _addModifiers(tween, modifiers) { 18103 var targets = tween._targets, 18104 p, 18105 i, 18106 pt; 18107 18108 for (p in modifiers) { 18109 i = targets.length; 18110 18111 while (i--) { 18112 pt = tween._ptLookup[i][p]; 18113 18114 if (pt && (pt = pt.d)) { 18115 if (pt._pt) { 18116 pt = _getPluginPropTween(pt, p); 18117 } 18118 18119 pt && pt.modifier && pt.modifier(modifiers[p], tween, targets[i], p); 18120 } 18121 } 18122 } 18123 }, 18124 _buildModifierPlugin = function _buildModifierPlugin(name, modifier) { 18125 return { 18126 name: name, 18127 rawVars: 1, 18128 init: function init(target, vars, tween) { 18129 tween._onInit = function (tween) { 18130 var temp, p; 18131 18132 if (_isString(vars)) { 18133 temp = {}; 18134 18135 _forEachName(vars, function (name) { 18136 return temp[name] = 1; 18137 }); 18138 18139 vars = temp; 18140 } 18141 18142 if (modifier) { 18143 temp = {}; 18144 18145 for (p in vars) { 18146 temp[p] = modifier(vars[p]); 18147 } 18148 18149 vars = temp; 18150 } 18151 18152 _addModifiers(tween, vars); 18153 }; 18154 } 18155 }; 18156 }; 18157 18158 var gsap = _gsap.registerPlugin({ 18159 name: "attr", 18160 init: function init(target, vars, tween, index, targets) { 18161 var p, pt; 18162 18163 for (p in vars) { 18164 pt = this.add(target, "setAttribute", (target.getAttribute(p) || 0) + "", vars[p], index, targets, 0, 0, p); 18165 pt && (pt.op = p); 18166 18167 this._props.push(p); 18168 } 18169 } 18170 }, { 18171 name: "endArray", 18172 init: function init(target, value) { 18173 var i = value.length; 18174 18175 while (i--) { 18176 this.add(target, i, target[i] || 0, value[i]); 18177 } 18178 } 18179 }, _buildModifierPlugin("roundProps", _roundModifier), _buildModifierPlugin("modifiers"), _buildModifierPlugin("snap", snap)) || _gsap; 18180 Tween.version = Timeline.version = gsap.version = "3.7.0"; 18181 _coreReady = 1; 18182 _windowExists() && _wake(); 18183 var Power0 = _easeMap.Power0, 18184 Power1 = _easeMap.Power1, 18185 Power2 = _easeMap.Power2, 18186 Power3 = _easeMap.Power3, 18187 Power4 = _easeMap.Power4, 18188 Linear = _easeMap.Linear, 18189 Quad = _easeMap.Quad, 18190 Cubic = _easeMap.Cubic, 18191 Quart = _easeMap.Quart, 18192 Quint = _easeMap.Quint, 18193 Strong = _easeMap.Strong, 18194 Elastic = _easeMap.Elastic, 18195 Back = _easeMap.Back, 18196 SteppedEase = _easeMap.SteppedEase, 18197 Bounce = _easeMap.Bounce, 18198 Sine = _easeMap.Sine, 18199 Expo = _easeMap.Expo, 18200 Circ = _easeMap.Circ; 18201 18202 var _win$1, 18203 _doc$1, 18204 _docElement, 18205 _pluginInitted, 18206 _tempDiv, 18207 _tempDivStyler, 18208 _recentSetterPlugin, 18209 _windowExists$1 = function _windowExists() { 18210 return typeof window !== "undefined"; 18211 }, 18212 _transformProps = {}, 18213 _RAD2DEG = 180 / Math.PI, 18214 _DEG2RAD = Math.PI / 180, 18215 _atan2 = Math.atan2, 18216 _bigNum$1 = 1e8, 18217 _capsExp = /([A-Z])/g, 18218 _horizontalExp = /(?:left|right|width|margin|padding|x)/i, 18219 _complexExp = /[\s,\(]\S/, 18220 _propertyAliases = { 18221 autoAlpha: "opacity,visibility", 18222 scale: "scaleX,scaleY", 18223 alpha: "opacity" 18224 }, 18225 _renderCSSProp = function _renderCSSProp(ratio, data) { 18226 return data.set(data.t, data.p, Math.round((data.s + data.c * ratio) * 10000) / 10000 + data.u, data); 18227 }, 18228 _renderPropWithEnd = function _renderPropWithEnd(ratio, data) { 18229 return data.set(data.t, data.p, ratio === 1 ? data.e : Math.round((data.s + data.c * ratio) * 10000) / 10000 + data.u, data); 18230 }, 18231 _renderCSSPropWithBeginning = function _renderCSSPropWithBeginning(ratio, data) { 18232 return data.set(data.t, data.p, ratio ? Math.round((data.s + data.c * ratio) * 10000) / 10000 + data.u : data.b, data); 18233 }, 18234 _renderRoundedCSSProp = function _renderRoundedCSSProp(ratio, data) { 18235 var value = data.s + data.c * ratio; 18236 data.set(data.t, data.p, ~~(value + (value < 0 ? -.5 : .5)) + data.u, data); 18237 }, 18238 _renderNonTweeningValue = function _renderNonTweeningValue(ratio, data) { 18239 return data.set(data.t, data.p, ratio ? data.e : data.b, data); 18240 }, 18241 _renderNonTweeningValueOnlyAtEnd = function _renderNonTweeningValueOnlyAtEnd(ratio, data) { 18242 return data.set(data.t, data.p, ratio !== 1 ? data.b : data.e, data); 18243 }, 18244 _setterCSSStyle = function _setterCSSStyle(target, property, value) { 18245 return target.style[property] = value; 18246 }, 18247 _setterCSSProp = function _setterCSSProp(target, property, value) { 18248 return target.style.setProperty(property, value); 18249 }, 18250 _setterTransform = function _setterTransform(target, property, value) { 18251 return target._gsap[property] = value; 18252 }, 18253 _setterScale = function _setterScale(target, property, value) { 18254 return target._gsap.scaleX = target._gsap.scaleY = value; 18255 }, 18256 _setterScaleWithRender = function _setterScaleWithRender(target, property, value, data, ratio) { 18257 var cache = target._gsap; 18258 cache.scaleX = cache.scaleY = value; 18259 cache.renderTransform(ratio, cache); 18260 }, 18261 _setterTransformWithRender = function _setterTransformWithRender(target, property, value, data, ratio) { 18262 var cache = target._gsap; 18263 cache[property] = value; 18264 cache.renderTransform(ratio, cache); 18265 }, 18266 _transformProp = "transform", 18267 _transformOriginProp = _transformProp + "Origin", 18268 _supports3D, 18269 _createElement = function _createElement(type, ns) { 18270 var e = _doc$1.createElementNS ? _doc$1.createElementNS((ns || "http://www.w3.org/1999/xhtml").replace(/^https/, "http"), type) : _doc$1.createElement(type); 18271 return e.style ? e : _doc$1.createElement(type); 18272 }, 18273 _getComputedProperty = function _getComputedProperty(target, property, skipPrefixFallback) { 18274 var cs = getComputedStyle(target); 18275 return cs[property] || cs.getPropertyValue(property.replace(_capsExp, "-$1").toLowerCase()) || cs.getPropertyValue(property) || !skipPrefixFallback && _getComputedProperty(target, _checkPropPrefix(property) || property, 1) || ""; 18276 }, 18277 _prefixes = "O,Moz,ms,Ms,Webkit".split(","), 18278 _checkPropPrefix = function _checkPropPrefix(property, element, preferPrefix) { 18279 var e = element || _tempDiv, 18280 s = e.style, 18281 i = 5; 18282 18283 if (property in s && !preferPrefix) { 18284 return property; 18285 } 18286 18287 property = property.charAt(0).toUpperCase() + property.substr(1); 18288 18289 while (i-- && !(_prefixes[i] + property in s)) {} 18290 18291 return i < 0 ? null : (i === 3 ? "ms" : i >= 0 ? _prefixes[i] : "") + property; 18292 }, 18293 _initCore = function _initCore() { 18294 if (_windowExists$1() && window.document) { 18295 _win$1 = window; 18296 _doc$1 = _win$1.document; 18297 _docElement = _doc$1.documentElement; 18298 _tempDiv = _createElement("div") || { 18299 style: {} 18300 }; 18301 _tempDivStyler = _createElement("div"); 18302 _transformProp = _checkPropPrefix(_transformProp); 18303 _transformOriginProp = _transformProp + "Origin"; 18304 _tempDiv.style.cssText = "border-width:0;line-height:0;position:absolute;padding:0"; 18305 _supports3D = !!_checkPropPrefix("perspective"); 18306 _pluginInitted = 1; 18307 } 18308 }, 18309 _getBBoxHack = function _getBBoxHack(swapIfPossible) { 18310 var svg = _createElement("svg", this.ownerSVGElement && this.ownerSVGElement.getAttribute("xmlns") || "http://www.w3.org/2000/svg"), 18311 oldParent = this.parentNode, 18312 oldSibling = this.nextSibling, 18313 oldCSS = this.style.cssText, 18314 bbox; 18315 18316 _docElement.appendChild(svg); 18317 18318 svg.appendChild(this); 18319 this.style.display = "block"; 18320 18321 if (swapIfPossible) { 18322 try { 18323 bbox = this.getBBox(); 18324 this._gsapBBox = this.getBBox; 18325 this.getBBox = _getBBoxHack; 18326 } catch (e) {} 18327 } else if (this._gsapBBox) { 18328 bbox = this._gsapBBox(); 18329 } 18330 18331 if (oldParent) { 18332 if (oldSibling) { 18333 oldParent.insertBefore(this, oldSibling); 18334 } else { 18335 oldParent.appendChild(this); 18336 } 18337 } 18338 18339 _docElement.removeChild(svg); 18340 18341 this.style.cssText = oldCSS; 18342 return bbox; 18343 }, 18344 _getAttributeFallbacks = function _getAttributeFallbacks(target, attributesArray) { 18345 var i = attributesArray.length; 18346 18347 while (i--) { 18348 if (target.hasAttribute(attributesArray[i])) { 18349 return target.getAttribute(attributesArray[i]); 18350 } 18351 } 18352 }, 18353 _getBBox = function _getBBox(target) { 18354 var bounds; 18355 18356 try { 18357 bounds = target.getBBox(); 18358 } catch (error) { 18359 bounds = _getBBoxHack.call(target, true); 18360 } 18361 18362 bounds && (bounds.width || bounds.height) || target.getBBox === _getBBoxHack || (bounds = _getBBoxHack.call(target, true)); 18363 return bounds && !bounds.width && !bounds.x && !bounds.y ? { 18364 x: +_getAttributeFallbacks(target, ["x", "cx", "x1"]) || 0, 18365 y: +_getAttributeFallbacks(target, ["y", "cy", "y1"]) || 0, 18366 width: 0, 18367 height: 0 18368 } : bounds; 18369 }, 18370 _isSVG = function _isSVG(e) { 18371 return !!(e.getCTM && (!e.parentNode || e.ownerSVGElement) && _getBBox(e)); 18372 }, 18373 _removeProperty = function _removeProperty(target, property) { 18374 if (property) { 18375 var style = target.style; 18376 18377 if (property in _transformProps && property !== _transformOriginProp) { 18378 property = _transformProp; 18379 } 18380 18381 if (style.removeProperty) { 18382 if (property.substr(0, 2) === "ms" || property.substr(0, 6) === "webkit") { 18383 property = "-" + property; 18384 } 18385 18386 style.removeProperty(property.replace(_capsExp, "-$1").toLowerCase()); 18387 } else { 18388 style.removeAttribute(property); 18389 } 18390 } 18391 }, 18392 _addNonTweeningPT = function _addNonTweeningPT(plugin, target, property, beginning, end, onlySetAtEnd) { 18393 var pt = new PropTween(plugin._pt, target, property, 0, 1, onlySetAtEnd ? _renderNonTweeningValueOnlyAtEnd : _renderNonTweeningValue); 18394 plugin._pt = pt; 18395 pt.b = beginning; 18396 pt.e = end; 18397 18398 plugin._props.push(property); 18399 18400 return pt; 18401 }, 18402 _nonConvertibleUnits = { 18403 deg: 1, 18404 rad: 1, 18405 turn: 1 18406 }, 18407 _convertToUnit = function _convertToUnit(target, property, value, unit) { 18408 var curValue = parseFloat(value) || 0, 18409 curUnit = (value + "").trim().substr((curValue + "").length) || "px", 18410 style = _tempDiv.style, 18411 horizontal = _horizontalExp.test(property), 18412 isRootSVG = target.tagName.toLowerCase() === "svg", 18413 measureProperty = (isRootSVG ? "client" : "offset") + (horizontal ? "Width" : "Height"), 18414 amount = 100, 18415 toPixels = unit === "px", 18416 toPercent = unit === "%", 18417 px, 18418 parent, 18419 cache, 18420 isSVG; 18421 18422 if (unit === curUnit || !curValue || _nonConvertibleUnits[unit] || _nonConvertibleUnits[curUnit]) { 18423 return curValue; 18424 } 18425 18426 curUnit !== "px" && !toPixels && (curValue = _convertToUnit(target, property, value, "px")); 18427 isSVG = target.getCTM && _isSVG(target); 18428 18429 if ((toPercent || curUnit === "%") && (_transformProps[property] || ~property.indexOf("adius"))) { 18430 px = isSVG ? target.getBBox()[horizontal ? "width" : "height"] : target[measureProperty]; 18431 return _round(toPercent ? curValue / px * amount : curValue / 100 * px); 18432 } 18433 18434 style[horizontal ? "width" : "height"] = amount + (toPixels ? curUnit : unit); 18435 parent = ~property.indexOf("adius") || unit === "em" && target.appendChild && !isRootSVG ? target : target.parentNode; 18436 18437 if (isSVG) { 18438 parent = (target.ownerSVGElement || {}).parentNode; 18439 } 18440 18441 if (!parent || parent === _doc$1 || !parent.appendChild) { 18442 parent = _doc$1.body; 18443 } 18444 18445 cache = parent._gsap; 18446 18447 if (cache && toPercent && cache.width && horizontal && cache.time === _ticker.time) { 18448 return _round(curValue / cache.width * amount); 18449 } else { 18450 (toPercent || curUnit === "%") && (style.position = _getComputedProperty(target, "position")); 18451 parent === target && (style.position = "static"); 18452 parent.appendChild(_tempDiv); 18453 px = _tempDiv[measureProperty]; 18454 parent.removeChild(_tempDiv); 18455 style.position = "absolute"; 18456 18457 if (horizontal && toPercent) { 18458 cache = _getCache(parent); 18459 cache.time = _ticker.time; 18460 cache.width = parent[measureProperty]; 18461 } 18462 } 18463 18464 return _round(toPixels ? px * curValue / amount : px && curValue ? amount / px * curValue : 0); 18465 }, 18466 _get = function _get(target, property, unit, uncache) { 18467 var value; 18468 _pluginInitted || _initCore(); 18469 18470 if (property in _propertyAliases && property !== "transform") { 18471 property = _propertyAliases[property]; 18472 18473 if (~property.indexOf(",")) { 18474 property = property.split(",")[0]; 18475 } 18476 } 18477 18478 if (_transformProps[property] && property !== "transform") { 18479 value = _parseTransform(target, uncache); 18480 value = property !== "transformOrigin" ? value[property] : value.svg ? value.origin : _firstTwoOnly(_getComputedProperty(target, _transformOriginProp)) + " " + value.zOrigin + "px"; 18481 } else { 18482 value = target.style[property]; 18483 18484 if (!value || value === "auto" || uncache || ~(value + "").indexOf("calc(")) { 18485 value = _specialProps[property] && _specialProps[property](target, property, unit) || _getComputedProperty(target, property) || _getProperty(target, property) || (property === "opacity" ? 1 : 0); 18486 } 18487 } 18488 18489 return unit && !~(value + "").trim().indexOf(" ") ? _convertToUnit(target, property, value, unit) + unit : value; 18490 }, 18491 _tweenComplexCSSString = function _tweenComplexCSSString(target, prop, start, end) { 18492 if (!start || start === "none") { 18493 var p = _checkPropPrefix(prop, target, 1), 18494 s = p && _getComputedProperty(target, p, 1); 18495 18496 if (s && s !== start) { 18497 prop = p; 18498 start = s; 18499 } else if (prop === "borderColor") { 18500 start = _getComputedProperty(target, "borderTopColor"); 18501 } 18502 } 18503 18504 var pt = new PropTween(this._pt, target.style, prop, 0, 1, _renderComplexString), 18505 index = 0, 18506 matchIndex = 0, 18507 a, 18508 result, 18509 startValues, 18510 startNum, 18511 color, 18512 startValue, 18513 endValue, 18514 endNum, 18515 chunk, 18516 endUnit, 18517 startUnit, 18518 relative, 18519 endValues; 18520 pt.b = start; 18521 pt.e = end; 18522 start += ""; 18523 end += ""; 18524 18525 if (end === "auto") { 18526 target.style[prop] = end; 18527 end = _getComputedProperty(target, prop) || end; 18528 target.style[prop] = start; 18529 } 18530 18531 a = [start, end]; 18532 18533 _colorStringFilter(a); 18534 18535 start = a[0]; 18536 end = a[1]; 18537 startValues = start.match(_numWithUnitExp) || []; 18538 endValues = end.match(_numWithUnitExp) || []; 18539 18540 if (endValues.length) { 18541 while (result = _numWithUnitExp.exec(end)) { 18542 endValue = result[0]; 18543 chunk = end.substring(index, result.index); 18544 18545 if (color) { 18546 color = (color + 1) % 5; 18547 } else if (chunk.substr(-5) === "rgba(" || chunk.substr(-5) === "hsla(") { 18548 color = 1; 18549 } 18550 18551 if (endValue !== (startValue = startValues[matchIndex++] || "")) { 18552 startNum = parseFloat(startValue) || 0; 18553 startUnit = startValue.substr((startNum + "").length); 18554 relative = endValue.charAt(1) === "=" ? +(endValue.charAt(0) + "1") : 0; 18555 18556 if (relative) { 18557 endValue = endValue.substr(2); 18558 } 18559 18560 endNum = parseFloat(endValue); 18561 endUnit = endValue.substr((endNum + "").length); 18562 index = _numWithUnitExp.lastIndex - endUnit.length; 18563 18564 if (!endUnit) { 18565 endUnit = endUnit || _config.units[prop] || startUnit; 18566 18567 if (index === end.length) { 18568 end += endUnit; 18569 pt.e += endUnit; 18570 } 18571 } 18572 18573 if (startUnit !== endUnit) { 18574 startNum = _convertToUnit(target, prop, startValue, endUnit) || 0; 18575 } 18576 18577 pt._pt = { 18578 _next: pt._pt, 18579 p: chunk || matchIndex === 1 ? chunk : ",", 18580 s: startNum, 18581 c: relative ? relative * endNum : endNum - startNum, 18582 m: color && color < 4 || prop === "zIndex" ? Math.round : 0 18583 }; 18584 } 18585 } 18586 18587 pt.c = index < end.length ? end.substring(index, end.length) : ""; 18588 } else { 18589 pt.r = prop === "display" && end === "none" ? _renderNonTweeningValueOnlyAtEnd : _renderNonTweeningValue; 18590 } 18591 18592 _relExp.test(end) && (pt.e = 0); 18593 this._pt = pt; 18594 return pt; 18595 }, 18596 _keywordToPercent = { 18597 top: "0%", 18598 bottom: "100%", 18599 left: "0%", 18600 right: "100%", 18601 center: "50%" 18602 }, 18603 _convertKeywordsToPercentages = function _convertKeywordsToPercentages(value) { 18604 var split = value.split(" "), 18605 x = split[0], 18606 y = split[1] || "50%"; 18607 18608 if (x === "top" || x === "bottom" || y === "left" || y === "right") { 18609 value = x; 18610 x = y; 18611 y = value; 18612 } 18613 18614 split[0] = _keywordToPercent[x] || x; 18615 split[1] = _keywordToPercent[y] || y; 18616 return split.join(" "); 18617 }, 18618 _renderClearProps = function _renderClearProps(ratio, data) { 18619 if (data.tween && data.tween._time === data.tween._dur) { 18620 var target = data.t, 18621 style = target.style, 18622 props = data.u, 18623 cache = target._gsap, 18624 prop, 18625 clearTransforms, 18626 i; 18627 18628 if (props === "all" || props === true) { 18629 style.cssText = ""; 18630 clearTransforms = 1; 18631 } else { 18632 props = props.split(","); 18633 i = props.length; 18634 18635 while (--i > -1) { 18636 prop = props[i]; 18637 18638 if (_transformProps[prop]) { 18639 clearTransforms = 1; 18640 prop = prop === "transformOrigin" ? _transformOriginProp : _transformProp; 18641 } 18642 18643 _removeProperty(target, prop); 18644 } 18645 } 18646 18647 if (clearTransforms) { 18648 _removeProperty(target, _transformProp); 18649 18650 if (cache) { 18651 cache.svg && target.removeAttribute("transform"); 18652 18653 _parseTransform(target, 1); 18654 18655 cache.uncache = 1; 18656 } 18657 } 18658 } 18659 }, 18660 _specialProps = { 18661 clearProps: function clearProps(plugin, target, property, endValue, tween) {
vendor: 3,001 bytes, lines 18662-18742
18662 if (tween.data !== "isFromStart") { 18663 var pt = plugin._pt = new PropTween(plugin._pt, target, property, 0, 0, _renderClearProps); 18664 pt.u = endValue; 18665 pt.pr = -10; 18666 pt.tween = tween; 18667 18668 plugin._props.push(property); 18669 18670 return 1; 18671 } 18672 } 18673 }, 18674 _identity2DMatrix = [1, 0, 0, 1, 0, 0], 18675 _rotationalProperties = {}, 18676 _isNullTransform = function _isNullTransform(value) { 18677 return value === "matrix(1, 0, 0, 1, 0, 0)" || value === "none" || !value; 18678 }, 18679 _getComputedTransformMatrixAsArray = function _getComputedTransformMatrixAsArray(target) { 18680 var matrixString = _getComputedProperty(target, _transformProp); 18681 18682 return _isNullTransform(matrixString) ? _identity2DMatrix : matrixString.substr(7).match(_numExp).map(_round); 18683 }, 18684 _getMatrix = function _getMatrix(target, force2D) { 18685 var cache = target._gsap || _getCache(target), 18686 style = target.style, 18687 matrix = _getComputedTransformMatrixAsArray(target), 18688 parent, 18689 nextSibling, 18690 temp, 18691 addedToDOM; 18692 18693 if (cache.svg && target.getAttribute("transform")) { 18694 temp = target.transform.baseVal.consolidate().matrix; 18695 matrix = [temp.a, temp.b, temp.c, temp.d, temp.e, temp.f]; 18696 return matrix.join(",") === "1,0,0,1,0,0" ? _identity2DMatrix : matrix; 18697 } else if (matrix === _identity2DMatrix && !target.offsetParent && target !== _docElement && !cache.svg) { 18698 temp = style.display; 18699 style.display = "block"; 18700 parent = target.parentNode; 18701 18702 if (!parent || !target.offsetParent) { 18703 addedToDOM = 1; 18704 nextSibling = target.nextSibling; 18705 18706 _docElement.appendChild(target); 18707 } 18708 18709 matrix = _getComputedTransformMatrixAsArray(target); 18710 temp ? style.display = temp : _removeProperty(target, "display"); 18711 18712 if (addedToDOM) { 18713 nextSibling ? parent.insertBefore(target, nextSibling) : parent ? parent.appendChild(target) : _docElement.removeChild(target); 18714 } 18715 } 18716 18717 return force2D && matrix.length > 6 ? [matrix[0], matrix[1], matrix[4], matrix[5], matrix[12], matrix[13]] : matrix; 18718 }, 18719 _applySVGOrigin = function _applySVGOrigin(target, origin, originIsAbsolute, smooth, matrixArray, pluginToAddPropTweensTo) { 18720 var cache = target._gsap, 18721 matrix = matrixArray || _getMatrix(target, true), 18722 xOriginOld = cache.xOrigin || 0, 18723 yOriginOld = cache.yOrigin || 0, 18724 xOffsetOld = cache.xOffset || 0, 18725 yOffsetOld = cache.yOffset || 0, 18726 a = matrix[0], 18727 b = matrix[1], 18728 c = matrix[2], 18729 d = matrix[3], 18730 tx = matrix[4], 18731 ty = matrix[5], 18732 originSplit = origin.split(" "), 18733 xOrigin = parseFloat(originSplit[0]) || 0, 18734 yOrigin = parseFloat(originSplit[1]) || 0, 18735 bounds, 18736 determinant, 18737 x, 18738 y; 18739 18740 if (!originIsAbsolute) { 18741 bounds = _getBBox(target); 18742 xOrigin = bounds.x + (~originSplit[0].indexOf("%") ? xOrigin / 100 * boun
vendor: 6,544 bytes, lines 18742-18950
18742ds.width : xOrigin); 18743 yOrigin = bounds.y + (~(originSplit[1] || originSplit[0]).indexOf("%") ? yOrigin / 100 * bounds.height : yOrigin); 18744 } else if (matrix !== _identity2DMatrix && (determinant = a * d - b * c)) { 18745 x = xOrigin * (d / determinant) + yOrigin * (-c / determinant) + (c * ty - d * tx) / determinant; 18746 y = xOrigin * (-b / determinant) + yOrigin * (a / determinant) - (a * ty - b * tx) / determinant; 18747 xOrigin = x; 18748 yOrigin = y; 18749 } 18750 18751 if (smooth || smooth !== false && cache.smooth) { 18752 tx = xOrigin - xOriginOld; 18753 ty = yOrigin - yOriginOld; 18754 cache.xOffset = xOffsetOld + (tx * a + ty * c) - tx; 18755 cache.yOffset = yOffsetOld + (tx * b + ty * d) - ty; 18756 } else { 18757 cache.xOffset = cache.yOffset = 0; 18758 } 18759 18760 cache.xOrigin = xOrigin; 18761 cache.yOrigin = yOrigin; 18762 cache.smooth = !!smooth; 18763 cache.origin = origin; 18764 cache.originIsAbsolute = !!originIsAbsolute; 18765 target.style[_transformOriginProp] = "0px 0px"; 18766 18767 if (pluginToAddPropTweensTo) { 18768 _addNonTweeningPT(pluginToAddPropTweensTo, cache, "xOrigin", xOriginOld, xOrigin); 18769 18770 _addNonTweeningPT(pluginToAddPropTweensTo, cache, "yOrigin", yOriginOld, yOrigin); 18771 18772 _addNonTweeningPT(pluginToAddPropTweensTo, cache, "xOffset", xOffsetOld, cache.xOffset); 18773 18774 _addNonTweeningPT(pluginToAddPropTweensTo, cache, "yOffset", yOffsetOld, cache.yOffset); 18775 } 18776 18777 target.setAttribute("data-svg-origin", xOrigin + " " + yOrigin); 18778 }, 18779 _parseTransform = function _parseTransform(target, uncache) { 18780 var cache = target._gsap || new GSCache(target); 18781 18782 if ("x" in cache && !uncache && !cache.uncache) { 18783 return cache; 18784 } 18785 18786 var style = target.style, 18787 invertedScaleX = cache.scaleX < 0, 18788 px = "px", 18789 deg = "deg", 18790 origin = _getComputedProperty(target, _transformOriginProp) || "0", 18791 x, 18792 y, 18793 z, 18794 scaleX, 18795 scaleY, 18796 rotation, 18797 rotationX, 18798 rotationY, 18799 skewX, 18800 skewY, 18801 perspective, 18802 xOrigin, 18803 yOrigin, 18804 matrix, 18805 angle, 18806 cos, 18807 sin, 18808 a, 18809 b, 18810 c, 18811 d, 18812 a12, 18813 a22, 18814 t1, 18815 t2, 18816 t3, 18817 a13, 18818 a23, 18819 a33, 18820 a42, 18821 a43, 18822 a32; 18823 x = y = z = rotation = rotationX = rotationY = skewX = skewY = perspective = 0; 18824 scaleX = scaleY = 1; 18825 cache.svg = !!(target.getCTM && _isSVG(target)); 18826 matrix = _getMatrix(target, cache.svg); 18827 18828 if (cache.svg) { 18829 t1 = (!cache.uncache || origin === "0px 0px") && !uncache && target.getAttribute("data-svg-origin"); 18830 18831 _applySVGOrigin(target, t1 || origin, !!t1 || cache.originIsAbsolute, cache.smooth !== false, matrix); 18832 } 18833 18834 xOrigin = cache.xOrigin || 0; 18835 yOrigin = cache.yOrigin || 0; 18836 18837 if (matrix !== _identity2DMatrix) { 18838 a = matrix[0]; 18839 b = matrix[1]; 18840 c = matrix[2]; 18841 d = matrix[3]; 18842 x = a12 = matrix[4]; 18843 y = a22 = matrix[5]; 18844 18845 if (matrix.length === 6) { 18846 scaleX = Math.sqrt(a * a + b * b); 18847 scaleY = Math.sqrt(d * d + c * c); 18848 rotation = a || b ? _atan2(b, a) * _RAD2DEG : 0; 18849 skewX = c || d ? _atan2(c, d) * _RAD2DEG + rotation : 0; 18850 skewX && (scaleY *= Math.abs(Math.cos(skewX * _DEG2RAD))); 18851 18852 if (cache.svg) { 18853 x -= xOrigin - (xOrigin * a + yOrigin * c); 18854 y -= yOrigin - (xOrigin * b + yOrigin * d); 18855 } 18856 } else { 18857 a32 = matrix[6]; 18858 a42 = matrix[7]; 18859 a13 = matrix[8]; 18860 a23 = matrix[9]; 18861 a33 = matrix[10]; 18862 a43 = matrix[11]; 18863 x = matrix[12]; 18864 y = matrix[13]; 18865 z = matrix[14]; 18866 angle = _atan2(a32, a33); 18867 rotationX = angle * _RAD2DEG; 18868 18869 if (angle) { 18870 cos = Math.cos(-angle); 18871 sin = Math.sin(-angle); 18872 t1 = a12 * cos + a13 * sin; 18873 t2 = a22 * cos + a23 * sin; 18874 t3 = a32 * cos + a33 * sin; 18875 a13 = a12 * -sin + a13 * cos; 18876 a23 = a22 * -sin + a23 * cos; 18877 a33 = a32 * -sin + a33 * cos; 18878 a43 = a42 * -sin + a43 * cos; 18879 a12 = t1; 18880 a22 = t2; 18881 a32 = t3; 18882 } 18883 18884 angle = _atan2(-c, a33); 18885 rotationY = angle * _RAD2DEG; 18886 18887 if (angle) { 18888 cos = Math.cos(-angle); 18889 sin = Math.sin(-angle); 18890 t1 = a * cos - a13 * sin; 18891 t2 = b * cos - a23 * sin; 18892 t3 = c * cos - a33 * sin; 18893 a43 = d * sin + a43 * cos; 18894 a = t1; 18895 b = t2; 18896 c = t3; 18897 } 18898 18899 angle = _atan2(b, a); 18900 rotation = angle * _RAD2DEG; 18901 18902 if (angle) { 18903 cos = Math.cos(angle); 18904 sin = Math.sin(angle); 18905 t1 = a * cos + b * sin; 18906 t2 = a12 * cos + a22 * sin; 18907 b = b * cos - a * sin; 18908 a22 = a22 * cos - a12 * sin; 18909 a = t1; 18910 a12 = t2; 18911 } 18912 18913 if (rotationX && Math.abs(rotationX) + Math.abs(rotation) > 359.9) { 18914 rotationX = rotation = 0; 18915 rotationY = 180 - rotationY; 18916 } 18917 18918 scaleX = _round(Math.sqrt(a * a + b * b + c * c)); 18919 scaleY = _round(Math.sqrt(a22 * a22 + a32 * a32)); 18920 angle = _atan2(a12, a22); 18921 skewX = Math.abs(angle) > 0.0002 ? angle * _RAD2DEG : 0; 18922 perspective = a43 ? 1 / (a43 < 0 ? -a43 : a43) : 0; 18923 } 18924 18925 if (cache.svg) { 18926 t1 = target.getAttribute("transform"); 18927 cache.forceCSS = target.setAttribute("transform", "") || !_isNullTransform(_getComputedProperty(target, _transformProp)); 18928 t1 && target.setAttribute("transform", t1); 18929 } 18930 } 18931 18932 if (Math.abs(skewX) > 90 && Math.abs(skewX) < 270) { 18933 if (invertedScaleX) { 18934 scaleX *= -1; 18935 skewX += rotation <= 0 ? 180 : -180; 18936 rotation += rotation <= 0 ? 180 : -180; 18937 } else { 18938 scaleY *= -1; 18939 skewX += skewX <= 0 ? 180 : -180; 18940 } 18941 } 18942 18943 cache.x = x - ((cache.xPercent = x && (cache.xPercent || (Math.round(target.offsetWidth / 2) === Math.round(-x) ? -50 : 0))) ? target.offsetWidth * cache.xPercent / 100 : 0) + px; 18944 cache.y = y - ((cache.yPercent = y && (cache.yPercent || (Math.round(target.offsetHeight / 2) === Math.round(-y) ? -50 : 0))) ? target.offsetHeight * cache.yPercent / 100 : 0) + px; 18945 cache.z = z + px; 18946 cache.scaleX = _round(scaleX); 18947 cache.scaleY = _round(scaleY); 18948 cache.rotation = _round(rotation) + deg; 18949 cache.rotationX = _round(rotationX) + deg; 18950 cache.rotationY = _round(rotationY) + deg;
vendor: 4,199 bytes, lines 18951-19078
18951 cache.skewX = skewX + deg; 18952 cache.skewY = skewY + deg; 18953 cache.transformPerspective = perspective + px; 18954 18955 if (cache.zOrigin = parseFloat(origin.split(" ")[2]) || 0) { 18956 style[_transformOriginProp] = _firstTwoOnly(origin); 18957 } 18958 18959 cache.xOffset = cache.yOffset = 0; 18960 cache.force3D = _config.force3D; 18961 cache.renderTransform = cache.svg ? _renderSVGTransforms : _supports3D ? _renderCSSTransforms : _renderNon3DTransforms; 18962 cache.uncache = 0; 18963 return cache; 18964 }, 18965 _firstTwoOnly = function _firstTwoOnly(value) { 18966 return (value = value.split(" "))[0] + " " + value[1]; 18967 }, 18968 _addPxTranslate = function _addPxTranslate(target, start, value) { 18969 var unit = getUnit(start); 18970 return _round(parseFloat(start) + parseFloat(_convertToUnit(target, "x", value + "px", unit))) + unit; 18971 }, 18972 _renderNon3DTransforms = function _renderNon3DTransforms(ratio, cache) { 18973 cache.z = "0px"; 18974 cache.rotationY = cache.rotationX = "0deg"; 18975 cache.force3D = 0; 18976 18977 _renderCSSTransforms(ratio, cache); 18978 }, 18979 _zeroDeg = "0deg", 18980 _zeroPx = "0px", 18981 _endParenthesis = ") ", 18982 _renderCSSTransforms = function _renderCSSTransforms(ratio, cache) { 18983 var _ref = cache || this, 18984 xPercent = _ref.xPercent, 18985 yPercent = _ref.yPercent, 18986 x = _ref.x, 18987 y = _ref.y, 18988 z = _ref.z, 18989 rotation = _ref.rotation, 18990 rotationY = _ref.rotationY, 18991 rotationX = _ref.rotationX, 18992 skewX = _ref.skewX, 18993 skewY = _ref.skewY, 18994 scaleX = _ref.scaleX, 18995 scaleY = _ref.scaleY, 18996 transformPerspective = _ref.transformPerspective, 18997 force3D = _ref.force3D, 18998 target = _ref.target, 18999 zOrigin = _ref.zOrigin, 19000 transforms = "", 19001 use3D = force3D === "auto" && ratio && ratio !== 1 || force3D === true; 19002 19003 if (zOrigin && (rotationX !== _zeroDeg || rotationY !== _zeroDeg)) { 19004 var angle = parseFloat(rotationY) * _DEG2RAD, 19005 a13 = Math.sin(angle), 19006 a33 = Math.cos(angle), 19007 cos; 19008 19009 angle = parseFloat(rotationX) * _DEG2RAD; 19010 cos = Math.cos(angle); 19011 x = _addPxTranslate(target, x, a13 * cos * -zOrigin); 19012 y = _addPxTranslate(target, y, -Math.sin(angle) * -zOrigin); 19013 z = _addPxTranslate(target, z, a33 * cos * -zOrigin + zOrigin); 19014 } 19015 19016 if (transformPerspective !== _zeroPx) { 19017 transforms += "perspective(" + transformPerspective + _endParenthesis; 19018 } 19019 19020 if (xPercent || yPercent) { 19021 transforms += "translate(" + xPercent + "%, " + yPercent + "%) "; 19022 } 19023 19024 if (use3D || x !== _zeroPx || y !== _zeroPx || z !== _zeroPx) { 19025 transforms += z !== _zeroPx || use3D ? "translate3d(" + x + ", " + y + ", " + z + ") " : "translate(" + x + ", " + y + _endParenthesis; 19026 } 19027 19028 if (rotation !== _zeroDeg) { 19029 transforms += "rotate(" + rotation + _endParenthesis; 19030 } 19031 19032 if (rotationY !== _zeroDeg) { 19033 transforms += "rotateY(" + rotationY + _endParenthesis; 19034 } 19035 19036 if (rotationX !== _zeroDeg) { 19037 transforms += "rotateX(" + rotationX + _endParenthesis; 19038 } 19039 19040 if (skewX !== _zeroDeg || skewY !== _zeroDeg) { 19041 transforms += "skew(" + skewX + ", " + skewY + _endParenthesis; 19042 } 19043 19044 if (scaleX !== 1 || scaleY !== 1) { 19045 transforms += "scale(" + scaleX + ", " + scaleY + _endParenthesis; 19046 } 19047 19048 target.style[_transformProp] = transforms || "translate(0, 0)"; 19049 }, 19050 _renderSVGTransforms = function _renderSVGTransforms(ratio, cache) { 19051 var _ref2 = cache || this, 19052 xPercent = _ref2.xPercent, 19053 yPercent = _ref2.yPercent, 19054 x = _ref2.x, 19055 y = _ref2.y, 19056 rotation = _ref2.rotation, 19057 skewX = _ref2.skewX, 19058 skewY = _ref2.skewY, 19059 scaleX = _ref2.scaleX, 19060 scaleY = _ref2.scaleY, 19061 target = _ref2.target, 19062 xOrigin = _ref2.xOrigin, 19063 yOrigin = _ref2.yOrigin, 19064 xOffset = _ref2.xOffset, 19065 yOffset = _ref2.yOffset, 19066 forceCSS = _ref2.forceCSS, 19067 tx = parseFloat(x), 19068 ty = parseFloat(y), 19069 a11, 19070 a21, 19071 a12, 19072 a22, 19073 temp; 19074 19075 rotation = parseFloat(rotation); 19076 skewX = parseFloat(skewX); 19077 skewY = parseFloat(skewY); 19078
vendor: 4,432 bytes, lines 19079-19227
19079 if (skewY) { 19080 skewY = parseFloat(skewY); 19081 skewX += skewY; 19082 rotation += skewY; 19083 } 19084 19085 if (rotation || skewX) { 19086 rotation *= _DEG2RAD; 19087 skewX *= _DEG2RAD; 19088 a11 = Math.cos(rotation) * scaleX; 19089 a21 = Math.sin(rotation) * scaleX; 19090 a12 = Math.sin(rotation - skewX) * -scaleY; 19091 a22 = Math.cos(rotation - skewX) * scaleY; 19092 19093 if (skewX) { 19094 skewY *= _DEG2RAD; 19095 temp = Math.tan(skewX - skewY); 19096 temp = Math.sqrt(1 + temp * temp); 19097 a12 *= temp; 19098 a22 *= temp; 19099 19100 if (skewY) { 19101 temp = Math.tan(skewY); 19102 temp = Math.sqrt(1 + temp * temp); 19103 a11 *= temp; 19104 a21 *= temp; 19105 } 19106 } 19107 19108 a11 = _round(a11); 19109 a21 = _round(a21); 19110 a12 = _round(a12); 19111 a22 = _round(a22); 19112 } else { 19113 a11 = scaleX; 19114 a22 = scaleY; 19115 a21 = a12 = 0; 19116 } 19117 19118 if (tx && !~(x + "").indexOf("px") || ty && !~(y + "").indexOf("px")) { 19119 tx = _convertToUnit(target, "x", x, "px"); 19120 ty = _convertToUnit(target, "y", y, "px"); 19121 } 19122 19123 if (xOrigin || yOrigin || xOffset || yOffset) { 19124 tx = _round(tx + xOrigin - (xOrigin * a11 + yOrigin * a12) + xOffset); 19125 ty = _round(ty + yOrigin - (xOrigin * a21 + yOrigin * a22) + yOffset); 19126 } 19127 19128 if (xPercent || yPercent) { 19129 temp = target.getBBox(); 19130 tx = _round(tx + xPercent / 100 * temp.width); 19131 ty = _round(ty + yPercent / 100 * temp.height); 19132 } 19133 19134 temp = "matrix(" + a11 + "," + a21 + "," + a12 + "," + a22 + "," + tx + "," + ty + ")"; 19135 target.setAttribute("transform", temp); 19136 forceCSS && (target.style[_transformProp] = temp); 19137 }, 19138 _addRotationalPropTween = function _addRotationalPropTween(plugin, target, property, startNum, endValue, relative) { 19139 var cap = 360, 19140 isString = _isString(endValue), 19141 endNum = parseFloat(endValue) * (isString && ~endValue.indexOf("rad") ? _RAD2DEG : 1), 19142 change = relative ? endNum * relative : endNum - startNum, 19143 finalValue = startNum + change + "deg", 19144 direction, 19145 pt; 19146 19147 if (isString) { 19148 direction = endValue.split("_")[1]; 19149 19150 if (direction === "short") { 19151 change %= cap; 19152 19153 if (change !== change % (cap / 2)) { 19154 change += change < 0 ? cap : -cap; 19155 } 19156 } 19157 19158 if (direction === "cw" && change < 0) { 19159 change = (change + cap * _bigNum$1) % cap - ~~(change / cap) * cap; 19160 } else if (direction === "ccw" && change > 0) { 19161 change = (change - cap * _bigNum$1) % cap - ~~(change / cap) * cap; 19162 } 19163 } 19164 19165 plugin._pt = pt = new PropTween(plugin._pt, target, property, startNum, change, _renderPropWithEnd); 19166 pt.e = finalValue; 19167 pt.u = "deg"; 19168 19169 plugin._props.push(property); 19170 19171 return pt; 19172 }, 19173 _assign = function _assign(target, source) { 19174 for (var p in source) { 19175 target[p] = source[p]; 19176 } 19177 19178 return target; 19179 }, 19180 _addRawTransformPTs = function _addRawTransformPTs(plugin, transforms, target) { 19181 var startCache = _assign({}, target._gsap), 19182 exclude = "perspective,force3D,transformOrigin,svgOrigin", 19183 style = target.style, 19184 endCache, 19185 p, 19186 startValue, 19187 endValue, 19188 startNum, 19189 endNum, 19190 startUnit, 19191 endUnit; 19192 19193 if (startCache.svg) { 19194 startValue = target.getAttribute("transform"); 19195 target.setAttribute("transform", ""); 19196 style[_transformProp] = transforms; 19197 endCache = _parseTransform(target, 1); 19198 19199 _removeProperty(target, _transformProp); 19200 19201 target.setAttribute("transform", startValue); 19202 } else { 19203 startValue = getComputedStyle(target)[_transformProp]; 19204 style[_transformProp] = transforms; 19205 endCache = _parseTransform(target, 1); 19206 style[_transformProp] = startValue; 19207 } 19208 19209 for (p in _transformProps) { 19210 startValue = startCache[p]; 19211 endValue = endCache[p]; 19212 19213 if (startValue !== endValue && exclude.indexOf(p) < 0) { 19214 startUnit = getUnit(startValue); 19215 endUnit = getUnit(endValue); 19216 startNum = startUnit !== endUnit ? _convertToUnit(target, p, startValue, endUnit) : parseFloat(startValue); 19217 endNum = parseFloat(endValue); 19218 plugin._pt = new PropTween(plugin._pt, endCache, p, startNum, endNum - startNum, _renderCSSProp); 19219 plugin._pt.u = endUnit || 0; 19220 19221 plugin._props.push(p); 19222 } 19223 } 19224 19225 _assign(endCache, startCache); 19226 }; 19227
vendor: 4,101 bytes, lines 19228-19350
19228 _forEachName("padding,margin,Width,Radius", function (name, index) { 19229 var t = "Top", 19230 r = "Right", 19231 b = "Bottom", 19232 l = "Left", 19233 props = (index < 3 ? [t, r, b, l] : [t + l, t + r, b + r, b + l]).map(function (side) { 19234 return index < 2 ? name + side : "border" + side + name; 19235 }); 19236 19237 _specialProps[index > 1 ? "border" + name : name] = function (plugin, target, property, endValue, tween) { 19238 var a, vars; 19239 19240 if (arguments.length < 4) { 19241 a = props.map(function (prop) { 19242 return _get(plugin, prop, property); 19243 }); 19244 vars = a.join(" "); 19245 return vars.split(a[0]).length === 5 ? a[0] : vars; 19246 } 19247 19248 a = (endValue + "").split(" "); 19249 vars = {}; 19250 props.forEach(function (prop, i) { 19251 return vars[prop] = a[i] = a[i] || a[(i - 1) / 2 | 0]; 19252 }); 19253 plugin.init(target, vars, tween); 19254 }; 19255 }); 19256 19257 var CSSPlugin = { 19258 name: "css", 19259 register: _initCore, 19260 targetTest: function targetTest(target) { 19261 return target.style && target.nodeType; 19262 }, 19263 init: function init(target, vars, tween, index, targets) { 19264 var props = this._props, 19265 style = target.style, 19266 startAt = tween.vars.startAt, 19267 startValue, 19268 endValue, 19269 endNum, 19270 startNum, 19271 type, 19272 specialProp, 19273 p, 19274 startUnit, 19275 endUnit, 19276 relative, 19277 isTransformRelated, 19278 transformPropTween, 19279 cache, 19280 smooth, 19281 hasPriority; 19282 _pluginInitted || _initCore(); 19283 19284 for (p in vars) { 19285 if (p === "autoRound") { 19286 continue; 19287 } 19288 19289 endValue = vars[p]; 19290 19291 if (_plugins[p] && _checkPlugin(p, vars, tween, index, target, targets)) { 19292 continue; 19293 } 19294 19295 type = typeof endValue; 19296 specialProp = _specialProps[p]; 19297 19298 if (type === "function") { 19299 endValue = endValue.call(tween, index, target, targets); 19300 type = typeof endValue; 19301 } 19302 19303 if (type === "string" && ~endValue.indexOf("random(")) { 19304 endValue = _replaceRandom(endValue); 19305 } 19306 19307 if (specialProp) { 19308 specialProp(this, target, p, endValue, tween) && (hasPriority = 1); 19309 } else if (p.substr(0, 2) === "--") { 19310 startValue = (getComputedStyle(target).getPropertyValue(p) + "").trim(); 19311 endValue += ""; 19312 _colorExp.lastIndex = 0; 19313 19314 if (!_colorExp.test(startValue)) { 19315 startUnit = getUnit(startValue); 19316 endUnit = getUnit(endValue); 19317 } 19318 19319 endUnit ? startUnit !== endUnit && (startValue = _convertToUnit(target, p, startValue, endUnit) + endUnit) : startUnit && (endValue += startUnit); 19320 this.add(style, "setProperty", startValue, endValue, index, targets, 0, 0, p); 19321 props.push(p); 19322 } else if (type !== "undefined") { 19323 if (startAt && p in startAt) { 19324 startValue = typeof startAt[p] === "function" ? startAt[p].call(tween, index, target, targets) : startAt[p]; 19325 p in _config.units && !getUnit(startValue) && (startValue += _config.units[p]); 19326 (startValue + "").charAt(1) === "=" && (startValue = _get(target, p)); 19327 } else { 19328 startValue = _get(target, p); 19329 } 19330 19331 startNum = parseFloat(startValue); 19332 relative = type === "string" && endValue.charAt(1) === "=" ? +(endValue.charAt(0) + "1") : 0; 19333 relative && (endValue = endValue.substr(2)); 19334 endNum = parseFloat(endValue); 19335 19336 if (p in _propertyAliases) { 19337 if (p === "autoAlpha") { 19338 if (startNum === 1 && _get(target, "visibility") === "hidden" && endNum) { 19339 startNum = 0; 19340 } 19341 19342 _addNonTweeningPT(this, style, "visibility", startNum ? "inherit" : "hidden", endNum ? "inherit" : "hidden", !endNum); 19343 } 19344 19345 if (p !== "scale" && p !== "transform") { 19346 p = _propertyAliases[p]; 19347 ~p.indexOf(",") && (p = p.split(",")[0]); 19348 } 19349 } 19350
vendor: 4,300 bytes, lines 19351-19444
19351 isTransformRelated = p in _transformProps; 19352 19353 if (isTransformRelated) { 19354 if (!transformPropTween) { 19355 cache = target._gsap; 19356 cache.renderTransform && !vars.parseTransform || _parseTransform(target, vars.parseTransform); 19357 smooth = vars.smoothOrigin !== false && cache.smooth; 19358 transformPropTween = this._pt = new PropTween(this._pt, style, _transformProp, 0, 1, cache.renderTransform, cache, 0, -1); 19359 transformPropTween.dep = 1; 19360 } 19361 19362 if (p === "scale") { 19363 this._pt = new PropTween(this._pt, cache, "scaleY", cache.scaleY, (relative ? relative * endNum : endNum - cache.scaleY) || 0); 19364 props.push("scaleY", p); 19365 p += "X"; 19366 } else if (p === "transformOrigin") { 19367 endValue = _convertKeywordsToPercentages(endValue); 19368 19369 if (cache.svg) { 19370 _applySVGOrigin(target, endValue, 0, smooth, 0, this); 19371 } else { 19372 endUnit = parseFloat(endValue.split(" ")[2]) || 0; 19373 endUnit !== cache.zOrigin && _addNonTweeningPT(this, cache, "zOrigin", cache.zOrigin, endUnit); 19374 19375 _addNonTweeningPT(this, style, p, _firstTwoOnly(startValue), _firstTwoOnly(endValue)); 19376 } 19377 19378 continue; 19379 } else if (p === "svgOrigin") { 19380 _applySVGOrigin(target, endValue, 1, smooth, 0, this); 19381 19382 continue; 19383 } else if (p in _rotationalProperties) { 19384 _addRotationalPropTween(this, cache, p, startNum, endValue, relative); 19385 19386 continue; 19387 } else if (p === "smoothOrigin") { 19388 _addNonTweeningPT(this, cache, "smooth", cache.smooth, endValue); 19389 19390 continue; 19391 } else if (p === "force3D") { 19392 cache[p] = endValue; 19393 continue; 19394 } else if (p === "transform") { 19395 _addRawTransformPTs(this, endValue, target); 19396 19397 continue; 19398 } 19399 } else if (!(p in style)) { 19400 p = _checkPropPrefix(p) || p; 19401 } 19402 19403 if (isTransformRelated || (endNum || endNum === 0) && (startNum || startNum === 0) && !_complexExp.test(endValue) && p in style) { 19404 startUnit = (startValue + "").substr((startNum + "").length); 19405 endNum || (endNum = 0); 19406 endUnit = getUnit(endValue) || (p in _config.units ? _config.units[p] : startUnit); 19407 startUnit !== endUnit && (startNum = _convertToUnit(target, p, startValue, endUnit)); 19408 this._pt = new PropTween(this._pt, isTransformRelated ? cache : style, p, startNum, relative ? relative * endNum : endNum - startNum, !isTransformRelated && (endUnit === "px" || p === "zIndex") && vars.autoRound !== false ? _renderRoundedCSSProp : _renderCSSProp); 19409 this._pt.u = endUnit || 0; 19410 19411 if (startUnit !== endUnit) { 19412 this._pt.b = startValue; 19413 this._pt.r = _renderCSSPropWithBeginning; 19414 } 19415 } else if (!(p in style)) { 19416 if (p in target) { 19417 this.add(target, p, startValue || target[p], endValue, index, targets); 19418 } else { 19419 _missingPlugin(p, endValue); 19420 19421 continue; 19422 } 19423 } else { 19424 _tweenComplexCSSString.call(this, target, p, startValue, endValue); 19425 } 19426 19427 props.push(p); 19428 } 19429 } 19430 19431 hasPriority && _sortPropTweensByPriority(this); 19432 }, 19433 get: _get, 19434 aliases: _propertyAliases, 19435 getSetter: function getSetter(target, property, plugin) { 19436 var p = _propertyAliases[property]; 19437 p && p.indexOf(",") < 0 && (property = p); 19438 return property in _transformProps && property !== _transformOriginProp && (target._gsap.x || _get(target, "x")) ? plugin && _recentSetterPlugin === plugin ? property === "scale" ? _setterScale : _setterTransform : (_recentSetterPlugin = plugin || {}) && (property === "scale" ? _setterScaleWithRender : _setterTransformWithRender) : target.style && !_isUndefined(target.style[property]) ? _setterCSSStyle : ~property.indexOf("-") ? _setterCSSProp : _getSetter(target, property); 19439 }, 19440 core: { 19441 _removeProperty: _removeProperty, 19442 _getMatrix: _getMatrix 19443 } 19444 };
vendor: 63,169 bytes, lines 19445-19514
19445 gsap.utils.checkPrefix = _checkPropPrefix; 19446 19447 (function (positionAndScale, rotation, others, aliases) { 19448 var all = _forEachName(positionAndScale + "," + rotation + "," + others, function (name) { 19449 _transformProps[name] = 1; 19450 }); 19451 19452 _forEachName(rotation, function (name) { 19453 _config.units[name] = "deg"; 19454 _rotationalProperties[name] = 1; 19455 }); 19456 19457 _propertyAliases[all[13]] = positionAndScale + "," + rotation; 19458 19459 _forEachName(aliases, function (name) { 19460 var split = name.split(":"); 19461 _propertyAliases[split[1]] = all[split[0]]; 19462 }); 19463 })("x,y,z,scale,scaleX,scaleY,xPercent,yPercent", "rotation,rotationX,rotationY,skewX,skewY", "transform,transformOrigin,svgOrigin,force3D,smoothOrigin,transformPerspective", "0:translateX,1:translateY,2:translateZ,8:rotate,8:rotationZ,8:rotateZ,9:rotateX,10:rotateY"); 19464 19465 _forEachName("x,y,z,top,right,bottom,left,width,height,fontSize,padding,margin,perspective", function (name) { 19466 _config.units[name] = "px"; 19467 }); 19468 19469 gsap.registerPlugin(CSSPlugin); 19470 19471 var gsapWithCSS = gsap.registerPlugin(CSSPlugin) || gsap, 19472 TweenMaxWithCSS = gsapWithCSS.core.Tween; 19473 19474 exports.Back = Back; 19475 exports.Bounce = Bounce; 19476 exports.CSSPlugin = CSSPlugin; 19477 exports.Circ = Circ; 19478 exports.Cubic = Cubic; 19479 exports.Elastic = Elastic; 19480 exports.Expo = Expo; 19481 exports.Linear = Linear; 19482 exports.Power0 = Power0; 19483 exports.Power1 = Power1; 19484 exports.Power2 = Power2; 19485 exports.Power3 = Power3; 19486 exports.Power4 = Power4; 19487 exports.Quad = Quad; 19488 exports.Quart = Quart; 19489 exports.Quint = Quint; 19490 exports.Sine = Sine; 19491 exports.SteppedEase = SteppedEase; 19492 exports.Strong = Strong; 19493 exports.TimelineLite = Timeline; 19494 exports.TimelineMax = Timeline; 19495 exports.TweenLite = Tween; 19496 exports.TweenMax = TweenMaxWithCSS; 19497 exports.default = gsapWithCSS; 19498 exports.gsap = gsapWithCSS; 19499 19500 if (typeof(window) === 'undefined' || window !== exports) {Object.defineProperty(exports, '__esModule', { value: true });} else {delete window.default;} 19501 19502}))); 19503 19504/*SIGUIENTE LIBRERIA*/ 19505/*! 19506 * GSAP 3.7.0 19507 * https://greensock.com 19508 * 19509 * @license Copyright 2021, GreenSock. All rights reserved. 19510 * Subject to the terms at https://greensock.com/standard-license or for Club GreenSock members, the agreement issued with that membership. 19511 * @author: Jack Doyle, [email protected] 19512 */ 19513 19514!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof define&&define.amd?define(["exports"],e):e((t=t||self).window=t.window||{})}(this,function(e){"use strict";function _inheritsLoose(t,e){t.prototype=Object.create(e.prototype),(t.prototype.constructor=t).__proto__=e}function _assertThisInitialized(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function o(t){return"string"==typeof t}function p(t){return"function"==typeof t}function q(t){return"number"==typeof t}function r(t){return void 0===t}function s(t){return"object"==typeof t}function t(t){return!1!==t}function u(){return"undefined"!=typeof window}function v(t){return p(t)||o(t)}function M(t){return(h=mt(t,ot))&&oe}function N(t,e){return console.warn("Invalid property",t,"set to",e,"Missing plugin? gsap.registerPlugin()")}function O(t,e){return!e&&console.warn(t)}function P(t,e){return t&&(ot[t]=e)&&h&&(h[t]=e)||ot}function Q(){return 0}function $(t){var e,r,i=t[0];if(s(i)||p(i)||(t=[t]),!(e=(i._gsap||{}).harness)){for(r=pt.length;r--&&!pt[r].targetTest(i););e=pt[r]}for(r=t.length;r--;)t[r]&&(t[r]._gsap||(t[r]._gsap=new Lt(t[r],e)))||t.splice(r,1);return t}function _(t){return t._gsap||$(xt(t))[0]._gsap}function aa(t,e,i){return(i=t[e])&&p(i)?t[e]():r(i)&&t.getAttribute&&t.getAttribute(e)||i}function ba(t,e){return(t=t.split(",")).forEach(e)||t}function ca(t){return Math.round(1e5*t)/1e5||0}function da(t,e){for(var r=e.length,i=0;t.indexOf(e[i])<0&&++i<r;);return i<r}function ea(){var t,e,r=ht.length,i=ht.slice(0);for(lt={},t=ht.length=0;t<r;t++)(e=i[t])&&e._lazy&&(e.render(e._lazy[0],e._lazy[1],!0)._lazy=0)}function fa(t,e,r,i){ht.length&&ea(),t.render(e,r,i),ht.length&&ea()}function ga(t){var e=parseFloat(t);return(e||0===e)&&(t+"").match(at).length<2?e:o(t)?t.trim():t}function ha(t){return t}function ia(t,e){for(var r in e)r in t||(t[r]=e[r]);return t}function ja(t,e){for(var r in e)r in t||"duration"===r||"ease"===r||(t[r]=e[r])}function la(t,e){for(var r in e)"__proto__"!==r&&"constructor"!==r&&"prototype"!==r&&(t[r]=s(e[r])?la(t[r]||(t[r]={}),e[r]):e[r]);return t}function ma(t,e){var r,i={};for(r in t)r in e||(i[r]=t[r]);return i}function na(e){var r=e.parent||R,i=e.keyframes?ja:ia;if(t(e.inherit))for(;r;)i(e,r.vars.defaults),r=r.parent||r._dp;return e}function qa(t,e,r,i){void 0===r&&(r="_first"),void 0===i&&(i="_last");var n=e._prev,a=e._next;n?n._next=a:t[r]===e&&(t[r]=a),a?a._prev=n:t[i]===e&&(t[i]=n),e._next=e._prev=e.parent=null}function ra(t,e){!t.parent||e&&!t.parent.autoRemoveChildren||t.parent.remove(t),t._act=0}function sa(t,e){if(t&&(!e||e._end>t._dur||e._start<0))for(var r=t;r;)r._dirty=1,r=r.parent;return t}function va(t){return t._repeat?gt(t._tTime,t=t.duration()+t._rDelay)*t:0}function xa(t,e){return(t-e._start)*e._ts+(0<=e._ts?0:e._dirty?e.totalDuration():e._tDur)}function ya(t){return t._end=ca(t._start+(t._tDur/Math.abs(t._ts||t._rts||U)||0))}function za(t,e){var r=t._dp;return r&&r.smoothChildTiming&&t._ts&&(t._start=ca(r._time-(0<t._ts?e/t._ts:((t._dirty?t.totalDuration():t._tDur)-e)/-t._ts)),ya(t),r._dirty||sa(r,t)),t}function Aa(t,e){var r;if((e._time||e._initted&&!e._dur)&&(r=xa(t.rawTime(),e),(!e._dur||Tt(0,e.totalDuration(),r)-e._tTime>U)&&e.render(r,!0)),sa(t,e)._dp&&t._initted&&t._time>=t._dur&&t._ts){if(t._dur<t.duration())for(r=t;r._dp;)0<=r.rawTime()&&r.totalTime(r._tTime),r=r._dp;t._zTime=-U}}function Ba(t,e,r,i){return e.parent&&ra(e),e._start=ca((q(r)?r:r||t!==R?bt(t,r,e):t._time)+e._delay),e._end=ca(e._start+(e.totalDuration()/Math.abs(e.timeScale())||0)),function _addLinkedListItem(t,e,r,i,n){void 0===r&&(r="_first"),void 0===i&&(i="_last");var a,s=t[i];if(n)for(a=e[n];s&&s[n]>a;)s=s._prev;s?(e._next=s._next,s._next=e):(e._next=t[r],t[r]=e),e._next?e._next._prev=e:t[i]=e,e._prev=s,e.parent=e._dp=t}(t,e,"_first","_last",t._sort?"_start":0),vt(e)||(t._recent=e),i||Aa(t,e),t}function Ca(t,e){return(ot.ScrollTrigger||N("scrollTrigger",e))&&ot.ScrollTrigger.create(e,t)}function Da(t,e,r,i){return Ut(t,e),t._initted?!r&&t._pt&&(t._dur&&!1!==t.vars.lazy||!t._dur&&t.vars.lazy)&&f!==Ct.frame?(ht.push(t),t._lazy=[e,i],1):void 0:1}function Ia(t,e,r,i){var n=t._repeat,a=ca(e)||0,s=t._tTime/t._tDur;return s&&!i&&(t._time*=a/t._dur),t._dur=a,t._tDur=n?n<0?1e10:ca(a*(n+1)+t._rDelay*n):a,s&&!i?za(t,t._tTime=t._tDur*s):t.parent&&ya(t),r||sa(t.parent,t),t}function Ja(t){return t instanceof qt?sa(t):Ia(t,t._dur)}function Ma(e,r,i){var n,a,s=q(r[1]),o=(s?2:1)+(e<2?0:1),u=r[o];if(s&&(u.duration=r[1]),u.parent=i,e){for(n=u,a=i;a&&!("immediateRender"in n);)n=a.vars.defaults||{},a=t(a.vars.inherit)&&a.parent;u.immediateRender=t(n.immediateRender),e<2?u.runBackwards=1:u.startAt=r[o-1]}return new Qt(r[0],u,r[1+o])}function Na(t,e){return t||0===t?e(t):e}function Pa(t){if("string"!=typeof t)return"";var e=st.exec(t);return e?t.substr(e.index+e[0].length):""}function Sa(t,e){return t&&s(t)&&"length"in t&&(!e&&!t.length||t.length-1 in t&&s(t[0]))&&!t.nodeType&&t!==i}function Wa(t){return t.sort(function(){return.5-Math.random()})}function Xa(t){if(p(t))return t;var _=s(t)?t:{each:t},m=Ft(_.ease),g=_.from||0,v=parseFloat(_.base)||0,y={},e=0<g&&g<1,b=isNaN(g)||e,T=_.axis,w=g,x=g;return o(g)?w=x={center:.5,edges:.5,end:1}[g]||0:!e&&b&&(w=g[0],x=g[1]),function(t,e,r){var i,n,a,s,o,u,h,l,f,d=(r||_).length,c=y[d];if(!c){if(!(f="auto"===_.grid?0:(_.grid||[1,X])[1])){for(h=-X;h<(h=r[f++].getBoundingClientRect().left)&&f<d;);f--}for(c=y[d]=[],i=b?Math.min(f,d)*w-.5:g%f,n=b?d*x/f-.5:g/f|0,l=X,u=h=0;u<d;u++)a=u%f-i,s=n-(u/f|0),c[u]=o=T?Math.abs("y"===T?s:a):G(a*a+s*s),h<o&&(h=o),o<l&&(l=o);"random"===g&&Wa(c),c.max=h-l,c.min=l,c.v=d=(parseFloat(_.amount)||parseFloat(_.each)*(d<f?d-1:T?"y"===T?d/f:f:Math.max(f,d/f))||0)*("edges"===g?-1:1),c.b=d<0?v-d:v,c.u=Pa(_.amount||_.each)||0,m=m&&d<0?Et(m):m}return d=(c[t]-c.min)/c.max||0,ca(c.b+(m?m(d):d)*c.v)+c.u}}function Ya(r){var i=r<1?Math.pow(10,(r+"").length-2):1;return function(t){var e=Math.round(parseFloat(t)/r)*r*i;return(e-e%1)/i+(q(t)?0:Pa(t))}}function Za(u,t){var h,l,e=H(u);return!e&&s(u)&&(h=e=u.radius||X,u.values?(u=xt(u.values),(l=!q(u[0]))&&(h*=h)):u=Ya(u.increment)),Na(t,e?p(u)?function(t){return l=u(t),Math.abs(l-t)<=h?l:t}:function(t){for(var e,r,i=parseFloat(l?t.x:t),n=parseFloat(l?t.y:0),a=X,s=0,o=u.length;o--;)(e=l?(e=u[o].x-i)*e+(r=u[o].y-n)*r:Math.abs(u[o]-i))<a&&(a=e,s=o);return s=!h||a<=h?u[s]:t,l||s===t||q(t)?s:s+Pa(t)}:Ya(u))}function $a(t,e,r,i){return Na(H(t)?!e:!0===r?!!(r=0):!i,function(){return H(t)?t[~~(Math.random()*t.length)]:(r=r||1e-5)&&(i=r<1?Math.pow(10,(r+"").length-2):1)&&Math.floor(Math.round((t-r/2+Math.random()*(e-t+.99*r))/r)*r*i)/i})}function cb(e,r,t){return Na(t,function(t){return e[~~r(t)]})}function fb(t){for(var e,r,i,n,a=0,s="";~(e=t.indexOf("random(",a));)i=t.indexOf(")",e),n="["===t.charAt(e+7),r=t.substr(e+7,i-e-7).match(n?at:tt),s+=t.substr(a,e-a)+$a(n?r:+r[0],n?0:+r[1],+r[2]||1e-5),a=i+1;return s+t.substr(a,t.length-a)}function ib(t,e,r){var i,n,a,s=t.labels,o=X;for(i in s)(n=s[i]-e)<0==!!r&&n&&o>(n=Math.abs(n))&&(a=i,o=n);return a}function kb(t){return ra(t),t.scrollTrigger&&t.scrollTrigger.kill(!1),t.progress()<1&&Pt(t,"onInterrupt"),t}function pb(t,e,r){return(6*(t=t<0?t+1:1<t?t-1:t)<1?e+(r-e)*t*6:t<.5?r:3*t<2?e+(r-e)*(2/3-t)*6:e)*kt+.5|0}function qb(t,e,r){var i,n,a,s,o,u,h,l,f,d,c=t?q(t)?[t>>16,t>>8&kt,t&kt]:0:Mt.black;if(!c){if(","===t.substr(-1)&&(t=t.substr(0,t.length-1)),Mt[t])c=Mt[t];else if("#"===t.charAt(0)){if(t.length<6&&(t="#"+(i=t.charAt(1))+i+(n=t.charAt(2))+n+(a=t.charAt(3))+a+(5===t.length?t.charAt(4)+t.charAt(4):"")),9===t.length)return[(c=parseInt(t.substr(1,6),16))>>16,c>>8&kt,c&kt,parseInt(t.substr(7),16)/255];c=[(t=parseInt(t.substr(1),16))>>16,t>>8&kt,t&kt]}else if("hsl"===t.substr(0,3))if(c=d=t.match(tt),e){if(~t.indexOf("="))return c=t.match(et),r&&c.length<4&&(c[3]=1),c}else s=+c[0]%360/360,o=c[1]/100,i=2*(u=c[2]/100)-(n=u<=.5?u*(o+1):u+o-u*o),3<c.length&&(c[3]*=1),c[0]=pb(s+1/3,i,n),c[1]=pb(s,i,n),c[2]=pb(s-1/3,i,n);else c=t.match(tt)||Mt.transparent;c=c.map(Number)}return e&&!d&&(i=c[0]/kt,n=c[1]/kt,a=c[2]/kt,u=((h=Math.max(i,n,a))+(l=Math.min(i,n,a)))/2,h===l?s=o=0:(f=h-l,o=.5<u?f/(2-h-l):f/(h+l),s=h===i?(n-a)/f+(n<a?6:0):h===n?(a-i)/f+2:(i-n)/f+4,s*=60),c[0]=~~(s+.5),c[1]=~~(100*o+.5),c[2]=~~(100*u+.5)),r&&c.length<4&&(c[3]=1),c}function rb(t){var r=[],i=[],n=-1;return t.split(At).forEach(function(t){var e=t.match(rt)||[];r.push.apply(r,e),i.push(n+=e.length+1)}),r.c=i,r}function sb(t,e,r){var i,n,a,s,o="",u=(t+o).match(At),h=e?"hsla(":"rgba(",l=0;if(!u)return t;if(u=u.map(function(t){return(t=qb(t,e,1))&&h+(e?t[0]+","+t[1]+"%,"+t[2]+"%,"+t[3]:t.join(","))+")"}),r&&(a=rb(t),(i=r.c).join(o)!==a.c.join(o)))for(s=(n=t.replace(At,"1").split(rt)).length-1;l<s;l++)o+=n[l]+(~i.indexOf(l)?u.shift()||h+"0,0,0,0)":(a.length?a:u.length?u:r).shift());if(!n)for(s=(n=t.split(At)).length-1;l<s;l++)o+=n[l]+u[l];return o+n[s]}function vb(t){var e,r=t.join(" ");if(At.lastIndex=0,At.test(r))return e=St.test(r),t[1]=sb(t[1],e),t[0]=sb(t[0],e,rb(t[1])),!0}function Eb(t){var e=(t+"").split("("),r=zt[e[0]];return r&&1<e.length&&r.config?r.config.apply(null,~t.indexOf("{")?[function _parseObjectInString(t){for(var e,r,i,n={},a=t.substr(1,t.length-3).split(":"),s=a[0],o=1,u=a.length;o<u;o++)r=a[o],e=o!==u-1?r.lastIndexOf(","):r.length,i=r.substr(0,e),n[s]=isNaN(i)?i.replace(Bt,"").trim():+i,s=r.substr(e+1).trim();return n}(e[1])]:function _valueInParentheses(t){var e=t.indexOf("(")+1,r=t.indexOf(")"),i=t.indexOf("(",e);return t.substring(e,~i&&i<r?t.indexOf(")",r+1):r)}(t).split(",").map(ga)):zt._CE&&It.test(t)?zt._CE("",t):r}function Gb(t,e){for(var r,i=t._first;i;)i instanceof qt?Gb(i,e):!i.vars.yoyoEase||i._yoyo&&i._repeat||i._yoyo===e||(i.timeline?Gb(i.timeline,e):(r=i._ease,i._ease=i._yEase,i._yEase=r,i._yoyo=e)),i=i._next}function Ib(t,e,r,i){void 0===r&&(r=function easeOut(t){return 1-e(1-t)}),void 0===i&&(i=function easeInOut(t){return t<.5?e(2*t)/2:1-e(2*(1-t))/2});var n,a={easeIn:e,easeOut:r,easeInOut:i};return ba(t,function(t){for(var e in zt[t]=ot[t]=a,zt[n=t.toLowerCase()]=r,a)zt[n+("easeIn"===e?".in":"easeOut"===e?".out":".inOut")]=zt[t+"."+e]=a[e]}),a}function Jb(e){return function(t){return t<.5?(1-e(1-2*t))/2:.5+e(2*(t-.5))/2}}function Kb(r,t,e){function Ol(t){return 1===t?1:i*Math.pow(2,-10*t)*J((t-a)*n)+1}var i=1<=t?t:1,n=(e||(r?.3:.45))/(t<1?t:1),a=n/V*(Math.asin(1/i)||0),s="out"===r?Ol:"in"===r?function(t){return 1-Ol(1-t)}:Jb(Ol);return n=V/n,s.config=function(t,e){return Kb(r,t,e)},s}function Lb(e,r){function Wl(t){return t?--t*t*((r+1)*t+r)+1:0}void 0===r&&(r=1.70158);var t="out"===e?Wl:"in"===e?function(t){return 1-Wl(1-t)}:Jb(Wl);return t.config=function(t){return Lb(e,t)},t}var F,R,i,n,a,h,l,f,d,c,m,g,y,b,T,w,x,k,A,S,C,D,z,I,B,E,Y={autoSleep:120,force3D:"auto",nullTargetWarn:1,units:{lineHeight:""}},L={duration:.5,overwrite:!1,delay:0},X=1e8,U=1/X,V=2*Math.PI,j=V/4,W=0,G=Math.sqrt,K=Math.cos,J=Math.sin,Z="function"==typeof ArrayBuffer&&ArrayBuffer.isView||function(){},H=Array.isArray,tt=/(?:-?\.?\d|\.)+/gi,et=/[-+=.]*\d+[.e\-+]*\d*[e\-+]*\d*/g,rt=/[-+=.]*\d+[.e-]*\d*[a-z%]*/g,it=/[-+=.]*\d+\.?\d*(?:e-|e\+)?\d*/gi,nt=/[+-]=-?[.\d]+/,at=/[^,'"\[\]\s]+/gi,st=/[\d.+\-=]+(?:e[-+]\d*)*/i,ot={},ut={},ht=[],lt={},ft={},dt={},ct=30,pt=[],_t="",mt=function _merge(t,e){for(var r in e)t[r]=e[r];return t},gt=function _animationCycle(t,e){var r=Math.floor(t/=e);return t&&r===t?r-1:r},vt=function _isFromOrFromStart(t){var e=t.data;return"isFromStart"===e||"isStart"===e},yt={_start:0,endTime:Q,totalDuration:Q},bt=function _parsePosition(t,e,r){var i,n,a,s=t.labels,u=t._recent||yt,h=t.duration()>=X?u.endTime(!1):t._dur;return o(e)&&(isNaN(e)||e in s)?(n=e.charAt(0),a="%"===e.substr(-1),i=e.indexOf("="),"<"===n||">"===n?(0<=i&&(e=e.replace(/=/,"")),("<"===n?u._start:u.endTime(0<=u._repeat))+(parseFloat(e.substr(1))||0)*(a?(i<0?u:r).totalDuration()/100:1)):i<0?(e in s||(s[e]=h),s[e]):(n=parseFloat(e.charAt(i-1)+e.substr(i+1)),a&&r&&(n=n/100*(H(r)?r[0]:r).totalDuration()),1<i?_parsePosition(t,e.substr(0,i-1),r)+n:h+n)):null==e?h:+e},Tt=function _clamp(t,e,r){return r<t?t:e<r?e:r},wt=[].slice,xt=function toArray(t,e,r){return!o(t)||r||!n&&Dt()?H(t)?function _flatten(t,e,r){return void 0===r&&(r=[]),t.forEach(function(t){return o(t)&&!e||Sa(t,1)?r.push.apply(r,xt(t)):r.push(t)})||r}(t,r):Sa(t)?wt.call(t,0):t?[t]:[]:wt.call((e||a).querySelectorAll(t),0)},Ot=function mapRange(e,t,r,i,n){var a=t-e,s=i-r;return Na(n,function(t){return r+((t-e)/a*s||0)})},Pt=function _callback(t,e,r){var i,n,a=t.vars,s=a[e];if(s)return i=a[e+"Params"],n=a.callbackScope||t,r&&ht.length&&ea(),i?s.apply(n,i):s.call(n)},kt=255,Mt={aqua:[0,kt,kt],lime:[0,kt,0],silver:[192,192,192],black:[0,0,0],maroon:[128,0,0],teal:[0,128,128],blue:[0,0,kt],navy:[0,0,128],white:[kt,kt,kt],olive:[128,128,0],yellow:[kt,kt,0],orange:[kt,165,0],gray:[128,128,128],purple:[128,0,128],green:[0,128,0],red:[kt,0,0],pink:[kt,192,203],cyan:[0,kt,kt],transparent:[kt,kt,kt,0]},At=function(){var t,e="(?:\\b(?:(?:rgb|rgba|hsl|hsla)\\(.+?\\))|\\B#(?:[0-9a-f]{3,4}){1,2}\\b";for(t in Mt)e+="|"+t+"\\b";return new RegExp(e+")","gi")}(),St=/hsl[a]?\(/,Ct=(x=Date.now,k=500,A=33,S=x(),C=S,z=D=1e3/240,b={time:0,frame:0,tick:function tick(){Kk(!0)},deltaRatio:function deltaRatio(t){return T/(1e3/(t||60))},wake:function wake(){l&&(!n&&u()&&(i=n=window,a=i.document||{},ot.gsap=oe,(i.gsapVersions||(i.gsapVersions=[])).push(oe.version),M(h||i.GreenSockGlobals||!i.gsap&&i||{}),y=i.requestAnimationFrame),m&&b.sleep(),g=y||function(t){return setTimeout(t,z-1e3*b.time+1|0)},c=1,Kk(2))},sleep:function sleep(){(y?i.cancelAnimationFrame:clearTimeout)(m),c=0,g=Q},lagSmoothing:function lagSmoothing(t,e){k=t||1e8,A=Math.min(e,k,0)},fps:function fps(t){D=1e3/(t||240),z=1e3*b.time+D},add:function add(t){I.indexOf(t)<0&&I.push(t),Dt()},remove:function remove(t){var e;~(e=I.indexOf(t))&&I.splice(e,1)&&e<=w&&w--},_listeners:I=[]}),Dt=function _wake(){return!c&&Ct.wake()},zt={},It=/^[\d.\-M][\d.\-,\s]/,Bt=/["']/g,Et=function _invertEase(e){return function(t){return 1-e(1-t)}},Ft=function _parseEase(t,e){return t&&(p(t)?t:zt[t]||Eb(t))||e};function Kk(t){var e,r,i,n,a=x()-C,s=!0===t;if(k<a&&(S+=a-A),(0<(e=(i=(C+=a)-S)-z)||s)&&(n=++b.frame,T=i-1e3*b.time,b.time=i/=1e3,z+=e+(D<=e?4:D-e),r=1),s||(m=g(Kk)),r)for(w=0;w<I.length;w++)I[w](i,T,n,t)}function lm(t){return t<E?B*t*t:t<.7272727272727273?B*Math.pow(t-1.5/2.75,2)+.75:t<.9090909090909092?B*(t-=2.25/2.75)*t+.9375:B*Math.pow(t-2.625/2.75,2)+.984375}ba("Linear,Quad,Cubic,Quart,Quint,Strong",function(t,e){var r=e<5?e+1:e;Ib(t+",Power"+(r-1),e?function(t){return Math.pow(t,r)}:function(t){return t},function(t){return 1-Math.pow(1-t,r)},function(t){return t<.5?Math.pow(2*t,r)/2:1-Math.pow(2*(1-t),r)/2})}),zt.Linear.easeNone=zt.none=zt.Linear.easeIn,Ib("Elastic",Kb("in"),Kb("out"),Kb()),B=7.5625,E=1/2.75,Ib("Bounce",function(t){return 1-lm(1-t)},lm),Ib("Expo",function(t){return t?Math.pow(2,10*(t-1)):0}),Ib("Circ",function(t){return-(G(1-t*t)-1)}),Ib("Sine",function(t){return 1===t?1:1-K(t*j)}),Ib("Back",Lb("in"),Lb("out"),Lb()),zt.SteppedEase=zt.steps=ot.SteppedEase={config:function config(t,e){void 0===t&&(t=1);var r=1/t,i=t+(e?0:1),n=e?1:0;return function(t){return((i*Tt(0,.99999999,t)|0)+n)*r}}},L.ease=zt["quad.out"],ba("onComplete,onUpdate,onStart,onRepeat,onReverseComplete,onInterrupt",function(t){return _t+=t+","+t+"Params,"});var Rt,Lt=function GSCache(t,e){this.id=W++,(t._gsap=this).target=t,this.harness=e,this.get=e?e.get:aa,this.set=e?e.getSetter:Jt},Nt=((Rt=Animation.prototype).delay=function delay(t){return t||0===t?(this.parent&&this.parent.smoothChildTiming&&this.startTime(this._start+t-this._delay),this._delay=t,this):this._delay},Rt.duration=function duration(t){return arguments.length?this.totalDuration(0<this._repeat?t+(t+this._rDelay)*this._repeat:t):this.totalDuration()&&this._dur},Rt.totalDuration=function totalDuration(t){return arguments.length?(this._dirty=0,Ia(this,this._repeat<0?t:(t-this._repeat*this._rDelay)/(this._repeat+1))):this._tDur},Rt.totalTime=function totalTime(t,e){if(Dt(),!arguments.length)return this._tTime;var r=this._dp;if(r&&r.smoothChildTiming&&this._ts){for(za(this,t),!r._dp||r.parent||Aa(r,this);r.parent;)r.parent._time!==r._start+(0<=r._ts?r._tTime/r._ts:(r.totalDuration()-r._tTime)/-r._ts)&&r.totalTime(r._tTime,!0),r=r.parent;!this.parent&&this._dp.autoRemoveChildren&&(0<this._ts&&t<this._tDur||this._ts<0&&0<t||!this._tDur&&!t)&&Ba(this._dp,this,this._start-this._delay)}return(this._tTime!==t||!this._dur&&!e||this._initted&&Math.abs(this._zTime)===U||!t&&!this._initted&&(this.add||this._ptLookup))&&(this._ts||(this._pTime=t),fa(this,t,e)),this},Rt.time=function time(t,e){return arguments.length?this.totalTime(Math.min(this.totalDuration(),t+va(this))%this._dur||(t?this._dur:0),e):this._time},Rt.totalProgress=function totalProgress(t,e){return arguments.length?this.totalTime(this.totalDuration()*t,e):this.totalDuration()?Math.min(1,this._tTime/this._tDur):this.ratio},Rt.progress=function progress(t,e){return arguments.length?this.totalTime(this.duration()*(!this._yoyo||1&this.iteration()?t:1-t)+va(this),e):this.duration()?Math.min(1,this._time/this._dur):this.ratio},Rt.iteration=function iteration(t,e){var r=this.duration()+this._rDelay;return arguments.length?this.totalTime(this._time+(t-1)*r,e):this._repeat?gt(this._tTime,r)+1:1},Rt.timeScale=function timeScale(t){if(!arguments.length)return this._rts===-U?0:this._rts;if(this._rts===t)return this;var e=this.parent&&this._ts?xa(this.parent._time,this):this._tTime;return this._rts=+t||0,this._ts=this._ps||t===-U?0:this._rts,function _recacheAncestors(t){for(var e=t.parent;e&&e.parent;)e._dirty=1,e.totalDuration(),e=e.parent;return t}(this.totalTime(Tt(-this._delay,this._tDur,e),!0))},Rt.paused=function paused(t){return arguments.length?(this._ps!==t&&((this._ps=t)?(this._pTime=this._tTime||Math.max(-this._delay,this.rawTime()),this._ts=this._act=0):(Dt(),this._ts=this._rts,this.totalTime(this.parent&&!this.parent.smoothChildTiming?this.rawTime():this._tTime||this._pTime,1===this.progress()&&(this._tTime-=U)&&Math.abs(this._zTime)!==U))),this):this._ps},Rt.startTime=function startTime(t){if(arguments.length){this._start=t;var e=this.parent||this._dp;return!e||!e._sort&&this.parent||Ba(e,this,t-this._delay),this}return this._start},Rt.endTime=function endTime(e){return this._start+(t(e)?this.totalDuration():this.duration())/Math.abs(this._ts)},Rt.rawTime=function rawTime(t){var e=this.parent||this._dp;return e?t&&(!this._ts||this._repeat&&this._time&&this.totalProgress()<1)?this._tTime%(this._dur+this._rDelay):this._ts?xa(e.rawTime(t),this):this._tTime:this._tTime},Rt.globalTime=function globalTime(t){for(var e=this,r=arguments.length?t:e.rawTime();e;)r=e._start+r/(e._ts||1),e=e._dp;return r},Rt.repeat=function repeat(t){return arguments.length?(this._repeat=t===1/0?-2:t,Ja(this)):-2===this._repeat?1/0:this._repeat},Rt.repeatDelay=function repeatDelay(t){return arguments.length?(this._rDelay=t,Ja(this)):this._rDelay},Rt.yoyo=function yoyo(t){return arguments.length?(this._yoyo=t,this):this._yoyo},Rt.seek=function seek(e,r){return this.totalTime(bt(this,e),t(r))},Rt.restart=function restart(e,r){return this.play().totalTime(e?-this._delay:0,t(r))},Rt.play=function play(t,e){return null!=t&&this.seek(t,e),this.reversed(!1).paused(!1)},Rt.reverse=function reverse(t,e){return null!=t&&this.seek(t||this.totalDuration(),e),this.reversed(!0).paused(!1)},Rt.pause=function pause(t,e){return null!=t&&this.seek(t,e),this.paused(!0)},Rt.resume=function resume(){return this.paused(!1)},Rt.reversed=function reversed(t){return arguments.length?(!!t!==this.reversed()&&this.timeScale(-this._rts||(t?-U:0)),this):this._rts<0},Rt.invalidate=function invalidate(){return this._initted=this._act=0,this._zTime=-U,this},Rt.isActive=function isActive(){var t,e=this.parent||this._dp,r=this._start;return!(e&&!(this._ts&&this._initted&&e.isActive()&&(t=e.rawTime(!0))>=r&&t<this.endTime(!0)-U))},Rt.eventCallback=function eventCallback(t,e,r){var i=this.vars;return 1<arguments.length?(e?(i[t]=e,r&&(i[t+"Params"]=r),"onUpdate"===t&&(this._onUpdate=e)):delete i[t],this):i[t]},Rt.then=function then(t){var i=this;return new Promise(function(e){function Bn(){var t=i.then;i.then=null,p(r)&&(r=r(i))&&(r.then||r===i)&&(i.then=t),e(r),i.then=t}var r=p(t)?t:ha;i._initted&&1===i.totalProgress()&&0<=i._ts||!i._tTime&&i._ts<0?Bn():i._prom=Bn})},Rt.kill=function kill(){kb(this)},Animation);function Animation(t){this.vars=t,this._delay=+t.delay||0,(this._repeat=t.repeat===1/0?-2:t.repeat||0)&&(this._rDelay=t.repeatDelay||0,this._yoyo=!!t.yoyo||!!t.yoyoEase),this._ts=1,Ia(this,+t.duration,1,1),this.data=t.data,c||Ct.wake()}ia(Nt.prototype,{_time:0,_start:0,_end:0,_tTime:0,_tDur:0,_dirty:0,_repeat:0,_yoyo:!1,parent:null,_initted:!1,_rDelay:0,_ts:1,_dp:0,ratio:0,_zTime:-U,_prom:0,_ps:!1,_rts:1});var qt=function(n){function Timeline(e,r){var i;return void 0===e&&(e={}),(i=n.call(this,e)||this).labels={},i.smoothChildTiming=!!e.smoothChildTiming,i.autoRemoveChildren=!!e.autoRemoveChildren,i._sort=t(e.sortChildren),R&&Ba(e.parent||R,_assertThisInitialized(i),r),e.reversed&&i.reverse(),e.paused&&i.paused(!0),e.scrollTrigger&&Ca(_assertThisInitialized(i),e.scrollTrigger),i}_inheritsLoose(Timeline,n);var e=Timeline.prototype;return e.to=function to(t,e,r){return Ma(0,arguments,this),this},e.from=function from(t,e,r){return Ma(1,arguments,this),this},e.fromTo=function fromTo(t,e,r,i){return Ma(2,arguments,this),this},e.set=function set(t,e,r){return e.duration=0,e.parent=this,na(e).repeatDelay||(e.repeat=0),e.immediateRender=!!e.immediateRender,new Qt(t,e,bt(this,r),1),this},e.call=function call(t,e,r){return Ba(this,Qt.delayedCall(0,t,e),r)},e.staggerTo=function staggerTo(t,e,r,i,n,a,s){return r.duration=e,r.stagger=r.stagger||i,r.onComplete=a,r.onCompleteParams=s,r.parent=this,new Qt(t,r,bt(this,n)),this},e.staggerFrom=function staggerFrom(e,r,i,n,a,s,o){return i.runBackwards=1,na(i).immediateRender=t(i.immediateRender),this.staggerTo(e,r,i,n,a,s,o)},e.staggerFromTo=function staggerFromTo(e,r,i,n,a,s,o,u){return n.startAt=i,na(n).immediateRender=t(n.immediateRender),this.staggerTo(e,r,n,a,s,o,u)},e.render=function render(t,e,r){var i,n,a,s,o,u,h,l,f,d,c,p,_=this._time,m=this._dirty?this.totalDuration():this._tDur,g=this._dur,v=this!==R&&m-U<t&&0<=t?m:t<U?0:t,y=this._zTime<0!=t<0&&(this._initted||!g);if(v!==this._tTime||r||y){if(_!==this._time&&g&&(v+=this._time-_,t+=this._time-_),i=v,f=this._start,u=!(l=this._ts),y&&(g||(_=this._zTime),!t&&e||(this._zTime=t)),this._repeat){if(c=this._yoyo,o=g+this._rDelay,this._repeat<-1&&t<0)return this.totalTime(100*o+t,e,r);if(i=ca(v%o),v===m?(s=this._repeat,i=g):((s=~~(v/o))&&s===v/o&&(i=g,s--),g<i&&(i=g)),d=gt(this._tTime,o),!_&&this._tTime&&d!==s&&(d=s),c&&1&s&&(i=g-i,p=1),s!==d&&!this._lock){var b=c&&1&d,T=b===(c&&1&s);if(s<d&&(b=!b),_=b?0:g,this._lock=1,this.render(_||(p?0:ca(s*o)),e,!g)._lock=0,this._tTime=v,!e&&this.parent&&Pt(this,"onRepeat"),this.vars.repeatRefresh&&!p&&(this.invalidate()._lock=1),_&&_!==this._time||u!=!this._ts||this.vars.onRepeat&&!this.parent&&!this._act)return this;if(g=this._dur,m=this._tDur,T&&(this._lock=2,_=b?g:-1e-4,this.render(_,!0),this.vars.repeatRefresh&&!p&&this.invalidate()),this._lock=0,!this._ts&&!u)return this;Gb(this,p)}}if(this._hasPause&&!this._forcing&&this._lock<2&&(h=function _findNextPauseTween(t,e,r){var i;if(e<r)for(i=t._first;i&&i._start<=r;){if(!i._dur&&"isPause"===i.data&&i._start>e)return i;i=i._next}else for(i=t._last;i&&i._start>=r;){if(!i._dur&&"isPause"===i.data&&i._start<e)return i;i=i._prev}}(this,ca(_),ca(i)))&&(v-=i-(i=h._start)),this._tTime=v,this._time=i,this._act=!l,this._initted||(this._onUpdate=this.vars.onUpdate,this._initted=1,this._zTime=t,_=0),!_&&i&&!e&&(Pt(this,"onStart"),this._tTime!==v))return this;if(_<=i&&0<=t)for(n=this._first;n;){if(a=n._next,(n._act||i>=n._start)&&n._ts&&h!==n){if(n.parent!==this)return this.render(t,e,r);if(n.render(0<n._ts?(i-n._start)*n._ts:(n._dirty?n.totalDuration():n._tDur)+(i-n._start)*n._ts,e,r),i!==this._time||!this._ts&&!u){h=0,a&&(v+=this._zTime=-U);break}}n=a}else{n=this._last;for(var w=t<0?t:i;n;){if(a=n._prev,(n._act||w<=n._end)&&n._ts&&h!==n){if(n.parent!==this)return this.render(t,e,r);if(n.render(0<n._ts?(w-n._start)*n._ts:(n._dirty?n.totalDuration():n._tDur)+(w-n._start)*n._ts,e,r),i!==this._time||!this._ts&&!u){h=0,a&&(v+=this._zTime=w?-U:U);break}}n=a}}if(h&&!e&&(this.pause(),h.render(_<=i?0:-U)._zTime=_<=i?1:-1,this._ts))return this._start=f,ya(this),this.render(t,e,r);this._onUpdate&&!e&&Pt(this,"onUpdate",!0),(v===m&&m>=this.totalDuration()||!v&&_)&&(f!==this._start&&Math.abs(l)===Math.abs(this._ts)||this._lock||(!t&&g||!(v===m&&0<this._ts||!v&&this._ts<0)||ra(this,1),e||t<0&&!_||!v&&!_&&m||(Pt(this,v===m&&0<=t?"onComplete":"onReverseComplete",!0),!this._prom||v<m&&0<this.timeScale()||this._prom())))}return this},e.add=function add(t,e){var r=this;if(q(e)||(e=bt(this,e,t)),!(t instanceof Nt)){if(H(t))return t.forEach(function(t){return r.add(t,e)}),this;if(o(t))return this.addLabel(t,e);if(!p(t))return this;t=Qt.delayedCall(0,t)}return this!==t?Ba(this,t,e):this},e.getChildren=function getChildren(t,e,r,i){void 0===t&&(t=!0),void 0===e&&(e=!0),void 0===r&&(r=!0),void 0===i&&(i=-X);for(var n=[],a=this._first;a;)a._start>=i&&(a instanceof Qt?e&&n.push(a):(r&&n.push(a),t&&n.push.apply(n,a.getChildren(!0,e,r)))),a=a._next;return n},e.getById=function getById(t){for(var e=this.getChildren(1,1,1),r=e.length;r--;)if(e[r].vars.id===t)return e[r]},e.remove=function remove(t){return o(t)?this.removeLabel(t):p(t)?this.killTweensOf(t):(qa(this,t),t===this._recent&&(this._recent=this._last),sa(this))},e.totalTime=function totalTime(t,e){return arguments.length?(this._forcing=1,!this._dp&&this._ts&&(this._start=ca(Ct.time-(0<this._ts?t/this._ts:(this.totalDuration()-t)/-this._ts))),n.prototype.totalTime.call(this,t,e),this._forcing=0,this):this._tTime},e.addLabel=function addLabel(t,e){return this.labels[t]=bt(this,e),this},e.removeLabel=function removeLabel(t){return delete this.labels[t],this},e.addPause=function addPause(t,e,r){var i=Qt.delayedCall(0,e||Q,r);return i.data="isPause",this._hasPause=1,Ba(this,i,bt(this,t))},e.removePause=function removePause(t){var e=this._first;for(t=bt(this,t);e;)e._start===t&&"isPause"===e.data&&ra(e),e=e._next},e.killTweensOf=function killTweensOf(t,e,r){for(var i=this.getTweensOf(t,r),n=i.length;n--;)Yt!==i[n]&&i[n].kill(t,e);return this},e.getTweensOf=function getTweensOf(t,e){for(var r,i=[],n=xt(t),a=this._first,s=q(e);a;)a instanceof Qt?da(a._targets,n)&&(s?(!Yt||a._initted&&a._ts)&&a.globalTime(0)<=e&&a.globalTime(a.totalDuration())>e:!e||a.isActive())&&i.push(a):(r=a.getTweensOf(n,e)).length&&i.push.apply(i,r),a=a._next;return i},e.tweenTo=function tweenTo(t,e){e=e||{};var r,i=this,n=bt(i,t),a=e.startAt,s=e.onStart,o=e.onStartParams,u=e.immediateRender,h=Qt.to(i,ia({ease:e.ease||"none",lazy:!1,immediateRender:!1,time:n,overwrite:"auto",duration:e.duration||Math.abs((n-(a&&"time"in a?a.time:i._time))/i.timeScale())||U,onStart:function onStart(){if(i.pause(),!r){var t=e.duration||Math.abs((n-(a&&"time"in a?a.time:i._time))/i.timeScale());h._dur!==t&&Ia(h,t,0,1).render(h._time,!0,!0),r=1}s&&s.apply(h,o||[])}},e));return u?h.render(0):h},e.tweenFromTo=function tweenFromTo(t,e,r){return this.tweenTo(e,ia({startAt:{time:bt(this,t)}},r))},e.recent=function recent(){return this._recent},e.nextLabel=function nextLabel(t){return void 0===t&&(t=this._time),ib(this,bt(this,t))},e.previousLabel=function previousLabel(t){return void 0===t&&(t=this._time),ib(this,bt(this,t),1)},e.currentLabel=function currentLabel(t){return arguments.length?this.seek(t,!0):this.previousLabel(this._time+U)},e.shiftChildren=function shiftChildren(t,e,r){void 0===r&&(r=0);for(var i,n=this._first,a=this.labels;n;)n._start>=r&&(n._start+=t,n._end+=t),n=n._next;if(e)for(i in a)a[i]>=r&&(a[i]+=t);return sa(this)},e.invalidate=function invalidate(){var t=this._first;for(this._lock=0;t;)t.invalidate(),t=t._next;return n.prototype.invalidate.call(this)},e.clear=function clear(t){void 0===t&&(t=!0);for(var e,r=this._first;r;)e=r._next,this.remove(r),r=e;return this._dp&&(this._time=this._tTime=this._pTime=0),t&&(this.labels={}),sa(this)},e.totalDuration=function totalDuration(t){var e,r,i,n=0,a=this,s=a._last,o=X;if(arguments.length)return a.timeScale((a._repeat<0?a.duration():a.totalDuration())/(a.reversed()?-t:t));if(a._dirty){for(i=a.parent;s;)e=s._prev,s._dirty&&s.totalDuration(),o<(r=s._start)&&a._sort&&s._ts&&!a._lock?(a._lock=1,Ba(a,s,r-s._delay,1)._lock=0):o=r,r<0&&s._ts&&(n-=r,(!i&&!a._dp||i&&i.smoothChildTiming)&&(a._start+=r/a._ts,a._time-=r,a._tTime-=r),a.shiftChildren(-r,!1,-Infinity),o=0),s._end>n&&s._ts&&(n=s._end),s=e;Ia(a,a===R&&a._time>n?a._time:n,1,1),a._dirty=0}return a._tDur},Timeline.updateRoot=function updateRoot(t){if(R._ts&&(fa(R,xa(t,R)),f=Ct.frame),Ct.frame>=ct){ct+=Y.autoSleep||120;var e=R._first;if((!e||!e._ts)&&Y.autoSleep&&Ct._listeners.length<2){for(;e&&!e._ts;)e=e._next;e||Ct.sleep()}}},Timeline}(Nt);ia(qt.prototype,{_lock:0,_hasPause:0,_forcing:0});function Sb(t,e,r,i,n,a){var u,h,l,f;if(ft[t]&&!1!==(u=new ft[t]).init(n,u.rawVars?e[t]:function _processVars(t,e,r,i,n){if(p(t)&&(t=Vt(t,n,e,r,i)),!s(t)||t.style&&t.nodeType||H(t)||Z(t))return o(t)?Vt(t,n,e,r,i):t;var a,u={};for(a in t)u[a]=Vt(t[a],n,e,r,i);return u}(e[t],i,n,a,r),r,i,a)&&(r._pt=h=new ae(r._pt,n,t,0,1,u.render,u,0,u.priority),r!==d))for(l=r._ptLookup[r._targets.indexOf(n)],f=u._props.length;f--;)l[u._props[f]]=h;return u}var Yt,Xt=function _addPropTween(t,e,r,i,n,a,s,u,h){p(i)&&(i=i(n||0,t,a));var l,f=t[e],d="get"!==r?r:p(f)?h?t[e.indexOf("set")||!p(t["get"+e.substr(3)])?e:"get"+e.substr(3)](h):t[e]():f,c=p(f)?h?$t:Kt:Gt;if(o(i)&&(~i.indexOf("random(")&&(i=fb(i)),"="===i.charAt(1)&&(!(l=parseFloat(d)+parseFloat(i.substr(2))*("-"===i.charAt(0)?-1:1)+(Pa(d)||0))&&0!==l||(i=l))),d!==i)return isNaN(d*i)||""===i?(f||e in t||N(e,i),function _addComplexStringPropTween(t,e,r,i,n,a,s){var o,u,h,l,f,d,c,p,_=new ae(this._pt,t,e,0,1,te,null,n),m=0,g=0;for(_.b=r,_.e=i,r+="",(c=~(i+="").indexOf("random("))&&(i=fb(i)),a&&(a(p=[r,i],t,e),r=p[0],i=p[1]),u=r.match(it)||[];o=it.exec(i);)l=o[0],f=i.substring(m,o.index),h?h=(h+1)%5:"rgba("===f.substr(-5)&&(h=1),l!==u[g++]&&(d=parseFloat(u[g-1])||0,_._pt={_next:_._pt,p:f||1===g?f:",",s:d,c:"="===l.charAt(1)?parseFloat(l.substr(2))*("-"===l.charAt(0)?-1:1):parseFloat(l)-d,m:h&&h<4?Math.round:0},m=it.lastIndex);return _.c=m<i.length?i.substring(m,i.length):"",_.fp=s,(nt.test(i)||c)&&(_.e=0),this._pt=_}.call(this,t,e,d,i,c,u||Y.stringFilter,h)):(l=new ae(this._pt,t,e,+d||0,i-(d||0),"boolean"==typeof f?Ht:Zt,0,c),h&&(l.fp=h),s&&l.modifier(s,this,t),this._pt=l)},Ut=function _initTween(e,r){var i,n,a,s,o,u,h,l,f,d,c,p,m,g=e.vars,v=g.ease,y=g.startAt,b=g.immediateRender,T=g.lazy,w=g.onUpdate,x=g.onUpdateParams,O=g.callbackScope,P=g.runBackwards,k=g.yoyoEase,M=g.keyframes,A=g.autoRevert,S=e._dur,C=e._startAt,D=e._targets,z=e.parent,I=z&&"nested"===z.data?z.parent._targets:D,B="auto"===e._overwrite&&!F,E=e.timeline;if(!E||M&&v||(v="none"),e._ease=Ft(v,L.ease),e._yEase=k?Et(Ft(!0===k?v:k,L.ease)):0,k&&e._yoyo&&!e._repeat&&(k=e._yEase,e._yEase=e._ease,e._ease=k),e._from=!E&&!!g.runBackwards,!E){if(p=(l=D[0]?_(D[0]).harness:0)&&g[l.prop],i=ma(g,ut),C&&C.render(-1,!0).kill(),y)if(ra(e._startAt=Qt.set(D,ia({data:"isStart",overwrite:!1,parent:z,immediateRender:!0,lazy:t(T),startAt:null,delay:0,onUpdate:w,onUpdateParams:x,callbackScope:O,stagger:0},y))),r<0&&!b&&!A&&e._startAt.render(-1,!0),b){if(0<r&&!A&&(e._startAt=0),S&&r<=0)return void(r&&(e._zTime=r))}else!1===A&&(e._startAt=0);else if(P&&S)if(C)A||(e._startAt=0);else if(r&&(b=!1),a=ia({overwrite:!1,data:"isFromStart",lazy:b&&t(T),immediateRender:b,stagger:0,parent:z},i),p&&(a[l.prop]=p),ra(e._startAt=Qt.set(D,a)),r<0&&e._startAt.render(-1,!0),b){if(!r)return}else _initTween(e._startAt,U);for(e._pt=0,T=S&&t(T)||T&&!S,n=0;n<D.length;n++){if(h=(o=D[n])._gsap||$(D)[n]._gsap,e._ptLookup[n]=d={},lt[h.id]&&ht.length&&ea(),c=I===D?n:I.indexOf(o),l&&!1!==(f=new l).init(o,p||i,e,c,I)&&(e._pt=s=new ae(e._pt,o,f.name,0,1,f.render,f,0,f.priority),f._props.forEach(function(t){d[t]=s}),f.priority&&(u=1)),!l||p)for(a in i)ft[a]&&(f=Sb(a,i,e,c,o,I))?f.priority&&(u=1):d[a]=s=Xt.call(e,o,a,"get",i[a],c,I,0,g.stringFilter);e._op&&e._op[n]&&e.kill(o,e._op[n]),B&&e._pt&&(Yt=e,R.killTweensOf(o,d,e.globalTime(0)),m=!e.parent,Yt=0),e._pt&&T&&(lt[h.id]=1)}u&&ne(e),e._onInit&&e._onInit(e)}e._onUpdate=w,e._initted=(!e._op||e._pt)&&!m},Vt=function _parseFuncOrString(t,e,r,i,n){return p(t)?t.call(e,r,i,n):o(t)&&~t.indexOf("random(")?fb(t):t},jt=_t+"repeat,repeatDelay,yoyo,repeatRefresh,yoyoEase",Wt=(jt+",id,stagger,delay,duration,paused,scrollTrigger").split(","),Qt=function(S){function Tween(e,r,i,n){var a;"number"==typeof r&&(i.duration=r,r=i,i=null);var o,u,h,l,f,d,c,p,_=(a=S.call(this,n?r:na(r))||this).vars,m=_.duration,g=_.delay,y=_.immediateRender,b=_.stagger,T=_.overwrite,w=_.keyframes,x=_.defaults,P=_.scrollTrigger,k=_.yoyoEase,M=r.parent||R,A=(H(e)||Z(e)?q(e[0]):"length"in r)?[e]:xt(e);if(a._targets=A.length?$(A):O("GSAP target "+e+" not found. https://greensock.com",!Y.nullTargetWarn)||[],a._ptLookup=[],a._overwrite=T,w||b||v(m)||v(g)){if(r=a.vars,(o=a.timeline=new qt({data:"nested",defaults:x||{}})).kill(),o.parent=o._dp=_assertThisInitialized(a),o._start=0,w)ia(o.vars.defaults,{ease:"none"}),b?A.forEach(function(r,i){return w.forEach(function(t,e){return o.to(r,t,e?">":i*b)})}):w.forEach(function(t){return o.to(A,t,">")});else{if(l=A.length,c=b?Xa(b):Q,s(b))for(f in b)~jt.indexOf(f)&&((p=p||{})[f]=b[f]);for(u=0;u<l;u++){for(f in h={},r)Wt.indexOf(f)<0&&(h[f]=r[f]);h.stagger=0,k&&(h.yoyoEase=k),p&&mt(h,p),d=A[u],h.duration=+Vt(m,_assertThisInitialized(a),u,d,A),h.delay=(+Vt(g,_assertThisInitialized(a),u,d,A)||0)-a._delay,!b&&1===l&&h.delay&&(a._delay=g=h.delay,a._start+=g,h.delay=0),o.to(d,h,c(u,d,A))}o.duration()?m=g=0:a.timeline=0}m||a.duration(m=o.duration())}else a.timeline=0;return!0!==T||F||(Yt=_assertThisInitialized(a),R.killTweensOf(A),Yt=0),Ba(M,_assertThisInitialized(a),i),r.reversed&&a.reverse(),r.paused&&a.paused(!0),(y||!m&&!w&&a._start===ca(M._time)&&t(y)&&function _hasNoPausedAncestors(t){return!t||t._ts&&_hasNoPausedAncestors(t.parent)}(_assertThisInitialized(a))&&"nested"!==M.data)&&(a._tTime=-U,a.render(Math.max(0,-g))),P&&Ca(_assertThisInitialized(a),P),a}_inheritsLoose(Tween,S);var e=Tween.prototype;return e.render=function render(t,e,r){var i,n,a,s,o,u,h,l,f,d=this._time,c=this._tDur,p=this._dur,_=c-U<t&&0<=t?c:t<U?0:t;if(p){if(_!==this._tTime||!t||r||!this._initted&&this._tTime||this._startAt&&this._zTime<0!=t<0){if(i=_,l=this.timeline,this._repeat){if(s=p+this._rDelay,this._repeat<-1&&t<0)return this.totalTime(100*s+t,e,r);if(i=ca(_%s),_===c?(a=this._repeat,i=p):((a=~~(_/s))&&a===_/s&&(i=p,a--),p<i&&(i=p)),(u=this._yoyo&&1&a)&&(f=this._yEase,i=p-i),o=gt(this._tTime,s),i===d&&!r&&this._initted)return this;a!==o&&(l&&this._yEase&&Gb(l,u),!this.vars.repeatRefresh||u||this._lock||(this._lock=r=1,this.render(ca(s*a),!0).invalidate()._lock=0))}if(!this._initted){if(Da(this,t<0?t:i,r,e))return this._tTime=0,this;if(p!==this._dur)return this.render(t,e,r)}if(this._tTime=_,this._time=i,!this._act&&this._ts&&(this._act=1,this._lazy=0),this.ratio=h=(f||this._ease)(i/p),this._from&&(this.ratio=h=1-h),!i||d||e||Pt(this,"onStart"),i&&!d&&!e&&(Pt(this,"onStart"),this._tTime!==_))return this;for(n=this._pt;n;)n.r(h,n.d),n=n._next;l&&l.render(t<0?t:!i&&u?-U:l._dur*h,e,r)||this._startAt&&(this._zTime=t),this._onUpdate&&!e&&(t<0&&this._startAt&&this._startAt.render(t,!0,r),Pt(this,"onUpdate")),this._repeat&&a!==o&&this.vars.onRepeat&&!e&&this.parent&&Pt(this,"onRepeat"),_!==this._tDur&&_||this._tTime!==_||(t<0&&this._startAt&&!this._onUpdate&&this._startAt.render(t,!0,!0),!t&&p||!(_===this._tDur&&0<this._ts||!_&&this._ts<0)||ra(this,1),e||t<0&&!d||!_&&!d||(Pt(this,_===c?"onComplete":"onReverseComplete",!0),!this._prom||_<c&&0<this.timeScale()||this._prom()))}}else!function _renderZeroDurationTween(t,e,r,i){var n,a,s,o=t.ratio,u=e<0||!e&&(!t._start&&function _parentPlayheadIsBeforeStart(t){var e=t.parent;return e&&e._ts&&e._initted&&!e._lock&&(e.rawTime()<0||_parentPlayheadIsBeforeStart(e))}(t)&&(t._initted||!vt(t))||(t._ts<0||t._dp._ts<0)&&!vt(t))?0:1,h=t._rDelay,l=0;if(h&&t._repeat&&(l=Tt(0,t._tDur,e),a=gt(l,h),s=gt(t._tTime,h),t._yoyo&&1&a&&(u=1-u),a!==s&&(o=1-u,t.vars.repeatRefresh&&t._initted&&t.invalidate())),u!==o||i||t._zTime===U||!e&&t._zTime){if(!t._initted&&Da(t,e,i,r))return;for(s=t._zTime,t._zTime=e||(r?U:0),r=r||e&&!s,t.ratio=u,t._from&&(u=1-u),t._time=0,t._tTime=l,n=t._pt;n;)n.r(u,n.d),n=n._next;t._startAt&&e<0&&t._startAt.render(e,!0,!0),t._onUpdate&&!r&&Pt(t,"onUpdate"),l&&t._repeat&&!r&&t.parent&&Pt(t,"onRepeat"),(e>=t._tDur||e<0)&&t.ratio===u&&(u&&ra(t,1),r||(Pt(t,u?"onComplete":"onReverseComplete",!0),t._prom&&t._prom()))}else t._zTime||(t._zTime=e)}(this,t,e,r);return this},e.targets=function targets(){return this._targets},e.invalidate=function invalidate(){return this._pt=this._op=this._startAt=this._onUpdate=this._lazy=this.ratio=0,this._ptLookup=[],this.timeline&&this.timeline.invalidate(),S.prototype.invalidate.call(this)},e.kill=function kill(t,e){if(void 0===e&&(e="all"),!(t||e&&"all"!==e))return this._lazy=this._pt=0,this.parent?kb(this):this;if(this.timeline){var r=this.timeline.totalDuration();return this.timeline.killTweensOf(t,e,Yt&&!0!==Yt.vars.overwrite)._first||kb(this),this.parent&&r!==this.timeline.totalDuration()&&Ia(this,this._dur*this.timeline._tDur/r,0,1),this}var i,n,a,s,u,h,l,f=this._targets,d=t?xt(t):f,c=this._ptLookup,p=this._pt;if((!e||"all"===e)&&function _arraysMatch(t,e){for(var r=t.length,i=r===e.length;i&&r--&&t[r]===e[r];);return r<0}(f,d))return"all"===e&&(this._pt=0),kb(this);for(i=this._op=this._op||[],"all"!==e&&(o(e)&&(u={},ba(e,function(t){return u[t]=1}),e=u),e=function _addAliasesToVars(t,e){var r,i,n,a,s=t[0]?_(t[0]).harness:0,o=s&&s.aliases;if(!o)return e;for(i in r=mt({},e),o)if(i in r)for(n=(a=o[i].split(",")).length;n--;)r[a[n]]=r[i];return r}(f,e)),l=f.length;l--;)if(~d.indexOf(f[l]))for(u in n=c[l],"all"===e?(i[l]=e,s=n,a={}):(a=i[l]=i[l]||{},s=e),s)(h=n&&n[u])&&("kill"in h.d&&!0!==h.d.kill(u)||qa(this,h,"_pt"),delete n[u]),"all"!==a&&(a[u]=1);return this._initted&&!this._pt&&p&&kb(this),this},Tween.to=function to(t,e,r){return new Tween(t,e,r)},Tween.from=function from(t,e){return Ma(1,arguments)},Tween.delayedCall=function delayedCall(t,e,r,i){return new Tween(e,0,{immediateRender:!1,lazy:!1,overwrite:!1,delay:t,onComplete:e,onReverseComplete:e,onCompleteParams:r,onReverseCompleteParams:r,callbackScope:i})},Tween.fromTo=function fromTo(t,e,r){return Ma(2,arguments)},Tween.set=function set(t,e){return e.duration=0,e.repeatDelay||(e.repeat=0),new Tween(t,e)},Tween.killTweensOf=function killTweensOf(t,e,r){return R.killTweensOf(t,e,r)},Tween}(Nt);ia(Qt.prototype,{_targets:[],_lazy:0,_startAt:0,_op:0,_onInit:0}),ba("staggerTo,staggerFrom,staggerFromTo",function(r){Qt[r]=function(){var t=new qt,e=wt.call(arguments,0);return e.splice("staggerFromTo"===r?5:4,0,0),t[r].apply(t,e)}});function bc(t,e,r){return t.setAttribute(e,r)}function jc(t,e,r,i){i.mSet(t,e,i.m.call(i.tween,r,i.mt),i)}var Gt=function _setterPlain(t,e,r){return t[e]=r},Kt=function _setterFunc(t,e,r){return t[e](r)},$t=function _setterFuncWithParam(t,e,r,i){return t[e](i.fp,r)},Jt=function _getSetter(t,e){return p(t[e])?Kt:r(t[e])&&t.setAttribute?bc:Gt},Zt=function _renderPlain(t,e){return e.set(e.t,e.p,Math.round(1e6*(e.s+e.c*t))/1e6,e)},Ht=function _renderBoolean(t,e){return e.set(e.t,e.p,!!(e.s+e.c*t),e)},te=function _renderComplexString(t,e){var r=e._pt,i="";if(!t&&e.b)i=e.b;else if(1===t&&e.e)i=e.e;else{for(;r;)i=r.p+(r.m?r.m(r.s+r.c*t):Math.round(1e4*(r.s+r.c*t))/1e4)+i,r=r._next;i+=e.c}e.set(e.t,e.p,i,e)},ee=function _renderPropTweens(t,e){for(var r=e._pt;r;)r.r(t,r.d),r=r._next},re=function _addPluginModifier(t,e,r,i){for(var n,a=this._pt;a;)n=a._next,a.p===i&&a.modifier(t,e,r),a=n},ie=function _killPropTweensOf(t){for(var e,r,i=this._pt;i;)r=i._next,i.p===t&&!i.op||i.op===t?qa(this,i,"_pt"):i.dep||(e=1),i=r;return!e},ne=function _sortPropTweensByPriority(t){for(var e,r,i,n,a=t._pt;a;){for(e=a._next,r=i;r&&r.pr>a.pr;)r=r._next;(a._prev=r?r._prev:n)?a._prev._next=a:i=a,(a._next=r)?r._prev=a:n=a,a=e}t._pt=i},ae=(PropTween.prototype.modifier=function modifier(t,e,r){this.mSet=this.mSet||this.set,this.set=jc,this.m=t,this.mt=r,this.tween=e},PropTween);function PropTween(t,e,r,i,n,a,s,o,u){this.t=e,this.s=i,this.c=n,this.p=r,this.r=a||Zt,this.d=s||this,this.set=o||Gt,this.pr=u||0,(this._next=t)&&(t._prev=this)}ba(_t+"parent,duration,ease,delay,overwrite,runBackwards,startAt,yoyo,immediateRender,repeat,repeatDelay,data,paused,reversed,lazy,callbackScope,stringFilter,id,yoyoEase,stagger,inherit,repeatRefresh,keyframes,autoRevert,scrollTrigger",function(t){return ut[t]=1}),ot.TweenMax=ot.TweenLite=Qt,ot.TimelineLite=ot.TimelineMax=qt,R=new qt({sortChildren:!1,defaults:L,autoRemoveChildren:!0,id:"root",smoothChildTiming:!0}),Y.stringFilter=vb;var se={registerPlugin:function registerPlugin(){for(var t=arguments.length,e=new Array(t),r=0;r<t;r++)e[r]=arguments[r];e.forEach(function(t){return function _createPlugin(t){var e=(t=!t.name&&t.default||t).name,r=p(t),i=e&&!r&&t.init?function(){this._props=[]}:t,n={init:Q,render:ee,add:Xt,kill:ie,modifier:re,rawVars:0},a={targetTest:0,get:0,getSetter:Jt,aliases:{},register:0};if(Dt(),t!==i){if(ft[e])return;ia(i,ia(ma(t,n),a)),mt(i.prototype,mt(n,ma(t,a))),ft[i.prop=e]=i,t.targetTest&&(pt.push(i),ut[e]=1),e=("css"===e?"CSS":e.charAt(0).toUpperCase()+e.substr(1))+"Plugin"}P(e,i),t.register&&t.register(oe,i,ae)}(t)})},timeline:function timeline(t){return new qt(t)},getTweensOf:function getTweensOf(t,e){return R.getTweensOf(t,e)},getProperty:function getProperty(i,t,e,r){o(i)&&(i=xt(i)[0]);var n=_(i||{}).get,a=e?ha:ga;return"native"===e&&(e=""),i?t?a((ft[t]&&ft[t].get||n)(i,t,e,r)):function(t,e,r){return a((ft[t]&&ft[t].get||n)(i,t,e,r))}:i},quickSetter:function quickSetter(r,e,i){if(1<(r=xt(r)).length){var n=r.map(function(t){return oe.quickSetter(t,e,i)}),a=n.length;return function(t){for(var e=a;e--;)n[e](t)}}r=r[0]||{};var s=ft[e],o=_(r),u=o.harness&&(o.harness.aliases||{})[e]||e,h=s?function(t){var e=new s;d._pt=0,e.init(r,i?t+i:t,d,0,[r]),e.render(1,e),d._pt&&ee(1,d)}:o.set(r,u);return s?h:function(t){return h(r,u,i?t+i:t,o,1)}},isTweening:function isTweening(t){return 0<R.getTweensOf(t,!0).length},defaults:function defaults(t){return t&&t.ease&&(t.ease=Ft(t.ease,L.ease)),la(L,t||{})},config:function config(t){return la(Y,t||{})},registerEffect:function registerEffect(t){var i=t.name,n=t.effect,e=t.plugins,a=t.defaults,r=t.extendTimeline;(e||"").split(",").forEach(function(t){return t&&!ft[t]&&!ot[t]&&O(i+" effect requires "+t+" plugin.")}),dt[i]=function(t,e,r){return n(xt(t),ia(e||{},a),r)},r&&(qt.prototype[i]=function(t,e,r){return this.add(dt[i](t,s(e)?e:(r=e)&&{},this),r)})},registerEase:function registerEase(t,e){zt[t]=Ft(e)},parseEase:function parseEase(t,e){return arguments.length?Ft(t,e):zt},getById:function getById(t){return R.getById(t)},exportRoot:function exportRoot(e,r){void 0===e&&(e={});var i,n,a=new qt(e);for(a.smoothChildTiming=t(e.smoothChildTiming),R.remove(a),a._dp=0,a._time=a._tTime=R._time,i=R._first;i;)n=i._next,!r&&!i._dur&&i instanceof Qt&&i.vars.onComplete===i._targets[0]||Ba(a,i,i._start-i._delay),i=n;return Ba(R,a,0),a},utils:{wrap:function wrap(e,t,r){var i=t-e;return H(e)?cb(e,wrap(0,e.length),t):Na(r,function(t){return(i+(t-e)%i)%i+e})},wrapYoyo:function wrapYoyo(e,t,r){var i=t-e,n=2*i;return H(e)?cb(e,wrapYoyo(0,e.length-1),t):Na(r,function(t){return e+(i<(t=(n+(t-e)%n)%n||0)?n-t:t)})},distribute:Xa,random:$a,snap:Za,normalize:function normalize(t,e,r){return Ot(t,e,0,1,r)},getUnit:Pa,clamp:function clamp(e,r,t){return Na(t,function(t){return Tt(e,r,t)})},splitColor:qb,toArray:xt,selector:function selector(r){return r=xt(r)[0]||O("Invalid scope")||{},function(t){var e=r.current||r.nativeElement||r;return xt(t,e.querySelectorAll?e:e===r?O("Invalid scope")||a.createElement("div"):r)}},mapRange:Ot,pipe:function pipe(){for(var t=arguments.length,e=new Array(t),r=0;r<t;r++)e[r]=arguments[r];return function(t){return e.reduce(function(t,e){return e(t)},t)}},unitize:function unitize(e,r){return function(t){return e(parseFloat(t))+(r||Pa(t))}},interpolate:function interpolate(e,r,t,i){var n=isNaN(e+r)?0:function(t){return(1-t)*e+t*r};if(!n){var a,s,u,h,l,f=o(e),d={};if(!0===t&&(i=1)&&(t=null),f)e={p:e},r={p:r};else if(H(e)&&!H(r)){for(u=[],h=e.length,l=h-2,s=1;s<h;s++)u.push(interpolate(e[s-1],e[s]));h--,n=function func(t){t*=h;var e=Math.min(l,~~t);return u[e](t-e)},t=r}else i||(e=mt(H(e)?[]:{},e));if(!u){for(a in r)Xt.call(d,e,a,"get",r[a]);n=function func(t){return ee(t,d)||(f?e.p:e)}}}return Na(t,n)},shuffle:Wa},install:M,effects:dt,ticker:Ct,updateRoot:qt.updateRoot,plugins:ft,globalTimeline:R,core:{PropTween:ae,globals:P,Tween:Qt,Timeline:qt,Animation:Nt,getCache:_,_removeLinkedListItem:qa,suppressOverwrites:function suppressOverwrites(t){return F=t}}};ba("to,from,fromTo,delayedCall,set,killTweensOf",function(t){return se[t]=Qt[t]}),Ct.add(qt.updateRoot),d=se.to({},{duration:0});function nc(t,e){for(var r=t._pt;r&&r.p!==e&&r.op!==e&&r.fp!==e;)r=r._next;return r}function pc(t,n){return{name:t,rawVars:1,init:function init(t,i,e){e._onInit=function(t){var e,r;if(o(i)&&(e={},ba(i,function(t){return e[t]=1}),i=e),n){for(r in e={},i)e[r]=n(i[r]);i=e}!function _addModifiers(t,e){var r,i,n,a=t._targets;for(r in e)for(i=a.length;i--;)(n=(n=t._ptLookup[i][r])&&n.d)&&(n._pt&&(n=nc(n,r)),n&&n.modifier&&n.modifier(e[r],t,a[i],r))}(t,i)}}}}var oe=se.registerPlugin({name:"attr",init:function init(t,e,r,i,n){var a,s;for(a in e)(s=this.add(t,"setAttribute",(t.getAttribute(a)||0)+"",e[a],i,n,0,0,a))&&(s.op=a),this._props.push(a)}},{name:"endArray",init:function init(t,e){for(var r=e.length;r--;)this.add(t,r,t[r]||0,e[r])}},pc("roundProps",Ya),pc("modifiers"),pc("snap",Za))||se;Qt.version=qt.version=oe.version="3.7.0",l=1,u()&&Dt();function $c(t,e){return e.set(e.t,e.p,Math.round(1e4*(e.s+e.c*t))/1e4+e.u,e)}function _c(t,e){return e.set(e.t,e.p,1===t?e.e:Math.round(1e4*(e.s+e.c*t))/1e4+e.u,e)}function ad(t,e){return e.set(e.t,e.p,t?Math.round(1e4*(e.s+e.c*t))/1e4+e.u:e.b,e)}function bd(t,e){var r=e.s+e.c*t;e.set(e.t,e.p,~~(r+(r<0?-.5:.5))+e.u,e)}function cd(t,e){return e.set(e.t,e.p,t?e.e:e.b,e)}function dd(t,e){return e.set(e.t,e.p,1!==t?e.b:e.e,e)}function ed(t,e,r){return t.style[e]=r}function fd(t,e,r){return t.style.setProperty(e,r)}function gd(t,e,r){return t._gsap[e]=r}function hd(t,e,r){return t._gsap.scaleX=t._gsap.scaleY=r}function id(t,e,r,i,n){var a=t._gsap;a.scaleX=a.scaleY=r,a.renderTransform(n,a)}function jd(t,e,r,i,n){var a=t._gsap;a[e]=r,a.renderTransform(n,a)}function nd(t,e){var r=he.createElementNS?he.createElementNS((e||"http://www.w3.org/1999/xhtml").replace(/^https/,"http"),t):he.createElement(t);return r.style?r:he.createElement(t)}function od(t,e,r){var i=getComputedStyle(t);return i[e]||i.getPropertyValue(e.replace(Re,"-$1").toLowerCase())||i.getPropertyValue(e)||!r&&od(t,Ve(e)||e,1)||""}function rd(){(function _windowExists(){return"undefined"!=typeof window})()&&window.document&&(ue=window,he=ue.document,le=he.documentElement,de=nd("div")||{style:{}},nd("div"),Ye=Ve(Ye),Xe=Ye+"Origin",de.style.cssText="border-width:0;line-height:0;position:absolute;padding:0",pe=!!Ve("perspective"),fe=1)}function sd(t){var e,r=nd("svg",this.ownerSVGElement&&this.ownerSVGElement.getAttribute("xmlns")||"http://www.w3.org/2000/svg"),i=this.parentNode,n=this.nextSibling,a=this.style.cssText;if(le.appendChild(r),r.appendChild(this),this.style.display="block",t)try{e=this.getBBox(),this._gsapBBox=this.getBBox,this.getBBox=sd}catch(t){}else this._gsapBBox&&(e=this._gsapBBox());return i&&(n?i.insertBefore(this,n):i.appendChild(this)),le.removeChild(r),this.style.cssText=a,e}function td(t,e){for(var r=e.length;r--;)if(t.hasAttribute(e[r]))return t.getAttribute(e[r])}function ud(e){var r;try{r=e.getBBox()}catch(t){r=sd.call(e,!0)}return r&&(r.width||r.height)||e.getBBox===sd||(r=sd.call(e,!0)),!r||r.width||r.x||r.y?r:{x:+td(e,["x","cx","x1"])||0,y:+td(e,["y","cy","y1"])||0,width:0,height:0}}function vd(t){return!(!t.getCTM||t.parentNode&&!t.ownerSVGElement||!ud(t))}function wd(t,e){if(e){var r=t.style;e in Ie&&e!==Xe&&(e=Ye),r.removeProperty?("ms"!==e.substr(0,2)&&"webkit"!==e.substr(0,6)||(e="-"+e),r.removeProperty(e.replace(Re,"-$1").toLowerCase())):r.removeAttribute(e)}}function xd(t,e,r,i,n,a){var s=new ae(t._pt,e,r,0,1,a?dd:cd);return(t._pt=s).b=i,s.e=n,t._props.push(r),s}function zd(t,e,r,i){var n,a,s,o,u=parseFloat(r)||0,h=(r+"").trim().substr((u+"").length)||"px",l=de.style,f=Le.test(e),d="svg"===t.tagName.toLowerCase(),c=(d?"client":"offset")+(f?"Width":"Height"),p="px"===i,m="%"===i;return i===h||!u||je[i]||je[h]?u:("px"===h||p||(u=zd(t,e,r,"px")),o=t.getCTM&&vd(t),!m&&"%"!==h||!Ie[e]&&!~e.indexOf("adius")?(l[f?"width":"height"]=100+(p?h:i),a=~e.indexOf("adius")||"em"===i&&t.appendChild&&!d?t:t.parentNode,o&&(a=(t.ownerSVGElement||{}).parentNode),a&&a!==he&&a.appendChild||(a=he.body),(s=a._gsap)&&m&&s.width&&f&&s.time===Ct.time?ca(u/s.width*100):(!m&&"%"!==h||(l.position=od(t,"position")),a===t&&(l.position="static"),a.appendChild(de),n=de[c],a.removeChild(de),l.position="absolute",f&&m&&((s=_(a)).time=Ct.time,s.width=a[c]),ca(p?n*u/100:n&&u?100/n*u:0))):(n=o?t.getBBox()[f?"width":"height"]:t[c],ca(m?u/n*100:u/100*n)))}function Ad(t,e,r,i){var n;return fe||rd(),e in qe&&"transform"!==e&&~(e=qe[e]).indexOf(",")&&(e=e.split(",")[0]),Ie[e]&&"transform"!==e?(n=$e(t,i),n="transformOrigin"!==e?n[e]:n.svg?n.origin:Je(od(t,Xe))+" "+n.zOrigin+"px"):(n=t.style[e])&&"auto"!==n&&!i&&!~(n+"").indexOf("calc(")||(n=Qe[e]&&Qe[e](t,e,r)||od(t,e)||aa(t,e)||("opacity"===e?1:0)),r&&!~(n+"").trim().indexOf(" ")?zd(t,e,n,r)+r:n}function Bd(t,e,r,i){if(!r||"none"===r){var n=Ve(e,t,1),a=n&&od(t,n,1);a&&a!==r?(e=n,r=a):"borderColor"===e&&(r=od(t,"borderTopColor"))}var s,o,u,h,l,f,d,c,p,_,m,g,v=new ae(this._pt,t.style,e,0,1,te),y=0,b=0;if(v.b=r,v.e=i,r+="","auto"===(i+="")&&(t.style[e]=i,i=od(t,e)||i,t.style[e]=r),vb(s=[r,i]),i=s[1],u=(r=s[0]).match(rt)||[],(i.match(rt)||[]).length){for(;o=rt.exec(i);)d=o[0],p=i.substring(y,o.index),l?l=(l+1)%5:"rgba("!==p.substr(-5)&&"hsla("!==p.substr(-5)||(l=1),d!==(f=u[b++]||"")&&(h=parseFloat(f)||0,m=f.substr((h+"").length),(g="="===d.charAt(1)?+(d.charAt(0)+"1"):0)&&(d=d.substr(2)),c=parseFloat(d),_=d.substr((c+"").length),y=rt.lastIndex-_.length,_||(_=_||Y.units[e]||m,y===i.length&&(i+=_,v.e+=_)),m!==_&&(h=zd(t,e,f,_)||0),v._pt={_next:v._pt,p:p||1===b?p:",",s:h,c:g?g*c:c-h,m:l&&l<4||"zIndex"===e?Math.round:0});v.c=y<i.length?i.substring(y,i.length):""}else v.r="display"===e&&"none"===i?dd:cd;return nt.test(i)&&(v.e=0),this._pt=v}function Dd(t){var e=t.split(" "),r=e[0],i=e[1]||"50%";return"top"!==r&&"bottom"!==r&&"left"!==i&&"right"!==i||(t=r,r=i,i=t),e[0]=We[r]||r,e[1]=We[i]||i,e.join(" ")}function Ed(t,e){if(e.tween&&e.tween._time===e.tween._dur){var r,i,n,a=e.t,s=a.style,o=e.u,u=a._gsap;if("all"===o||!0===o)s.cssText="",i=1;else for(n=(o=o.split(",")).length;-1<--n;)r=o[n],Ie[r]&&(i=1,r="transformOrigin"===r?Xe:Ye),wd(a,r);i&&(wd(a,Ye),u&&(u.svg&&a.removeAttribute("transform"),$e(a,1),u.uncache=1))}}function Id(t){return"matrix(1, 0, 0, 1, 0, 0)"===t||"none"===t||!t}function Jd(t){var e=od(t,Ye);return Id(e)?Ge:e.substr(7).match(et).map(ca)}function Kd(t,e){var r,i,n,a,s=t._gsap||_(t),o=t.style,u=Jd(t);return s.svg&&t.getAttribute("transform")?"1,0,0,1,0,0"===(u=[(n=t.transform.baseVal.consolidate().matrix).a,n.b,n.c,n.d,n.e,n.f]).join(",")?Ge:u:(u!==Ge||t.offsetParent||t===le||s.svg||(n=o.display,o.display="block",(r=t.parentNode)&&t.offsetParent||(a=1,i=t.nextSibling,le.appendChild(t)),u=Jd(t),n?o.display=n:wd(t,"display"),a&&(i?r.insertBefore(t,i):r?r.appendChild(t):le.removeChild(t))),e&&6<u.length?[u[0],u[1],u[4],u[5],u[12],u[13]]:u)}function Ld(t,e,r,i,n,a){var s,o,u,h=t._gsap,l=n||Kd(t,!0),f=h.xOrigin||0,d=h.yOrigin||0,c=h.xOffset||0,p=h.yOffset||0,_=l[0],m=l[1],g=l[2],v=l[3],y=l[4],b=l[5],T=e.split(" "),w=parseFloat(T[0])||0,x=parseFloat(T[1])||0;r?l!==Ge&&(o=_*v-m*g)&&(u=w*(-m/o)+x*(_/o)-(_*b-m*y)/o,w=w*(v/o)+x*(-g/o)+(g*b-v*y)/o,x=u):(w=(s=ud(t)).x+(~T[0].indexOf("%")?w/100*s.width:w),x=s.y+(~(T[1]||T[0]).indexOf("%")?x/100*s.height:x)),i||!1!==i&&h.smooth?(y=w-f,b=x-d,h.xOffset=c+(y*_+b*g)-y,h.yOffset=p+(y*m+b*v)-b):h.xOffset=h.yOffset=0,h.xOrigin=w,h.yOrigin=x,h.smooth=!!i,h.origin=e,h.originIsAbsolute=!!r,t.style[Xe]="0px 0px",a&&(xd(a,h,"xOrigin",f,w),xd(a,h,"yOrigin",d,x),xd(a,h,"xOffset",c,h.xOffset),xd(a,h,"yOffset",p,h.yOffset)),t.setAttribute("data-svg-origin",w+" "+x)}function Od(t,e,r){var i=Pa(e);return ca(parseFloat(e)+parseFloat(zd(t,"x",r+"px",i)))+i}function Vd(t,e,r,i,n,a){var s,u,h=360,l=o(n),f=parseFloat(n)*(l&&~n.indexOf("rad")?Be:1),d=a?f*a:f-i,c=i+d+"deg";return l&&("short"===(s=n.split("_")[1])&&(d%=h)!==d%180&&(d+=d<0?h:-h),"cw"===s&&d<0?d=(d+36e9)%h-~~(d/h)*h:"ccw"===s&&0<d&&(d=(d-36e9)%h-~~(d/h)*h)),t._pt=u=new ae(t._pt,e,r,i,d,_c),u.e=c,u.u="deg",t._props.push(r),u}function Wd(t,e){for(var r in e)t[r]=e[r];return t}function Xd(t,e,r){var i,n,a,s,o,u,h,l=Wd({},r._gsap),f=r.style;for(n in l.svg?(a=r.getAttribute("transform"),r.setAttribute("transform",""),f[Ye]=e,i=$e(r,1),wd(r,Ye),r.setAttribute("transform",a)):(a=getComputedStyle(r)[Ye],f[Ye]=e,i=$e(r,1),f[Ye]=a),Ie)(a=l[n])!==(s=i[n])&&"perspective,force3D,transformOrigin,svgOrigin".indexOf(n)<0&&(o=Pa(a)!==(h=Pa(s))?zd(r,n,a,h):parseFloat(a),u=parseFloat(s),t._pt=new ae(t._pt,i,n,o,u-o,$c),t._pt.u=h||0,t._props.push(n));Wd(i,l)}var ue,he,le,fe,de,ce,pe,_e=zt.Power0,me=zt.Power1,ge=zt.Power2,ve=zt.Power3,ye=zt.Power4,be=zt.Linear,Te=zt.Quad,we=zt.Cubic,xe=zt.Quart,Oe=zt.Quint,Pe=zt.Strong,ke=zt.Elastic,Me=zt.Back,Ae=zt.SteppedEase,Se=zt.Bounce,Ce=zt.Sine,De=zt.Expo,ze=zt.Circ,Ie={},Be=180/Math.PI,Ee=Math.PI/180,Fe=Math.atan2,Re=/([A-Z])/g,Le=/(?:left|right|width|margin|padding|x)/i,Ne=/[\s,\(]\S/,qe={autoAlpha:"opacity,visibility",scale:"scaleX,scaleY",alpha:"opacity"},Ye="transform",Xe=Ye+"Origin",Ue="O,Moz,ms,Ms,Webkit".split(","),Ve=function _checkPropPrefix(t,e,r){var i=(e||de).style,n=5;if(t in i&&!r)return t;for(t=t.charAt(0).toUpperCase()+t.substr(1);n--&&!(Ue[n]+t in i););return n<0?null:(3===n?"ms":0<=n?Ue[n]:"")+t},je={deg:1,rad:1,turn:1},We={top:"0%",bottom:"100%",left:"0%",right:"100%",center:"50%"},Qe={clearProps:function clearProps(t,e,r,i,n){if("isFromStart"!==n.data){var a=t._pt=new ae(t._pt,e,r,0,0,Ed);return a.u=i,a.pr=-10,a.tween=n,t._props.push(r),1}}},Ge=[1,0,0,1,0,0],Ke={},$e=function _parseTransform(t,e){var r=t._gsap||new Lt(t);if("x"in r&&!e&&!r.uncache)return r;var i,n,a,s,o,u,h,l,f,d,c,p,_,m,g,v,y,b,T,w,x,O,P,k,M,A,S,C,D,z,I,B,E=t.style,F=r.scaleX<0,R="deg",L=od(t,Xe)||"0";return i=n=a=u=h=l=f=d=c=0,s=o=1,r.svg=!(!t.getCTM||!vd(t)),m=Kd(t,r.svg),r.svg&&(k=(!r.uncache||"0px 0px"===L)&&!e&&t.getAttribute("data-svg-origin"),Ld(t,k||L,!!k||r.originIsAbsolute,!1!==r.smooth,m)),p=r.xOrigin||0,_=r.yOrigin||0,m!==Ge&&(b=m[0],T=m[1],w=m[2],x=m[3],i=O=m[4],n=P=m[5],6===m.length?(s=Math.sqrt(b*b+T*T),o=Math.sqrt(x*x+w*w),u=b||T?Fe(T,b)*Be:0,(f=w||x?Fe(w,x)*Be+u:0)&&(o*=Math.abs(Math.cos(f*Ee))),r.svg&&(i-=p-(p*b+_*w),n-=_-(p*T+_*x))):(B=m[6],z=m[7],S=m[8],C=m[9],D=m[10],I=m[11],i=m[12],n=m[13],a=m[14],h=(g=Fe(B,D))*Be,g&&(k=O*(v=Math.cos(-g))+S*(y=Math.sin(-g)),M=P*v+C*y,A=B*v+D*y,S=O*-y+S*v,C=P*-y+C*v,D=B*-y+D*v,I=z*-y+I*v,O=k,P=M,B=A),l=(g=Fe(-w,D))*Be,g&&(v=Math.cos(-g),I=x*(y=Math.sin(-g))+I*v,b=k=b*v-S*y,T=M=T*v-C*y,w=A=w*v-D*y),u=(g=Fe(T,b))*Be,g&&(k=b*(v=Math.cos(g))+T*(y=Math.sin(g)),M=O*v+P*y,T=T*v-b*y,P=P*v-O*y,b=k,O=M),h&&359.9<Math.abs(h)+Math.abs(u)&&(h=u=0,l=180-l),s=ca(Math.sqrt(b*b+T*T+w*w)),o=ca(Math.sqrt(P*P+B*B)),g=Fe(O,P),f=2e-4<Math.abs(g)?g*Be:0,c=I?1/(I<0?-I:I):0),r.svg&&(k=t.getAttribute("transform"),r.forceCSS=t.setAttribute("transform","")||!Id(od(t,Ye)),k&&t.setAttribute("transform",k))),90<Math.abs(f)&&Math.abs(f)<270&&(F?(s*=-1,f+=u<=0?180:-180,u+=u<=0?180:-180):(o*=-1,f+=f<=0?180:-180)),r.x=i-((r.xPercent=i&&(r.xPercent||(Math.round(t.offsetWidth/2)===Math.round(-i)?-50:0)))?t.offsetWidth*r.xPercent/100:0)+"px",r.y=n-((r.yPercent=n&&(r.yPercent||(Math.round(t.offsetHeight/2)===Math.round(-n)?-50:0)))?t.offsetHeight*r.yPercent/100:0)+"px",r.z=a+"px",r.scaleX=ca(s),r.scaleY=ca(o),r.rotation=ca(u)+R,r.rotationX=ca(h)+R,r.rotationY=ca(l)+R,r.skewX=f+R,r.skewY=d+R,r.transformPerspective=c+"px",(r.zOrigin=parseFloat(L.split(" ")[2])||0)&&(E[Xe]=Je(L)),r.xOffset=r.yOffset=0,r.force3D=Y.force3D,r.renderTransform=r.svg?ir:pe?rr:Ze,r.uncache=0,r},Je=function _firstTwoOnly(t){return(t=t.split(" "))[0]+" "+t[1]},Ze=function _renderNon3DTransforms(t,e){e.z="0px",e.rotationY=e.rotationX="0deg",e.force3D=0,rr(t,e)},He="0deg",tr="0px",er=") ",rr=function _renderCSSTransforms(t,e){var r=e||this,i=r.xPercent,n=r.yPercent,a=r.x,s=r.y,o=r.z,u=r.rotation,h=r.rotationY,l=r.rotationX,f=r.skewX,d=r.skewY,c=r.scaleX,p=r.scaleY,_=r.transformPerspective,m=r.force3D,g=r.target,v=r.zOrigin,y="",b="auto"===m&&t&&1!==t||!0===m;if(v&&(l!==He||h!==He)){var T,w=parseFloat(h)*Ee,x=Math.sin(w),O=Math.cos(w);w=parseFloat(l)*Ee,T=Math.cos(w),a=Od(g,a,x*T*-v),s=Od(g,s,-Math.sin(w)*-v),o=Od(g,o,O*T*-v+v)}_!==tr&&(y+="perspective("+_+er),(i||n)&&(y+="translate("+i+"%, "+n+"%) "),!b&&a===tr&&s===tr&&o===tr||(y+=o!==tr||b?"translate3d("+a+", "+s+", "+o+") ":"translate("+a+", "+s+er),u!==He&&(y+="rotate("+u+er),h!==He&&(y+="rotateY("+h+er),l!==He&&(y+="rotateX("+l+er),f===He&&d===He||(y+="skew("+f+", "+d+er),1===c&&1===p||(y+="scale("+c+", "+p+er),g.style[Ye]=y||"translate(0, 0)"},ir=function _renderSVGTransforms(t,e){var r,i,n,a,s,o=e||this,u=o.xPercent,h=o.yPercent,l=o.x,f=o.y,d=o.rotation,c=o.skewX,p=o.skewY,_=o.scaleX,m=o.scaleY,g=o.target,v=o.xOrigin,y=o.yOrigin,b=o.xOffset,T=o.yOffset,w=o.forceCSS,x=parseFloat(l),O=parseFloat(f);d=parseFloat(d),c=parseFloat(c),(p=parseFloat(p))&&(c+=p=parseFloat(p),d+=p),d||c?(d*=Ee,c*=Ee,r=Math.cos(d)*_,i=Math.sin(d)*_,n=Math.sin(d-c)*-m,a=Math.cos(d-c)*m,c&&(p*=Ee,s=Math.tan(c-p),n*=s=Math.sqrt(1+s*s),a*=s,p&&(s=Math.tan(p),r*=s=Math.sqrt(1+s*s),i*=s)),r=ca(r),i=ca(i),n=ca(n),a=ca(a)):(r=_,a=m,i=n=0),(x&&!~(l+"").indexOf("px")||O&&!~(f+"").indexOf("px"))&&(x=zd(g,"x",l,"px"),O=zd(g,"y",f,"px")),(v||y||b||T)&&(x=ca(x+v-(v*r+y*n)+b),O=ca(O+y-(v*i+y*a)+T)),(u||h)&&(s=g.getBBox(),x=ca(x+u/100*s.width),O=ca(O+h/100*s.height)),s="matrix("+r+","+i+","+n+","+a+","+x+","+O+")",g.setAttribute("transform",s),w&&(g.style[Ye]=s)};ba("padding,margin,Width,Radius",function(e,r){var t="Right",i="Bottom",n="Left",o=(r<3?["Top",t,i,n]:["Top"+n,"Top"+t,i+t,i+n]).map(function(t){return r<2?e+t:"border"+t+e});Qe[1<r?"border"+e:e]=function(e,t,r,i,n){var a,s;if(arguments.length<4)return a=o.map(function(t){return Ad(e,t,r)}),5===(s=a.join(" ")).split(a[0]).length?a[0]:s;a=(i+"").split(" "),s={},o.forEach(function(t,e){return s[t]=a[e]=a[e]||a[(e-1)/2|0]}),e.init(t,s,n)}});var nr,ar,sr,or={name:"css",register:rd,targetTest:function targetTest(t){return t.style&&t.nodeType},init:function init(t,e,r,i,n){var a,s,o,u,h,l,f,d,c,p,_,m,g,v,y,b=this._props,T=t.style,w=r.vars.startAt;for(f in fe||rd(),e)if("autoRound"!==f&&(s=e[f],!ft[f]||!Sb(f,e,r,i,t,n)))if(h=typeof s,l=Qe[f],"function"===h&&(h=typeof(s=s.call(r,i,t,n))),"string"===h&&~s.indexOf("random(")&&(s=fb(s)),l)l(this,t,f,s,r)&&(y=1);else if("--"===f.substr(0,2))a=(getComputedStyle(t).getPropertyValue(f)+"").trim(),s+="",At.lastIndex=0,At.test(a)||(d=Pa(a),c=Pa(s)),c?d!==c&&(a=zd(t,f,a,c)+c):d&&(s+=d),this.add(T,"setProperty",a,s,i,n,0,0,f),b.push(f);else if("undefined"!==h){if(w&&f in w?(a="function"==typeof w[f]?w[f].call(r,i,t,n):w[f],f in Y.units&&!Pa(a)&&(a+=Y.units[f]),"="===(a+"").charAt(1)&&(a=Ad(t,f))):a=Ad(t,f),u=parseFloat(a),(p="string"===h&&"="===s.charAt(1)?+(s.charAt(0)+"1"):0)&&(s=s.substr(2)),o=parseFloat(s),f in qe&&("autoAlpha"===f&&(1===u&&"hidden"===Ad(t,"visibility")&&o&&(u=0),xd(this,T,"visibility",u?"inherit":"hidden",o?"inherit":"hidden",!o)),"scale"!==f&&"transform"!==f&&~(f=qe[f]).indexOf(",")&&(f=f.split(",")[0])),_=f in Ie)if(m||((g=t._gsap).renderTransform&&!e.parseTransform||$e(t,e.parseTransform),v=!1!==e.smoothOrigin&&g.smooth,(m=this._pt=new ae(this._pt,T,Ye,0,1,g.renderTransform,g,0,-1)).dep=1),"scale"===f)this._pt=new ae(this._pt,g,"scaleY",g.scaleY,(p?p*o:o-g.scaleY)||0),b.pu
19514sh("scaleY",f),f+="X";else{if("transformOrigin"===f){s=Dd(s),g.svg?Ld(t,s,0,v,0,this):((c=parseFloat(s.split(" ")[2])||0)!==g.zOrigin&&xd(this,g,"zOrigin",g.zOrigin,c),xd(this,T,f,Je(a),Je(s)));continue}if("svgOrigin"===f){Ld(t,s,1,v,0,this);continue}if(f in Ke){Vd(this,g,f,u,s,p);continue}if("smoothOrigin"===f){xd(this,g,"smooth",g.smooth,s);continue}if("force3D"===f){g[f]=s;continue}if("transform"===f){Xd(this,s,t);continue}}else f in T||(f=Ve(f)||f);if(_||(o||0===o)&&(u||0===u)&&!Ne.test(s)&&f in T)o=o||0,(d=(a+"").substr((u+"").length))!==(c=Pa(s)||(f in Y.units?Y.units[f]:d))&&(u=zd(t,f,a,c)),this._pt=new ae(this._pt,_?g:T,f,u,p?p*o:o-u,_||"px"!==c&&"zIndex"!==f||!1===e.autoRound?$c:bd),this._pt.u=c||0,d!==c&&(this._pt.b=a,this._pt.r=ad);else if(f in T)Bd.call(this,t,f,a,s);else{if(!(f in t)){N(f,s);continue}this.add(t,f,a||t[f],s,i,n)}b.push(f)}y&&ne(this)},get:Ad,aliases:qe,getSetter:function getSetter(t,e,i){var n=qe[e];return n&&n.indexOf(",")<0&&(e=n),e in Ie&&e!==Xe&&(t._gsap.x||Ad(t,"x"))?i&&ce===i?"scale"===e?hd:gd:(ce=i||{})&&("scale"===e?id:jd):t.style&&!r(t.style[e])?ed:~e.indexOf("-")?fd:Jt(t,e)},core:{_removeProperty:wd,_getMatrix:Kd}};oe.utils.checkPrefix=Ve,sr=ba((nr="x,y,z,scale,scaleX,scaleY,xPercent,yPercent")+","+(ar="rotation,rotationX,rotationY,skewX,skewY")+",transform,transformOrigin,svgOrigin,force3D,smoothOrigin,transformPerspective",function(t){Ie[t]=1}),ba(ar,function(t){Y.units[t]="deg",Ke[t]=1}),qe[sr[13]]=nr+","+ar,ba("0:translateX,1:translateY,2:translateZ,8:rotate,8:rotationZ,8:rotateZ,9:rotateX,10:rotateY",function(t){var e=t.split(":");qe[e[1]]=sr[e[0]]}),ba("x,y,z,top,right,bottom,left,width,height,fontSize,padding,margin,perspective",function(t){Y.units[t]="px"}),oe.registerPlugin(or);var ur=oe.registerPlugin(or)||oe,hr=ur.core.Tween;e.Back=Me,e.Bounce=Se,e.CSSPlugin=or,e.Circ=ze,e.Cubic=we,e.Elastic=ke,e.Expo=De,e.Linear=be,e.Power0=_e,e.Power1=me,e.Power2=ge,e.Power3=ve,e.Power4=ye,e.Quad=Te,e.Quart=xe,e.Quint=Oe,e.Sine=Ce,e.SteppedEase=Ae,e.Strong=Pe,e.TimelineLite=qt,e.TimelineMax=qt,e.TweenLite=Qt,e.TweenMax=hr,e.default=ur,e.gsap=ur;if (typeof(window)==="undefined"||window!==e){Object.defineProperty(e,"__esModule",{value:!0})} else {delete e.default}}); 19515 19516 19517/*SIGUIENTE LIBRERIA*/ 19518(function (global, factory) { 19519 typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) : 19520 typeof define === 'function' && define.amd ? define(['exports'], factory) : 19521 (global = global || self, factory(global.window = global.window || {})); 19522}(this, (function (exports) { 'use strict'; 19523 19524 var _svgPathExp = /[achlmqstvz]|(-?\d*\.?\d*(?:e[\-+]?\d+)?)[0-9]/ig, 19525 _numbersExp = /(?:(-)?\d*\.?\d*(?:e[\-+]?\d+)?)[0-9]/ig, 19526 _scientific = /[\+\-]?\d*\.?\d+e[\+\-]?\d+/ig, 19527 _selectorExp = /(^[#\.][a-z]|[a-y][a-z])/i, 19528 _DEG2RAD = Math.PI / 180, 19529 _RAD2DEG = 180 / Math.PI, 19530 _sin = Math.sin, 19531 _cos = Math.cos, 19532 _abs = Math.abs, 19533 _sqrt = Math.sqrt, 19534 _atan2 = Math.atan2, 19535 _largeNum = 1e8, 19536 _isString = function _isString(value) { 19537 return typeof value === "string"; 19538 }, 19539 _isNumber = function _isNumber(value) { 19540 return typeof value === "number"; 19541 }, 19542 _isUndefined = function _isUndefined(value) { 19543 return typeof value === "undefined"; 19544 }, 19545 _temp = {}, 19546 _temp2 = {}, 19547 _roundingNum = 1e5, 19548 _wrapProgress = function _wrapProgress(progress) { 19549 return Math.round((progress + _largeNum) % 1 * _roundingNum) / _roundingNum || (progress < 0 ? 0 : 1); 19550 }, 19551 _round = function _round(value) { 19552 return Math.round(value * _roundingNum) / _roundingNum || 0; 19553 }, 19554 _roundPrecise = function _roundPrecise(value) { 19555 return Math.round(value * 1e10) / 1e10 || 0; 19556 }, 19557 _splitSegment = function _splitSegment(rawPath, segIndex, i, t) { 19558 var segment = rawPath[segIndex], 19559 shift = t === 1 ? 6 : subdivideSegment(segment, i, t); 19560 19561 if (shift && shift + i + 2 < segment.length) { 19562 rawPath.splice(segIndex, 0, segment.slice(0, i + shift + 2)); 19563 segment.splice(0, i + shift); 19564 return 1; 19565 } 19566 }, 19567 _reverseRawPath = function _reverseRawPath(rawPath, skipOuter) { 19568 var i = rawPath.length; 19569 skipOuter || rawPath.reverse(); 19570 19571 while (i--) { 19572 rawPath[i].reversed || reverseSegment(rawPath[i]); 19573 } 19574 }, 19575 _copyMetaData = function _copyMetaData(source, copy) { 19576 copy.totalLength = source.totalLength; 19577 19578 if (source.samples) { 19579 copy.samples = source.samples.slice(0); 19580 copy.lookup = source.lookup.slice(0); 19581 copy.minLength = source.minLength; 19582 copy.resolution = source.resolution; 19583 } else if (source.totalPoints) { 19584 copy.totalPoints = source.totalPoints; 19585 } 19586 19587 return copy; 19588 }, 19589 _appendOrMerge = function _appendOrMerge(rawPath, segment) { 19590 var index = rawPath.length, 19591 prevSeg = rawPath[index - 1] || [], 19592 l = prevSeg.length; 19593 19594 if (index && segment[0] === prevSeg[l - 2] && segment[1] === prevSeg[l - 1]) { 19595 segment = prevSeg.concat(segment.slice(2)); 19596 index--; 19597 } 19598 19599 rawPath[index] = segment; 19600 }; 19601 19602 function getRawPath(value) { 19603 value = _isString(value) && _selectorExp.test(value) ? document.querySelector(value) || value : value; 19604 var e = value.getAttribute ? value : 0, 19605 rawPath; 19606 19607 if (e && (value = value.getAttribute("d"))) { 19608 if (!e._gsPath) { 19609 e._gsPath = {}; 19610 } 19611 19612 rawPath = e._gsPath[value]; 19613 return rawPath && !rawPath._dirty ? rawPath : e._gsPath[value] = stringToRawPath(value); 19614 } 19615 19616 return !value ? console.warn("Expecting a <path> element or an SVG path data string") : _isString(value) ? stringToRawPath(value) : _isNumber(value[0]) ? [value] : value; 19617 } 19618 function copyRawPath(rawPath) { 19619 var a = [], 19620 i = 0; 19621 19622 for (; i < rawPath.length; i++) { 19623 a[i] = _copyMetaData(rawPath[i], rawPath[i].slice(0)); 19624 } 19625 19626 return _copyMetaData(rawPath, a); 19627 } 19628 function reverseSegment(segment) { 19629 var i = 0, 19630 y; 19631 segment.reverse(); 19632 19633 for (; i < segment.length; i += 2) { 19634 y = segment[i]; 19635 segment[i] = segment[i + 1]; 19636 segment[i + 1] = y; 19637 } 19638 19639 segment.reversed = !segment.reversed; 19640 } 19641 19642 var _createPath = function _createPath(e, ignore) { 19643 var path = document.createElementNS("http://www.w3.org/2000/svg", "path"), 19644 attr = [].slice.call(e.attributes), 19645 i = attr.length, 19646 name; 19647 ignore = "," + ignore + ","; 19648 19649 while (--i > -1) { 19650 name = attr[i].nodeName.toLowerCase(); 19651 19652 if (ignore.indexOf("," + name + ",") < 0) { 19653 path.setAttributeNS(null, name, attr[i].nodeValue); 19654 } 19655 } 19656 19657 return path; 19658 }, 19659 _typeAttrs = { 19660 rect: "rx,ry,x,y,width,height", 19661 circle: "r,cx,cy", 19662 ellipse: "rx,ry,cx,cy", 19663 line: "x1,x2,y1,y2" 19664 }, 19665 _attrToObj = function _attrToObj(e, attrs) { 19666 var props = attrs ? attrs.split(",") : [], 19667 obj = {}, 19668 i = props.length; 19669 19670 while (--i > -1) { 19671 obj[props[i]] = +e.getAttribute(props[i]) || 0; 19672 } 19673 19674 return obj; 19675 }; 19676 19677 function convertToPath(element, swap) { 19678 var type = element.tagName.toLowerCase(), 19679 circ = 0.552284749831, 19680 data, 19681 x, 19682 y, 19683 r, 19684 ry, 19685 path, 19686 rcirc, 19687 rycirc, 19688 points, 19689 w, 19690 h, 19691 x2, 19692 x3, 19693 x4, 19694 x5, 19695 x6, 19696 y2, 19697 y3, 19698 y4, 19699 y5, 19700 y6, 19701 attr; 19702 19703 if (type === "path" || !element.getBBox) { 19704 return element; 19705 } 19706 19707 path = _createPath(element, "x,y,width,height,cx,cy,rx,ry,r,x1,x2,y1,y2,points"); 19708 attr = _attrToObj(element, _typeAttrs[type]); 19709 19710 if (type === "rect") { 19711 r = attr.rx; 19712 ry = attr.ry || r; 19713 x = attr.x; 19714 y = attr.y; 19715 w = attr.width - r * 2; 19716 h = attr.height - ry * 2; 19717 19718 if (r || ry) { 19719 x2 = x + r * (1 - circ); 19720 x3 = x + r; 19721 x4 = x3 + w; 19722 x5 = x4 + r * circ; 19723 x6 = x4 + r; 19724 y2 = y + ry * (1 - circ); 19725 y3 = y + ry; 19726 y4 = y3 + h; 19727 y5 = y4 + ry * circ; 19728 y6 = y4 + ry; 19729 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"; 19730 } else { 19731 data = "M" + (x + w) + "," + y + " v" + h + " h" + -w + " v" +
vendor: 9,465 bytes, lines 19731-20079
19731-h + " h" + w + "z"; 19732 } 19733 } else if (type === "circle" || type === "ellipse") { 19734 if (type === "circle") { 19735 r = ry = attr.r; 19736 rycirc = r * circ; 19737 } else { 19738 r = attr.rx; 19739 ry = attr.ry; 19740 rycirc = ry * circ; 19741 } 19742 19743 x = attr.cx; 19744 y = attr.cy; 19745 rcirc = r * circ; 19746 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"; 19747 } else if (type === "line") { 19748 data = "M" + attr.x1 + "," + attr.y1 + " L" + attr.x2 + "," + attr.y2; 19749 } else if (type === "polyline" || type === "polygon") { 19750 points = (element.getAttribute("points") + "").match(_numbersExp) || []; 19751 x = points.shift(); 19752 y = points.shift(); 19753 data = "M" + x + "," + y + " L" + points.join(","); 19754 19755 if (type === "polygon") { 19756 data += "," + x + "," + y + "z"; 19757 } 19758 } 19759 19760 path.setAttribute("d", rawPathToString(path._gsRawPath = stringToRawPath(data))); 19761 19762 if (swap && element.parentNode) { 19763 element.parentNode.insertBefore(path, element); 19764 element.parentNode.removeChild(element); 19765 } 19766 19767 return path; 19768 } 19769 19770 function getRotationAtBezierT(segment, i, t) { 19771 var a = segment[i], 19772 b = segment[i + 2], 19773 c = segment[i + 4], 19774 x; 19775 a += (b - a) * t; 19776 b += (c - b) * t; 19777 a += (b - a) * t; 19778 x = b + (c + (segment[i + 6] - c) * t - b) * t - a; 19779 a = segment[i + 1]; 19780 b = segment[i + 3]; 19781 c = segment[i + 5]; 19782 a += (b - a) * t; 19783 b += (c - b) * t; 19784 a += (b - a) * t; 19785 return _round(_atan2(b + (c + (segment[i + 7] - c) * t - b) * t - a, x) * _RAD2DEG); 19786 } 19787 19788 function sliceRawPath(rawPath, start, end) { 19789 end = _isUndefined(end) ? 1 : _roundPrecise(end) || 0; 19790 start = _roundPrecise(start) || 0; 19791 var loops = Math.max(0, ~~(_abs(end - start) - 1e-8)), 19792 path = copyRawPath(rawPath); 19793 19794 if (start > end) { 19795 start = 1 - start; 19796 end = 1 - end; 19797 19798 _reverseRawPath(path); 19799 19800 path.totalLength = 0; 19801 } 19802 19803 if (start < 0 || end < 0) { 19804 var offset = Math.abs(~~Math.min(start, end)) + 1; 19805 start += offset; 19806 end += offset; 19807 } 19808 19809 path.totalLength || cacheRawPathMeasurements(path); 19810 var wrap = end > 1, 19811 s = getProgressData(path, start, _temp, true), 19812 e = getProgressData(path, end, _temp2), 19813 eSeg = e.segment, 19814 sSeg = s.segment, 19815 eSegIndex = e.segIndex, 19816 sSegIndex = s.segIndex, 19817 ei = e.i, 19818 si = s.i, 19819 sameSegment = sSegIndex === eSegIndex, 19820 sameBezier = ei === si && sameSegment, 19821 wrapsBehind, 19822 sShift, 19823 eShift, 19824 i, 19825 copy, 19826 totalSegments, 19827 l, 19828 j; 19829 19830 if (wrap || loops) { 19831 wrapsBehind = eSegIndex < sSegIndex || sameSegment && ei < si || sameBezier && e.t < s.t; 19832 19833 if (_splitSegment(path, sSegIndex, si, s.t)) { 19834 sSegIndex++; 19835 19836 if (!wrapsBehind) { 19837 eSegIndex++; 19838 19839 if (sameBezier) { 19840 e.t = (e.t - s.t) / (1 - s.t); 19841 ei = 0; 19842 } else if (sameSegment) { 19843 ei -= si; 19844 } 19845 } 19846 } 19847 19848 if (1 - (end - start) < 1e-5) { 19849 eSegIndex = sSegIndex - 1; 19850 } else if (!e.t && eSegIndex) { 19851 eSegIndex--; 19852 } else if (_splitSegment(path, eSegIndex, ei, e.t) && wrapsBehind) { 19853 sSegIndex++; 19854 } 19855 19856 if (s.t === 1) { 19857 sSegIndex = (sSegIndex + 1) % path.length; 19858 } 19859 19860 copy = []; 19861 totalSegments = path.length; 19862 l = 1 + totalSegments * loops; 19863 j = sSegIndex; 19864 l += (totalSegments - sSegIndex + eSegIndex) % totalSegments; 19865 19866 for (i = 0; i < l; i++) { 19867 _appendOrMerge(copy, path[j++ % totalSegments]); 19868 } 19869 19870 path = copy; 19871 } else { 19872 eShift = e.t === 1 ? 6 : subdivideSegment(eSeg, ei, e.t); 19873 19874 if (start !== end) { 19875 sShift = subdivideSegment(sSeg, si, sameBezier ? s.t / e.t : s.t); 19876 sameSegment && (eShift += sShift); 19877 eSeg.splice(ei + eShift + 2); 19878 (sShift || si) && sSeg.splice(0, si + sShift); 19879 i = path.length; 19880 19881 while (i--) { 19882 (i < sSegIndex || i > eSegIndex) && path.splice(i, 1); 19883 } 19884 } else { 19885 eSeg.angle = getRotationAtBezierT(eSeg, ei + eShift, 0); 19886 ei += eShift; 19887 s = eSeg[ei]; 19888 e = eSeg[ei + 1]; 19889 eSeg.length = eSeg.totalLength = 0; 19890 eSeg.totalPoints = path.totalPoints = 8; 19891 eSeg.push(s, e, s, e, s, e, s, e); 19892 } 19893 } 19894 19895 path.totalLength = 0; 19896 return path; 19897 } 19898 19899 function measureSegment(segment, startIndex, bezierQty) { 19900 startIndex = startIndex || 0; 19901 19902 if (!segment.samples) { 19903 segment.samples = []; 19904 segment.lookup = []; 19905 } 19906 19907 var resolution = ~~segment.resolution || 12, 19908 inc = 1 / resolution, 19909 endIndex = bezierQty ? startIndex + bezierQty * 6 + 1 : segment.length, 19910 x1 = segment[startIndex], 19911 y1 = segment[startIndex + 1], 19912 samplesIndex = startIndex ? startIndex / 6 * resolution : 0, 19913 samples = segment.samples, 19914 lookup = segment.lookup, 19915 min = (startIndex ? segment.minLength : _largeNum) || _largeNum, 19916 prevLength = samples[samplesIndex + bezierQty * resolution - 1], 19917 length = startIndex ? samples[samplesIndex - 1] : 0, 19918 i, 19919 j, 19920 x4, 19921 x3, 19922 x2, 19923 xd, 19924 xd1, 19925 y4, 19926 y3, 19927 y2, 19928 yd, 19929 yd1, 19930 inv, 19931 t, 19932 lengthIndex, 19933 l, 19934 segLength; 19935 samples.length = lookup.length = 0; 19936 19937 for (j = startIndex + 2; j < endIndex; j += 6) { 19938 x4 = segment[j + 4] - x1; 19939 x3 = segment[j + 2] - x1; 19940 x2 = segment[j] - x1; 19941 y4 = segment[j + 5] - y1; 19942 y3 = segment[j + 3] - y1; 19943 y2 = segment[j + 1] - y1; 19944 xd = xd1 = yd = yd1 = 0; 19945 19946 if (_abs(x4) < 1e-5 && _abs(y4) < 1e-5 && _abs(x2) + _abs(y2) < 1e-5) { 19947 if (segment.length > 8) { 19948 segment.splice(j, 6); 19949 j -= 6; 19950 endIndex -= 6; 19951 } 19952 } else { 19953 for (i = 1; i <= resolution; i++) { 19954 t = inc * i; 19955 inv = 1 - t; 19956 xd = xd1 - (xd1 = (t * t * x4 + 3 * inv * (t * x3 + inv * x2)) * t); 19957 yd = yd1 - (yd1 = (t * t * y4 + 3 * inv * (t * y3 + inv * y2)) * t); 19958 l = _sqrt(yd * yd + xd * xd); 19959 19960 if (l < min) { 19961 min = l; 19962 } 19963 19964 length += l; 19965 samples[samplesIndex++] = length; 19966 } 19967 } 19968 19969 x1 += x4; 19970 y1 += y4; 19971 } 19972 19973 if (prevLength) { 19974 prevLength -= length; 19975 19976 for (; samplesIndex < samples.length; samplesIndex++) { 19977 samples[samplesIndex] += prevLength; 19978 } 19979 } 19980 19981 if (samples.length && min) { 19982 segment.totalLength = segLength = samples[samples.length - 1] || 0; 19983 segment.minLength = min; 19984 l = lengthIndex = 0; 19985 19986 for (i = 0; i < segLength; i += min) { 19987 lookup[l++] = samples[lengthIndex] < i ? ++lengthIndex : lengthIndex; 19988 } 19989 } else { 19990 segment.totalLength = samples[0] = 0; 19991 } 19992 19993 return startIndex ? length - samples[startIndex / 2 - 1] : length; 19994 } 19995 19996 function cacheRawPathMeasurements(rawPath, resolution) { 19997 var pathLength, points, i; 19998 19999 for (i = pathLength = points = 0; i < rawPath.length; i++) { 20000 rawPath[i].resolution = ~~resolution || 12; 20001 points += rawPath[i].length; 20002 pathLength += measureSegment(rawPath[i]); 20003 } 20004 20005 rawPath.totalPoints = points; 20006 rawPath.totalLength = pathLength; 20007 return rawPath; 20008 } 20009 function subdivideSegment(segment, i, t) { 20010 if (t <= 0 || t >= 1) { 20011 return 0; 20012 } 20013 20014 var ax = segment[i], 20015 ay = segment[i + 1], 20016 cp1x = segment[i + 2], 20017 cp1y = segment[i + 3], 20018 cp2x = segment[i + 4], 20019 cp2y = segment[i + 5], 20020 bx = segment[i + 6], 20021 by = segment[i + 7], 20022 x1a = ax + (cp1x - ax) * t, 20023 x2 = cp1x + (cp2x - cp1x) * t, 20024 y1a = ay + (cp1y - ay) * t, 20025 y2 = cp1y + (cp2y - cp1y) * t, 20026 x1 = x1a + (x2 - x1a) * t, 20027 y1 = y1a + (y2 - y1a) * t, 20028 x2a = cp2x + (bx - cp2x) * t, 20029 y2a = cp2y + (by - cp2y) * t; 20030 x2 += (x2a - x2) * t; 20031 y2 += (y2a - y2) * t; 20032 segment.splice(i + 2, 4, _round(x1a), _round(y1a), _round(x1), _round(y1), _round(x1 + (x2 - x1) * t), _round(y1 + (y2 - y1) * t), _round(x2), _round(y2), _round(x2a), _round(y2a)); 20033 segment.samples && segment.samples.splice(i / 6 * segment.resolution | 0, 0, 0, 0, 0, 0, 0, 0); 20034 return 6; 20035 } 20036 20037 function getProgressData(rawPath, progress, decoratee, pushToNextIfAtEnd) { 20038 decoratee = decoratee || {}; 20039 rawPath.totalLength || cacheRawPathMeasurements(rawPath); 20040 20041 if (progress < 0 || progress > 1) { 20042 progress = _wrapProgress(progress); 20043 } 20044 20045 var segIndex = 0, 20046 segment = rawPath[0], 20047 samples, 20048 resolution, 20049 length, 20050 min, 20051 max, 20052 i, 20053 t; 20054 20055 if (!progress) { 20056 t = i = segIndex = 0; 20057 segment = rawPath[0]; 20058 } else if (progress === 1) { 20059 t = 1; 20060 segIndex = rawPath.length - 1; 20061 segment = rawPath[segIndex]; 20062 i = segment.length - 8; 20063 } else { 20064 if (rawPath.length > 1) { 20065 length = rawPath.totalLength * progress; 20066 max = i = 0; 20067 20068 while ((max += rawPath[i++].totalLength) < length) { 20069 segIndex = i; 20070 } 20071 20072 segment = rawPath[segIndex]; 20073 min = max - segment.totalLength; 20074 progress = (length - min) / (max - min) || 0; 20075 } 20076 20077 samples = segment.samples; 20078 resolution = segment.resolution; 20079 length = segment.totalLength * progress;
vendor: 4,606 bytes, lines 20080-20251
20080 i = segment.lookup[~~(length / segment.minLength)] || 0; 20081 min = i ? samples[i - 1] : 0; 20082 max = samples[i]; 20083 20084 if (max < length) { 20085 min = max; 20086 max = samples[++i]; 20087 } 20088 20089 t = 1 / resolution * ((length - min) / (max - min) + i % resolution); 20090 i = ~~(i / resolution) * 6; 20091 20092 if (pushToNextIfAtEnd && t === 1) { 20093 if (i + 6 < segment.length) { 20094 i += 6; 20095 t = 0; 20096 } else if (segIndex + 1 < rawPath.length) { 20097 i = t = 0; 20098 segment = rawPath[++segIndex]; 20099 } 20100 } 20101 } 20102 20103 decoratee.t = t; 20104 decoratee.i = i; 20105 decoratee.path = rawPath; 20106 decoratee.segment = segment; 20107 decoratee.segIndex = segIndex; 20108 return decoratee; 20109 } 20110 20111 function getPositionOnPath(rawPath, progress, includeAngle, point) { 20112 var segment = rawPath[0], 20113 result = point || {}, 20114 samples, 20115 resolution, 20116 length, 20117 min, 20118 max, 20119 i, 20120 t, 20121 a, 20122 inv; 20123 20124 if (progress < 0 || progress > 1) { 20125 progress = _wrapProgress(progress); 20126 } 20127 20128 if (rawPath.length > 1) { 20129 length = rawPath.totalLength * progress; 20130 max = i = 0; 20131 20132 while ((max += rawPath[i++].totalLength) < length) { 20133 segment = rawPath[i]; 20134 } 20135 20136 min = max - segment.totalLength; 20137 progress = (length - min) / (max - min) || 0; 20138 } 20139 20140 samples = segment.samples; 20141 resolution = segment.resolution; 20142 length = segment.totalLength * progress; 20143 i = segment.lookup[progress < 1 ? ~~(length / segment.minLength) : segment.lookup.length - 1] || 0; 20144 min = i ? samples[i - 1] : 0; 20145 max = samples[i]; 20146 20147 if (max < length) { 20148 min = max; 20149 max = samples[++i]; 20150 } 20151 20152 t = 1 / resolution * ((length - min) / (max - min) + i % resolution) || 0; 20153 inv = 1 - t; 20154 i = ~~(i / resolution) * 6; 20155 a = segment[i]; 20156 result.x = _round((t * t * (segment[i + 6] - a) + 3 * inv * (t * (segment[i + 4] - a) + inv * (segment[i + 2] - a))) * t + a); 20157 result.y = _round((t * t * (segment[i + 7] - (a = segment[i + 1])) + 3 * inv * (t * (segment[i + 5] - a) + inv * (segment[i + 3] - a))) * t + a); 20158 20159 if (includeAngle) { 20160 result.angle = segment.totalLength ? getRotationAtBezierT(segment, i, t >= 1 ? 1 - 1e-9 : t ? t : 1e-9) : segment.angle || 0; 20161 } 20162 20163 return result; 20164 } 20165 function transformRawPath(rawPath, a, b, c, d, tx, ty) { 20166 var j = rawPath.length, 20167 segment, 20168 l, 20169 i, 20170 x, 20171 y; 20172 20173 while (--j > -1) { 20174 segment = rawPath[j]; 20175 l = segment.length; 20176 20177 for (i = 0; i < l; i += 2) { 20178 x = segment[i]; 20179 y = segment[i + 1]; 20180 segment[i] = x * a + y * c + tx; 20181 segment[i + 1] = x * b + y * d + ty; 20182 } 20183 } 20184 20185 rawPath._dirty = 1; 20186 return rawPath; 20187 } 20188 20189 function arcToSegment(lastX, lastY, rx, ry, angle, largeArcFlag, sweepFlag, x, y) { 20190 if (lastX === x && lastY === y) { 20191 return; 20192 } 20193 20194 rx = _abs(rx); 20195 ry = _abs(ry); 20196 20197 var angleRad = angle % 360 * _DEG2RAD, 20198 cosAngle = _cos(angleRad), 20199 sinAngle = _sin(angleRad), 20200 PI = Math.PI, 20201 TWOPI = PI * 2, 20202 dx2 = (lastX - x) / 2, 20203 dy2 = (lastY - y) / 2, 20204 x1 = cosAngle * dx2 + sinAngle * dy2, 20205 y1 = -sinAngle * dx2 + cosAngle * dy2, 20206 x1_sq = x1 * x1, 20207 y1_sq = y1 * y1, 20208 radiiCheck = x1_sq / (rx * rx) + y1_sq / (ry * ry); 20209 20210 if (radiiCheck > 1) { 20211 rx = _sqrt(radiiCheck) * rx; 20212 ry = _sqrt(radiiCheck) * ry; 20213 } 20214 20215 var rx_sq = rx * rx, 20216 ry_sq = ry * ry, 20217 sq = (rx_sq * ry_sq - rx_sq * y1_sq - ry_sq * x1_sq) / (rx_sq * y1_sq + ry_sq * x1_sq); 20218 20219 if (sq < 0) { 20220 sq = 0; 20221 } 20222 20223 var coef = (largeArcFlag === sweepFlag ? -1 : 1) * _sqrt(sq), 20224 cx1 = coef * (rx * y1 / ry), 20225 cy1 = coef * -(ry * x1 / rx), 20226 sx2 = (lastX + x) / 2, 20227 sy2 = (lastY + y) / 2, 20228 cx = sx2 + (cosAngle * cx1 - sinAngle * cy1), 20229 cy = sy2 + (sinAngle * cx1 + cosAngle * cy1), 20230 ux = (x1 - cx1) / rx, 20231 uy = (y1 - cy1) / ry, 20232 vx = (-x1 - cx1) / rx, 20233 vy = (-y1 - cy1) / ry, 20234 temp = ux * ux + uy * uy, 20235 angleStart = (uy < 0 ? -1 : 1) * Math.acos(ux / _sqrt(temp)), 20236 angleExtent = (ux * vy - uy * vx < 0 ? -1 : 1) * Math.acos((ux * vx + uy * vy) / _sqrt(temp * (vx * vx + vy * vy))); 20237 20238 isNaN(angleExtent) && (angleExtent = PI); 20239 20240 if (!sweepFlag && angleExtent > 0) { 20241 angleExtent -= TWOPI; 20242 } else if (sweepFlag && angleExtent < 0) { 20243 angleExtent += TWOPI; 20244 } 20245 20246 angleStart %= TWOPI; 20247 angleExtent %= TWOPI; 20248 20249 var segments = Math.ceil(_abs(angleExtent) / (TWOPI / 4)), 20250 rawPath = [], 20251 angleIncrement = angleExtent / segments,
vendor: 6,895 bytes, lines 20252-20520
20252 controlLength = 4 / 3 * _sin(angleIncrement / 2) / (1 + _cos(angleIncrement / 2)), 20253 ma = cosAngle * rx, 20254 mb = sinAngle * rx, 20255 mc = sinAngle * -ry, 20256 md = cosAngle * ry, 20257 i; 20258 20259 for (i = 0; i < segments; i++) { 20260 angle = angleStart + i * angleIncrement; 20261 x1 = _cos(angle); 20262 y1 = _sin(angle); 20263 ux = _cos(angle += angleIncrement); 20264 uy = _sin(angle); 20265 rawPath.push(x1 - controlLength * y1, y1 + controlLength * x1, ux + controlLength * uy, uy - controlLength * ux, ux, uy); 20266 } 20267 20268 for (i = 0; i < rawPath.length; i += 2) { 20269 x1 = rawPath[i]; 20270 y1 = rawPath[i + 1]; 20271 rawPath[i] = x1 * ma + y1 * mc + cx; 20272 rawPath[i + 1] = x1 * mb + y1 * md + cy; 20273 } 20274 20275 rawPath[i - 2] = x; 20276 rawPath[i - 1] = y; 20277 return rawPath; 20278 } 20279 20280 function stringToRawPath(d) { 20281 var a = (d + "").replace(_scientific, function (m) { 20282 var n = +m; 20283 return n < 0.0001 && n > -0.0001 ? 0 : n; 20284 }).match(_svgPathExp) || [], 20285 path = [], 20286 relativeX = 0, 20287 relativeY = 0, 20288 twoThirds = 2 / 3, 20289 elements = a.length, 20290 points = 0, 20291 errorMessage = "ERROR: malformed path: " + d, 20292 i, 20293 j, 20294 x, 20295 y, 20296 command, 20297 isRelative, 20298 segment, 20299 startX, 20300 startY, 20301 difX, 20302 difY, 20303 beziers, 20304 prevCommand, 20305 flag1, 20306 flag2, 20307 line = function line(sx, sy, ex, ey) { 20308 difX = (ex - sx) / 3; 20309 difY = (ey - sy) / 3; 20310 segment.push(sx + difX, sy + difY, ex - difX, ey - difY, ex, ey); 20311 }; 20312 20313 if (!d || !isNaN(a[0]) || isNaN(a[1])) { 20314 console.log(errorMessage); 20315 return path; 20316 } 20317 20318 for (i = 0; i < elements; i++) { 20319 prevCommand = command; 20320 20321 if (isNaN(a[i])) { 20322 command = a[i].toUpperCase(); 20323 isRelative = command !== a[i]; 20324 } else { 20325 i--; 20326 } 20327 20328 x = +a[i + 1]; 20329 y = +a[i + 2]; 20330 20331 if (isRelative) { 20332 x += relativeX; 20333 y += relativeY; 20334 } 20335 20336 if (!i) { 20337 startX = x; 20338 startY = y; 20339 } 20340 20341 if (command === "M") { 20342 if (segment) { 20343 if (segment.length < 8) { 20344 path.length -= 1; 20345 } else { 20346 points += segment.length; 20347 } 20348 } 20349 20350 relativeX = startX = x; 20351 relativeY = startY = y; 20352 segment = [x, y]; 20353 path.push(segment); 20354 i += 2; 20355 command = "L"; 20356 } else if (command === "C") { 20357 if (!segment) { 20358 segment = [0, 0]; 20359 } 20360 20361 if (!isRelative) { 20362 relativeX = relativeY = 0; 20363 } 20364 20365 segment.push(x, y, relativeX + a[i + 3] * 1, relativeY + a[i + 4] * 1, relativeX += a[i + 5] * 1, relativeY += a[i + 6] * 1); 20366 i += 6; 20367 } else if (command === "S") { 20368 difX = relativeX; 20369 difY = relativeY; 20370 20371 if (prevCommand === "C" || prevCommand === "S") { 20372 difX += relativeX - segment[segment.length - 4]; 20373 difY += relativeY - segment[segment.length - 3]; 20374 } 20375 20376 if (!isRelative) { 20377 relativeX = relativeY = 0; 20378 } 20379 20380 segment.push(difX, difY, x, y, relativeX += a[i + 3] * 1, relativeY += a[i + 4] * 1); 20381 i += 4; 20382 } else if (command === "Q") { 20383 difX = relativeX + (x - relativeX) * twoThirds; 20384 difY = relativeY + (y - relativeY) * twoThirds; 20385 20386 if (!isRelative) { 20387 relativeX = relativeY = 0; 20388 } 20389 20390 relativeX += a[i + 3] * 1; 20391 relativeY += a[i + 4] * 1; 20392 segment.push(difX, difY, relativeX + (x - relativeX) * twoThirds, relativeY + (y - relativeY) * twoThirds, relativeX, relativeY); 20393 i += 4; 20394 } else if (command === "T") { 20395 difX = relativeX - segment[segment.length - 4]; 20396 difY = relativeY - segment[segment.length - 3]; 20397 segment.push(relativeX + difX, relativeY + difY, x + (relativeX + difX * 1.5 - x) * twoThirds, y + (relativeY + difY * 1.5 - y) * twoThirds, relativeX = x, relativeY = y); 20398 i += 2; 20399 } else if (command === "H") { 20400 line(relativeX, relativeY, relativeX = x, relativeY); 20401 i += 1; 20402 } else if (command === "V") { 20403 line(relativeX, relativeY, relativeX, relativeY = x + (isRelative ? relativeY - relativeX : 0)); 20404 i += 1; 20405 } else if (command === "L" || command === "Z") { 20406 if (command === "Z") { 20407 x = startX; 20408 y = startY; 20409 segment.closed = true; 20410 } 20411 20412 if (command === "L" || _abs(relativeX - x) > 0.5 || _abs(relativeY - y) > 0.5) { 20413 line(relativeX, relativeY, x, y); 20414 20415 if (command === "L") { 20416 i += 2; 20417 } 20418 } 20419 20420 relativeX = x; 20421 relativeY = y; 20422 } else if (command === "A") { 20423 flag1 = a[i + 4]; 20424 flag2 = a[i + 5]; 20425 difX = a[i + 6]; 20426 difY = a[i + 7]; 20427 j = 7; 20428 20429 if (flag1.length > 1) { 20430 if (flag1.length < 3) { 20431 difY = difX; 20432 difX = flag2; 20433 j--; 20434 } else { 20435 difY = flag2; 20436 difX = flag1.substr(2); 20437 j -= 2; 20438 } 20439 20440 flag2 = flag1.charAt(1); 20441 flag1 = flag1.charAt(0); 20442 } 20443 20444 beziers = arcToSegment(relativeX, relativeY, +a[i + 1], +a[i + 2], +a[i + 3], +flag1, +flag2, (isRelative ? relativeX : 0) + difX * 1, (isRelative ? relativeY : 0) + difY * 1); 20445 i += j; 20446 20447 if (beziers) { 20448 for (j = 0; j < beziers.length; j++) { 20449 segment.push(beziers[j]); 20450 } 20451 } 20452 20453 relativeX = segment[segment.length - 2]; 20454 relativeY = segment[segment.length - 1]; 20455 } else { 20456 console.log(errorMessage); 20457 } 20458 } 20459 20460 i = segment.length; 20461 20462 if (i < 6) { 20463 path.pop(); 20464 i = 0; 20465 } else if (segment[0] === segment[i - 2] && segment[1] === segment[i - 1]) { 20466 segment.closed = true; 20467 } 20468 20469 path.totalPoints = points + i; 20470 return path; 20471 } 20472 function flatPointsToSegment(points, curviness) { 20473 if (curviness === void 0) { 20474 curviness = 1; 20475 } 20476 20477 var x = points[0], 20478 y = 0, 20479 segment = [x, y], 20480 i = 2; 20481 20482 for (; i < points.length; i += 2) { 20483 segment.push(x, y, points[i], y = (points[i] - x) * curviness / 2, x = points[i], -y); 20484 } 20485 20486 return segment; 20487 } 20488 function pointsToSegment(points, curviness, cornerThreshold) { 20489 _abs(points[0] - points[2]) < 1e-4 && _abs(points[1] - points[3]) < 1e-4 && (points = points.slice(2)); 20490 var l = points.length - 2, 20491 x = +points[0], 20492 y = +points[1], 20493 nextX = +points[2], 20494 nextY = +points[3], 20495 segment = [x, y, x, y], 20496 dx2 = nextX - x, 20497 dy2 = nextY - y, 20498 closed = Math.abs(points[l] - x) < 0.001 && Math.abs(points[l + 1] - y) < 0.001, 20499 prevX, 20500 prevY, 20501 angle, 20502 slope, 20503 i, 20504 dx1, 20505 dx3, 20506 dy1, 20507 dy3, 20508 d1, 20509 d2, 20510 a, 20511 b, 20512 c; 20513 20514 if (isNaN(cornerThreshold)) { 20515 cornerThreshold = Math.PI / 10; 20516 } 20517 20518 if (closed) { 20519 points.push(nextX, nextY); 20520 nextX = x;
20521 nextY = y; 20522 x = points[l - 2]; 20523 y = points[l - 1]; 20524 points.unshift(x, y); 20525 l += 4; 20526 } 20527 20528 curviness = curviness || curviness === 0 ? +curviness : 1; 20529 20530 for (i = 2; i < l; i += 2) { 20531 prevX = x; 20532 prevY = y; 20533 x = nextX; 20534 y = nextY; 20535 nextX = +points[i + 2]; 20536 nextY = +points[i + 3]; 20537 20538 if (x === nextX && y === nextY) { 20539 continue; 20540 } 20541 20542 dx1 = dx2; 20543 dy1 = dy2; 20544 dx2 = nextX - x; 20545 dy2 = nextY - y; 20546 dx3 = nextX - prevX; 20547 dy3 = nextY - prevY; 20548 a = dx1 * dx1 + dy1 * dy1; 20549 b = dx2 * dx2 + dy2 * dy2; 20550 c = dx3 * dx3 + dy3 * dy3; 20551 angle = Math.acos((a + b - c) / _sqrt(4 * a * b)); 20552 d2 = angle / Math.PI * curviness; 20553 d1 = _sqrt(a) * d2; 20554 d2 *= _sqrt(b); 20555 20556 if (x !== prevX || y !== prevY) { 20557 if (angle > cornerThreshold) { 20558 slope = _atan2(dy3, dx3); 20559 segment.push(_round(x - _cos(slope) * d1), _round(y - _sin(slope) * d1), _round(x), _round(y), _round(x + _cos(slope) * d2), _round(y + _sin(slope) * d2)); 20560 } else { 20561 slope = _atan2(dy1, dx1); 20562 segment.push(_round(x - _cos(slope) * d1), _round(y - _sin(slope) * d1)); 20563 slope = _atan2(dy2, dx2); 20564 segment.push(_round(x), _round(y), _round(x + _cos(slope) * d2), _round(y + _sin(slope) * d2)); 20565 } 20566 } 20567 } 20568 20569 x !== nextX || y !== nextY || segment.length < 4 ? segment.push(_round(nextX), _round(nextY), _round(nextX), _round(nextY)) : segment.length -= 2; 20570 20571 if (closed) { 20572 segment.splice(0, 6); 20573 segment.length = segment.length - 6; 20574 } 20575 20576 return segment; 20577 } 20578 function rawPathToString(rawPath) { 20579 if (_isNumber(rawPath[0])) { 20580 rawPath = [rawPath]; 20581 } 20582 20583 var result = "", 20584 l = rawPath.length, 20585 sl, 20586 s, 20587 i, 20588 segment; 20589 20590 for (s = 0; s < l; s++) { 20591 segment = rawPath[s]; 20592 result += "M" + _round(segment[0]) + "," + _round(segment[1]) + " C"; 20593 sl = segment.length; 20594 20595 for (i = 2; i < sl; i++) { 20596 result += _round(segment[i++]) + "," + _round(segment[i++]) + " " + _round(segment[i++]) + "," + _round(segment[i++]) + " " + _round(segment[i++]) + "," + _round(segment[i]) + " "; 20597 } 20598 20599 if (segment.closed) { 20600 result += "z"; 20601 } 20602 } 20603 20604 return result; 20605 } 20606 20607 var _doc, 20608 _win, 20609 _docElement, 20610 _body, 20611 _divContainer, 20612 _svgContainer, 20613 _identityMatrix, 20614 _transformProp = "transform", 20615 _transformOriginProp = _transformProp + "Origin", 20616 _hasOffsetBug, 20617 _setDoc = function _setDoc(element) { 20618 var doc = element.ownerDocument || element; 20619 20620 if (!(_transformProp in element.style) && "msTransform" in element.style) { 20621 _transformProp = "msTransform"; 20622 _transformOriginProp = _transformProp + "Origin"; 20623 } 20624 20625 while (doc.parentNode && (doc = doc.parentNode)) {} 20626 20627 _win = window; 20628 _identityMatrix = new Matrix2D(); 20629 20630 if (doc) { 20631 _doc = doc; 20632 _docElement = doc.documentElement; 20633 _body = doc.body; 20634 var d1 = doc.createElement("div"), 20635 d2 = doc.createElement("div"); 20636 20637 _body.appendChild(d1); 20638 20639 d1.appendChild(d2); 20640 d1.style.position = "static"; 20641 d1.style[_transformProp] = "translate3d(0,0,1px)"; 20642 _hasOffsetBug = d2.offsetParent !== d1; 20643 20644 _body.removeChild(d1); 20645 } 20646 20647 return doc; 20648 }, 20649 _forceNonZeroScale = function _forceNonZeroScale(e) { 20650 var a, cache; 20651 20652 while (e && e !== _body) { 20653 cache = e._gsap; 20654 cache && cache.uncache && cache.get(e, "x"); 20655 20656 if (cache && !cache.scaleX && !cache.scaleY && cache.renderTransform) { 20657 cache.scaleX = cache.scaleY = 1e-4; 20658 cache.renderTransform(1, cache); 20659 a ? a.push(cache) : a = [cache]; 20660 } 20661 20662 e = e.parentNode; 20663 } 20664 20665 return a; 20666 }, 20667 _svgTemps = [], 20668 _divTemps = [], 20669 _getDocScrollTop = function _getDocScrollTop() { 20670 return _win.pageYOffset || _doc.scrollTop || _docElement.scrollTop || _body.scrollTop || 0; 20671 }, 20672 _getDocScrollLeft = function _getDocScrollLeft() { 20673 return _win.pageXOffset || _doc.scrollLeft || _docElement.scrollLeft || _body.scrollLeft || 0; 20674 }, 20675 _svgOwner = function _svgOwner(element) { 20676 return element.ownerSVGElement || ((element.tagName + "").toLowerCase() === "svg" ? element : null); 20677 }, 20678 _isFixed = function _isFixed(element) { 20679 if (_win.getComputedStyle(element).position === "fixed") { 20680 return true; 20681 } 20682 20683 element = element.parentNode; 20684 20685 if (element && element.nodeType === 1) { 20686 return _isFixed(element); 20687 } 20688 }, 20689 _createSibling = function _createSibling(element, i) { 20690 if (element.parentNode && (_doc || _setDoc(element))) { 20691 var svg = _svgOwner(element), 20692 ns = svg ? svg.getAttribute("xmlns") || "http://www.w3.org/2000/svg" : "http://www.w3.org/1999/xhtml", 20693 type = svg ? i ? "rect" : "g" : "div", 20694 x = i !== 2 ? 0 : 100, 20695 y = i === 3 ? 100 : 0, 20696 css = "position:absolute;display:block;pointer-events:none;margin:0;padding:0;", 20697 e = _doc.createElementNS ? _doc.createElementNS(ns.replace(/^https/, "http"), type) : _doc.createElement(type); 20698 20699 if (i) { 20700 if (!svg) { 20701 if (!_divContainer) { 20702 _divContainer = _createSibling(element); 20703 _divContainer.style.cssText = css; 20704 } 20705 20706 e.style.cssText = css + "width:0.1px;height:0.1px;top:" + y + "px;left:" + x + "px"; 20707 20708 _divContainer.appendChild(e); 20709 } else { 20710 _svgContainer || (_svgContainer = _createSibling(element)); 20711 e.setAttribute("width", 0.01); 20712 e.setAttribute("height", 0.01); 20713 e.setAttribute("transform", "translate(" + x + "," + y + ")"); 20714 20715 _svgContainer.appendChild(e); 20716 } 20717 } 20718 20719 return e; 20720 } 20721 20722 throw "Need document and parent."; 20723 }, 20724 _consolidate = function _consolidate(m) { 20725 var c = new Matrix2D(), 20726 i = 0; 20727 20728 for (; i < m.numberOfItems; i++) { 20729 c.multiply(m.getItem(i).matrix); 20730 } 20731 20732 return c; 20733 }, 20734 _placeSiblings = function _placeSiblings(element, adjustGOffset) { 20735 var svg = _svgOwner(element), 20736 isRootSVG = element === svg, 20737 siblings = svg ? _svgTemps : _divTemps, 20738 parent = element.parentNode, 20739 container, 20740 m, 20741 b, 20742 x, 20743 y, 20744 cs; 20745 20746 if (element === _win) { 20747 return element; 20748 } 20749 20750 siblings.length || siblings.push(_createSibling(element, 1), _createSibling(element, 2), _createSibling(element, 3)); 20751 container = svg ? _svgContainer : _divContainer; 20752 20753 if (svg) { 20754 b = isRootSVG ? { 20755 x: 0, 20756 y: 0 20757 } : element.getBBox(); 20758 m = element.transform ? element.transform.baseVal : {}; 20759 20760 if (m.numberOfItems) { 20761 m = m.numberOfItems > 1 ? _consolidate(m) : m.getItem(0).matrix; 20762 x = m.a * b.x + m.c * b.y; 20763 y = m.b * b.x + m.d * b.y; 20764 } else { 20765 m = _identityMatrix; 20766 x = b.x; 20767 y = b.y; 20768 } 20769 20770 if (adjustGOffset && element.tagName.toLowerCase() === "g") { 20771 x = y = 0; 20772 } 20773 20774 (isRootSVG ? svg : parent).appendChild(container);
vendor: 7,530 bytes, lines 20775-21037
20775 container.setAttribute("transform", "matrix(" + m.a + "," + m.b + "," + m.c + "," + m.d + "," + (m.e + x) + "," + (m.f + y) + ")"); 20776 } else { 20777 x = y = 0; 20778 20779 if (_hasOffsetBug) { 20780 m = element.offsetParent; 20781 b = element; 20782 20783 while (b && (b = b.parentNode) && b !== m && b.parentNode) { 20784 if ((_win.getComputedStyle(b)[_transformProp] + "").length > 4) { 20785 x = b.offsetLeft; 20786 y = b.offsetTop; 20787 b = 0; 20788 } 20789 } 20790 } 20791 20792 cs = _win.getComputedStyle(element); 20793 20794 if (cs.position !== "absolute") { 20795 m = element.offsetParent; 20796 20797 while (parent && parent !== m) { 20798 x += parent.scrollLeft || 0; 20799 y += parent.scrollTop || 0; 20800 parent = parent.parentNode; 20801 } 20802 } 20803 20804 b = container.style; 20805 b.top = element.offsetTop - y + "px"; 20806 b.left = element.offsetLeft - x + "px"; 20807 b[_transformProp] = cs[_transformProp]; 20808 b[_transformOriginProp] = cs[_transformOriginProp]; 20809 b.position = cs.position === "fixed" ? "fixed" : "absolute"; 20810 element.parentNode.appendChild(container); 20811 } 20812 20813 return container; 20814 }, 20815 _setMatrix = function _setMatrix(m, a, b, c, d, e, f) { 20816 m.a = a; 20817 m.b = b; 20818 m.c = c; 20819 m.d = d; 20820 m.e = e; 20821 m.f = f; 20822 return m; 20823 }; 20824 20825 var Matrix2D = function () { 20826 function Matrix2D(a, b, c, d, e, f) { 20827 if (a === void 0) { 20828 a = 1; 20829 } 20830 20831 if (b === void 0) { 20832 b = 0; 20833 } 20834 20835 if (c === void 0) { 20836 c = 0; 20837 } 20838 20839 if (d === void 0) { 20840 d = 1; 20841 } 20842 20843 if (e === void 0) { 20844 e = 0; 20845 } 20846 20847 if (f === void 0) { 20848 f = 0; 20849 } 20850 20851 _setMatrix(this, a, b, c, d, e, f); 20852 } 20853 20854 var _proto = Matrix2D.prototype; 20855 20856 _proto.inverse = function inverse() { 20857 var a = this.a, 20858 b = this.b, 20859 c = this.c, 20860 d = this.d, 20861 e = this.e, 20862 f = this.f, 20863 determinant = a * d - b * c || 1e-10; 20864 return _setMatrix(this, d / determinant, -b / determinant, -c / determinant, a / determinant, (c * f - d * e) / determinant, -(a * f - b * e) / determinant); 20865 }; 20866 20867 _proto.multiply = function multiply(matrix) { 20868 var a = this.a, 20869 b = this.b, 20870 c = this.c, 20871 d = this.d, 20872 e = this.e, 20873 f = this.f, 20874 a2 = matrix.a, 20875 b2 = matrix.c, 20876 c2 = matrix.b, 20877 d2 = matrix.d, 20878 e2 = matrix.e, 20879 f2 = matrix.f; 20880 return _setMatrix(this, a2 * a + c2 * c, a2 * b + c2 * d, b2 * a + d2 * c, b2 * b + d2 * d, e + e2 * a + f2 * c, f + e2 * b + f2 * d); 20881 }; 20882 20883 _proto.clone = function clone() { 20884 return new Matrix2D(this.a, this.b, this.c, this.d, this.e, this.f); 20885 }; 20886 20887 _proto.equals = function equals(matrix) { 20888 var a = this.a, 20889 b = this.b, 20890 c = this.c, 20891 d = this.d, 20892 e = this.e, 20893 f = this.f; 20894 return a === matrix.a && b === matrix.b && c === matrix.c && d === matrix.d && e === matrix.e && f === matrix.f; 20895 }; 20896 20897 _proto.apply = function apply(point, decoratee) { 20898 if (decoratee === void 0) { 20899 decoratee = {}; 20900 } 20901 20902 var x = point.x, 20903 y = point.y, 20904 a = this.a, 20905 b = this.b, 20906 c = this.c, 20907 d = this.d, 20908 e = this.e, 20909 f = this.f; 20910 decoratee.x = x * a + y * c + e || 0; 20911 decoratee.y = x * b + y * d + f || 0; 20912 return decoratee; 20913 }; 20914 20915 return Matrix2D; 20916 }(); 20917 function getGlobalMatrix(element, inverse, adjustGOffset, includeScrollInFixed) { 20918 if (!element || !element.parentNode || (_doc || _setDoc(element)).documentElement === element) { 20919 return new Matrix2D(); 20920 } 20921 20922 var zeroScales = _forceNonZeroScale(element), 20923 svg = _svgOwner(element), 20924 temps = svg ? _svgTemps : _divTemps, 20925 container = _placeSiblings(element, adjustGOffset), 20926 b1 = temps[0].getBoundingClientRect(), 20927 b2 = temps[1].getBoundingClientRect(), 20928 b3 = temps[2].getBoundingClientRect(), 20929 parent = container.parentNode, 20930 isFixed = !includeScrollInFixed && _isFixed(element), 20931 m = new Matrix2D((b2.left - b1.left) / 100, (b2.top - b1.top) / 100, (b3.left - b1.left) / 100, (b3.top - b1.top) / 100, b1.left + (isFixed ? 0 : _getDocScrollLeft()), b1.top + (isFixed ? 0 : _getDocScrollTop())); 20932 20933 parent.removeChild(container); 20934 20935 if (zeroScales) { 20936 b1 = zeroScales.length; 20937 20938 while (b1--) { 20939 b2 = zeroScales[b1]; 20940 b2.scaleX = b2.scaleY = 0; 20941 b2.renderTransform(1, b2); 20942 } 20943 } 20944 20945 return inverse ? m.inverse() : m; 20946 } 20947 20948 /*! 20949 * MotionPathPlugin 3.7.0 20950 * https://greensock.com 20951 * 20952 * @license Copyright 2008-2021, GreenSock. All rights reserved. 20953 * Subject to the terms at https://greensock.com/standard-license or for 20954 * Club GreenSock members, the agreement issued with that membership. 20955 * @author: Jack Doyle, [email protected] 20956 */ 20957 20958 var _xProps = "x,translateX,left,marginLeft,xPercent".split(","), 20959 _yProps = "y,translateY,top,marginTop,yPercent".split(","), 20960 _DEG2RAD$1 = Math.PI / 180, 20961 gsap, 20962 PropTween, 20963 _getUnit, 20964 _toArray, 20965 _getGSAP = function _getGSAP() { 20966 return gsap || typeof window !== "undefined" && (gsap = window.gsap) && gsap.registerPlugin && gsap; 20967 }, 20968 _populateSegmentFromArray = function _populateSegmentFromArray(segment, values, property, mode) { 20969 var l = values.length, 20970 si = mode === 2 ? 0 : mode, 20971 i = 0, 20972 v; 20973 20974 for (; i < l; i++) { 20975 segment[si] = v = parseFloat(values[i][property]); 20976 mode === 2 && (segment[si + 1] = 0); 20977 si += 2; 20978 } 20979 20980 return segment; 20981 }, 20982 _getPropNum = function _getPropNum(target, prop, unit) { 20983 return parseFloat(target._gsap.get(target, prop, unit || "px")) || 0; 20984 }, 20985 _relativize = function _relativize(segment) { 20986 var x = segment[0], 20987 y = segment[1], 20988 i; 20989 20990 for (i = 2; i < segment.length; i += 2) { 20991 x = segment[i] += x; 20992 y = segment[i + 1] += y; 20993 } 20994 }, 20995 _segmentToRawPath = function _segmentToRawPath(plugin, segment, target, x, y, slicer, vars, unitX, unitY) { 20996 if (vars.type === "cubic") { 20997 segment = [segment]; 20998 } else { 20999 vars.fromCurrent !== false && segment.unshift(_getPropNum(target, x, unitX), y ? _getPropNum(target, y, unitY) : 0); 21000 vars.relative && _relativize(segment); 21001 var pointFunc = y ? pointsToSegment : flatPointsToSegment; 21002 segment = [pointFunc(segment, vars.curviness)]; 21003 } 21004 21005 segment = slicer(_align(segment, target, vars)); 21006 21007 _addDimensionalPropTween(plugin, target, x, segment, "x", unitX); 21008 21009 y && _addDimensionalPropTween(plugin, target, y, segment, "y", unitY); 21010 return cacheRawPathMeasurements(segment, vars.resolution || (vars.curviness === 0 ? 20 : 12)); 21011 }, 21012 _emptyFunc = function _emptyFunc(v) { 21013 return v; 21014 }, 21015 _numExp = /[-+\.]*\d+[\.e\-\+]*\d*[e\-\+]*\d*/g, 21016 _originToPoint = function _originToPoint(element, origin, parentMatrix) { 21017 var m = getGlobalMatrix(element), 21018 svg, 21019 x, 21020 y; 21021 21022 if ((element.tagName + "").toLowerCase() === "svg") { 21023 svg = element.viewBox.baseVal; 21024 x = svg.x; 21025 y = svg.y; 21026 svg.width || (svg = { 21027 width: +element.getAttribute("width"), 21028 height: +element.getAttribute("height") 21029 }); 21030 } else { 21031 svg = origin && element.getBBox && element.getBBox(); 21032 x = y = 0; 21033 } 21034 21035 if (origin && origin !== "auto") { 21036 x += origin.push ? origin[0] * (svg ? svg.width : element.offsetWidth || 0) : origin.x; 21037 y += origin.push ? origin[1] * (svg ? svg.height : element.offsetHeight || 0
vendor: 10,733 bytes, lines 21037-21298
21037) : origin.y; 21038 } 21039 21040 return parentMatrix.apply(x || y ? m.apply({ 21041 x: x, 21042 y: y 21043 }) : { 21044 x: m.e, 21045 y: m.f 21046 }); 21047 }, 21048 _getAlignMatrix = function _getAlignMatrix(fromElement, toElement, fromOrigin, toOrigin) { 21049 var parentMatrix = getGlobalMatrix(fromElement.parentNode, true, true), 21050 m = parentMatrix.clone().multiply(getGlobalMatrix(toElement)), 21051 fromPoint = _originToPoint(fromElement, fromOrigin, parentMatrix), 21052 _originToPoint2 = _originToPoint(toElement, toOrigin, parentMatrix), 21053 x = _originToPoint2.x, 21054 y = _originToPoint2.y, 21055 p; 21056 21057 m.e = m.f = 0; 21058 21059 if (toOrigin === "auto" && toElement.getTotalLength && toElement.tagName.toLowerCase() === "path") { 21060 p = toElement.getAttribute("d").match(_numExp) || []; 21061 p = m.apply({ 21062 x: +p[0], 21063 y: +p[1] 21064 }); 21065 x += p.x; 21066 y += p.y; 21067 } 21068 21069 if (p || toElement.getBBox && fromElement.getBBox && toElement.ownerSVGElement === fromElement.ownerSVGElement) { 21070 p = m.apply(toElement.getBBox()); 21071 x -= p.x; 21072 y -= p.y; 21073 } 21074 21075 m.e = x - fromPoint.x; 21076 m.f = y - fromPoint.y; 21077 return m; 21078 }, 21079 _align = function _align(rawPath, target, _ref) { 21080 var align = _ref.align, 21081 matrix = _ref.matrix, 21082 offsetX = _ref.offsetX, 21083 offsetY = _ref.offsetY, 21084 alignOrigin = _ref.alignOrigin; 21085 21086 var x = rawPath[0][0], 21087 y = rawPath[0][1], 21088 curX = _getPropNum(target, "x"), 21089 curY = _getPropNum(target, "y"), 21090 alignTarget, 21091 m, 21092 p; 21093 21094 if (!rawPath || !rawPath.length) { 21095 return getRawPath("M0,0L0,0"); 21096 } 21097 21098 if (align) { 21099 if (align === "self" || (alignTarget = _toArray(align)[0] || target) === target) { 21100 transformRawPath(rawPath, 1, 0, 0, 1, curX - x, curY - y); 21101 } else { 21102 if (alignOrigin && alignOrigin[2] !== false) { 21103 gsap.set(target, { 21104 transformOrigin: alignOrigin[0] * 100 + "% " + alignOrigin[1] * 100 + "%" 21105 }); 21106 } else { 21107 alignOrigin = [_getPropNum(target, "xPercent") / -100, _getPropNum(target, "yPercent") / -100]; 21108 } 21109 21110 m = _getAlignMatrix(target, alignTarget, alignOrigin, "auto"); 21111 p = m.apply({ 21112 x: x, 21113 y: y 21114 }); 21115 transformRawPath(rawPath, m.a, m.b, m.c, m.d, curX + m.e - (p.x - m.e), curY + m.f - (p.y - m.f)); 21116 } 21117 } 21118 21119 if (matrix) { 21120 transformRawPath(rawPath, matrix.a, matrix.b, matrix.c, matrix.d, matrix.e, matrix.f); 21121 } else if (offsetX || offsetY) { 21122 transformRawPath(rawPath, 1, 0, 0, 1, offsetX || 0, offsetY || 0); 21123 } 21124 21125 return rawPath; 21126 }, 21127 _addDimensionalPropTween = function _addDimensionalPropTween(plugin, target, property, rawPath, pathProperty, forceUnit) { 21128 var cache = target._gsap, 21129 harness = cache.harness, 21130 alias = harness && harness.aliases && harness.aliases[property], 21131 prop = alias && alias.indexOf(",") < 0 ? alias : property, 21132 pt = plugin._pt = new PropTween(plugin._pt, target, prop, 0, 0, _emptyFunc, 0, cache.set(target, prop, plugin)); 21133 pt.u = _getUnit(cache.get(target, prop, forceUnit)) || 0; 21134 pt.path = rawPath; 21135 pt.pp = pathProperty; 21136 21137 plugin._props.push(prop); 21138 }, 21139 _sliceModifier = function _sliceModifier(start, end) { 21140 return function (rawPath) { 21141 return start || end !== 1 ? sliceRawPath(rawPath, start, end) : rawPath; 21142 }; 21143 }; 21144 21145 var MotionPathPlugin = { 21146 version: "3.7.0", 21147 name: "motionPath", 21148 register: function register(core, Plugin, propTween) { 21149 gsap = core; 21150 _getUnit = gsap.utils.getUnit; 21151 _toArray = gsap.utils.toArray; 21152 PropTween = propTween; 21153 }, 21154 init: function init(target, vars) { 21155 if (!gsap) { 21156 console.warn("Please gsap.registerPlugin(MotionPathPlugin)"); 21157 return false; 21158 } 21159 21160 if (!(typeof vars === "object" && !vars.style) || !vars.path) { 21161 vars = { 21162 path: vars 21163 }; 21164 } 21165 21166 var rawPaths = [], 21167 _vars = vars, 21168 path = _vars.path, 21169 autoRotate = _vars.autoRotate, 21170 unitX = _vars.unitX, 21171 unitY = _vars.unitY, 21172 x = _vars.x, 21173 y = _vars.y, 21174 firstObj = path[0], 21175 slicer = _sliceModifier(vars.start, "end" in vars ? vars.end : 1), 21176 rawPath, 21177 p; 21178 21179 this.rawPaths = rawPaths; 21180 this.target = target; 21181 21182 if (this.rotate = autoRotate || autoRotate === 0) { 21183 this.rOffset = parseFloat(autoRotate) || 0; 21184 this.radians = !!vars.useRadians; 21185 this.rProp = vars.rotation || "rotation"; 21186 this.rSet = target._gsap.set(target, this.rProp, this); 21187 this.ru = _getUnit(target._gsap.get(target, this.rProp)) || 0; 21188 } 21189 21190 if (Array.isArray(path) && !("closed" in path) && typeof firstObj !== "number") { 21191 for (p in firstObj) { 21192 if (!x && ~_xProps.indexOf(p)) { 21193 x = p; 21194 } else if (!y && ~_yProps.indexOf(p)) { 21195 y = p; 21196 } 21197 } 21198 21199 if (x && y) { 21200 rawPaths.push(_segmentToRawPath(this, _populateSegmentFromArray(_populateSegmentFromArray([], path, x, 0), path, y, 1), target, x, y, slicer, vars, unitX || _getUnit(path[0][x]), unitY || _getUnit(path[0][y]))); 21201 } else { 21202 x = y = 0; 21203 } 21204 21205 for (p in firstObj) { 21206 p !== x && p !== y && rawPaths.push(_segmentToRawPath(this, _populateSegmentFromArray([], path, p, 2), target, p, 0, slicer, vars, _getUnit(path[0][p]))); 21207 } 21208 } else { 21209 rawPath = slicer(_align(getRawPath(vars.path), target, vars)); 21210 cacheRawPathMeasurements(rawPath, vars.resolution); 21211 rawPaths.push(rawPath); 21212 21213 _addDimensionalPropTween(this, target, vars.x || "x", rawPath, "x", vars.unitX || "px"); 21214 21215 _addDimensionalPropTween(this, target, vars.y || "y", rawPath, "y", vars.unitY || "px"); 21216 } 21217 }, 21218 render: function render(ratio, data) { 21219 var rawPaths = data.rawPaths, 21220 i = rawPaths.length, 21221 pt = data._pt; 21222 21223 if (ratio > 1) { 21224 ratio = 1; 21225 } else if (ratio < 0) { 21226 ratio = 0; 21227 } 21228 21229 while (i--) { 21230 getPositionOnPath(rawPaths[i], ratio, !i && data.rotate, rawPaths[i]); 21231 } 21232 21233 while (pt) { 21234 pt.set(pt.t, pt.p, pt.path[pt.pp] + pt.u, pt.d, ratio); 21235 pt = pt._next; 21236 } 21237 21238 data.rotate && data.rSet(data.target, data.rProp, rawPaths[0].angle * (data.radians ? _DEG2RAD$1 : 1) + data.rOffset + data.ru, data, ratio); 21239 }, 21240 getLength: function getLength(path) { 21241 return cacheRawPathMeasurements(getRawPath(path)).totalLength; 21242 }, 21243 sliceRawPath: sliceRawPath, 21244 getRawPath: getRawPath, 21245 pointsToSegment: pointsToSegment, 21246 stringToRawPath: stringToRawPath, 21247 rawPathToString: rawPathToString, 21248 transformRawPath: transformRawPath, 21249 getGlobalMatrix: getGlobalMatrix, 21250 getPositionOnPath: getPositionOnPath, 21251 cacheRawPathMeasurements: cacheRawPathMeasurements, 21252 convertToPath: function convertToPath$1(targets, swap) { 21253 return _toArray(targets).map(function (target) { 21254 return convertToPath(target, swap !== false); 21255 }); 21256 }, 21257 convertCoordinates: function convertCoordinates(fromElement, toElement, point) { 21258 var m = getGlobalMatrix(toElement, true, true).multiply(getGlobalMatrix(fromElement)); 21259 return point ? m.apply(point) : m; 21260 }, 21261 getAlignMatrix: _getAlignMatrix, 21262 getRelativePosition: function getRelativePosition(fromElement, toElement, fromOrigin, toOrigin) { 21263 var m = _getAlignMatrix(fromElement, toElement, fromOrigin, toOrigin); 21264 21265 return { 21266 x: m.e, 21267 y: m.f 21268 }; 21269 }, 21270 arrayToRawPath: function arrayToRawPath(value, vars) { 21271 vars = vars || {}; 21272 21273 var segment = _populateSegmentFromArray(_populateSegmentFromArray([], value, vars.x || "x", 0), value, vars.y || "y", 1); 21274 21275 vars.relative && _relativize(segment); 21276 return [vars.type === "cubic" ? segment : pointsToSegment(segment, vars.curviness)]; 21277 } 21278 }; 21279 _getGSAP() && gsap.registerPlugin(MotionPathPlugin); 21280 21281 exports.MotionPathPlugin = MotionPathPlugin; 21282 exports.default = MotionPathPlugin; 21283 21284 Object.defineProperty(exports, '__esModule', { value: true }); 21285 21286}))); 21287 21288/*SIGUIENTE LIBRERIA*/ 21289/*! 21290 * MotionPathPlugin 3.7.0 21291 * https://greensock.com 21292 * 21293 * @license Copyright 2021, GreenSock. All rights reserved. 21294 * Subject to the terms at https://greensock.com/standard-license or for Club GreenSock members, the agreement issued with that membership. 21295 * @author: Jack Doyle, [email protected] 21296 */ 21297 21298!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof define&&define.amd?define(["exports"],e):e((t=t||self).window=t.window||{})}(this,function(t){"use strict";function p(t){return"string"==typeof t}function x(t){return Math.round(1e10*t)/1e10||0}function y(t,e,n,r){var a=t[e],o=1===r?6:subdivideSegment(a,n,r);if(o&&o+n+2<a.length)return t.splice(e,0,a.slice(0,n+o+2)),a.splice(0,n+o),1}function B(t,e){var n=t.length,r=t[n-1]||[],a=r.length;n&&e[0]===r[a-2]&&e[1]===r[a-1]&&(e=r.concat(e.slice(2)),n--),t[n]=e}var M=/[achlmqstvz]|(-?\d*\.?\d*(?:e[\-+]?\d+)?)[0-9]/gi,T=/(?:(-)?\d*\.?\d*(?:e[\-+]?\d+)?)[0-9]/gi,L=/[\+\-]?\d*\.?\d+e[\+\-]?\d+/gi,r=/(^[#\.][a-z]|[a-y][a-z])/i,F=Math.PI/180,s=180/Math.PI,U=Math.sin,H=Math.cos,Q=Math.abs,W=Math.sqrt,S=Math.atan2,A=1e8,l=function _isNumber(t){return"number"==typeof t},N={},_={},e=1e5,d=function _wrapProgress(t){return Math.round((t+A)%1*e)/e||(t<0?0:1)},C=function _round(t){return Math.round(t*e)/e||0},O=function _copyMetaData(t,e){return e.totalLength=t.totalLength,t.samples?(e.samples=t.samples.slice(0),e.lookup=t.lookup.slice(0),e.minLength=t.minLength,e.resolution=t.resolution):t.totalPoints&&(e.totalPoints=t.totalPoints),e};function getRawPath(t){var e,n=(t=p(t)&&r.test(t)&&document.querySelector(t)||t).getAttribute?t:0;return n&&(t=t.getAttribute("d"))?(n._gsPath||(n._gsPath={}),(e=n._gsPath[t])&&!e._dirty?e:n._gsPath[t]=stringToRawPath(t)):t?p(t)?stringToRawPath(t):l(t[0])?[t]:t:console.warn("Expecting a <path> element or an SVG path data string")}function reverseSegment(t){var e,n=0;for(t.reverse();n<t.length;n+=2)e=t[n],t[n]=t[n+1],t[n+1]=e;t.reversed=!t.reversed}var j={rect:"rx,ry,x,y,width,height",circle:"r,cx,cy",ellipse:"rx,ry,cx,cy",line:"x1,x2,y1,y2"};function convertToPath(t,e){var n,r,a,o,i,s,l,h,u,g,f,c,p,d,m,v,x,P,y,w,b,M,L=t.tagName.toLowerCase(),R=.552284749831;return"path"!==L&&t.getBBox?(s=function _createPath(t,e){var n,r=document.createElementNS("http://www.w3.org/2000/svg","path"),a=[].slice.call(t.attributes),o=a.length;for(e=","+e+",";-1<--o;)n=a[o].nodeName.toLowerCase(),e.indexOf(","+n+",")<0&&r.setAttributeNS(null,n,a[o].nodeValue);return r}(t,"x,y,width,height,cx,cy,rx,ry,r,x1,x2,y1,y2,points"),M=function _attrToObj(t,e){for(var n=e?e.split(","):[],r={},a=n.length;-1<--a;
vendor: 9,315 bytes, line 21298
21298)r[n[a]]=+t.getAttribute(n[a])||0;return r}(t,j[L]),"rect"===L?(o=M.rx,i=M.ry||o,r=M.x,a=M.y,g=M.width-2*o,f=M.height-2*i,n=o||i?"M"+(v=(d=(p=r+o)+g)+o)+","+(P=a+i)+" V"+(y=P+f)+" C"+[v,w=y+i*R,m=d+o*R,b=y+i,d,b,d-(d-p)/3,b,p+(d-p)/3,b,p,b,c=r+o*(1-R),b,r,w,r,y,r,y-(y-P)/3,r,P+(y-P)/3,r,P,r,x=a+i*(1-R),c,a,p,a,p+(d-p)/3,a,d-(d-p)/3,a,d,a,m,a,v,x,v,P].join(",")+"z":"M"+(r+g)+","+a+" v"+f+" h"+-g+" v"+-f+" h"+g+"z"):"circle"===L||"ellipse"===L?(h="circle"===L?(o=i=M.r)*R:(o=M.rx,(i=M.ry)*R),n="M"+((r=M.cx)+o)+","+(a=M.cy)+" C"+[r+o,a+h,r+(l=o*R),a+i,r,a+i,r-l,a+i,r-o,a+h,r-o,a,r-o,a-h,r-l,a-i,r,a-i,r+l,a-i,r+o,a-h,r+o,a].join(",")+"z"):"line"===L?n="M"+M.x1+","+M.y1+" L"+M.x2+","+M.y2:"polyline"!==L&&"polygon"!==L||(n="M"+(r=(u=(t.getAttribute("points")+"").match(T)||[]).shift())+","+(a=u.shift())+" L"+u.join(","),"polygon"===L&&(n+=","+r+","+a+"z")),s.setAttribute("d",rawPathToString(s._gsRawPath=stringToRawPath(n))),e&&t.parentNode&&(t.parentNode.insertBefore(s,t),t.parentNode.removeChild(t)),s):t}function getRotationAtBezierT(t,e,n){var r,a=t[e],o=t[e+2],i=t[e+4];return a+=(o-a)*n,a+=((o+=(i-o)*n)-a)*n,r=o+(i+(t[e+6]-i)*n-o)*n-a,a=t[e+1],a+=((o=t[e+3])-a)*n,a+=((o+=((i=t[e+5])-o)*n)-a)*n,C(S(o+(i+(t[e+7]-i)*n-o)*n-a,r)*s)}function sliceRawPath(t,e,n){n=function _isUndefined(t){return void 0===t}(n)?1:x(n)||0,e=x(e)||0;var r=Math.max(0,~~(Q(n-e)-1e-8)),a=function copyRawPath(t){for(var e=[],n=0;n<t.length;n++)e[n]=O(t[n],t[n].slice(0));return O(t,e)}(t);if(n<e&&(e=1-e,n=1-n,function _reverseRawPath(t,e){var n=t.length;for(e||t.reverse();n--;)t[n].reversed||reverseSegment(t[n])}(a),a.totalLength=0),e<0||n<0){var o=Math.abs(~~Math.min(e,n))+1;e+=o,n+=o}a.totalLength||cacheRawPathMeasurements(a);var i,s,l,h,u,g,f,c,p=1<n,d=getProgressData(a,e,N,!0),m=getProgressData(a,n,_),v=m.segment,P=d.segment,w=m.segIndex,b=d.segIndex,M=m.i,L=d.i,R=b===w,T=M===L&&R;if(p||r){for(i=w<b||R&&M<L||T&&m.t<d.t,y(a,b,L,d.t)&&(b++,i||(w++,T?(m.t=(m.t-d.t)/(1-d.t),M=0):R&&(M-=L))),1-(n-e)<1e-5?w=b-1:!m.t&&w?w--:y(a,w,M,m.t)&&i&&b++,1===d.t&&(b=(b+1)%a.length),u=[],f=1+(g=a.length)*r,f+=(g-(c=b)+w)%g,h=0;h<f;h++)B(u,a[c++%g]);a=u}else if(l=1===m.t?6:subdivideSegment(v,M,m.t),e!==n)for(s=subdivideSegment(P,L,T?d.t/m.t:d.t),R&&(l+=s),v.splice(M+l+2),(s||L)&&P.splice(0,L+s),h=a.length;h--;)(h<b||w<h)&&a.splice(h,1);else v.angle=getRotationAtBezierT(v,M+l,0),d=v[M+=l],m=v[M+1],v.length=v.totalLength=0,v.totalPoints=a.totalPoints=8,v.push(d,m,d,m,d,m,d,m);return a.totalLength=0,a}function measureSegment(t,e,n){e=e||0,t.samples||(t.samples=[],t.lookup=[]);var r,a,o,i,s,l,h,u,g,f,c,p,d,m,v,x,P,y=~~t.resolution||12,w=1/y,b=n?e+6*n+1:t.length,M=t[e],L=t[e+1],R=e?e/6*y:0,T=t.samples,S=t.lookup,N=(e?t.minLength:A)||A,_=T[R+n*y-1],C=e?T[R-1]:0;for(T.length=S.length=0,a=e+2;a<b;a+=6){if(o=t[a+4]-M,i=t[a+2]-M,s=t[a]-M,u=t[a+5]-L,g=t[a+3]-L,f=t[a+1]-L,l=h=c=p=0,Q(o)<1e-5&&Q(u)<1e-5&&Q(s)+Q(f)<1e-5)8<t.length&&(t.splice(a,6),a-=6,b-=6);else for(r=1;r<=y;r++)l=h-(h=((m=w*r)*m*o+3*(d=1-m)*(m*i+d*s))*m),c=p-(p=(m*m*u+3*d*(m*g+d*f))*m),(x=W(c*c+l*l))<N&&(N=x),C+=x,T[R++]=C;M+=o,L+=u}if(_)for(_-=C;R<T.length;R++)T[R]+=_;if(T.length&&N)for(t.totalLength=P=T[T.length-1]||0,t.minLength=N,x=v=0,r=0;r<P;r+=N)S[x++]=T[v]<r?++v:v;else t.totalLength=T[0]=0;return e?C-T[e/2-1]:C}function cacheRawPathMeasurements(t,e){var n,r,a;for(a=n=r=0;a<t.length;a++)t[a].resolution=~~e||12,r+=t[a].length,n+=measureSegment(t[a]);return t.totalPoints=r,t.totalLength=n,t}function subdivideSegment(t,e,n){if(n<=0||1<=n)return 0;var r=t[e],a=t[e+1],o=t[e+2],i=t[e+3],s=t[e+4],l=t[e+5],h=r+(o-r)*n,u=o+(s-o)*n,g=a+(i-a)*n,f=i+(l-i)*n,c=h+(u-h)*n,p=g+(f-g)*n,d=s+(t[e+6]-s)*n,m=l+(t[e+7]-l)*n;return u+=(d-u)*n,f+=(m-f)*n,t.splice(e+2,4,C(h),C(g),C(c),C(p),C(c+(u-c)*n),C(p+(f-p)*n),C(u),C(f),C(d),C(m)),t.samples&&t.samples.splice(e/6*t.resolution|0,0,0,0,0,0,0,0),6}function getProgressData(t,e,n,r){n=n||{},t.totalLength||cacheRawPathMeasurements(t),(e<0||1<e)&&(e=d(e));var a,o,i,s,l,h,u,g=0,f=t[0];if(e)if(1===e)u=1,h=(f=t[g=t.length-1]).length-8;else{if(1<t.length){for(i=t.totalLength*e,l=h=0;(l+=t[h++].totalLength)<i;)g=h;e=(i-(s=l-(f=t[g]).totalLength))/(l-s)||0}a=f.samples,o=f.resolution,i=f.totalLength*e,s=(h=f.lookup[~~(i/f.minLength)]||0)?a[h-1]:0,(l=a[h])<i&&(s=l,l=a[++h]),u=1/o*((i-s)/(l-s)+h%o),h=6*~~(h/o),r&&1===u&&(h+6<f.length?(h+=6,u=0):g+1<t.length&&(h=u=0,f=t[++g]))}else u=h=g=0,f=t[0];return n.t=u,n.i=h,n.path=t,n.segment=f,n.segIndex=g,n}function getPositionOnPath(t,e,n,r){var a,o,i,s,l,h,u,g,f,c=t[0],p=r||{};if((e<0||1<e)&&(e=d(e)),1<t.length){for(i=t.totalLength*e,l=h=0;(l+=t[h++].totalLength)<i;)c=t[h];e=(i-(s=l-c.totalLength))/(l-s)||0}return a=c.samples,o=c.resolution,i=c.totalLength*e,s=(h=c.lookup[e<1?~~(i/c.minLength):c.lookup.length-1]||0)?a[h-1]:0,(l=a[h])<i&&(s=l,l=a[++h]),f=1-(u=1/o*((i-s)/(l-s)+h%o)||0),g=c[h=6*~~(h/o)],p.x=C((u*u*(c[h+6]-g)+3*f*(u*(c[h+4]-g)+f*(c[h+2]-g)))*u+g),p.y=C((u*u*(c[h+7]-(g=c[h+1]))+3*f*(u*(c[h+5]-g)+f*(c[h+3]-g)))*u+g),n&&(p.angle=c.totalLength?getRotationAtBezierT(c,h,1<=u?1-1e-9:u||1e-9):c.angle||0),p}function transformRawPath(t,e,n,r,a,o,i){for(var s,l,h,u,g,f=t.length;-1<--f;)for(l=(s=t[f]).length,h=0;h<l;h+=2)u=s[h],g=s[h+1],s[h]=u*e+g*r+o,s[h+1]=u*n+g*a+i;return t._dirty=1,t}function arcToSegment(t,e,n,r,a,o,i,s,l){if(t!==s||e!==l){n=Q(n),r=Q(r);var h=a%360*F,u=H(h),g=U(h),f=Math.PI,c=2*f,p=(t-s)/2,d=(e-l)/2,m=u*p+g*d,v=-g*p+u*d,x=m*m,P=v*v,y=x/(n*n)+P/(r*r);1<y&&(n=W(y)*n,r=W(y)*r);var w=n*n,b=r*r,M=(w*b-w*P-b*x)/(w*P+b*x);M<0&&(M=0);var L=(o===i?-1:1)*W(M),R=n*v/r*L,T=-r*m/n*L,S=u*R-g*T+(t+s)/2,N=g*R+u*T+(e+l)/2,_=(m-R)/n,C=(v-T)/r,A=(-m-R)/n,B=(-v-T)/r,O=_*_+C*C,j=(C<0?-1:1)*Math.acos(_/W(O)),I=(_*B-C*A<0?-1:1)*Math.acos((_*A+C*B)/W(O*(A*A+B*B)));isNaN(I)&&(I=f),!i&&0<I?I-=c:i&&I<0&&(I+=c),j%=c,I%=c;var X,E=Math.ceil(Q(I)/(c/4)),G=[],V=I/E,D=4/3*U(V/2)/(1+H(V/2)),k=u*n,z=g*n,Y=g*-r,q=u*r;for(X=0;X<E;X++)m=H(a=j+X*V),v=U(a),_=H(a+=V),C=U(a),G.push(m-D*v,v+D*m,_+D*C,C-D*_,_,C);for(X=0;X<G.length;X+=2)m=G[X],v=G[X+1],G[X]=m*k+v*Y+S,G[X+1]=m*z+v*q+N;return G[X-2]=s,G[X-1]=l,G}}function stringToRawPath(t){function sf(t,e,n,r){u=(n-t)/3,g=(r-e)/3,s.push(t+u,e+g,n-u,r-g,n,r)}var e,n,r,a,o,i,s,l,h,u,g,f,c,p,d,m=(t+"").replace(L,function(t){var e=+t;return e<1e-4&&-1e-4<e?0:e}).match(M)||[],v=[],x=0,P=0,y=m.length,w=0,b="ERROR: malformed path: "+t;if(!t||!isNaN(m[0])||isNaN(m[1]))return console.log(b),v;for(e=0;e<y;e++)if(c=o,isNaN(m[e])?i=(o=m[e].toUpperCase())!==m[e]:e--,r=+m[e+1],a=+m[e+2],i&&(r+=x,a+=P),e||(l=r,h=a),"M"===o)s&&(s.length<8?--v.length:w+=s.length),x=l=r,P=h=a,s=[r,a],v.push(s),e+=2,o="L";else if("C"===o)i||(x=P=0),(s=s||[0,0]).push(r,a,x+1*m[e+3],P+1*m[e+4],x+=1*m[e+5],P+=1*m[e+6]),e+=6;else if("S"===o)u=x,g=P,"C"!==c&&"S"!==c||(u+=x-s[s.length-4],g+=P-s[s.length-3]),i||(x=P=0),s.push(u,g,r,a,x+=1*m[e+3],P+=1*m[e+4]),e+=4;else if("Q"===o)u=x+2/3*(r-x),g=P+2/3*(a-P),i||(x=P=0),x+=1*m[e+3],P+=1*m[e+4],s.push(u,g,x+2/3*(r-x),P+2/3*(a-P),x,P),e+=4;else if("T"===o)u=x-s[s.length-4],g=P-s[s.length-3],s.push(x+u,P+g,r+2/3*(x+1.5*u-r),a+2/3*(P+1.5*g-a),x=r,P=a),e+=2;else if("H"===o)sf(x,P,x=r,P),e+=1;else if("V"===o)sf(x,P,x,P=r+(i?P-x:0)),e+=1;else if("L"===o||"Z"===o)"Z"===o&&(r=l,a=h,s.closed=!0),("L"===o||.5<Q(x-r)||.5<Q(P-a))&&(sf(x,P,r,a),"L"===o&&(e+=2)),x=r,P=a;else if("A"===o){if(p=m[e+4],d=m[e+5],u=m[e+6],g=m[e+7],n=7,1<p.length&&(p.length<3?(g=u,u=d,n--):(g=d,u=p.substr(2),n-=2),d=p.charAt(1),p=p.charAt(0)),f=arcToSegment(x,P,+m[e+1],+m[e+2],+m[e+3],+p,+d,(i?x:0)+1*u,(i?P:0)+1*g),e+=n,f)for(n=0;n<f.length;n++)s.push(f[n]);x=s[s.length-2],P=s[s.length-1]}else console.log(b);return(e=s.length)<6?(v.pop(),e=0):s[0]===s[e-2]&&s[1]===s[e-1]&&(s.closed=!0),v.totalPoints=w+e,v}function flatPointsToSegment(t,e){void 0===e&&(e=1);for(var n=t[0],r=0,a=[n,r],o=2;o<t.length;o+=2)a.push(n,r,t[o],r=(t[o]-n)*e/2,n=t[o],-r);return a}function pointsToSegment(t,e,n){Q(t[0]-t[2])<1e-4&&Q(t[1]-t[3])<1e-4&&(t=t.slice(2));var r,a,o,i,s,l,h,u,g,f,c,p,d,m,v=t.length-2,x=+t[0],P=+t[1],y=+t[2],w=+t[3],b=[x,P,x,P],M=y-x,L=w-P,R=Math.abs(t[v]-x)<.001&&Math.abs(t[v+1]-P)<.001;for(isNaN(n)&&(n=Math.PI/10),R&&(t.push(y,w),y=x,w=P,x=t[v-2],P=t[v-1],t.unshift(x,P),v+=4),e=e||0===e?+e:1,s=2;s<v;s+=2)r=x,a=P,x=y,P=w,y=+t[s+2],w=+t[s+3],x===y&&P===w||(p=(l=M)*l+(u=L)*u,d=(M=y-x)*M+(L=w-P)*L,m=(h=y-r)*h+(g=w-a)*g,c=(o=Math.acos((p+d-m)/W(4*p*d)))/Math.PI*e,f=W(p)*c,c*=W(d),x===r&&P===a||(n<o?(i=S(g,h),b.push(C(x-H(i)*f),C(P-U(i)*f),C(x),C(P),C(x+H(i)*c),C(P+U(i)*c))):(i=S(u,l),b.push(C(x-H(i)*f),C(P-U(i)*f)),i=S(L,M),b.push(C(x),C(P),C(x+H(i)*c),C(P+U(i)*c)))));return x!==y||P!==w||b.length<4?b.push(C(y),C(w),C(y),C(w)):b.length-=2,R&&(b.splice(0,6),b.length=b.length-6),b}function rawPathToString(t){l(t[0])&&(t=[t]);var e,n,r,a,o="",i=t.length;for(n=0;n<i;n++){for(a=t[n],o+="M"+C(a[0])+","+C(a[1])+" C",e=a.length,r=2;r<e;r++)o+=C(a[r++])+","+C(a[r++])+" "+C(a[r++])+","+C(a[r++])+" "+C(a[r++])+","+C(a[r])+" ";a.closed&&(o+="z")}return o}function P(t){var e=t.ownerDocument||t;!(E in t.style)&&"msTransform"in t.style&&(G=(E="msTransform")+"Origin");for(;e.parentNode&&(e=e.parentNode););if(m=window,R=new z,e){v=(c=e).documentElement,w=e.body;var n=e.createElement("div"),r=e.createElement("div");w.appendChild(n),n.appendChild(r),n.style.position="static",n.style[E]="translate3d(0,
212980,1px)",I=r.offsetParent!==n,w.removeChild(n)}return e}function V(t){return t.ownerSVGElement||("svg"===(t.tagName+"").toLowerCase()?t:null)}function X(t,e){if(t.parentNode&&(c||P(t))){var n=V(t),r=n?n.getAttribute("xmlns")||"http://www.w3.org/2000/svg":"http://www.w3.org/1999/xhtml",a=n?e?"rect":"g":"div",o=2!==e?0:100,i=3===e?100:0,s="position:absolute;display:block;pointer-events:none;margin:0;padding:0;",l=c.createElementNS?c.createElementNS(r.replace(/^https/,"http"),a):c.createElement(a);return e&&(n?(b=b||X(t),l.setAttribute("width",.01),l.setAttribute("height",.01),l.setAttribute("transform","translate("+o+","+i+")"),b.appendChild(l)):(f||((f=X(t)).style.cssText=s),l.style.cssText=s+"width:0.1px;height:0.1px;top:"+i+"px;left:"+o+"px",f.appendChild(l))),l}throw"Need document and parent."}function Z(t,e){var n,r,a,o,i,s,l=V(t),h=t===l,u=l?D:k,g=t.parentNode;if(t===m)return t;if(u.length||u.push(X(t,1),X(t,2),X(t,3)),n=l?b:f,l)a=h?{x:0,y:0}:t.getBBox(),i=(r=t.transform?t.transform.baseVal:{}).numberOfItems?(o=(r=1<r.numberOfItems?function _consolidate(t){for(var e=new z,n=0;n<t.numberOfItems;n++)e.multiply(t.getItem(n).matrix);return e}(r):r.getItem(0).matrix).a*a.x+r.c*a.y,r.b*a.x+r.d*a.y):(r=R,o=a.x,a.y),e&&"g"===t.tagName.toLowerCase()&&(o=i=0),(h?l:g).appendChild(n),n.setAttribute("transform","matrix("+r.a+","+r.b+","+r.c+","+r.d+","+(r.e+o)+","+(r.f+i)+")");else{if(o=i=0,I)for(r=t.offsetParent,a=t;(a=a&&a.parentNode)&&a!==r&&a.parentNode;)4<(m.getComputedStyle(a)[E]+"").length&&(o=a.offsetLeft,i=a.offsetTop,a=0);if("absolute"!==(s=m.getComputedStyle(t)).position)for(r=t.offsetParent;g&&g!==r;)o+=g.scrollLeft||0,i+=g.scrollTop||0,g=g.parentNode;(a=n.style).top=t.offsetTop-i+"px",a.left=t.offsetLeft-o+"px",a[E]=s[E],a[G]=s[G],a.position="fixed"===s.position?"fixed":"absolute",t.parentNode.appendChild(n)}return n}function $(t,e,n,r,a,o,i){return t.a=e,t.b=n,t.c=r,t.d=a,t.e=o,t.f=i,t}var c,m,v,w,f,b,R,I,n,E="transform",G=E+"Origin",D=[],k=[],z=((n=Matrix2D.prototype).inverse=function inverse(){var t=this.a,e=this.b,n=this.c,r=this.d,a=this.e,o=this.f,i=t*r-e*n||1e-10;return $(this,r/i,-e/i,-n/i,t/i,(n*o-r*a)/i,-(t*o-e*a)/i)},n.multiply=function multiply(t){var e=this.a,n=this.b,r=this.c,a=this.d,o=this.e,i=this.f,s=t.a,l=t.c,h=t.b,u=t.d,g=t.e,f=t.f;return $(this,s*e+h*r,s*n+h*a,l*e+u*r,l*n+u*a,o+g*e+f*r,i+g*n+f*a)},n.clone=function clone(){return new Matrix2D(this.a,this.b,this.c,this.d,this.e,this.f)},n.equals=function equals(t){var e=this.a,n=this.b,r=this.c,a=this.d,o=this.e,i=this.f;return e===t.a&&n===t.b&&r===t.c&&a===t.d&&o===t.e&&i===t.f},n.apply=function apply(t,e){void 0===e&&(e={});var n=t.x,r=t.y,a=this.a,o=this.b,i=this.c,s=this.d,l=this.e,h=this.f;return e.x=n*a+r*i+l||0,e.y=n*o+r*s+h||0,e},Matrix2D);function Matrix2D(t,e,n,r,a,o){void 0===t&&(t=1),void 0===e&&(e=0),void 0===n&&(n=0),void 0===r&&(r=1),void 0===a&&(a=0),void 0===o&&(o=0),$(this,t,e,n,r,a,o)}function getGlobalMatrix(t,e,n,r){if(!t||!t.parentNode||(c||P(t)).documentElement===t)return new z;var a=function _forceNonZeroScale(t){for(var e,n;t&&t!==w;)(n=t._gsap)&&n.uncache&&n.get(t,"x"),n&&!n.scaleX&&!n.scaleY&&n.renderTransform&&(n.scaleX=n.scaleY=1e-4,n.renderTransform(1,n),e?e.push(n):e=[n]),t=t.parentNode;return e}(t),o=V(t)?D:k,i=Z(t,n),s=o[0].getBoundingClientRect(),l=o[1].getBoundingClientRect(),h=o[2].getBoundingClientRect(),u=i.parentNode,g=!r&&function _isFixed(t){return"fixed"===m.getComputedStyle(t).position||((t=t.parentNode)&&1===t.nodeType?_isFixed(t):void 0)}(t),f=new z((l.left-s.left)/100,(l.top-s.top)/100,(h.left-s.left)/100,(h.top-s.top)/100,s.left+(g?0:function _getDocScrollLeft(){return m.pageXOffset||c.scrollLeft||v.scrollLeft||w.scrollLeft||0}()),s.top+(g?0:function _getDocScrollTop(){return m.pageYOffset||c.scrollTop||v.scrollTop||w.scrollTop||0}()));if(u.removeChild(i),a)for(s=a.length;s--;)(l=a[s]).scaleX=l.scaleY=0,l.renderTransform(1,l);return e?f.inverse():f}function ia(t,e,n,r){for(var a=e.length,o=2===r?0:r,i=0;i<a;i++)t[o]=parseFloat(e[i][n]),2===r&&(t[o+1]=0),o+=2;return t}function ja(t,e,n){return parseFloat(t._gsap.get(t,e,n||"px"))||0}function ka(t){var e,n=t[0],r=t[1];for(e=2;e<t.length;e+=2)n=t[e]+=n,r=t[e+1]+=r}
vendor: 4,717 bytes, line 21298
21298function la(t,e,n,r,a,o,i,s,l){return e="cubic"===i.type?[e]:(!1!==i.fromCurrent&&e.unshift(ja(n,r,s),a?ja(n,a,l):0),i.relative&&ka(e),[(a?pointsToSegment:flatPointsToSegment)(e,i.curviness)]),e=o(nt(e,n,i)),rt(t,n,r,e,"x",s),a&&rt(t,n,a,e,"y",l),cacheRawPathMeasurements(e,i.resolution||(0===i.curviness?20:12))}function ma(t){return t}function oa(t,e,n){var r,a,o,i=getGlobalMatrix(t);return"svg"===(t.tagName+"").toLowerCase()?(a=(r=t.viewBox.baseVal).x,o=r.y,r.width||(r={width:+t.getAttribute("width"),height:+t.getAttribute("height")})):(r=e&&t.getBBox&&t.getBBox(),a=o=0),e&&"auto"!==e&&(a+=e.push?e[0]*(r?r.width:t.offsetWidth||0):e.x,o+=e.push?e[1]*(r?r.height:t.offsetHeight||0):e.y),n.apply(a||o?i.apply({x:a,y:o}):{x:i.e,y:i.f})}function pa(t,e,n,r){var a,o=getGlobalMatrix(t.parentNode,!0,!0),i=o.clone().multiply(getGlobalMatrix(e)),s=oa(t,n,o),l=oa(e,r,o),h=l.x,u=l.y;return i.e=i.f=0,"auto"===r&&e.getTotalLength&&"path"===e.tagName.toLowerCase()&&(a=e.getAttribute("d").match(et)||[],h+=(a=i.apply({x:+a[0],y:+a[1]})).x,u+=a.y),(a||e.getBBox&&t.getBBox&&e.ownerSVGElement===t.ownerSVGElement)&&(h-=(a=i.apply(e.getBBox())).x,u-=a.y),i.e=h-s.x,i.f=u-s.y,i}var Y,g,q,J,K="x,translateX,left,marginLeft,xPercent".split(","),tt="y,translateY,top,marginTop,yPercent".split(","),o=Math.PI/180,et=/[-+\.]*\d+[\.e\-\+]*\d*[e\-\+]*\d*/g,nt=function _align(t,e,n){var r,a,o,i=n.align,s=n.matrix,l=n.offsetX,h=n.offsetY,u=n.alignOrigin,g=t[0][0],f=t[0][1],c=ja(e,"x"),p=ja(e,"y");return t&&t.length?(i&&("self"===i||(r=J(i)[0]||e)===e?transformRawPath(t,1,0,0,1,c-g,p-f):(u&&!1!==u[2]?Y.set(e,{transformOrigin:100*u[0]+"% "+100*u[1]+"%"}):u=[ja(e,"xPercent")/-100,ja(e,"yPercent")/-100],o=(a=pa(e,r,u,"auto")).apply({x:g,y:f}),transformRawPath(t,a.a,a.b,a.c,a.d,c+a.e-(o.x-a.e),p+a.f-(o.y-a.f)))),s?transformRawPath(t,s.a,s.b,s.c,s.d,s.e,s.f):(l||h)&&transformRawPath(t,1,0,0,1,l||0,h||0),t):getRawPath("M0,0L0,0")},rt=function _addDimensionalPropTween(t,e,n,r,a,o){var i=e._gsap,s=i.harness,l=s&&s.aliases&&s.aliases[n],h=l&&l.indexOf(",")<0?l:n,u=t._pt=new g(t._pt,e,h,0,0,ma,0,i.set(e,h,t));u.u=q(i.get(e,h,o))||0,u.path=r,u.pp=a,t._props.push(h)},a={version:"3.7.0",name:"motionPath",register:function register(t,e,n){q=(Y=t).utils.getUnit,J=Y.utils.toArray,g=n},init:function init(t,e){if(!Y)return console.warn("Please gsap.registerPlugin(MotionPathPlugin)"),!1;"object"==typeof e&&!e.style&&e.path||(e={path:e});var n,r,a=[],o=e.path,i=e.autoRotate,s=e.unitX,l=e.unitY,h=e.x,u=e.y,g=o[0],f=function _sliceModifier(e,n){return function(t){return e||1!==n?sliceRawPath(t,e,n):t}}(e.start,"end"in e?e.end:1);if(this.rawPaths=a,this.target=t,(this.rotate=i||0===i)&&(this.rOffset=parseFloat(i)||0,this.radians=!!e.useRadians,this.rProp=e.rotation||"rotation",this.rSet=t._gsap.set(t,this.rProp,this),this.ru=q(t._gsap.get(t,this.rProp))||0),!Array.isArray(o)||"closed"in o||"number"==typeof g)cacheRawPathMeasurements(n=f(nt(getRawPath(e.path),t,e)),e.resolution),a.push(n),rt(this,t,e.x||"x",n,"x",e.unitX||"px"),rt(this,t,e.y||"y",n,"y",e.unitY||"px");else{for(r in g)!h&&~K.indexOf(r)?h=r:!u&&~tt.indexOf(r)&&(u=r);for(r in h&&u?a.push(la(this,ia(ia([],o,h,0),o,u,1),t,h,u,f,e,s||q(o[0][h]),l||q(o[0][u]))):h=u=0,g)r!==h&&r!==u&&a.push(la(this,ia([],o,r,2),t,r,0,f,e,q(o[0][r])))}},render:function render(t,e){var n=e.rawPaths,r=n.length,a=e._pt;for(1<t?t=1:t<0&&(t=0);r--;)getPositionOnPath(n[r],t,!r&&e.rotate,n[r]);for(;a;)a.set(a.t,a.p,a.path[a.pp]+a.u,a.d,t),a=a._next;e.rotate&&e.rSet(e.target,e.rProp,n[0].angle*(e.radians?o:1)+e.rOffset+e.ru,e,t)},getLength:function getLength(t){return cacheRawPathMeasurements(getRawPath(t)).totalLength},sliceRawPath:sliceRawPath,getRawPath:getRawPath,pointsToSegment:pointsToSegment,stringToRawPath:stringToRawPath,rawPathToString:rawPathToString,transformRawPath:transformRawPath,getGlobalMatrix:getGlobalMatrix,getPositionOnPath:getPositionOnPath,cacheRawPathMeasurements:cacheRawPathMeasurements,convertToPath:function convertToPath$1(t,e){return J(t).map(function(t){return convertToPath(t,!1!==e)})},convertCoordinates:function convertCoordinates(t,e,n){var r=getGlobalMatrix(e,!0,!0).multiply(getGlobalMatrix(t));return n?r.apply(n):r},getAlignMatrix:pa,getRelativePosition:function getRelativePosition(t,e,n,r){var a=pa(t,e,n,r);return{x:a.e,y:a.f}},arrayToRawPath:function arrayToRawPath(t,e){var n=ia(ia([],t,(e=e||{}).x||"x",0),t,e.y||"y",1);return e.relative&&ka(n),["cubic"===e.type?n:pointsToSegment(n,e.curviness)]}};!function _getGSAP(){return Y||"undefined"!=typeof window&&(Y=window.gsap)&&Y.registerPlugin&&Y}()||Y.registerPlugin(a),t.MotionPathPlugin=a,t.default=a;if (typeof(window)==="undefined"||window!==t){Object.defineProperty(t,"__esMo
vendor: 14,497 bytes, lines 21298-21752
21298dule",{value:!0})} else {delete t.default}}); 21299 21300 21301/*SIGUIENTE LIBRERIA*/ 21302(function (global, factory) { 21303 typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) : 21304 typeof define === 'function' && define.amd ? define(['exports'], factory) : 21305 (global = global || self, factory(global.window = global.window || {})); 21306}(this, (function (exports) { 'use strict'; 21307 21308 /*! 21309 * PixiPlugin 3.7.0 21310 * https://greensock.com 21311 * 21312 * @license Copyright 2008-2021, GreenSock. All rights reserved. 21313 * Subject to the terms at https://greensock.com/standard-license or for 21314 * Club GreenSock members, the agreement issued with that membership. 21315 * @author: Jack Doyle, [email protected] 21316 */ 21317 var gsap, 21318 _win, 21319 _splitColor, 21320 _coreInitted, 21321 _PIXI, 21322 PropTween, 21323 _getSetter, 21324 _windowExists = function _windowExists() { 21325 return typeof window !== "undefined"; 21326 }, 21327 _getGSAP = function _getGSAP() { 21328 return gsap || _windowExists() && (gsap = window.gsap) && gsap.registerPlugin && gsap; 21329 }, 21330 _isFunction = function _isFunction(value) { 21331 return typeof value === "function"; 21332 }, 21333 _warn = function _warn(message) { 21334 return console.warn(message); 21335 }, 21336 _idMatrix = [1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0], 21337 _lumR = 0.212671, 21338 _lumG = 0.715160, 21339 _lumB = 0.072169, 21340 _applyMatrix = function _applyMatrix(m, m2) { 21341 var temp = [], 21342 i = 0, 21343 z = 0, 21344 y, 21345 x; 21346 21347 for (y = 0; y < 4; y++) { 21348 for (x = 0; x < 5; x++) { 21349 z = x === 4 ? m[i + 4] : 0; 21350 temp[i + x] = m[i] * m2[x] + m[i + 1] * m2[x + 5] + m[i + 2] * m2[x + 10] + m[i + 3] * m2[x + 15] + z; 21351 } 21352 21353 i += 5; 21354 } 21355 21356 return temp; 21357 }, 21358 _setSaturation = function _setSaturation(m, n) { 21359 var inv = 1 - n, 21360 r = inv * _lumR, 21361 g = inv * _lumG, 21362 b = inv * _lumB; 21363 return _applyMatrix([r + n, g, b, 0, 0, r, g + n, b, 0, 0, r, g, b + n, 0, 0, 0, 0, 0, 1, 0], m); 21364 }, 21365 _colorize = function _colorize(m, color, amount) { 21366 var c = _splitColor(color), 21367 r = c[0] / 255, 21368 g = c[1] / 255, 21369 b = c[2] / 255, 21370 inv = 1 - amount; 21371 21372 return _applyMatrix([inv + amount * r * _lumR, amount * r * _lumG, amount * r * _lumB, 0, 0, amount * g * _lumR, inv + amount * g * _lumG, amount * g * _lumB, 0, 0, amount * b * _lumR, amount * b * _lumG, inv + amount * b * _lumB, 0, 0, 0, 0, 0, 1, 0], m); 21373 }, 21374 _setHue = function _setHue(m, n) { 21375 n *= Math.PI / 180; 21376 var c = Math.cos(n), 21377 s = Math.sin(n); 21378 return _applyMatrix([_lumR + c * (1 - _lumR) + s * -_lumR, _lumG + c * -_lumG + s * -_lumG, _lumB + c * -_lumB + s * (1 - _lumB), 0, 0, _lumR + c * -_lumR + s * 0.143, _lumG + c * (1 - _lumG) + s * 0.14, _lumB + c * -_lumB + s * -0.283, 0, 0, _lumR + c * -_lumR + s * -(1 - _lumR), _lumG + c * -_lumG + s * _lumG, _lumB + c * (1 - _lumB) + s * _lumB, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1], m); 21379 }, 21380 _setContrast = function _setContrast(m, n) { 21381 return _applyMatrix([n, 0, 0, 0, 0.5 * (1 - n), 0, n, 0, 0, 0.5 * (1 - n), 0, 0, n, 0, 0.5 * (1 - n), 0, 0, 0, 1, 0], m); 21382 }, 21383 _getFilter = function _getFilter(target, type) { 21384 var filterClass = _PIXI.filters[type], 21385 filters = target.filters || [], 21386 i = filters.length, 21387 filter; 21388 21389 if (!filterClass) { 21390 _warn(type + " not found. PixiPlugin.registerPIXI(PIXI)"); 21391 } 21392 21393 while (--i > -1) { 21394 if (filters[i] instanceof filterClass) { 21395 return filters[i]; 21396 } 21397 } 21398 21399 filter = new filterClass(); 21400 21401 if (type === "BlurFilter") { 21402 filter.blur = 0; 21403 } 21404 21405 filters.push(filter); 21406 target.filters = filters; 21407 return filter; 21408 }, 21409 _addColorMatrixFilterCacheTween = function _addColorMatrixFilterCacheTween(p, plugin, cache, vars) { 21410 plugin.add(cache, p, cache[p], vars[p]); 21411 21412 plugin._props.push(p); 21413 }, 21414 _applyBrightnessToMatrix = function _applyBrightnessToMatrix(brightness, matrix) { 21415 var temp = new _PIXI.filters.ColorMatrixFilter(); 21416 temp.matrix = matrix; 21417 temp.brightness(brightness, true); 21418 return temp.matrix; 21419 }, 21420 _copy = function _copy(obj) { 21421 var copy = {}, 21422 p; 21423 21424 for (p in obj) { 21425 copy[p] = obj[p]; 21426 } 21427 21428 return copy; 21429 }, 21430 _CMFdefaults = { 21431 contrast: 1, 21432 saturation: 1, 21433 colorizeAmount: 0, 21434 colorize: "rgb(255,255,255)", 21435 hue: 0, 21436 brightness: 1 21437 }, 21438 _parseColorMatrixFilter = function _parseColorMatrixFilter(target, v, pg) { 21439 var filter = _getFilter(target, "ColorMatrixFilter"), 21440 cache = target._gsColorMatrixFilter = target._gsColorMatrixFilter || _copy(_CMFdefaults), 21441 combine = v.combineCMF && !("colorMatrixFilter" in v && !v.colorMatrixFilter), 21442 i, 21443 matrix, 21444 startMatrix; 21445 21446 startMatrix = filter.matrix; 21447 21448 if (v.resolution) { 21449 filter.resolution = v.resolution; 21450 } 21451 21452 if (v.matrix && v.matrix.length === startMatrix.length) { 21453 matrix = v.matrix; 21454 21455 if (cache.contrast !== 1) { 21456 _addColorMatrixFilterCacheTween("contrast", pg, cache, _CMFdefaults); 21457 } 21458 21459 if (cache.hue) { 21460 _addColorMatrixFilterCacheTween("hue", pg, cache, _CMFdefaults); 21461 } 21462 21463 if (cache.brightness !== 1) { 21464 _addColorMatrixFilterCacheTween("brightness", pg, cache, _CMFdefaults); 21465 } 21466 21467 if (cache.colorizeAmount) { 21468 _addColorMatrixFilterCacheTween("colorize", pg, cache, _CMFdefaults); 21469 21470 _addColorMatrixFilterCacheTween("colorizeAmount", pg, cache, _CMFdefaults); 21471 } 21472 21473 if (cache.saturation !== 1) { 21474 _addColorMatrixFilterCacheTween("saturation", pg, cache, _CMFdefaults); 21475 } 21476 } else { 21477 matrix = _idMatrix.slice(); 21478 21479 if (v.contrast != null) { 21480 matrix = _setContrast(matrix, +v.contrast); 21481 21482 _addColorMatrixFilterCacheTween("contrast", pg, cache, v); 21483 } else if (cache.contrast !== 1) { 21484 if (combine) { 21485 matrix = _setContrast(matrix, cache.contrast); 21486 } else { 21487 _addColorMatrixFilterCacheTween("contrast", pg, cache, _CMFdefaults); 21488 } 21489 } 21490 21491 if (v.hue != null) { 21492 matrix = _setHue(matrix, +v.hue); 21493 21494 _addColorMatrixFilterCacheTween("hue", pg, cache, v); 21495 } else if (cache.hue) { 21496 if (combine) { 21497 matrix = _setHue(matrix, cache.hue); 21498 } else { 21499 _addColorMatrixFilterCacheTween("hue", pg, cache, _CMFdefaults); 21500 } 21501 } 21502 21503 if (v.brightness != null) { 21504 matrix = _applyBrightnessToMatrix(+v.brightness, matrix); 21505 21506 _addColorMatrixFilterCacheTween("brightness", pg, cache, v); 21507 } else if (cache.brightness !== 1) { 21508 if (combine) { 21509 matrix = _applyBrightnessToMatrix(cache.brightness, matrix); 21510 } else { 21511 _addColorMatrixFilterCacheTween("brightness", pg, cache, _CMFdefaults); 21512 } 21513 } 21514 21515 if (v.colorize != null) { 21516 v.colorizeAmount = "colorizeAmount" in v ? +v.colorizeAmount : 1; 21517 matrix = _colorize(matrix, v.colorize, v.colorizeAmount); 21518 21519 _addColorMatrixFilterCacheTween("colorize", pg, cache, v); 21520 21521 _addColorMatrixFilterCacheTween("colorizeAmount", pg, cache, v); 21522 } else if (cache.colorizeAmount) { 21523 if (combine) { 21524 matrix = _colorize(matrix, cache.colorize, cache.colorizeAmount); 21525 } else { 21526 _addColorMatrixFilterCacheTween("colorize", pg, cache, _CMFdefaults); 21527 21528 _addColorMatrixFilterCacheTween("colorizeAmount", pg, cache, _CMFdefaults); 21529 } 21530 } 21531 21532 if (v.saturation != null) { 21533 matrix = _setSaturation(matrix, +v.saturation); 21534 21535 _addColorMatrixFilterCacheTween("saturation", pg, cache, v); 21536 } else if (cache.saturation !== 1) { 21537 if (combine) { 21538 matrix = _setSaturation(matrix, cache.saturation); 21539 } else { 21540 _addColorMatrixFilterCacheTween("saturation", pg, cache, _CMFdefaults); 21541 } 21542 } 21543 } 21544 21545 i = matrix.length; 21546 21547 while (--i > -1) { 21548 if (matrix[i] !== startMatrix[i]) { 21549 pg.add(startMatrix, i, startMatrix[i], matrix[i], "colorMatrixFilter"); 21550 } 21551 } 21552 21553 pg._props.push("colorMatrixFilter"); 21554 }, 21555 _renderColor = function _renderColor(ratio, _ref) { 21556 var t = _ref.t, 21557 p = _ref.p, 21558 color = _ref.color, 21559 set = _ref.set; 21560 set(t, p, color[0] << 16 | color[1] << 8 | color[2]); 21561 }, 21562 _renderDirtyCache = function _renderDirtyCache(ratio, _ref2) { 21563 var g = _ref2.g; 21564 21565 if (g) { 21566 g.dirty++; 21567 g.clearDirty++; 21568 } 21569 }, 21570 _renderAutoAlpha = function _renderAutoAlpha(ratio, data) { 21571 data.t.visible = !!data.t.alpha; 21572 }, 21573 _addColorTween = function _addColorTween(target, p, value, plugin) { 21574 var currentValue = target[p], 21575 startColor = _splitColor(_isFunction(currentValue) ? target[p.indexOf("set") || !_isFunction(target["get" + p.substr(3)]) ? p : "get" + p.substr(3)]() : currentValue), 21576 endColor = _splitColor(value); 21577 21578 plugin._pt = new PropTween(plugin._pt, target, p, 0, 0, _renderColor, { 21579 t: target, 21580 p: p, 21581 color: startColor, 21582 set: _getSetter(target, p) 21583 }); 21584 plugin.add(startColor, 0, startColor[0], endColor[0]); 21585 plugin.add(startColor, 1, startColor[1], endColor[1]); 21586 plugin.add(startColor, 2, startColor[2], endColor[2]); 21587 }, 21588 _colorProps = { 21589 tint: 1, 21590 lineColor: 1, 21591 fillColor: 1 21592 }, 21593 _xyContexts = "position,scale,skew,pivot,anchor,tilePosition,tileScale".split(","), 21594 _contexts = { 21595 x: "position", 21596 y: "position", 21597 tileX: "tilePosition", 21598 tileY: "tilePosition" 21599 }, 21600 _colorMatrixFilterProps = { 21601 colorMatrixFilter: 1, 21602 saturation: 1, 21603 contrast: 1, 21604 hue: 1, 21605 colorize: 1, 21606 colorizeAmount: 1, 21607 brightness: 1, 21608 combineCMF: 1 21609 }, 21610 _DEG2RAD = Math.PI / 180, 21611 _isString = function _isString(value) { 21612 return typeof value === "string"; 21613 }, 21614 _degreesToRadians = function _degreesToRadians(value) { 21615 return _isString(value) && value.charAt(1) === "=" ? value.substr(0, 2) + parseFloat(value.substr(2)) * _DEG2RAD : value * _DEG2RAD; 21616 }, 21617 _renderPropWithEnd = function _renderPropWithEnd(ratio, data) { 21618 return data.set(data.t, data.p, ratio === 1 ? data.e : Math.round((data.s + data.c * ratio) * 100000) / 100000, data); 21619 }, 21620 _addRotationalPropTween = function _addRotationalPropTween(plugin, target, property, startNum, endValue, radians) { 21621 var cap = 360 * (radians ? _DEG2RAD : 1), 21622 isString = _isString(endValue), 21623 relative = isString && endValue.charAt(1) === "=" ? +(endValue.charAt(0) + "1") : 0, 21624 endNum = parseFloat(relative ? endValue.substr(2) : endValue) * (radians ? _DEG2RAD : 1), 21625 change = relative ? endNum * relative : endNum - startNum, 21626 finalValue = startNum + change, 21627 direction, 21628 pt; 21629 21630 if (isString) { 21631 direction = endValue.split("_")[1]; 21632 21633 if (direction === "short") { 21634 change %= cap; 21635 21636 if (change !== change % (cap / 2)) { 21637 change += change < 0 ? cap : -cap; 21638 } 21639 } 21640 21641 if (direction === "cw" && change < 0) { 21642 change = (change + cap * 1e10) % cap - ~~(change / cap) * cap; 21643 } else if (direction === "ccw" && change > 0) { 21644 change = (change - cap * 1e10) % cap - ~~(change / cap) * cap; 21645 } 21646 } 21647 21648 plugin._pt = pt = new PropTween(plugin._pt, target, property, startNum, change, _renderPropWithEnd); 21649 pt.e = finalValue; 21650 return pt; 21651 }, 21652 _initCore = function _initCore() { 21653 if (_windowExists()) { 21654 _win = window; 21655 gsap = _coreInitted = _getGSAP(); 21656 _PIXI = _PIXI || _win.PIXI; 21657 21658 _splitColor = function _splitColor(color) { 21659 return gsap.utils.splitColor((color + "").substr(0, 2) === "0x" ? "#" + color.substr(2) : color); 21660 }; 21661 } 21662 }, 21663 i, 21664 p; 21665 21666 for (i = 0; i < _xyContexts.length; i++) { 21667 p = _xyContexts[i]; 21668 _contexts[p + "X"] = p; 21669 _contexts[p + "Y"] = p; 21670 } 21671 21672 var PixiPlugin = { 21673 version: "3.7.0", 21674 name: "pixi", 21675 register: function register(core, Plugin, propTween) { 21676 gsap = core; 21677 PropTween = propTween; 21678 _getSetter = Plugin.getSetter; 21679 21680 _initCore(); 21681 }, 21682 registerPIXI: function registerPIXI(pixi) { 21683 _PIXI = pixi; 21684 }, 21685 init: function init(target, values, tween, index, targets) { 21686 if (!_PIXI) { 21687 _initCore(); 21688 } 21689 21690 if (!target instanceof _PIXI.DisplayObject) { 21691 return false; 21692 } 21693 21694 var isV4 = _PIXI.VERSION.charAt(0) === "4", 21695 context, 21696 axis, 21697 value, 21698 colorMatrix, 21699 filter, 21700 p, 21701 padding, 21702 i, 21703 data; 21704 21705 for (p in values) { 21706 context = _contexts[p]; 21707 value = values[p]; 21708 21709 if (context) { 21710 axis = ~p.charAt(p.length - 1).toLowerCase().indexOf("x") ? "x" : "y"; 21711 this.add(target[context], axis, target[context][axis], context === "skew" ? _degreesToRadians(value) : value); 21712 } else if (p === "scale" || p === "anchor" || p === "pivot" || p === "tileScale") { 21713 this.add(target[p], "x", target[p].x, value); 21714 this.add(target[p], "y", target[p].y, value); 21715 } else if (p === "rotation" || p === "angle") { 21716 _addRotationalPropTween(this, target, p, target[p], value, p === "rotation"); 21717 } else if (_colorMatrixFilterProps[p]) { 21718 if (!colorMatrix) { 21719 _parseColorMatrixFilter(target, values.colorMatrixFilter || values, this); 21720 21721 colorMatrix = true; 21722 } 21723 } else if (p === "blur" || p === "blurX" || p === "blurY" || p === "blurPadding") { 21724 filter = _getFilter(target, "BlurFilter"); 21725 this.add(filter, p, filter[p], value); 21726 21727 if (values.blurPadding !== 0) { 21728 padding = values.blurPadding || Math.max(filter[p], value) * 2; 21729 i = target.filters.length; 21730 21731 while (--i > -1) { 21732 target.filters[i].padding = Math.max(target.filters[i].padding, padding); 21733 } 21734 } 21735 } else if (_colorProps[p]) { 21736 if ((p === "lineColor" || p === "fillColor") && target instanceof _PIXI.Graphics) { 21737 data = (target.geometry || target).graphicsData; 21738 this._pt = new PropTween(this._pt, target, p, 0, 0, _renderDirtyCache, { 21739 g: target.geometry || target 21740 }); 21741 i = data.length; 21742 21743 while (--i > -1) { 21744 _addColorTween(isV4 ? data[i] : data[i][p.substr(0, 4) + "Style"], isV4 ? p : "color", value, this); 21745 } 21746 } else { 21747 _addColorTween(target, p, value, this); 21748 } 21749 } else if (p === "autoAlpha") { 21750 this._pt = new PropTween(this._pt, target, "visible", 0, 0, _renderAutoAlpha); 21751 this.add(target, "alpha", target.alpha, value); 21752
vendor: 4,392 bytes, lines 21753-21781
21753 this._props.push("alpha", "visible"); 21754 } else if (p !== "resolution") { 21755 this.add(target, p, "get", value); 21756 } 21757 21758 this._props.push(p); 21759 } 21760 } 21761 }; 21762 _getGSAP() && gsap.registerPlugin(PixiPlugin); 21763 21764 exports.PixiPlugin = PixiPlugin; 21765 exports.default = PixiPlugin; 21766 21767 Object.defineProperty(exports, '__esModule', { value: true }); 21768 21769}))); 21770 21771/*SIGUIENTE LIBRERIA*/ 21772/*! 21773 * PixiPlugin 3.7.0 21774 * https://greensock.com 21775 * 21776 * @license Copyright 2021, GreenSock. All rights reserved. 21777 * Subject to the terms at https://greensock.com/standard-license or for Club GreenSock members, the agreement issued with that membership. 21778 * @author: Jack Doyle, [email protected] 21779 */ 21780 21781!function(t,r){"object"==typeof exports&&"undefined"!=typeof module?r(exports):"function"==typeof define&&define.amd?define(["exports"],r):r((t=t||self).window=t.window||{})}(this,function(r){"use strict";function k(){return"undefined"!=typeof window}function l(){return o||k()&&(o=window.gsap)&&o.registerPlugin&&o}function m(t){return"function"==typeof t}function s(t,r){var i,o,e=[],n=0,s=0;for(i=0;i<4;i++){for(o=0;o<5;o++)s=4===o?t[n+4]:0,e[n+o]=t[n]*r[o]+t[n+1]*r[o+5]+t[n+2]*r[o+10]+t[n+3]*r[o+15]+s;n+=5}return e}function t(t,r){var i=1-r,o=i*p,e=i*g,n=i*b;return s([o+r,e,n,0,0,o,e+r,n,0,0,o,e,n+r,0,0,0,0,0,1,0],t)}function u(t,r,i){var o=c(r),e=o[0]/255,n=o[1]/255,l=o[2]/255,a=1-i;return s([a+i*e*p,i*e*g,i*e*b,0,0,i*n*p,a+i*n*g,i*n*b,0,0,i*l*p,i*l*g,a+i*l*b,0,0,0,0,0,1,0],t)}function v(t,r){r*=Math.PI/180;var i=Math.cos(r),o=Math.sin(r);return s([p+i*(1-p)+o*-p,g+i*-g+o*-g,b+i*-b+o*(1-b),0,0,p+i*-p+.143*o,g+i*(1-g)+.14*o,b+i*-b+-.283*o,0,0,p+i*-p+o*-(1-p),g+i*-g+o*g,b+i*(1-b)+o*b,0,0,0,0,0,1,0,0,0,0,0,1],t)}function w(t,r){return s([r,0,0,0,.5*(1-r),0,r,0,0,.5*(1-r),0,0,r,0,.5*(1-r),0,0,0,1,0],t)}function x(t,r){var i,o=h.filters[r],e=t.filters||[],n=e.length;for(o||function _warn(t){console.warn(t)}(r+" not found. PixiPlugin.registerPIXI(PIXI)");-1<--n;)if(e[n]instanceof o)return e[n];return i=new o,"BlurFilter"===r&&(i.blur=0),e.push(i),t.filters=e,i}function y(t,r,i,o){r.add(i,t,i[t],o[t]),r._props.push(t)}function z(t,r){var i=new h.filters.ColorMatrixFilter;return i.matrix=r,i.brightness(t,!0),i.matrix}function C(r,i,o){var e,n,s,l=x(r,"ColorMatrixFilter"),a=r._gsColorMatrixFilter=r._gsColorMatrixFilter||function _copy(t){var r,i={};for(r in t)i[r]=t[r];return i}(_),c=i.combineCMF&&!("colorMatrixFilter"in i&&!i.colorMatrixFilter);s=l.matrix,i.resolution&&(l.resolution=i.resolution),i.matrix&&i.matrix.length===s.length?(n=i.matrix,1!==a.contrast&&y("contrast",o,a,_),a.hue&&y("hue",o,a,_),1!==a.brightness&&y("brightness",o,a,_),a.colorizeAmount&&(y("colorize",o,a,_),y("colorizeAmount",o,a,_)),1!==a.saturation&&y("saturation",o,a,_)):(n=f.slice(),null!=i.contrast?(n=w(n,+i.contrast),y("contrast",o,a,i)):1!==a.contrast&&(c?n=w(n,a.contrast):y("contrast",o,a,_)),null!=i.hue?(n=v(n,+i.hue),y("hue",o,a,i)):a.hue&&(c?n=v(n,a.hue):y("hue",o,a,_)),null!=i.brightness?(n=z(+i.brightness,n),y("brightness",o,a,i)):1!==a.brightness&&(c?n=z(a.brightness,n):y("brightness",o,a,_)),null!=i.colorize?(i.colorizeAmount="colorizeAmount"in i?+i.colorizeAmount:1,n=u(n,i.colorize,i.colorizeAmount),y("colorize",o,a,i),y("colorizeAmount",o,a,i)):a.colorizeAmount&&(c?n=u(n,a.colorize,a.colorizeAmount):(y("colorize",o,a,_),y("colorizeAmount",o,a,_))),null!=i.saturation?(n=t(n,+i.saturation),y("saturation",o,a,i)):1!==a.saturation&&(c?n=t(n,a.saturation):y("saturation",o,a,_))),e=n.length;for(;-1<--e;)n[e]!==s[e]&&o.add(s,e,s[e],n[e],"colorMatrixFilter");o._props.push("colorMatrixFilter")}function D(t,r){var i=r.t,o=r.p,e=r.color;(0,r.set)(i,o,e[0]<<16|e[1]<<8|e[2])}function E(t,r){var i=r.g;i&&(i.dirty++,i.clearDirty++)}function F(t,r){r.t.visible=!!r.t.alpha}function G(t,r,i,o){var e=t[r],n=c(m(e)?t[r.indexOf("set")||!m(t["get"+r.substr(3)])?r:"get"+r.substr(3)]():e),s=c(i);o._pt=new d(o._pt,t,r,0,0,D,{t:t,p:r,color:n,set:a(t,r)}),o.add(n,0,n[0],s[0]),o.add(n,1,n[1],s[1]),o.add(n,2,n[2],s[2])}function M(t){return"string"==typeof t}function N(t){return M(t)&&"="===t.charAt(1)?t.substr(0,2)+parseFloat(t.substr(2))*j:t*j}function O(t,r){return r.set(r.t,r.p,1===t?r.e:Math.round(1e5*(r.s+r.c*t))/1e5,r)}function P(t,r,i,o,e,n){var s,l,a=360*(n?j:1),u=M(e),c=u&&"="===e.charAt(1)?+(e.charAt(0)+"1"):0,f=parseFloat(c?e.substr(2):e)*(n?j:1),h=c?f*c:f-o,p=o+
21781h;return u&&("short"===(s=e.split("_")[1])&&(h%=a)!==h%(a/2)&&(h+=h<0?a:-a),"cw"===s&&h<0?h=(h+1e10*a)%a-~~(h/a)*a:"ccw"===s&&0<h&&(h=(h-1e10*a)%a-~~(h/a)*a)),t._pt=l=new d(t._pt,r,i,o,h,O),l.e=p,l}function Q(){k()&&(i=window,o=l(),h=h||i.PIXI,c=function _splitColor(t){return o.utils.splitColor("0x"===(t+"").substr(0,2)?"#"+t.substr(2):t)})}var o,i,c,h,d,a,e,n,f=[1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,1,0],p=.212671,g=.71516,b=.072169,_={contrast:1,saturation:1,colorizeAmount:0,colorize:"rgb(255,255,255)",hue:0,brightness:1},A={tint:1,lineColor:1,fillColor:1},I="position,scale,skew,pivot,anchor,tilePosition,tileScale".split(","),X={x:"position",y:"position",tileX:"tilePosition",tileY:"tilePosition"},S={colorMatrixFilter:1,saturation:1,contrast:1,hue:1,colorize:1,colorizeAmount:1,brightness:1,combineCMF:1},j=Math.PI/180;for(e=0;e<I.length;e++)n=I[e],X[n+"X"]=n,X[n+"Y"]=n;var Y={version:"3.7.0",name:"pixi",register:function register(t,r,i){o=t,d=i,a=r.getSetter,Q()},registerPIXI:function registerPIXI(t){h=t},init:function init(t,r){if(h||Q(),!t instanceof h.DisplayObject)return!1;var i,o,e,n,s,l,a,u,c,f="4"===h.VERSION.charAt(0);for(l in r){if(i=X[l],e=r[l],i)o=~l.charAt(l.length-1).toLowerCase().indexOf("x")?"x":"y",this.add(t[i],o,t[i][o],"skew"===i?N(e):e);else if("scale"===l||"anchor"===l||"pivot"===l||"tileScale"===l)this.add(t[l],"x",t[l].x,e),this.add(t[l],"y",t[l].y,e);else if("rotation"===l||"angle"===l)P(this,t,l,t[l],e,"rotation"===l);else if(S[l])n||(C(t,r.colorMatrixFilter||r,this),n=!0);else if("blur"===l||"blurX"===l||"blurY"===l||"blurPadding"===l){if(s=x(t,"BlurFilter"),this.add(s,l,s[l],e),0!==r.blurPadding)for(a=r.blurPadding||2*Math.max(s[l],e),u=t.filters.length;-1<--u;)t.filters[u].padding=Math.max(t.filters[u].padding,a)}else if(A[l])if(("lineColor"===l||"fillColor"===l)&&t instanceof h.Graphics)for(c=(t.geometry||t).graphicsData,this._pt=new d(this._pt,t,l,0,0,E,{g:t.geometry||t}),u=c.length;-1<--u;)G(f?c[u]:c[u][l.substr(0,4)+"Style"],f?l:"color",e,this);else G(t,l,e,this);else"autoAlpha"===l?(this._pt=new d(this._pt,t,"visible",0,0,F),this.add(t,"alpha",t.alpha,e),this._props.push("alph
vendor: 5,667 bytes, lines 21781-21952
21781a","visible")):"resolution"!==l&&this.add(t,l,"get",e);this._props.push(l)}}};l()&&o.registerPlugin(Y),r.PixiPlugin=Y,r.default=Y;if (typeof(window)==="undefined"||window!==r){Object.defineProperty(r,"__esModule",{value:!0})} else {delete r.default}}); 21782 21783 21784/*SIGUIENTE LIBRERIA*/ 21785(function (global, factory) { 21786 typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) : 21787 typeof define === 'function' && define.amd ? define(['exports'], factory) : 21788 (global = global || self, factory(global.window = global.window || {})); 21789}(this, (function (exports) { 'use strict'; 21790 21791 /*! 21792 * ScrollToPlugin 3.7.0 21793 * https://greensock.com 21794 * 21795 * @license Copyright 2008-2021, GreenSock. All rights reserved. 21796 * Subject to the terms at https://greensock.com/standard-license or for 21797 * Club GreenSock members, the agreement issued with that membership. 21798 * @author: Jack Doyle, [email protected] 21799 */ 21800 var gsap, 21801 _coreInitted, 21802 _window, 21803 _docEl, 21804 _body, 21805 _toArray, 21806 _config, 21807 _windowExists = function _windowExists() { 21808 return typeof window !== "undefined"; 21809 }, 21810 _getGSAP = function _getGSAP() { 21811 return gsap || _windowExists() && (gsap = window.gsap) && gsap.registerPlugin && gsap; 21812 }, 21813 _isString = function _isString(value) { 21814 return typeof value === "string"; 21815 }, 21816 _isFunction = function _isFunction(value) { 21817 return typeof value === "function"; 21818 }, 21819 _max = function _max(element, axis) { 21820 var dim = axis === "x" ? "Width" : "Height", 21821 scroll = "scroll" + dim, 21822 client = "client" + dim; 21823 return element === _window || element === _docEl || element === _body ? Math.max(_docEl[scroll], _body[scroll]) - (_window["inner" + dim] || _docEl[client] || _body[client]) : element[scroll] - element["offset" + dim]; 21824 }, 21825 _buildGetter = function _buildGetter(e, axis) { 21826 var p = "scroll" + (axis === "x" ? "Left" : "Top"); 21827 21828 if (e === _window) { 21829 if (e.pageXOffset != null) { 21830 p = "page" + axis.toUpperCase() + "Offset"; 21831 } else { 21832 e = _docEl[p] != null ? _docEl : _body; 21833 } 21834 } 21835 21836 return function () { 21837 return e[p]; 21838 }; 21839 }, 21840 _clean = function _clean(value, index, target, targets) { 21841 _isFunction(value) && (value = value(index, target, targets)); 21842 21843 if (typeof value !== "object") { 21844 return _isString(value) && value !== "max" && value.charAt(1) !== "=" ? { 21845 x: value, 21846 y: value 21847 } : { 21848 y: value 21849 }; 21850 } else if (value.nodeType) { 21851 return { 21852 y: value, 21853 x: value 21854 }; 21855 } else { 21856 var result = {}, 21857 p; 21858 21859 for (p in value) { 21860 result[p] = p !== "onAutoKill" && _isFunction(value[p]) ? value[p](index, target, targets) : value[p]; 21861 } 21862 21863 return result; 21864 } 21865 }, 21866 _getOffset = function _getOffset(element, container) { 21867 element = _toArray(element)[0]; 21868 21869 if (!element || !element.getBoundingClientRect) { 21870 return console.warn("scrollTo target doesn't exist. Using 0") || { 21871 x: 0, 21872 y: 0 21873 }; 21874 } 21875 21876 var rect = element.getBoundingClientRect(), 21877 isRoot = !container || container === _window || container === _body, 21878 cRect = isRoot ? { 21879 top: _docEl.clientTop - (_window.pageYOffset || _docEl.scrollTop || _body.scrollTop || 0), 21880 left: _docEl.clientLeft - (_window.pageXOffset || _docEl.scrollLeft || _body.scrollLeft || 0) 21881 } : container.getBoundingClientRect(), 21882 offsets = { 21883 x: rect.left - cRect.left, 21884 y: rect.top - cRect.top 21885 }; 21886 21887 if (!isRoot && container) { 21888 offsets.x += _buildGetter(container, "x")(); 21889 offsets.y += _buildGetter(container, "y")(); 21890 } 21891 21892 return offsets; 21893 }, 21894 _parseVal = function _parseVal(value, target, axis, currentVal, offset) { 21895 return !isNaN(value) && typeof value !== "object" ? parseFloat(value) - offset : _isString(value) && value.charAt(1) === "=" ? parseFloat(value.substr(2)) * (value.charAt(0) === "-" ? -1 : 1) + currentVal - offset : value === "max" ? _max(target, axis) - offset : Math.min(_max(target, axis), _getOffset(value, target)[axis] - offset); 21896 }, 21897 _initCore = function _initCore() { 21898 gsap = _getGSAP(); 21899 21900 if (_windowExists() && gsap && document.body) { 21901 _window = window; 21902 _body = document.body; 21903 _docEl = document.documentElement; 21904 _toArray = gsap.utils.toArray; 21905 gsap.config({ 21906 autoKillThreshold: 7 21907 }); 21908 _config = gsap.config(); 21909 _coreInitted = 1; 21910 } 21911 }; 21912 21913 var ScrollToPlugin = { 21914 version: "3.7.0", 21915 name: "scrollTo", 21916 rawVars: 1, 21917 register: function register(core) { 21918 gsap = core; 21919 21920 _initCore(); 21921 }, 21922 init: function init(target, value, tween, index, targets) { 21923 _coreInitted || _initCore(); 21924 var data = this, 21925 snapType = gsap.getProperty(target, "scrollSnapType"); 21926 data.isWin = target === _window; 21927 data.target = target; 21928 data.tween = tween; 21929 value = _clean(value, index, target, targets); 21930 data.vars = value; 21931 data.autoKill = !!value.autoKill; 21932 data.getX = _buildGetter(target, "x"); 21933 data.getY = _buildGetter(target, "y"); 21934 data.x = data.xPrev = data.getX(); 21935 data.y = data.yPrev = data.getY(); 21936 21937 if (snapType && snapType !== "none") { 21938 data.snap = 1; 21939 data.snapInline = target.style.scrollSnapType; 21940 target.style.scrollSnapType = "none"; 21941 } 21942 21943 if (value.x != null) { 21944 data.add(data, "x", data.x, _parseVal(value.x, target, "x", data.x, value.offsetX || 0), index, targets); 21945 21946 data._props.push("scrollTo_x"); 21947 } else { 21948 data.skipX = 1; 21949 } 21950 21951 if (value.y != null) { 21952 data.add(data, "y", data.y, _parseVal(value.y, target, "y", data.y, value.offsetY || 0
21952), index, targets); 21953 21954 data._props.push("scrollTo_y"); 21955 } else { 21956 data.skipY = 1; 21957 } 21958 }, 21959 render: function render(ratio, data) { 21960 var pt = data._pt, 21961 target = data.target, 21962 tween = data.tween, 21963 autoKill = data.autoKill, 21964 xPrev = data.xPrev, 21965 yPrev = data.yPrev, 21966 isWin = data.isWin, 21967 snap = data.snap, 21968 snapInline = data.snapInline, 21969 x, 21970 y, 21971 yDif, 21972 xDif, 21973 threshold; 21974 21975 while (pt) { 21976 pt.r(ratio, pt.d); 21977 pt = pt._next; 21978 } 21979 21980 x = isWin || !data.skipX ? data.getX() : xPrev; 21981 y = isWin || !data.skipY ? data.getY() : yPrev; 21982 yDif = y - yPrev; 21983 xDif = x - xPrev; 21984 threshold = _config.autoKillThreshold; 21985 21986 if (data.x < 0) { 21987 data.x = 0; 21988 } 21989 21990 if (data.y < 0) { 21991 data.y = 0; 21992 } 21993 21994 if (autoKill) { 21995 if (!data.skipX && (xDif > threshold || xDif < -threshold) && x < _max(target, "x")) { 21996 data.skipX = 1; 21997 } 21998 21999 if (!data.skipY && (yDif > threshold || yDif < -threshold) && y < _max(target, "y")) { 22000 data.skipY = 1; 22001 } 22002 22003 if (data.skipX && data.skipY) { 22004 tween.kill(); 22005 data.vars.onAutoKill && data.vars.onAutoKill.apply(tween, data.vars.onAutoKillParams || []); 22006 } 22007 } 22008 22009 if (isWin) { 22010 _window.scrollTo(!data.skipX ? data.x : x, !data.skipY ? data.y : y); 22011 } else { 22012 data.skipY || (target.scrollTop = data.y); 22013 data.skipX || (target.scrollLeft = data.x); 22014 } 22015 22016 if (snap && (ratio === 1 || ratio === 0)) { 22017 y = target.scrollTop; 22018 x = target.scrollLeft; 22019 snapInline ? target.style.scrollSnapType = snapInline : target.style.removeProperty("scroll-snap-type"); 22020 target.scrollTop = y + 1; 22021 target.scrollLeft = x + 1; 22022 target.scrollTop = y; 22023 target.scrollLeft = x; 22024 } 22025 22026 data.xPrev = data.x; 22027 data.yPrev = data.y; 22028 }, 22029 kill: function kill(property) { 22030 var both = property === "scrollTo"; 22031 22032 if (both || property === "scrollTo_x") { 22033 this.skipX = 1; 22034 } 22035 22036 if (both || property === "scrollTo_y") { 22037 this.skipY = 1; 22038 } 22039 } 22040 }; 22041 ScrollToPlugin.max = _max; 22042 ScrollToPlugin.getOffset = _getOffset; 22043 ScrollToPlugin.buildGetter = _buildGetter; 22044 _getGSAP() && gsap.registerPlugin(ScrollToPlugin); 22045 22046 exports.ScrollToPlugin = ScrollToPlugin; 22047 exports.default = ScrollToPlugin; 22048 22049 Object.defineProperty(exports, '__esModule', { value: true }); 22050 22051}))); 22052 22053/*SIGUIENTE LIBRERIA*/ 22054/*! 22055 * ScrollToPlugin 3.7.0 22056 * https://greensock.com 22057 * 22058 * @license Copyright 2021, GreenSock. All rights reserved. 22059 * Subject to the terms at https://greensock.com/standard-license or for Club GreenSock members, the agreement issued with that membership. 22060 * @author: Jack Doyle, [email protected] 22061 */ 22062 22063!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e=e||self).window=e.window||{})}(this,function(e){"use strict";function k(){return"undefined"!=typeof window}function l(){return u||k()&&(u=window.gsap)&&u.registerPlugin&&u}function m(e){return"string"==typeof e}function n(e){return"function"==typeof e}function o(e,t){var o="x"===t?"Width":"Height",n="scroll"+o,r="client"+o;return e===T||e===i||e===c?Math.max(i[n],c[n])-(T["inner"+o]||i[r]||c[r]):e[n]-e["offset"+o]}function p(e,t){var o="scroll"+("x"===t?"Left":"Top");return e===T&&(null!=e.pageXOffset?o="page"+t.toUpperCase()+"Offset":e=null!=i[o]?i:c),function(){return e[o]}}function r(e,t){if(!(e=f(e)[0])||!e.getBoundingClientRect)return console.warn("scrollTo target doesn't exist. Using 0")||{x:0,y:0};var o=e.getBoundingClientRect(),n=!t||t===T||t===c,r=n?{top:i.clientTop-(T.pageYOffset||i.scrollTop||c.scrollTop||0),left:i.clientLeft-(T.pageXOffset||i.scrollLeft||c.scrollLeft||0)}:t.getBoundingClientRect(),l={x:o.left-r.left,y:o.top-r.top};return!n&&t&&(l.x+=p(t,"x")(),l.y+=p(t,"y")()),l}function s(e,t,n,l,i){return isNaN(e)||"object"==typeof e?m(e)&&"="===e.charAt(1)?parseFloat(e.substr(2))*("-"===e.charAt(0)?-1:1)+l-i:"max"===e?o(t,n)-i:Math.min(o(t,n),r(e,t)[n]-i):parseFloat(e)-i}function t(){u=l(),k()&&u&&document.body&&(T=window,c=document.body,i=document.documentElement,f=u.utils.toArray,u.config({autoKillThreshold:7}),v=u.config(),a=1)}var u,a,T,i,c,f,v,y={version:"3.7.0",name:"scrollTo",rawVars:1,register:function register(e){u=e,t()},init:function init(e,o,r,l,i){a||t();var c=this,f=u.getProperty(e,"scrollSnapType");c.isWin=e===T,c.target=e,c.tween=r,o=function _clean(e,t,o,r){if(n(e)&&(e=e(t,o,r)),"object"!=typeof e)return m(e)&&"max"!==e&&"="!==e.charAt(1)?{x:e,y:e}:{y:e};
22063if(e.nodeType)return{y:e,x:e};var l,i={};for(l in e)i[l]="onAutoKill"!==l&&n(e[l])?e[l](t,o,r):e[l];return i}(o,l,e,i),c.vars=o,c.autoKill=!!o.autoKill,c.getX=p(e,"x"),c.getY=p(e,"y"),c.x=c.xPrev=c.getX(),c.y=c.yPrev=c.getY(),f&&"none"!==f&&(c.snap=1,c.snapInline=e.style.scrollSnapType,e.style.scrollSnapType="none"),null!=o.x?(c.add(c,"x",c.x,s(o.x,e,"x",c.x,o.offsetX||0),l,i),c._props.push("scrollTo_x")):c.skipX=1,null!=o.y?(c.add(c,"y",c.y,s(o.y,e,"y",c.y,o.offsetY||0),l,i),c._props.push("scrollTo_y")):c.skipY=1},render:function render(e,t){for(var n,r,l,i,s,p=t._pt,c=t.target,f=t.tween,u=t.autoKill,a=t.xPrev,y=t.yPrev,d=t.isWin,x=t.snap,g=t.snapInline;p;)p.r(e,p.d),p=p._next;n=d||!t.skipX?t.getX():a,l=(r=d||!t.skipY?t.getY():y)-y,i=n-a,s=v.autoKillThreshold,t.x<0&&(t.x=0),t.y<0&&(t.y=0),u&&(!t.skipX&&(s<i||i<-s)&&n<o(c,"x")&&(t.skipX=1),!t.skipY&&(s<l||l<-s)&&r<o(c,"y")&&(t.skipY=1),t.skipX&&t.skipY&&(f.kill(),t.vars.onAutoKill&&t.vars.onAutoKill.apply(f,t.vars.onAutoKillParams||[]))),d?T.scrollTo(t.skipX?n:t.x,t.skipY?r:t.y):(t.skipY||(c.scrollTop=t.y),t.skipX||(c.scrollLeft=t.x)),!x||1!==e&&0!==e||(r=c.scrollTop,n=c.scrollLeft,g?c.style.scrollSnapType=g:c.style.removeProperty("scroll-snap-type"),c.scrollTop=r+1,c.scrollLeft=n+1,c.scrollTop=r,c.scrollLeft=n),t.xPrev=t.x,t.yPrev=t.y},kill:function kill(e){var t="scrollTo"===e;!t&&"scrollTo_x"!==e||(this.skipX=1),!t&&"scrollTo_y"!==e||(this.skipY=1)}};y.max=o,y.getOffset=r,y.buildGetter=p,l()&&u.registerPlugin(y),e.ScrollToPlugin=y,e.default=y;if (typeof(window)==="undefined"||window!==e){Object.defineProperty(e,"__esModule",{value:!0})} else {delete e.default}}); 22064 22065 22066/*SIGUIENTE LIBRERIA*/ 22067(function (global, factory) { 22068 typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) : 22069 typeof define === 'function' && define.amd ? define(['exports'], factory) : 22070 (global = global || self, factory(global.window = global.window || {})); 22071}(this, (function (exports) { 'use strict'; 22072 22073 /*! 22074 * ScrollTrigger 3.7.0 22075 * https://greensock.com 22076 * 22077 * @license Copyright 2008-2021, GreenSock. All rights reserved. 22078 * Subject to the terms at https://greensock.com/standard-license or for 22079 * Club GreenSock members, the agreement issued with that membership. 22080 * @author: Jack Doyle, [email protected] 22081 */ 22082 var gsap, 22083 _coreInitted, 22084 _win, 22085 _doc, 22086 _docEl, 22087 _body, 22088 _root, 22089 _resizeDelay, 22090 _raf, 22091 _request, 22092 _toArray, 22093 _clamp, 22094 _time2, 22095 _syncInterval, 22096 _refreshing, 22097 _pointerIsDown, 22098 _transformProp, 22099 _i, 22100 _prevWidth, 22101 _prevHeight, 22102 _autoRefresh, 22103 _sort, 22104 _suppressOverwrites, 22105 _ignoreResize, 22106 _limitCallbacks, 22107 _startup = 1, 22108 _proxies = [], 22109 _scrollers = [], 22110 _getTime = Date.now, 22111 _time1 = _getTime(), 22112 _lastScrollTime = 0, 22113 _enabled = 1, 22114 _passThrough = function _passThrough(v) { 22115 return v; 22116 }, 22117 _round = function _round(value) { 22118 return Math.round(value * 100000) / 100000 || 0; 22119 }, 22120 _windowExists = function _windowExists() { 22121 return typeof window !== "undefined"; 22122 }, 22123 _getGSAP = function _getGSAP() { 22124 return gsap || _windowExists() && (gsap = window.gsap) && gsap.registerPlugin && gsap; 22125 }, 22126 _isViewport = function _isViewport(e) { 22127 return !!~_root.indexOf(e); 22128 }, 22129 _getProxyProp = function _getProxyProp(element, property) { 22130 return ~_proxies.indexOf(element) && _proxies[_proxies.indexOf(element) + 1][property]; 22131 }, 22132 _getScrollFunc = function _getScrollFunc(element, _ref) { 22133 var s = _ref.s, 22134 sc = _ref.sc; 22135 22136 var i = _scrollers.indexOf(element), 22137 offset = sc === _vertical.sc ? 1 : 2; 22138 22139 !~i && (i = _scrollers.push(element) - 1); 22140 return _scrollers[i + offset] || (_scrollers[i + offset] = _getProxyProp(element, s) || (_isViewport(element) ? sc : function (value) { 22141 return arguments.length ? element[s] = value : element[s]; 22142 })); 22143 }, 22144 _getBoundsFunc = function _getBoundsFunc(element) { 22145 return _getProxyProp(element, "getBoundingClientRect") || (_isViewport(element) ? function () { 22146 _winOffsets.width = _win.innerWidth; 22147 _winOffsets.height = _win.innerHeight; 22148 return _winOffsets; 22149 } : function () { 22150 return _getBounds(element); 22151 }); 22152 }, 22153 _getSizeFunc = function _getSizeFunc(scroller, isViewport, _ref2) { 22154 var d = _ref2.d, 22155 d2 = _ref2.d2, 22156 a = _ref2.a; 22157 return (a = _getProxyProp(scroller, "getBoundingClientRect")) ? function () { 22158 return a()[d]; 22159 } : function () { 22160 return (isViewport ? _win["inner" + d2] : scroller["client" + d2]) || 0; 22161 }; 22162 }, 22163 _getOffsetsFunc = function _getOffsetsFunc(element, isViewport) { 22164 return !isViewport || ~_proxies.indexOf(element) ? _getBoundsFunc(element) : function () { 22165 return _winOffsets; 22166 }; 22167 }, 22168 _maxScroll = function _maxScroll(element, _ref3) { 22169 var s = _ref3.s, 22170 d2 = _ref3.d2, 22171 d = _ref3.d, 22172 a = _ref3.a; 22173 return (s = "scroll" + d2) && (a = _getProxyProp(element, s)) ? a() - _getBoundsFunc(element)()[d] : _isViewport(element) ? Math.max(_docEl[s], _body[s]) - (_win["inner" + d2] || _docEl["client" + d2] || _body["client" + d2]) : element[s] - element["offset" + d2]; 22174 }, 22175 _iterateAutoRefresh = function _iterateAutoRefresh(func, events) { 22176 for (var i = 0; i < _autoRefresh.length; i += 3) {
22177 (!events || ~events.indexOf(_autoRefresh[i + 1])) && func(_autoRefresh[i], _autoRefresh[i + 1], _autoRefresh[i + 2]); 22178 } 22179 }, 22180 _isString = function _isString(value) { 22181 return typeof value === "string"; 22182 }, 22183 _isFunction = function _isFunction(value) { 22184 return typeof value === "function"; 22185 }, 22186 _isNumber = function _isNumber(value) { 22187 return typeof value === "number"; 22188 }, 22189 _isObject = function _isObject(value) { 22190 return typeof value === "object"; 22191 }, 22192 _callIfFunc = function _callIfFunc(value) { 22193 return _isFunction(value) && value(); 22194 }, 22195 _combineFunc = function _combineFunc(f1, f2) { 22196 return function () { 22197 var result1 = _callIfFunc(f1), 22198 result2 = _callIfFunc(f2); 22199 22200 return function () { 22201 _callIfFunc(result1); 22202 22203 _callIfFunc(result2); 22204 }; 22205 }; 22206 }, 22207 _abs = Math.abs, 22208 _scrollLeft = "scrollLeft", 22209 _scrollTop = "scrollTop", 22210 _left = "left", 22211 _top = "top", 22212 _right = "right", 22213 _bottom = "bottom", 22214 _width = "width", 22215 _height = "height", 22216 _Right = "Right", 22217 _Left = "Left", 22218 _Top = "Top", 22219 _Bottom = "Bottom", 22220 _padding = "padding", 22221 _margin = "margin", 22222 _Width = "Width", 22223 _Height = "Height", 22224 _px = "px", 22225 _horizontal = { 22226 s: _scrollLeft, 22227 p: _left, 22228 p2: _Left, 22229 os: _right, 22230 os2: _Right, 22231 d: _width, 22232 d2: _Width, 22233 a: "x", 22234 sc: function sc(value) { 22235 return arguments.length ? _win.scrollTo(value, _vertical.sc()) : _win.pageXOffset || _doc[_scrollLeft] || _docEl[_scrollLeft] || _body[_scrollLeft] || 0; 22236 } 22237 }, 22238 _vertical = { 22239 s: _scrollTop, 22240 p: _top, 22241 p2: _Top, 22242 os: _bottom, 22243 os2: _Bottom, 22244 d: _height, 22245 d2: _Height, 22246 a: "y", 22247 op: _horizontal, 22248 sc: function sc(value) { 22249 return arguments.length ? _win.scrollTo(_horizontal.sc(), value) : _win.pageYOffset || _doc[_scrollTop] || _docEl[_scrollTop] || _body[_scrollTop] || 0; 22250 } 22251 }, 22252 _getComputedStyle = function _getComputedStyle(element) { 22253 return _win.getComputedStyle(element); 22254 }, 22255 _makePositionable = function _makePositionable(element) { 22256 var position = _getComputedStyle(element).position; 22257 22258 element.style.position = position === "absolute" || position === "fixed" ? position : "relative"; 22259 }, 22260 _setDefaults = function _setDefaults(obj, defaults) { 22261 for (var p in defaults) { 22262 p in obj || (obj[p] = defaults[p]); 22263 } 22264 22265 return obj; 22266 }, 22267 _getBounds = function _getBounds(element, withoutTransforms) { 22268 var tween = withoutTransforms && _getComputedStyle(element)[_transformProp] !== "matrix(1, 0, 0, 1, 0, 0)" && gsap.to(element, { 22269 x: 0, 22270 y: 0, 22271 xPercent: 0, 22272 yPercent: 0, 22273 rotation: 0, 22274 rotationX: 0, 22275 rotationY: 0, 22276 scale: 1, 22277 skewX: 0, 22278 skewY: 0 22279 }).progress(1), 22280 bounds = element.getBoundingClientRect(); 22281 tween && tween.progress(0).kill(); 22282 return bounds; 22283 }, 22284 _getSize = function _getSize(element, _ref4) { 22285 var d2 = _ref4.d2; 22286 return element["offset" + d2] || element["client" + d2] || 0; 22287 }, 22288 _getLabelRatioArray = function _getLabelRatioArray(timeline) { 22289 var a = [], 22290 labels = timeline.labels, 22291 duration = timeline.duration(), 22292 p; 22293 22294 for (p in labels) { 22295 a.push(labels[p] / duration); 22296 } 22297 22298 return a; 22299 }, 22300 _getClosestLabel = function _getClosestLabel(animation) { 22301 return function (value) { 22302 return gsap.utils.snap(_getLabelRatioArray(animation), value); 22303 }; 22304 }, 22305 _getLabelAtDirection = function _getLabelAtDirection(timeline) { 22306 return function (value, st) { 22307 var a = _getLabelRatioArray(timeline), 22308 i; 22309 22310 a.sort(function (a, b) { 22311 return a - b; 22312 }); 22313 22314 if (st.direction > 0) { 22315 value -= 1e-4; 22316 22317 for (i = 0; i < a.length; i++) { 22318 if (a[i] >= value) { 22319 return a[i]; 22320 } 22321 } 22322 22323 return a.pop(); 22324 } else { 22325 i = a.length; 22326 value += 1e-4; 22327 22328 while (i--) { 22329 if (a[i] <= value) { 22330 return a[i]; 22331 } 22332 } 22333 } 22334 22335 return a[0]; 22336 }; 22337 }, 22338 _multiListener = function _multiListener(func, element, types, callback) { 22339 return types.split(",").forEach(function (type) { 22340 return func(element, type, callback); 22341 }); 22342 }, 22343 _addListener = function _addListener(element, type, func) { 22344 return element.addEventListener(type, func, { 22345 passive: true 22346 }); 22347 }, 22348 _removeListener = function _removeListener(element, type, func) { 22349 return element.removeEventListener(type, func); 22350 }, 22351 _markerDefaults = { 22352 startColor: "green", 22353 endColor: "red", 22354 indent: 0, 22355 fontSize: "16px", 22356 fontWeight: "normal" 22357 }, 22358 _defaults = { 22359 toggleActions: "play", 22360 anticipatePin: 0 22361 }, 22362 _keywords = { 22363 top: 0,
22364 left: 0, 22365 center: 0.5, 22366 bottom: 1, 22367 right: 1 22368 }, 22369 _offsetToPx = function _offsetToPx(value, size) { 22370 if (_isString(value)) { 22371 var eqIndex = value.indexOf("="), 22372 relative = ~eqIndex ? +(value.charAt(eqIndex - 1) + 1) * parseFloat(value.substr(eqIndex + 1)) : 0; 22373 22374 if (~eqIndex) { 22375 value.indexOf("%") > eqIndex && (relative *= size / 100); 22376 value = value.substr(0, eqIndex - 1); 22377 } 22378 22379 value = relative + (value in _keywords ? _keywords[value] * size : ~value.indexOf("%") ? parseFloat(value) * size / 100 : parseFloat(value) || 0); 22380 } 22381 22382 return value; 22383 }, 22384 _createMarker = function _createMarker(type, name, container, direction, _ref5, offset, matchWidthEl) { 22385 var startColor = _ref5.startColor, 22386 endColor = _ref5.endColor, 22387 fontSize = _ref5.fontSize, 22388 indent = _ref5.indent, 22389 fontWeight = _ref5.fontWeight; 22390 22391 var e = _doc.createElement("div"), 22392 useFixedPosition = _isViewport(container) || _getProxyProp(container, "pinType") === "fixed", 22393 isScroller = type.indexOf("scroller") !== -1, 22394 parent = useFixedPosition ? _body : container, 22395 isStart = type.indexOf("start") !== -1, 22396 color = isStart ? startColor : endColor, 22397 css = "border-color:" + color + ";font-size:" + fontSize + ";color:" + color + ";font-weight:" + fontWeight + ";pointer-events:none;white-space:nowrap;font-family:sans-serif,Arial;z-index:1000;padding:4px 8px;border-width:0;border-style:solid;"; 22398 22399 css += "position:" + (isScroller && useFixedPosition ? "fixed;" : "absolute;"); 22400 (isScroller || !useFixedPosition) && (css += (direction === _vertical ? _right : _bottom) + ":" + (offset + parseFloat(indent)) + "px;"); 22401 matchWidthEl && (css += "box-sizing:border-box;text-align:left;width:" + matchWidthEl.offsetWidth + "px;"); 22402 e._isStart = isStart; 22403 e.setAttribute("class", "gsap-marker-" + type); 22404 e.style.cssText = css; 22405 e.innerText = name || name === 0 ? type + "-" + name : type; 22406 parent.children[0] ? parent.insertBefore(e, parent.children[0]) : parent.appendChild(e); 22407 e._offset = e["offset" + direction.op.d2]; 22408 22409 _positionMarker(e, 0, direction, isStart); 22410 22411 return e; 22412 }, 22413 _positionMarker = function _positionMarker(marker, start, direction, flipped) { 22414 var vars = { 22415 display: "block" 22416 }, 22417 side = direction[flipped ? "os2" : "p2"], 22418 oppositeSide = direction[flipped ? "p2" : "os2"]; 22419 marker._isFlipped = flipped; 22420 vars[direction.a + "Percent"] = flipped ? -100 : 0; 22421 vars[direction.a] = flipped ? "1px" : 0; 22422 vars["border" + side + _Width] = 1; 22423 vars["border" + oppositeSide + _Width] = 0; 22424 vars[direction.p] = start + "px"; 22425 gsap.set(marker, vars); 22426 }, 22427 _triggers = [], 22428 _ids = {}, 22429 _sync = function _sync() { 22430 return _request || (_request = _raf(_updateAll)); 22431 }, 22432 _onScroll = function _onScroll() { 22433 if (!_request) { 22434 _request = _raf(_updateAll); 22435 _lastScrollTime || _dispatch("scrollStart"); 22436 _lastScrollTime = _getTime(); 22437 } 22438 }, 22439 _onResize = function _onResize() { 22440 return !_refreshing && !_ignoreResize && !_doc.fullscreenElement && _resizeDelay.restart(true); 22441 }, 22442 _listeners = {}, 22443 _emptyArray = [], 22444 _media = [], 22445 _creatingMedia, 22446 _lastMediaTick, 22447 _onMediaChange = function _onMediaChange(e) { 22448 var tick = gsap.ticker.frame, 22449 matches = [], 22450 i = 0, 22451 index; 22452 22453 if (_lastMediaTick !== tick || _startup) { 22454 _revertAll(); 22455 22456 for (; i < _media.length; i += 4) { 22457 index = _win.matchMedia(_media[i]).matches; 22458 22459 if (index !== _media[i + 3]) { 22460 _media[i + 3] = index; 22461 index ? matches.push(i) : _revertAll(1, _media[i]) || _isFunction(_media[i + 2]) && _media[i + 2](); 22462 } 22463 } 22464 22465 _revertRecorded(); 22466 22467 for (i = 0; i < matches.length; i++) { 22468 index = matches[i]; 22469 _creatingMedia = _media[index]; 22470 _media[index + 2] = _media[index + 1](e); 22471 } 22472 22473 _creatingMedia = 0; 22474 _coreInitted && _refreshAll(0, 1); 22475 _lastMediaTick = tick; 22476 22477 _dispatch("matchMedia"); 22478 } 22479 }, 22480 _softRefresh = function _softRefresh() { 22481 return _removeListener(ScrollTrigger, "scrollEnd", _softRefresh) || _refreshAll(true); 22482 }, 22483 _dispatch = function _dispatch(type) { 22484 return _listeners[type] && _listeners[type].map(function (f) { 22485 return f(); 22486 }) || _emptyArray; 22487 }, 22488 _savedStyles = [], 22489 _revertRecorded = function _revertRecorded(media) { 22490 for (var i = 0; i < _savedStyles.length; i += 5) { 22491 if (!media || _savedStyles[i + 4] === media) { 22492 _savedStyles[i].style.cssText = _savedStyles[i + 1]; 22493 _savedStyles[i].getBBox && _savedStyles[i].setAttribute("transform", _savedStyles[i + 2] || ""); 22494 _savedStyles[i + 3].uncache = 1; 22495 } 22496 } 22497 }, 22498 _revertAll = function _revertAll(kill, media) { 22499 var trigger; 22500 22501 for (_i = 0; _i < _triggers.length; _i++) { 22502 trigger = _triggers[_i]; 22503 22504 if (!media || trigger.media === media) { 22505 if (kill) { 22506 trigger.kill(1); 22507 } else { 22508 trigger.revert(); 22509 } 22510 } 22511 } 22512 22513 media && _revertRecorded(media); 22514 media || _dispatch("revert"); 22515 }, 22516 _refreshAll = function _refreshAll(force, skipRevert) { 22517 if (_lastScrollTime && !force) { 22518 _addListener(ScrollTrigger, "scrollEnd", _softRefresh); 22519 22520 return; 22521 } 22522 22523 var refreshInits = _dispatch("refreshInit"); 22524 22525 _sort && ScrollTrigger.sort(); 22526 skipRevert || _revertAll(); 22527
vendor: 4,170 bytes, lines 22528-22675
22528 _triggers.forEach(function (t) { 22529 return t.refresh(); 22530 }); 22531 22532 refreshInits.forEach(function (result) { 22533 return result && result.render && result.render(-1); 22534 }); 22535 22536 _scrollers.forEach(function (obj) { 22537 return typeof obj === "function" && (obj.rec = 0); 22538 }); 22539 22540 _resizeDelay.pause(); 22541 22542 _dispatch("refresh"); 22543 }, 22544 _lastScroll = 0, 22545 _direction = 1, 22546 _updateAll = function _updateAll() { 22547 var l = _triggers.length, 22548 time = _getTime(), 22549 recordVelocity = time - _time1 >= 50, 22550 scroll = l && _triggers[0].scroll(); 22551 22552 _direction = _lastScroll > scroll ? -1 : 1; 22553 _lastScroll = scroll; 22554 22555 if (recordVelocity) { 22556 if (_lastScrollTime && !_pointerIsDown && time - _lastScrollTime > 200) { 22557 _lastScrollTime = 0; 22558 22559 _dispatch("scrollEnd"); 22560 } 22561 22562 _time2 = _time1; 22563 _time1 = time; 22564 } 22565 22566 if (_direction < 0) { 22567 _i = l; 22568 22569 while (_i-- > 0) { 22570 _triggers[_i] && _triggers[_i].update(0, recordVelocity); 22571 } 22572 22573 _direction = 1; 22574 } else { 22575 for (_i = 0; _i < l; _i++) { 22576 _triggers[_i] && _triggers[_i].update(0, recordVelocity); 22577 } 22578 } 22579 22580 _request = 0; 22581 }, 22582 _propNamesToCopy = [_left, _top, _bottom, _right, _margin + _Bottom, _margin + _Right, _margin + _Top, _margin + _Left, "display", "flexShrink", "float", "zIndex", "grid-column-start", "grid-column-end", "grid-row-start", "grid-row-end", "grid-area", "justify-self", "align-self", "place-self"], 22583 _stateProps = _propNamesToCopy.concat([_width, _height, "boxSizing", "max" + _Width, "max" + _Height, "position", _margin, _padding, _padding + _Top, _padding + _Right, _padding + _Bottom, _padding + _Left]), 22584 _swapPinOut = function _swapPinOut(pin, spacer, state) { 22585 _setState(state); 22586 22587 if (pin.parentNode === spacer) { 22588 var parent = spacer.parentNode; 22589 22590 if (parent) { 22591 parent.insertBefore(pin, spacer); 22592 parent.removeChild(spacer); 22593 } 22594 } 22595 }, 22596 _swapPinIn = function _swapPinIn(pin, spacer, cs, spacerState) { 22597 if (pin.parentNode !== spacer) { 22598 var i = _propNamesToCopy.length, 22599 spacerStyle = spacer.style, 22600 pinStyle = pin.style, 22601 p; 22602 22603 while (i--) { 22604 p = _propNamesToCopy[i]; 22605 spacerStyle[p] = cs[p]; 22606 } 22607 22608 spacerStyle.position = cs.position === "absolute" ? "absolute" : "relative"; 22609 cs.display === "inline" && (spacerStyle.display = "inline-block"); 22610 pinStyle[_bottom] = pinStyle[_right] = "auto"; 22611 spacerStyle.overflow = "visible"; 22612 spacerStyle.boxSizing = "border-box"; 22613 spacerStyle[_width] = _getSize(pin, _horizontal) + _px; 22614 spacerStyle[_height] = _getSize(pin, _vertical) + _px; 22615 spacerStyle[_padding] = pinStyle[_margin] = pinStyle[_top] = pinStyle[_left] = "0"; 22616 22617 _setState(spacerState); 22618 22619 pinStyle[_width] = pinStyle["max" + _Width] = cs[_width]; 22620 pinStyle[_height] = pinStyle["max" + _Height] = cs[_height]; 22621 pinStyle[_padding] = cs[_padding]; 22622 pin.parentNode.insertBefore(spacer, pin); 22623 spacer.appendChild(pin); 22624 } 22625 }, 22626 _capsExp = /([A-Z])/g, 22627 _setState = function _setState(state) { 22628 if (state) { 22629 var style = state.t.style, 22630 l = state.length, 22631 i = 0, 22632 p, 22633 value; 22634 (state.t._gsap || gsap.core.getCache(state.t)).uncache = 1; 22635 22636 for (; i < l; i += 2) { 22637 value = state[i + 1]; 22638 p = state[i]; 22639 22640 if (value) { 22641 style[p] = value; 22642 } else if (style[p]) { 22643 style.removeProperty(p.replace(_capsExp, "-$1").toLowerCase()); 22644 } 22645 } 22646 } 22647 }, 22648 _getState = function _getState(element) { 22649 var l = _stateProps.length, 22650 style = element.style, 22651 state = [], 22652 i = 0; 22653 22654 for (; i < l; i++) { 22655 state.push(_stateProps[i], style[_stateProps[i]]); 22656 } 22657 22658 state.t = element; 22659 return state; 22660 }, 22661 _copyState = function _copyState(state, override, omitOffsets) { 22662 var result = [], 22663 l = state.length, 22664 i = omitOffsets ? 8 : 0, 22665 p; 22666 22667 for (; i < l; i += 2) { 22668 p = state[i]; 22669 result.push(p, p in override ? override[p] : state[i + 1]); 22670 } 22671 22672 result.t = state.t; 22673 return result; 22674 }, 22675 _winOffsets = {
22676 left: 0, 22677 top: 0 22678 }, 22679 _parsePosition = function _parsePosition(value, trigger, scrollerSize, direction, scroll, marker, markerScroller, self, scrollerBounds, borderWidth, useFixedPosition, scrollerMax) { 22680 _isFunction(value) && (value = value(self)); 22681 22682 if (_isString(value) && value.substr(0, 3) === "max") { 22683 value = scrollerMax + (value.charAt(4) === "=" ? _offsetToPx("0" + value.substr(3), scrollerSize) : 0); 22684 } 22685 22686 if (!_isNumber(value)) { 22687 _isFunction(trigger) && (trigger = trigger(self)); 22688 22689 var element = _toArray(trigger)[0] || _body, 22690 bounds = _getBounds(element) || {}, 22691 offsets = value.split(" "), 22692 localOffset, 22693 globalOffset, 22694 display; 22695 22696 if ((!bounds || !bounds.left && !bounds.top) && _getComputedStyle(element).display === "none") { 22697 display = element.style.display; 22698 element.style.display = "block"; 22699 bounds = _getBounds(element); 22700 display ? element.style.display = display : element.style.removeProperty("display"); 22701 } 22702 22703 localOffset = _offsetToPx(offsets[0], bounds[direction.d]); 22704 globalOffset = _offsetToPx(offsets[1] || "0", scrollerSize); 22705 value = bounds[direction.p] - scrollerBounds[direction.p] - borderWidth + localOffset + scroll - globalOffset; 22706 markerScroller && _positionMarker(markerScroller, globalOffset, direction, scrollerSize - globalOffset < 20 || markerScroller._isStart && globalOffset > 20); 22707 scrollerSize -= scrollerSize - globalOffset; 22708 } else if (markerScroller) { 22709 _positionMarker(markerScroller, scrollerSize, direction, true); 22710 } 22711 22712 if (marker) { 22713 var position = value + scrollerSize, 22714 isStart = marker._isStart; 22715 scrollerMax = "scroll" + direction.d2; 22716 22717 _positionMarker(marker, position, direction, isStart && position > 20 || !isStart && (useFixedPosition ? Math.max(_body[scrollerMax], _docEl[scrollerMax]) : marker.parentNode[scrollerMax]) <= position + 1); 22718 22719 if (useFixedPosition) { 22720 scrollerBounds = _getBounds(markerScroller); 22721 useFixedPosition && (marker.style[direction.op.p] = scrollerBounds[direction.op.p] - direction.op.m - marker._offset + _px); 22722 } 22723 } 22724 22725 return Math.round(value); 22726 }, 22727 _prefixExp = /(?:webkit|moz|length|cssText|inset)/i, 22728 _reparent = function _reparent(element, parent, top, left) { 22729 if (element.parentNode !== parent) { 22730 var style = element.style, 22731 p, 22732 cs; 22733 22734 if (parent === _body) { 22735 element._stOrig = style.cssText; 22736 cs = _getComputedStyle(element); 22737 22738 for (p in cs) { 22739 if (!+p && !_prefixExp.test(p) && cs[p] && typeof style[p] === "string" && p !== "0") { 22740 style[p] = cs[p]; 22741 } 22742 } 22743 22744 style.top = top; 22745 style.left = left; 22746 } else { 22747 style.cssText = element._stOrig; 22748 } 22749 22750 gsap.core.getCache(element).uncache = 1; 22751 parent.appendChild(element); 22752 } 22753 }, 22754 _getTweenCreator = function _getTweenCreator(scroller, direction) { 22755 var getScroll = _getScrollFunc(scroller, direction), 22756 prop = "_scroll" + direction.p2, 22757 lastScroll1, 22758 lastScroll2, 22759 getTween = function getTween(scrollTo, vars, initialValue, change1, change2) { 22760 var tween = getTween.tween, 22761 onComplete = vars.onComplete, 22762 modifiers = {}; 22763 tween && tween.kill(); 22764 lastScroll1 = Math.round(initialValue); 22765 vars[prop] = scrollTo; 22766 vars.modifiers = modifiers; 22767 22768 modifiers[prop] = function (value) { 22769 value = _round(getScroll()); 22770 22771 if (value !== lastScroll1 && value !== lastScroll2 && Math.abs(value - lastScroll1) > 2) { 22772 tween.kill(); 22773 getTween.tween = 0; 22774 } else { 22775 value = initialValue + change1 * tween.ratio + change2 * tween.ratio * tween.ratio; 22776 } 22777 22778 lastScroll2 = lastScroll1; 22779 return lastScroll1 = _round(value); 22780 }; 22781 22782 vars.onComplete = function () { 22783 getTween.tween = 0; 22784 onComplete && onComplete.call(tween); 22785 }; 22786 22787 tween = getTween.tween = gsap.to(scroller, vars); 22788 return tween; 22789 }; 22790 22791 scroller[prop] = getScroll; 22792 scroller.addEventListener("wheel", function () { 22793 return getTween.tween && getTween.tween.kill() && (getTween.tween = 0); 22794 }); 22795 return getTween; 22796 }; 22797 22798 _horizontal.op = _vertical; 22799 var ScrollTrigger = function () { 22800 function ScrollTrigger(vars, animation) { 22801 _coreInitted || ScrollTrigger.register(gsap) || console.warn("Please gsap.registerPlugin(ScrollTrigger)"); 22802 this.init(vars, animation); 22803 } 22804 22805 var _proto = ScrollTrigger.prototype; 22806 22807 _proto.init = function init(vars, animation) { 22808 this.progress = this.start = 0; 22809 this.vars && this.kill(1); 22810 22811 if (!_enabled) { 22812 this.update = this.refresh = this.kill = _passThrough; 22813 return; 22814 } 22815 22816 vars = _setDefaults(_isString(vars) || _isNumber(vars) || vars.nodeType ? { 22817 trigger: vars 22818 } : vars, _defaults); 22819 22820 var direction = vars.horizontal ? _horizontal : _vertical, 22821 _vars = vars,
22822 onUpdate = _vars.onUpdate, 22823 toggleClass = _vars.toggleClass, 22824 id = _vars.id, 22825 onToggle = _vars.onToggle, 22826 onRefresh = _vars.onRefresh, 22827 scrub = _vars.scrub, 22828 trigger = _vars.trigger, 22829 pin = _vars.pin, 22830 pinSpacing = _vars.pinSpacing, 22831 invalidateOnRefresh = _vars.invalidateOnRefresh, 22832 anticipatePin = _vars.anticipatePin, 22833 onScrubComplete = _vars.onScrubComplete, 22834 onSnapComplete = _vars.onSnapComplete, 22835 once = _vars.once, 22836 snap = _vars.snap, 22837 pinReparent = _vars.pinReparent, 22838 isToggle = !scrub && scrub !== 0, 22839 scroller = _toArray(vars.scroller || _win)[0], 22840 scrollerCache = gsap.core.getCache(scroller), 22841 isViewport = _isViewport(scroller), 22842 useFixedPosition = "pinType" in vars ? vars.pinType === "fixed" : isViewport || _getProxyProp(scroller, "pinType") === "fixed", 22843 callbacks = [vars.onEnter, vars.onLeave, vars.onEnterBack, vars.onLeaveBack], 22844 toggleActions = isToggle && vars.toggleActions.split(" "), 22845 markers = "markers" in vars ? vars.markers : _defaults.markers, 22846 borderWidth = isViewport ? 0 : parseFloat(_getComputedStyle(scroller)["border" + direction.p2 + _Width]) || 0, 22847 self = this, 22848 onRefreshInit = vars.onRefreshInit && function () { 22849 return vars.onRefreshInit(self); 22850 }, 22851 getScrollerSize = _getSizeFunc(scroller, isViewport, direction), 22852 getScrollerOffsets = _getOffsetsFunc(scroller, isViewport), 22853 lastSnap = 0, 22854 tweenTo, 22855 pinCache, 22856 snapFunc, 22857 scroll1, 22858 scroll2, 22859 start, 22860 end, 22861 markerStart, 22862 markerEnd, 22863 markerStartTrigger, 22864 markerEndTrigger, 22865 markerVars, 22866 change, 22867 pinOriginalState, 22868 pinActiveState, 22869 pinState, 22870 spacer, 22871 offset, 22872 pinGetter, 22873 pinSetter, 22874 pinStart, 22875 pinChange, 22876 spacingStart, 22877 spacerState, 22878 markerStartSetter, 22879 markerEndSetter, 22880 cs, 22881 snap1, 22882 snap2, 22883 scrubTween, 22884 scrubSmooth, 22885 snapDurClamp, 22886 snapDelayedCall, 22887 prevProgress, 22888 prevScroll, 22889 prevAnimProgress; 22890 22891 self.media = _creatingMedia; 22892 anticipatePin *= 45; 22893 self.scroller = scroller; 22894 self.scroll = _getScrollFunc(scroller, direction); 22895 scroll1 = self.scroll(); 22896 self.vars = vars; 22897 animation = animation || vars.animation; 22898 "refreshPriority" in vars && (_sort = 1); 22899 scrollerCache.tweenScroll = scrollerCache.tweenScroll || { 22900 top: _getTweenCreator(scroller, _vertical), 22901 left: _getTweenCreator(scroller, _horizontal) 22902 }; 22903 self.tweenTo = tweenTo = scrollerCache.tweenScroll[direction.p]; 22904 22905 if (animation) { 22906 animation.vars.lazy = false; 22907 animation._initted || animation.vars.immediateRender !== false && vars.immediateRender !== false && animation.render(0, true, true); 22908 self.animation = animation.pause(); 22909 animation.scrollTrigger = self; 22910 scrubSmooth = _isNumber(scrub) && scrub; 22911 scrubSmooth && (scrubTween = gsap.to(animation, { 22912 ease: "power3", 22913 duration: scrubSmooth, 22914 onComplete: function onComplete() { 22915 return onScrubComplete && onScrubComplete(self); 22916 } 22917 })); 22918 snap1 = 0; 22919 id || (id = animation.vars.id); 22920 } 22921 22922 _triggers.push(self); 22923 22924 if (snap) { 22925 _isObject(snap) || (snap = { 22926 snapTo: snap 22927 }); 22928 "scrollBehavior" in _body.style && gsap.set(isViewport ? [_body, _docEl] : scroller, { 22929 scrollBehavior: "auto" 22930 }); 22931 snapFunc = _isFunction(snap.snapTo) ? snap.snapTo : snap.snapTo === "labels" ? _getClosestLabel(animation) : snap.snapTo === "labelsDirectional" ? _getLabelAtDirection(animation) : gsap.utils.snap(snap.snapTo); 22932 snapDurClamp = snap.duration || { 22933 min: 0.1, 22934 max: 2 22935 }; 22936 snapDurClamp = _isObject(snapDurClamp) ? _clamp(snapDurClamp.min, snapDurClamp.max) : _clamp(snapDurClamp, snapDurClamp); 22937 snapDelayedCall = gsap.delayedCall(snap.delay || scrubSmooth / 2 || 0.1, function () { 22938 if (Math.abs(self.getVelocity()) < 10 && !_pointerIsDown && lastSnap !== self.scroll()) { 22939 var totalProgress = animation && !isToggle ? animation.totalProgress() : self.progress, 22940 velocity = (totalProgress - snap2) / (_getTime() - _time2) * 1000 || 0, 22941 change1 = gsap.utils.clamp(-self.progress, 1 - self.progress, _abs(velocity / 2) * velocity / 0.185), 22942 naturalEnd = self.progress + (snap.inertia === false ? 0 : change1), 22943 endValue = _clamp(0, 1, snapFunc(naturalEnd, self)), 22944 scroll = self.scroll(), 22945 endScroll = Math.round(start + endValue * change), 22946 _snap = snap, 22947 onStart = _snap.onStart, 22948 _onInterrupt = _snap.onInterrupt, 22949 _onComplete = _snap.onComplete, 22950 tween = tweenTo.tween; 22951 22952 if (scroll <= end && scroll >= start && endScroll !== scroll) { 22953 if (tween && !tween._initted && tween.data <= Math.abs(endScroll - scroll)) { 22954 return; 22955 } 22956 22957 if (snap.inertia === false) { 22958 change1 = endValue - self.progress; 22959 } 22960 22961 tweenTo(endScroll, { 22962 duration: snapDurClamp(_abs(Math.max(_abs(naturalEnd - totalProgress), _abs(endValue - totalProgress)) * 0.185 / velocity / 0.05 || 0)), 22963 ease: snap.ease || "power3", 22964 data: Math.abs(endScroll - scroll), 22965 onInterrupt: function onInterrupt() { 22966 return snapDelayedCall.restart(true) && _onInterrupt && _onInterrupt(self); 22967 }, 22968 onComplete: function onComplete() { 22969 lastSnap = self.scroll(); 22970 snap1 = snap2 = animation && !isToggle ? animation.totalProgress() : self.progress; 22971 onSnapComplete && onSnapComplete(self); 22972 _onComplete && _onComplete(self); 22973 } 22974 }, scroll, change1 * change, endScroll - scroll - change1 * change); 22975 onStart && onStart(self, tweenTo.tween); 22976 } 22977 } else if (self.isActive) { 22978 snapDelayedCall.restart(true); 22979 } 22980 }).pause(); 22981 } 22982 22983 id && (_ids[id] = self); 22984 trigger = self.trigger = _toArray(trigger || pin)[0]; 22985 pin = pin === true ? trigger : _toArray(pin)[0]; 22986 _isString(toggleClass) && (toggleClass = { 22987 targets: trigger, 22988 className: toggleClass 22989 }); 22990 22991 if (pin) { 22992 pinSpacing === false || pinSpacing === _margin || (pinSpacing = !pinSpacing && _getComputedStyle(pin.parentNode).display === "flex" ? false : _padding); 22993 self.pin = pin; 22994 vars.force3D !== false && gsap.set(pin, {
22995 force3D: true 22996 }); 22997 pinCache = gsap.core.getCache(pin); 22998 22999 if (!pinCache.spacer) { 23000 pinCache.spacer = spacer = _doc.createElement("div"); 23001 spacer.setAttribute("class", "pin-spacer" + (id ? " pin-spacer-" + id : "")); 23002 pinCache.pinState = pinOriginalState = _getState(pin); 23003 } else { 23004 pinOriginalState = pinCache.pinState; 23005 } 23006 23007 self.spacer = spacer = pinCache.spacer; 23008 cs = _getComputedStyle(pin); 23009 spacingStart = cs[pinSpacing + direction.os2]; 23010 pinGetter = gsap.getProperty(pin); 23011 pinSetter = gsap.quickSetter(pin, direction.a, _px); 23012 23013 _swapPinIn(pin, spacer, cs); 23014 23015 pinState = _getState(pin); 23016 } 23017 23018 if (markers) { 23019 markerVars = _isObject(markers) ? _setDefaults(markers, _markerDefaults) : _markerDefaults; 23020 markerStartTrigger = _createMarker("scroller-start", id, scroller, direction, markerVars, 0); 23021 markerEndTrigger = _createMarker("scroller-end", id, scroller, direction, markerVars, 0, markerStartTrigger); 23022 offset = markerStartTrigger["offset" + direction.op.d2]; 23023 markerStart = _createMarker("start", id, scroller, direction, markerVars, offset); 23024 markerEnd = _createMarker("end", id, scroller, direction, markerVars, offset); 23025 23026 if (!useFixedPosition && !(_proxies.length && _getProxyProp(scroller, "fixedMarkers") === true)) { 23027 _makePositionable(isViewport ? _body : scroller); 23028 23029 gsap.set([markerStartTrigger, markerEndTrigger], { 23030 force3D: true 23031 }); 23032 markerStartSetter = gsap.quickSetter(markerStartTrigger, direction.a, _px); 23033 markerEndSetter = gsap.quickSetter(markerEndTrigger, direction.a, _px); 23034 } 23035 } 23036 23037 self.revert = function (revert) { 23038 var r = revert !== false || !self.enabled, 23039 prevRefreshing = _refreshing; 23040 23041 if (r !== self.isReverted) { 23042 if (r) { 23043 self.scroll.rec || (self.scroll.rec = self.scroll()); 23044 prevScroll = Math.max(self.scroll(), self.scroll.rec || 0); 23045 prevProgress = self.progress; 23046 prevAnimProgress = animation && animation.progress(); 23047 } 23048 23049 markerStart && [markerStart, markerEnd, markerStartTrigger, markerEndTrigger].forEach(function (m) { 23050 return m.style.display = r ? "none" : "block"; 23051 }); 23052 r && (_refreshing = 1); 23053 self.update(r); 23054 _refreshing = prevRefreshing; 23055 pin && (r ? _swapPinOut(pin, spacer, pinOriginalState) : (!pinReparent || !self.isActive) && _swapPinIn(pin, spacer, _getComputedStyle(pin), spacerState)); 23056 self.isReverted = r; 23057 } 23058 }; 23059 23060 self.refresh = function (soft, force) { 23061 if ((_refreshing || !self.enabled) && !force) { 23062 return; 23063 } 23064 23065 if (pin && soft && _lastScrollTime) { 23066 _addListener(ScrollTrigger, "scrollEnd", _softRefresh); 23067 23068 return; 23069 } 23070 23071 _refreshing = 1; 23072 scrubTween && scrubTween.pause(); 23073 invalidateOnRefresh && animation && animation.progress(0).invalidate(); 23074 self.isReverted || self.revert(); 23075 23076 var size = getScrollerSize(), 23077 scrollerBounds = getScrollerOffsets(), 23078 max = _maxScroll(scroller, direction), 23079 offset = 0, 23080 otherPinOffset = 0, 23081 parsedEnd = vars.end, 23082 parsedEndTrigger = vars.endTrigger || trigger, 23083 parsedStart = vars.start || (vars.start === 0 || !trigger ? 0 : pin ? "0 0" : "0 100%"), 23084 pinnedContainer = vars.pinnedContainer && _toArray(vars.pinnedContainer)[0], 23085 triggerIndex = trigger && Math.max(0, _triggers.indexOf(self)) || 0, 23086 i = triggerIndex, 23087 cs, 23088 bounds, 23089 scroll, 23090 isVertical, 23091 override, 23092 curTrigger, 23093 curPin, 23094 oppositeScroll, 23095 initted, 23096 revertedPins; 23097 23098 while (i--) { 23099 curTrigger = _triggers[i]; 23100 curTrigger.end || curTrigger.refresh(0, 1) || (_refreshing = 1); 23101 curPin = curTrigger.pin; 23102 23103 if (curPin && (curPin === trigger || curPin === pin) && !curTrigger.isReverted) { 23104 revertedPins || (revertedPins = []); 23105 revertedPins.unshift(curTrigger); 23106 curTrigger.revert(); 23107 } 23108 } 23109 23110 start = _parsePosition(parsedStart, trigger, size, direction, self.scroll(), markerStart, markerStartTrigger, self, scrollerBounds, borderWidth, useFixedPosition, max) || (pin ? -0.001 : 0); 23111 _isFunction(parsedEnd) && (parsedEnd = parsedEnd(self)); 23112 23113 if (_isString(parsedEnd) && !parsedEnd.indexOf("+=")) { 23114 if (~parsedEnd.indexOf(" ")) { 23115 parsedEnd = (_isString(parsedStart) ? parsedStart.split(" ")[0] : "") + parsedEnd; 23116 } else { 23117 offset = _offsetToPx(parsedEnd.substr(2), size); 23118 parsedEnd = _isString(parsedStart) ? parsedStart : start + offset; 23119 parsedEndTrigger = trigger; 23120 } 23121 } 23122 23123 end = Math.max(start, _parsePosition(parsedEnd || (parsedEndTrigger ? "100% 0" : max), parsedEndTrigger, size, direction, self.scroll() + offset, markerEnd, markerEndTrigger, self, scrollerBounds, borderWidth, useFixedPosition, max)) || -0.001; 23124 change = end - start || (start -= 0.01) && 0.001; 23125 offset = 0; 23126 i = triggerIndex; 23127 23128 while (i--) { 23129 curTrigger = _triggers[i]; 23130 curPin = curTrigger.pin; 23131 23132 if (curPin && curTrigger.start - curTrigger._pinPush < start) { 23133 cs = curTrigger.end - curTrigger.start; 23134 (curPin === trigger || curPin === pinnedContainer) && (offset += cs); 23135 curPin === pin && (otherPinOffset += cs); 23136 } 23137 } 23138 23139 start += offset; 23140 end += offset; 23141 self._pinPush = otherPinOffset; 23142 23143 if (markerStart && offset) { 23144 cs = {}; 23145 cs[direction.a] = "+=" + offset; 23146 pinnedContainer && (cs[direction.p] = "-=" + self.scroll()); 23147 gsap.set([markerStart, markerEnd], cs); 23148 } 23149 23150 if (pin) { 23151 cs = _getComputedStyle(pin); 23152 isVertical = direction === _vertical; 23153 scroll = self.scroll(); 23154 pinStart = parseFloat(pinGetter(direction.a)) + otherPinOffset; 23155 !max && end > 1 && ((isViewport ? _body : scroller).style["overflow-" + direction.a] = "scroll"); 23156 23157 _swapPinIn(pin, spacer, cs); 23158
23159 pinState = _getState(pin); 23160 bounds = _getBounds(pin, true); 23161 oppositeScroll = useFixedPosition && _getScrollFunc(scroller, isVertical ? _horizontal : _vertical)(); 23162 23163 if (pinSpacing) { 23164 spacerState = [pinSpacing + direction.os2, change + otherPinOffset + _px]; 23165 spacerState.t = spacer; 23166 i = pinSpacing === _padding ? _getSize(pin, direction) + change + otherPinOffset : 0; 23167 i && spacerState.push(direction.d, i + _px); 23168 23169 _setState(spacerState); 23170 23171 useFixedPosition && self.scroll(prevScroll); 23172 } 23173 23174 if (useFixedPosition) { 23175 override = { 23176 top: bounds.top + (isVertical ? scroll - start : oppositeScroll) + _px, 23177 left: bounds.left + (isVertical ? oppositeScroll : scroll - start) + _px, 23178 boxSizing: "border-box", 23179 position: "fixed" 23180 }; 23181 override[_width] = override["max" + _Width] = Math.ceil(bounds.width) + _px; 23182 override[_height] = override["max" + _Height] = Math.ceil(bounds.height) + _px; 23183 override[_margin] = override[_margin + _Top] = override[_margin + _Right] = override[_margin + _Bottom] = override[_margin + _Left] = "0"; 23184 override[_padding] = cs[_padding]; 23185 override[_padding + _Top] = cs[_padding + _Top]; 23186 override[_padding + _Right] = cs[_padding + _Right]; 23187 override[_padding + _Bottom] = cs[_padding + _Bottom]; 23188 override[_padding + _Left] = cs[_padding + _Left]; 23189 pinActiveState = _copyState(pinOriginalState, override, pinReparent); 23190 } 23191 23192 if (animation) { 23193 initted = animation._initted; 23194 23195 _suppressOverwrites(1); 23196 23197 animation.render(animation.duration(), true, true); 23198 pinChange = pinGetter(direction.a) - pinStart + change + otherPinOffset; 23199 change !== pinChange && pinActiveState.splice(pinActiveState.length - 2, 2); 23200 animation.render(0, true, true); 23201 initted || animation.invalidate(); 23202 23203 _suppressOverwrites(0); 23204 } else { 23205 pinChange = change; 23206 } 23207 } else if (trigger && self.scroll()) { 23208 bounds = trigger.parentNode; 23209 23210 while (bounds && bounds !== _body) { 23211 if (bounds._pinOffset) { 23212 start -= bounds._pinOffset; 23213 end -= bounds._pinOffset; 23214 } 23215 23216 bounds = bounds.parentNode; 23217 } 23218 } 23219 23220 revertedPins && revertedPins.forEach(function (t) { 23221 return t.revert(false); 23222 }); 23223 self.start = start; 23224 self.end = end; 23225 scroll1 = scroll2 = self.scroll(); 23226 scroll1 < prevScroll && self.scroll(prevScroll); 23227 self.revert(false); 23228 _refreshing = 0; 23229 animation && isToggle && animation._initted && animation.progress() !== prevAnimProgress && animation.progress(prevAnimProgress, true).render(animation.time(), true, true); 23230 23231 if (prevProgress !== self.progress) { 23232 scrubTween && animation.totalProgress(prevProgress, true); 23233 self.progress = prevProgress; 23234 self.update(); 23235 } 23236 23237 pin && pinSpacing && (spacer._pinOffset = Math.round(self.progress * pinChange)); 23238 onRefresh && onRefresh(self); 23239 }; 23240 23241 self.getVelocity = function () { 23242 return (self.scroll() - scroll2) / (_getTime() - _time2) * 1000 || 0; 23243 }; 23244 23245 self.update = function (reset, recordVelocity) { 23246 var scroll = self.scroll(), 23247 p = reset ? 0 : (scroll - start) / change, 23248 clipped = p < 0 ? 0 : p > 1 ? 1 : p || 0, 23249 prevProgress = self.progress, 23250 isActive, 23251 wasActive, 23252 toggleState, 23253 action, 23254 stateChanged, 23255 toggled; 23256 23257 if (recordVelocity) { 23258 scroll2 = scroll1; 23259 scroll1 = scroll; 23260 23261 if (snap) { 23262 snap2 = snap1; 23263 snap1 = animation && !isToggle ? animation.totalProgress() : clipped; 23264 } 23265 } 23266 23267 anticipatePin && !clipped && pin && !_refreshing && !_startup && _lastScrollTime && start < scroll + (scroll - scroll2) / (_getTime() - _time2) * anticipatePin && (clipped = 0.0001); 23268 23269 if (clipped !== prevProgress && self.enabled) { 23270 isActive = self.isActive = !!clipped && clipped < 1; 23271 wasActive = !!prevProgress && prevProgress < 1; 23272 toggled = isActive !== wasActive;
23273 stateChanged = toggled || !!clipped !== !!prevProgress; 23274 self.direction = clipped > prevProgress ? 1 : -1; 23275 self.progress = clipped; 23276 23277 if (!isToggle) { 23278 if (scrubTween && !_refreshing && !_startup) { 23279 scrubTween.vars.totalProgress = clipped; 23280 scrubTween.invalidate().restart(); 23281 } else if (animation) { 23282 animation.totalProgress(clipped, !!_refreshing); 23283 } 23284 } 23285 23286 if (pin) { 23287 reset && pinSpacing && (spacer.style[pinSpacing + direction.os2] = spacingStart); 23288 23289 if (!useFixedPosition) { 23290 pinSetter(pinStart + pinChange * clipped); 23291 } else if (stateChanged) { 23292 action = !reset && clipped > prevProgress && end + 1 > scroll && scroll + 1 >= _maxScroll(scroller, direction); 23293 23294 if (pinReparent) { 23295 if (!reset && (isActive || action)) { 23296 var bounds = _getBounds(pin, true), 23297 _offset = scroll - start; 23298 23299 _reparent(pin, _body, bounds.top + (direction === _vertical ? _offset : 0) + _px, bounds.left + (direction === _vertical ? 0 : _offset) + _px); 23300 } else { 23301 _reparent(pin, spacer); 23302 } 23303 } 23304 23305 _setState(isActive || action ? pinActiveState : pinState); 23306 23307 pinChange !== change && clipped < 1 && isActive || pinSetter(pinStart + (clipped === 1 && !action ? pinChange : 0)); 23308 } 23309 } 23310 23311 snap && !tweenTo.tween && !_refreshing && !_startup && snapDelayedCall.restart(true); 23312 toggleClass && (toggled || once && clipped && (clipped < 1 || !_limitCallbacks)) && _toArray(toggleClass.targets).forEach(function (el) { 23313 return el.classList[isActive || once ? "add" : "remove"](toggleClass.className); 23314 }); 23315 onUpdate && !isToggle && !reset && onUpdate(self); 23316 23317 if (stateChanged && !_refreshing) { 23318 toggleState = clipped && !prevProgress ? 0 : clipped === 1 ? 1 : prevProgress === 1 ? 2 : 3; 23319 23320 if (isToggle) { 23321 action = !toggled && toggleActions[toggleState + 1] !== "none" && toggleActions[toggleState + 1] || toggleActions[toggleState]; 23322 23323 if (animation && (action === "complete" || action === "reset" || action in animation)) { 23324 if (action === "complete") { 23325 animation.pause().totalProgress(1); 23326 } else if (action === "reset") { 23327 animation.restart(true).pause(); 23328 } else if (action === "restart") { 23329 animation.restart(true); 23330 } else { 23331 animation[action](); 23332 } 23333 } 23334 23335 onUpdate && onUpdate(self); 23336 } 23337 23338 if (toggled || !_limitCallbacks) { 23339 onToggle && toggled && onToggle(self); 23340 callbacks[toggleState] && callbacks[toggleState](self); 23341 once && (clipped === 1 ? self.kill(false, 1) : callbacks[toggleState] = 0); 23342 23343 if (!toggled) { 23344 toggleState = clipped === 1 ? 1 : 3; 23345 callbacks[toggleState] && callbacks[toggleState](self); 23346 } 23347 } 23348 } else if (isToggle && onUpdate && !_refreshing) { 23349 onUpdate(self); 23350 } 23351 } 23352 23353 if (markerEndSetter) { 23354 markerStartSetter(scroll + (markerStartTrigger._isFlipped ? 1 : 0)); 23355 markerEndSetter(scroll); 23356 } 23357 }; 23358 23359 self.enable = function (reset, refresh) { 23360 if (!self.enabled) { 23361 self.enabled = true; 23362 23363 _addListener(scroller, "resize", _onResize); 23364 23365 _addListener(scroller, "scroll", _onScroll); 23366 23367 onRefreshInit && _addListener(ScrollTrigger, "refreshInit", onRefreshInit); 23368 23369 if (reset !== false) { 23370 self.progress = prevProgress = 0; 23371 scroll1 = scroll2 = lastSnap = self.scroll(); 23372 } 23373 23374 refresh !== false && self.refresh(); 23375 } 23376 }; 23377 23378 self.getTween = function (snap) { 23379 return snap && tweenTo ? tweenTo.tween : scrubTween; 23380 }; 23381 23382 self.disable = function (reset, allowAnimation) { 23383 if (self.enabled) { 23384 reset !== false && self.revert(); 23385 self.enabled = self.isActive = false;
23386 allowAnimation || scrubTween && scrubTween.pause(); 23387 prevScroll = 0; 23388 pinCache && (pinCache.uncache = 1); 23389 onRefreshInit && _removeListener(ScrollTrigger, "refreshInit", onRefreshInit); 23390 23391 if (snapDelayedCall) { 23392 snapDelayedCall.pause(); 23393 tweenTo.tween && tweenTo.tween.kill() && (tweenTo.tween = 0); 23394 } 23395 23396 if (!isViewport) { 23397 var i = _triggers.length; 23398 23399 while (i--) { 23400 if (_triggers[i].scroller === scroller && _triggers[i] !== self) { 23401 return; 23402 } 23403 } 23404 23405 _removeListener(scroller, "resize", _onResize); 23406 23407 _removeListener(scroller, "scroll", _onScroll); 23408 } 23409 } 23410 }; 23411 23412 self.kill = function (revert, allowAnimation) { 23413 self.disable(revert, allowAnimation); 23414 id && delete _ids[id]; 23415 23416 var i = _triggers.indexOf(self); 23417 23418 _triggers.splice(i, 1); 23419 23420 i === _i && _direction > 0 && _i--; 23421 23422 if (animation) { 23423 animation.scrollTrigger = null; 23424 revert && animation.render(-1); 23425 allowAnimation || animation.kill(); 23426 } 23427 23428 markerStart && [markerStart, markerEnd, markerStartTrigger, markerEndTrigger].forEach(function (m) { 23429 return m.parentNode && m.parentNode.removeChild(m); 23430 }); 23431 23432 if (pin) { 23433 pinCache && (pinCache.uncache = 1); 23434 i = 0; 23435 23436 _triggers.forEach(function (t) { 23437 return t.pin === pin && i++; 23438 }); 23439 23440 i || (pinCache.spacer = 0); 23441 } 23442 }; 23443 23444 self.enable(false, false); 23445 !animation || !animation.add || change ? self.refresh() : gsap.delayedCall(0.01, function () { 23446 return start || end || self.refresh(); 23447 }) && (change = 0.01) && (start = end = 0); 23448 }; 23449 23450 ScrollTrigger.register = function register(core) { 23451 if (!_coreInitted) { 23452 gsap = core || _getGSAP(); 23453 23454 if (_windowExists() && window.document) { 23455 _win = window; 23456 _doc = document; 23457 _docEl = _doc.documentElement; 23458 _body = _doc.body; 23459 } 23460 23461 if (gsap) { 23462 _toArray = gsap.utils.toArray; 23463 _clamp = gsap.utils.clamp; 23464 _suppressOverwrites = gsap.core.suppressOverwrites || _passThrough; 23465 gsap.core.globals("ScrollTrigger", ScrollTrigger); 23466 23467 if (_body) { 23468 _raf = _win.requestAnimationFrame || function (f) { 23469 return setTimeout(f, 16); 23470 }; 23471 23472 _addListener(_win, "wheel", _onScroll); 23473 23474 _root = [_win, _doc, _docEl, _body]; 23475 23476 _addListener(_doc, "scroll", _onScroll); 23477 23478 var bodyStyle = _body.style, 23479 border = bodyStyle.borderTop, 23480 bounds; 23481 bodyStyle.borderTop = "1px solid #000"; 23482 bounds = _getBounds(_body); 23483 _vertical.m = Math.round(bounds.top + _vertical.sc()) || 0; 23484 _horizontal.m = Math.round(bounds.left + _horizontal.sc()) || 0; 23485 border ? bodyStyle.borderTop = border : bodyStyle.removeProperty("border-top"); 23486 _syncInterval = setInterval(_sync, 200); 23487 gsap.delayedCall(0.5, function () { 23488 return _startup = 0; 23489 }); 23490 23491 _addListener(_doc, "touchcancel", _passThrough); 23492 23493 _addListener(_body, "touchstart", _passThrough); 23494 23495 _multiListener(_addListener, _doc, "pointerdown,touchstart,mousedown", function () { 23496 return _pointerIsDown = 1; 23497 }); 23498 23499 _multiListener(_addListener, _doc, "pointerup,touchend,mouseup", function () { 23500 return _pointerIsDown = 0; 23501 }); 23502 23503 _transformProp = gsap.utils.checkPrefix("transform"); 23504 23505 _stateProps.push(_transformProp); 23506 23507 _coreInitted = _getTime(); 23508 _resizeDelay = gsap.delayedCall(0.2, _refreshAll).pause(); 23509 _autoRefresh = [_doc, "visibilitychange", function () { 23510 var w = _win.innerWidth, 23511 h = _win.innerHeight; 23512 23513 if (_doc.hidden) { 23514 _prevWidth = w; 23515 _prevHeight = h; 23516 } else if (_prevWidth !== w || _prevHeight !== h) { 23517 _onResize(); 23518 } 23519 }, _doc, "DOMContentLoaded", _refreshAll, _win, "load", function () { 23520 return _lastScrollTime || _refreshAll(); 23521 }, _win, "resize", _onResize]; 23522 23523 _iterateAutoRefresh(_addListener); 23524 } 23525 } 23526 } 23527 23528 return _coreInitted; 23529 }; 23530 23531 ScrollTrigger.defaults = function defaults(config) { 23532 for (var p in config) { 23533 _defaults[p] = config[p]; 23534 } 23535 }; 23536 23537 ScrollTrigger.kill = function kill() { 23538 _enabled = 0; 23539
23540 _triggers.slice(0).forEach(function (trigger) { 23541 return trigger.kill(1); 23542 }); 23543 }; 23544 23545 ScrollTrigger.config = function config(vars) { 23546 "limitCallbacks" in vars && (_limitCallbacks = !!vars.limitCallbacks); 23547 var ms = vars.syncInterval; 23548 ms && clearInterval(_syncInterval) || (_syncInterval = ms) && setInterval(_sync, ms); 23549 23550 if ("autoRefreshEvents" in vars) { 23551 _iterateAutoRefresh(_removeListener) || _iterateAutoRefresh(_addListener, vars.autoRefreshEvents || "none"); 23552 _ignoreResize = (vars.autoRefreshEvents + "").indexOf("resize") === -1; 23553 } 23554 }; 23555 23556 ScrollTrigger.scrollerProxy = function scrollerProxy(target, vars) { 23557 var t = _toArray(target)[0], 23558 i = _scrollers.indexOf(t), 23559 isViewport = _isViewport(t); 23560 23561 if (~i) { 23562 _scrollers.splice(i, isViewport ? 6 : 2); 23563 } 23564 23565 isViewport ? _proxies.unshift(_win, vars, _body, vars, _docEl, vars) : _proxies.unshift(t, vars); 23566 }; 23567 23568 ScrollTrigger.matchMedia = function matchMedia(vars) { 23569 var mq, p, i, func, result; 23570 23571 for (p in vars) { 23572 i = _media.indexOf(p); 23573 func = vars[p]; 23574 _creatingMedia = p; 23575 23576 if (p === "all") { 23577 func(); 23578 } else { 23579 mq = _win.matchMedia(p); 23580 23581 if (mq) { 23582 mq.matches && (result = func()); 23583 23584 if (~i) { 23585 _media[i + 1] = _combineFunc(_media[i + 1], func); 23586 _media[i + 2] = _combineFunc(_media[i + 2], result); 23587 } else { 23588 i = _media.length; 23589 23590 _media.push(p, func, result); 23591 23592 mq.addListener ? mq.addListener(_onMediaChange) : mq.addEventListener("change", _onMediaChange); 23593 } 23594 23595 _media[i + 3] = mq.matches; 23596 } 23597 } 23598 23599 _creatingMedia = 0; 23600 } 23601 23602 return _media; 23603 }; 23604 23605 ScrollTrigger.clearMatchMedia = function clearMatchMedia(query) { 23606 query || (_media.length = 0); 23607 query = _media.indexOf(query); 23608 query >= 0 && _media.splice(query, 4); 23609 }; 23610 23611 return ScrollTrigger; 23612 }(); 23613 ScrollTrigger.version = "3.7.0"; 23614 23615 ScrollTrigger.saveStyles = function (targets) { 23616 return targets ? _toArray(targets).forEach(function (target) { 23617 if (target && target.style) { 23618 var i = _savedStyles.indexOf(target); 23619 23620 i >= 0 && _savedStyles.splice(i, 5); 23621 23622 _savedStyles.push(target, target.style.cssText, target.getBBox && target.getAttribute("transform"), gsap.core.getCache(target), _creatingMedia); 23623 } 23624 }) : _savedStyles; 23625 }; 23626 23627 ScrollTrigger.revert = function (soft, media) { 23628 return _revertAll(!soft, media); 23629 }; 23630 23631 ScrollTrigger.create = function (vars, animation) { 23632 return new ScrollTrigger(vars, animation); 23633 }; 23634 23635 ScrollTrigger.refresh = function (safe) { 23636 return safe ? _onResize() : _refreshAll(true); 23637 }; 23638 23639 ScrollTrigger.update = _updateAll; 23640 23641 ScrollTrigger.maxScroll = function (element, horizontal) { 23642 return _maxScroll(element, horizontal ? _horizontal : _vertical); 23643 }; 23644 23645 ScrollTrigger.getScrollFunc = function (element, horizontal) { 23646 return _getScrollFunc(_toArray(element)[0], horizontal ? _horizontal : _vertical); 23647 }; 23648 23649 ScrollTrigger.getById = function (id) { 23650 return _ids[id]; 23651 }; 23652 23653 ScrollTrigger.getAll = function () { 23654 return _triggers.slice(0); 23655 }; 23656 23657 ScrollTrigger.isScrolling = function () { 23658 return !!_lastScrollTime; 23659 }; 23660 23661 ScrollTrigger.addEventListener = function (type, callback) { 23662 var a = _listeners[type] || (_listeners[type] = []); 23663 ~a.indexOf(callback) || a.push(callback); 23664 }; 23665 23666 ScrollTrigger.removeEventListener = function (type, callback) { 23667 var a = _listeners[type], 23668 i = a && a.indexOf(callback); 23669 i >= 0 && a.splice(i, 1); 23670 }; 23671 23672 ScrollTrigger.batch = function (targets, vars) { 23673 var result = [], 23674 varsCopy = {}, 23675 interval = vars.interval || 0.016, 23676 batchMax = vars.batchMax || 1e9, 23677 proxyCallback = function proxyCallback(type, callback) { 23678 var elements = [], 23679 triggers = [], 23680 delay = gsap.delayedCall(interval, function () { 23681 callback(elements, triggers); 23682 elements = []; 23683 triggers = []; 23684 }).pause(); 23685 return function (self) { 23686 elements.length || delay.restart(true); 23687 elements.push(self.trigger); 23688 triggers.push(self); 23689 batchMax <= elements.length && delay.progress(1); 23690 }; 23691 }, 23692 p; 23693 23694 for (p in vars) { 23695 varsCopy[p] = p.substr(0, 2) === "on" && _isFunction(vars[p]) && p !== "onRefreshInit" ? proxyCallback(p, vars[p]) : vars[p]; 23696 } 23697 23698 if (_isFunction(batchMax)) { 23699 batchMax = batchMax(); 23700 23701 _addListener(ScrollTrigger, "refresh", function () { 23702 return batchMax = vars.batchMax(); 23703 }); 23704 } 23705
23706 _toArray(targets).forEach(function (target) { 23707 var config = {}; 23708 23709 for (p in varsCopy) { 23710 config[p] = varsCopy[p]; 23711 } 23712 23713 config.trigger = target; 23714 result.push(ScrollTrigger.create(config)); 23715 }); 23716 23717 return result; 23718 }; 23719 23720 ScrollTrigger.sort = function (func) { 23721 return _triggers.sort(func || function (a, b) { 23722 return (a.vars.refreshPriority || 0) * -1e6 + a.start - (b.start + (b.vars.refreshPriority || 0) * -1e6); 23723 }); 23724 }; 23725 23726 _getGSAP() && gsap.registerPlugin(ScrollTrigger); 23727 23728 exports.ScrollTrigger = ScrollTrigger; 23729 exports.default = ScrollTrigger; 23730 23731 Object.defineProperty(exports, '__esModule', { value: true }); 23732 23733}))); 23734 23735/*SIGUIENTE LIBRERIA*/ 23736/*! 23737 * ScrollTrigger 3.7.0 23738 * https://greensock.com 23739 * 23740 * @license Copyright 2021, GreenSock. All rights reserved. 23741 * Subject to the terms at https://greensock.com/standard-license or for Club GreenSock members, the agreement issued with that membership. 23742 * @author: Jack Doyle, [email protected] 23743 */ 23744 23745!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e=e||self).window=e.window||{})}(this,function(e){"use strict";function J(e){return e}function K(e){return Math.round(1e5*e)/1e5||0}function L(){return"undefined"!=typeof window}function M(){return Se||L()&&(Se=window.gsap)&&Se.registerPlugin&&Se}function N(e){return!!~i.indexOf(e)}function O(e,t){return~Fe.indexOf(e)&&Fe[Fe.indexOf(e)+1][t]}function P(t,e){var r=e.s,n=e.sc,i=h.indexOf(t),o=n===it.sc?1:2;return~i||(i=h.push(t)-1),h[i+o]||(h[i+o]=O(t,r)||(N(t)?n:function(e){return arguments.length?t[r]=e:t[r]}))}function Q(e){return O(e,"getBoundingClientRect")||(N(e)?function(){return dt.width=Me.innerWidth,dt.height=Me.innerHeight,dt}:function(){return ot(e)})}function T(e,t){var r=t.s,n=t.d2,i=t.d,o=t.a;return(r="scroll"+n)&&(o=O(e,r))?o()-Q(e)()[i]:N(e)?Math.max(_e[r],Pe[r])-(Me["inner"+n]||_e["client"+n]||Pe["client"+n]):e[r]-e["offset"+n]}function U(e,t){for(var r=0;r<p.length;r+=3)t&&!~t.indexOf(p[r+1])||e(p[r],p[r+1],p[r+2])}function V(e){return"string"==typeof e}function W(e){return"function"==typeof e}function X(e){return"number"==typeof e}function Y(e){return"object"==typeof e}function Z(e){return W(e)&&e()}function $(r,n){return function(){var e=Z(r),t=Z(n);return function(){Z(e),Z(t)}}}function ta(e){return Me.getComputedStyle(e)}function va(e,t){for(var r in t)r in e||(e[r]=t[r]);return e}function xa(e,t){var r=t.d2;return e["offset"+r]||e["client"+r]||0}function ya(e){var t,r=[],n=e.labels,i=e.duration();for(t in n)r.push(n[t]/i);return r}function Ba(t,r,e,n){return e.split(",").forEach(function(e){return t(r,e,n)})}function Ca(e,t,r){return e.addEventListener(t,r,{passive:!0})}function Da(e,t,r){return e.removeEventListener(t,r)}function Ha(e,t){if(V(e)){var r=e.indexOf("="),n=~r?(e.charAt(r-1)+1)*parseFloat(e.substr(r+1)):0;~r&&(e.indexOf("%")>r&&(n*=t/100),e=e.substr(0,r-1)),e=n+(e in w?w[e]*t:~e.indexOf("%")?parseFloat(e)*t/100:parseFloat(e)||0)}return e}function Ia(e,t,r,n,i,o,a){var s=i.startColor,l=i.endColor,c=i.fontSize,f=i.indent,u=i.fontWeight,d=ke.createElement("div"),p=N(r)||"fixed"===O(r,"pinType"),g=-1!==e.indexOf("scroller"),h=p?Pe:r,v=-1!==e.indexOf("start"),m=v?s:l,b="border-color:"+m+";font-size:"+c+";color:"+m+";font-weight:"+u+";pointer-events:none;white-space:nowrap;font-family:sans-serif,Arial;z-index:1000;padding:4px 8px;border-width:0;border-style:solid;";return b+="position:"+(g&&p?"fixed;":"absolute;"),!g&&p||(b+=(n===it?x:y)+":"+(o+parseFloat(f))+"px;"),a&&(b+="box-sizing:border-box;text-align:left;width:"+a.offsetWidth+"px;"),d._isStart=v,d.setAttribute("class","gsap-marker-"+e),d.style.cssText=b,d.innerText=t||0===t?e+"-"+t:e,h.children[0]?h.insertBefore(d,h.children[0]):h.appendChild(d),d._offset=d["offset"+n.op.d2],C(d,0,n,v),d}function Ma(){return l=l||s(D)}function Na(){l||(l=s(D),Ue||E("scrollStart"),Ue=He())}function Oa(){return!Be&&!r&&!ke.fullscreenElement&&a.restart(!0)}function Ua(e){var t,r=Se.ticker.frame,n=[],i=0;if(g!==r||De){for(I();i<_.length;
23745i+=4)(t=Me.matchMedia(_[i]).matches)!==_[i+3]&&((_[i+3]=t)?n.push(i):I(1,_[i])||W(_[i+2])&&_[i+2]());for(B(),i=0;i<n.length;i++)t=n[i],Ve=_[t],_[t+2]=_[t+1](e);Ve=0,o&&R(0,1),g=r,E("matchMedia")}}function Va(){return Da(G,"scrollEnd",Va)||R(!0)}function fb(e,t,r,n){if(e.parentNode!==t){for(var i,o=F.length,a=t.style,s=e.style;o--;)a[i=F[o]]=r[i];a.position="absolute"===r.position?"absolute":"relative","inline"===r.display&&(a.display="inline-block"),s[y]=s[x]="auto",a.overflow="visible",a.boxSizing="border-box",a[Je]=xa(e,nt)+rt,a[je]=xa(e,it)+rt,a[Ge]=s[et]=s.top=s[m]="0",ut(n),s[Je]=s.maxWidth=r[Je],s[je]=s.maxHeight=r[je],s[Ge]=r[Ge],e.parentNode.insertBefore(t,e),t.appendChild(e)}}function ib(e){for(var t=H.length,r=e.style,n=[],i=0;i<t;i++)n.push(H[i],r[H[i]]);return n.t=e,n}function lb(e,t,r,n,i,o,a,s,l,c,f,u){if(W(e)&&(e=e(s)),V(e)&&"max"===e.substr(0,3)&&(e=u+("="===e.charAt(4)?Ha("0"+e.substr(3),r):0)),X(e))a&&C(a,r,n,!0);else{W(t)&&(t=t(s));var d,p,g,h=Ee(t)[0]||Pe,v=ot(h)||{},m=e.split(" ");v&&(v.left||v.top)||"none"!==ta(h).display||(g=h.style.display,h.style.display="block",v=ot(h),g?h.style.display=g:h.style.removeProperty("display")),d=Ha(m[0],v[n.d]),p=Ha(m[1]||"0",r),e=v[n.p]-l[n.p]-c+d+i-p,a&&C(a,p,n,r-p<20||a._isStart&&20<p),r-=r-p}if(o){var b=e+r,x=o._isStart;u="scroll"+n.d2,C(o,b,n,x&&20<b||!x&&(f?Math.max(Pe[u],_e[u]):o.parentNode[u])<=b+1),f&&(l=ot(a),f&&(o.style[n.op.p]=l[n.op.p]-n.op.m-o._offset+rt))}return Math.round(e)}function nb(e,t,r,n){if(e.parentNode!==t){var i,o,a=e.style;if(t===Pe){for(i in e._stOrig=a.cssText,o=ta(e))+i||q.test(i)||!o[i]||"string"!=typeof a[i]||"0"===i||(a[i]=o[i]);a.top=r,a.left=n}else a.cssText=e._stOrig;Se.core.getCache(e).uncache=1,t.appendChild(e)}}function ob(l,e){function Xe(e,t,r,n,i){var o=Xe.tween,a=t.onComplete,s={};return o&&o.kill(),c=Math.round(r),t[d]=e,(t.modifiers=s)[d]=function(e){return(e=K(u()))!==c&&e!==f&&2<Math.abs(e-c)?(o.kill(),Xe.tween=0):e=r+n*o.ratio+i*o.ratio*o.ratio,f=c,c=K(e)},t.onComplete=function(){Xe.tween=0,a&&a.call(o)},o=Xe.tween=Se.to(l,t)}var c,f,u=P(l,e),d="_scroll"+e.p2;return l[d]=u,l.addEventListener("wheel",function(){return Xe.tween&&Xe.tween.kill()&&(Xe.tween=0)}),Xe}var Se,o,Me,ke,_e,Pe,i,a,s,l,Ee,Ne,Ae,c,Be,Ie,f,Le,u,d,p,Re,ze,r,We,Ve,g,De=1,Fe=[],h=[],He=Date.now,v=He(),Ue=0,Ye=1,Ze=Math.abs,t="scrollLeft",n="scrollTop",m="left",x="right",y="bottom",Je="width",je="height",qe="Right",$e="Left",Ke="Top",Qe="Bottom",Ge="padding",et="margin",tt="Width",b="Height",rt="px",nt={s:t,p:m,p2:$e,os:x,os2:qe,d:Je,d2:tt,a:"x",sc:function sc(e){return arguments.length?Me.scrollTo(e,it.sc()):Me.pageXOffset||ke[t]||_e[t]||Pe[t]||0}},it={s:n,p:"top",p2:Ke,os:y,os2:Qe,d:je,d2:b,a:"y",op:nt,sc:function sc(e){return arguments.length?Me.scrollTo(nt.sc(),e):Me.pageYOffset||ke[n]||_e[n]||Pe[n]||0}},ot=function _getBounds(e,t){var r=t&&"matrix(1, 0, 0, 1, 0, 0)"!==ta(e)[f]&&Se.to(e,{x:0,y:0,xPercent:0,yPercent:0,rotation:0,rotationX:0,rotationY:0,scale:1,skewX:0,skewY:0}).progress(1),n=e.getBoundingClientRect();return r&&r.progress(0).kill(),n},at={startColor:"green",endColor:"red",indent:0,fontSize:"16px",fontWeight:"normal"},st={toggleActions:"play",anticipatePin:0},w={top:0,left:0,center:.5,bottom:1,right:1},C=function _positionMarker(e,t,r,n){var i={display:"block"},o=r[n?"os2":"p2"],a=r[n?"p2":"os2"];e._isFlipped=n,i[r.a+"Percent"]=n?-100:0,i[r.a]=n?"1px":0,i["border"+o+tt]=1,i["border"+a+tt]=0,i[r.p]=t+"px",Se.set(e,i)},lt=[],ct={},S={},k=[],_=[],E=function _dispatch(e){return S[e]&&S[e].map(function(e){return e()})||k},A=[],B=function _revertRecorded(e){for(var t=0;t<A.length;t+=5)e&&A[t+4]!==e||(A[t].style.cssText=A[t+1],A[t].getBBox&&A[t].setAttribute("transform",A[t+2]||""),A[t+3].uncache=1)},I=function _revertAll(e,t){var r;for(Le=0;Le<lt.length;Le++)r=lt[Le],t&&r.media!==t||(e?r.kill(1):r.revert());t&&B(t),t||E("revert")},R=function _refreshAll(e,t){if(!Ue||e){var r=E("refreshInit");Re&&G.sort(),t||I(),lt.forEach(function(e){return e.refresh()}),r.forEach(function(e){return e&&e.render&&e.render(-1)}),h.forEach(function(e){return"function"==typeof e&&(e.rec=0)}),a.pause(),E("refresh")}else Ca(G,"scrollEnd",Va)}
23745,z=0,ft=1,D=function _updateAll(){var e=lt.length,t=He(),r=50<=t-v,n=e&<[0].scroll();if(ft=n<z?-1:1,z=n,r&&(Ue&&!Ie&&200<t-Ue&&(Ue=0,E("scrollEnd")),Ae=v,v=t),ft<0){for(Le=e;0<Le--;)lt[Le]&<[Le].update(0,r);ft=1}else for(Le=0;Le<e;Le++)lt[Le]&<[Le].update(0,r);l=0},F=[m,"top",y,x,et+Qe,et+qe,et+Ke,et+$e,"display","flexShrink","float","zIndex","grid-column-start","grid-column-end","grid-row-start","grid-row-end","grid-area","justify-self","align-self","place-self"],H=F.concat([Je,je,"boxSizing","max"+tt,"max"+b,"position",et,Ge,Ge+Ke,Ge+qe,Ge+Qe,Ge+$e]),j=/([A-Z])/g,ut=function _setState(e){if(e){var t,r,n=e.t.style,i=e.length,o=0;for((e.t._gsap||Se.core.getCache(e.t)).uncache=1;o<i;o+=2)r=e[o+1],t=e[o],r?n[t]=r:n[t]&&n.removeProperty(t.replace(j,"-$1").toLowerCase())}},dt={left:0,top:0},q=/(?:webkit|moz|length|cssText|inset)/i;nt.op=it;var G=(ScrollTrigger.prototype.init=function init(S,M){if(this.progress=this.start=0,this.vars&&this.kill(1),Ye){var p,n,u,k,_,E,A,B,I,L,R,e,z,D,F,H,U,t,Z,g,j,q,h,$,v,m,r,b,x,K,i,d,y,G,ee,te,re=(S=va(V(S)||X(S)||S.nodeType?{trigger:S}:S,st)).horizontal?nt:it,w=S.onUpdate,C=S.toggleClass,o=S.id,ne=S.onToggle,ie=S.onRefresh,a=S.scrub,oe=S.trigger,ae=S.pin,se=S.pinSpacing,le=S.invalidateOnRefresh,ce=S.anticipatePin,s=S.onScrubComplete,fe=S.onSnapComplete,ue=S.once,de=S.snap,pe=S.pinReparent,ge=!a&&0!==a,he=Ee(S.scroller||Me)[0],l=Se.core.getCache(he),ve=N(he),me="pinType"in S?"fixed"===S.pinType:ve||"fixed"===O(he,"pinType"),be=[S.onEnter,S.onLeave,S.onEnterBack,S.onLeaveBack],xe=ge&&S.toggleActions.split(" "),c="markers"in S?S.markers:st.markers,ye=ve?0:parseFloat(ta(he)["border"+re.p2+tt])||0,we=this,f=S.onRefreshInit&&function(){return S.onRefreshInit(we)},Ce=function _getSizeFunc(e,t,r){var n=r.d,i=r.d2,o=r.a;return(o=O(e,"getBoundingClientRect"))?function(){return o()[n]}:function(){return(t?Me["inner"+i]:e["client"+i])||0}}(he,ve,re),Te=function _getOffsetsFunc(e,t){return!t||~Fe.indexOf(e)?Q(e):function(){return dt}}(he,ve),Oe=0;we.media=Ve,ce*=45,we.scroller=he,we.scroll=P(he,re),k=we.scroll(),we.vars=S,M=M||S.animation,"refreshPriority"in S&&(Re=1),l.tweenScroll=l.tweenScroll||{top:ob(he,it),left:ob(he,nt)},we.tweenTo=p=l.tweenScroll[re.p],M&&(M.vars.lazy=!1,M._initted||!1!==M.vars.immediateRender&&!1!==S.immediateRender&&M.render(0,!0,!0),we.animation=M.pause(),M.scrollTrigger=we,(i=X(a)&&a)&&(K=Se.to(M,{ease:"power3",duration:i,onComplete:function onComplete(){return s&&s(we)}})),b=0,o=o||M.vars.id),lt.push(we),de&&(Y(de)||(de={snapTo:de}),"scrollBehavior"in Pe.style&&Se.set(ve?[Pe,_e]:he,{scrollBehavior:"auto"}),u=W(de.snapTo)?de.snapTo:"labels"===de.snapTo?function _getClosestLabel(t){return function(e){return Se.utils.snap(ya(t),e)}}(M):"labelsDirectional"===de.snapTo?function _getLabelAtDirection(i){return function(e,t){var r,n=ya(i);if(n.sort(function(e,t){return e-t}),0<t.direction){for(e-=1e-4,r=0;r<n.length;r++)if(n[r]>=e)return n[r];return n.pop()}for(r=n.length,e+=1e-4;r--;)if(n[r]<=e)return n[r];return n[0]}}(M):Se.utils.snap(de.snapTo),d=de.duration||{min:.1,max:2},d=Y(d)?Ne(d.min,d.max):Ne(d,d),y=Se.delayedCall(de.delay||i/2||.1,function(){if(Math.abs(we.getVelocity())<10&&!Ie&&Oe!==we.scroll()){var e=M&&!ge?M.totalProgress():we.progress,t=(e-x)/(He()-Ae)*1e3||0,r=Se.utils.clamp(-we.progress,1-we.progress,Ze(t/2)*t/.185),n=we.progress+(!1===de.inertia?0:r),i=Ne(0,1,u(n,we)),o=we.scroll(),a=Math.round(E+i*z),s=de.onStart,l=de.onInterrupt,c=de.onComplete,f=p.tween;if(o<=A&&E<=o&&a!==o){if(f&&!f._initted&&f.data<=Math.abs(a-o))return;!1===de.inertia&&(r=i-we.progress),p(a,{duration:d(Ze(.185*Math.max(Ze(n-e),Ze(i-e))/t/.05||0)),ease:de.ease||"power3",data:Math.abs(a-o),onInterrupt:function onInterrupt(){return y.restart(!0)&&l&&l(we)},onComplete:function onComplete(){Oe=we.scroll(),b=x=M&&!ge?M.totalProgress():we.progress,fe&&fe(we),c&&c(we)}},o,r*z,a-o-r*z),s&&s(we,p.tween)}}else we.isActive&&y.restart(!0)}).pause()),o&&(ct[o]=we),oe=we.trigger=Ee(oe||ae)[0],ae=!0===ae?oe:Ee(ae)[0],V(C)&&(C={targets:oe,className:C}),ae&&(!1===se||se===et||(se=!(!se&&"flex"===ta(ae.parentNode).display)&&Ge),we.pin=ae,!1!==S.force3D&&Se.set(ae,{force3D:!0}),(n=Se.core.getCache(ae)).spacer?D=n.pinState:(n.spacer=U=ke.createElement("div"),U.setAttribute("class","pin-spacer"+(o?" pin-spacer-"+o:"")),n.pinState=D=ib(ae)),we.spacer=U=n.spacer,r=ta(ae),h=r[se+re.os2],Z=Se.getProperty(ae),g=Se.quickSetter(ae,re.a,rt),fb(ae,U,r),H=ib(ae)),c&&(e=Y(c)?va(c,at):at,L=Ia("scroller-start",o,he,re,e,0),R=Ia("scroller-end",o,he,re,e,0,L),t=L["offset"+re.o
23745p.d2],B=Ia("start",o,he,re,e,t),I=Ia("end",o,he,re,e,t),me||Fe.length&&!0===O(he,"fixedMarkers")||(function _makePositionable(e){var t=ta(e).position;e.style.position="absolute"===t||"fixed"===t?t:"relative"}(ve?Pe:he),Se.set([L,R],{force3D:!0}),v=Se.quickSetter(L,re.a,rt),m=Se.quickSetter(R,re.a,rt))),we.revert=function(e){var t=!1!==e||!we.enabled,r=Be;t!==we.isReverted&&(t&&(we.scroll.rec||(we.scroll.rec=we.scroll()),ee=Math.max(we.scroll(),we.scroll.rec||0),G=we.progress,te=M&&M.progress()),B&&[B,I,L,R].forEach(function(e){return e.style.display=t?"none":"block"}),t&&(Be=1),we.update(t),Be=r,ae&&(t?function _swapPinOut(e,t,r){if(ut(r),e.parentNode===t){var n=t.parentNode;n&&(n.insertBefore(e,t),n.removeChild(t))}}(ae,U,D):pe&&we.isActive||fb(ae,U,ta(ae),$)),we.isReverted=t)},we.refresh=function(e,t){if(!Be&&we.enabled||t)if(ae&&e&&Ue)Ca(ScrollTrigger,"scrollEnd",Va);else{Be=1,K&&K.pause(),le&&M&&M.progress(0).invalidate(),we.isReverted||we.revert();for(var r,n,i,o,a,s,l,c,f,u,d=Ce(),p=Te(),g=T(he,re),h=0,v=0,m=S.end,b=S.endTrigger||oe,x=S.start||(0!==S.start&&oe?ae?"0 0":"0 100%":0),y=S.pinnedContainer&&Ee(S.pinnedContainer)[0],w=oe&&Math.max(0,lt.indexOf(we))||0,C=w;C--;)(s=lt[C]).end||s.refresh(0,1)||(Be=1),!(l=s.pin)||l!==oe&&l!==ae||s.isReverted||((u=u||[]).unshift(s),s.revert());for(E=lb(x,oe,d,re,we.scroll(),B,L,we,p,ye,me,g)||(ae?-.001:0),W(m)&&(m=m(we)),V(m)&&!m.indexOf("+=")&&(~m.indexOf(" ")?m=(V(x)?x.split(" ")[0]:"")+m:(h=Ha(m.substr(2),d),m=V(x)?x:E+h,b=oe)),A=Math.max(E,lb(m||(b?"100% 0":g),b,d,re,we.scroll()+h,I,R,we,p,ye,me,g))||-.001,z=A-E||(E-=.01)&&.001,h=0,C=w;C--;)(l=(s=lt[C]).pin)&&s.start-s._pinPush<E&&(r=s.end-s.start,l!==oe&&l!==y||(h+=r),l===ae&&(v+=r));if(E+=h,A+=h,we._pinPush=v,B&&h&&((r={})[re.a]="+="+h,y&&(r[re.p]="-="+we.scroll()),Se.set([B,I],r)),ae)r=ta(ae),o=re===it,i=we.scroll(),j=parseFloat(Z(re.a))+v,!g&&1<A&&((ve?Pe:he).style["overflow-"+re.a]="scroll"),fb(ae,U,r),H=ib(ae),n=ot(ae,!0),c=me&&P(he,o?nt:it)(),se&&(($=[se+re.os2,z+v+rt]).t=U,(C=se===Ge?xa(ae,re)+z+v:0)&&$.push(re.d,C+rt),ut($),me&&we.scroll(ee)),me&&((a={top:n.top+(o?i-E:c)+rt,left:n.left+(o?c:i-E)+rt,boxSizing:"border-box",position:"fixed"})[Je]=a.maxWidth=Math.ceil(n.width)+rt,a[je]=a.maxHeight=Math.ceil(n.height)+rt,a[et]=a[et+Ke]=a[et+qe]=a[et+Qe]=a[et+$e]="0",a[Ge]=r[Ge],a[Ge+Ke]=r[Ge+Ke],a[Ge+qe]=r[Ge+qe],a[Ge+Qe]=r[Ge+Qe],a[Ge+$e]=r[Ge+$e],F=function _copyState(e,t,r){for(var n,i=[],o=e.length,a=r?8:0;a<o;a+=2)n=e[a],i.push(n,n in t?t[n]:e[a+1]);return i.t=e.t,i}(D,a,pe)),M?(f=M._initted,ze(1),M.render(M.duration(),!0,!0),q=Z(re.a)-j+z+v,z!==q&&F.splice(F.length-2,2),M.render(0,!0,!0),f||M.invalidate(),ze(0)):q=z;else if(oe&&we.scroll())for(n=oe.parentNode;n&&n!==Pe;)n._pinOffset&&(E-=n._pinOffset,A-=n._pinOffset),n=n.parentNode;u&&u.forEach(function(e){return e.revert(!1)}),we.start=E,we.end=A,(k=_=we.scroll())<ee&&we.scroll(ee),we.revert(!1),Be=0,M&&ge&&M._initted&&M.progress()!==te&&M.progress(te,!0).render(M.time(),!0,!0),G!==we.progress&&(K&&M.totalProgress(G,!0),we.progress=G,we.update()),ae&&se&&(U._pinOffset=Math.round(we.progress*q)),ie&&ie(we)}},we.getVelocity=function(){return(we.scroll()-_)/(He()-Ae)*1e3||0},we.update=function(e,t){var r,n,i,o,a,s=we.scroll(),l=e?0:(s-E)/z,c=l<0?0:1<l?1:l||0,f=we.progress;if(t&&(_=k,k=s,de&&(x=b,b=M&&!ge?M.totalProgress():c)),ce&&!c&&ae&&!Be&&!De&&Ue&&E<s+(s-_)/(He()-Ae)*ce&&(c=1e-4),c!==f&&we.enabled){if(o=(a=(r=we.isActive=!!c&&c<1)!=(!!f&&f<1))||!!c!=!!f,we.direction=f<c?1:-1,we.progress=c,ge||(!K||Be||De?M&&M.totalProgress(c,!!Be):(K.vars.totalProgress=c,K.invalidate().restart())),ae)if(e&&se&&(U.style[se+re.os2]=h),me){if(o){if(i=!e&&f<c&&s<A+1&&s+1>=T(he,re),pe)if(e||!r&&!i)nb(ae,U);else{var u=ot(ae,!0),d=s-E;nb(ae,Pe,u.top+(re===it?d:0)+rt,u.left+(re===it?0:d)+rt)}ut(r||i?F:H),q!==z&&c<1&&r||g(j+(1!==c||i?0:q))}}else g(j+q*c);!de||p.tween||Be||De||y.restart(!0),C&&(a||ue&&c&&(c<1||!We))&&Ee(C.targets).forEach(function(e){return e.classList[r||ue?"add":"remove"](C.className)}),!w||ge||e||w(we),o&&!Be?(n=c&&!f?0:1===c?1:1===f?2:3,ge&&(i=!a&&"none"!==xe[n+1]&&xe[n+1]||xe[n],M&&("complete"===i||"reset"===i||i in M)&&("complete"===i?M.pause().totalProgress(1):"reset"===i?M.restart(!0).pause():"restart"===i?M.restart(!0):M[i]()),w&&w(we)),!a&&We||(ne&&a&&ne(we),be[n]&&be[n](we),ue&&(1===c?we.kill(!1,1):be[n]=0),a||be[n=1===c?1:3]&&be[n](we))):ge&&w&&!Be&&w(we)}m&&(v(s+(L._isFlipped?1:0)),m(s))},we.enable=function(e,t){we.enabled||(we.enabled=!0,Ca(he,"resize",Oa),Ca(he,"scroll",Na),f&&Ca(ScrollTrigger,"refreshInit",f),!1!==e&&(we.progress=G=0,k=_=Oe=we.scroll()),!1!==t&&we.refresh())},we.getTween=function(e){return e&&p?p.tween:K},we.disable=function(e,t){if(we.enabled&&(!1!==e&&we.revert(),we.enabled=we.isActive=!1,t||K&&K.pause(),ee=0,n&&(n.uncache=1),f&&Da(ScrollTrigger,"refreshInit",f),y&&(y.pause(),p.tween&&p.tween.kill()&&(p.tween=0)),!ve)){for(var r=lt.length;r--;)if(lt[r].scroller===he&<[r]!==we)return;Da(he,"resize",Oa),Da(he,"scroll",Na)}},we.kill=function(e,t){we.disable(e,t),o&&delete ct[o];var r=lt.indexOf(we);lt.splice(r,1),r===Le&&0<ft&&Le--,M&&(M.scrollTrigger=null,e&&M.render(-1),t||M.kill()),B&&[B,I,L,R].forEac
23745h(function(e){return e.parentNode&&e.parentNode.removeChild(e)}),ae&&(n&&(n.uncache=1),r=0,lt.forEach(function(e){return e.pin===ae&&r++}),r||(n.spacer=0))},we.enable(!1,!1),M&&M.add&&!z?Se.delayedCall(.01,function(){return E||A||we.refresh()})&&(z=.01)&&(E=A=0):we.refresh()}else this.update=this.refresh=this.kill=J},ScrollTrigger.register=function register(e){if(!o&&(Se=e||M(),L()&&window.document&&(Me=window,ke=document,_e=ke.documentElement,Pe=ke.body),Se&&(Ee=Se.utils.toArray,Ne=Se.utils.clamp,ze=Se.core.suppressOverwrites||J,Se.core.globals("ScrollTrigger",ScrollTrigger),Pe))){s=Me.requestAnimationFrame||function(e){return setTimeout(e,16)},Ca(Me,"wheel",Na),i=[Me,ke,_e,Pe],Ca(ke,"scroll",Na);var t,r=Pe.style,n=r.borderTop;r.borderTop="1px solid #000",t=ot(Pe),it.m=Math.round(t.top+it.sc())||0,nt.m=Math.round(t.left+nt.sc())||0,n?r.borderTop=n:r.removeProperty("border-top"),c=setInterval(Ma,200),Se.delayedCall(.5,function(){return De=0}),Ca(ke,"touchcancel",J),Ca(Pe,"touchstart",J),Ba(Ca,ke,"pointerdown,touchstart,mousedown",function(){return Ie=1}),Ba(Ca,ke,"pointerup,touchend,mouseup",function(){return Ie=0}),f=Se.utils.checkPrefix("transform"),H.push(f),o=He(),a=Se.delayedCall(.2,R).pause(),p=[ke,"visibilitychange",function(){var e=Me.innerWidth,t=Me.innerHeight;ke.hidden?(u=e,d=t):u===e&&d===t||Oa()},ke,"DOMContentLoaded",R,Me,"load",function(){return Ue||R()},Me,"resize",Oa],U(Ca)}return o},ScrollTrigger.defaults=function defaults(e){for(var t in e)st[t]=e[t]},ScrollTrigger.kill=function kill(){Ye=0,lt.slice(0).forEach(function(e){return e.kill(1)})},ScrollTrigger.config=function config(e){"limitCallbacks"in e&&(We=!!e.limitCallbacks);var t=e.syncInterval;t&&clearInterval(c)||(c=t)&&setInterval(Ma,t),"autoRefreshEvents"in e&&(U(Da)||U(Ca,e.autoRefreshEvents||"none"),r=-1===(e.autoRefreshEvents+"").indexOf("resize"))},ScrollTrigger.scrollerProxy=function scrollerProxy(e,t){var r=Ee(e)[0],n=h.indexOf(r),i=N(r);~n&&h.splice(n,i?6:2),i?Fe.unshift(Me,t,Pe,t,_e,t):Fe.unshift(r,t)},ScrollTrigger.matchMedia=function matchMedia(e){var t,r,n,i,o;for(r in e)n=_.indexOf(r),i=e[r],"all"===(Ve=r)?i():(t=Me.matchMedia(r))&&(t.matches&&(o=i()),~n?(_[n+1]=$(_[n+1],i),_[n+2]=$(_[n+2],o)):(n=_.length,_.push(r,i,o),t.addListener?t.addListener(Ua):t.addEventListener("change",Ua)),_[n+3]=t.matches),Ve=0;return _},ScrollTrigger.clearMatchMedia=function clearMatchMedia(e){e||(_.length=0),0<=(e=_.indexOf(e))&&_.splice(e,4)},ScrollTrigger);function ScrollTrigger(e,t){o||ScrollTrigger.register(Se)||console.warn("Please gsap.registerPlugin(ScrollTrigger)"),this.init(e,t)}G.version="3.7.0",G.saveStyles=function(e){return e?Ee(e).forEach(function(e){if(e&&e.style){var t=A.indexOf(e);0<=t&&A.splice(t,5),A.push(e,e.style.cssText,e.getBBox&&e.getAttribute("transform"),Se.core.getCache(e),Ve)}}):A},G.revert=function(e,t){return I(!e,t)},G.create=function(e,t){return new G(e,t)},G.refresh=function(e){return e?Oa():R(!0)},G.update=D,G.maxScroll=function(e,t){return T(e,t?nt:it)},G.getScrollFunc=function(e,t){return P(Ee(e)[0],t?nt:it)},G.getById=function(e){return ct[e]},G.getAll=function(){return lt.slice(0)},G.isScrolling=function(){return!!Ue},G.addEventListener=function(e,t){var r=S[e]||(S[e]=[]);~r.indexOf(t)||r.push(t)},G.removeEventListener=function(e,t){var r=S[e],n=r&&r.indexOf(t);0<=n&&r.splice(n,1)},G.batch=function(e,t){function Hi(e,t){var r=[],n=[],i=Se.delayedCall(o,function(){t(r,n),r=[],n=[]}).pause();return function(e){r.length||i.restart(!0),r.push(e.trigger),n.push(e),a<=r.length&&i.progress(1)}}var r,n=[],i={},o=t.interval||.016,a=t.batchMax||1e9;for(r in t)i[r]="on"===r.substr(0,2)&&W(t[r])&&"onRefreshInit"!==r?Hi(0,t[r]):t[r];return W(a)&&(a=a(),Ca(G,"refresh",function(){return a=t.batchMax()})),Ee(e).forEach(function(e){var t={};for(r in i)t[r]=i[r];t.trigger=e,n.push(G.create(t))}),n},G.sort=function(e){return lt.sort(e||function(e,t){return-1e6*(e.vars.refreshPriority||0)+e.start-(t.start+-1e6*(t.vars.refreshPriority||0))})},M()&&Se.registerPlugin(G),e.ScrollTrigger=G,e.default=G;if (typeof(window)==="undefined"||window!==e){Object.defineProperty(e,"__esMo
23745dule",{value:!0})} else {delete e.default}}); 23746 23747 23748/*SIGUIENTE LIBRERIA*/ 23749(function (global, factory) { 23750 typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) : 23751 typeof define === 'function' && define.amd ? define(['exports'], factory) : 23752 (global = global || self, factory(global.window = global.window || {})); 23753}(this, (function (exports) { 'use strict'; 23754 23755 var _trimExp = /(^\s+|\s+$)/g; 23756 var emojiExp = /([\uD800-\uDBFF][\uDC00-\uDFFF](?:[\u200D\uFE0F][\uD800-\uDBFF][\uDC00-\uDFFF]){2,}|\uD83D\uDC69(?:\u200D(?:(?:\uD83D\uDC69\u200D)?\uD83D\uDC67|(?:\uD83D\uDC69\u200D)?\uD83D\uDC66)|\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC69\u200D(?:\uD83D\uDC69\u200D)?\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC69\u200D(?:\uD83D\uDC69\u200D)?\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|\uD83C\uDFF3\uFE0F\u200D\uD83C\uDF08|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD37-\uDD39\uDD3D\uDD3E\uDDD6-\uDDDD])(?:\uD83C[\uDFFB-\uDFFF])\u200D[\u2640\u2642]\uFE0F|\uD83D\uDC69(?:\uD83C[\uDFFB-\uDFFF])\u200D(?:\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92])|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC6F\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD37-\uDD39\uDD3C-\uDD3E\uDDD6-\uDDDF])\u200D[\u2640\u2642]\uFE0F|\uD83C\uDDFD\uD83C\uDDF0|\uD83C\uDDF6\uD83C\uDDE6|\uD83C\uDDF4\uD83C\uDDF2|\uD83C\uDDE9(?:\uD83C[\uDDEA\uDDEC\uDDEF\uDDF0\uDDF2\uDDF4\uDDFF])|\uD83C\uDDF7(?:\uD83C[\uDDEA\uDDF4\uDDF8\uDDFA\uDDFC])|\uD83C\uDDE8(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDEE\uDDF0-\uDDF5\uDDF7\uDDFA-\uDDFF])|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uFE0F\u200D[\u2640\u2642]|(?:\uD83C[\uDFFB-\uDFFF])\u200D[\u2640\u2642])\uFE0F|(?:\uD83D\uDC41\uFE0F\u200D\uD83D\uDDE8|\uD83D\uDC69(?:\uD83C[\uDFFB-\uDFFF])\u200D[\u2695\u2696\u2708]|\uD83D\uDC69\u200D[\u2695\u2696\u2708]|\uD83D\uDC68(?:(?:\uD83C[\uDFFB-\uDFFF])\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708]))\uFE0F|\uD83C\uDDF2(?:\uD83C[\uDDE6\uDDE8-\uDDED\uDDF0-\uDDFF])|\uD83D\uDC69\u200D(?:\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69]))|\uD83C\uDDF1(?:\uD83C[\uDDE6-\uDDE8\uDDEE\uDDF0\uDDF7-\uDDFB\uDDFE])|\uD83C\uDDEF(?:\uD83C[\uDDEA\uDDF2\uDDF4\uDDF5])|\uD83C\uDDED(?:\uD83C[\uDDF0\uDDF2\uDDF3\uDDF7\uDDF9\uDDFA])|\uD83C\uDDEB(?:\uD83C[\uDDEE-\uDDF0\uDDF2\uDDF4\uDDF7])|[#\*0-9]\uFE0F\u20E3|\uD83C\uDDE7(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEF\uDDF1-\uDDF4\uDDF6-\uDDF9\uDDFB\uDDFC\uDDFE\uDDFF])|\uD83C\uDDE6(?:\uD83C[\uDDE8-\uDDEC\uDDEE\uDDF1\uDDF2\uDDF4\uDDF6-\uDDFA\uDDFC\uDDFD\uDDFF])|\uD83C\uDDFF(?:\uD83C[\uDDE6\uDDF2\uDDFC])|\uD83C\uDDF5(?:\uD83C[\uDDE6\uDDEA-\uDDED\uDDF0-\uDDF3\uDDF7-\uDDF9\uDDFC\uDDFE])|\uD83C\uDDFB(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDEE\uDDF3\uDDFA])|\uD83C\uDDF3(?:\uD83C[\uDDE6\uDDE8\uDDEA-\uDDEC\uDDEE\uDDF1\uDDF4\uDDF5\uDDF7\uDDFA\uDDFF])|\uD83C\uDFF4\uDB40\uDC67\uDB40\uDC62(?:\uDB40\uDC77\uDB40\uDC6C\uDB40\uDC73|\uDB40\uDC73\uDB40\uDC63\uDB40\uDC74|\uDB40\uDC65\uDB40\uDC6E\uDB40\uDC67)\uDB40\uDC7F|\uD83D\uDC68(?:\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83D\uDC68|(?:(?:\uD83D[\uDC68\uDC69])\u200D)?\uD83D\uDC66\u200D\uD83D\uDC66|(?:(?:\uD83D[\uDC68\uDC69])\u200D)?\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92])|(?:\uD83C[\uDFFB-\uDFFF])\u200D(?:\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]))|\uD83C\uDDF8(?:\uD83C[\uDDE6-\uDDEA\uDDEC-\uDDF4\uDDF7-\uDDF9\uDDFB\uDDFD-\uDDFF])|\uD83C\uDDF0(?:\uD83C[\uDDEA\uDDEC-\uDDEE\uDDF2\uDDF3\uDDF5\uDDF7\uDDFC\uDDFE\uDDFF])|\uD83C\uDDFE(?:\uD83C[\uDDEA\uDDF9])|\uD83C\uDDEE(?:\uD83C[\uDDE8-\uDDEA\uDDF1-\uDDF4\uDDF6-\uDDF9])|\uD83C\uDDF9(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDED\uDDEF-\uDDF4\uDDF7\uDDF9\uDDFB\uDDFC\uDDFF])|\uD83C\uDDEC(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEE\uDDF1-\uDDF3\uDDF5-\uDDFA\uDDFC\uDDFE])|\uD83C\uDDFA(?:\uD83C[\uDDE6\uDDEC\uDDF2\uDDF3\uDDF8\uDDFE\uDDFF])|\uD83C\uDDEA(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDED\uDDF7-\uDDFA])|\uD83C\uDDFC(?:\uD83C[\uDDEB\uDDF8])|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uD83C[\uDFFB-\uDFFF])|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD37-\uDD39\uDD3D\uDD3E\uDDD6-\uDDDD])(?:\uD83C[\uDFFB-\uDFFF])|(?:[\u261D\u270A-\u270D]|\uD83C[\uDF85\uDFC2\uDFC7]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC70\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDCAA\uDD74\uDD7A\uDD90\uDD95\uDD96\uDE4C\uDE4F\uDEC0\uDECC]|\uD83E[\uDD18-\uDD1C\uDD1E\uDD1F\uDD30-\uDD36\uDDD1-\uDDD5])(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC68(?:\u200D(?:(?:(?:\uD83D[\uDC68\uDC69])\u200D)?\uD83D\uDC67|(?:(?:\uD83D[\uDC68\uDC69])\u200D)?\uD83D\uDC66)|\uD83C[\uDFFB-\uDFFF])|(?:[\u261D\u26F9\u270A-\u270D]|\uD83C[\uDF85\uDFC2-\uD
23756FC4\uDFC7\uDFCA-\uDFCC]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66-\uDC69\uDC6E\uDC70-\uDC78\uDC7C\uDC81-\uDC83\uDC85-\uDC87\uDCAA\uDD74\uDD75\uDD7A\uDD90\uDD95\uDD96\uDE45-\uDE47\uDE4B-\uDE4F\uDEA3\uDEB4-\uDEB6\uDEC0\uDECC]|\uD83E[\uDD18-\uDD1C\uDD1E\uDD1F\uDD26\uDD30-\uDD39\uDD3D\uDD3E\uDDD1-\uDDDD])(?:\uD83C[\uDFFB-\uDFFF])?|(?:[\u231A\u231B\u23E9-\u23EC\u23F0\u23F3\u25FD\u25FE\u2614\u2615\u2648-\u2653\u267F\u2693\u26A1\u26AA\u26AB\u26BD\u26BE\u26C4\u26C5\u26CE\u26D4\u26EA\u26F2\u26F3\u26F5\u26FA\u26FD\u2705\u270A\u270B\u2728\u274C\u274E\u2753-\u2755\u2757\u2795-\u2797\u27B0\u27BF\u2B1B\u2B1C\u2B50\u2B55]|\uD83C[\uDC04\uDCCF\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF7C\uDF7E-\uDF93\uDFA0-\uDFCA\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF4\uDFF8-\uDFFF]|\uD83D[\uDC00-\uDC3E\uDC40\uDC42-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDD7A\uDD95\uDD96\uDDA4\uDDFB-\uDE4F\uDE80-\uDEC5\uDECC\uDED0-\uDED2\uDEEB\uDEEC\uDEF4-\uDEF8]|\uD83E[\uDD10-\uDD3A\uDD3C-\uDD3E\uDD40-\uDD45\uDD47-\uDD4C\uDD50-\uDD6B\uDD80-\uDD97\uDDC0\uDDD0-\uDDE6])|(?:[#\*0-9\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u231A\u231B\u2328\u23CF\u23E9-\u23F3\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB-\u25FE\u2600-\u2604\u260E\u2611\u2614\u2615\u2618\u261D\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u2648-\u2653\u2660\u2663\u2665\u2666\u2668\u267B\u267F\u2692-\u2697\u2699\u269B\u269C\u26A0\u26A1\u26AA\u26AB\u26B0\u26B1\u26BD\u26BE\u26C4\u26C5\u26C8\u26CE\u26CF\u26D1\u26D3\u26D4\u26E9\u26EA\u26F0-\u26F5\u26F7-\u26FA\u26FD\u2702\u2705\u2708-\u270D\u270F\u2712\u2714\u2716\u271D\u2721\u2728\u2733\u2734\u2744\u2747\u274C\u274E\u2753-\u2755\u2757\u2763\u2764\u2795-\u2797\u27A1\u27B0\u27BF\u2934\u2935\u2B05-\u2B07\u2B1B\u2B1C\u2B50\u2B55\u3030\u303D\u3297\u3299]|\uD83C[\uDC04\uDCCF\uDD70\uDD71\uDD7E\uDD7F\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE02\uDE1A\uDE2F\uDE32-\uDE3A\uDE50\uDE51\uDF00-\uDF21\uDF24-\uDF93\uDF96\uDF97\uDF99-\uDF9B\uDF9E-\uDFF0\uDFF3-\uDFF5\uDFF7-\uDFFF]|\uD83D[\uDC00-\uDCFD\uDCFF-\uDD3D\uDD49-\uDD4E\uDD50-\uDD67\uDD6F\uDD70\uDD73-\uDD7A\uDD87\uDD8A-\uDD8D\uDD90\uDD95\uDD96\uDDA4\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA-\uDE4F\uDE80-\uDEC5\uDECB-\uDED2\uDEE0-\uDEE5\uDEE9\uDEEB\uDEEC\uDEF0\uDEF3-\uDEF8]|\uD83E[\uDD10-\uDD3A\uDD3C-\uDD3E\uDD40-\uDD45\uDD47-\uDD4C\uDD50-\uDD6B\uDD80-\uDD97\uDDC0\uDDD0-\uDDE6])\uFE0F)/; 23757 function getText(e) { 23758 var type = e.nodeType, 23759 result = ""; 23760 23761 if (type === 1 || type === 9 || type === 11) { 23762 if (typeof e.textContent === "string") { 23763 return e.textContent; 23764 } else { 23765 for (e = e.firstChild; e; e = e.nextSibling) { 23766 result += getText(e); 23767 } 23768 } 23769 } else if (type === 3 || type === 4) { 23770 return e.nodeValue; 23771 } 23772 23773 return result; 23774 } 23775 function splitInnerHTML(element, delimiter, trim) { 23776 var node = element.firstChild, 23777 result = []; 23778 23779 while (node) { 23780 if (node.nodeType === 3) { 23781 result.push.apply(result, emojiSafeSplit((node.nodeValue + "").replace(/^\n+/g, "").replace(/\s+/g, " "), delimiter, trim)); 23782 } else if ((node.nodeName + "").toLowerCase() === "br") { 23783 result[result.length - 1] += "<br>"; 23784 } else { 23785 result.push(node.outerHTML); 23786 } 23787 23788 node = node.nextSibling; 23789 } 23790 23791 return result; 23792 } 23793 function emojiSafeSplit(text, delimiter, trim) { 23794 text += ""; 23795 23796 if (trim) { 23797 text = text.replace(_trimExp, ""); 23798 } 23799 23800 if (delimiter && delimiter !== "") { 23801 return text.replace(/>/g, ">").replace(/</g, "<").split(delimiter); 23802 } 23803 23804 var result = [], 23805 l = text.length, 23806 i = 0, 23807 j, 23808 character; 23809 23810 for (; i < l; i++) { 23811 character = text.charAt(i); 23812 23813 if (character.charCodeAt(0) >= 0xD800 && character.charCodeAt(0) <= 0xDBFF || text.charCodeAt(i + 1) >= 0xFE00 && text.charCodeAt(i + 1) <= 0xFE0F) { 23814 j = ((text.substr(i, 12).split(emojiExp) || [])[1] || "").length || 2; 23815 character = text.substr(i, j); 23816 result.emoji = 1; 23817 i += j - 1; 23818 } 23819 23820 result.push(character === ">" ? ">" : character === "<" ? "<" : character); 23821 } 23822 23823 return result; 23824 } 23825 23826 /*! 23827 * TextPlugin 3.7.0 23828 * https://greensock.com 23829 * 23830 * @license Copyright 2008-2021, GreenSock. All rights reserved. 23831 * Subject to the terms at https://greensock.com/standard-license or for 23832 * Club GreenSock members, the agreement issued with that membership. 23833 * @author: Jack Doyle, [email protected] 23834 */ 23835 23836 var gsap, 23837 _tempDiv, 23838 _getGSAP = function _getGSAP() { 23839 return gsap || typeof window !== "undefined" && (gsap = window.gsap) && gsap.registerPlugin && gsap; 23840 }; 23841 23842 var TextPlugin = { 23843 version: "3.7.0", 23844 name: "text", 23845 init: function init(target, value, tween) { 23846 var i = target.nodeName.toUpperCase(), 23847 data = this, 23848 _short, 23849 text, 23850 original, 23851 j, 23852 condensedText, 23853 condensedOriginal, 23854 aggregate, 23855 s; 23856 23857 data.svg = target.getBBox && (i === "TEXT" || i === "TSPAN"); 23858 23859 if (!("innerHTML" in target) && !data.svg) { 23860 return false;
23861 } 23862 23863 data.target = target; 23864 23865 if (typeof value !== "object") { 23866 value = { 23867 value: value 23868 }; 23869 } 23870 23871 if (!("value" in value)) { 23872 data.text = data.original = [""]; 23873 return; 23874 } 23875 23876 data.delimiter = value.delimiter || ""; 23877 original = splitInnerHTML(target, data.delimiter); 23878 23879 if (!_tempDiv) { 23880 _tempDiv = document.createElement("div"); 23881 } 23882 23883 _tempDiv.innerHTML = value.value; 23884 text = splitInnerHTML(_tempDiv, data.delimiter); 23885 data.from = tween._from; 23886 23887 if (data.from) { 23888 i = original; 23889 original = text; 23890 text = i; 23891 } 23892 23893 data.hasClass = !!(value.newClass || value.oldClass); 23894 data.newClass = value.newClass; 23895 data.oldClass = value.oldClass; 23896 i = original.length - text.length; 23897 _short = i < 0 ? original : text; 23898 data.fillChar = value.fillChar || (value.padSpace ? " " : ""); 23899 23900 if (i < 0) { 23901 i = -i; 23902 } 23903 23904 while (--i > -1) { 23905 _short.push(data.fillChar); 23906 } 23907 23908 if (value.type === "diff") { 23909 j = 0; 23910 condensedText = []; 23911 condensedOriginal = []; 23912 aggregate = ""; 23913 23914 for (i = 0; i < text.length; i++) { 23915 s = text[i]; 23916 23917 if (s === original[i]) { 23918 aggregate += s; 23919 } else { 23920 condensedText[j] = aggregate + s; 23921 condensedOriginal[j++] = aggregate + original[i]; 23922 aggregate = ""; 23923 } 23924 } 23925 23926 text = condensedText; 23927 original = condensedOriginal; 23928 23929 if (aggregate) { 23930 text.push(aggregate); 23931 original.push(aggregate); 23932 } 23933 } 23934 23935 if (value.speed) { 23936 tween.duration(Math.min(0.05 / value.speed * _short.length, value.maxDuration || 9999)); 23937 } 23938 23939 this.original = original; 23940 this.text = text; 23941 23942 this._props.push("text"); 23943 }, 23944 render: function render(ratio, data) { 23945 if (ratio > 1) { 23946 ratio = 1; 23947 } else if (ratio < 0) { 23948 ratio = 0; 23949 } 23950 23951 if (data.from) { 23952 ratio = 1 - ratio; 23953 } 23954 23955 var text = data.text, 23956 hasClass = data.hasClass, 23957 newClass = data.newClass, 23958 oldClass = data.oldClass, 23959 delimiter = data.delimiter, 23960 target = data.target, 23961 fillChar = data.fillChar, 23962 original = data.original, 23963 l = text.length, 23964 i = ratio * l + 0.5 | 0, 23965 applyNew, 23966 applyOld, 23967 str; 23968 23969 if (hasClass) { 23970 applyNew = newClass && i; 23971 applyOld = oldClass && i !== l; 23972 str = (applyNew ? "<span class='" + newClass + "'>" : "") + text.slice(0, i).join(delimiter) + (applyNew ? "</span>" : "") + (applyOld ? "<span class='" + oldClass + "'>" : "") + delimiter + original.slice(i).join(delimiter) + (applyOld ? "</span>" : ""); 23973 } else { 23974 str = text.slice(0, i).join(delimiter) + delimiter + original.slice(i).join(delimiter); 23975 } 23976 23977 if (data.svg) { 23978 target.textContent = str; 23979 } else { 23980 target.innerHTML = fillChar === " " && ~str.indexOf(" ") ? str.split(" ").join(" ") : str; 23981 } 23982 } 23983 }; 23984 TextPlugin.splitInnerHTML = splitInnerHTML; 23985 TextPlugin.emojiSafeSplit = emojiSafeSplit; 23986 TextPlugin.getText = getText; 23987 _getGSAP() && gsap.registerPlugin(TextPlugin); 23988 23989 exports.TextPlugin = TextPlugin; 23990 exports.default = TextPlugin; 23991 23992 Object.defineProperty(exports, '__esModule', { value: true }); 23993 23994}))); 23995 23996/*SIGUIENTE LIBRERIA*/ 23997/*! 23998 * TextPlugin 3.7.0 23999 * https://greensock.com 24000 * 24001 * @license Copyright 2021, GreenSock. All rights reserved. 24002 * Subject to the terms at https://greensock.com/standard-license or for Club GreenSock members, the agreement issued with that membership. 24003 * @author: Jack Doyle, [email protected] 24004 */ 24005 24006!function(D,u){"object"==typeof exports&&"undefined"!=typeof module?u(exports):"function"==typeof define&&define.amd?define(["exports"],u):u((D=D||self).window=D.window||{})}(this,function(D){"use strict";var B=/(^\s+|\s+$)/g,i=/([\uD800-\uDBFF][\uDC00-\uDFFF](?:[\u200D\uFE0F][\uD800-\uDBFF][\uDC00-\uDFFF]){2,}|\uD83D\uDC69(?:\u200D(?:(?:\uD83D\uDC69\u200D)?\uD83D\uDC67|(?:\uD83D\uDC69\u200D)?\uD83D\uDC66)|\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC69\u200D(?:\uD83D\uDC69\u200D)?\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC69\u200D(?:\uD83D\uDC69\u200D)?\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|\uD83C\uDFF3\uFE0F\u200D\uD83C\uDF08|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD37-\uDD39\uDD3D\uDD3E\uDDD6-\uDDDD])(?:\uD83C[\uDFFB-\uDFFF])\u200D[\u2640\u2642]\uFE0F|\uD83D\uDC69(?:\uD83C[\uDFFB-\uDFFF])\u200D(?:\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92])|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC6F\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD37-\uDD39\uDD3C-\uDD3E\uDDD6-\uDDDF])\u200D[\u2640\u2642]\uFE0F|\uD83C\uDDFD\uD83C\uDDF0|\uD83C\uDDF6\uD83C\uDDE6|\uD83C\uDDF4\uD83C\uDDF2|\uD83C\uDDE9(?:\uD83C[\uDDEA\uDDEC\uDDEF\uDDF0\uDDF2\uDDF4\uDDFF])|\uD83C\uDDF7(?:\uD83C[\uDDEA\uDDF4\uDDF8\uDDFA\uDDFC])|\uD83C\uDDE8(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDEE\uDDF0-\uDDF5\uDDF7\uDDFA-\uDDFF])|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uFE0F\u200D[\u2640\u2642]|(?:\uD83C[\uDFFB-\uDFFF])\u200D[\u2640\u2642])\uFE0F|(?:\uD83D\uDC41\uFE0F\u200D\uD83D\uDDE8|\uD83D\uDC69(?:\uD83C[\uDFFB-\uDFFF])\u200D[\u2695\u2696\u2708]|\uD83D\uDC69\u200D[\u2695\u2696\u2708]|\uD83D\uDC68(?:(?:\uD83C[\uDFFB-\uDFFF])\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708]))\uFE0F|\uD83C\uDDF2(?:\uD83C[\uDDE6\uDDE8-\uDDED\uDDF0-\uDDFF])|\uD83D\uDC69\u200D(?:\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69]))|\uD83C\uDDF1(?:\uD83C[\uDDE6-\uDDE8\uDDEE\uDDF0\uDDF7-\uDDFB\uDDFE])|\uD83C\uDDEF(?:\uD83C[\uDDEA\uDDF2\uDDF4\uDDF5])|\uD83C\uDDED(?:\uD83C[\uDDF0\uDDF2\uDDF3\uDDF7\uDDF9\uDDFA])|\uD83C\uDDEB(?:\uD83C[\uDDEE-\uDDF0\uDDF2\uDDF4\uDDF7])|[#\*0-9]\uFE0F\u20E3|\uD83C\uDDE7(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEF\uDDF1-\uDDF4\uDDF6-\uDDF9\uDDFB\uDDFC\uDDFE\uDDFF])|\uD83C\uDDE6(?:\uD83C[\uDDE8-\uDDEC\uDDEE\uDDF1\uDDF2\uDDF4\uDDF6-\uDDFA\uDDFC\uDDFD\uDDFF])|\uD83C\uDDFF(?:\uD83C[\uDDE6\uDDF2\uDDFC])|\uD83C\uDDF5(?:\uD83C[\uDDE6\uDDEA-\uDDED\uDDF0-\uDDF3\uDDF7-\uDDF9\uDDFC\uDDFE])|\uD83C\uDDFB(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDEE\uDDF3\uDDFA])|\uD83C\uDDF3(?:\uD83C[\uDDE6\uDDE8\uDDEA-\uDDEC\uDDEE\uDDF1\uDDF4\uDDF5\uDDF7\uDDFA\uDDFF])|\uD83C\uDFF4\uDB40\uDC67\uDB40\uDC62(?:\uDB40\uDC77\uDB40\uDC6C\uDB40\uDC73|\uDB40\uDC73\uDB40\uDC63\uDB40\uDC74|\uDB40\uDC65\uDB40\uDC6E\uDB40\uDC67)\uDB40\uDC7F|\uD83D\uDC68(?:\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83D\uDC68|(?:(?:\uD83D[\uDC68\uDC69])\u200D)?\uD83D\uDC66\u200D\uD83D\uDC66|(?:(?:\uD83D[\uDC68\uDC69])\u200D)?\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92])|(?:\uD83C[\uDFFB-\uDFFF])\u200D(?:\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]))|\uD83C\uDDF8(?:\uD83C[\uDDE6-\uDDEA\uDDEC-\uDDF4\uDDF7-\uDDF9\uDDFB\uDDFD-\uDDFF])|\uD83C\uDDF0(?:\uD83C[\uDDEA\uDDEC-\uDDEE\uDDF2\uDDF3\uDDF5\uDDF7\uDDFC\uDDFE\uDDFF])|\uD83C\uDDFE(?:\uD83C[\uDDEA\uDDF9])|\uD83C\uDDEE(?:\uD83C[\uDDE8-\uDDEA\uDDF1-\uDDF4\uDDF6-\uDDF9])|\uD83C\uDDF9(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDED\uDDEF-\uDDF4\uDDF7\uDDF9\uDDFB\uDDFC\uDDFF])|\uD83C\uDDEC(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEE\uDDF1-\uDDF3\uDDF5-\uDDFA\uDDFC\uDDFE])|\uD83C\uDDFA(?:\uD83C[\uDDE6\uDDEC\uDDF2\uDDF3\uDDF8\uDDFE\uDDFF])|\uD83C\uDDEA(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDED\uDDF7-\uDDFA])|\uD83C\uDDFC(?:\uD83C[\uDDEB\uDDF8])|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uD83C[\uDFFB-\uDFFF])|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD37-\uDD39\uDD3D\uDD3E\uDDD6-\uDDDD])(?:\uD83C[\uDFFB-\uDFFF])|(?:[\u261D\u270A-\u270D]|\uD83C[\uDF85\uDFC2\uDFC7]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC70\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDCAA\uDD74\uDD7A\uDD90\uDD95\uDD96\uDE4C\uDE4F\uDEC0\uDECC]|\uD83E[\uDD18-\uDD1C\uDD1E\uDD1F\uDD30-\uDD36\uDDD1-\uDDD5])(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC68(?:\u200D(?:(?:(?:\uD83D[\uDC68\uDC69])\u200D)?\uD83D\uDC67|(?:(?:\uD83D[\uDC68\uDC69])\u200D)?\uD83D\uDC66)|\uD83C[\uDFFB-\uDFFF])|(?:[\u261D\u26F9\u270A-\u270D]|\uD83C[\uDF85\uDFC2-\uD
24006FC4\uDFC7\uDFCA-\uDFCC]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66-\uDC69\uDC6E\uDC70-\uDC78\uDC7C\uDC81-\uDC83\uDC85-\uDC87\uDCAA\uDD74\uDD75\uDD7A\uDD90\uDD95\uDD96\uDE45-\uDE47\uDE4B-\uDE4F\uDEA3\uDEB4-\uDEB6\uDEC0\uDECC]|\uD83E[\uDD18-\uDD1C\uDD1E\uDD1F\uDD26\uDD30-\uDD39\uDD3D\uDD3E\uDDD1-\uDDDD])(?:\uD83C[\uDFFB-\uDFFF])?|(?:[\u231A\u231B\u23E9-\u23EC\u23F0\u23F3\u25FD\u25FE\u2614\u2615\u2648-\u2653\u267F\u2693\u26A1\u26AA\u26AB\u26BD\u26BE\u26C4\u26C5\u26CE\u26D4\u26EA\u26F2\u26F3\u26F5\u26FA\u26FD\u2705\u270A\u270B\u2728\u274C\u274E\u2753-\u2755\u2757\u2795-\u2797\u27B0\u27BF\u2B1B\u2B1C\u2B50\u2B55]|\uD83C[\uDC04\uDCCF\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF7C\uDF7E-\uDF93\uDFA0-\uDFCA\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF4\uDFF8-\uDFFF]|\uD83D[\uDC00-\uDC3E\uDC40\uDC42-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDD7A\uDD95\uDD96\uDDA4\uDDFB-\uDE4F\uDE80-\uDEC5\uDECC\uDED0-\uDED2\uDEEB\uDEEC\uDEF4-\uDEF8]|\uD83E[\uDD10-\uDD3A\uDD3C-\uDD3E\uDD40-\uDD45\uDD47-\uDD4C\uDD50-\uDD6B\uDD80-\uDD97\uDDC0\uDDD0-\uDDE6])|(?:[#\*0-9\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u231A\u231B\u2328\u23CF\u23E9-\u23F3\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB-\u25FE\u2600-\u2604\u260E\u2611\u2614\u2615\u2618\u261D\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u2648-\u2653\u2660\u2663\u2665\u2666\u2668\u267B\u267F\u2692-\u2697\u2699\u269B\u269C\u26A0\u26A1\u26AA\u26AB\u26B0\u26B1\u26BD\u26BE\u26C4\u26C5\u26C8\u26CE\u26CF\u26D1\u26D3\u26D4\u26E9\u26EA\u26F0-\u26F5\u26F7-\u26FA\u26FD\u2702\u2705\u2708-\u270D\u270F\u2712\u2714\u2716\u271D\u2721\u2728\u2733\u2734\u2744\u2747\u274C\u274E\u2753-\u2755\u2757\u2763\u2764\u2795-\u2797\u27A1\u27B0\u27BF\u2934\u2935\u2B05-\u2B07\u2B1B\u2B1C\u2B50\u2B55\u3030\u303D\u3297\u3299]|\uD83C[\uDC04\uDCCF\uDD70\uDD71\uDD7E\uDD7F\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE02\uDE1A\uDE2F\uDE32-\uDE3A\uDE50\uDE51\uDF00-\uDF21\uDF24-\uDF93\uDF96\uDF97\uDF99-\uDF9B\uDF9E-\uDFF0\uDFF3-\uDFF5\uDFF7-\uDFFF]|\uD83D[\uDC00-\uDCFD\uDCFF-\uDD3D\uDD49-\uDD4E\uDD50-\uDD67\uDD6F\uDD70\uDD73-\uDD7A\uDD87\uDD8A-\uDD8D\uDD90\uDD95\uDD96\uDDA4\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA-\uDE4F\uDE80-\uDEC5\uDECB-\uDED2\uDEE0-\uDEE5\uDEE9\uDEEB\uDEEC\uDEF0\uDEF3-\uDEF8]|\uD83E[\uDD10-\uDD3A\uDD3C-\uDD3E\uDD40-\uDD45\uDD47-\uDD4C\uDD50-\uDD6B\uDD80-\uDD97\uDDC0\uDDD0-\uDDE6])\uFE0F)/;function splitInnerHTML(D,u,F){for(var C=D.firstChild,E=[];C;)3===C.nodeType?E.push.apply(E,emojiSafeSplit((C.nodeValue+"").replace(/^\n+/g,"").replace(/\s+/g," "),u,F)):"br"===(C.nodeName+"").toLowerCase()?E[E.length-1]+="<br>":E.push(C.outerHTML),C=C.nextSibling;return E}function emojiSafeSplit(D,u,F){if(D+="",F&&(D=D.replace(B,"")),u&&""!==u)return D.replace(/>/g,">").replace(/</g,"<").split(u);for(var C,E,e=[],t=D.length,n=0;n<t;n++)(55296<=(E=D.charAt(n)).charCodeAt(0)&&E.charCodeAt(0)<=56319||65024<=D.charCodeAt(n+1)&&D.charCodeAt(n+1)<=65039)&&(C=((D.substr(n,12).split(i)||[])[1]||"").length||2,E=D.substr(n,C),n+=C-(e.emoji=1)),e.push(">"===E?">":"<"===E?"<":E);return e}var u,l,F={version:"3.7.0",name:"text",init:function init(D,u,F){var C,E,e,t,n,B,i,A,r=D.nodeName.toUpperCase(),s=this;if(s.svg=D.getBBox&&("TEXT"===r||"TSPAN"===r),!("innerHTML"in D||s.svg))return!1;if(s.target=D,"object"!=typeof u&&(u={value:u}),"value"in u){for(s.delimiter=u.delimiter||"",e=splitInnerHTML(D,s.delimiter),(l=l||document.createElement("div")).innerHTML=u.value,E=splitInnerHTML(l,s.delimiter),s.from=F._from,s.from&&(r=e,e=E,E=r),s.hasClass=!(!u.newClass&&!u.oldClass),s.newClass=u.newClass,s.oldClass=u.oldClass,C=(r=e.length-E.length)<0?e:E,s.fillChar=u.fillChar||(u.padSpace?" ":""),r<0&&(r=-r);-1<--r;)C.push(s.fillChar);if("diff"===u.type){for(n=[],B=[],i="",r=t=0;r<E.length;r++)(A=E[r])===e[r]?i+=A:(n[t]=i+A,B[t++]=i+e[r],i="");E=n,e=B,i&&(E.push(i),e.push(i))}u.speed&&F.duration(Math.min(.05/u.speed*C.length,u.maxDuration||9999)),this.original=e,this.text=E,this._props.push("text")}else s.text=s.original=[""]},render:function render(D,u){1<D?D=1:D<0&&(D=0),u.from&&(D=1-D);var F,C,E,e=u.text,t=u.hasClass,n=u.newClass,B=u.oldClass,i=u.delimiter,A=u.target,r=u.fillChar,s=u.original,l=e.length,o=D*l+.5|0;E=t?(C=B&&o!==l,((F=n&&o)?"<span class='"+n+"'>":"")+e.slice(0,o).join(i)+(F?"</span>":"")+(C?"<span class='"+B+"'>":"")+i+s.slice(o).join(i)+(C?"</span>":"")):e.slice(0,o).join(i)+i+s.slice(o).join(i),u.svg?A.textContent=E:A.innerHTML=" "===r&&~E.indexOf(" ")?E.split(" ").join(" "):E}};F.splitInnerHTML=splitInnerHTML,F.emojiSafeSplit=emojiSafeSplit,F.getText=function getText(D){var u=D.nodeType,F="";if(1===u||9===u||11===u){if("string"==typeof D.textContent)return D.textContent;for(D=D.firstChild;D;D=D.nextSibling)F+=getText(D)}else if(3===u||4===u)return D.nodeValue;return F},function _getGSAP(){return u||"undefined"!=typeof window&&(u=window.gsap)&&u.registerPlugin&&u}()&&u.registerPlugin(F),D.TextPlugin=F,D.default=F;if (typeof(window)==="undefined"||window!==D){Object.defineProperty(D,"__esModule",{value:!0})} else {delete D.default}}); 24007
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.